From 3fb25179b69c5f82ab4864fd25ddd9a64e34fc3b Mon Sep 17 00:00:00 2001 From: Arpit Temani Date: Wed, 12 Jan 2022 13:00:32 +0530 Subject: [PATCH 01/41] merge geth v1.10.15 --- .travis.yml | 30 - Makefile | 6 +- README.md | 10 +- SECURITY.md | 229 ++-- accounts/abi/bind/backends/simulated.go | 6 + accounts/abi/bind/backends/simulated_test.go | 6 +- accounts/abi/bind/base.go | 2 +- accounts/abi/bind/bind.go | 7 + accounts/abi/bind/bind_test.go | 84 +- accounts/abi/unpack.go | 2 +- accounts/accounts.go | 4 +- build/checksums.txt | 28 +- build/ci.go | 47 +- cmd/clef/main.go | 4 +- cmd/devp2p/dns_cloudflare.go | 3 +- cmd/devp2p/dnscmd.go | 5 +- cmd/devp2p/internal/ethtest/helpers.go | 2 +- cmd/devp2p/internal/ethtest/suite.go | 88 +- cmd/devp2p/internal/v4test/discv4tests.go | 21 +- cmd/devp2p/nodesetcmd.go | 2 + cmd/evm/internal/t8ntool/block.go | 380 ++++++ cmd/evm/internal/t8ntool/execution.go | 6 +- cmd/evm/internal/t8ntool/flags.go | 53 +- cmd/evm/internal/t8ntool/gen_header.go | 135 ++ cmd/evm/internal/t8ntool/transaction.go | 52 +- cmd/evm/internal/t8ntool/transition.go | 112 +- cmd/evm/internal/t8ntool/utils.go | 54 + cmd/evm/main.go | 22 + cmd/evm/runner.go | 17 +- cmd/evm/staterunner.go | 15 +- cmd/evm/t8n_test.go | 181 ++- cmd/evm/testdata/1/exp.json | 7 +- cmd/evm/testdata/13/exp2.json | 5 +- cmd/evm/testdata/14/exp.json | 7 +- cmd/evm/testdata/14/exp2.json | 7 +- cmd/evm/testdata/14/exp_berlin.json | 12 + cmd/evm/testdata/15/exp2.json | 6 +- cmd/evm/testdata/16/exp.json | 6 +- cmd/evm/testdata/17/exp.json | 22 + cmd/evm/testdata/17/rlpdata.txt | 46 + cmd/evm/testdata/17/signed_txs.rlp | 1 + cmd/evm/testdata/18/README.md | 9 + cmd/evm/testdata/18/invalid.rlp | 1 + cmd/evm/testdata/19/alloc.json | 12 + cmd/evm/testdata/19/env.json | 9 + cmd/evm/testdata/19/exp_arrowglacier.json | 12 + cmd/evm/testdata/19/exp_london.json | 12 + cmd/evm/testdata/19/readme.md | 9 + cmd/evm/testdata/19/txs.json | 1 + cmd/evm/testdata/20/exp.json | 4 + cmd/evm/testdata/20/header.json | 14 + cmd/evm/testdata/20/ommers.json | 1 + cmd/evm/testdata/20/readme.md | 11 + cmd/evm/testdata/20/txs.rlp | 1 + cmd/evm/testdata/21/clique.json | 6 + cmd/evm/testdata/21/exp-clique.json | 4 + cmd/evm/testdata/21/exp.json | 4 + cmd/evm/testdata/21/header.json | 11 + cmd/evm/testdata/21/ommers.json | 1 + cmd/evm/testdata/21/readme.md | 23 + cmd/evm/testdata/21/txs.rlp | 1 + cmd/evm/testdata/22/exp-clique.json | 4 + cmd/evm/testdata/22/exp.json | 4 + cmd/evm/testdata/22/header.json | 11 + cmd/evm/testdata/22/ommers.json | 1 + cmd/evm/testdata/22/readme.md | 11 + cmd/evm/testdata/22/txs.rlp | 1 + cmd/evm/testdata/23/alloc.json | 16 + cmd/evm/testdata/23/env.json | 7 + cmd/evm/testdata/23/exp.json | 25 + cmd/evm/testdata/23/readme.md | 1 + cmd/evm/testdata/23/txs.json | 15 + cmd/evm/testdata/3/exp.json | 5 +- cmd/evm/testdata/5/exp.json | 5 +- cmd/geth/chaincmd.go | 10 +- cmd/geth/config.go | 18 +- cmd/geth/consolecmd.go | 51 +- cmd/geth/dbcmd.go | 196 ++- cmd/geth/main.go | 26 +- cmd/geth/snapshot.go | 5 + cmd/geth/usage.go | 2 + cmd/puppeth/wizard.go | 121 +- cmd/puppeth/wizard_intro.go | 29 +- cmd/rlpdump/main.go | 109 +- cmd/rlpdump/rlpdump_test.go | 65 + cmd/utils/cmd.go | 248 +++- cmd/utils/export_test.go | 198 +++ cmd/utils/flags.go | 57 +- common/hexutil/hexutil.go | 9 +- common/hexutil/hexutil_test.go | 12 + consensus/beacon/consensus.go | 376 ++++++ consensus/clique/api.go | 9 +- consensus/clique/clique.go | 11 +- consensus/consensus.go | 3 + consensus/ethash/consensus.go | 12 +- consensus/ethash/ethash.go | 7 +- consensus/ethash/mmap_help_linux.go | 35 + consensus/ethash/mmap_help_other.go | 36 + consensus/merger.go | 110 ++ console/console.go | 123 +- console/console_test.go | 2 +- core/asm/lexer.go | 4 +- core/bench_test.go | 53 +- core/block_validator_test.go | 173 +++ core/blockchain.go | 939 +++++-------- core/blockchain_insert.go | 8 + core/blockchain_reader.go | 407 ++++++ core/blockchain_repair_test.go | 347 +++-- core/blockchain_sethead_test.go | 240 ++-- core/blockchain_test.go | 436 +++++- core/chain_makers.go | 35 + core/error.go | 4 + core/forkchoice.go | 108 ++ core/forkid/forkid_test.go | 45 +- core/genesis.go | 32 +- core/genesis_alloc.go | 1 + core/genesis_test.go | 90 +- core/headerchain.go | 296 ++-- core/headerchain_test.go | 25 +- core/rawdb/accessors_chain.go | 292 ++-- core/rawdb/accessors_chain_test.go | 66 +- core/rawdb/accessors_metadata.go | 35 + core/rawdb/accessors_snapshot.go | 14 +- core/rawdb/chain_iterator.go | 37 +- core/rawdb/database.go | 26 +- core/rawdb/freezer.go | 21 +- core/rawdb/freezer_batch.go | 4 +- core/rawdb/freezer_test.go | 2 +- core/rawdb/schema.go | 13 +- core/rawdb/table.go | 10 +- core/rlp_test.go | 2 +- core/state/snapshot/difflayer_test.go | 2 +- core/state/snapshot/generate.go | 18 +- core/state/snapshot/wipe.go | 56 - core/state/snapshot/wipe_test.go | 103 +- core/state/sync.go | 4 +- core/state/sync_test.go | 13 +- core/state_processor_test.go | 39 +- core/state_transition.go | 3 + core/tx_list.go | 4 +- core/tx_list_test.go | 14 +- core/tx_noncer.go | 8 + core/tx_pool.go | 12 +- core/tx_pool_test.go | 21 + core/types/block.go | 24 + core/types/block_test.go | 61 + core/types/dynamic_fee_tx.go | 4 +- core/vm/analysis.go | 32 +- core/vm/analysis_test.go | 40 +- core/vm/contract.go | 9 +- core/vm/errors.go | 5 + core/vm/evm.go | 32 +- core/vm/gas_table.go | 6 +- core/vm/instructions.go | 57 +- core/vm/instructions_test.go | 16 +- core/vm/interpreter.go | 153 +-- core/vm/interpreter_test.go | 77 ++ core/vm/jump_table.go | 87 +- core/vm/logger.go | 328 +---- core/vm/memory_table.go | 2 +- core/vm/opcodes.go | 148 +- core/vm/runtime/runtime_test.go | 18 +- core/vm/stack.go | 4 - .../libsecp256k1/src/asm/field_10x26_arm.s | 2 +- eth/api.go | 2 +- eth/api_backend.go | 6 +- eth/backend.go | 66 +- eth/catalyst/api.go | 394 ++++-- eth/catalyst/api_test.go | 427 ++++-- eth/catalyst/api_types.go | 102 +- eth/catalyst/gen_blockparams.go | 45 +- eth/catalyst/gen_ed.go | 126 +- eth/catalyst/gen_payload.go | 36 + eth/downloader/downloader.go | 1202 ++++++----------- eth/downloader/downloader_test.go | 1126 ++++++--------- eth/downloader/fetchers.go | 115 ++ eth/downloader/fetchers_concurrent.go | 381 ++++++ eth/downloader/fetchers_concurrent_bodies.go | 105 ++ eth/downloader/fetchers_concurrent_headers.go | 97 ++ .../fetchers_concurrent_receipts.go | 104 ++ eth/downloader/metrics.go | 3 - eth/downloader/modes.go | 9 +- eth/downloader/peer.go | 269 +--- eth/downloader/queue.go | 223 ++- eth/downloader/queue_test.go | 72 +- eth/downloader/statesync.go | 518 +------ eth/downloader/testchain_test.go | 227 ++-- eth/downloader/types.go | 79 -- eth/ethconfig/config.go | 40 +- eth/ethconfig/gen_config.go | 180 +-- eth/fetcher/block_fetcher.go | 55 +- eth/fetcher/block_fetcher_test.go | 85 +- eth/fetcher/tx_fetcher.go | 37 +- eth/filters/api.go | 3 - eth/filters/bench_test.go | 2 + eth/filters/filter_test.go | 4 + eth/gasprice/gasprice.go | 17 +- eth/gasprice/gasprice_test.go | 9 +- eth/handler.go | 206 ++- eth/handler_eth.go | 116 +- eth/handler_eth_test.go | 42 +- eth/handler_test.go | 4 +- eth/peer.go | 7 +- eth/protocols/eth/dispatcher.go | 253 ++++ eth/protocols/eth/handler.go | 9 +- eth/protocols/eth/handler_test.go | 21 +- eth/protocols/eth/handlers.go | 195 ++- eth/protocols/eth/peer.go | 166 ++- eth/protocols/eth/protocol.go | 10 + eth/protocols/snap/handler.go | 558 ++++---- eth/protocols/snap/peer.go | 14 +- eth/protocols/snap/protocol.go | 6 +- eth/protocols/snap/sync.go | 46 +- eth/state_accessor.go | 25 +- eth/sync.go | 36 +- eth/sync_test.go | 65 +- eth/tracers/api.go | 96 +- eth/tracers/api_test.go | 339 ++--- eth/tracers/internal/tracers/4byte_tracer.js | 65 - .../internal/tracetest/calltrace_test.go | 394 ++++++ .../testdata/call_tracer/create.json | 0 .../testdata/call_tracer/deep_calls.json | 0 .../testdata/call_tracer/delegatecall.json | 0 .../inner_create_oog_outer_throw.json | 0 .../testdata/call_tracer/inner_instafail.json | 0 .../call_tracer/inner_throw_outer_revert.json | 2 +- .../tracetest}/testdata/call_tracer/oog.json | 0 .../testdata/call_tracer/revert.json | 0 .../testdata/call_tracer/revert_reason.json | 0 .../testdata/call_tracer/selfdestruct.json | 0 .../testdata/call_tracer/simple.json | 0 .../testdata/call_tracer/throw.json | 0 .../testdata/call_tracer_legacy/create.json | 0 .../call_tracer_legacy/deep_calls.json | 0 .../call_tracer_legacy/delegatecall.json | 0 .../inner_create_oog_outer_throw.json | 0 .../call_tracer_legacy/inner_instafail.json | 0 .../inner_throw_outer_revert.json | 2 +- .../testdata/call_tracer_legacy/oog.json | 0 .../testdata/call_tracer_legacy/revert.json | 0 .../call_tracer_legacy/revert_reason.json | 0 .../call_tracer_legacy/selfdestruct.json | 0 .../testdata/call_tracer_legacy/simple.json | 0 .../testdata/call_tracer_legacy/throw.json | 0 eth/tracers/{tracer.go => js/bigint.go} | 853 +----------- .../internal/tracers/4byte_tracer_legacy.js | 0 .../{ => js}/internal/tracers/assets.go | 49 +- .../internal/tracers/bigram_tracer.js | 0 .../internal/tracers/call_tracer_js.js} | 0 .../internal/tracers/call_tracer_legacy.js | 0 .../internal/tracers/evmdis_tracer.js | 4 +- .../{ => js}/internal/tracers/noop_tracer.js | 0 .../internal/tracers/opcount_tracer.js | 0 .../internal/tracers/prestate_tracer.js | 0 .../{ => js}/internal/tracers/tracers.go | 0 .../internal/tracers/trigram_tracer.js | 0 .../internal/tracers/unigram_tracer.js | 0 eth/tracers/js/tracer.go | 880 ++++++++++++ eth/tracers/{ => js}/tracer_test.go | 59 +- .../tracers/logger}/access_list_tracer.go | 25 +- .../tracers/logger}/gen_structlog.go | 7 +- eth/tracers/logger/logger.go | 349 +++++ .../vm => eth/tracers/logger}/logger_json.go | 28 +- .../vm => eth/tracers/logger}/logger_test.go | 26 +- eth/tracers/native/4byte.go | 148 ++ eth/tracers/native/call.go | 182 +++ eth/tracers/native/noop.go | 74 + eth/tracers/native/tracer.go | 79 ++ eth/tracers/tracers.go | 67 +- eth/tracers/tracers_test.go | 338 +---- ethclient/ethclient.go | 72 +- ethclient/ethclient_test.go | 161 ++- ethclient/signer.go | 2 +- ethdb/database.go | 17 +- ethdb/leveldb/leveldb.go | 2 +- ethdb/memorydb/memorydb.go | 2 +- graphql/graphql.go | 105 +- graphql/schema.go | 6 - interfaces.go | 23 +- internal/ethapi/api.go | 33 +- internal/jsre/deps/bindata.go | 6 +- internal/jsre/deps/web3.js | 16 +- internal/jsre/jsre.go | 42 +- internal/shutdowncheck/shutdown_tracker.go | 85 ++ les/api_backend.go | 2 +- les/client.go | 53 +- les/client_handler.go | 16 +- les/downloader/downloader.go | 35 +- les/downloader/downloader_test.go | 6 +- les/downloader/statesync.go | 5 +- les/fetcher.go | 24 +- les/fetcher/block_fetcher_test.go | 4 +- les/fetcher_test.go | 3 +- les/server_handler.go | 5 +- les/test_helper.go | 2 + les/vflux/client/serverpool.go | 2 +- les/vflux/client/serverpool_test.go | 47 +- les/vflux/client/valuetracker.go | 12 +- les/vflux/server/balance_tracker.go | 5 +- light/lightchain.go | 48 +- miner/miner.go | 4 +- miner/miner_test.go | 6 +- miner/stress/beacon/main.go | 521 +++++++ miner/worker.go | 32 +- miner/worker_test.go | 2 +- mobile/ethereum.go | 20 +- mobile/geth.go | 7 + mobile/params.go | 9 + oss-fuzz.sh | 5 + p2p/discover/v4wire/v4wire.go | 2 +- p2p/discover/v5wire/encoding_test.go | 4 +- p2p/discover/v5wire/msg.go | 2 +- p2p/enode/localnode.go | 17 +- p2p/enr/enr.go | 2 +- p2p/nodestate/nodestate.go | 9 +- p2p/peer.go | 10 +- p2p/server_test.go | 12 +- p2p/simulations/README.md | 20 +- p2p/simulations/adapters/types.go | 2 +- p2p/simulations/network.go | 7 - params/bootnodes.go | 9 + params/config.go | 90 +- params/protocol_params.go | 11 +- params/version.go | 8 +- rlp/raw_test.go | 4 +- rpc/client.go | 19 +- rpc/errors.go | 10 + rpc/handler.go | 6 +- rpc/types.go | 10 + rpc/websocket_test.go | 4 +- signer/core/api.go | 4 +- .../signed_data_internal_test.go | 2 +- signer/core/apitypes/types.go | 718 ++++++++++ signer/core/auditlog.go | 2 +- signer/core/gnosis_safe.go | 14 +- signer/core/signed_data.go | 756 +---------- signer/core/signed_data_test.go | 49 +- signer/rules/rules_test.go | 2 +- tests/difficulty_test.go | 3 + tests/fuzzers/snap/debug/main.go | 39 + tests/fuzzers/snap/fuzz_handler.go | 164 +++ tests/init.go | 7 +- tests/solidity/contracts/OpCodes.sol | 6 +- tests/state_test.go | 3 +- trie/database.go | 4 +- trie/iterator.go | 2 +- trie/proof.go | 7 +- trie/proof_test.go | 79 ++ trie/stacktrie.go | 72 +- trie/stacktrie_test.go | 160 +++ trie/sync.go | 59 +- trie/sync_bloom.go | 191 --- trie/sync_test.go | 16 +- 353 files changed, 15771 insertions(+), 9335 deletions(-) create mode 100644 cmd/evm/internal/t8ntool/block.go create mode 100644 cmd/evm/internal/t8ntool/gen_header.go create mode 100644 cmd/evm/internal/t8ntool/utils.go create mode 100644 cmd/evm/testdata/14/exp_berlin.json create mode 100644 cmd/evm/testdata/17/exp.json create mode 100644 cmd/evm/testdata/17/rlpdata.txt create mode 100644 cmd/evm/testdata/17/signed_txs.rlp create mode 100644 cmd/evm/testdata/18/README.md create mode 100644 cmd/evm/testdata/18/invalid.rlp create mode 100644 cmd/evm/testdata/19/alloc.json create mode 100644 cmd/evm/testdata/19/env.json create mode 100644 cmd/evm/testdata/19/exp_arrowglacier.json create mode 100644 cmd/evm/testdata/19/exp_london.json create mode 100644 cmd/evm/testdata/19/readme.md create mode 100644 cmd/evm/testdata/19/txs.json create mode 100644 cmd/evm/testdata/20/exp.json create mode 100644 cmd/evm/testdata/20/header.json create mode 100644 cmd/evm/testdata/20/ommers.json create mode 100644 cmd/evm/testdata/20/readme.md create mode 100644 cmd/evm/testdata/20/txs.rlp create mode 100644 cmd/evm/testdata/21/clique.json create mode 100644 cmd/evm/testdata/21/exp-clique.json create mode 100644 cmd/evm/testdata/21/exp.json create mode 100644 cmd/evm/testdata/21/header.json create mode 100644 cmd/evm/testdata/21/ommers.json create mode 100644 cmd/evm/testdata/21/readme.md create mode 100644 cmd/evm/testdata/21/txs.rlp create mode 100644 cmd/evm/testdata/22/exp-clique.json create mode 100644 cmd/evm/testdata/22/exp.json create mode 100644 cmd/evm/testdata/22/header.json create mode 100644 cmd/evm/testdata/22/ommers.json create mode 100644 cmd/evm/testdata/22/readme.md create mode 100644 cmd/evm/testdata/22/txs.rlp create mode 100644 cmd/evm/testdata/23/alloc.json create mode 100644 cmd/evm/testdata/23/env.json create mode 100644 cmd/evm/testdata/23/exp.json create mode 100644 cmd/evm/testdata/23/readme.md create mode 100644 cmd/evm/testdata/23/txs.json create mode 100644 cmd/rlpdump/rlpdump_test.go create mode 100644 cmd/utils/export_test.go create mode 100644 consensus/beacon/consensus.go create mode 100644 consensus/ethash/mmap_help_linux.go create mode 100644 consensus/ethash/mmap_help_other.go create mode 100644 consensus/merger.go create mode 100644 core/blockchain_reader.go create mode 100644 core/forkchoice.go create mode 100644 core/vm/interpreter_test.go create mode 100644 eth/catalyst/gen_payload.go create mode 100644 eth/downloader/fetchers.go create mode 100644 eth/downloader/fetchers_concurrent.go create mode 100644 eth/downloader/fetchers_concurrent_bodies.go create mode 100644 eth/downloader/fetchers_concurrent_headers.go create mode 100644 eth/downloader/fetchers_concurrent_receipts.go delete mode 100644 eth/downloader/types.go create mode 100644 eth/protocols/eth/dispatcher.go delete mode 100644 eth/tracers/internal/tracers/4byte_tracer.js create mode 100644 eth/tracers/internal/tracetest/calltrace_test.go rename eth/tracers/{ => internal/tracetest}/testdata/call_tracer/create.json (100%) rename eth/tracers/{ => internal/tracetest}/testdata/call_tracer/deep_calls.json (100%) rename eth/tracers/{ => internal/tracetest}/testdata/call_tracer/delegatecall.json (100%) rename eth/tracers/{ => internal/tracetest}/testdata/call_tracer/inner_create_oog_outer_throw.json (100%) rename eth/tracers/{ => internal/tracetest}/testdata/call_tracer/inner_instafail.json (100%) rename eth/tracers/{ => internal/tracetest}/testdata/call_tracer/inner_throw_outer_revert.json (99%) rename eth/tracers/{ => internal/tracetest}/testdata/call_tracer/oog.json (100%) rename eth/tracers/{ => internal/tracetest}/testdata/call_tracer/revert.json (100%) rename eth/tracers/{ => internal/tracetest}/testdata/call_tracer/revert_reason.json (100%) rename eth/tracers/{ => internal/tracetest}/testdata/call_tracer/selfdestruct.json (100%) rename eth/tracers/{ => internal/tracetest}/testdata/call_tracer/simple.json (100%) rename eth/tracers/{ => internal/tracetest}/testdata/call_tracer/throw.json (100%) rename eth/tracers/{ => internal/tracetest}/testdata/call_tracer_legacy/create.json (100%) rename eth/tracers/{ => internal/tracetest}/testdata/call_tracer_legacy/deep_calls.json (100%) rename eth/tracers/{ => internal/tracetest}/testdata/call_tracer_legacy/delegatecall.json (100%) rename eth/tracers/{ => internal/tracetest}/testdata/call_tracer_legacy/inner_create_oog_outer_throw.json (100%) rename eth/tracers/{ => internal/tracetest}/testdata/call_tracer_legacy/inner_instafail.json (100%) rename eth/tracers/{ => internal/tracetest}/testdata/call_tracer_legacy/inner_throw_outer_revert.json (99%) rename eth/tracers/{ => internal/tracetest}/testdata/call_tracer_legacy/oog.json (100%) rename eth/tracers/{ => internal/tracetest}/testdata/call_tracer_legacy/revert.json (100%) rename eth/tracers/{ => internal/tracetest}/testdata/call_tracer_legacy/revert_reason.json (100%) rename eth/tracers/{ => internal/tracetest}/testdata/call_tracer_legacy/selfdestruct.json (100%) rename eth/tracers/{ => internal/tracetest}/testdata/call_tracer_legacy/simple.json (100%) rename eth/tracers/{ => internal/tracetest}/testdata/call_tracer_legacy/throw.json (100%) rename eth/tracers/{tracer.go => js/bigint.go} (50%) rename eth/tracers/{ => js}/internal/tracers/4byte_tracer_legacy.js (100%) rename eth/tracers/{ => js}/internal/tracers/assets.go (74%) rename eth/tracers/{ => js}/internal/tracers/bigram_tracer.js (100%) rename eth/tracers/{internal/tracers/call_tracer.js => js/internal/tracers/call_tracer_js.js} (100%) rename eth/tracers/{ => js}/internal/tracers/call_tracer_legacy.js (100%) rename eth/tracers/{ => js}/internal/tracers/evmdis_tracer.js (98%) rename eth/tracers/{ => js}/internal/tracers/noop_tracer.js (100%) rename eth/tracers/{ => js}/internal/tracers/opcount_tracer.js (100%) rename eth/tracers/{ => js}/internal/tracers/prestate_tracer.js (100%) rename eth/tracers/{ => js}/internal/tracers/tracers.go (100%) rename eth/tracers/{ => js}/internal/tracers/trigram_tracer.js (100%) rename eth/tracers/{ => js}/internal/tracers/unigram_tracer.js (100%) create mode 100644 eth/tracers/js/tracer.go rename eth/tracers/{ => js}/tracer_test.go (75%) rename {core/vm => eth/tracers/logger}/access_list_tracer.go (81%) rename {core/vm => eth/tracers/logger}/gen_structlog.go (94%) create mode 100644 eth/tracers/logger/logger.go rename {core/vm => eth/tracers/logger}/logger_json.go (69%) rename {core/vm => eth/tracers/logger}/logger_test.go (72%) create mode 100644 eth/tracers/native/4byte.go create mode 100644 eth/tracers/native/call.go create mode 100644 eth/tracers/native/noop.go create mode 100644 eth/tracers/native/tracer.go create mode 100644 internal/shutdowncheck/shutdown_tracker.go create mode 100644 miner/stress/beacon/main.go rename signer/core/{ => apitypes}/signed_data_internal_test.go (99%) create mode 100644 tests/fuzzers/snap/debug/main.go create mode 100644 tests/fuzzers/snap/fuzz_handler.go delete mode 100644 trie/sync_bloom.go diff --git a/.travis.yml b/.travis.yml index 79f35149b0..3f92221758 100644 --- a/.travis.yml +++ b/.travis.yml @@ -120,36 +120,6 @@ jobs: - go run build/ci.go install -dlgo -arch arm64 -cc aarch64-linux-gnu-gcc - go run build/ci.go archive -arch arm64 -type tar -signer LINUX_SIGNING_KEY -signify SIGNIFY_KEY -upload gethstore/builds - # This builder does the Linux Azure MIPS xgo uploads - - stage: build - if: type = push - os: linux - dist: bionic - services: - - docker - go: 1.17.x - env: - - azure-linux-mips - - GO111MODULE=on - git: - submodules: false # avoid cloning ethereum/tests - script: - - go run build/ci.go xgo --alltools -- --targets=linux/mips --ldflags '-extldflags "-static"' -v - - for bin in build/bin/*-linux-mips; do mv -f "${bin}" "${bin/-linux-mips/}"; done - - go run build/ci.go archive -arch mips -type tar -signer LINUX_SIGNING_KEY -signify SIGNIFY_KEY -upload gethstore/builds - - - go run build/ci.go xgo --alltools -- --targets=linux/mipsle --ldflags '-extldflags "-static"' -v - - for bin in build/bin/*-linux-mipsle; do mv -f "${bin}" "${bin/-linux-mipsle/}"; done - - go run build/ci.go archive -arch mipsle -type tar -signer LINUX_SIGNING_KEY -signify SIGNIFY_KEY -upload gethstore/builds - - - go run build/ci.go xgo --alltools -- --targets=linux/mips64 --ldflags '-extldflags "-static"' -v - - for bin in build/bin/*-linux-mips64; do mv -f "${bin}" "${bin/-linux-mips64/}"; done - - go run build/ci.go archive -arch mips64 -type tar -signer LINUX_SIGNING_KEY signify SIGNIFY_KEY -upload gethstore/builds - - - go run build/ci.go xgo --alltools -- --targets=linux/mips64le --ldflags '-extldflags "-static"' -v - - for bin in build/bin/*-linux-mips64le; do mv -f "${bin}" "${bin/-linux-mips64le/}"; done - - go run build/ci.go archive -arch mips64le -type tar -signer LINUX_SIGNING_KEY -signify SIGNIFY_KEY -upload gethstore/builds - # This builder does the Android Maven and Azure uploads - stage: build if: type = push diff --git a/Makefile b/Makefile index 9f7d0ae41b..341dce0404 100644 --- a/Makefile +++ b/Makefile @@ -2,11 +2,7 @@ # with Go source code. If you know what GOPATH is then you probably # don't need to bother with make. -.PHONY: geth android ios geth-cross evm all test clean -.PHONY: geth-linux geth-linux-386 geth-linux-amd64 geth-linux-mips64 geth-linux-mips64le -.PHONY: geth-linux-arm geth-linux-arm-5 geth-linux-arm-6 geth-linux-arm-7 geth-linux-arm64 -.PHONY: geth-darwin geth-darwin-386 geth-darwin-amd64 -.PHONY: geth-windows geth-windows-386 geth-windows-amd64 +.PHONY: geth android ios evm all test clean GOBIN = ./build/bin GO ?= latest diff --git a/README.md b/README.md index b07c07a40f..1dacae0219 100644 --- a/README.md +++ b/README.md @@ -3,12 +3,12 @@ Bor is the Official Golang implementation of the Matic protocol. It is a fork of ![Forks](https://img.shields.io/github/forks/maticnetwork/bor?style=social) ![Stars](https://img.shields.io/github/stars/maticnetwork/bor?style=social) -![Languages](https://img.shields.io/github/languages/count/maticnetwork/bor) -![Issues](https://img.shields.io/github/issues/maticnetwork/bor) -![PRs](https://img.shields.io/github/issues-pr-raw/maticnetwork/bor) +![Languages](https://img.shields.io/github/languages/count/maticnetwork/bor) +![Issues](https://img.shields.io/github/issues/maticnetwork/bor) +![PRs](https://img.shields.io/github/issues-pr-raw/maticnetwork/bor) ![MIT License](https://img.shields.io/github/license/maticnetwork/bor) -![contributors](https://img.shields.io/github/contributors-anon/maticnetwork/bor) -![size](https://img.shields.io/github/languages/code-size/maticnetwork/bor) +![contributors](https://img.shields.io/github/contributors-anon/maticnetwork/bor) +![size](https://img.shields.io/github/languages/code-size/maticnetwork/bor) ![lines](https://img.shields.io/tokei/lines/github/maticnetwork/bor) [![Discord](https://img.shields.io/discord/714888181740339261?color=1C1CE1&label=Polygon%20%7C%20Discord%20%F0%9F%91%8B%20&style=flat-square)](https://discord.gg/zdwkdvMNY2) [![Twitter Follow](https://img.shields.io/twitter/follow/0xPolygon.svg?style=social)](https://twitter.com/0xPolygon) diff --git a/SECURITY.md b/SECURITY.md index 635c0869fc..88b3f8fe17 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -29,92 +29,147 @@ Fingerprint: `AE96 ED96 9E47 9B00 84F3 E17F E88D 3334 FA5F 6A0A` ``` -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1 +Version: SKS 1.1.6 +Comment: Hostname: pgp.mit.edu -mQINBFgl3tgBEAC8A1tUBkD9YV+eLrOmtgy+/JS/H9RoZvkg3K1WZ8IYfj6iIRaY -neAk3Bp182GUPVz/zhKr2g0tMXIScDR3EnaDsY+Qg+JqQl8NOG+Cikr1nnkG2on9 -L8c8yiqry1ZTCmYMqCa2acTFqnyuXJ482aZNtB4QG2BpzfhW4k8YThpegk/EoRUi -m+y7buJDtoNf7YILlhDQXN8qlHB02DWOVUihph9tUIFsPK6BvTr9SIr/eG6j6k0b -fUo9pexOn7LS4SojoJmsm/5dp6AoKlac48cZU5zwR9AYcq/nvkrfmf2WkObg/xRd -EvKZzn05jRopmAIwmoC3CiLmqCHPmT5a29vEob/yPFE335k+ujjZCPOu7OwjzDk7 -M0zMSfnNfDq8bXh16nn+ueBxJ0NzgD1oC6c2PhM+XRQCXChoyI8vbfp4dGvCvYqv -QAE1bWjqnumZ/7vUPgZN6gDfiAzG2mUxC2SeFBhacgzDvtQls+uuvm+FnQOUgg2H -h8x2zgoZ7kqV29wjaUPFREuew7e+Th5BxielnzOfVycVXeSuvvIn6cd3g/s8mX1c -2kLSXJR7+KdWDrIrR5Az0kwAqFZt6B6QTlDrPswu3mxsm5TzMbny0PsbL/HBM+GZ -EZCjMXxB8bqV2eSaktjnSlUNX1VXxyOxXA+ZG2jwpr51egi57riVRXokrQARAQAB -tDlFdGhlcmV1bSBGb3VuZGF0aW9uIFNlY3VyaXR5IFRlYW0gPHNlY3VyaXR5QGV0 -aGVyZXVtLm9yZz6JAj4EEwECACgCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheA -BQJaCWH6BQkFo2BYAAoJEOiNMzT6X2oK+DEP/3H6dxkm0hvHZKoHLVuuxcu3EHYo -k5sd3MMWPrZSN8qzZnY7ayEDMxnarWOizc+2jfOxfJlzX/g8lR1/fsHdWPFPhPoV -Qk8ygrHn1H8U8+rpw/U03BqmqHpYCDzJ+CIis9UWROniqXw1nuqu/FtWOsdWxNKh -jUo6k/0EsaXsxRPzgJv7fEUcVcQ7as/C3x9sy3muc2gvgA4/BKoGPb1/U0GuA8lV -fDIDshAggmnSUAg+TuYSAAdoFQ1sKwFMPigcLJF2eyKuK3iUyixJrec/c4LSf3wA -cGghbeuqI8INP0Y2zvXDQN2cByxsFAuoZG+m0cyKGaDH2MVUvOKKYqn/03qvrf15 -AWAsW0l0yQwOTCo3FbsNzemClm5Bj/xH0E4XuwXwChcMCMOWJrFoxyvCEI+keoQc -c08/a8/MtS7vBAABXwOziSmm6CNqmzpWrh/fDrjlJlba9U3MxzvqU3IFlTdMratv -6V+SgX+L25lCzW4NxxUavoB8fAlvo8lxpHKo24FP+RcLQ8XqkU3RiUsgRjQRFOqQ -TaJcsp8mimmiYyf24mNu6b48pi+a5c/eQR9w59emeEUZqsJU+nqv8BWIIp7o4Agh -NYnKjkhPlY5e1fLVfAHIADZFynWwRPkPMJSrBiP5EtcOFxQGHGjRxU/KjXkvE0hV -xYb1PB8pWMTu/beeiQI+BBMBAgAoBQJYJd7YAhsDBQkB4TOABgsJCAcDAgYVCAIJ -CgsEFgIDAQIeAQIXgAAKCRDojTM0+l9qCplDD/9IZ2i+m1cnqQKtiyHbyFGx32oL -fzqPylX2bOG5DPsSTorSUdJMGVfT04oVxXc4S/2DVnNvi7RAbSiLapCWSplgtBOj -j1xlblOoXxT3m7s1XHGCX5tENxI9fVSSPVKJn+fQaWpPB2MhBA+1lUI6GJ+11T7K -J8LrP/fiw1/nOb7rW61HW44Gtyox23sA/d1+DsFVaF8hxJlNj5coPKr8xWzQ8pQl -juzdjHDukjevuw4rRmRq9vozvj9keEU9XJ5dldyEVXFmdDk7KT0p0Rla9nxYhzf/ -r/Bv8Bzy0HCWRb2D31BjXXGG05oVnYmNGxGFxYja4MwgrMmne3ilEVjfUJsapsqi -w41BAyQgIdfREulYN7ahsF5PrjVAqBd9IGtE8ULelF2SQxEBQBngEkP0ahP6tRAL -i7/CBjPKOyKijtqVny7qrGOnU2ygcA88/WDibexDhrjz0Gx8WmErU7rIWZiZ5u4Y -vJYVRo0+6rBCXRPeSJfiP5h1p17Anr2l42boAYslfcrzquB8MHtrNcyn650OLtHG -nbxgIdniKrpuzGN6Opw+O2id2JhD1/1p4SOemwAmthplr1MIyOHNP3q93rEj2J7h -5zPS/AJuKkMDFUpslPNLQjCOwPXtdzL7/kUZGBSyez1T3TaW1uY6l9XaJJRaSn+v -1zPgfp4GJ3lPs4AlAbQ0RXRoZXJldW0gRm91bmRhdGlvbiBCdWcgQm91bnR5IDxi -b3VudHlAZXRoZXJldW0ub3JnPokCPgQTAQIAKAIbAwYLCQgHAwIGFQgCCQoLBBYC -AwECHgECF4AFAloJYfoFCQWjYFgACgkQ6I0zNPpfagoENg/+LnSaVeMxiGVtcjWl -b7Xd73yrEy4uxiESS1AalW9mMf7oZzfI05f7QIQlaLAkNac74vZDJbPKjtb7tpMO -RFhRZMCveq6CPKU6pd1SI8IUVUKwpEe6AJP3lHdVP57dquieFE2HlYKm6uHbCGWU -0cjyTA+uu2KbgCHGmofsPY/xOcZLGEHTHqa5w60JJAQm+BSDKnw8wTyrxGvA3EK/ -ePSvOZMYa+iw6vYuZeBIMbdiXR/A2keBi3GuvqB8tDMj7P22TrH5mVDm3zNqGYD6 -amDPeiWp4cztY3aZyLcgYotqXPpDceZzDn+HopBPzAb/llCdE7bVswKRhphVMw4b -bhL0R/TQY7Sf6TK2LKSBrjv0DWOSijikE71SJcBnJvHU7EpKrQQ0lMGclm3ynyji -Nf0YTPXQt4I+fwTmOew2GFeK3UytNWbWI7oXX7Nm4bj9bhf3IJ0kmZb/Gs73+xII -e7Rz52Mby436tWyQIQiF9ITYNGvNf53TwBBZMn0pKPiTyr3Ur7FHEotkEOFNh1// -4zQY10XxuBdLrYGyZ4V8xHJM+oKre8Eg2R9qHXVbjvErHE+7CvgnV7YUip0criPr -BlKRvuoJaSliH2JFhSjWVrkPmFGrWN0BAx10yIqMnEplfKeHf4P9Elek3oInS8WP -G1zJG6s/t5+hQK0X37+TB+6rd3GJAj4EEwECACgFAlgl4TsCGwMFCQHhM4AGCwkI -BwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEOiNMzT6X2oKzf8P/iIKd77WHTbp4pMN -8h52HyZJtDJmjA1DPZrbGl1TesW/Z9uTd12txlgqZnbG2GfN9+LSP6EOPzR6v2xC -OVhR+RdWhZDJJuQCVS7lJIqQrZgmeTZG0TyQPZdLjVFBOrrhVwYX+HXbu429IzHr -URf5InyR1QgqOXyElDYS6e28HFqvaoA0DWTWDDqOLPVl+U5fuceIE2XXdv3AGLeP -Yf8J5MPobjPiZtBqI6S6iENY2Yn35qLX+axeC/iYSCHVtFuCCIdb/QYR1ZZV8Ps/ -aI9DwC7LU+YfPw7iqCIoqxSeA3o1PORkdSigEg3jtfRv5UqVo9a0oBb9jdoADsat -F/gW0E7mto3XGOiaR0eB9SSdsM3x7Bz4A0HIGNaxpZo1RWqlO91leP4c13Px7ISv -5OGXfLg+M8qb+qxbGd1HpitGi9s1y1aVfEj1kOtZ0tN8eu+Upg5WKwPNBDX3ar7J -9NCULgVSL+E79FG+zXw62gxiQrLfKzm4wU/9L5wVkwQnm29hLJ0tokrSBZFnc/1l -7OC+GM63tYicKkY4rqmoWUeYx7IwFH9mtDtvR1RxO85RbQhZizwpZpdpRkH0DqZu -ZJRmRa5r7rPqmfa7d+VIFhz2Xs8pJMLVqxTsLKcLglmjw7aOrYG0SWeH7YraXWGD -N3SlvSBiVwcK7QUKzLLvpadLwxfsuQINBFgl3tgBEACbgq6HTN5gEBi0lkD/MafI -nmNi+59U5gRGYqk46WlfRjhHudXjDpgD0lolGb4hYontkMaKRlCg2Rvgjvk3Zve0 -PKWjKw7gr8YBa9fMFY8BhAXI32OdyI9rFhxEZFfWAfwKVmT19BdeAQRFvcfd+8w8 -f1XVc+zddULMJFBTr+xKDlIRWwTkdLPQeWbjo0eHl/g4tuLiLrTxVbnj26bf+2+1 -DbM/w5VavzPrkviHqvKe/QP/gay4QDViWvFgLb90idfAHIdsPgflp0VDS5rVHFL6 -D73rSRdIRo3I8c8mYoNjSR4XDuvgOkAKW9LR3pvouFHHjp6Fr0GesRbrbb2EG66i -PsR99MQ7FqIL9VMHPm2mtR+XvbnKkH2rYyEqaMbSdk29jGapkAWle4sIhSKk749A -4tGkHl08KZ2N9o6GrfUehP/V2eJLaph2DioFL1HxRryrKy80QQKLMJRekxigq8gr -eW8xB4zuf9Mkuou+RHNmo8PebHjFstLigiD6/zP2e+4tUmrT0/JTGOShoGMl8Rt0 -VRxdPImKun+4LOXbfOxArOSkY6i35+gsgkkSy1gTJE0BY3S9auT6+YrglY/TWPQ9 -IJxWVOKlT+3WIp5wJu2bBKQ420VLqDYzkoWytel/bM1ACUtipMiIVeUs2uFiRjpz -A1Wy0QHKPTdSuGlJPRrfcQARAQABiQIlBBgBAgAPAhsMBQJaCWIIBQkFo2BYAAoJ -EOiNMzT6X2oKgSwQAKKs7BGF8TyZeIEO2EUK7R2bdQDCdSGZY06tqLFg3IHMGxDM -b/7FVoa2AEsFgv6xpoebxBB5zkhUk7lslgxvKiSLYjxfNjTBltfiFJ+eQnf+OTs8 -KeR51lLa66rvIH2qUzkNDCCTF45H4wIDpV05AXhBjKYkrDCrtey1rQyFp5fxI+0I -Q1UKKXvzZK4GdxhxDbOUSd38MYy93nqcmclGSGK/gF8XiyuVjeifDCM6+T1NQTX0 -K9lneidcqtBDvlggJTLJtQPO33o5EHzXSiud+dKth1uUhZOFEaYRZoye1YE3yB0T -NOOE8fXlvu8iuIAMBSDL9ep6sEIaXYwoD60I2gHdWD0lkP0DOjGQpi4ouXM3Edsd -5MTi0MDRNTij431kn8T/D0LCgmoUmYYMBgbwFhXr67axPZlKjrqR0z3F/Elv0ZPP -cVg1tNznsALYQ9Ovl6b5M3cJ5GapbbvNWC7yEE1qScl9HiMxjt/H6aPastH63/7w -cN0TslW+zRBy05VNJvpWGStQXcngsSUeJtI1Gd992YNjUJq4/Lih6Z1TlwcFVap+ -cTcDptoUvXYGg/9mRNNPZwErSfIJ0Ibnx9wPVuRN6NiCLOt2mtKp2F1pM6AOQPpZ -85vEh6I8i6OaO0w/Z0UHBwvpY6jDUliaROsWUQsqz78Z34CVj4cy6vPW2EF4 -=r6KK ------END PGP PUBLIC KEY BLOCK----- +mQINBFgl3tgBEAC8A1tUBkD9YV+eLrOmtgy+/JS/H9RoZvkg3K1WZ8IYfj6iIRaYneAk3Bp1 +82GUPVz/zhKr2g0tMXIScDR3EnaDsY+Qg+JqQl8NOG+Cikr1nnkG2on9L8c8yiqry1ZTCmYM +qCa2acTFqnyuXJ482aZNtB4QG2BpzfhW4k8YThpegk/EoRUim+y7buJDtoNf7YILlhDQXN8q +lHB02DWOVUihph9tUIFsPK6BvTr9SIr/eG6j6k0bfUo9pexOn7LS4SojoJmsm/5dp6AoKlac +48cZU5zwR9AYcq/nvkrfmf2WkObg/xRdEvKZzn05jRopmAIwmoC3CiLmqCHPmT5a29vEob/y +PFE335k+ujjZCPOu7OwjzDk7M0zMSfnNfDq8bXh16nn+ueBxJ0NzgD1oC6c2PhM+XRQCXCho +yI8vbfp4dGvCvYqvQAE1bWjqnumZ/7vUPgZN6gDfiAzG2mUxC2SeFBhacgzDvtQls+uuvm+F +nQOUgg2Hh8x2zgoZ7kqV29wjaUPFREuew7e+Th5BxielnzOfVycVXeSuvvIn6cd3g/s8mX1c +2kLSXJR7+KdWDrIrR5Az0kwAqFZt6B6QTlDrPswu3mxsm5TzMbny0PsbL/HBM+GZEZCjMXxB +8bqV2eSaktjnSlUNX1VXxyOxXA+ZG2jwpr51egi57riVRXokrQARAQABtDRFdGhlcmV1bSBG +b3VuZGF0aW9uIEJ1ZyBCb3VudHkgPGJvdW50eUBldGhlcmV1bS5vcmc+iQIcBBEBCAAGBQJa +FCY6AAoJEHoMA3Q0/nfveH8P+gJBPo9BXZL8isUfbUWjwLi81Yi70hZqIJUnz64SWTqBzg5b +mCZ69Ji5637THsxQetS2ARabz0DybQ779FhD/IWnqV9T3KuBM/9RzJtuhLzKCyMrAINPMo28 +rKWdunHHarpuR4m3tL2zWJkle5QVYb+vkZXJJE98PJw+N4IYeKKeCs2ubeqZu636GA0sMzzB +Jn3m/dRRA2va+/zzbr6F6b51ynzbMxWKTsJnstjC8gs8EeI+Zcd6otSyelLtCUkk3h5sTvpV +Wv67BNSU0BYsMkxyFi9PUyy07Wixgeas89K5jG1oOtDva/FkpRHrTE/WA5OXDRcLrHJM+SwD +CwqcLQqJd09NxwUW1iKeBmPptTiOGu1Gv2o7aEyoaWrHRBO7JuYrQrj6q2B3H1Je0zjAd2qt +09ni2bLwLn4LA+VDpprNTO+eZDprv09s2oFSU6NwziHybovu0y7X4pADGkK2evOM7c86PohX +QRQ1M1T16xLj6wP8/Ykwl6v/LUk7iDPXP3GPILnh4YOkwBR3DsCOPn8098xy7FxEELmupRzt +Cj9oC7YAoweeShgUjBPzb+nGY1m6OcFfbUPBgFyMMfwF6joHbiVIO+39+Ut2g2ysZa7KF+yp +XqVDqyEkYXsOLb25OC7brt8IJEPgBPwcHK5GNag6RfLxnQV+iVZ9KNH1yQgSiQI+BBMBAgAo +AhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCWglh+gUJBaNgWAAKCRDojTM0+l9qCgQ2 +D/4udJpV4zGIZW1yNaVvtd3vfKsTLi7GIRJLUBqVb2Yx/uhnN8jTl/tAhCVosCQ1pzvi9kMl +s8qO1vu2kw5EWFFkwK96roI8pTql3VIjwhRVQrCkR7oAk/eUd1U/nt2q6J4UTYeVgqbq4dsI +ZZTRyPJMD667YpuAIcaah+w9j/E5xksYQdMeprnDrQkkBCb4FIMqfDzBPKvEa8DcQr949K85 +kxhr6LDq9i5l4Egxt2JdH8DaR4GLca6+oHy0MyPs/bZOsfmZUObfM2oZgPpqYM96JanhzO1j +dpnItyBii2pc+kNx5nMOf4eikE/MBv+WUJ0TttWzApGGmFUzDhtuEvRH9NBjtJ/pMrYspIGu +O/QNY5KKOKQTvVIlwGcm8dTsSkqtBDSUwZyWbfKfKOI1/RhM9dC3gj5/BOY57DYYV4rdTK01 +ZtYjuhdfs2bhuP1uF/cgnSSZlv8azvf7Egh7tHPnYxvLjfq1bJAhCIX0hNg0a81/ndPAEFky +fSko+JPKvdSvsUcSi2QQ4U2HX//jNBjXRfG4F0utgbJnhXzEckz6gqt7wSDZH2oddVuO8Ssc +T7sK+CdXthSKnRyuI+sGUpG+6glpKWIfYkWFKNZWuQ+YUatY3QEDHXTIioycSmV8p4d/g/0S +V6TegidLxY8bXMkbqz+3n6FArRffv5MH7qt3cYkCPgQTAQIAKAUCWCXhOwIbAwUJAeEzgAYL +CQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQ6I0zNPpfagrN/w/+Igp3vtYdNunikw3yHnYf +Jkm0MmaMDUM9mtsaXVN6xb9n25N3Xa3GWCpmdsbYZ8334tI/oQ4/NHq/bEI5WFH5F1aFkMkm +5AJVLuUkipCtmCZ5NkbRPJA9l0uNUUE6uuFXBhf4ddu7jb0jMetRF/kifJHVCCo5fISUNhLp +7bwcWq9qgDQNZNYMOo4s9WX5Tl+5x4gTZdd2/cAYt49h/wnkw+huM+Jm0GojpLqIQ1jZiffm +otf5rF4L+JhIIdW0W4IIh1v9BhHVllXw+z9oj0PALstT5h8/DuKoIiirFJ4DejU85GR1KKAS +DeO19G/lSpWj1rSgFv2N2gAOxq0X+BbQTua2jdcY6JpHR4H1JJ2wzfHsHPgDQcgY1rGlmjVF +aqU73WV4/hzXc/HshK/k4Zd8uD4zypv6rFsZ3UemK0aL2zXLVpV8SPWQ61nS03x675SmDlYr +A80ENfdqvsn00JQuBVIv4Tv0Ub7NfDraDGJCst8rObjBT/0vnBWTBCebb2EsnS2iStIFkWdz +/WXs4L4Yzre1iJwqRjiuqahZR5jHsjAUf2a0O29HVHE7zlFtCFmLPClml2lGQfQOpm5klGZF +rmvus+qZ9rt35UgWHPZezykkwtWrFOwspwuCWaPDto6tgbRJZ4ftitpdYYM3dKW9IGJXBwrt +BQrMsu+lp0vDF+yJAlUEEwEIAD8CGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAFiEErpbt +lp5HmwCE8+F/6I0zNPpfagoFAmEAEJwFCQycmLgACgkQ6I0zNPpfagpWoBAAhOcbMAUw6Zt0 +GYzT3sR5/c0iatezPzXEXJf9ebzR8M5uPElXcxcnMx1dvXZmGPXPJKCPa99WCu1NZYy8F+Wj +GTOY9tfIkvSxhys1p/giPAmvid6uQmD+bz7ivktnyzCkDWfMA+l8lsCSEqVlaq6y5T+a6SWB +6TzC2S0MPb/RrC/7DpwyrNYWumvyVJh09adm1Mw/UGgst/sZ8eMaRYEd3X0yyT1CBpX4zp2E +qQj9IEOTizvzv1x2jkHe5ZUeU3+nTBNlhSA+WFHUi0pfBdo2qog3Mv2EC1P2qMKoSdD5tPbA +zql1yKoHHnXOMsqdftGwbiv2sYXWvrYvmaCd3Ys/viOyt3HOy9uV2ZEtBd9Yqo9x/NZj8QMA +nY5k8jjrIXbUC89MqrJsQ6xxWQIg5ikMT7DvY0Ln89ev4oJyVvwIQAwCm4jUzFNm9bZLYDOP +5lGJCV7tF5NYVU7NxNM8vescKc40mVNK/pygS5mxhK9QYOUjZsIv8gddrl1TkqrFMuxFnTyN +WvzE29wFu/n4N1DkF+ZBqS70SlRvB+Hjz5LrDgEzF1Wf1eA/wq1dZbvMjjDVIc2VGlYp8Cp2 +8ob23c1seTtYXTNYgSR5go4EpH+xi+bIWv01bQQ9xGwBbT5sm4WUeWOcmX4QewzLZ3T/wK9+ +N4Ye/hmU9O34FwWJOY58EIe0OUV0aGVyZXVtIEZvdW5kYXRpb24gU2VjdXJpdHkgVGVhbSA8 +c2VjdXJpdHlAZXRoZXJldW0ub3JnPokCHAQRAQgABgUCWhQmOgAKCRB6DAN0NP5372LSEACT +wZk1TASWZj5QF7rmkIM1GEyBxLE+PundNcMgM9Ktj1315ED8SmiukNI4knVS1MY99OIgXhQl +D1foF2GKdTomrwwC4012zTNyUYCY60LnPZ6Z511HG+rZgZtZrbkz0IiUpwAlhGQND77lBqem +J3K+CFX2XpDA/ojui/kqrY4cwMT5P8xPJkwgpRgw/jgdcZyJTsXdHblV9IGU4H1Vd1SgcfAf +Db3YxDUlBtzlp0NkZqxen8irLIXUQvsfuIfRUbUSkWoK/n3U/gOCajAe8ZNF07iX4OWjH4Sw +NDA841WhFWcGE+d8+pfMVfPASU3UPKH72uw86b2VgR46Av6voyMFd1pj+yCA+YAhJuOpV4yL +QaGg2Z0kVOjuNWK/kBzp1F58DWGh4YBatbhE/UyQOqAAtR7lNf0M3QF9AdrHTxX8oZeqVW3V +Fmi2mk0NwCIUv8SSrZr1dTchp04OtyXe5gZBXSfzncCSRQIUDC8OgNWaOzAaUmK299v4bvye +uSCxOysxC7Q1hZtjzFPKdljS81mRlYeUL4fHlJU9R57bg8mriSXLmn7eKrSEDm/EG5T8nRx7 +TgX2MqJs8sWFxD2+bboVEu75yuFmZ//nmCBApAit9Hr2/sCshGIEpa9MQ6xJCYUxyqeJH+Cc +Aja0UfXhnK2uvPClpJLIl4RE3gm4OXeE1IkCPgQTAQIAKAIbAwYLCQgHAwIGFQgCCQoLBBYC +AwECHgECF4AFAloJYfoFCQWjYFgACgkQ6I0zNPpfagr4MQ//cfp3GSbSG8dkqgctW67Fy7cQ +diiTmx3cwxY+tlI3yrNmdjtrIQMzGdqtY6LNz7aN87F8mXNf+DyVHX9+wd1Y8U+E+hVCTzKC +sefUfxTz6unD9TTcGqaoelgIPMn4IiKz1RZE6eKpfDWe6q78W1Y6x1bE0qGNSjqT/QSxpezF +E/OAm/t8RRxVxDtqz8LfH2zLea5zaC+ADj8EqgY9vX9TQa4DyVV8MgOyECCCadJQCD5O5hIA +B2gVDWwrAUw+KBwskXZ7Iq4reJTKLEmt5z9zgtJ/fABwaCFt66ojwg0/RjbO9cNA3ZwHLGwU +C6hkb6bRzIoZoMfYxVS84opiqf/Teq+t/XkBYCxbSXTJDA5MKjcVuw3N6YKWbkGP/EfQThe7 +BfAKFwwIw5YmsWjHK8IQj6R6hBxzTz9rz8y1Lu8EAAFfA7OJKaboI2qbOlauH98OuOUmVtr1 +TczHO+pTcgWVN0ytq2/pX5KBf4vbmULNbg3HFRq+gHx8CW+jyXGkcqjbgU/5FwtDxeqRTdGJ +SyBGNBEU6pBNolyynyaKaaJjJ/biY27pvjymL5rlz95BH3Dn16Z4RRmqwlT6eq/wFYginujg +CCE1icqOSE+Vjl7V8tV8AcgANkXKdbBE+Q8wlKsGI/kS1w4XFAYcaNHFT8qNeS8TSFXFhvU8 +HylYxO79t56JAj4EEwECACgFAlgl3tgCGwMFCQHhM4AGCwkIBwMCBhUIAgkKCwQWAgMBAh4B +AheAAAoJEOiNMzT6X2oKmUMP/0hnaL6bVyepAq2LIdvIUbHfagt/Oo/KVfZs4bkM+xJOitJR +0kwZV9PTihXFdzhL/YNWc2+LtEBtKItqkJZKmWC0E6OPXGVuU6hfFPebuzVccYJfm0Q3Ej19 +VJI9Uomf59Bpak8HYyEED7WVQjoYn7XVPsonwus/9+LDX+c5vutbrUdbjga3KjHbewD93X4O +wVVoXyHEmU2Plyg8qvzFbNDylCWO7N2McO6SN6+7DitGZGr2+jO+P2R4RT1cnl2V3IRVcWZ0 +OTspPSnRGVr2fFiHN/+v8G/wHPLQcJZFvYPfUGNdcYbTmhWdiY0bEYXFiNrgzCCsyad7eKUR +WN9QmxqmyqLDjUEDJCAh19ES6Vg3tqGwXk+uNUCoF30ga0TxQt6UXZJDEQFAGeASQ/RqE/q1 +EAuLv8IGM8o7IqKO2pWfLuqsY6dTbKBwDzz9YOJt7EOGuPPQbHxaYStTushZmJnm7hi8lhVG +jT7qsEJdE95Il+I/mHWnXsCevaXjZugBiyV9yvOq4Hwwe2s1zKfrnQ4u0cadvGAh2eIqum7M +Y3o6nD47aJ3YmEPX/WnhI56bACa2GmWvUwjI4c0/er3esSPYnuHnM9L8Am4qQwMVSmyU80tC +MI7A9e13Mvv+RRkYFLJ7PVPdNpbW5jqX1doklFpKf6/XM+B+ngYneU+zgCUBiQJVBBMBCAA/ +AhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgBYhBK6W7ZaeR5sAhPPhf+iNMzT6X2oKBQJh +ABCQBQkMnJi4AAoJEOiNMzT6X2oKAv0P+gJ3twBp5efNWyVLcIg4h4cOo9uD0NPvz8/fm2gX +FoOJL3MeigtPuSVfE9kuTaTuRbArzuFtdvH6G/kcRQvOlO4zyiIRHCk1gDHoIvvtn6RbRhVm +/Xo4uGIsFHst7n4A7BjicwEK5Op6Ih5Hoq19xz83YSBgBVk2fYEJIRyJiKFbyPjH0eSYe8v+ +Ra5/F85ugLx1P6mMVkW+WPzULns89riW7BGTnZmXFHZp8nO2pkUlcI7F3KRG7l4kmlC50ox6 +DiG/6AJCVulbAClky9C68TmJ/R1RazQxU/9IqVywsydq66tbJQbm5Z7GEti0C5jjbSRJL2oT +1xC7Rilr85PMREkPL3vegJdgj5PKlffZ/MocD/0EohiQ7wFpejFD4iTljeh0exRUwCRb6655 +9ib34JSQgU8Hl4JJu+mEgd9v0ZHD0/1mMD6fnAR84zca+O3cdASbnQmzTOKcGzLIrkE8TEnU ++2UZ8Ol7SAAqmBgzY1gKOilUho6dkyCAwNL+QDpvrITDPLEFPsjyB/M2KudZSVEn+Rletju1 +qkMW31qFMNlsbwzMZw+0USeGcs31Cs0B2/WQsro99CExlhS9auUFkmoVjJmYVTIYOM0zuPa4 +OyGspqPhRu5hEsmMDPDWD7Aad5k4GTqogQNnuKyRliZjXXrDZqFD5nfsJSL8Ky/sJGEMuQIN +BFgl3tgBEACbgq6HTN5gEBi0lkD/MafInmNi+59U5gRGYqk46WlfRjhHudXjDpgD0lolGb4h +YontkMaKRlCg2Rvgjvk3Zve0PKWjKw7gr8YBa9fMFY8BhAXI32OdyI9rFhxEZFfWAfwKVmT1 +9BdeAQRFvcfd+8w8f1XVc+zddULMJFBTr+xKDlIRWwTkdLPQeWbjo0eHl/g4tuLiLrTxVbnj +26bf+2+1DbM/w5VavzPrkviHqvKe/QP/gay4QDViWvFgLb90idfAHIdsPgflp0VDS5rVHFL6 +D73rSRdIRo3I8c8mYoNjSR4XDuvgOkAKW9LR3pvouFHHjp6Fr0GesRbrbb2EG66iPsR99MQ7 +FqIL9VMHPm2mtR+XvbnKkH2rYyEqaMbSdk29jGapkAWle4sIhSKk749A4tGkHl08KZ2N9o6G +rfUehP/V2eJLaph2DioFL1HxRryrKy80QQKLMJRekxigq8greW8xB4zuf9Mkuou+RHNmo8Pe +bHjFstLigiD6/zP2e+4tUmrT0/JTGOShoGMl8Rt0VRxdPImKun+4LOXbfOxArOSkY6i35+gs +gkkSy1gTJE0BY3S9auT6+YrglY/TWPQ9IJxWVOKlT+3WIp5wJu2bBKQ420VLqDYzkoWytel/ +bM1ACUtipMiIVeUs2uFiRjpzA1Wy0QHKPTdSuGlJPRrfcQARAQABiQIlBBgBAgAPAhsMBQJa +CWIIBQkFo2BYAAoJEOiNMzT6X2oKgSwQAKKs7BGF8TyZeIEO2EUK7R2bdQDCdSGZY06tqLFg +3IHMGxDMb/7FVoa2AEsFgv6xpoebxBB5zkhUk7lslgxvKiSLYjxfNjTBltfiFJ+eQnf+OTs8 +KeR51lLa66rvIH2qUzkNDCCTF45H4wIDpV05AXhBjKYkrDCrtey1rQyFp5fxI+0IQ1UKKXvz +ZK4GdxhxDbOUSd38MYy93nqcmclGSGK/gF8XiyuVjeifDCM6+T1NQTX0K9lneidcqtBDvlgg +JTLJtQPO33o5EHzXSiud+dKth1uUhZOFEaYRZoye1YE3yB0TNOOE8fXlvu8iuIAMBSDL9ep6 +sEIaXYwoD60I2gHdWD0lkP0DOjGQpi4ouXM3Edsd5MTi0MDRNTij431kn8T/D0LCgmoUmYYM +BgbwFhXr67axPZlKjrqR0z3F/Elv0ZPPcVg1tNznsALYQ9Ovl6b5M3cJ5GapbbvNWC7yEE1q +Scl9HiMxjt/H6aPastH63/7wcN0TslW+zRBy05VNJvpWGStQXcngsSUeJtI1Gd992YNjUJq4 +/Lih6Z1TlwcFVap+cTcDptoUvXYGg/9mRNNPZwErSfIJ0Ibnx9wPVuRN6NiCLOt2mtKp2F1p +M6AOQPpZ85vEh6I8i6OaO0w/Z0UHBwvpY6jDUliaROsWUQsqz78Z34CVj4cy6vPW2EF4iQIl +BBgBAgAPBQJYJd7YAhsMBQkB4TOAAAoJEOiNMzT6X2oKTjgP/1ojCVyGyvHMLUgnX0zwrR5Q +1M5RKFz6kHwKjODVLR3Isp8I935oTQt3DY7yFDI4t0GqbYRQMtxcNEb7maianhK2trCXfhPs +6/L04igjDf5iTcmzamXN6xnh5xkz06hZJJCMuu4MvKxC9MQHCVKAwjswl/9H9JqIBXAY3E2l +LpX5P+5jDZuPxS86p3+k4Rrdp9KTGXjiuEleM3zGlz5BLWydqovOck7C2aKh27ETFpDYY0z3 +yQ5AsPJyk1rAr0wrH6+ywmwWlzuQewavnrLnJ2M8iMFXpIhyHeEIU/f7o8f+dQk72rZ9CGzd +cqig2za/BS3zawZWgbv2vB2elNsIllYLdir45jxBOxx2yvJvEuu4glz78y4oJTCTAYAbMlle +5gVdPkVcGyvvVS9tinnSaiIzuvWrYHKWll1uYPm2Q1CDs06P5I7bUGAXpgQLUh/XQguy/0sX +GWqW3FS5JzP+XgcR/7UASvwBdHylubKbeqEpB7G1s+m+8C67qOrc7EQv3Jmy1YDOkhEyNig1 +rmjplLuir3tC1X+D7dHpn7NJe7nMwFx2b2MpMkLA9jPPAGPp/ekcu5sxCe+E0J/4UF++K+CR +XIxgtzU2UJfp8p9x+ygbx5qHinR0tVRdIzv3ZnGsXrfxnWfSOaB582cU3VRN9INzHHax8ETa +QVDnGO5uQa+FiQI8BBgBCAAmAhsMFiEErpbtlp5HmwCE8+F/6I0zNPpfagoFAmEAELYFCQyc +mN4ACgkQ6I0zNPpfagoqAQ/+MnDjBx8JWMd/XjeFoYKx/Oo0ntkInV+ME61JTBls4PdVk+TB +8PWZdPQHw9SnTvRmykFeznXIRzuxkowjrZYXdPXBxY2b1WyD5V3Ati1TM9vqpaR4osyPs2xy +I4dzDssh9YvUsIRL99O04/65lGiYeBNuACq+yK/7nD/ErzBkDYJHhMCdadbVWUACxvVIDvro +yQeVLKMsHqMCd8BTGD7VDs79NXskPnN77pAFnkzS4Z2b8SNzrlgTc5pUiuZHIXPIpEYmsYzh +ucTU6uI3dN1PbSFHK5tG2pHb4ZrPxY3L20Dgc2Tfu5/SDApZzwvvKTqjdO891MEJ++H+ssOz +i4O1UeWKs9owWttan9+PI47ozBSKOTxmMqLSQ0f56Np9FJsV0ilGxRKfjhzJ4KniOMUBA7mP ++m+TmXfVtthJred4sHlJMTJNpt+sCcT6wLMmyc3keIEAu33gsJj3LTpkEA2q+V+ZiP6Q8HRB +402ITklABSArrPSE/fQU9L8hZ5qmy0Z96z0iyILgVMLuRCCfQOMWhwl8yQWIIaf1yPI07xur +epy6lH7HmxjjOR7eo0DaSxQGQpThAtFGwkWkFh8yki8j3E42kkrxvEyyYZDXn2YcI3bpqhJx +PtwCMZUJ3kc/skOrs6bOI19iBNaEoNX5Dllm7UHjOgWNDQkcCuOCxucKano= +=arte +-----END PGP PUBLIC KEY BLOCK------ ``` diff --git a/accounts/abi/bind/backends/simulated.go b/accounts/abi/bind/backends/simulated.go index e410522ac8..27d40f1d66 100644 --- a/accounts/abi/bind/backends/simulated.go +++ b/accounts/abi/bind/backends/simulated.go @@ -462,6 +462,12 @@ func (b *SimulatedBackend) PendingNonceAt(ctx context.Context, account common.Ad // SuggestGasPrice implements ContractTransactor.SuggestGasPrice. Since the simulated // chain doesn't have miners, we just return a gas price of 1 for any call. func (b *SimulatedBackend) SuggestGasPrice(ctx context.Context) (*big.Int, error) { + b.mu.Lock() + defer b.mu.Unlock() + + if b.pendingBlock.Header().BaseFee != nil { + return b.pendingBlock.Header().BaseFee, nil + } return big.NewInt(1), nil } diff --git a/accounts/abi/bind/backends/simulated_test.go b/accounts/abi/bind/backends/simulated_test.go index 6132678107..8a0cbe3357 100644 --- a/accounts/abi/bind/backends/simulated_test.go +++ b/accounts/abi/bind/backends/simulated_test.go @@ -496,7 +496,7 @@ func TestEstimateGas(t *testing.T) { GasPrice: big.NewInt(0), Value: nil, Data: common.Hex2Bytes("b9b046f9"), - }, 0, errors.New("invalid opcode: opcode 0xfe not defined"), nil}, + }, 0, errors.New("invalid opcode: INVALID"), nil}, {"Valid", ethereum.CallMsg{ From: addr, @@ -916,8 +916,8 @@ func TestSuggestGasPrice(t *testing.T) { if err != nil { t.Errorf("could not get gas price: %v", err) } - if gasPrice.Uint64() != uint64(1) { - t.Errorf("gas price was not expected value of 1. actual: %v", gasPrice.Uint64()) + if gasPrice.Uint64() != sim.pendingBlock.Header().BaseFee.Uint64() { + t.Errorf("gas price was not expected value of %v. actual: %v", sim.pendingBlock.Header().BaseFee.Uint64(), gasPrice.Uint64()) } } diff --git a/accounts/abi/bind/base.go b/accounts/abi/bind/base.go index 63280bcbeb..f4e5a2a900 100644 --- a/accounts/abi/bind/base.go +++ b/accounts/abi/bind/base.go @@ -370,7 +370,7 @@ func (c *BoundContract) transact(opts *TransactOpts, contract *common.Address, i rawTx, err = c.createLegacyTx(opts, contract, input) } else { // Only query for basefee if gasPrice not specified - if head, errHead := c.transactor.HeaderByNumber(ensureContext(opts.Context), nil); err != nil { + if head, errHead := c.transactor.HeaderByNumber(ensureContext(opts.Context), nil); errHead != nil { return nil, errHead } else if head.BaseFee != nil { rawTx, err = c.createDynamicTx(opts, contract, input, head) diff --git a/accounts/abi/bind/bind.go b/accounts/abi/bind/bind.go index 0e98709b14..ff69a78c64 100644 --- a/accounts/abi/bind/bind.go +++ b/accounts/abi/bind/bind.go @@ -88,6 +88,13 @@ func Bind(types []string, abis []string, bytecodes []string, fsigs []map[string] transactIdentifiers = make(map[string]bool) eventIdentifiers = make(map[string]bool) ) + + for _, input := range evmABI.Constructor.Inputs { + if hasStruct(input.Type) { + bindStructType[lang](input.Type, structs) + } + } + for _, original := range evmABI.Methods { // Normalize the method for capital cases and non-anonymous inputs/outputs normalized := original diff --git a/accounts/abi/bind/bind_test.go b/accounts/abi/bind/bind_test.go index 5a436607ce..992497993a 100644 --- a/accounts/abi/bind/bind_test.go +++ b/accounts/abi/bind/bind_test.go @@ -1911,6 +1911,50 @@ var bindTests = []struct { nil, nil, }, + { + name: `ConstructorWithStructParam`, + contract: ` + pragma solidity >=0.8.0 <0.9.0; + + contract ConstructorWithStructParam { + struct StructType { + uint256 field; + } + + constructor(StructType memory st) {} + } + `, + bytecode: []string{`0x608060405234801561001057600080fd5b506040516101c43803806101c48339818101604052810190610032919061014a565b50610177565b6000604051905090565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6100958261004c565b810181811067ffffffffffffffff821117156100b4576100b361005d565b5b80604052505050565b60006100c7610038565b90506100d3828261008c565b919050565b6000819050919050565b6100eb816100d8565b81146100f657600080fd5b50565b600081519050610108816100e2565b92915050565b60006020828403121561012457610123610047565b5b61012e60206100bd565b9050600061013e848285016100f9565b60008301525092915050565b6000602082840312156101605761015f610042565b5b600061016e8482850161010e565b91505092915050565b603f806101856000396000f3fe6080604052600080fdfea2646970667358221220cdffa667affecefac5561f65f4a4ba914204a8d4eb859d8cd426fb306e5c12a364736f6c634300080a0033`}, + abi: []string{`[{"inputs":[{"components":[{"internalType":"uint256","name":"field","type":"uint256"}],"internalType":"struct ConstructorWithStructParam.StructType","name":"st","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"}]`}, + imports: ` + "math/big" + + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/accounts/abi/bind/backends" + "github.com/ethereum/go-ethereum/core" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/eth/ethconfig" + `, + tester: ` + var ( + key, _ = crypto.GenerateKey() + user, _ = bind.NewKeyedTransactorWithChainID(key, big.NewInt(1337)) + sim = backends.NewSimulatedBackend(core.GenesisAlloc{user.From: {Balance: big.NewInt(1000000000000000000)}}, ethconfig.Defaults.Miner.GasCeil) + ) + defer sim.Close() + + _, tx, _, err := DeployConstructorWithStructParam(user, sim, ConstructorWithStructParamStructType{Field: big.NewInt(42)}) + if err != nil { + t.Fatalf("DeployConstructorWithStructParam() got err %v; want nil err", err) + } + sim.Commit() + + if _, err = bind.WaitDeployed(nil, sim, tx); err != nil { + t.Logf("Deployment tx: %+v", tx) + t.Errorf("bind.WaitDeployed(nil, %T, ) got err %v; want nil err", sim, err) + } + `, + }, } // Tests that packages generated by the binder can be successfully compiled and @@ -1934,22 +1978,23 @@ func TestGolangBindings(t *testing.T) { } // Generate the test suite for all the contracts for i, tt := range bindTests { - var types []string - if tt.types != nil { - types = tt.types - } else { - types = []string{tt.name} - } - // Generate the binding and create a Go source file in the workspace - bind, err := Bind(types, tt.abi, tt.bytecode, tt.fsigs, "bindtest", LangGo, tt.libs, tt.aliases) - if err != nil { - t.Fatalf("test %d: failed to generate binding: %v", i, err) - } - if err = ioutil.WriteFile(filepath.Join(pkg, strings.ToLower(tt.name)+".go"), []byte(bind), 0600); err != nil { - t.Fatalf("test %d: failed to write binding: %v", i, err) - } - // Generate the test file with the injected test code - code := fmt.Sprintf(` + t.Run(tt.name, func(t *testing.T) { + var types []string + if tt.types != nil { + types = tt.types + } else { + types = []string{tt.name} + } + // Generate the binding and create a Go source file in the workspace + bind, err := Bind(types, tt.abi, tt.bytecode, tt.fsigs, "bindtest", LangGo, tt.libs, tt.aliases) + if err != nil { + t.Fatalf("test %d: failed to generate binding: %v", i, err) + } + if err = ioutil.WriteFile(filepath.Join(pkg, strings.ToLower(tt.name)+".go"), []byte(bind), 0600); err != nil { + t.Fatalf("test %d: failed to write binding: %v", i, err) + } + // Generate the test file with the injected test code + code := fmt.Sprintf(` package bindtest import ( @@ -1961,9 +2006,10 @@ func TestGolangBindings(t *testing.T) { %s } `, tt.imports, tt.name, tt.tester) - if err := ioutil.WriteFile(filepath.Join(pkg, strings.ToLower(tt.name)+"_test.go"), []byte(code), 0600); err != nil { - t.Fatalf("test %d: failed to write tests: %v", i, err) - } + if err := ioutil.WriteFile(filepath.Join(pkg, strings.ToLower(tt.name)+"_test.go"), []byte(code), 0600); err != nil { + t.Fatalf("test %d: failed to write tests: %v", i, err) + } + }) } // Convert the package to go modules and use the current source for go-ethereum moder := exec.Command(gocmd, "mod", "init", "bindtest") diff --git a/accounts/abi/unpack.go b/accounts/abi/unpack.go index ec06984936..43cd6c6457 100644 --- a/accounts/abi/unpack.go +++ b/accounts/abi/unpack.go @@ -290,7 +290,7 @@ func tuplePointsTo(index int, output []byte) (start int, err error) { offset := big.NewInt(0).SetBytes(output[index : index+32]) outputLen := big.NewInt(int64(len(output))) - if offset.Cmp(big.NewInt(int64(len(output)))) > 0 { + if offset.Cmp(outputLen) > 0 { return 0, fmt.Errorf("abi: cannot marshal in to go slice: offset %v would go over slice boundary (len=%v)", offset, outputLen) } if offset.BitLen() > 63 { diff --git a/accounts/accounts.go b/accounts/accounts.go index faf162777e..c1b5f31235 100644 --- a/accounts/accounts.go +++ b/accounts/accounts.go @@ -177,7 +177,7 @@ type Backend interface { // TextHash is a helper function that calculates a hash for the given message that can be // safely used to calculate a signature from. // -// The hash is calulcated as +// The hash is calculated as // keccak256("\x19Ethereum Signed Message:\n"${message length}${message}). // // This gives context to the signed message and prevents signing of transactions. @@ -189,7 +189,7 @@ func TextHash(data []byte) []byte { // TextAndHash is a helper function that calculates a hash for the given message that can be // safely used to calculate a signature from. // -// The hash is calulcated as +// The hash is calculated as // keccak256("\x19Ethereum Signed Message:\n"${message length}${message}). // // This gives context to the signed message and prevents signing of transactions. diff --git a/build/checksums.txt b/build/checksums.txt index 48a13b53e8..5df27bbf61 100644 --- a/build/checksums.txt +++ b/build/checksums.txt @@ -1,19 +1,19 @@ # This file contains sha256 checksums of optional build dependencies. -2255eb3e4e824dd7d5fcdc2e7f84534371c186312e546fb1086a34c17752f431 go1.17.2.src.tar.gz -7914497a302a132a465d33f5ee044ce05568bacdb390ab805cb75a3435a23f94 go1.17.2.darwin-amd64.tar.gz -ce8771bd3edfb5b28104084b56bbb532eeb47fbb7769c3e664c6223712c30904 go1.17.2.darwin-arm64.tar.gz -8cea5b8d1f8e8cbb58069bfed58954c71c5b1aca2f3c857765dae83bf724d0d7 go1.17.2.freebsd-386.tar.gz -c96e57218fb03e74d683ad63b1684d44c89d5e5b994f36102b33dce21b58499a go1.17.2.freebsd-amd64.tar.gz -8617f2e40d51076983502894181ae639d1d8101bfbc4d7463a2b442f239f5596 go1.17.2.linux-386.tar.gz -f242a9db6a0ad1846de7b6d94d507915d14062660616a61ef7c808a76e4f1676 go1.17.2.linux-amd64.tar.gz -a5a43c9cdabdb9f371d56951b14290eba8ce2f9b0db48fb5fc657943984fd4fc go1.17.2.linux-arm64.tar.gz -04d16105008230a9763005be05606f7eb1c683a3dbf0fbfed4034b23889cb7f2 go1.17.2.linux-armv6l.tar.gz -12e2dc7e0ffeebe77083f267ef6705fec1621cdf2ed6489b3af04a13597ed68d go1.17.2.linux-ppc64le.tar.gz -c4b2349a8d11350ca038b8c57f3cc58dc0b31284bcbed4f7fca39aeed28b4a51 go1.17.2.linux-s390x.tar.gz -8a85257a351996fdf045fe95ed5fdd6917dd48636d562dd11dedf193005a53e0 go1.17.2.windows-386.zip -fa6da0b829a66f5fab7e4e312fd6aa1b2d8f045c7ecee83b3d00f6fe5306759a go1.17.2.windows-amd64.zip -00575c85dc7a129ba892685a456b27a3f3670f71c8bfde1c5ad151f771d55df7 go1.17.2.windows-arm64.zip +3defb9a09bed042403195e872dcbc8c6fae1485963332279668ec52e80a95a2d go1.17.5.src.tar.gz +2db6a5d25815b56072465a2cacc8ed426c18f1d5fc26c1fc8c4f5a7188658264 go1.17.5.darwin-amd64.tar.gz +111f71166de0cb8089bb3e8f9f5b02d76e1bf1309256824d4062a47b0e5f98e0 go1.17.5.darwin-arm64.tar.gz +443c1cd9768df02085014f1eb034ebc7dbe032ffc8a9bb9f2e6617d037eee23c go1.17.5.freebsd-386.tar.gz +17180bdc4126acffd0ebf86d66ef5cbc3488b6734e93374fb00eb09494e006d3 go1.17.5.freebsd-amd64.tar.gz +4f4914303bc18f24fd137a97e595735308f5ce81323c7224c12466fd763fc59f go1.17.5.linux-386.tar.gz +bd78114b0d441b029c8fe0341f4910370925a4d270a6a590668840675b0c653e go1.17.5.linux-amd64.tar.gz +6f95ce3da40d9ce1355e48f31f4eb6508382415ca4d7413b1e7a3314e6430e7e go1.17.5.linux-arm64.tar.gz +aa1fb6c53b4fe72f159333362a10aca37ae938bde8adc9c6eaf2a8e87d1e47de go1.17.5.linux-armv6l.tar.gz +3d4be616e568f0a02cb7f7769bcaafda4b0969ed0f9bb4277619930b96847e70 go1.17.5.linux-ppc64le.tar.gz +8087d4fe991e82804e6485c26568c2e0ee0bfde00ceb9015dc86cb6bf84ef40b go1.17.5.linux-s390x.tar.gz +6d7b9948ee14a906b14f5cbebdfab63cd6828b0b618160847ecd3cc3470a26fe go1.17.5.windows-386.zip +671faf99cd5d81cd7e40936c0a94363c64d654faa0148d2af4bbc262555620b9 go1.17.5.windows-amd64.zip +45e88676b68e9cf364be469b5a27965397f4e339aa622c2f52c10433c56e5030 go1.17.5.windows-arm64.zip d4bd25b9814eeaa2134197dd2c7671bb791eae786d42010d9d788af20dee4bfa golangci-lint-1.42.0-darwin-amd64.tar.gz e56859c04a2ad5390c6a497b1acb1cc9329ecb1010260c6faae9b5a4c35b35ea golangci-lint-1.42.0-darwin-arm64.tar.gz diff --git a/build/ci.go b/build/ci.go index 80d4269b24..8b302511a7 100644 --- a/build/ci.go +++ b/build/ci.go @@ -33,7 +33,6 @@ Available commands are: nsis -- creates a Windows NSIS installer aar [ -local ] [ -sign key-id ] [-deploy repo] [ -upload dest ] -- creates an Android archive xcode [ -local ] [ -sign key-id ] [-deploy repo] [ -upload dest ] -- creates an iOS XCode framework - xgo [ -alltools ] [ options ] -- cross builds according to options purge [ -store blobstore ] [ -days threshold ] -- purges old archives from the blobstore For all commands, -n prevents execution of external programs (dry run mode). @@ -148,7 +147,7 @@ var ( // This is the version of go that will be downloaded by // // go run ci.go install -dlgo - dlgoVersion = "1.17.2" + dlgoVersion = "1.17.5" ) var GOBIN, _ = filepath.Abs(filepath.Join("build", "bin")) @@ -188,8 +187,6 @@ func main() { doAndroidArchive(os.Args[2:]) case "xcode": doXCodeFramework(os.Args[2:]) - case "xgo": - doXgo(os.Args[2:]) case "purge": doPurge(os.Args[2:]) default: @@ -1209,48 +1206,6 @@ func newPodMetadata(env build.Environment, archive string) podMetadata { } } -// Cross compilation - -func doXgo(cmdline []string) { - var ( - alltools = flag.Bool("alltools", false, `Flag whether we're building all known tools, or only on in particular`) - ) - flag.CommandLine.Parse(cmdline) - env := build.Env() - var tc build.GoToolchain - - // Make sure xgo is available for cross compilation - build.MustRun(tc.Install(GOBIN, "github.com/karalabe/xgo@latest")) - - // If all tools building is requested, build everything the builder wants - args := append(buildFlags(env), flag.Args()...) - - if *alltools { - args = append(args, []string{"--dest", GOBIN}...) - for _, res := range allToolsArchiveFiles { - if strings.HasPrefix(res, GOBIN) { - // Binary tool found, cross build it explicitly - args = append(args, "./"+filepath.Join("cmd", filepath.Base(res))) - build.MustRun(xgoTool(args)) - args = args[:len(args)-1] - } - } - return - } - - // Otherwise execute the explicit cross compilation - path := args[len(args)-1] - args = append(args[:len(args)-1], []string{"--dest", GOBIN, path}...) - build.MustRun(xgoTool(args)) -} - -func xgoTool(args []string) *exec.Cmd { - cmd := exec.Command(filepath.Join(GOBIN, "xgo"), args...) - cmd.Env = os.Environ() - cmd.Env = append(cmd.Env, []string{"GOBIN=" + GOBIN}...) - return cmd -} - // Binary distribution cleanups func doPurge(cmdline []string) { diff --git a/cmd/clef/main.go b/cmd/clef/main.go index 61d2811f65..3aaf898db2 100644 --- a/cmd/clef/main.go +++ b/cmd/clef/main.go @@ -898,7 +898,7 @@ func testExternalUI(api *core.SignerAPI) { addr, _ := common.NewMixedcaseAddressFromString("0x0011223344556677889900112233445566778899") data := `{"types":{"EIP712Domain":[{"name":"name","type":"string"},{"name":"version","type":"string"},{"name":"chainId","type":"uint256"},{"name":"verifyingContract","type":"address"}],"Person":[{"name":"name","type":"string"},{"name":"test","type":"uint8"},{"name":"wallet","type":"address"}],"Mail":[{"name":"from","type":"Person"},{"name":"to","type":"Person"},{"name":"contents","type":"string"}]},"primaryType":"Mail","domain":{"name":"Ether Mail","version":"1","chainId":"1","verifyingContract":"0xCCCcccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC"},"message":{"from":{"name":"Cow","test":"3","wallet":"0xcD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826"},"to":{"name":"Bob","wallet":"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB","test":"2"},"contents":"Hello, Bob!"}}` //_, err := api.SignData(ctx, accounts.MimetypeTypedData, *addr, hexutil.Encode([]byte(data))) - var typedData core.TypedData + var typedData apitypes.TypedData json.Unmarshal([]byte(data), &typedData) _, err := api.SignTypedData(ctx, *addr, typedData) expectApprove("sign 712 typed data", err) @@ -1025,7 +1025,7 @@ func GenDoc(ctx *cli.Context) { "of the work in canonicalizing and making sense of the data, and it's up to the UI to present" + "the user with the contents of the `message`" sighash, msg := accounts.TextAndHash([]byte("hello world")) - messages := []*core.NameValueType{{Name: "message", Value: msg, Typ: accounts.MimetypeTextPlain}} + messages := []*apitypes.NameValueType{{Name: "message", Value: msg, Typ: accounts.MimetypeTextPlain}} add("SignDataRequest", desc, &core.SignDataRequest{ Address: common.NewMixedcaseAddress(a), diff --git a/cmd/devp2p/dns_cloudflare.go b/cmd/devp2p/dns_cloudflare.go index 596254df91..d67aaea1a7 100644 --- a/cmd/devp2p/dns_cloudflare.go +++ b/cmd/devp2p/dns_cloudflare.go @@ -133,7 +133,8 @@ func (c *cloudflareClient) uploadRecords(name string, records map[string]string) log.Info(fmt.Sprintf("Creating %s = %q", path, val)) ttl := rootTTL if path != name { - ttl = treeNodeTTL // Max TTL permitted by Cloudflare + ttl = treeNodeTTLCloudflare // Max TTL permitted by Cloudflare + } record := cloudflare.DNSRecord{Type: "TXT", Name: path, Content: val, TTL: ttl} _, err = c.CreateDNSRecord(context.Background(), c.zoneID, record) diff --git a/cmd/devp2p/dnscmd.go b/cmd/devp2p/dnscmd.go index 66deef56ea..85f28b8cb1 100644 --- a/cmd/devp2p/dnscmd.go +++ b/cmd/devp2p/dnscmd.go @@ -115,8 +115,9 @@ var ( ) const ( - rootTTL = 30 * 60 // 30 min - treeNodeTTL = 4 * 7 * 24 * 60 * 60 // 4 weeks + rootTTL = 30 * 60 // 30 min + treeNodeTTL = 4 * 7 * 24 * 60 * 60 // 4 weeks + treeNodeTTLCloudflare = 24 * 60 * 60 // 1 day ) // dnsSync performs dnsSyncCommand. diff --git a/cmd/devp2p/internal/ethtest/helpers.go b/cmd/devp2p/internal/ethtest/helpers.go index 88d8e143c1..e695cd42d6 100644 --- a/cmd/devp2p/internal/ethtest/helpers.go +++ b/cmd/devp2p/internal/ethtest/helpers.go @@ -131,7 +131,7 @@ func (c *Conn) handshake() error { } c.negotiateEthProtocol(msg.Caps) if c.negotiatedProtoVersion == 0 { - return fmt.Errorf("unexpected eth protocol version") + return fmt.Errorf("could not negotiate protocol (remote caps: %v, local eth version: %v)", msg.Caps, c.ourHighestProtoVersion) } return nil default: diff --git a/cmd/devp2p/internal/ethtest/suite.go b/cmd/devp2p/internal/ethtest/suite.go index bbc955cd7b..28ba4aa767 100644 --- a/cmd/devp2p/internal/ethtest/suite.go +++ b/cmd/devp2p/internal/ethtest/suite.go @@ -52,35 +52,35 @@ func NewSuite(dest *enode.Node, chainfile string, genesisfile string) (*Suite, e func (s *Suite) AllEthTests() []utesting.Test { return []utesting.Test{ // status - {Name: "TestStatus", Fn: s.TestStatus}, + {Name: "TestStatus65", Fn: s.TestStatus65}, {Name: "TestStatus66", Fn: s.TestStatus66}, // get block headers - {Name: "TestGetBlockHeaders", Fn: s.TestGetBlockHeaders}, + {Name: "TestGetBlockHeaders65", Fn: s.TestGetBlockHeaders65}, {Name: "TestGetBlockHeaders66", Fn: s.TestGetBlockHeaders66}, {Name: "TestSimultaneousRequests66", Fn: s.TestSimultaneousRequests66}, {Name: "TestSameRequestID66", Fn: s.TestSameRequestID66}, {Name: "TestZeroRequestID66", Fn: s.TestZeroRequestID66}, // get block bodies - {Name: "TestGetBlockBodies", Fn: s.TestGetBlockBodies}, + {Name: "TestGetBlockBodies65", Fn: s.TestGetBlockBodies65}, {Name: "TestGetBlockBodies66", Fn: s.TestGetBlockBodies66}, // broadcast - {Name: "TestBroadcast", Fn: s.TestBroadcast}, + {Name: "TestBroadcast65", Fn: s.TestBroadcast65}, {Name: "TestBroadcast66", Fn: s.TestBroadcast66}, - {Name: "TestLargeAnnounce", Fn: s.TestLargeAnnounce}, + {Name: "TestLargeAnnounce65", Fn: s.TestLargeAnnounce65}, {Name: "TestLargeAnnounce66", Fn: s.TestLargeAnnounce66}, - {Name: "TestOldAnnounce", Fn: s.TestOldAnnounce}, + {Name: "TestOldAnnounce65", Fn: s.TestOldAnnounce65}, {Name: "TestOldAnnounce66", Fn: s.TestOldAnnounce66}, - {Name: "TestBlockHashAnnounce", Fn: s.TestBlockHashAnnounce}, + {Name: "TestBlockHashAnnounce65", Fn: s.TestBlockHashAnnounce65}, {Name: "TestBlockHashAnnounce66", Fn: s.TestBlockHashAnnounce66}, // malicious handshakes + status - {Name: "TestMaliciousHandshake", Fn: s.TestMaliciousHandshake}, - {Name: "TestMaliciousStatus", Fn: s.TestMaliciousStatus}, + {Name: "TestMaliciousHandshake65", Fn: s.TestMaliciousHandshake65}, + {Name: "TestMaliciousStatus65", Fn: s.TestMaliciousStatus65}, {Name: "TestMaliciousHandshake66", Fn: s.TestMaliciousHandshake66}, {Name: "TestMaliciousStatus66", Fn: s.TestMaliciousStatus66}, // test transactions - {Name: "TestTransaction", Fn: s.TestTransaction}, + {Name: "TestTransaction65", Fn: s.TestTransaction65}, {Name: "TestTransaction66", Fn: s.TestTransaction66}, - {Name: "TestMaliciousTx", Fn: s.TestMaliciousTx}, + {Name: "TestMaliciousTx65", Fn: s.TestMaliciousTx65}, {Name: "TestMaliciousTx66", Fn: s.TestMaliciousTx66}, {Name: "TestLargeTxRequest66", Fn: s.TestLargeTxRequest66}, {Name: "TestNewPooledTxs66", Fn: s.TestNewPooledTxs66}, @@ -89,17 +89,17 @@ func (s *Suite) AllEthTests() []utesting.Test { func (s *Suite) EthTests() []utesting.Test { return []utesting.Test{ - {Name: "TestStatus", Fn: s.TestStatus}, - {Name: "TestGetBlockHeaders", Fn: s.TestGetBlockHeaders}, - {Name: "TestGetBlockBodies", Fn: s.TestGetBlockBodies}, - {Name: "TestBroadcast", Fn: s.TestBroadcast}, - {Name: "TestLargeAnnounce", Fn: s.TestLargeAnnounce}, - {Name: "TestOldAnnounce", Fn: s.TestOldAnnounce}, - {Name: "TestBlockHashAnnounce", Fn: s.TestBlockHashAnnounce}, - {Name: "TestMaliciousHandshake", Fn: s.TestMaliciousHandshake}, - {Name: "TestMaliciousStatus", Fn: s.TestMaliciousStatus}, - {Name: "TestTransaction", Fn: s.TestTransaction}, - {Name: "TestMaliciousTx", Fn: s.TestMaliciousTx}, + {Name: "TestStatus65", Fn: s.TestStatus65}, + {Name: "TestGetBlockHeaders65", Fn: s.TestGetBlockHeaders65}, + {Name: "TestGetBlockBodies65", Fn: s.TestGetBlockBodies65}, + {Name: "TestBroadcast65", Fn: s.TestBroadcast65}, + {Name: "TestLargeAnnounce65", Fn: s.TestLargeAnnounce65}, + {Name: "TestOldAnnounce65", Fn: s.TestOldAnnounce65}, + {Name: "TestBlockHashAnnounce65", Fn: s.TestBlockHashAnnounce65}, + {Name: "TestMaliciousHandshake65", Fn: s.TestMaliciousHandshake65}, + {Name: "TestMaliciousStatus65", Fn: s.TestMaliciousStatus65}, + {Name: "TestTransaction65", Fn: s.TestTransaction65}, + {Name: "TestMaliciousTx65", Fn: s.TestMaliciousTx65}, } } @@ -130,9 +130,9 @@ var ( eth65 = false // indicates whether suite should negotiate eth65 connection or below. ) -// TestStatus attempts to connect to the given node and exchange +// TestStatus65 attempts to connect to the given node and exchange // a status message with it. -func (s *Suite) TestStatus(t *utesting.T) { +func (s *Suite) TestStatus65(t *utesting.T) { conn, err := s.dial() if err != nil { t.Fatalf("dial failed: %v", err) @@ -156,9 +156,9 @@ func (s *Suite) TestStatus66(t *utesting.T) { } } -// TestGetBlockHeaders tests whether the given node can respond to +// TestGetBlockHeaders65 tests whether the given node can respond to // a `GetBlockHeaders` request accurately. -func (s *Suite) TestGetBlockHeaders(t *utesting.T) { +func (s *Suite) TestGetBlockHeaders65(t *utesting.T) { conn, err := s.dial() if err != nil { t.Fatalf("dial failed: %v", err) @@ -392,9 +392,9 @@ func (s *Suite) TestZeroRequestID66(t *utesting.T) { } } -// TestGetBlockBodies tests whether the given node can respond to +// TestGetBlockBodies65 tests whether the given node can respond to // a `GetBlockBodies` request and that the response is accurate. -func (s *Suite) TestGetBlockBodies(t *utesting.T) { +func (s *Suite) TestGetBlockBodies65(t *utesting.T) { conn, err := s.dial() if err != nil { t.Fatalf("dial failed: %v", err) @@ -460,9 +460,9 @@ func (s *Suite) TestGetBlockBodies66(t *utesting.T) { } } -// TestBroadcast tests whether a block announcement is correctly +// TestBroadcast65 tests whether a block announcement is correctly // propagated to the given node's peer(s). -func (s *Suite) TestBroadcast(t *utesting.T) { +func (s *Suite) TestBroadcast65(t *utesting.T) { if err := s.sendNextBlock(eth65); err != nil { t.Fatalf("block broadcast failed: %v", err) } @@ -476,8 +476,8 @@ func (s *Suite) TestBroadcast66(t *utesting.T) { } } -// TestLargeAnnounce tests the announcement mechanism with a large block. -func (s *Suite) TestLargeAnnounce(t *utesting.T) { +// TestLargeAnnounce65 tests the announcement mechanism with a large block. +func (s *Suite) TestLargeAnnounce65(t *utesting.T) { nextBlock := len(s.chain.blocks) blocks := []*NewBlock{ { @@ -569,8 +569,8 @@ func (s *Suite) TestLargeAnnounce66(t *utesting.T) { } } -// TestOldAnnounce tests the announcement mechanism with an old block. -func (s *Suite) TestOldAnnounce(t *utesting.T) { +// TestOldAnnounce65 tests the announcement mechanism with an old block. +func (s *Suite) TestOldAnnounce65(t *utesting.T) { if err := s.oldAnnounce(eth65); err != nil { t.Fatal(err) } @@ -584,9 +584,9 @@ func (s *Suite) TestOldAnnounce66(t *utesting.T) { } } -// TestBlockHashAnnounce sends a new block hash announcement and expects +// TestBlockHashAnnounce65 sends a new block hash announcement and expects // the node to perform a `GetBlockHeaders` request. -func (s *Suite) TestBlockHashAnnounce(t *utesting.T) { +func (s *Suite) TestBlockHashAnnounce65(t *utesting.T) { if err := s.hashAnnounce(eth65); err != nil { t.Fatalf("block hash announcement failed: %v", err) } @@ -600,8 +600,8 @@ func (s *Suite) TestBlockHashAnnounce66(t *utesting.T) { } } -// TestMaliciousHandshake tries to send malicious data during the handshake. -func (s *Suite) TestMaliciousHandshake(t *utesting.T) { +// TestMaliciousHandshake65 tries to send malicious data during the handshake. +func (s *Suite) TestMaliciousHandshake65(t *utesting.T) { if err := s.maliciousHandshakes(t, eth65); err != nil { t.Fatal(err) } @@ -614,8 +614,8 @@ func (s *Suite) TestMaliciousHandshake66(t *utesting.T) { } } -// TestMaliciousStatus sends a status package with a large total difficulty. -func (s *Suite) TestMaliciousStatus(t *utesting.T) { +// TestMaliciousStatus65 sends a status package with a large total difficulty. +func (s *Suite) TestMaliciousStatus65(t *utesting.T) { conn, err := s.dial() if err != nil { t.Fatalf("dial failed: %v", err) @@ -641,9 +641,9 @@ func (s *Suite) TestMaliciousStatus66(t *utesting.T) { } } -// TestTransaction sends a valid transaction to the node and +// TestTransaction65 sends a valid transaction to the node and // checks if the transaction gets propagated. -func (s *Suite) TestTransaction(t *utesting.T) { +func (s *Suite) TestTransaction65(t *utesting.T) { if err := s.sendSuccessfulTxs(t, eth65); err != nil { t.Fatal(err) } @@ -657,9 +657,9 @@ func (s *Suite) TestTransaction66(t *utesting.T) { } } -// TestMaliciousTx sends several invalid transactions and tests whether +// TestMaliciousTx65 sends several invalid transactions and tests whether // the node will propagate them. -func (s *Suite) TestMaliciousTx(t *utesting.T) { +func (s *Suite) TestMaliciousTx65(t *utesting.T) { if err := s.sendMaliciousTxs(t, eth65); err != nil { t.Fatal(err) } diff --git a/cmd/devp2p/internal/v4test/discv4tests.go b/cmd/devp2p/internal/v4test/discv4tests.go index 04ad67637a..5f340ed94c 100644 --- a/cmd/devp2p/internal/v4test/discv4tests.go +++ b/cmd/devp2p/internal/v4test/discv4tests.go @@ -229,7 +229,7 @@ func PingPastExpiration(t *utesting.T) { reply, _, _ := te.read(te.l1) if reply != nil { - t.Fatal("Expected no reply, got", reply) + t.Fatalf("Expected no reply, got %v %v", reply.Name(), reply) } } @@ -247,7 +247,7 @@ func WrongPacketType(t *utesting.T) { reply, _, _ := te.read(te.l1) if reply != nil { - t.Fatal("Expected no reply, got", reply) + t.Fatalf("Expected no reply, got %v %v", reply.Name(), reply) } } @@ -282,9 +282,16 @@ func FindnodeWithoutEndpointProof(t *utesting.T) { rand.Read(req.Target[:]) te.send(te.l1, &req) - reply, _, _ := te.read(te.l1) - if reply != nil { - t.Fatal("Expected no response, got", reply) + for { + reply, _, _ := te.read(te.l1) + if reply == nil { + // No response, all good + break + } + if reply.Kind() == v4wire.PingPacket { + continue // A ping is ok, just ignore it + } + t.Fatalf("Expected no reply, got %v %v", reply.Name(), reply) } } @@ -304,7 +311,7 @@ func BasicFindnode(t *utesting.T) { t.Fatal("read find nodes", err) } if reply.Kind() != v4wire.NeighborsPacket { - t.Fatal("Expected neighbors, got", reply.Name()) + t.Fatalf("Expected neighbors, got %v %v", reply.Name(), reply) } } @@ -341,7 +348,7 @@ func UnsolicitedNeighbors(t *utesting.T) { t.Fatal("read find nodes", err) } if reply.Kind() != v4wire.NeighborsPacket { - t.Fatal("Expected neighbors, got", reply.Name()) + t.Fatalf("Expected neighbors, got %v %v", reply.Name(), reply) } nodes := reply.(*v4wire.Neighbors).Nodes if contains(nodes, encFakeKey) { diff --git a/cmd/devp2p/nodesetcmd.go b/cmd/devp2p/nodesetcmd.go index ae636f5caa..2269a44810 100644 --- a/cmd/devp2p/nodesetcmd.go +++ b/cmd/devp2p/nodesetcmd.go @@ -239,6 +239,8 @@ func ethFilter(args []string) (nodeFilter, error) { filter = forkid.NewStaticFilter(params.MumbaiChainConfig, params.MumbaiGenesisHash) case "bor-mainnet": filter = forkid.NewStaticFilter(params.BorMainnetChainConfig, params.BorMainnetGenesisHash) + case "sepolia": + filter = forkid.NewStaticFilter(params.SepoliaChainConfig, params.SepoliaGenesisHash) default: return nil, fmt.Errorf("unknown network %q", args[0]) } diff --git a/cmd/evm/internal/t8ntool/block.go b/cmd/evm/internal/t8ntool/block.go new file mode 100644 index 0000000000..d4edd33bde --- /dev/null +++ b/cmd/evm/internal/t8ntool/block.go @@ -0,0 +1,380 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of go-ethereum. +// +// go-ethereum is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// go-ethereum is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with go-ethereum. If not, see . + +package t8ntool + +import ( + "crypto/ecdsa" + "encoding/json" + "errors" + "fmt" + "math/big" + "os" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/common/math" + "github.com/ethereum/go-ethereum/consensus/clique" + "github.com/ethereum/go-ethereum/consensus/ethash" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/rlp" + "gopkg.in/urfave/cli.v1" +) + +//go:generate gencodec -type header -field-override headerMarshaling -out gen_header.go +type header struct { + ParentHash common.Hash `json:"parentHash"` + OmmerHash *common.Hash `json:"sha3Uncles"` + Coinbase *common.Address `json:"miner"` + Root common.Hash `json:"stateRoot" gencodec:"required"` + TxHash *common.Hash `json:"transactionsRoot"` + ReceiptHash *common.Hash `json:"receiptsRoot"` + Bloom types.Bloom `json:"logsBloom"` + Difficulty *big.Int `json:"difficulty"` + Number *big.Int `json:"number" gencodec:"required"` + GasLimit uint64 `json:"gasLimit" gencodec:"required"` + GasUsed uint64 `json:"gasUsed"` + Time uint64 `json:"timestamp" gencodec:"required"` + Extra []byte `json:"extraData"` + MixDigest common.Hash `json:"mixHash"` + Nonce *types.BlockNonce `json:"nonce"` + BaseFee *big.Int `json:"baseFeePerGas" rlp:"optional"` +} + +type headerMarshaling struct { + Difficulty *math.HexOrDecimal256 + Number *math.HexOrDecimal256 + GasLimit math.HexOrDecimal64 + GasUsed math.HexOrDecimal64 + Time math.HexOrDecimal64 + Extra hexutil.Bytes + BaseFee *math.HexOrDecimal256 +} + +type bbInput struct { + Header *header `json:"header,omitempty"` + OmmersRlp []string `json:"ommers,omitempty"` + TxRlp string `json:"txs,omitempty"` + Clique *cliqueInput `json:"clique,omitempty"` + + Ethash bool `json:"-"` + EthashDir string `json:"-"` + PowMode ethash.Mode `json:"-"` + Txs []*types.Transaction `json:"-"` + Ommers []*types.Header `json:"-"` +} + +type cliqueInput struct { + Key *ecdsa.PrivateKey + Voted *common.Address + Authorize *bool + Vanity common.Hash +} + +// UnmarshalJSON implements json.Unmarshaler interface. +func (c *cliqueInput) UnmarshalJSON(input []byte) error { + var x struct { + Key *common.Hash `json:"secretKey"` + Voted *common.Address `json:"voted"` + Authorize *bool `json:"authorize"` + Vanity common.Hash `json:"vanity"` + } + if err := json.Unmarshal(input, &x); err != nil { + return err + } + if x.Key == nil { + return errors.New("missing required field 'secretKey' for cliqueInput") + } + if ecdsaKey, err := crypto.ToECDSA(x.Key[:]); err != nil { + return err + } else { + c.Key = ecdsaKey + } + c.Voted = x.Voted + c.Authorize = x.Authorize + c.Vanity = x.Vanity + return nil +} + +// ToBlock converts i into a *types.Block +func (i *bbInput) ToBlock() *types.Block { + header := &types.Header{ + ParentHash: i.Header.ParentHash, + UncleHash: types.EmptyUncleHash, + Coinbase: common.Address{}, + Root: i.Header.Root, + TxHash: types.EmptyRootHash, + ReceiptHash: types.EmptyRootHash, + Bloom: i.Header.Bloom, + Difficulty: common.Big0, + Number: i.Header.Number, + GasLimit: i.Header.GasLimit, + GasUsed: i.Header.GasUsed, + Time: i.Header.Time, + Extra: i.Header.Extra, + MixDigest: i.Header.MixDigest, + BaseFee: i.Header.BaseFee, + } + + // Fill optional values. + if i.Header.OmmerHash != nil { + header.UncleHash = *i.Header.OmmerHash + } else if len(i.Ommers) != 0 { + // Calculate the ommer hash if none is provided and there are ommers to hash + header.UncleHash = types.CalcUncleHash(i.Ommers) + } + if i.Header.Coinbase != nil { + header.Coinbase = *i.Header.Coinbase + } + if i.Header.TxHash != nil { + header.TxHash = *i.Header.TxHash + } + if i.Header.ReceiptHash != nil { + header.ReceiptHash = *i.Header.ReceiptHash + } + if i.Header.Nonce != nil { + header.Nonce = *i.Header.Nonce + } + if header.Difficulty != nil { + header.Difficulty = i.Header.Difficulty + } + return types.NewBlockWithHeader(header).WithBody(i.Txs, i.Ommers) +} + +// SealBlock seals the given block using the configured engine. +func (i *bbInput) SealBlock(block *types.Block) (*types.Block, error) { + switch { + case i.Ethash: + return i.sealEthash(block) + case i.Clique != nil: + return i.sealClique(block) + default: + return block, nil + } +} + +// sealEthash seals the given block using ethash. +func (i *bbInput) sealEthash(block *types.Block) (*types.Block, error) { + if i.Header.Nonce != nil { + return nil, NewError(ErrorConfig, fmt.Errorf("sealing with ethash will overwrite provided nonce")) + } + ethashConfig := ethash.Config{ + PowMode: i.PowMode, + DatasetDir: i.EthashDir, + CacheDir: i.EthashDir, + DatasetsInMem: 1, + DatasetsOnDisk: 2, + CachesInMem: 2, + CachesOnDisk: 3, + } + engine := ethash.New(ethashConfig, nil, true) + defer engine.Close() + // Use a buffered chan for results. + // If the testmode is used, the sealer will return quickly, and complain + // "Sealing result is not read by miner" if it cannot write the result. + results := make(chan *types.Block, 1) + if err := engine.Seal(nil, block, results, nil); err != nil { + panic(fmt.Sprintf("failed to seal block: %v", err)) + } + found := <-results + return block.WithSeal(found.Header()), nil +} + +// sealClique seals the given block using clique. +func (i *bbInput) sealClique(block *types.Block) (*types.Block, error) { + // If any clique value overwrites an explicit header value, fail + // to avoid silently building a block with unexpected values. + if i.Header.Extra != nil { + return nil, NewError(ErrorConfig, fmt.Errorf("sealing with clique will overwrite provided extra data")) + } + header := block.Header() + if i.Clique.Voted != nil { + if i.Header.Coinbase != nil { + return nil, NewError(ErrorConfig, fmt.Errorf("sealing with clique and voting will overwrite provided coinbase")) + } + header.Coinbase = *i.Clique.Voted + } + if i.Clique.Authorize != nil { + if i.Header.Nonce != nil { + return nil, NewError(ErrorConfig, fmt.Errorf("sealing with clique and voting will overwrite provided nonce")) + } + if *i.Clique.Authorize { + header.Nonce = [8]byte{} + } else { + header.Nonce = [8]byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff} + } + } + // Extra is fixed 32 byte vanity and 65 byte signature + header.Extra = make([]byte, 32+65) + copy(header.Extra[0:32], i.Clique.Vanity.Bytes()[:]) + + // Sign the seal hash and fill in the rest of the extra data + h := clique.SealHash(header) + sighash, err := crypto.Sign(h[:], i.Clique.Key) + if err != nil { + return nil, err + } + copy(header.Extra[32:], sighash) + block = block.WithSeal(header) + return block, nil +} + +// BuildBlock constructs a block from the given inputs. +func BuildBlock(ctx *cli.Context) error { + // Configure the go-ethereum logger + glogger := log.NewGlogHandler(log.StreamHandler(os.Stderr, log.TerminalFormat(false))) + glogger.Verbosity(log.Lvl(ctx.Int(VerbosityFlag.Name))) + log.Root().SetHandler(glogger) + + baseDir, err := createBasedir(ctx) + if err != nil { + return NewError(ErrorIO, fmt.Errorf("failed creating output basedir: %v", err)) + } + inputData, err := readInput(ctx) + if err != nil { + return err + } + block := inputData.ToBlock() + block, err = inputData.SealBlock(block) + if err != nil { + return err + } + return dispatchBlock(ctx, baseDir, block) +} + +func readInput(ctx *cli.Context) (*bbInput, error) { + var ( + headerStr = ctx.String(InputHeaderFlag.Name) + ommersStr = ctx.String(InputOmmersFlag.Name) + txsStr = ctx.String(InputTxsRlpFlag.Name) + cliqueStr = ctx.String(SealCliqueFlag.Name) + ethashOn = ctx.Bool(SealEthashFlag.Name) + ethashDir = ctx.String(SealEthashDirFlag.Name) + ethashMode = ctx.String(SealEthashModeFlag.Name) + inputData = &bbInput{} + ) + if ethashOn && cliqueStr != "" { + return nil, NewError(ErrorConfig, fmt.Errorf("both ethash and clique sealing specified, only one may be chosen")) + } + if ethashOn { + inputData.Ethash = ethashOn + inputData.EthashDir = ethashDir + switch ethashMode { + case "normal": + inputData.PowMode = ethash.ModeNormal + case "test": + inputData.PowMode = ethash.ModeTest + case "fake": + inputData.PowMode = ethash.ModeFake + default: + return nil, NewError(ErrorConfig, fmt.Errorf("unknown pow mode: %s, supported modes: test, fake, normal", ethashMode)) + } + } + if headerStr == stdinSelector || ommersStr == stdinSelector || txsStr == stdinSelector || cliqueStr == stdinSelector { + decoder := json.NewDecoder(os.Stdin) + if err := decoder.Decode(inputData); err != nil { + return nil, NewError(ErrorJson, fmt.Errorf("failed unmarshaling stdin: %v", err)) + } + } + if cliqueStr != stdinSelector && cliqueStr != "" { + var clique cliqueInput + if err := readFile(cliqueStr, "clique", &clique); err != nil { + return nil, err + } + inputData.Clique = &clique + } + if headerStr != stdinSelector { + var env header + if err := readFile(headerStr, "header", &env); err != nil { + return nil, err + } + inputData.Header = &env + } + if ommersStr != stdinSelector && ommersStr != "" { + var ommers []string + if err := readFile(ommersStr, "ommers", &ommers); err != nil { + return nil, err + } + inputData.OmmersRlp = ommers + } + if txsStr != stdinSelector { + var txs string + if err := readFile(txsStr, "txs", &txs); err != nil { + return nil, err + } + inputData.TxRlp = txs + } + // Deserialize rlp txs and ommers + var ( + ommers = []*types.Header{} + txs = []*types.Transaction{} + ) + if inputData.TxRlp != "" { + if err := rlp.DecodeBytes(common.FromHex(inputData.TxRlp), &txs); err != nil { + return nil, NewError(ErrorRlp, fmt.Errorf("unable to decode transaction from rlp data: %v", err)) + } + inputData.Txs = txs + } + for _, str := range inputData.OmmersRlp { + type extblock struct { + Header *types.Header + Txs []*types.Transaction + Ommers []*types.Header + } + var ommer *extblock + if err := rlp.DecodeBytes(common.FromHex(str), &ommer); err != nil { + return nil, NewError(ErrorRlp, fmt.Errorf("unable to decode ommer from rlp data: %v", err)) + } + ommers = append(ommers, ommer.Header) + } + inputData.Ommers = ommers + + return inputData, nil +} + +// dispatchOutput writes the output data to either stderr or stdout, or to the specified +// files +func dispatchBlock(ctx *cli.Context, baseDir string, block *types.Block) error { + raw, _ := rlp.EncodeToBytes(block) + + type blockInfo struct { + Rlp hexutil.Bytes `json:"rlp"` + Hash common.Hash `json:"hash"` + } + var enc blockInfo + enc.Rlp = raw + enc.Hash = block.Hash() + + b, err := json.MarshalIndent(enc, "", " ") + if err != nil { + return NewError(ErrorJson, fmt.Errorf("failed marshalling output: %v", err)) + } + switch dest := ctx.String(OutputBlockFlag.Name); dest { + case "stdout": + os.Stdout.Write(b) + os.Stdout.WriteString("\n") + case "stderr": + os.Stderr.Write(b) + os.Stderr.WriteString("\n") + default: + if err := saveFile(baseDir, dest, enc); err != nil { + return err + } + } + return nil +} diff --git a/cmd/evm/internal/t8ntool/execution.go b/cmd/evm/internal/t8ntool/execution.go index fae65767be..dfdde42173 100644 --- a/cmd/evm/internal/t8ntool/execution.go +++ b/cmd/evm/internal/t8ntool/execution.go @@ -49,12 +49,13 @@ type Prestate struct { type ExecutionResult struct { StateRoot common.Hash `json:"stateRoot"` TxRoot common.Hash `json:"txRoot"` - ReceiptRoot common.Hash `json:"receiptRoot"` + ReceiptRoot common.Hash `json:"receiptsRoot"` LogsHash common.Hash `json:"logsHash"` Bloom types.Bloom `json:"logsBloom" gencodec:"required"` Receipts types.Receipts `json:"receipts"` Rejected []*rejectedTx `json:"rejected,omitempty"` Difficulty *math.HexOrDecimal256 `json:"currentDifficulty" gencodec:"required"` + GasUsed math.HexOrDecimal64 `json:"gasUsed"` } type ommer struct { @@ -96,7 +97,7 @@ type rejectedTx struct { // Apply applies a set of transactions to a pre-state func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig, txs types.Transactions, miningReward int64, - getTracerFn func(txIndex int, txHash common.Hash) (tracer vm.Tracer, err error)) (*state.StateDB, *ExecutionResult, error) { + getTracerFn func(txIndex int, txHash common.Hash) (tracer vm.EVMLogger, err error)) (*state.StateDB, *ExecutionResult, error) { // Capture errors for BLOCKHASH operation, if we haven't been supplied the // required blockhashes @@ -255,6 +256,7 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig, Receipts: receipts, Rejected: rejectedTxs, Difficulty: (*math.HexOrDecimal256)(vmContext.Difficulty), + GasUsed: (math.HexOrDecimal64)(gasUsed), } return statedb, execRs, nil } diff --git a/cmd/evm/internal/t8ntool/flags.go b/cmd/evm/internal/t8ntool/flags.go index 05b6ed1647..b6054ea562 100644 --- a/cmd/evm/internal/t8ntool/flags.go +++ b/cmd/evm/internal/t8ntool/flags.go @@ -32,7 +32,11 @@ var ( } TraceDisableMemoryFlag = cli.BoolTFlag{ Name: "trace.nomemory", - Usage: "Disable full memory dump in traces", + Usage: "Disable full memory dump in traces (deprecated)", + } + TraceEnableMemoryFlag = cli.BoolFlag{ + Name: "trace.memory", + Usage: "Enable full memory dump in traces", } TraceDisableStackFlag = cli.BoolFlag{ Name: "trace.nostack", @@ -40,7 +44,11 @@ var ( } TraceDisableReturnDataFlag = cli.BoolTFlag{ Name: "trace.noreturndata", - Usage: "Disable return data output in traces", + Usage: "Disable return data output in traces (deprecated)", + } + TraceEnableReturnDataFlag = cli.BoolFlag{ + Name: "trace.returndata", + Usage: "Enable return data output in traces", } OutputBasedir = cli.StringFlag{ Name: "output.basedir", @@ -68,6 +76,14 @@ var ( "\t - into the file ", Value: "result.json", } + OutputBlockFlag = cli.StringFlag{ + Name: "output.block", + Usage: "Determines where to put the `block` after building.\n" + + "\t`stdout` - into the stdout output\n" + + "\t`stderr` - into the stderr output\n" + + "\t - into the file ", + Value: "block.json", + } InputAllocFlag = cli.StringFlag{ Name: "input.alloc", Usage: "`stdin` or file name of where to find the prestate alloc to use.", @@ -81,10 +97,41 @@ var ( InputTxsFlag = cli.StringFlag{ Name: "input.txs", Usage: "`stdin` or file name of where to find the transactions to apply. " + - "If the file prefix is '.rlp', then the data is interpreted as an RLP list of signed transactions." + + "If the file extension is '.rlp', then the data is interpreted as an RLP list of signed transactions." + "The '.rlp' format is identical to the output.body format.", Value: "txs.json", } + InputHeaderFlag = cli.StringFlag{ + Name: "input.header", + Usage: "`stdin` or file name of where to find the block header to use.", + Value: "header.json", + } + InputOmmersFlag = cli.StringFlag{ + Name: "input.ommers", + Usage: "`stdin` or file name of where to find the list of ommer header RLPs to use.", + } + InputTxsRlpFlag = cli.StringFlag{ + Name: "input.txs", + Usage: "`stdin` or file name of where to find the transactions list in RLP form.", + Value: "txs.rlp", + } + SealCliqueFlag = cli.StringFlag{ + Name: "seal.clique", + Usage: "Seal block with Clique. `stdin` or file name of where to find the Clique sealing data.", + } + SealEthashFlag = cli.BoolFlag{ + Name: "seal.ethash", + Usage: "Seal block with ethash.", + } + SealEthashDirFlag = cli.StringFlag{ + Name: "seal.ethash.dir", + Usage: "Path to ethash DAG. If none exists, a new DAG will be generated.", + } + SealEthashModeFlag = cli.StringFlag{ + Name: "seal.ethash.mode", + Usage: "Defines the type and amount of PoW verification an ethash engine makes.", + Value: "normal", + } RewardFlag = cli.Int64Flag{ Name: "state.reward", Usage: "Mining reward. Set to -1 to disable", diff --git a/cmd/evm/internal/t8ntool/gen_header.go b/cmd/evm/internal/t8ntool/gen_header.go new file mode 100644 index 0000000000..196e49dd71 --- /dev/null +++ b/cmd/evm/internal/t8ntool/gen_header.go @@ -0,0 +1,135 @@ +// Code generated by github.com/fjl/gencodec. DO NOT EDIT. + +package t8ntool + +import ( + "encoding/json" + "errors" + "math/big" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/common/math" + "github.com/ethereum/go-ethereum/core/types" +) + +var _ = (*headerMarshaling)(nil) + +// MarshalJSON marshals as JSON. +func (h header) MarshalJSON() ([]byte, error) { + type header struct { + ParentHash common.Hash `json:"parentHash"` + OmmerHash *common.Hash `json:"sha3Uncles"` + Coinbase *common.Address `json:"miner"` + Root common.Hash `json:"stateRoot" gencodec:"required"` + TxHash *common.Hash `json:"transactionsRoot"` + ReceiptHash *common.Hash `json:"receiptsRoot"` + Bloom types.Bloom `json:"logsBloom"` + Difficulty *math.HexOrDecimal256 `json:"difficulty"` + Number *math.HexOrDecimal256 `json:"number" gencodec:"required"` + GasLimit math.HexOrDecimal64 `json:"gasLimit" gencodec:"required"` + GasUsed math.HexOrDecimal64 `json:"gasUsed"` + Time math.HexOrDecimal64 `json:"timestamp" gencodec:"required"` + Extra hexutil.Bytes `json:"extraData"` + MixDigest common.Hash `json:"mixHash"` + Nonce *types.BlockNonce `json:"nonce"` + BaseFee *math.HexOrDecimal256 `json:"baseFeePerGas" rlp:"optional"` + } + var enc header + enc.ParentHash = h.ParentHash + enc.OmmerHash = h.OmmerHash + enc.Coinbase = h.Coinbase + enc.Root = h.Root + enc.TxHash = h.TxHash + enc.ReceiptHash = h.ReceiptHash + enc.Bloom = h.Bloom + enc.Difficulty = (*math.HexOrDecimal256)(h.Difficulty) + enc.Number = (*math.HexOrDecimal256)(h.Number) + enc.GasLimit = math.HexOrDecimal64(h.GasLimit) + enc.GasUsed = math.HexOrDecimal64(h.GasUsed) + enc.Time = math.HexOrDecimal64(h.Time) + enc.Extra = h.Extra + enc.MixDigest = h.MixDigest + enc.Nonce = h.Nonce + enc.BaseFee = (*math.HexOrDecimal256)(h.BaseFee) + return json.Marshal(&enc) +} + +// UnmarshalJSON unmarshals from JSON. +func (h *header) UnmarshalJSON(input []byte) error { + type header struct { + ParentHash *common.Hash `json:"parentHash"` + OmmerHash *common.Hash `json:"sha3Uncles"` + Coinbase *common.Address `json:"miner"` + Root *common.Hash `json:"stateRoot" gencodec:"required"` + TxHash *common.Hash `json:"transactionsRoot"` + ReceiptHash *common.Hash `json:"receiptsRoot"` + Bloom *types.Bloom `json:"logsBloom"` + Difficulty *math.HexOrDecimal256 `json:"difficulty"` + Number *math.HexOrDecimal256 `json:"number" gencodec:"required"` + GasLimit *math.HexOrDecimal64 `json:"gasLimit" gencodec:"required"` + GasUsed *math.HexOrDecimal64 `json:"gasUsed"` + Time *math.HexOrDecimal64 `json:"timestamp" gencodec:"required"` + Extra *hexutil.Bytes `json:"extraData"` + MixDigest *common.Hash `json:"mixHash"` + Nonce *types.BlockNonce `json:"nonce"` + BaseFee *math.HexOrDecimal256 `json:"baseFeePerGas" rlp:"optional"` + } + var dec header + if err := json.Unmarshal(input, &dec); err != nil { + return err + } + if dec.ParentHash != nil { + h.ParentHash = *dec.ParentHash + } + if dec.OmmerHash != nil { + h.OmmerHash = dec.OmmerHash + } + if dec.Coinbase != nil { + h.Coinbase = dec.Coinbase + } + if dec.Root == nil { + return errors.New("missing required field 'stateRoot' for header") + } + h.Root = *dec.Root + if dec.TxHash != nil { + h.TxHash = dec.TxHash + } + if dec.ReceiptHash != nil { + h.ReceiptHash = dec.ReceiptHash + } + if dec.Bloom != nil { + h.Bloom = *dec.Bloom + } + if dec.Difficulty != nil { + h.Difficulty = (*big.Int)(dec.Difficulty) + } + if dec.Number == nil { + return errors.New("missing required field 'number' for header") + } + h.Number = (*big.Int)(dec.Number) + if dec.GasLimit == nil { + return errors.New("missing required field 'gasLimit' for header") + } + h.GasLimit = uint64(*dec.GasLimit) + if dec.GasUsed != nil { + h.GasUsed = uint64(*dec.GasUsed) + } + if dec.Time == nil { + return errors.New("missing required field 'timestamp' for header") + } + h.Time = uint64(*dec.Time) + if dec.Extra != nil { + h.Extra = *dec.Extra + } + if dec.MixDigest != nil { + h.MixDigest = *dec.MixDigest + } + if dec.Nonce != nil { + h.Nonce = dec.Nonce + } + if dec.BaseFee != nil { + h.BaseFee = (*big.Int)(dec.BaseFee) + } + return nil +} diff --git a/cmd/evm/internal/t8ntool/transaction.go b/cmd/evm/internal/t8ntool/transaction.go index b89ca9be92..6f1c964ada 100644 --- a/cmd/evm/internal/t8ntool/transaction.go +++ b/cmd/evm/internal/t8ntool/transaction.go @@ -36,17 +36,19 @@ import ( ) type result struct { - Error error - Address common.Address - Hash common.Hash + Error error + Address common.Address + Hash common.Hash + IntrinsicGas uint64 } // MarshalJSON marshals as JSON with a hash. func (r *result) MarshalJSON() ([]byte, error) { type xx struct { - Error string `json:"error,omitempty"` - Address *common.Address `json:"address,omitempty"` - Hash *common.Hash `json:"hash,omitempty"` + Error string `json:"error,omitempty"` + Address *common.Address `json:"address,omitempty"` + Hash *common.Hash `json:"hash,omitempty"` + IntrinsicGas hexutil.Uint64 `json:"intrinsicGas,omitempty"` } var out xx if r.Error != nil { @@ -58,6 +60,7 @@ func (r *result) MarshalJSON() ([]byte, error) { if r.Hash != (common.Hash{}) { out.Hash = &r.Hash } + out.IntrinsicGas = hexutil.Uint64(r.IntrinsicGas) return json.Marshal(out) } @@ -79,7 +82,7 @@ func Transaction(ctx *cli.Context) error { ) // Construct the chainconfig if cConf, _, err := tests.GetChainConfig(ctx.String(ForknameFlag.Name)); err != nil { - return NewError(ErrorVMConfig, fmt.Errorf("failed constructing chain configuration: %v", err)) + return NewError(ErrorConfig, fmt.Errorf("failed constructing chain configuration: %v", err)) } else { chainConfig = cConf } @@ -118,6 +121,9 @@ func Transaction(ctx *cli.Context) error { } var results []result for it.Next() { + if err := it.Err(); err != nil { + return NewError(ErrorIO, err) + } var tx types.Transaction err := rlp.DecodeBytes(it.Value(), &tx) if err != nil { @@ -132,12 +138,38 @@ func Transaction(ctx *cli.Context) error { } else { r.Address = sender } - + // Check intrinsic gas if gas, err := core.IntrinsicGas(tx.Data(), tx.AccessList(), tx.To() == nil, chainConfig.IsHomestead(new(big.Int)), chainConfig.IsIstanbul(new(big.Int))); err != nil { r.Error = err - } else if tx.Gas() < gas { - r.Error = fmt.Errorf("%w: have %d, want %d", core.ErrIntrinsicGas, tx.Gas(), gas) + results = append(results, r) + continue + } else { + r.IntrinsicGas = gas + if tx.Gas() < gas { + r.Error = fmt.Errorf("%w: have %d, want %d", core.ErrIntrinsicGas, tx.Gas(), gas) + results = append(results, r) + continue + } + } + // Validate <256bit fields + switch { + case tx.Nonce()+1 < tx.Nonce(): + r.Error = errors.New("nonce exceeds 2^64-1") + case tx.Value().BitLen() > 256: + r.Error = errors.New("value exceeds 256 bits") + case tx.GasPrice().BitLen() > 256: + r.Error = errors.New("gasPrice exceeds 256 bits") + case tx.GasTipCap().BitLen() > 256: + r.Error = errors.New("maxPriorityFeePerGas exceeds 256 bits") + case tx.GasFeeCap().BitLen() > 256: + r.Error = errors.New("maxFeePerGas exceeds 256 bits") + case tx.GasFeeCap().Cmp(tx.GasTipCap()) < 0: + r.Error = errors.New("maxFeePerGas < maxPriorityFeePerGas") + case new(big.Int).Mul(tx.GasPrice(), new(big.Int).SetUint64(tx.Gas())).BitLen() > 256: + r.Error = errors.New("gas * gasPrice exceeds 256 bits") + case new(big.Int).Mul(tx.GasFeeCap(), new(big.Int).SetUint64(tx.Gas())).BitLen() > 256: + r.Error = errors.New("gas * maxFeePerGas exceeds 256 bits") } results = append(results, r) } diff --git a/cmd/evm/internal/t8ntool/transition.go b/cmd/evm/internal/t8ntool/transition.go index 88a9c5e622..11d71e4ce5 100644 --- a/cmd/evm/internal/t8ntool/transition.go +++ b/cmd/evm/internal/t8ntool/transition.go @@ -34,6 +34,7 @@ import ( "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/eth/tracers/logger" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rlp" @@ -43,11 +44,12 @@ import ( const ( ErrorEVM = 2 - ErrorVMConfig = 3 + ErrorConfig = 3 ErrorMissingBlockhash = 4 ErrorJson = 10 ErrorIO = 11 + ErrorRlp = 12 stdinSelector = "stdin" ) @@ -88,28 +90,33 @@ func Transition(ctx *cli.Context) error { log.Root().SetHandler(glogger) var ( - err error - tracer vm.Tracer - baseDir = "" + err error + tracer vm.EVMLogger ) - var getTracer func(txIndex int, txHash common.Hash) (vm.Tracer, error) + var getTracer func(txIndex int, txHash common.Hash) (vm.EVMLogger, error) - // If user specified a basedir, make sure it exists - if ctx.IsSet(OutputBasedir.Name) { - if base := ctx.String(OutputBasedir.Name); len(base) > 0 { - err := os.MkdirAll(base, 0755) // //rw-r--r-- - if err != nil { - return NewError(ErrorIO, fmt.Errorf("failed creating output basedir: %v", err)) - } - baseDir = base - } + baseDir, err := createBasedir(ctx) + if err != nil { + return NewError(ErrorIO, fmt.Errorf("failed creating output basedir: %v", err)) } if ctx.Bool(TraceFlag.Name) { + if ctx.IsSet(TraceDisableMemoryFlag.Name) && ctx.IsSet(TraceEnableMemoryFlag.Name) { + return NewError(ErrorConfig, fmt.Errorf("can't use both flags --%s and --%s", TraceDisableMemoryFlag.Name, TraceEnableMemoryFlag.Name)) + } + if ctx.IsSet(TraceDisableReturnDataFlag.Name) && ctx.IsSet(TraceEnableReturnDataFlag.Name) { + return NewError(ErrorConfig, fmt.Errorf("can't use both flags --%s and --%s", TraceDisableReturnDataFlag.Name, TraceEnableReturnDataFlag.Name)) + } + if ctx.IsSet(TraceDisableMemoryFlag.Name) { + log.Warn(fmt.Sprintf("--%s has been deprecated in favour of --%s", TraceDisableMemoryFlag.Name, TraceEnableMemoryFlag.Name)) + } + if ctx.IsSet(TraceDisableReturnDataFlag.Name) { + log.Warn(fmt.Sprintf("--%s has been deprecated in favour of --%s", TraceDisableReturnDataFlag.Name, TraceEnableReturnDataFlag.Name)) + } // Configure the EVM logger - logConfig := &vm.LogConfig{ + logConfig := &logger.Config{ DisableStack: ctx.Bool(TraceDisableStackFlag.Name), - EnableMemory: !ctx.Bool(TraceDisableMemoryFlag.Name), - EnableReturnData: !ctx.Bool(TraceDisableReturnDataFlag.Name), + EnableMemory: !ctx.Bool(TraceDisableMemoryFlag.Name) || ctx.Bool(TraceEnableMemoryFlag.Name), + EnableReturnData: !ctx.Bool(TraceDisableReturnDataFlag.Name) || ctx.Bool(TraceEnableReturnDataFlag.Name), Debug: true, } var prevFile *os.File @@ -119,7 +126,7 @@ func Transition(ctx *cli.Context) error { prevFile.Close() } }() - getTracer = func(txIndex int, txHash common.Hash) (vm.Tracer, error) { + getTracer = func(txIndex int, txHash common.Hash) (vm.EVMLogger, error) { if prevFile != nil { prevFile.Close() } @@ -128,10 +135,10 @@ func Transition(ctx *cli.Context) error { return nil, NewError(ErrorIO, fmt.Errorf("failed creating trace-file: %v", err)) } prevFile = traceFile - return vm.NewJSONLogger(logConfig, traceFile), nil + return logger.NewJSONLogger(logConfig, traceFile), nil } } else { - getTracer = func(txIndex int, txHash common.Hash) (tracer vm.Tracer, err error) { + getTracer = func(txIndex int, txHash common.Hash) (tracer vm.EVMLogger, err error) { return nil, nil } } @@ -155,29 +162,17 @@ func Transition(ctx *cli.Context) error { } } if allocStr != stdinSelector { - inFile, err := os.Open(allocStr) - if err != nil { - return NewError(ErrorIO, fmt.Errorf("failed reading alloc file: %v", err)) - } - defer inFile.Close() - decoder := json.NewDecoder(inFile) - if err := decoder.Decode(&inputData.Alloc); err != nil { - return NewError(ErrorJson, fmt.Errorf("failed unmarshaling alloc-file: %v", err)) + if err := readFile(allocStr, "alloc", &inputData.Alloc); err != nil { + return err } } prestate.Pre = inputData.Alloc // Set the block environment if envStr != stdinSelector { - inFile, err := os.Open(envStr) - if err != nil { - return NewError(ErrorIO, fmt.Errorf("failed reading env file: %v", err)) - } - defer inFile.Close() - decoder := json.NewDecoder(inFile) var env stEnv - if err := decoder.Decode(&env); err != nil { - return NewError(ErrorJson, fmt.Errorf("failed unmarshaling env-file: %v", err)) + if err := readFile(envStr, "env", &env); err != nil { + return err } inputData.Env = &env } @@ -190,7 +185,7 @@ func Transition(ctx *cli.Context) error { // Construct the chainconfig var chainConfig *params.ChainConfig if cConf, extraEips, err := tests.GetChainConfig(ctx.String(ForknameFlag.Name)); err != nil { - return NewError(ErrorVMConfig, fmt.Errorf("failed constructing chain configuration: %v", err)) + return NewError(ErrorConfig, fmt.Errorf("failed constructing chain configuration: %v", err)) } else { chainConfig = cConf vmConfig.ExtraEips = extraEips @@ -254,18 +249,18 @@ func Transition(ctx *cli.Context) error { // Sanity check, to not `panic` in state_transition if chainConfig.IsLondon(big.NewInt(int64(prestate.Env.Number))) { if prestate.Env.BaseFee == nil { - return NewError(ErrorVMConfig, errors.New("EIP-1559 config but missing 'currentBaseFee' in env section")) + return NewError(ErrorConfig, errors.New("EIP-1559 config but missing 'currentBaseFee' in env section")) } } if env := prestate.Env; env.Difficulty == nil { // If difficulty was not provided by caller, we need to calculate it. switch { case env.ParentDifficulty == nil: - return NewError(ErrorVMConfig, errors.New("currentDifficulty was not provided, and cannot be calculated due to missing parentDifficulty")) + return NewError(ErrorConfig, errors.New("currentDifficulty was not provided, and cannot be calculated due to missing parentDifficulty")) case env.Number == 0: - return NewError(ErrorVMConfig, errors.New("currentDifficulty needs to be provided for block number 0")) + return NewError(ErrorConfig, errors.New("currentDifficulty needs to be provided for block number 0")) case env.Timestamp <= env.ParentTimestamp: - return NewError(ErrorVMConfig, fmt.Errorf("currentDifficulty cannot be calculated -- currentTime (%d) needs to be after parent time (%d)", + return NewError(ErrorConfig, fmt.Errorf("currentDifficulty cannot be calculated -- currentTime (%d) needs to be after parent time (%d)", env.Timestamp, env.ParentTimestamp)) } prestate.Env.Difficulty = calcDifficulty(chainConfig, env.Number, env.Timestamp, @@ -286,27 +281,34 @@ func Transition(ctx *cli.Context) error { // txWithKey is a helper-struct, to allow us to use the types.Transaction along with // a `secretKey`-field, for input type txWithKey struct { - key *ecdsa.PrivateKey - tx *types.Transaction + key *ecdsa.PrivateKey + tx *types.Transaction + protected bool } func (t *txWithKey) UnmarshalJSON(input []byte) error { - // Read the secretKey, if present - type sKey struct { - Key *common.Hash `json:"secretKey"` + // Read the metadata, if present + type txMetadata struct { + Key *common.Hash `json:"secretKey"` + Protected *bool `json:"protected"` } - var key sKey - if err := json.Unmarshal(input, &key); err != nil { + var data txMetadata + if err := json.Unmarshal(input, &data); err != nil { return err } - if key.Key != nil { - k := key.Key.Hex()[2:] + if data.Key != nil { + k := data.Key.Hex()[2:] if ecdsaKey, err := crypto.HexToECDSA(k); err != nil { return err } else { t.key = ecdsaKey } } + if data.Protected != nil { + t.protected = *data.Protected + } else { + t.protected = true + } // Now, read the transaction itself var tx types.Transaction if err := json.Unmarshal(input, &tx); err != nil { @@ -335,7 +337,15 @@ func signUnsignedTransactions(txs []*txWithKey, signer types.Signer) (types.Tran v, r, s := tx.RawSignatureValues() if key != nil && v.BitLen()+r.BitLen()+s.BitLen() == 0 { // This transaction needs to be signed - signed, err := types.SignTx(tx, signer, key) + var ( + signed *types.Transaction + err error + ) + if txWithKey.protected { + signed, err = types.SignTx(tx, signer, key) + } else { + signed, err = types.SignTx(tx, types.FrontierSigner{}, key) + } if err != nil { return nil, NewError(ErrorJson, fmt.Errorf("tx %d: failed to sign tx: %v", i, err)) } diff --git a/cmd/evm/internal/t8ntool/utils.go b/cmd/evm/internal/t8ntool/utils.go new file mode 100644 index 0000000000..1c54f09bf4 --- /dev/null +++ b/cmd/evm/internal/t8ntool/utils.go @@ -0,0 +1,54 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of go-ethereum. +// +// go-ethereum is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// go-ethereum is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with go-ethereum. If not, see . + +package t8ntool + +import ( + "encoding/json" + "fmt" + "os" + + "gopkg.in/urfave/cli.v1" +) + +// readFile reads the json-data in the provided path and marshals into dest. +func readFile(path, desc string, dest interface{}) error { + inFile, err := os.Open(path) + if err != nil { + return NewError(ErrorIO, fmt.Errorf("failed reading %s file: %v", desc, err)) + } + defer inFile.Close() + decoder := json.NewDecoder(inFile) + if err := decoder.Decode(dest); err != nil { + return NewError(ErrorJson, fmt.Errorf("failed unmarshaling %s file: %v", desc, err)) + } + return nil +} + +// createBasedir makes sure the basedir exists, if user specified one. +func createBasedir(ctx *cli.Context) (string, error) { + baseDir := "" + if ctx.IsSet(OutputBasedir.Name) { + if base := ctx.String(OutputBasedir.Name); len(base) > 0 { + err := os.MkdirAll(base, 0755) // //rw-r--r-- + if err != nil { + return "", err + } + baseDir = base + } + } + return baseDir, nil +} diff --git a/cmd/evm/main.go b/cmd/evm/main.go index 26064efc3c..2f404d48e9 100644 --- a/cmd/evm/main.go +++ b/cmd/evm/main.go @@ -139,8 +139,10 @@ var stateTransitionCommand = cli.Command{ Flags: []cli.Flag{ t8ntool.TraceFlag, t8ntool.TraceDisableMemoryFlag, + t8ntool.TraceEnableMemoryFlag, t8ntool.TraceDisableStackFlag, t8ntool.TraceDisableReturnDataFlag, + t8ntool.TraceEnableReturnDataFlag, t8ntool.OutputBasedir, t8ntool.OutputAllocFlag, t8ntool.OutputResultFlag, @@ -167,6 +169,25 @@ var transactionCommand = cli.Command{ }, } +var blockBuilderCommand = cli.Command{ + Name: "block-builder", + Aliases: []string{"b11r"}, + Usage: "builds a block", + Action: t8ntool.BuildBlock, + Flags: []cli.Flag{ + t8ntool.OutputBasedir, + t8ntool.OutputBlockFlag, + t8ntool.InputHeaderFlag, + t8ntool.InputOmmersFlag, + t8ntool.InputTxsRlpFlag, + t8ntool.SealCliqueFlag, + t8ntool.SealEthashFlag, + t8ntool.SealEthashDirFlag, + t8ntool.SealEthashModeFlag, + t8ntool.VerbosityFlag, + }, +} + func init() { app.Flags = []cli.Flag{ BenchFlag, @@ -200,6 +221,7 @@ func init() { stateTestCommand, stateTransitionCommand, transactionCommand, + blockBuilderCommand, } cli.CommandHelpTemplate = flags.OriginCommandHelpTemplate } diff --git a/cmd/evm/runner.go b/cmd/evm/runner.go index cedbd22815..889de43e0a 100644 --- a/cmd/evm/runner.go +++ b/cmd/evm/runner.go @@ -36,6 +36,7 @@ import ( "github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/core/vm/runtime" + "github.com/ethereum/go-ethereum/eth/tracers/logger" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/params" "gopkg.in/urfave/cli.v1" @@ -107,7 +108,7 @@ func runCmd(ctx *cli.Context) error { glogger := log.NewGlogHandler(log.StreamHandler(os.Stderr, log.TerminalFormat(false))) glogger.Verbosity(log.Lvl(ctx.GlobalInt(VerbosityFlag.Name))) log.Root().SetHandler(glogger) - logconfig := &vm.LogConfig{ + logconfig := &logger.Config{ EnableMemory: !ctx.GlobalBool(DisableMemoryFlag.Name), DisableStack: ctx.GlobalBool(DisableStackFlag.Name), DisableStorage: ctx.GlobalBool(DisableStorageFlag.Name), @@ -116,8 +117,8 @@ func runCmd(ctx *cli.Context) error { } var ( - tracer vm.Tracer - debugLogger *vm.StructLogger + tracer vm.EVMLogger + debugLogger *logger.StructLogger statedb *state.StateDB chainConfig *params.ChainConfig sender = common.BytesToAddress([]byte("sender")) @@ -125,12 +126,12 @@ func runCmd(ctx *cli.Context) error { genesisConfig *core.Genesis ) if ctx.GlobalBool(MachineFlag.Name) { - tracer = vm.NewJSONLogger(logconfig, os.Stdout) + tracer = logger.NewJSONLogger(logconfig, os.Stdout) } else if ctx.GlobalBool(DebugFlag.Name) { - debugLogger = vm.NewStructLogger(logconfig) + debugLogger = logger.NewStructLogger(logconfig) tracer = debugLogger } else { - debugLogger = vm.NewStructLogger(logconfig) + debugLogger = logger.NewStructLogger(logconfig) } if ctx.GlobalString(GenesisFlag.Name) != "" { gen := readGenesis(ctx.GlobalString(GenesisFlag.Name)) @@ -288,10 +289,10 @@ func runCmd(ctx *cli.Context) error { if ctx.GlobalBool(DebugFlag.Name) { if debugLogger != nil { fmt.Fprintln(os.Stderr, "#### TRACE ####") - vm.WriteTrace(os.Stderr, debugLogger.StructLogs()) + logger.WriteTrace(os.Stderr, debugLogger.StructLogs()) } fmt.Fprintln(os.Stderr, "#### LOGS ####") - vm.WriteLogs(os.Stderr, statedb.Logs()) + logger.WriteLogs(os.Stderr, statedb.Logs()) } if bench || ctx.GlobalBool(StatDumpFlag.Name) { diff --git a/cmd/evm/staterunner.go b/cmd/evm/staterunner.go index ab27046091..90596d9b3c 100644 --- a/cmd/evm/staterunner.go +++ b/cmd/evm/staterunner.go @@ -25,6 +25,7 @@ import ( "github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/vm" + "github.com/ethereum/go-ethereum/eth/tracers/logger" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/tests" @@ -58,26 +59,26 @@ func stateTestCmd(ctx *cli.Context) error { log.Root().SetHandler(glogger) // Configure the EVM logger - config := &vm.LogConfig{ + config := &logger.Config{ EnableMemory: !ctx.GlobalBool(DisableMemoryFlag.Name), DisableStack: ctx.GlobalBool(DisableStackFlag.Name), DisableStorage: ctx.GlobalBool(DisableStorageFlag.Name), EnableReturnData: !ctx.GlobalBool(DisableReturnDataFlag.Name), } var ( - tracer vm.Tracer - debugger *vm.StructLogger + tracer vm.EVMLogger + debugger *logger.StructLogger ) switch { case ctx.GlobalBool(MachineFlag.Name): - tracer = vm.NewJSONLogger(config, os.Stderr) + tracer = logger.NewJSONLogger(config, os.Stderr) case ctx.GlobalBool(DebugFlag.Name): - debugger = vm.NewStructLogger(config) + debugger = logger.NewStructLogger(config) tracer = debugger default: - debugger = vm.NewStructLogger(config) + debugger = logger.NewStructLogger(config) } // Load the test content from the input file src, err := ioutil.ReadFile(ctx.Args().First()) @@ -118,7 +119,7 @@ func stateTestCmd(ctx *cli.Context) error { if ctx.GlobalBool(DebugFlag.Name) { if debugger != nil { fmt.Fprintln(os.Stderr, "#### TRACE ####") - vm.WriteTrace(os.Stderr, debugger.StructLogs()) + logger.WriteTrace(os.Stderr, debugger.StructLogs()) } } } diff --git a/cmd/evm/t8n_test.go b/cmd/evm/t8n_test.go index 325e0fac6e..3f0bd3185f 100644 --- a/cmd/evm/t8n_test.go +++ b/cmd/evm/t8n_test.go @@ -9,6 +9,7 @@ import ( "testing" "github.com/docker/docker/pkg/reexec" + "github.com/ethereum/go-ethereum/cmd/evm/internal/t8ntool" "github.com/ethereum/go-ethereum/internal/cmdtest" ) @@ -130,7 +131,7 @@ func TestT8n(t *testing.T) { output: t8nOutput{alloc: true, result: true}, expExitCode: 4, }, - { // Ommer test + { // Uncle test base: "./testdata/5", input: t8nInput{ "alloc.json", "txs.json", "env.json", "Byzantium", "0x80", @@ -170,13 +171,53 @@ func TestT8n(t *testing.T) { output: t8nOutput{result: true}, expOut: "exp2.json", }, + { // Difficulty calculation - with ommers + Berlin + base: "./testdata/14", + input: t8nInput{ + "alloc.json", "txs.json", "env.uncles.json", "Berlin", "", + }, + output: t8nOutput{result: true}, + expOut: "exp_berlin.json", + }, + { // Difficulty calculation on arrow glacier + base: "./testdata/19", + input: t8nInput{ + "alloc.json", "txs.json", "env.json", "London", "", + }, + output: t8nOutput{result: true}, + expOut: "exp_london.json", + }, + { // Difficulty calculation on arrow glacier + base: "./testdata/19", + input: t8nInput{ + "alloc.json", "txs.json", "env.json", "ArrowGlacier", "", + }, + output: t8nOutput{result: true}, + expOut: "exp_arrowglacier.json", + }, + { // Sign unprotected (pre-EIP155) transaction + base: "./testdata/23", + input: t8nInput{ + "alloc.json", "txs.json", "env.json", "Berlin", "", + }, + output: t8nOutput{result: true}, + expOut: "exp.json", + }, } { args := []string{"t8n"} args = append(args, tc.output.get()...) args = append(args, tc.input.get(tc.base)...) + var qArgs []string // quoted args for debugging purposes + for _, arg := range args { + if len(arg) == 0 { + qArgs = append(qArgs, `""`) + } else { + qArgs = append(qArgs, arg) + } + } + tt.Logf("args: %v\n", strings.Join(qArgs, " ")) tt.Run("evm-test", args...) - tt.Logf("args: %v\n", strings.Join(args, " ")) // Compare the expected output, if provided if tc.expOut != "" { want, err := os.ReadFile(fmt.Sprintf("%v/%v", tc.base, tc.expOut)) @@ -257,6 +298,22 @@ func TestT9n(t *testing.T) { }, expOut: "exp.json", }, + { // Transactions with value exceeding 256 bits + base: "./testdata/17", + input: t9nInput{ + inTxs: "signed_txs.rlp", + stFork: "London", + }, + expOut: "exp.json", + }, + { // Invalid RLP + base: "./testdata/18", + input: t9nInput{ + inTxs: "invalid.rlp", + stFork: "London", + }, + expExitCode: t8ntool.ErrorIO, + }, } { args := []string{"t9n"} @@ -287,6 +344,126 @@ func TestT9n(t *testing.T) { } } +type b11rInput struct { + inEnv string + inOmmersRlp string + inTxsRlp string + inClique string + ethash bool + ethashMode string + ethashDir string +} + +func (args *b11rInput) get(base string) []string { + var out []string + if opt := args.inEnv; opt != "" { + out = append(out, "--input.header") + out = append(out, fmt.Sprintf("%v/%v", base, opt)) + } + if opt := args.inOmmersRlp; opt != "" { + out = append(out, "--input.ommers") + out = append(out, fmt.Sprintf("%v/%v", base, opt)) + } + if opt := args.inTxsRlp; opt != "" { + out = append(out, "--input.txs") + out = append(out, fmt.Sprintf("%v/%v", base, opt)) + } + if opt := args.inClique; opt != "" { + out = append(out, "--seal.clique") + out = append(out, fmt.Sprintf("%v/%v", base, opt)) + } + if args.ethash { + out = append(out, "--seal.ethash") + } + if opt := args.ethashMode; opt != "" { + out = append(out, "--seal.ethash.mode") + out = append(out, fmt.Sprintf("%v/%v", base, opt)) + } + if opt := args.ethashDir; opt != "" { + out = append(out, "--seal.ethash.dir") + out = append(out, fmt.Sprintf("%v/%v", base, opt)) + } + out = append(out, "--output.block") + out = append(out, "stdout") + return out +} + +func TestB11r(t *testing.T) { + tt := new(testT8n) + tt.TestCmd = cmdtest.NewTestCmd(t, tt) + for i, tc := range []struct { + base string + input b11rInput + expExitCode int + expOut string + }{ + { // unsealed block + base: "./testdata/20", + input: b11rInput{ + inEnv: "header.json", + inOmmersRlp: "ommers.json", + inTxsRlp: "txs.rlp", + }, + expOut: "exp.json", + }, + { // ethash test seal + base: "./testdata/21", + input: b11rInput{ + inEnv: "header.json", + inOmmersRlp: "ommers.json", + inTxsRlp: "txs.rlp", + }, + expOut: "exp.json", + }, + { // clique test seal + base: "./testdata/21", + input: b11rInput{ + inEnv: "header.json", + inOmmersRlp: "ommers.json", + inTxsRlp: "txs.rlp", + inClique: "clique.json", + }, + expOut: "exp-clique.json", + }, + { // block with ommers + base: "./testdata/22", + input: b11rInput{ + inEnv: "header.json", + inOmmersRlp: "ommers.json", + inTxsRlp: "txs.rlp", + }, + expOut: "exp.json", + }, + } { + + args := []string{"b11r"} + args = append(args, tc.input.get(tc.base)...) + + tt.Run("evm-test", args...) + tt.Logf("args:\n go run . %v\n", strings.Join(args, " ")) + // Compare the expected output, if provided + if tc.expOut != "" { + want, err := os.ReadFile(fmt.Sprintf("%v/%v", tc.base, tc.expOut)) + if err != nil { + t.Fatalf("test %d: could not read expected output: %v", i, err) + } + have := tt.Output() + ok, err := cmpJson(have, want) + switch { + case err != nil: + t.Logf(string(have)) + t.Fatalf("test %d, json parsing failed: %v", i, err) + case !ok: + t.Fatalf("test %d: output wrong, have \n%v\nwant\n%v\n", i, string(have), string(want)) + } + } + tt.WaitExit() + if have, want := tt.ExitStatus(), tc.expExitCode; have != want { + t.Fatalf("test %d: wrong exit code, have %d, want %d", i, have, want) + } + } +} + // cmpJson compares the JSON in two byte slices. func cmpJson(a, b []byte) (bool, error) { var j, j2 interface{} diff --git a/cmd/evm/testdata/1/exp.json b/cmd/evm/testdata/1/exp.json index 17d2f8267c..7d3805012d 100644 --- a/cmd/evm/testdata/1/exp.json +++ b/cmd/evm/testdata/1/exp.json @@ -15,7 +15,7 @@ "result": { "stateRoot": "0x84208a19bc2b46ada7445180c1db162be5b39b9abc8c0a54b05d32943eae4e13", "txRoot": "0xc4761fd7b87ff2364c7c60b6c5c8d02e522e815328aaea3f20e3b7b7ef52c42d", - "receiptRoot": "0x056b23fbba480696b65fe5a59b8f2148a1299103c4f57df839233af2cf4ca2d2", + "receiptsRoot": "0x056b23fbba480696b65fe5a59b8f2148a1299103c4f57df839233af2cf4ca2d2", "logsHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "receipts": [ @@ -38,6 +38,7 @@ "error": "nonce too low: address 0x8A8eAFb1cf62BfBeb1741769DAE1a9dd47996192, tx: 0 state: 1" } ], - "currentDifficulty": "0x20000" + "currentDifficulty": "0x20000", + "gasUsed": "0x5208" } -} \ No newline at end of file +} diff --git a/cmd/evm/testdata/13/exp2.json b/cmd/evm/testdata/13/exp2.json index 01ab59e845..ba8c9f865b 100644 --- a/cmd/evm/testdata/13/exp2.json +++ b/cmd/evm/testdata/13/exp2.json @@ -2,7 +2,7 @@ "result": { "stateRoot": "0xe4b924a6adb5959fccf769d5b7bb2f6359e26d1e76a2443c5a91a36d826aef61", "txRoot": "0x013509c8563d41c0ae4bf38f2d6d19fc6512a1d0d6be045079c8c9f68bf45f9d", - "receiptRoot": "0xa532a08aa9f62431d6fe5d924951b8efb86ed3c54d06fee77788c3767dd13420", + "receiptsRoot": "0xa532a08aa9f62431d6fe5d924951b8efb86ed3c54d06fee77788c3767dd13420", "logsHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "receipts": [ @@ -33,6 +33,7 @@ "transactionIndex": "0x1" } ], - "currentDifficulty": "0x20000" + "currentDifficulty": "0x20000", + "gasUsed": "0x109a0" } } diff --git a/cmd/evm/testdata/14/exp.json b/cmd/evm/testdata/14/exp.json index bbe6a1317d..9bf5635f5b 100644 --- a/cmd/evm/testdata/14/exp.json +++ b/cmd/evm/testdata/14/exp.json @@ -2,10 +2,11 @@ "result": { "stateRoot": "0x6f058887ca01549716789c380ede95aecc510e6d1fdc4dbf67d053c7c07f4bdc", "txRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "receiptRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "logsHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "currentDifficulty": "0x2000020000000", - "receipts": [] + "receipts": [], + "gasUsed": "0x0" } -} \ No newline at end of file +} diff --git a/cmd/evm/testdata/14/exp2.json b/cmd/evm/testdata/14/exp2.json index 195c738d99..9c9025381f 100644 --- a/cmd/evm/testdata/14/exp2.json +++ b/cmd/evm/testdata/14/exp2.json @@ -2,10 +2,11 @@ "result": { "stateRoot": "0x6f058887ca01549716789c380ede95aecc510e6d1fdc4dbf67d053c7c07f4bdc", "txRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "receiptRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "logsHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "receipts": [], - "currentDifficulty": "0x1ff8020000000" + "currentDifficulty": "0x1ff8020000000", + "gasUsed": "0x0" } -} \ No newline at end of file +} diff --git a/cmd/evm/testdata/14/exp_berlin.json b/cmd/evm/testdata/14/exp_berlin.json new file mode 100644 index 0000000000..c2bf953119 --- /dev/null +++ b/cmd/evm/testdata/14/exp_berlin.json @@ -0,0 +1,12 @@ +{ + "result": { + "stateRoot": "0x6f058887ca01549716789c380ede95aecc510e6d1fdc4dbf67d053c7c07f4bdc", + "txRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "logsHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "receipts": [], + "currentDifficulty": "0x1ff9000000000", + "gasUsed": "0x0" + } +} diff --git a/cmd/evm/testdata/15/exp2.json b/cmd/evm/testdata/15/exp2.json index 85d821f557..dd5e8a358c 100644 --- a/cmd/evm/testdata/15/exp2.json +++ b/cmd/evm/testdata/15/exp2.json @@ -1,10 +1,12 @@ [ { "address": "0xd02d72e067e77158444ef2020ff2d325f929b363", - "hash": "0xa98a24882ea90916c6a86da650fbc6b14238e46f0af04a131ce92be897507476" + "hash": "0xa98a24882ea90916c6a86da650fbc6b14238e46f0af04a131ce92be897507476", + "intrinsicGas": "0x5208" }, { "address": "0xd02d72e067e77158444ef2020ff2d325f929b363", - "hash": "0x36bad80acce7040c45fd32764b5c2b2d2e6f778669fb41791f73f546d56e739a" + "hash": "0x36bad80acce7040c45fd32764b5c2b2d2e6f778669fb41791f73f546d56e739a", + "intrinsicGas": "0x5208" } ] diff --git a/cmd/evm/testdata/16/exp.json b/cmd/evm/testdata/16/exp.json index ea855aeecd..137ade6513 100644 --- a/cmd/evm/testdata/16/exp.json +++ b/cmd/evm/testdata/16/exp.json @@ -1,11 +1,13 @@ [ { "address": "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", - "hash": "0x7cc3d1a8540a44736750f03bb4d85c0113be4b3472a71bf82241a3b261b479e6" + "hash": "0x7cc3d1a8540a44736750f03bb4d85c0113be4b3472a71bf82241a3b261b479e6", + "intrinsicGas": "0x5208" }, { "error": "intrinsic gas too low: have 82, want 21000", "address": "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", - "hash": "0x3b2d2609e4361562edb9169314f4c05afc6dbf5d706bf9dda5abe242ab76a22b" + "hash": "0x3b2d2609e4361562edb9169314f4c05afc6dbf5d706bf9dda5abe242ab76a22b", + "intrinsicGas": "0x5208" } ] \ No newline at end of file diff --git a/cmd/evm/testdata/17/exp.json b/cmd/evm/testdata/17/exp.json new file mode 100644 index 0000000000..485906041b --- /dev/null +++ b/cmd/evm/testdata/17/exp.json @@ -0,0 +1,22 @@ + [ + { + "error": "value exceeds 256 bits", + "address": "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "hash": "0xfbd91685dcbf8172f0e8c53e2ddbb4d26707840da6b51a74371f62a33868fd82", + "intrinsicGas": "0x5208" + }, + { + "error": "gasPrice exceeds 256 bits", + "address": "0x1b57ccef1fe5fb73f1e64530fb4ebd9cf1655964", + "hash": "0x45dc05035cada83748e4c1fe617220106b331eca054f44c2304d5654a9fb29d5", + "intrinsicGas": "0x5208" + }, + { + "error": "invalid transaction v, r, s values", + "hash": "0xf06691c2a803ab7f3c81d06a0c0a896f80f311105c599fc59a9fdbc669356d35" + }, + { + "error": "invalid transaction v, r, s values", + "hash": "0x84703b697ad5b0db25e4f1f98fb6b1adce85b9edb2232eeba9cedd8c6601694b" + } +] \ No newline at end of file diff --git a/cmd/evm/testdata/17/rlpdata.txt b/cmd/evm/testdata/17/rlpdata.txt new file mode 100644 index 0000000000..874461fd76 --- /dev/null +++ b/cmd/evm/testdata/17/rlpdata.txt @@ -0,0 +1,46 @@ +[ + [ + "", + "d", + 5208, + d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0, + 010000000000000000000000000000000000000000000000000000000000000001, + "", + 1b, + c16787a8e25e941d67691954642876c08f00996163ae7dfadbbfd6cd436f549d, + 6180e5626cae31590f40641fe8f63734316c4bfeb4cdfab6714198c1044d2e28, + ], + [ + "", + 010000000000000000000000000000000000000000000000000000000000000001, + 5208, + d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0, + 11, + "", + 1b, + c16787a8e25e941d67691954642876c08f00996163ae7dfadbbfd6cd436f549d, + 6180e5626cae31590f40641fe8f63734316c4bfeb4cdfab6714198c1044d2e28, + ], + [ + "", + 11, + 5208, + d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0, + 11, + "", + 1b, + c16787a8e25e941d67691954642876c08f00996163ae7dfadbbfd6cd436f549daa, + 6180e5626cae31590f40641fe8f63734316c4bfeb4cdfab6714198c1044d2e28, + ], + [ + "", + 11, + 5208, + d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0, + 11, + "", + 1b, + c16787a8e25e941d67691954642876c08f00996163ae7dfadbbfd6cd436f549d, + 6180e5626cae31590f40641fe8f63734316c4bfeb4cdfab6714198c1044d2e28bb, + ], +] diff --git a/cmd/evm/testdata/17/signed_txs.rlp b/cmd/evm/testdata/17/signed_txs.rlp new file mode 100644 index 0000000000..0e351fb03c --- /dev/null +++ b/cmd/evm/testdata/17/signed_txs.rlp @@ -0,0 +1 @@ +"0xf901c8f880806482520894d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0a1010000000000000000000000000000000000000000000000000000000000000001801ba0c16787a8e25e941d67691954642876c08f00996163ae7dfadbbfd6cd436f549da06180e5626cae31590f40641fe8f63734316c4bfeb4cdfab6714198c1044d2e28f88080a101000000000000000000000000000000000000000000000000000000000000000182520894d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d011801ba0c16787a8e25e941d67691954642876c08f00996163ae7dfadbbfd6cd436f549da06180e5626cae31590f40641fe8f63734316c4bfeb4cdfab6714198c1044d2e28f860801182520894d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d011801ba1c16787a8e25e941d67691954642876c08f00996163ae7dfadbbfd6cd436f549daaa06180e5626cae31590f40641fe8f63734316c4bfeb4cdfab6714198c1044d2e28f860801182520894d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d011801ba0c16787a8e25e941d67691954642876c08f00996163ae7dfadbbfd6cd436f549da16180e5626cae31590f40641fe8f63734316c4bfeb4cdfab6714198c1044d2e28bb" \ No newline at end of file diff --git a/cmd/evm/testdata/18/README.md b/cmd/evm/testdata/18/README.md new file mode 100644 index 0000000000..360a9bba01 --- /dev/null +++ b/cmd/evm/testdata/18/README.md @@ -0,0 +1,9 @@ +# Invalid rlp + +This folder contains a sample of invalid RLP, and it's expected +that the t9n handles this properly: + +``` +$ go run . t9n --input.txs=./testdata/18/invalid.rlp --state.fork=London +ERROR(11): rlp: value size exceeds available input length +``` \ No newline at end of file diff --git a/cmd/evm/testdata/18/invalid.rlp b/cmd/evm/testdata/18/invalid.rlp new file mode 100644 index 0000000000..7ff2824caf --- /dev/null +++ b/cmd/evm/testdata/18/invalid.rlp @@ -0,0 +1 @@ +"0xf852328001825208870b9331677e6ebf0a801ca098ff921201554726367d2be8c804a7ff89ccf285ebc57dff8ae4c44b9c19ac4aa03887321be575c8095f789dd4c743dfe42c1820f9231f98a962b210e3ac2452a3" \ No newline at end of file diff --git a/cmd/evm/testdata/19/alloc.json b/cmd/evm/testdata/19/alloc.json new file mode 100644 index 0000000000..cef1a25ff0 --- /dev/null +++ b/cmd/evm/testdata/19/alloc.json @@ -0,0 +1,12 @@ +{ + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b": { + "balance": "0x5ffd4878be161d74", + "code": "0x", + "nonce": "0xac", + "storage": {} + }, + "0x8a8eafb1cf62bfbeb1741769dae1a9dd47996192":{ + "balance": "0xfeedbead", + "nonce" : "0x00" + } +} \ No newline at end of file diff --git a/cmd/evm/testdata/19/env.json b/cmd/evm/testdata/19/env.json new file mode 100644 index 0000000000..0c64392aff --- /dev/null +++ b/cmd/evm/testdata/19/env.json @@ -0,0 +1,9 @@ +{ + "currentCoinbase": "0xc94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "currentGasLimit": "0x750a163df65e8a", + "currentBaseFee": "0x500", + "currentNumber": "13000000", + "currentTimestamp": "100015", + "parentTimestamp" : "99999", + "parentDifficulty" : "0x2000000000000" +} diff --git a/cmd/evm/testdata/19/exp_arrowglacier.json b/cmd/evm/testdata/19/exp_arrowglacier.json new file mode 100644 index 0000000000..9cf56ffafc --- /dev/null +++ b/cmd/evm/testdata/19/exp_arrowglacier.json @@ -0,0 +1,12 @@ +{ + "result": { + "stateRoot": "0x6f058887ca01549716789c380ede95aecc510e6d1fdc4dbf67d053c7c07f4bdc", + "txRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "logsHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "currentDifficulty": "0x2000000200000", + "receipts": [], + "gasUsed": "0x0" + } +} diff --git a/cmd/evm/testdata/19/exp_london.json b/cmd/evm/testdata/19/exp_london.json new file mode 100644 index 0000000000..a06bc8ca69 --- /dev/null +++ b/cmd/evm/testdata/19/exp_london.json @@ -0,0 +1,12 @@ +{ + "result": { + "stateRoot": "0x6f058887ca01549716789c380ede95aecc510e6d1fdc4dbf67d053c7c07f4bdc", + "txRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "logsHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "currentDifficulty": "0x2000080000000", + "receipts": [], + "gasUsed": "0x0" + } +} diff --git a/cmd/evm/testdata/19/readme.md b/cmd/evm/testdata/19/readme.md new file mode 100644 index 0000000000..5fae183f48 --- /dev/null +++ b/cmd/evm/testdata/19/readme.md @@ -0,0 +1,9 @@ +## Difficulty calculation + +This test shows how the `evm t8n` can be used to calculate the (ethash) difficulty, if none is provided by the caller, +this time on `ArrowGlacier` (Eip 4345). + +Calculating it (with an empty set of txs) using `ArrowGlacier` rules (and no provided unclehash for the parent block): +``` +[user@work evm]$ ./evm t8n --input.alloc=./testdata/14/alloc.json --input.txs=./testdata/14/txs.json --input.env=./testdata/14/env.json --output.result=stdout --state.fork=ArrowGlacier +``` \ No newline at end of file diff --git a/cmd/evm/testdata/19/txs.json b/cmd/evm/testdata/19/txs.json new file mode 100644 index 0000000000..fe51488c70 --- /dev/null +++ b/cmd/evm/testdata/19/txs.json @@ -0,0 +1 @@ +[] diff --git a/cmd/evm/testdata/20/exp.json b/cmd/evm/testdata/20/exp.json new file mode 100644 index 0000000000..7bec6cefd6 --- /dev/null +++ b/cmd/evm/testdata/20/exp.json @@ -0,0 +1,4 @@ +{ + "rlp": "0xf902d9f90211a0d6d785d33cbecf30f30d07e00e226af58f72efdf385d46bc3e6326c23b11e34ea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794e997a23b159e2e2a5ce72333262972374b15425ca0325aea6db48e9d737cddf59034843e99f05bec269453be83c9b9a981a232cc2ea056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082100082c3be83050785808455c5277e99476574682f76312e302e312f6c696e75782f676f312e342e32a05865e417635a26db6d1d39ac70d1abf373e5398b3c6fd506acd038fa1334eedf8897435673d874f7c8f8c2f85f8002825208948a8eafb1cf62bfbeb1741769dae1a9dd4799619201801ba09500e8ba27d3c33ca7764e107410f44cbd8c19794bde214d694683a7aa998cdba07235ae07e4bd6e0206d102b1f8979d6adab280466b6a82d2208ee08951f1f600f85f8002825208948a8eafb1cf62bfbeb1741769dae1a9dd4799619201801ba09500e8ba27d3c33ca7764e107410f44cbd8c19794bde214d694683a7aa998cdba07235ae07e4bd6e0206d102b1f8979d6adab280466b6a82d2208ee08951f1f600c0", + "hash": "0xaba9a3b6a4e96e9ecffcadaa5a2ae0589359455617535cd86589fe1dd26fe899" +} diff --git a/cmd/evm/testdata/20/header.json b/cmd/evm/testdata/20/header.json new file mode 100644 index 0000000000..fb9b7fc563 --- /dev/null +++ b/cmd/evm/testdata/20/header.json @@ -0,0 +1,14 @@ +{ + "parentHash": "0xd6d785d33cbecf30f30d07e00e226af58f72efdf385d46bc3e6326c23b11e34e", + "miner": "0xe997a23b159e2e2a5ce72333262972374b15425c", + "stateRoot": "0x325aea6db48e9d737cddf59034843e99f05bec269453be83c9b9a981a232cc2e", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "difficulty": "0x1000", + "number": "0xc3be", + "gasLimit": "0x50785", + "gasUsed": "0x0", + "timestamp": "0x55c5277e", + "extraData": "0x476574682f76312e302e312f6c696e75782f676f312e342e32", + "mixHash": "0x5865e417635a26db6d1d39ac70d1abf373e5398b3c6fd506acd038fa1334eedf", + "nonce": "0x97435673d874f7c8" +} diff --git a/cmd/evm/testdata/20/ommers.json b/cmd/evm/testdata/20/ommers.json new file mode 100644 index 0000000000..fe51488c70 --- /dev/null +++ b/cmd/evm/testdata/20/ommers.json @@ -0,0 +1 @@ +[] diff --git a/cmd/evm/testdata/20/readme.md b/cmd/evm/testdata/20/readme.md new file mode 100644 index 0000000000..2c448a96e6 --- /dev/null +++ b/cmd/evm/testdata/20/readme.md @@ -0,0 +1,11 @@ +# Block building + +This test shows how `b11r` can be used to assemble an unsealed block. + +```console +$ go run . b11r --input.header=testdata/20/header.json --input.txs=testdata/20/txs.rlp --input.ommers=testdata/20/ommers.json --output.block=stdout +{ + "rlp": "0xf90216f90211a0d6d785d33cbecf30f30d07e00e226af58f72efdf385d46bc3e6326c23b11e34ea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794e997a23b159e2e2a5ce72333262972374b15425ca0325aea6db48e9d737cddf59034843e99f05bec269453be83c9b9a981a232cc2ea056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082100082c3be83050785808455c5277e99476574682f76312e302e312f6c696e75782f676f312e342e32a05865e417635a26db6d1d39ac70d1abf373e5398b3c6fd506acd038fa1334eedf8897435673d874f7c8c0c0", + "hash": "0xaba9a3b6a4e96e9ecffcadaa5a2ae0589359455617535cd86589fe1dd26fe899" +} +``` diff --git a/cmd/evm/testdata/20/txs.rlp b/cmd/evm/testdata/20/txs.rlp new file mode 100644 index 0000000000..3599ff0654 --- /dev/null +++ b/cmd/evm/testdata/20/txs.rlp @@ -0,0 +1 @@ +"0xf8c2f85f8002825208948a8eafb1cf62bfbeb1741769dae1a9dd4799619201801ba09500e8ba27d3c33ca7764e107410f44cbd8c19794bde214d694683a7aa998cdba07235ae07e4bd6e0206d102b1f8979d6adab280466b6a82d2208ee08951f1f600f85f8002825208948a8eafb1cf62bfbeb1741769dae1a9dd4799619201801ba09500e8ba27d3c33ca7764e107410f44cbd8c19794bde214d694683a7aa998cdba07235ae07e4bd6e0206d102b1f8979d6adab280466b6a82d2208ee08951f1f600" \ No newline at end of file diff --git a/cmd/evm/testdata/21/clique.json b/cmd/evm/testdata/21/clique.json new file mode 100644 index 0000000000..84fa259a0d --- /dev/null +++ b/cmd/evm/testdata/21/clique.json @@ -0,0 +1,6 @@ +{ + "secretKey": "0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "voted": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "authorize": false, + "vanity": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" +} diff --git a/cmd/evm/testdata/21/exp-clique.json b/cmd/evm/testdata/21/exp-clique.json new file mode 100644 index 0000000000..c990ba8aa6 --- /dev/null +++ b/cmd/evm/testdata/21/exp-clique.json @@ -0,0 +1,4 @@ +{ + "rlp": "0xf9025ff9025aa0d6d785d33cbecf30f30d07e00e226af58f72efdf385d46bc3e6326c23b11e34ea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0325aea6db48e9d737cddf59034843e99f05bec269453be83c9b9a981a232cc2ea056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082100082c3be83050785808455c5277eb861aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac540a67aaee364005841da84f488f6b6d0116dfb5103d091402c81a163d5f66666595e37f56f196d8c5c98da714dbfae68d6b7e1790cc734a20ec6ce52213ad800a05865e417635a26db6d1d39ac70d1abf373e5398b3c6fd506acd038fa1334eedf88ffffffffffffffffc0c0", + "hash": "0x71c59102cc805dbe8741e1210ebe229a321eff144ac7276006fefe39e8357dc7" +} diff --git a/cmd/evm/testdata/21/exp.json b/cmd/evm/testdata/21/exp.json new file mode 100644 index 0000000000..b3e5e7a831 --- /dev/null +++ b/cmd/evm/testdata/21/exp.json @@ -0,0 +1,4 @@ +{ + "rlp": "0xf901fdf901f8a0d6d785d33cbecf30f30d07e00e226af58f72efdf385d46bc3e6326c23b11e34ea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a0325aea6db48e9d737cddf59034843e99f05bec269453be83c9b9a981a232cc2ea056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082100082c3be83050785808455c5277e80a05865e417635a26db6d1d39ac70d1abf373e5398b3c6fd506acd038fa1334eedf880000000000000000c0c0", + "hash": "0x801411e9f6609a659825690d13e4f75a3cfe9143952fa2d9573f3b0a5eb9ebbb" +} diff --git a/cmd/evm/testdata/21/header.json b/cmd/evm/testdata/21/header.json new file mode 100644 index 0000000000..62abe3cc2c --- /dev/null +++ b/cmd/evm/testdata/21/header.json @@ -0,0 +1,11 @@ +{ + "parentHash": "0xd6d785d33cbecf30f30d07e00e226af58f72efdf385d46bc3e6326c23b11e34e", + "stateRoot": "0x325aea6db48e9d737cddf59034843e99f05bec269453be83c9b9a981a232cc2e", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "difficulty": "0x1000", + "number": "0xc3be", + "gasLimit": "0x50785", + "gasUsed": "0x0", + "timestamp": "0x55c5277e", + "mixHash": "0x5865e417635a26db6d1d39ac70d1abf373e5398b3c6fd506acd038fa1334eedf" +} diff --git a/cmd/evm/testdata/21/ommers.json b/cmd/evm/testdata/21/ommers.json new file mode 100644 index 0000000000..fe51488c70 --- /dev/null +++ b/cmd/evm/testdata/21/ommers.json @@ -0,0 +1 @@ +[] diff --git a/cmd/evm/testdata/21/readme.md b/cmd/evm/testdata/21/readme.md new file mode 100644 index 0000000000..b70f106ffc --- /dev/null +++ b/cmd/evm/testdata/21/readme.md @@ -0,0 +1,23 @@ +# Sealed block building + +This test shows how `b11r` can be used to assemble a sealed block. + +## Ethash + +```console +$ go run . b11r --input.header=testdata/21/header.json --input.txs=testdata/21/txs.rlp --input.ommers=testdata/21/ommers.json --seal.ethash --seal.ethash.mode=test --output.block=stdout +{ + "rlp": "0xf901fdf901f8a0d6d785d33cbecf30f30d07e00e226af58f72efdf385d46bc3e6326c23b11e34ea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a0325aea6db48e9d737cddf59034843e99f05bec269453be83c9b9a981a232cc2ea056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082100082c3be83050785808455c5277e80a05865e417635a26db6d1d39ac70d1abf373e5398b3c6fd506acd038fa1334eedf880000000000000000c0c0", + "hash": "0x801411e9f6609a659825690d13e4f75a3cfe9143952fa2d9573f3b0a5eb9ebbb" +} +``` + +## Clique + +```console +$ go run . b11r --input.header=testdata/21/header.json --input.txs=testdata/21/txs.rlp --input.ommers=testdata/21/ommers.json --seal.clique=testdata/21/clique.json --output.block=stdout +{ + "rlp": "0xf9025ff9025aa0d6d785d33cbecf30f30d07e00e226af58f72efdf385d46bc3e6326c23b11e34ea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0325aea6db48e9d737cddf59034843e99f05bec269453be83c9b9a981a232cc2ea056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082100082c3be83050785808455c5277eb861aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac540a67aaee364005841da84f488f6b6d0116dfb5103d091402c81a163d5f66666595e37f56f196d8c5c98da714dbfae68d6b7e1790cc734a20ec6ce52213ad800a05865e417635a26db6d1d39ac70d1abf373e5398b3c6fd506acd038fa1334eedf88ffffffffffffffffc0c0", + "hash": "0x71c59102cc805dbe8741e1210ebe229a321eff144ac7276006fefe39e8357dc7" +} +``` diff --git a/cmd/evm/testdata/21/txs.rlp b/cmd/evm/testdata/21/txs.rlp new file mode 100644 index 0000000000..e815397b33 --- /dev/null +++ b/cmd/evm/testdata/21/txs.rlp @@ -0,0 +1 @@ +"c0" diff --git a/cmd/evm/testdata/22/exp-clique.json b/cmd/evm/testdata/22/exp-clique.json new file mode 100644 index 0000000000..c990ba8aa6 --- /dev/null +++ b/cmd/evm/testdata/22/exp-clique.json @@ -0,0 +1,4 @@ +{ + "rlp": "0xf9025ff9025aa0d6d785d33cbecf30f30d07e00e226af58f72efdf385d46bc3e6326c23b11e34ea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0325aea6db48e9d737cddf59034843e99f05bec269453be83c9b9a981a232cc2ea056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082100082c3be83050785808455c5277eb861aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac540a67aaee364005841da84f488f6b6d0116dfb5103d091402c81a163d5f66666595e37f56f196d8c5c98da714dbfae68d6b7e1790cc734a20ec6ce52213ad800a05865e417635a26db6d1d39ac70d1abf373e5398b3c6fd506acd038fa1334eedf88ffffffffffffffffc0c0", + "hash": "0x71c59102cc805dbe8741e1210ebe229a321eff144ac7276006fefe39e8357dc7" +} diff --git a/cmd/evm/testdata/22/exp.json b/cmd/evm/testdata/22/exp.json new file mode 100644 index 0000000000..14fd81997d --- /dev/null +++ b/cmd/evm/testdata/22/exp.json @@ -0,0 +1,4 @@ +{ + "rlp": "0xf905f5f901f8a0d6d785d33cbecf30f30d07e00e226af58f72efdf385d46bc3e6326c23b11e34ea06eb9f0c3cd68c9e97134e6725d12b1f1d8f0644458da6870a37ff84c908fb1e7940000000000000000000000000000000000000000a0325aea6db48e9d737cddf59034843e99f05bec269453be83c9b9a981a232cc2ea056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082100082c3be83050785808455c5277e80a05865e417635a26db6d1d39ac70d1abf373e5398b3c6fd506acd038fa1334eedf880000000000000000c0f903f6f901f8a0d6d785d33cbecf30f30d07e00e226af58f72efdf385d46bc3e6326c23b11e34ea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a0325aea6db48e9d737cddf59034843e99f05bec269453be83c9b9a981a232cc2ea056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082100082c3be83050785808455c5277e80a05865e417635a26db6d1d39ac70d1abf373e5398b3c6fd506acd038fa1334eedf880000000000000000f901f8a0d6d785d33cbecf30f30d07e00e226af58f72efdf385d46bc3e6326c23b11e34ea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a0325aea6db48e9d737cddf59034843e99f05bec269453be83c9b9a981a232cc2ea056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082100082c3be83050785808455c5277e80a05865e417635a26db6d1d39ac70d1abf373e5398b3c6fd506acd038fa1334eedf880000000000000000", + "hash": "0xd9a81c8fcd57a7f2a0d2c375eff6ad192c30c3729a271303f0a9a7e1b357e755" +} diff --git a/cmd/evm/testdata/22/header.json b/cmd/evm/testdata/22/header.json new file mode 100644 index 0000000000..62abe3cc2c --- /dev/null +++ b/cmd/evm/testdata/22/header.json @@ -0,0 +1,11 @@ +{ + "parentHash": "0xd6d785d33cbecf30f30d07e00e226af58f72efdf385d46bc3e6326c23b11e34e", + "stateRoot": "0x325aea6db48e9d737cddf59034843e99f05bec269453be83c9b9a981a232cc2e", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "difficulty": "0x1000", + "number": "0xc3be", + "gasLimit": "0x50785", + "gasUsed": "0x0", + "timestamp": "0x55c5277e", + "mixHash": "0x5865e417635a26db6d1d39ac70d1abf373e5398b3c6fd506acd038fa1334eedf" +} diff --git a/cmd/evm/testdata/22/ommers.json b/cmd/evm/testdata/22/ommers.json new file mode 100644 index 0000000000..997015b3ce --- /dev/null +++ b/cmd/evm/testdata/22/ommers.json @@ -0,0 +1 @@ +["0xf901fdf901f8a0d6d785d33cbecf30f30d07e00e226af58f72efdf385d46bc3e6326c23b11e34ea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a0325aea6db48e9d737cddf59034843e99f05bec269453be83c9b9a981a232cc2ea056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082100082c3be83050785808455c5277e80a05865e417635a26db6d1d39ac70d1abf373e5398b3c6fd506acd038fa1334eedf880000000000000000c0c0","0xf901fdf901f8a0d6d785d33cbecf30f30d07e00e226af58f72efdf385d46bc3e6326c23b11e34ea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a0325aea6db48e9d737cddf59034843e99f05bec269453be83c9b9a981a232cc2ea056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082100082c3be83050785808455c5277e80a05865e417635a26db6d1d39ac70d1abf373e5398b3c6fd506acd038fa1334eedf880000000000000000c0c0"] diff --git a/cmd/evm/testdata/22/readme.md b/cmd/evm/testdata/22/readme.md new file mode 100644 index 0000000000..2cac8a2434 --- /dev/null +++ b/cmd/evm/testdata/22/readme.md @@ -0,0 +1,11 @@ +# Building blocks with ommers + +This test shows how `b11r` can chain together ommer assembles into a canonical block. + +```console +$ echo "{ \"ommers\": [`go run . b11r --input.header=testdata/22/header.json --input.txs=testdata/22/txs.rlp --output.block=stdout | jq '.[\"rlp\"]'`,`go run . b11r --input.header=testdata/22/header.json --input.txs=testdata/22/txs.rlp --output.block=stdout | jq '.[\"rlp\"]'`]}" | go run . b11r --input.header=testdata/22/header.json --input.txs=testdata/22/txs.rlp --input.ommers=stdin --output.block=stdout +{ + "rlp": "0xf905f5f901f8a0d6d785d33cbecf30f30d07e00e226af58f72efdf385d46bc3e6326c23b11e34ea06eb9f0c3cd68c9e97134e6725d12b1f1d8f0644458da6870a37ff84c908fb1e7940000000000000000000000000000000000000000a0325aea6db48e9d737cddf59034843e99f05bec269453be83c9b9a981a232cc2ea056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082100082c3be83050785808455c5277e80a05865e417635a26db6d1d39ac70d1abf373e5398b3c6fd506acd038fa1334eedf880000000000000000c0f903f6f901f8a0d6d785d33cbecf30f30d07e00e226af58f72efdf385d46bc3e6326c23b11e34ea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a0325aea6db48e9d737cddf59034843e99f05bec269453be83c9b9a981a232cc2ea056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082100082c3be83050785808455c5277e80a05865e417635a26db6d1d39ac70d1abf373e5398b3c6fd506acd038fa1334eedf880000000000000000f901f8a0d6d785d33cbecf30f30d07e00e226af58f72efdf385d46bc3e6326c23b11e34ea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a0325aea6db48e9d737cddf59034843e99f05bec269453be83c9b9a981a232cc2ea056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082100082c3be83050785808455c5277e80a05865e417635a26db6d1d39ac70d1abf373e5398b3c6fd506acd038fa1334eedf880000000000000000", + "hash": "0xd9a81c8fcd57a7f2a0d2c375eff6ad192c30c3729a271303f0a9a7e1b357e755" +} +``` diff --git a/cmd/evm/testdata/22/txs.rlp b/cmd/evm/testdata/22/txs.rlp new file mode 100644 index 0000000000..e815397b33 --- /dev/null +++ b/cmd/evm/testdata/22/txs.rlp @@ -0,0 +1 @@ +"c0" diff --git a/cmd/evm/testdata/23/alloc.json b/cmd/evm/testdata/23/alloc.json new file mode 100644 index 0000000000..239b3553f9 --- /dev/null +++ b/cmd/evm/testdata/23/alloc.json @@ -0,0 +1,16 @@ +{ + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "balance" : "0x0de0b6b3a7640000", + "code" : "0x6001", + "nonce" : "0x00", + "storage" : { + } + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a7640000", + "code" : "0x", + "nonce" : "0x00", + "storage" : { + } + } +} diff --git a/cmd/evm/testdata/23/env.json b/cmd/evm/testdata/23/env.json new file mode 100644 index 0000000000..1b46321512 --- /dev/null +++ b/cmd/evm/testdata/23/env.json @@ -0,0 +1,7 @@ +{ + "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "0x020000", + "currentGasLimit" : "0x3b9aca00", + "currentNumber" : "0x05", + "currentTimestamp" : "0x03e8" +} diff --git a/cmd/evm/testdata/23/exp.json b/cmd/evm/testdata/23/exp.json new file mode 100644 index 0000000000..e51f37d9c7 --- /dev/null +++ b/cmd/evm/testdata/23/exp.json @@ -0,0 +1,25 @@ +{ + "result": { + "stateRoot": "0x65334305e4accfa18352deb24f007b837b5036425b0712cf0e65a43bfa95154d", + "txRoot": "0x75e61774a2ff58cbe32653420256c7f44bc715715a423b0b746d5c622979af6b", + "receiptsRoot": "0xf951f9396af203499cc7d379715a9110323de73967c5700e2f424725446a3c76", + "logsHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "receipts": [ + { + "root": "0x", + "status": "0x1", + "cumulativeGasUsed": "0x520b", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "logs": null, + "transactionHash": "0x72fadbef39cd251a437eea619cfeda752271a5faaaa2147df012e112159ffb81", + "contractAddress": "0x0000000000000000000000000000000000000000", + "gasUsed": "0x520b", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "transactionIndex": "0x0" + } + ], + "currentDifficulty": "0x20000", + "gasUsed": "0x520b" + } +} diff --git a/cmd/evm/testdata/23/readme.md b/cmd/evm/testdata/23/readme.md new file mode 100644 index 0000000000..85fe8db66c --- /dev/null +++ b/cmd/evm/testdata/23/readme.md @@ -0,0 +1 @@ +These files examplify how to sign a transaction using the pre-EIP155 scheme. diff --git a/cmd/evm/testdata/23/txs.json b/cmd/evm/testdata/23/txs.json new file mode 100644 index 0000000000..22f3840f84 --- /dev/null +++ b/cmd/evm/testdata/23/txs.json @@ -0,0 +1,15 @@ +[ + { + "input" : "0x", + "gas" : "0x5f5e100", + "gasPrice" : "0x1", + "nonce" : "0x0", + "to" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87", + "value" : "0x186a0", + "v" : "0x0", + "r" : "0x0", + "s" : "0x0", + "secretKey" : "0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "protected": false + } +] diff --git a/cmd/evm/testdata/3/exp.json b/cmd/evm/testdata/3/exp.json index ade09e9ac1..71b3d2f559 100644 --- a/cmd/evm/testdata/3/exp.json +++ b/cmd/evm/testdata/3/exp.json @@ -15,7 +15,7 @@ "result": { "stateRoot": "0xb7341da3f9f762a6884eaa186c32942734c146b609efee11c4b0214c44857ea1", "txRoot": "0x75e61774a2ff58cbe32653420256c7f44bc715715a423b0b746d5c622979af6b", - "receiptRoot": "0xd0d26df80374a327c025d405ebadc752b1bbd089d864801ae78ab704bcad8086", + "receiptsRoot": "0xd0d26df80374a327c025d405ebadc752b1bbd089d864801ae78ab704bcad8086", "logsHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "receipts": [ @@ -32,6 +32,7 @@ "transactionIndex": "0x0" } ], - "currentDifficulty": "0x20000" + "currentDifficulty": "0x20000", + "gasUsed": "0x521f" } } diff --git a/cmd/evm/testdata/5/exp.json b/cmd/evm/testdata/5/exp.json index 6340d4cc30..7d715672c5 100644 --- a/cmd/evm/testdata/5/exp.json +++ b/cmd/evm/testdata/5/exp.json @@ -13,10 +13,11 @@ "result": { "stateRoot": "0xa7312add33811645c6aa65d928a1a4f49d65d448801912c069a0aa8fe9c1f393", "txRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "receiptRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "logsHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "receipts": [], - "currentDifficulty": "0x20000" + "currentDifficulty": "0x20000", + "gasUsed": "0x0" } } diff --git a/cmd/geth/chaincmd.go b/cmd/geth/chaincmd.go index 84f931c233..a178f6c751 100644 --- a/cmd/geth/chaincmd.go +++ b/cmd/geth/chaincmd.go @@ -66,6 +66,7 @@ It expects the genesis file as argument.`, Flags: []cli.Flag{ utils.MainnetFlag, utils.RopstenFlag, + utils.SepoliaFlag, utils.RinkebyFlag, utils.GoerliFlag, utils.MumbaiFlag, @@ -146,7 +147,9 @@ be gzipped.`, }, Category: "BLOCKCHAIN COMMANDS", Description: ` - The import-preimages command imports hash preimages from an RLP encoded stream.`, +The import-preimages command imports hash preimages from an RLP encoded stream. +It's deprecated, please use "geth db import" instead. +`, } exportPreimagesCommand = cli.Command{ Action: utils.MigrateFlags(exportPreimages), @@ -160,7 +163,9 @@ be gzipped.`, }, Category: "BLOCKCHAIN COMMANDS", Description: ` -The export-preimages command export hash preimages to an RLP encoded stream`, +The export-preimages command exports hash preimages to an RLP encoded stream. +It's deprecated, please use "geth db export" instead. +`, } dumpCommand = cli.Command{ Action: utils.MigrateFlags(dump), @@ -375,7 +380,6 @@ func exportPreimages(ctx *cli.Context) error { if len(ctx.Args()) < 1 { utils.Fatalf("This command requires an argument.") } - stack, _ := makeConfigNode(ctx) defer stack.Close() diff --git a/cmd/geth/config.go b/cmd/geth/config.go index bb8e5688a5..6be6480a09 100644 --- a/cmd/geth/config.go +++ b/cmd/geth/config.go @@ -33,7 +33,6 @@ import ( "github.com/ethereum/go-ethereum/accounts/scwallet" "github.com/ethereum/go-ethereum/accounts/usbwallet" "github.com/ethereum/go-ethereum/cmd/utils" - "github.com/ethereum/go-ethereum/eth/catalyst" "github.com/ethereum/go-ethereum/eth/downloader" "github.com/ethereum/go-ethereum/eth/ethconfig" "github.com/ethereum/go-ethereum/internal/ethapi" @@ -169,20 +168,13 @@ func makeConfigNode(ctx *cli.Context) (*node.Node, gethConfig) { // makeFullNode loads geth configuration and creates the Ethereum backend. func makeFullNode(ctx *cli.Context) (*node.Node, ethapi.Backend) { stack, cfg := makeConfigNode(ctx) - if ctx.GlobalIsSet(utils.OverrideLondonFlag.Name) { - cfg.Eth.OverrideLondon = new(big.Int).SetUint64(ctx.GlobalUint64(utils.OverrideLondonFlag.Name)) + if ctx.GlobalIsSet(utils.OverrideArrowGlacierFlag.Name) { + cfg.Eth.OverrideArrowGlacier = new(big.Int).SetUint64(ctx.GlobalUint64(utils.OverrideArrowGlacierFlag.Name)) } - backend, eth := utils.RegisterEthService(stack, &cfg.Eth) - - // Configure catalyst. - if ctx.GlobalBool(utils.CatalystFlag.Name) { - if eth == nil { - utils.Fatalf("Catalyst does not work in light client mode.") - } - if err := catalyst.Register(stack, eth); err != nil { - utils.Fatalf("%v", err) - } + if ctx.GlobalIsSet(utils.OverrideTerminalTotalDifficulty.Name) { + cfg.Eth.OverrideTerminalTotalDifficulty = new(big.Int).SetUint64(ctx.GlobalUint64(utils.OverrideTerminalTotalDifficulty.Name)) } + backend, _ := utils.RegisterEthService(stack, &cfg.Eth, ctx.GlobalBool(utils.CatalystFlag.Name)) // Configure GraphQL if requested if ctx.GlobalIsSet(utils.GraphQLEnabledFlag.Name) { diff --git a/cmd/geth/consolecmd.go b/cmd/geth/consolecmd.go index 75f9a82aa8..4364d1af3b 100644 --- a/cmd/geth/consolecmd.go +++ b/cmd/geth/consolecmd.go @@ -77,13 +77,13 @@ func localConsole(ctx *cli.Context) error { // Create and start the node based on the CLI flags prepare(ctx) stack, backend := makeFullNode(ctx) - startNode(ctx, stack, backend) + startNode(ctx, stack, backend, true) defer stack.Close() - // Attach to the newly started node and start the JavaScript console + // Attach to the newly started node and create the JavaScript console. client, err := stack.Attach() if err != nil { - utils.Fatalf("Failed to attach to the inproc geth: %v", err) + return fmt.Errorf("Failed to attach to the inproc geth: %v", err) } config := console.Config{ DataDir: utils.MakeDataDir(ctx), @@ -91,29 +91,34 @@ func localConsole(ctx *cli.Context) error { Client: client, Preload: utils.MakeConsolePreloads(ctx), } - console, err := console.New(config) if err != nil { - utils.Fatalf("Failed to start the JavaScript console: %v", err) + return fmt.Errorf("Failed to start the JavaScript console: %v", err) } defer console.Stop(false) - // If only a short execution was requested, evaluate and return + // If only a short execution was requested, evaluate and return. if script := ctx.GlobalString(utils.ExecFlag.Name); script != "" { console.Evaluate(script) return nil } - // Otherwise print the welcome screen and enter interactive mode + + // Track node shutdown and stop the console when it goes down. + // This happens when SIGTERM is sent to the process. + go func() { + stack.Wait() + console.StopInteractive() + }() + + // Print the welcome screen and enter interactive mode. console.Welcome() console.Interactive() - return nil } // remoteConsole will connect to a remote geth instance, attaching a JavaScript // console to it. func remoteConsole(ctx *cli.Context) error { - // Attach to a remotely running geth instance and start the JavaScript console endpoint := ctx.Args().First() if endpoint == "" { path := node.DefaultDataDir() @@ -137,6 +142,8 @@ func remoteConsole(ctx *cli.Context) error { } else if ctx.GlobalBool(utils.MumbaiFlag.Name) || ctx.GlobalBool(utils.BorMainnetFlag.Name) { homeDir, _ := os.UserHomeDir() path = filepath.Join(homeDir, "/.bor/data") + } else if ctx.GlobalBool(utils.SepoliaFlag.Name) { + path = filepath.Join(path, "sepolia") } } endpoint = fmt.Sprintf("%s/geth.ipc", path) @@ -151,7 +158,6 @@ func remoteConsole(ctx *cli.Context) error { Client: client, Preload: utils.MakeConsolePreloads(ctx), } - console, err := console.New(config) if err != nil { utils.Fatalf("Failed to start the JavaScript console: %v", err) @@ -166,7 +172,6 @@ func remoteConsole(ctx *cli.Context) error { // Otherwise print the welcome screen and enter interactive mode console.Welcome() console.Interactive() - return nil } @@ -190,13 +195,13 @@ func dialRPC(endpoint string) (*rpc.Client, error) { func ephemeralConsole(ctx *cli.Context) error { // Create and start the node based on the CLI flags stack, backend := makeFullNode(ctx) - startNode(ctx, stack, backend) + startNode(ctx, stack, backend, false) defer stack.Close() // Attach to the newly started node and start the JavaScript console client, err := stack.Attach() if err != nil { - utils.Fatalf("Failed to attach to the inproc geth: %v", err) + return fmt.Errorf("Failed to attach to the inproc geth: %v", err) } config := console.Config{ DataDir: utils.MakeDataDir(ctx), @@ -207,22 +212,24 @@ func ephemeralConsole(ctx *cli.Context) error { console, err := console.New(config) if err != nil { - utils.Fatalf("Failed to start the JavaScript console: %v", err) + return fmt.Errorf("Failed to start the JavaScript console: %v", err) } defer console.Stop(false) - // Evaluate each of the specified JavaScript files - for _, file := range ctx.Args() { - if err = console.Execute(file); err != nil { - utils.Fatalf("Failed to execute %s: %v", file, err) - } - } - + // Interrupt the JS interpreter when node is stopped. go func() { stack.Wait() console.Stop(false) }() - console.Stop(true) + // Evaluate each of the specified JavaScript files. + for _, file := range ctx.Args() { + if err = console.Execute(file); err != nil { + return fmt.Errorf("Failed to execute %s: %v", file, err) + } + } + + // The main script is now done, but keep running timers/callbacks. + console.Stop(true) return nil } diff --git a/cmd/geth/dbcmd.go b/cmd/geth/dbcmd.go index 71ac86458b..37ed0dcc69 100644 --- a/cmd/geth/dbcmd.go +++ b/cmd/geth/dbcmd.go @@ -17,11 +17,16 @@ package main import ( + "bytes" + "errors" "fmt" "os" + "os/signal" "path/filepath" "sort" "strconv" + "strings" + "syscall" "time" "github.com/ethereum/go-ethereum/cmd/utils" @@ -62,6 +67,8 @@ Remove blockchain and state databases`, dbPutCmd, dbGetSlotsCmd, dbDumpFreezerIndex, + dbImportCmd, + dbExportCmd, }, } dbInspectCmd = cli.Command{ @@ -70,9 +77,11 @@ Remove blockchain and state databases`, ArgsUsage: " ", Flags: []cli.Flag{ utils.DataDirFlag, + utils.AncientFlag, utils.SyncModeFlag, utils.MainnetFlag, utils.RopstenFlag, + utils.SepoliaFlag, utils.RinkebyFlag, utils.GoerliFlag, utils.MumbaiFlag, @@ -90,6 +99,7 @@ Remove blockchain and state databases`, utils.SyncModeFlag, utils.MainnetFlag, utils.RopstenFlag, + utils.SepoliaFlag, utils.RinkebyFlag, utils.GoerliFlag, utils.MumbaiFlag, @@ -105,6 +115,7 @@ Remove blockchain and state databases`, utils.SyncModeFlag, utils.MainnetFlag, utils.RopstenFlag, + utils.SepoliaFlag, utils.RinkebyFlag, utils.GoerliFlag, utils.MumbaiFlag, @@ -126,6 +137,7 @@ corruption if it is aborted during execution'!`, utils.SyncModeFlag, utils.MainnetFlag, utils.RopstenFlag, + utils.SepoliaFlag, utils.RinkebyFlag, utils.GoerliFlag, utils.MumbaiFlag, @@ -143,6 +155,7 @@ corruption if it is aborted during execution'!`, utils.SyncModeFlag, utils.MainnetFlag, utils.RopstenFlag, + utils.SepoliaFlag, utils.RinkebyFlag, utils.GoerliFlag, utils.MumbaiFlag, @@ -161,6 +174,7 @@ WARNING: This is a low-level operation which may cause database corruption!`, utils.SyncModeFlag, utils.MainnetFlag, utils.RopstenFlag, + utils.SepoliaFlag, utils.RinkebyFlag, utils.GoerliFlag, utils.MumbaiFlag, @@ -179,6 +193,7 @@ WARNING: This is a low-level operation which may cause database corruption!`, utils.SyncModeFlag, utils.MainnetFlag, utils.RopstenFlag, + utils.SepoliaFlag, utils.RinkebyFlag, utils.GoerliFlag, utils.MumbaiFlag, @@ -196,6 +211,7 @@ WARNING: This is a low-level operation which may cause database corruption!`, utils.SyncModeFlag, utils.MainnetFlag, utils.RopstenFlag, + utils.SepoliaFlag, utils.RinkebyFlag, utils.GoerliFlag, utils.MumbaiFlag, @@ -203,6 +219,36 @@ WARNING: This is a low-level operation which may cause database corruption!`, }, Description: "This command displays information about the freezer index.", } + dbImportCmd = cli.Command{ + Action: utils.MigrateFlags(importLDBdata), + Name: "import", + Usage: "Imports leveldb-data from an exported RLP dump.", + ArgsUsage: " has .gz suffix, gzip compression will be used.", + ArgsUsage: " ", + Flags: []cli.Flag{ + utils.DataDirFlag, + utils.SyncModeFlag, + utils.MainnetFlag, + utils.RopstenFlag, + utils.RinkebyFlag, + utils.GoerliFlag, + }, + Description: "Exports the specified chain data to an RLP encoded stream, optionally gzip-compressed.", + } ) func removeDB(ctx *cli.Context) error { @@ -351,14 +397,15 @@ func dbGet(ctx *cli.Context) error { db := utils.MakeChainDatabase(ctx, stack, true) defer db.Close() - key, err := hexutil.Decode(ctx.Args().Get(0)) + key, err := parseHexOrString(ctx.Args().Get(0)) if err != nil { log.Info("Could not decode the key", "error", err) return err } + data, err := db.Get(key) if err != nil { - log.Info("Get operation failed", "error", err) + log.Info("Get operation failed", "key", fmt.Sprintf("0x%#x", key), "error", err) return err } fmt.Printf("key %#x: %#x\n", key, data) @@ -376,7 +423,7 @@ func dbDelete(ctx *cli.Context) error { db := utils.MakeChainDatabase(ctx, stack, false) defer db.Close() - key, err := hexutil.Decode(ctx.Args().Get(0)) + key, err := parseHexOrString(ctx.Args().Get(0)) if err != nil { log.Info("Could not decode the key", "error", err) return err @@ -386,7 +433,7 @@ func dbDelete(ctx *cli.Context) error { fmt.Printf("Previous value: %#x\n", data) } if err = db.Delete(key); err != nil { - log.Info("Delete operation returned an error", "error", err) + log.Info("Delete operation returned an error", "key", fmt.Sprintf("0x%#x", key), "error", err) return err } return nil @@ -409,7 +456,7 @@ func dbPut(ctx *cli.Context) error { data []byte err error ) - key, err = hexutil.Decode(ctx.Args().Get(0)) + key, err = parseHexOrString(ctx.Args().Get(0)) if err != nil { log.Info("Could not decode the key", "error", err) return err @@ -515,3 +562,142 @@ func freezerInspect(ctx *cli.Context) error { } return nil } + +// ParseHexOrString tries to hexdecode b, but if the prefix is missing, it instead just returns the raw bytes +func parseHexOrString(str string) ([]byte, error) { + b, err := hexutil.Decode(str) + if errors.Is(err, hexutil.ErrMissingPrefix) { + return []byte(str), nil + } + return b, err +} + +func importLDBdata(ctx *cli.Context) error { + start := 0 + switch ctx.NArg() { + case 1: + break + case 2: + s, err := strconv.Atoi(ctx.Args().Get(1)) + if err != nil { + return fmt.Errorf("second arg must be an integer: %v", err) + } + start = s + default: + return fmt.Errorf("required arguments: %v", ctx.Command.ArgsUsage) + } + var ( + fName = ctx.Args().Get(0) + stack, _ = makeConfigNode(ctx) + interrupt = make(chan os.Signal, 1) + stop = make(chan struct{}) + ) + defer stack.Close() + signal.Notify(interrupt, syscall.SIGINT, syscall.SIGTERM) + defer signal.Stop(interrupt) + defer close(interrupt) + go func() { + if _, ok := <-interrupt; ok { + log.Info("Interrupted during ldb import, stopping at next batch") + } + close(stop) + }() + db := utils.MakeChainDatabase(ctx, stack, false) + return utils.ImportLDBData(db, fName, int64(start), stop) +} + +type preimageIterator struct { + iter ethdb.Iterator +} + +func (iter *preimageIterator) Next() (byte, []byte, []byte, bool) { + for iter.iter.Next() { + key := iter.iter.Key() + if bytes.HasPrefix(key, rawdb.PreimagePrefix) && len(key) == (len(rawdb.PreimagePrefix)+common.HashLength) { + return utils.OpBatchAdd, key, iter.iter.Value(), true + } + } + return 0, nil, nil, false +} + +func (iter *preimageIterator) Release() { + iter.iter.Release() +} + +type snapshotIterator struct { + init bool + account ethdb.Iterator + storage ethdb.Iterator +} + +func (iter *snapshotIterator) Next() (byte, []byte, []byte, bool) { + if !iter.init { + iter.init = true + return utils.OpBatchDel, rawdb.SnapshotRootKey, nil, true + } + for iter.account.Next() { + key := iter.account.Key() + if bytes.HasPrefix(key, rawdb.SnapshotAccountPrefix) && len(key) == (len(rawdb.SnapshotAccountPrefix)+common.HashLength) { + return utils.OpBatchAdd, key, iter.account.Value(), true + } + } + for iter.storage.Next() { + key := iter.storage.Key() + if bytes.HasPrefix(key, rawdb.SnapshotStoragePrefix) && len(key) == (len(rawdb.SnapshotStoragePrefix)+2*common.HashLength) { + return utils.OpBatchAdd, key, iter.storage.Value(), true + } + } + return 0, nil, nil, false +} + +func (iter *snapshotIterator) Release() { + iter.account.Release() + iter.storage.Release() +} + +// chainExporters defines the export scheme for all exportable chain data. +var chainExporters = map[string]func(db ethdb.Database) utils.ChainDataIterator{ + "preimage": func(db ethdb.Database) utils.ChainDataIterator { + iter := db.NewIterator(rawdb.PreimagePrefix, nil) + return &preimageIterator{iter: iter} + }, + "snapshot": func(db ethdb.Database) utils.ChainDataIterator { + account := db.NewIterator(rawdb.SnapshotAccountPrefix, nil) + storage := db.NewIterator(rawdb.SnapshotStoragePrefix, nil) + return &snapshotIterator{account: account, storage: storage} + }, +} + +func exportChaindata(ctx *cli.Context) error { + if ctx.NArg() < 2 { + return fmt.Errorf("required arguments: %v", ctx.Command.ArgsUsage) + } + // Parse the required chain data type, make sure it's supported. + kind := ctx.Args().Get(0) + kind = strings.ToLower(strings.Trim(kind, " ")) + exporter, ok := chainExporters[kind] + if !ok { + var kinds []string + for kind := range chainExporters { + kinds = append(kinds, kind) + } + return fmt.Errorf("invalid data type %s, supported types: %s", kind, strings.Join(kinds, ", ")) + } + var ( + stack, _ = makeConfigNode(ctx) + interrupt = make(chan os.Signal, 1) + stop = make(chan struct{}) + ) + defer stack.Close() + signal.Notify(interrupt, syscall.SIGINT, syscall.SIGTERM) + defer signal.Stop(interrupt) + defer close(interrupt) + go func() { + if _, ok := <-interrupt; ok { + log.Info("Interrupted during db export, stopping at next batch") + } + close(stop) + }() + db := utils.MakeChainDatabase(ctx, stack, true) + return utils.ExportChaindata(ctx.Args().Get(1), kind, exporter(db), stop) +} diff --git a/cmd/geth/main.go b/cmd/geth/main.go index bec77e261d..756a397d32 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -39,6 +39,11 @@ import ( "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/metrics" "github.com/ethereum/go-ethereum/node" + + // Force-load the tracer engines to trigger registration + _ "github.com/ethereum/go-ethereum/eth/tracers/js" + _ "github.com/ethereum/go-ethereum/eth/tracers/native" + "gopkg.in/urfave/cli.v1" ) @@ -68,7 +73,8 @@ var ( utils.NoUSBFlag, utils.USBFlag, utils.SmartCardDaemonPathFlag, - utils.OverrideLondonFlag, + utils.OverrideArrowGlacierFlag, + utils.OverrideTerminalTotalDifficulty, utils.EthashCacheDirFlag, utils.EthashCachesInMemoryFlag, utils.EthashCachesOnDiskFlag, @@ -137,7 +143,9 @@ var ( utils.MainnetFlag, utils.DeveloperFlag, utils.DeveloperPeriodFlag, + utils.DeveloperGasLimitFlag, utils.RopstenFlag, + utils.SepoliaFlag, utils.RinkebyFlag, utils.GoerliFlag, utils.MumbaiFlag, @@ -273,6 +281,9 @@ func prepare(ctx *cli.Context) { case ctx.GlobalIsSet(utils.RopstenFlag.Name): log.Info("Starting Geth on Ropsten testnet...") + case ctx.GlobalIsSet(utils.SepoliaFlag.Name): + log.Info("Starting Geth on Sepolia testnet...") + case ctx.GlobalIsSet(utils.RinkebyFlag.Name): log.Info("Starting Geth on Rinkeby testnet...") @@ -294,7 +305,12 @@ func prepare(ctx *cli.Context) { // If we're a full node on mainnet without --cache specified, bump default cache allowance if ctx.GlobalString(utils.SyncModeFlag.Name) != "light" && !ctx.GlobalIsSet(utils.CacheFlag.Name) && !ctx.GlobalIsSet(utils.NetworkIdFlag.Name) { // Make sure we're not on any supported preconfigured testnet either - if !ctx.GlobalIsSet(utils.RopstenFlag.Name) && !ctx.GlobalIsSet(utils.RinkebyFlag.Name) && !ctx.GlobalIsSet(utils.GoerliFlag.Name) && !ctx.GlobalIsSet(utils.MumbaiFlag.Name) && !ctx.GlobalIsSet(utils.DeveloperFlag.Name) { + if !ctx.GlobalIsSet(utils.RopstenFlag.Name) && + !ctx.GlobalIsSet(utils.SepoliaFlag.Name) && + !ctx.GlobalIsSet(utils.RinkebyFlag.Name) && + !ctx.GlobalIsSet(utils.GoerliFlag.Name) && + !ctx.GlobalIsSet(utils.DeveloperFlag.Name) && + !ctx.GlobalIsSet(utils.MumbaiFlag.Name) { // Nope, we're really on mainnet. Bump that cache up! log.Info("Bumping default cache on mainnet", "provided", ctx.GlobalInt(utils.CacheFlag.Name), "updated", 4096) ctx.GlobalSet(utils.CacheFlag.Name, strconv.Itoa(4096)) @@ -325,7 +341,7 @@ func geth(ctx *cli.Context) error { stack, backend := makeFullNode(ctx) defer stack.Close() - startNode(ctx, stack, backend) + startNode(ctx, stack, backend, false) stack.Wait() return nil } @@ -333,11 +349,11 @@ func geth(ctx *cli.Context) error { // startNode boots up the system node and all registered protocols, after which // it unlocks any requested accounts, and starts the RPC/IPC interfaces and the // miner. -func startNode(ctx *cli.Context, stack *node.Node, backend ethapi.Backend) { +func startNode(ctx *cli.Context, stack *node.Node, backend ethapi.Backend, isConsole bool) { debug.Memsize.Add("node", stack) // Start up the node itself - utils.StartNode(ctx, stack) + utils.StartNode(ctx, stack, isConsole) // Unlock any account specifically requested unlockAccounts(ctx, stack) diff --git a/cmd/geth/snapshot.go b/cmd/geth/snapshot.go index a174090743..6ca8b768a3 100644 --- a/cmd/geth/snapshot.go +++ b/cmd/geth/snapshot.go @@ -62,6 +62,7 @@ var ( utils.DataDirFlag, utils.AncientFlag, utils.RopstenFlag, + utils.SepoliaFlag, utils.RinkebyFlag, utils.GoerliFlag, utils.MumbaiFlag, @@ -94,6 +95,7 @@ the trie clean cache with default directory will be deleted. utils.DataDirFlag, utils.AncientFlag, utils.RopstenFlag, + utils.SepoliaFlag, utils.RinkebyFlag, utils.GoerliFlag, utils.MumbaiFlag, @@ -116,6 +118,7 @@ In other words, this command does the snapshot to trie conversion. utils.DataDirFlag, utils.AncientFlag, utils.RopstenFlag, + utils.SepoliaFlag, utils.RinkebyFlag, utils.GoerliFlag, utils.MumbaiFlag, @@ -140,6 +143,7 @@ It's also usable without snapshot enabled. utils.DataDirFlag, utils.AncientFlag, utils.RopstenFlag, + utils.SepoliaFlag, utils.RinkebyFlag, utils.GoerliFlag, utils.MumbaiFlag, @@ -165,6 +169,7 @@ It's also usable without snapshot enabled. utils.DataDirFlag, utils.AncientFlag, utils.RopstenFlag, + utils.SepoliaFlag, utils.RinkebyFlag, utils.GoerliFlag, utils.MumbaiFlag, diff --git a/cmd/geth/usage.go b/cmd/geth/usage.go index 0da312cf56..17d93f06e0 100644 --- a/cmd/geth/usage.go +++ b/cmd/geth/usage.go @@ -47,6 +47,7 @@ var AppHelpFlagGroups = []flags.FlagGroup{ utils.BorMainnetFlag, utils.RinkebyFlag, utils.RopstenFlag, + utils.SepoliaFlag, utils.SyncModeFlag, utils.ExitWhenSyncedFlag, utils.GCModeFlag, @@ -76,6 +77,7 @@ var AppHelpFlagGroups = []flags.FlagGroup{ Flags: []cli.Flag{ utils.DeveloperFlag, utils.DeveloperPeriodFlag, + utils.DeveloperGasLimitFlag, }, }, { diff --git a/cmd/puppeth/wizard.go b/cmd/puppeth/wizard.go index 83536506c4..c0edc54019 100644 --- a/cmd/puppeth/wizard.go +++ b/cmd/puppeth/wizard.go @@ -17,7 +17,6 @@ package main import ( - "bufio" "encoding/json" "fmt" "io/ioutil" @@ -32,8 +31,10 @@ import ( "sync" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/console/prompt" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/log" + "github.com/peterh/liner" "golang.org/x/crypto/ssh/terminal" ) @@ -76,17 +77,27 @@ type wizard struct { servers map[string]*sshClient // SSH connections to servers to administer services map[string][]string // Ethereum services known to be running on servers - in *bufio.Reader // Wrapper around stdin to allow reading user input - lock sync.Mutex // Lock to protect configs during concurrent service discovery + lock sync.Mutex // Lock to protect configs during concurrent service discovery +} + +// prompts the user for input with the given prompt string. Returns when a value is entered. +// Causes the wizard to exit if ctrl-d is pressed +func promptInput(p string) string { + for { + text, err := prompt.Stdin.PromptInput(p) + if err != nil { + if err != liner.ErrPromptAborted { + log.Crit("Failed to read user input", "err", err) + } + } else { + return text + } + } } // read reads a single line from stdin, trimming if from spaces. func (w *wizard) read() string { - fmt.Printf("> ") - text, err := w.in.ReadString('\n') - if err != nil { - log.Crit("Failed to read user input", "err", err) - } + text := promptInput("> ") return strings.TrimSpace(text) } @@ -94,11 +105,7 @@ func (w *wizard) read() string { // non-emptyness. func (w *wizard) readString() string { for { - fmt.Printf("> ") - text, err := w.in.ReadString('\n') - if err != nil { - log.Crit("Failed to read user input", "err", err) - } + text := promptInput("> ") if text = strings.TrimSpace(text); text != "" { return text } @@ -108,11 +115,7 @@ func (w *wizard) readString() string { // readDefaultString reads a single line from stdin, trimming if from spaces. If // an empty line is entered, the default value is returned. func (w *wizard) readDefaultString(def string) string { - fmt.Printf("> ") - text, err := w.in.ReadString('\n') - if err != nil { - log.Crit("Failed to read user input", "err", err) - } + text := promptInput("> ") if text = strings.TrimSpace(text); text != "" { return text } @@ -124,11 +127,7 @@ func (w *wizard) readDefaultString(def string) string { // value is returned. func (w *wizard) readDefaultYesNo(def bool) bool { for { - fmt.Printf("> ") - text, err := w.in.ReadString('\n') - if err != nil { - log.Crit("Failed to read user input", "err", err) - } + text := promptInput("> ") if text = strings.ToLower(strings.TrimSpace(text)); text == "" { return def } @@ -146,11 +145,7 @@ func (w *wizard) readDefaultYesNo(def bool) bool { // interpret it as a URL (http, https or file). func (w *wizard) readURL() *url.URL { for { - fmt.Printf("> ") - text, err := w.in.ReadString('\n') - if err != nil { - log.Crit("Failed to read user input", "err", err) - } + text := promptInput("> ") uri, err := url.Parse(strings.TrimSpace(text)) if err != nil { log.Error("Invalid input, expected URL", "err", err) @@ -164,11 +159,7 @@ func (w *wizard) readURL() *url.URL { // to parse into an integer. func (w *wizard) readInt() int { for { - fmt.Printf("> ") - text, err := w.in.ReadString('\n') - if err != nil { - log.Crit("Failed to read user input", "err", err) - } + text := promptInput("> ") if text = strings.TrimSpace(text); text == "" { continue } @@ -186,11 +177,7 @@ func (w *wizard) readInt() int { // returned. func (w *wizard) readDefaultInt(def int) int { for { - fmt.Printf("> ") - text, err := w.in.ReadString('\n') - if err != nil { - log.Crit("Failed to read user input", "err", err) - } + text := promptInput("> ") if text = strings.TrimSpace(text); text == "" { return def } @@ -208,11 +195,7 @@ func (w *wizard) readDefaultInt(def int) int { // default value is returned. func (w *wizard) readDefaultBigInt(def *big.Int) *big.Int { for { - fmt.Printf("> ") - text, err := w.in.ReadString('\n') - if err != nil { - log.Crit("Failed to read user input", "err", err) - } + text := promptInput("> ") if text = strings.TrimSpace(text); text == "" { return def } @@ -225,38 +208,11 @@ func (w *wizard) readDefaultBigInt(def *big.Int) *big.Int { } } -/* -// readFloat reads a single line from stdin, trimming if from spaces, enforcing it -// to parse into a float. -func (w *wizard) readFloat() float64 { - for { - fmt.Printf("> ") - text, err := w.in.ReadString('\n') - if err != nil { - log.Crit("Failed to read user input", "err", err) - } - if text = strings.TrimSpace(text); text == "" { - continue - } - val, err := strconv.ParseFloat(strings.TrimSpace(text), 64) - if err != nil { - log.Error("Invalid input, expected float", "err", err) - continue - } - return val - } -} -*/ - // readDefaultFloat reads a single line from stdin, trimming if from spaces, enforcing // it to parse into a float. If an empty line is entered, the default value is returned. func (w *wizard) readDefaultFloat(def float64) float64 { for { - fmt.Printf("> ") - text, err := w.in.ReadString('\n') - if err != nil { - log.Crit("Failed to read user input", "err", err) - } + text := promptInput("> ") if text = strings.TrimSpace(text); text == "" { return def } @@ -285,12 +241,7 @@ func (w *wizard) readPassword() string { // it to an Ethereum address. func (w *wizard) readAddress() *common.Address { for { - // Read the address from the user - fmt.Printf("> 0x") - text, err := w.in.ReadString('\n') - if err != nil { - log.Crit("Failed to read user input", "err", err) - } + text := promptInput("> 0x") if text = strings.TrimSpace(text); text == "" { return nil } @@ -311,11 +262,7 @@ func (w *wizard) readAddress() *common.Address { func (w *wizard) readDefaultAddress(def common.Address) common.Address { for { // Read the address from the user - fmt.Printf("> 0x") - text, err := w.in.ReadString('\n') - if err != nil { - log.Crit("Failed to read user input", "err", err) - } + text := promptInput("> 0x") if text = strings.TrimSpace(text); text == "" { return def } @@ -334,8 +281,9 @@ func (w *wizard) readJSON() string { var blob json.RawMessage for { - fmt.Printf("> ") - if err := json.NewDecoder(w.in).Decode(&blob); err != nil { + text := promptInput("> ") + reader := strings.NewReader(text) + if err := json.NewDecoder(reader).Decode(&blob); err != nil { log.Error("Invalid JSON, please try again", "err", err) continue } @@ -351,10 +299,7 @@ func (w *wizard) readIPAddress() string { for { // Read the IP address from the user fmt.Printf("> ") - text, err := w.in.ReadString('\n') - if err != nil { - log.Crit("Failed to read user input", "err", err) - } + text := promptInput("> ") if text = strings.TrimSpace(text); text == "" { return "" } diff --git a/cmd/puppeth/wizard_intro.go b/cmd/puppeth/wizard_intro.go index 75fb04b76f..dd4b606c4a 100644 --- a/cmd/puppeth/wizard_intro.go +++ b/cmd/puppeth/wizard_intro.go @@ -17,14 +17,12 @@ package main import ( - "bufio" "encoding/json" "fmt" "io/ioutil" "os" "path/filepath" "strings" - "sync" "github.com/ethereum/go-ethereum/log" ) @@ -38,7 +36,6 @@ func makeWizard(network string) *wizard { }, servers: make(map[string]*sshClient), services: make(map[string][]string), - in: bufio.NewReader(os.Stdin), } } @@ -82,25 +79,17 @@ func (w *wizard) run() { } else if err := json.Unmarshal(blob, &w.conf); err != nil { log.Crit("Previous configuration corrupted", "path", w.conf.path, "err", err) } else { - // Dial all previously known servers concurrently - var pend sync.WaitGroup + // Dial all previously known servers for server, pubkey := range w.conf.Servers { - pend.Add(1) - - go func(server string, pubkey []byte) { - defer pend.Done() - - log.Info("Dialing previously configured server", "server", server) - client, err := dial(server, pubkey) - if err != nil { - log.Error("Previous server unreachable", "server", server, "err", err) - } - w.lock.Lock() - w.servers[server] = client - w.lock.Unlock() - }(server, pubkey) + log.Info("Dialing previously configured server", "server", server) + client, err := dial(server, pubkey) + if err != nil { + log.Error("Previous server unreachable", "server", server, "err", err) + } + w.lock.Lock() + w.servers[server] = client + w.lock.Unlock() } - pend.Wait() w.networkStats() } // Basics done, loop ad infinitum about what to do diff --git a/cmd/rlpdump/main.go b/cmd/rlpdump/main.go index d0f993c5b8..9c0af01248 100644 --- a/cmd/rlpdump/main.go +++ b/cmd/rlpdump/main.go @@ -18,7 +18,9 @@ package main import ( + "bufio" "bytes" + "container/list" "encoding/hex" "flag" "fmt" @@ -26,18 +28,20 @@ import ( "os" "strings" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/rlp" ) var ( - hexMode = flag.String("hex", "", "dump given hex data") - noASCII = flag.Bool("noascii", false, "don't print ASCII strings readably") - single = flag.Bool("single", false, "print only the first element, discard the rest") + hexMode = flag.String("hex", "", "dump given hex data") + reverseMode = flag.Bool("reverse", false, "convert ASCII to rlp") + noASCII = flag.Bool("noascii", false, "don't print ASCII strings readably") + single = flag.Bool("single", false, "print only the first element, discard the rest") ) func init() { flag.Usage = func() { - fmt.Fprintln(os.Stderr, "Usage:", os.Args[0], "[-noascii] [-hex ] [filename]") + fmt.Fprintln(os.Stderr, "Usage:", os.Args[0], "[-noascii] [-hex ][-reverse] [filename]") flag.PrintDefaults() fmt.Fprintln(os.Stderr, ` Dumps RLP data from the given file in readable form. @@ -73,23 +77,40 @@ func main() { flag.Usage() os.Exit(2) } - - s := rlp.NewStream(r, 0) - for { - if err := dump(s, 0); err != nil { - if err != io.EOF { - die(err) - } - break + out := os.Stdout + if *reverseMode { + data, err := textToRlp(r) + if err != nil { + die(err) } - fmt.Println() - if *single { - break + fmt.Printf("0x%x\n", data) + return + } else { + err := rlpToText(r, out) + if err != nil { + die(err) } } } -func dump(s *rlp.Stream, depth int) error { +func rlpToText(r io.Reader, out io.Writer) error { + s := rlp.NewStream(r, 0) + for { + if err := dump(s, 0, out); err != nil { + if err != io.EOF { + return err + } + break + } + fmt.Fprintln(out) + if *single { + break + } + } + return nil +} + +func dump(s *rlp.Stream, depth int, out io.Writer) error { kind, size, err := s.Kind() if err != nil { return err @@ -101,28 +122,28 @@ func dump(s *rlp.Stream, depth int) error { return err } if len(str) == 0 || !*noASCII && isASCII(str) { - fmt.Printf("%s%q", ws(depth), str) + fmt.Fprintf(out, "%s%q", ws(depth), str) } else { - fmt.Printf("%s%x", ws(depth), str) + fmt.Fprintf(out, "%s%x", ws(depth), str) } case rlp.List: s.List() defer s.ListEnd() if size == 0 { - fmt.Print(ws(depth) + "[]") + fmt.Fprintf(out, ws(depth)+"[]") } else { - fmt.Println(ws(depth) + "[") + fmt.Fprintln(out, ws(depth)+"[") for i := 0; ; i++ { if i > 0 { - fmt.Print(",\n") + fmt.Fprint(out, ",\n") } - if err := dump(s, depth+1); err == rlp.EOL { + if err := dump(s, depth+1, out); err == rlp.EOL { break } else if err != nil { return err } } - fmt.Print(ws(depth) + "]") + fmt.Fprint(out, ws(depth)+"]") } } return nil @@ -145,3 +166,45 @@ func die(args ...interface{}) { fmt.Fprintln(os.Stderr, args...) os.Exit(1) } + +// textToRlp converts text into RLP (best effort). +func textToRlp(r io.Reader) ([]byte, error) { + // We're expecting the input to be well-formed, meaning that + // - each element is on a separate line + // - each line is either an (element OR a list start/end) + comma + // - an element is either hex-encoded bytes OR a quoted string + var ( + scanner = bufio.NewScanner(r) + obj []interface{} + stack = list.New() + ) + for scanner.Scan() { + t := strings.TrimSpace(scanner.Text()) + if len(t) == 0 { + continue + } + switch t { + case "[": // list start + stack.PushFront(obj) + obj = make([]interface{}, 0) + case "]", "],": // list end + parent := stack.Remove(stack.Front()).([]interface{}) + obj = append(parent, obj) + case "[],": // empty list + obj = append(obj, make([]interface{}, 0)) + default: // element + data := []byte(t)[:len(t)-1] // cut off comma + if data[0] == '"' { // ascii string + data = []byte(t)[1 : len(data)-1] + } else { // hex data + data = common.FromHex(string(data)) + } + obj = append(obj, data) + } + } + if err := scanner.Err(); err != nil { + return nil, err + } + data, err := rlp.EncodeToBytes(obj[0]) + return data, err +} diff --git a/cmd/rlpdump/rlpdump_test.go b/cmd/rlpdump/rlpdump_test.go new file mode 100644 index 0000000000..ea607e3808 --- /dev/null +++ b/cmd/rlpdump/rlpdump_test.go @@ -0,0 +1,65 @@ +package main + +import ( + "bytes" + "fmt" + "strings" + "testing" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" +) + +func TestRoundtrip(t *testing.T) { + for i, want := range []string{ + "0xf880806482520894d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0a1010000000000000000000000000000000000000000000000000000000000000001801ba0c16787a8e25e941d67691954642876c08f00996163ae7dfadbbfd6cd436f549da06180e5626cae31590f40641fe8f63734316c4bfeb4cdfab6714198c1044d2e28", + "0xd5c0d3cb84746573742a2a808213378667617a6f6e6b", + "0xc780c0c1c0825208", + } { + var out strings.Builder + err := rlpToText(bytes.NewReader(common.FromHex(want)), &out) + if err != nil { + t.Fatal(err) + } + text := out.String() + rlpBytes, err := textToRlp(strings.NewReader(text)) + if err != nil { + t.Errorf("test %d: error %v", i, err) + continue + } + have := fmt.Sprintf("0x%x", rlpBytes) + if have != want { + t.Errorf("test %d: have\n%v\nwant:\n%v\n", i, have, want) + } + } +} + +func TestTextToRlp(t *testing.T) { + type tc struct { + text string + want string + } + cases := []tc{ + { + text: `[ + "", + [], +[ + [], + ], + 5208, +]`, + want: "0xc780c0c1c0825208", + }, + } + for i, tc := range cases { + have, err := textToRlp(strings.NewReader(tc.text)) + if err != nil { + t.Errorf("test %d: error %v", i, err) + continue + } + if hexutil.Encode(have) != tc.want { + t.Errorf("test %d:\nhave %v\nwant %v", i, hexutil.Encode(have), tc.want) + } + } +} diff --git a/cmd/utils/cmd.go b/cmd/utils/cmd.go index d4051e59ef..f8e40b187c 100644 --- a/cmd/utils/cmd.go +++ b/cmd/utils/cmd.go @@ -18,7 +18,9 @@ package utils import ( + "bufio" "compress/gzip" + "errors" "fmt" "io" "os" @@ -66,7 +68,7 @@ func Fatalf(format string, args ...interface{}) { os.Exit(1) } -func StartNode(ctx *cli.Context, stack *node.Node) { +func StartNode(ctx *cli.Context, stack *node.Node, isConsole bool) { if err := stack.Start(); err != nil { Fatalf("Error starting protocol stack: %v", err) } @@ -85,17 +87,33 @@ func StartNode(ctx *cli.Context, stack *node.Node) { go monitorFreeDiskSpace(sigc, stack.InstanceDir(), uint64(minFreeDiskSpace)*1024*1024) } - <-sigc - log.Info("Got interrupt, shutting down...") - go stack.Close() - for i := 10; i > 0; i-- { - <-sigc - if i > 1 { - log.Warn("Already shutting down, interrupt more to panic.", "times", i-1) + shutdown := func() { + log.Info("Got interrupt, shutting down...") + go stack.Close() + for i := 10; i > 0; i-- { + <-sigc + if i > 1 { + log.Warn("Already shutting down, interrupt more to panic.", "times", i-1) + } } + debug.Exit() // ensure trace and CPU profile data is flushed. + debug.LoudPanic("boom") + } + + if isConsole { + // In JS console mode, SIGINT is ignored because it's handled by the console. + // However, SIGTERM still shuts down the node. + for { + sig := <-sigc + if sig == syscall.SIGTERM { + shutdown() + return + } + } + } else { + <-sigc + shutdown() } - debug.Exit() // ensure trace and CPU profile data is flushed. - debug.LoudPanic("boom") }() } @@ -270,6 +288,7 @@ func ExportAppendChain(blockchain *core.BlockChain, fn string, first uint64, las } // ImportPreimages imports a batch of exported hash preimages into the database. +// It's a part of the deprecated functionality, should be removed in the future. func ImportPreimages(db ethdb.Database, fn string) error { log.Info("Importing preimages", "file", fn) @@ -280,7 +299,7 @@ func ImportPreimages(db ethdb.Database, fn string) error { } defer fh.Close() - var reader io.Reader = fh + var reader io.Reader = bufio.NewReader(fh) if strings.HasSuffix(fn, ".gz") { if reader, err = gzip.NewReader(reader); err != nil { return err @@ -288,7 +307,7 @@ func ImportPreimages(db ethdb.Database, fn string) error { } stream := rlp.NewStream(reader, 0) - // Import the preimages in batches to prevent disk trashing + // Import the preimages in batches to prevent disk thrashing preimages := make(map[common.Hash][]byte) for { @@ -317,6 +336,7 @@ func ImportPreimages(db ethdb.Database, fn string) error { // ExportPreimages exports all known hash preimages into the specified file, // truncating any data already present in the file. +// It's a part of the deprecated functionality, should be removed in the future. func ExportPreimages(db ethdb.Database, fn string) error { log.Info("Exporting preimages", "file", fn) @@ -344,3 +364,207 @@ func ExportPreimages(db ethdb.Database, fn string) error { log.Info("Exported preimages", "file", fn) return nil } + +// exportHeader is used in the export/import flow. When we do an export, +// the first element we output is the exportHeader. +// Whenever a backwards-incompatible change is made, the Version header +// should be bumped. +// If the importer sees a higher version, it should reject the import. +type exportHeader struct { + Magic string // Always set to 'gethdbdump' for disambiguation + Version uint64 + Kind string + UnixTime uint64 +} + +const exportMagic = "gethdbdump" +const ( + OpBatchAdd = 0 + OpBatchDel = 1 +) + +// ImportLDBData imports a batch of snapshot data into the database +func ImportLDBData(db ethdb.Database, f string, startIndex int64, interrupt chan struct{}) error { + log.Info("Importing leveldb data", "file", f) + + // Open the file handle and potentially unwrap the gzip stream + fh, err := os.Open(f) + if err != nil { + return err + } + defer fh.Close() + + var reader io.Reader = bufio.NewReader(fh) + if strings.HasSuffix(f, ".gz") { + if reader, err = gzip.NewReader(reader); err != nil { + return err + } + } + stream := rlp.NewStream(reader, 0) + + // Read the header + var header exportHeader + if err := stream.Decode(&header); err != nil { + return fmt.Errorf("could not decode header: %v", err) + } + if header.Magic != exportMagic { + return errors.New("incompatible data, wrong magic") + } + if header.Version != 0 { + return fmt.Errorf("incompatible version %d, (support only 0)", header.Version) + } + log.Info("Importing data", "file", f, "type", header.Kind, "data age", + common.PrettyDuration(time.Since(time.Unix(int64(header.UnixTime), 0)))) + + // Import the snapshot in batches to prevent disk thrashing + var ( + count int64 + start = time.Now() + logged = time.Now() + batch = db.NewBatch() + ) + for { + // Read the next entry + var ( + op byte + key, val []byte + ) + if err := stream.Decode(&op); err != nil { + if err == io.EOF { + break + } + return err + } + if err := stream.Decode(&key); err != nil { + return err + } + if err := stream.Decode(&val); err != nil { + return err + } + if count < startIndex { + count++ + continue + } + switch op { + case OpBatchDel: + batch.Delete(key) + case OpBatchAdd: + batch.Put(key, val) + default: + return fmt.Errorf("unknown op %d\n", op) + } + if batch.ValueSize() > ethdb.IdealBatchSize { + if err := batch.Write(); err != nil { + return err + } + batch.Reset() + } + // Check interruption emitted by ctrl+c + if count%1000 == 0 { + select { + case <-interrupt: + if err := batch.Write(); err != nil { + return err + } + log.Info("External data import interrupted", "file", f, "count", count, "elapsed", common.PrettyDuration(time.Since(start))) + return nil + default: + } + } + if count%1000 == 0 && time.Since(logged) > 8*time.Second { + log.Info("Importing external data", "file", f, "count", count, "elapsed", common.PrettyDuration(time.Since(start))) + logged = time.Now() + } + count += 1 + } + // Flush the last batch snapshot data + if batch.ValueSize() > 0 { + if err := batch.Write(); err != nil { + return err + } + } + log.Info("Imported chain data", "file", f, "count", count, + "elapsed", common.PrettyDuration(time.Since(start))) + return nil +} + +// ChainDataIterator is an interface wraps all necessary functions to iterate +// the exporting chain data. +type ChainDataIterator interface { + // Next returns the key-value pair for next exporting entry in the iterator. + // When the end is reached, it will return (0, nil, nil, false). + Next() (byte, []byte, []byte, bool) + + // Release releases associated resources. Release should always succeed and can + // be called multiple times without causing error. + Release() +} + +// ExportChaindata exports the given data type (truncating any data already present) +// in the file. If the suffix is 'gz', gzip compression is used. +func ExportChaindata(fn string, kind string, iter ChainDataIterator, interrupt chan struct{}) error { + log.Info("Exporting chain data", "file", fn, "kind", kind) + defer iter.Release() + + // Open the file handle and potentially wrap with a gzip stream + fh, err := os.OpenFile(fn, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, os.ModePerm) + if err != nil { + return err + } + defer fh.Close() + + var writer io.Writer = fh + if strings.HasSuffix(fn, ".gz") { + writer = gzip.NewWriter(writer) + defer writer.(*gzip.Writer).Close() + } + // Write the header + if err := rlp.Encode(writer, &exportHeader{ + Magic: exportMagic, + Version: 0, + Kind: kind, + UnixTime: uint64(time.Now().Unix()), + }); err != nil { + return err + } + // Extract data from source iterator and dump them out to file + var ( + count int64 + start = time.Now() + logged = time.Now() + ) + for { + op, key, val, ok := iter.Next() + if !ok { + break + } + if err := rlp.Encode(writer, op); err != nil { + return err + } + if err := rlp.Encode(writer, key); err != nil { + return err + } + if err := rlp.Encode(writer, val); err != nil { + return err + } + if count%1000 == 0 { + // Check interruption emitted by ctrl+c + select { + case <-interrupt: + log.Info("Chain data exporting interrupted", "file", fn, + "kind", kind, "count", count, "elapsed", common.PrettyDuration(time.Since(start))) + return nil + default: + } + if time.Since(logged) > 8*time.Second { + log.Info("Exporting chain data", "file", fn, "kind", kind, + "count", count, "elapsed", common.PrettyDuration(time.Since(start))) + logged = time.Now() + } + } + count++ + } + log.Info("Exported chain data", "file", fn, "kind", kind, "count", count, + "elapsed", common.PrettyDuration(time.Since(start))) + return nil +} diff --git a/cmd/utils/export_test.go b/cmd/utils/export_test.go new file mode 100644 index 0000000000..a05121d28c --- /dev/null +++ b/cmd/utils/export_test.go @@ -0,0 +1,198 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of go-ethereum. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package utils + +import ( + "fmt" + "os" + "strings" + "testing" + "time" + + "github.com/ethereum/go-ethereum/core/rawdb" + "github.com/ethereum/go-ethereum/rlp" +) + +// TestExport does basic sanity checks on the export/import functionality +func TestExport(t *testing.T) { + f := fmt.Sprintf("%v/tempdump", os.TempDir()) + defer func() { + os.Remove(f) + }() + testExport(t, f) +} + +func TestExportGzip(t *testing.T) { + f := fmt.Sprintf("%v/tempdump.gz", os.TempDir()) + defer func() { + os.Remove(f) + }() + testExport(t, f) +} + +type testIterator struct { + index int +} + +func newTestIterator() *testIterator { + return &testIterator{index: -1} +} + +func (iter *testIterator) Next() (byte, []byte, []byte, bool) { + if iter.index >= 999 { + return 0, nil, nil, false + } + iter.index += 1 + if iter.index == 42 { + iter.index += 1 + } + return OpBatchAdd, []byte(fmt.Sprintf("key-%04d", iter.index)), + []byte(fmt.Sprintf("value %d", iter.index)), true +} + +func (iter *testIterator) Release() {} + +func testExport(t *testing.T, f string) { + err := ExportChaindata(f, "testdata", newTestIterator(), make(chan struct{})) + if err != nil { + t.Fatal(err) + } + db := rawdb.NewMemoryDatabase() + err = ImportLDBData(db, f, 5, make(chan struct{})) + if err != nil { + t.Fatal(err) + } + // verify + for i := 0; i < 1000; i++ { + v, err := db.Get([]byte(fmt.Sprintf("key-%04d", i))) + if (i < 5 || i == 42) && err == nil { + t.Fatalf("expected no element at idx %d, got '%v'", i, string(v)) + } + if !(i < 5 || i == 42) { + if err != nil { + t.Fatalf("expected element idx %d: %v", i, err) + } + if have, want := string(v), fmt.Sprintf("value %d", i); have != want { + t.Fatalf("have %v, want %v", have, want) + } + } + } + v, err := db.Get([]byte(fmt.Sprintf("key-%04d", 1000))) + if err == nil { + t.Fatalf("expected no element at idx %d, got '%v'", 1000, string(v)) + } +} + +// testDeletion tests if the deletion markers can be exported/imported correctly +func TestDeletionExport(t *testing.T) { + f := fmt.Sprintf("%v/tempdump", os.TempDir()) + defer func() { + os.Remove(f) + }() + testDeletion(t, f) +} + +// TestDeletionExportGzip tests if the deletion markers can be exported/imported +// correctly with gz compression. +func TestDeletionExportGzip(t *testing.T) { + f := fmt.Sprintf("%v/tempdump.gz", os.TempDir()) + defer func() { + os.Remove(f) + }() + testDeletion(t, f) +} + +type deletionIterator struct { + index int +} + +func newDeletionIterator() *deletionIterator { + return &deletionIterator{index: -1} +} + +func (iter *deletionIterator) Next() (byte, []byte, []byte, bool) { + if iter.index >= 999 { + return 0, nil, nil, false + } + iter.index += 1 + if iter.index == 42 { + iter.index += 1 + } + return OpBatchDel, []byte(fmt.Sprintf("key-%04d", iter.index)), nil, true +} + +func (iter *deletionIterator) Release() {} + +func testDeletion(t *testing.T, f string) { + err := ExportChaindata(f, "testdata", newDeletionIterator(), make(chan struct{})) + if err != nil { + t.Fatal(err) + } + db := rawdb.NewMemoryDatabase() + for i := 0; i < 1000; i++ { + db.Put([]byte(fmt.Sprintf("key-%04d", i)), []byte(fmt.Sprintf("value %d", i))) + } + err = ImportLDBData(db, f, 5, make(chan struct{})) + if err != nil { + t.Fatal(err) + } + for i := 0; i < 1000; i++ { + v, err := db.Get([]byte(fmt.Sprintf("key-%04d", i))) + if i < 5 || i == 42 { + if err != nil { + t.Fatalf("expected element at idx %d, got '%v'", i, err) + } + if have, want := string(v), fmt.Sprintf("value %d", i); have != want { + t.Fatalf("have %v, want %v", have, want) + } + } + if !(i < 5 || i == 42) { + if err == nil { + t.Fatalf("expected no element idx %d: %v", i, string(v)) + } + } + } +} + +// TestImportFutureFormat tests that we reject unsupported future versions. +func TestImportFutureFormat(t *testing.T) { + f := fmt.Sprintf("%v/tempdump-future", os.TempDir()) + defer func() { + os.Remove(f) + }() + fh, err := os.OpenFile(f, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, os.ModePerm) + if err != nil { + t.Fatal(err) + } + defer fh.Close() + if err := rlp.Encode(fh, &exportHeader{ + Magic: exportMagic, + Version: 500, + Kind: "testdata", + UnixTime: uint64(time.Now().Unix()), + }); err != nil { + t.Fatal(err) + } + db2 := rawdb.NewMemoryDatabase() + err = ImportLDBData(db2, f, 0, make(chan struct{})) + if err == nil { + t.Fatal("Expected error, got none") + } + if !strings.HasPrefix(err.Error(), "incompatible version") { + t.Fatalf("wrong error: %v", err) + } +} diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index c0db932dd7..40c8db4cc2 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -45,6 +45,7 @@ import ( "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/eth" + "github.com/ethereum/go-ethereum/eth/catalyst" "github.com/ethereum/go-ethereum/eth/downloader" "github.com/ethereum/go-ethereum/eth/ethconfig" "github.com/ethereum/go-ethereum/eth/gasprice" @@ -163,6 +164,10 @@ var ( Name: "bor-mainnet", Usage: "Bor mainnet", } + SepoliaFlag = cli.BoolFlag{ + Name: "sepolia", + Usage: "Sepolia network: pre-configured proof-of-work test network", + } DeveloperFlag = cli.BoolFlag{ Name: "dev", Usage: "Ephemeral proof-of-authority network with a pre-funded developer account, mining enabled", @@ -171,6 +176,11 @@ var ( Name: "dev.period", Usage: "Block period to use in developer mode (0 = mine only if transaction pending)", } + DeveloperGasLimitFlag = cli.Uint64Flag{ + Name: "dev.gaslimit", + Usage: "Initial block gas limit", + Value: 11500000, + } IdentityFlag = cli.StringFlag{ Name: "identity", Usage: "Custom node name", @@ -213,7 +223,7 @@ var ( defaultSyncMode = ethconfig.Defaults.SyncMode SyncModeFlag = TextMarshalerFlag{ Name: "syncmode", - Usage: `Blockchain sync mode ("fast", "full", "snap" or "light")`, + Usage: `Blockchain sync mode ("snap", "full" or "light")`, Value: &defaultSyncMode, } GCModeFlag = cli.StringFlag{ @@ -243,9 +253,13 @@ var ( Usage: "Megabytes of memory allocated to bloom-filter for pruning", Value: 2048, } - OverrideLondonFlag = cli.Uint64Flag{ - Name: "override.london", - Usage: "Manually specify London fork-block, overriding the bundled setting", + OverrideArrowGlacierFlag = cli.Uint64Flag{ + Name: "override.arrowglacier", + Usage: "Manually specify Arrow Glacier fork-block, overriding the bundled setting", + } + OverrideTerminalTotalDifficulty = cli.Uint64Flag{ + Name: "override.terminaltotaldifficulty", + Usage: "Manually specify TerminalTotalDifficulty, overriding the bundled setting", } // Light server and client settings LightServeFlag = cli.IntFlag{ @@ -698,7 +712,7 @@ var ( } GpoMaxGasPriceFlag = cli.Int64Flag{ Name: "gpo.maxprice", - Usage: "Maximum gas price will be recommended by gpo", + Usage: "Maximum transaction priority fee (or gasprice before London fork) to be recommended by gpo", Value: ethconfig.Defaults.GPO.MaxPrice.Int64(), } GpoIgnoreGasPriceFlag = cli.Int64Flag{ @@ -814,6 +828,9 @@ func MakeDataDir(ctx *cli.Context) string { homeDir, _ := os.UserHomeDir() return filepath.Join(homeDir, "/.bor/data") } + if ctx.GlobalBool(SepoliaFlag.Name) { + return filepath.Join(path, "sepolia") + } return path } Fatalf("Cannot determine default data directory, please set manually (--datadir)") @@ -862,6 +879,8 @@ func setBootstrapNodes(ctx *cli.Context, cfg *p2p.Config) { urls = SplitAndTrim(ctx.GlobalString(BootnodesFlag.Name)) case ctx.GlobalBool(RopstenFlag.Name): urls = params.RopstenBootnodes + case ctx.GlobalBool(SepoliaFlag.Name): + urls = params.SepoliaBootnodes case ctx.GlobalBool(RinkebyFlag.Name): urls = params.RinkebyBootnodes case ctx.GlobalBool(GoerliFlag.Name): @@ -1202,7 +1221,7 @@ func SetP2PConfig(ctx *cli.Context, cfg *p2p.Config) { cfg.NetRestrict = list } - if ctx.GlobalBool(DeveloperFlag.Name) || ctx.GlobalBool(CatalystFlag.Name) { + if ctx.GlobalBool(DeveloperFlag.Name) { // --dev mode can't use p2p networking. cfg.MaxPeers = 0 cfg.ListenAddr = "" @@ -1295,6 +1314,8 @@ func setDataDir(ctx *cli.Context, cfg *node.Config) { case ctx.GlobalBool(BorMainnetFlag.Name) && cfg.DataDir == node.DefaultDataDir(): homeDir, _ := os.UserHomeDir() cfg.DataDir = filepath.Join(homeDir, "/.bor/data") + case ctx.GlobalBool(SepoliaFlag.Name) && cfg.DataDir == node.DefaultDataDir(): + cfg.DataDir = filepath.Join(node.DefaultDataDir(), "sepolia") } } @@ -1480,7 +1501,7 @@ func CheckExclusive(ctx *cli.Context, args ...interface{}) { // SetEthConfig applies eth-related command line flags to the config. func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) { // Avoid conflicting network flags - CheckExclusive(ctx, MainnetFlag, DeveloperFlag, RopstenFlag, RinkebyFlag, GoerliFlag, MumbaiFlag, BorMainnetFlag) + CheckExclusive(ctx, MainnetFlag, DeveloperFlag, RopstenFlag, RinkebyFlag, GoerliFlag, MumbaiFlag, BorMainnetFlag, SepoliaFlag) CheckExclusive(ctx, LightServeFlag, SyncModeFlag, "light") CheckExclusive(ctx, DeveloperFlag, ExternalSignerFlag) // Can't use both ephemeral unlocked and external signer if ctx.GlobalString(GCModeFlag.Name) == "archive" && ctx.GlobalUint64(TxLookupLimitFlag.Name) != 0 { @@ -1628,6 +1649,12 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) { } cfg.Genesis = core.DefaultRopstenGenesisBlock() SetDNSDiscoveryDefaults(cfg, params.RopstenGenesisHash) + case ctx.GlobalBool(SepoliaFlag.Name): + if !ctx.GlobalIsSet(NetworkIdFlag.Name) { + cfg.NetworkId = 11155111 + } + cfg.Genesis = core.DefaultSepoliaGenesisBlock() + SetDNSDiscoveryDefaults(cfg, params.SepoliaGenesisHash) case ctx.GlobalBool(RinkebyFlag.Name): if !ctx.GlobalIsSet(NetworkIdFlag.Name) { cfg.NetworkId = 4 @@ -1684,7 +1711,7 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) { log.Info("Using developer account", "address", developer.Address) // Create a new developer genesis block or reuse existing one - cfg.Genesis = core.DeveloperGenesisBlock(uint64(ctx.GlobalInt(DeveloperPeriodFlag.Name)), developer.Address) + cfg.Genesis = core.DeveloperGenesisBlock(uint64(ctx.GlobalInt(DeveloperPeriodFlag.Name)), ctx.GlobalUint64(DeveloperGasLimitFlag.Name), developer.Address) if ctx.GlobalIsSet(DataDirFlag.Name) { // Check if we have an already initialized chain and fall back to // that if so. Otherwise we need to generate a new genesis spec. @@ -1723,13 +1750,18 @@ func SetDNSDiscoveryDefaults(cfg *ethconfig.Config, genesis common.Hash) { // RegisterEthService adds an Ethereum client to the stack. // The second return value is the full node instance, which may be nil if the // node is running as a light client. -func RegisterEthService(stack *node.Node, cfg *ethconfig.Config) (ethapi.Backend, *eth.Ethereum) { +func RegisterEthService(stack *node.Node, cfg *ethconfig.Config, isCatalyst bool) (ethapi.Backend, *eth.Ethereum) { if cfg.SyncMode == downloader.LightSync { backend, err := les.New(stack, cfg) if err != nil { Fatalf("Failed to register the Ethereum service: %v", err) } stack.RegisterAPIs(tracers.APIs(backend.ApiBackend)) + if isCatalyst { + if err := catalyst.RegisterLight(stack, backend); err != nil { + Fatalf("Failed to register the catalyst service: %v", err) + } + } return backend.ApiBackend, nil } backend, err := eth.New(stack, cfg) @@ -1742,6 +1774,11 @@ func RegisterEthService(stack *node.Node, cfg *ethconfig.Config) (ethapi.Backend Fatalf("Failed to create the LES server: %v", err) } } + if isCatalyst { + if err := catalyst.Register(stack, backend); err != nil { + Fatalf("Failed to register the catalyst service: %v", err) + } + } stack.RegisterAPIs(tracers.APIs(backend.APIBackend)) return backend.APIBackend, backend } @@ -1866,6 +1903,8 @@ func MakeGenesis(ctx *cli.Context) *core.Genesis { genesis = core.DefaultGenesisBlock() case ctx.GlobalBool(RopstenFlag.Name): genesis = core.DefaultRopstenGenesisBlock() + case ctx.GlobalBool(SepoliaFlag.Name): + genesis = core.DefaultSepoliaGenesisBlock() case ctx.GlobalBool(RinkebyFlag.Name): genesis = core.DefaultRinkebyGenesisBlock() case ctx.GlobalBool(GoerliFlag.Name): diff --git a/common/hexutil/hexutil.go b/common/hexutil/hexutil.go index 46223a2815..e0241f5f2b 100644 --- a/common/hexutil/hexutil.go +++ b/common/hexutil/hexutil.go @@ -176,13 +176,14 @@ func MustDecodeBig(input string) *big.Int { } // EncodeBig encodes bigint as a hex string with 0x prefix. -// The sign of the integer is ignored. func EncodeBig(bigint *big.Int) string { - nbits := bigint.BitLen() - if nbits == 0 { + if sign := bigint.Sign(); sign == 0 { return "0x0" + } else if sign > 0 { + return "0x" + bigint.Text(16) + } else { + return "-0x" + bigint.Text(16)[1:] } - return fmt.Sprintf("%#x", bigint) } func has0xPrefix(input string) bool { diff --git a/common/hexutil/hexutil_test.go b/common/hexutil/hexutil_test.go index ed6fccc3ca..f2b800d82c 100644 --- a/common/hexutil/hexutil_test.go +++ b/common/hexutil/hexutil_test.go @@ -201,3 +201,15 @@ func TestDecodeUint64(t *testing.T) { } } } + +func BenchmarkEncodeBig(b *testing.B) { + for _, bench := range encodeBigTests { + b.Run(bench.want, func(b *testing.B) { + b.ReportAllocs() + bigint := bench.input.(*big.Int) + for i := 0; i < b.N; i++ { + EncodeBig(bigint) + } + }) + } +} diff --git a/consensus/beacon/consensus.go b/consensus/beacon/consensus.go new file mode 100644 index 0000000000..9467fea67b --- /dev/null +++ b/consensus/beacon/consensus.go @@ -0,0 +1,376 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package beacon + +import ( + "errors" + "fmt" + "math/big" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/consensus" + "github.com/ethereum/go-ethereum/consensus/misc" + "github.com/ethereum/go-ethereum/core/state" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/params" + "github.com/ethereum/go-ethereum/rpc" + "github.com/ethereum/go-ethereum/trie" +) + +// Proof-of-stake protocol constants. +var ( + beaconDifficulty = common.Big0 // The default block difficulty in the beacon consensus + beaconNonce = types.EncodeNonce(0) // The default block nonce in the beacon consensus +) + +// Various error messages to mark blocks invalid. These should be private to +// prevent engine specific errors from being referenced in the remainder of the +// codebase, inherently breaking if the engine is swapped out. Please put common +// error types into the consensus package. +var ( + errTooManyUncles = errors.New("too many uncles") + errInvalidMixDigest = errors.New("invalid mix digest") + errInvalidNonce = errors.New("invalid nonce") + errInvalidUncleHash = errors.New("invalid uncle hash") +) + +// Beacon is a consensus engine that combines the eth1 consensus and proof-of-stake +// algorithm. There is a special flag inside to decide whether to use legacy consensus +// rules or new rules. The transition rule is described in the eth1/2 merge spec. +// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-3675.md +// +// The beacon here is a half-functional consensus engine with partial functions which +// is only used for necessary consensus checks. The legacy consensus engine can be any +// engine implements the consensus interface (except the beacon itself). +type Beacon struct { + ethone consensus.Engine // Original consensus engine used in eth1, e.g. ethash or clique +} + +// New creates a consensus engine with the given embedded eth1 engine. +func New(ethone consensus.Engine) *Beacon { + if _, ok := ethone.(*Beacon); ok { + panic("nested consensus engine") + } + return &Beacon{ethone: ethone} +} + +// Author implements consensus.Engine, returning the verified author of the block. +func (beacon *Beacon) Author(header *types.Header) (common.Address, error) { + if !beacon.IsPoSHeader(header) { + return beacon.ethone.Author(header) + } + return header.Coinbase, nil +} + +// VerifyHeader checks whether a header conforms to the consensus rules of the +// stock Ethereum consensus engine. +func (beacon *Beacon) VerifyHeader(chain consensus.ChainHeaderReader, header *types.Header, seal bool) error { + reached, _ := IsTTDReached(chain, header.ParentHash, header.Number.Uint64()-1) + if !reached { + return beacon.ethone.VerifyHeader(chain, header, seal) + } + // Short circuit if the parent is not known + parent := chain.GetHeader(header.ParentHash, header.Number.Uint64()-1) + if parent == nil { + return consensus.ErrUnknownAncestor + } + // Sanity checks passed, do a proper verification + return beacon.verifyHeader(chain, header, parent) +} + +// VerifyHeaders is similar to VerifyHeader, but verifies a batch of headers +// concurrently. The method returns a quit channel to abort the operations and +// a results channel to retrieve the async verifications. +// VerifyHeaders expect the headers to be ordered and continuous. +func (beacon *Beacon) VerifyHeaders(chain consensus.ChainHeaderReader, headers []*types.Header, seals []bool) (chan<- struct{}, <-chan error) { + if !beacon.IsPoSHeader(headers[len(headers)-1]) { + return beacon.ethone.VerifyHeaders(chain, headers, seals) + } + var ( + preHeaders []*types.Header + postHeaders []*types.Header + preSeals []bool + ) + for index, header := range headers { + if beacon.IsPoSHeader(header) { + preHeaders = headers[:index] + postHeaders = headers[index:] + preSeals = seals[:index] + break + } + } + // All the headers have passed the transition point, use new rules. + if len(preHeaders) == 0 { + return beacon.verifyHeaders(chain, headers, nil) + } + // The transition point exists in the middle, separate the headers + // into two batches and apply different verification rules for them. + var ( + abort = make(chan struct{}) + results = make(chan error, len(headers)) + ) + go func() { + var ( + old, new, out = 0, len(preHeaders), 0 + errors = make([]error, len(headers)) + done = make([]bool, len(headers)) + oldDone, oldResult = beacon.ethone.VerifyHeaders(chain, preHeaders, preSeals) + newDone, newResult = beacon.verifyHeaders(chain, postHeaders, preHeaders[len(preHeaders)-1]) + ) + for { + for ; done[out]; out++ { + results <- errors[out] + if out == len(headers)-1 { + return + } + } + select { + case err := <-oldResult: + errors[old], done[old] = err, true + old++ + case err := <-newResult: + errors[new], done[new] = err, true + new++ + case <-abort: + close(oldDone) + close(newDone) + return + } + } + }() + return abort, results +} + +// VerifyUncles verifies that the given block's uncles conform to the consensus +// rules of the Ethereum consensus engine. +func (beacon *Beacon) VerifyUncles(chain consensus.ChainReader, block *types.Block) error { + if !beacon.IsPoSHeader(block.Header()) { + return beacon.ethone.VerifyUncles(chain, block) + } + // Verify that there is no uncle block. It's explicitly disabled in the beacon + if len(block.Uncles()) > 0 { + return errTooManyUncles + } + return nil +} + +// verifyHeader checks whether a header conforms to the consensus rules of the +// stock Ethereum consensus engine. The difference between the beacon and classic is +// (a) The following fields are expected to be constants: +// - difficulty is expected to be 0 +// - nonce is expected to be 0 +// - unclehash is expected to be Hash(emptyHeader) +// to be the desired constants +// (b) the timestamp is not verified anymore +// (c) the extradata is limited to 32 bytes +func (beacon *Beacon) verifyHeader(chain consensus.ChainHeaderReader, header, parent *types.Header) error { + // Ensure that the header's extra-data section is of a reasonable size + if len(header.Extra) > 32 { + return fmt.Errorf("extra-data longer than 32 bytes (%d)", len(header.Extra)) + } + // Verify the seal parts. Ensure the mixhash, nonce and uncle hash are the expected value. + if header.MixDigest != (common.Hash{}) { + return errInvalidMixDigest + } + if header.Nonce != beaconNonce { + return errInvalidNonce + } + if header.UncleHash != types.EmptyUncleHash { + return errInvalidUncleHash + } + // Verify the block's difficulty to ensure it's the default constant + if beaconDifficulty.Cmp(header.Difficulty) != 0 { + return fmt.Errorf("invalid difficulty: have %v, want %v", header.Difficulty, beaconDifficulty) + } + // Verify that the gas limit is <= 2^63-1 + if header.GasLimit > params.MaxGasLimit { + return fmt.Errorf("invalid gasLimit: have %v, max %v", header.GasLimit, params.MaxGasLimit) + } + // Verify that the gasUsed is <= gasLimit + if header.GasUsed > header.GasLimit { + return fmt.Errorf("invalid gasUsed: have %d, gasLimit %d", header.GasUsed, header.GasLimit) + } + // Verify that the block number is parent's +1 + if diff := new(big.Int).Sub(header.Number, parent.Number); diff.Cmp(common.Big1) != 0 { + return consensus.ErrInvalidNumber + } + // Verify the header's EIP-1559 attributes. + return misc.VerifyEip1559Header(chain.Config(), parent, header) +} + +// verifyHeaders is similar to verifyHeader, but verifies a batch of headers +// concurrently. The method returns a quit channel to abort the operations and +// a results channel to retrieve the async verifications. An additional parent +// header will be passed if the relevant header is not in the database yet. +func (beacon *Beacon) verifyHeaders(chain consensus.ChainHeaderReader, headers []*types.Header, ancestor *types.Header) (chan<- struct{}, <-chan error) { + var ( + abort = make(chan struct{}) + results = make(chan error, len(headers)) + ) + go func() { + for i, header := range headers { + var parent *types.Header + if i == 0 { + if ancestor != nil { + parent = ancestor + } else { + parent = chain.GetHeader(headers[0].ParentHash, headers[0].Number.Uint64()-1) + } + } else if headers[i-1].Hash() == headers[i].ParentHash { + parent = headers[i-1] + } + if parent == nil { + select { + case <-abort: + return + case results <- consensus.ErrUnknownAncestor: + } + continue + } + err := beacon.verifyHeader(chain, header, parent) + select { + case <-abort: + return + case results <- err: + } + } + }() + return abort, results +} + +// Prepare implements consensus.Engine, initializing the difficulty field of a +// header to conform to the beacon protocol. The changes are done inline. +func (beacon *Beacon) Prepare(chain consensus.ChainHeaderReader, header *types.Header) error { + // Transition isn't triggered yet, use the legacy rules for preparation. + reached, err := IsTTDReached(chain, header.ParentHash, header.Number.Uint64()-1) + if err != nil { + return err + } + if !reached { + return beacon.ethone.Prepare(chain, header) + } + header.Difficulty = beaconDifficulty + return nil +} + +// Finalize implements consensus.Engine, setting the final state on the header +func (beacon *Beacon) Finalize(chain consensus.ChainHeaderReader, header *types.Header, state *state.StateDB, txs []*types.Transaction, uncles []*types.Header) { + // Finalize is different with Prepare, it can be used in both block generation + // and verification. So determine the consensus rules by header type. + if !beacon.IsPoSHeader(header) { + beacon.ethone.Finalize(chain, header, state, txs, uncles) + return + } + // The block reward is no longer handled here. It's done by the + // external consensus engine. + header.Root = state.IntermediateRoot(true) +} + +// FinalizeAndAssemble implements consensus.Engine, setting the final state and +// assembling the block. +func (beacon *Beacon) FinalizeAndAssemble(chain consensus.ChainHeaderReader, header *types.Header, state *state.StateDB, txs []*types.Transaction, uncles []*types.Header, receipts []*types.Receipt) (*types.Block, error) { + // FinalizeAndAssemble is different with Prepare, it can be used in both block + // generation and verification. So determine the consensus rules by header type. + if !beacon.IsPoSHeader(header) { + return beacon.ethone.FinalizeAndAssemble(chain, header, state, txs, uncles, receipts) + } + // Finalize and assemble the block + beacon.Finalize(chain, header, state, txs, uncles) + return types.NewBlock(header, txs, uncles, receipts, trie.NewStackTrie(nil)), nil +} + +// Seal generates a new sealing request for the given input block and pushes +// the result into the given channel. +// +// Note, the method returns immediately and will send the result async. More +// than one result may also be returned depending on the consensus algorithm. +func (beacon *Beacon) Seal(chain consensus.ChainHeaderReader, block *types.Block, results chan<- *types.Block, stop <-chan struct{}) error { + if !beacon.IsPoSHeader(block.Header()) { + return beacon.ethone.Seal(chain, block, results, stop) + } + // The seal verification is done by the external consensus engine, + // return directly without pushing any block back. In another word + // beacon won't return any result by `results` channel which may + // blocks the receiver logic forever. + return nil +} + +// SealHash returns the hash of a block prior to it being sealed. +func (beacon *Beacon) SealHash(header *types.Header) common.Hash { + return beacon.ethone.SealHash(header) +} + +// CalcDifficulty is the difficulty adjustment algorithm. It returns +// the difficulty that a new block should have when created at time +// given the parent block's time and difficulty. +func (beacon *Beacon) CalcDifficulty(chain consensus.ChainHeaderReader, time uint64, parent *types.Header) *big.Int { + // Transition isn't triggered yet, use the legacy rules for calculation + if reached, _ := IsTTDReached(chain, parent.Hash(), parent.Number.Uint64()); !reached { + return beacon.ethone.CalcDifficulty(chain, time, parent) + } + return beaconDifficulty +} + +// APIs implements consensus.Engine, returning the user facing RPC APIs. +func (beacon *Beacon) APIs(chain consensus.ChainHeaderReader) []rpc.API { + return beacon.ethone.APIs(chain) +} + +// Close shutdowns the consensus engine +func (beacon *Beacon) Close() error { + return beacon.ethone.Close() +} + +// IsPoSHeader reports the header belongs to the PoS-stage with some special fields. +// This function is not suitable for a part of APIs like Prepare or CalcDifficulty +// because the header difficulty is not set yet. +func (beacon *Beacon) IsPoSHeader(header *types.Header) bool { + if header.Difficulty == nil { + panic("IsPoSHeader called with invalid difficulty") + } + return header.Difficulty.Cmp(beaconDifficulty) == 0 +} + +// InnerEngine returns the embedded eth1 consensus engine. +func (beacon *Beacon) InnerEngine() consensus.Engine { + return beacon.ethone +} + +// SetThreads updates the mining threads. Delegate the call +// to the eth1 engine if it's threaded. +func (beacon *Beacon) SetThreads(threads int) { + type threaded interface { + SetThreads(threads int) + } + if th, ok := beacon.ethone.(threaded); ok { + th.SetThreads(threads) + } +} + +// IsTTDReached checks if the TotalTerminalDifficulty has been surpassed on the `parentHash` block. +// It depends on the parentHash already being stored in the database. +// If the parentHash is not stored in the database a UnknownAncestor error is returned. +func IsTTDReached(chain consensus.ChainHeaderReader, parentHash common.Hash, number uint64) (bool, error) { + if chain.Config().TerminalTotalDifficulty == nil { + return false, nil + } + td := chain.GetTd(parentHash, number) + if td == nil { + return false, consensus.ErrUnknownAncestor + } + return td.Cmp(chain.Config().TerminalTotalDifficulty) >= 0, nil +} diff --git a/consensus/clique/api.go b/consensus/clique/api.go index 6129b5cc52..cb270d321d 100644 --- a/consensus/clique/api.go +++ b/consensus/clique/api.go @@ -196,7 +196,11 @@ func (sb *blockNumberOrHashOrRLP) UnmarshalJSON(data []byte) error { if err := json.Unmarshal(data, &input); err != nil { return err } - sb.RLP = hexutil.MustDecode(input) + blob, err := hexutil.Decode(input) + if err != nil { + return err + } + sb.RLP = blob return nil } @@ -214,6 +218,9 @@ func (api *API) GetSigner(rlpOrBlockNr *blockNumberOrHashOrRLP) (common.Address, } else if number, ok := blockNrOrHash.Number(); ok { header = api.chain.GetHeaderByNumber(uint64(number.Int64())) } + if header == nil { + return common.Address{}, fmt.Errorf("missing block %v", blockNrOrHash.String()) + } return api.clique.Author(header) } block := new(types.Block) diff --git a/consensus/clique/clique.go b/consensus/clique/clique.go index a6a16c84af..685186817d 100644 --- a/consensus/clique/clique.go +++ b/consensus/clique/clique.go @@ -295,9 +295,8 @@ func (c *Clique) verifyHeader(chain consensus.ChainHeaderReader, header *types.H } } // Verify that the gas limit is <= 2^63-1 - cap := uint64(0x7fffffffffffffff) - if header.GasLimit > cap { - return fmt.Errorf("invalid gasLimit: have %v, max %v", header.GasLimit, cap) + if header.GasLimit > params.MaxGasLimit { + return fmt.Errorf("invalid gasLimit: have %v, max %v", header.GasLimit, params.MaxGasLimit) } // If all checks passed, validate any special fields for hard forks if err := misc.VerifyForkHashes(chain.Config(), header, false); err != nil { @@ -600,8 +599,7 @@ func (c *Clique) Seal(chain consensus.ChainHeaderReader, block *types.Block, res } // For 0-period chains, refuse to seal empty blocks (no reward but would spin sealing) if c.config.Period == 0 && len(block.Transactions()) == 0 { - log.Info("Sealing paused, waiting for transactions") - return nil + return errors.New("sealing paused while waiting for transactions") } // Don't hold the signer fields for the entire sealing procedure c.lock.RLock() @@ -621,8 +619,7 @@ func (c *Clique) Seal(chain consensus.ChainHeaderReader, block *types.Block, res if recent == signer { // Signer is among recents, only wait if the current block doesn't shift it out if limit := uint64(len(snap.Signers)/2 + 1); number < limit || seen > number-limit { - log.Info("Signed recently, must wait for others") - return nil + return errors.New("signed recently, must wait for others") } } } diff --git a/consensus/consensus.go b/consensus/consensus.go index 2a5aac945d..af8ce98ff3 100644 --- a/consensus/consensus.go +++ b/consensus/consensus.go @@ -44,6 +44,9 @@ type ChainHeaderReader interface { // GetHeaderByHash retrieves a block header from the database by its hash. GetHeaderByHash(hash common.Hash) *types.Header + + // GetTd retrieves the total difficulty from the database by hash and number. + GetTd(hash common.Hash, number uint64) *big.Int } // ChainReader defines a small collection of methods needed to access the local diff --git a/consensus/ethash/consensus.go b/consensus/ethash/consensus.go index 6ad9fc22be..7dec436a26 100644 --- a/consensus/ethash/consensus.go +++ b/consensus/ethash/consensus.go @@ -45,6 +45,11 @@ var ( maxUncles = 2 // Maximum number of uncles allowed in a single block allowedFutureBlockTimeSeconds = int64(15) // Max seconds from current time allowed for blocks, before they're considered future blocks + // calcDifficultyEip4345 is the difficulty adjustment algorithm as specified by EIP 4345. + // It offsets the bomb a total of 10.7M blocks. + // Specification EIP-4345: https://eips.ethereum.org/EIPS/eip-4345 + calcDifficultyEip4345 = makeDifficultyCalculator(big.NewInt(10_700_000)) + // calcDifficultyEip3554 is the difficulty adjustment algorithm as specified by EIP 3554. // It offsets the bomb a total of 9.7M blocks. // Specification EIP-3554: https://eips.ethereum.org/EIPS/eip-3554 @@ -276,9 +281,8 @@ func (ethash *Ethash) verifyHeader(chain consensus.ChainHeaderReader, header, pa return fmt.Errorf("invalid difficulty: have %v, want %v", header.Difficulty, expected) } // Verify that the gas limit is <= 2^63-1 - cap := uint64(0x7fffffffffffffff) - if header.GasLimit > cap { - return fmt.Errorf("invalid gasLimit: have %v, max %v", header.GasLimit, cap) + if header.GasLimit > params.MaxGasLimit { + return fmt.Errorf("invalid gasLimit: have %v, max %v", header.GasLimit, params.MaxGasLimit) } // Verify that the gasUsed is <= gasLimit if header.GasUsed > header.GasLimit { @@ -330,6 +334,8 @@ func (ethash *Ethash) CalcDifficulty(chain consensus.ChainHeaderReader, time uin func CalcDifficulty(config *params.ChainConfig, time uint64, parent *types.Header) *big.Int { next := new(big.Int).Add(parent.Number, big1) switch { + case config.IsArrowGlacier(next): + return calcDifficultyEip4345(time, parent) case config.IsLondon(next): return calcDifficultyEip3554(time, parent) case config.IsMuirGlacier(next): diff --git a/consensus/ethash/ethash.go b/consensus/ethash/ethash.go index ec06d02a54..4e33d99c8d 100644 --- a/consensus/ethash/ethash.go +++ b/consensus/ethash/ethash.go @@ -136,13 +136,16 @@ func memoryMapAndGenerate(path string, size uint64, lock bool, generator func(bu if err != nil { return nil, nil, nil, err } - if err = dump.Truncate(int64(len(dumpMagic))*4 + int64(size)); err != nil { + if err = ensureSize(dump, int64(len(dumpMagic))*4+int64(size)); err != nil { + dump.Close() + os.Remove(temp) return nil, nil, nil, err } // Memory map the file for writing and fill it with the generator mem, buffer, err := memoryMapFile(dump, true) if err != nil { dump.Close() + os.Remove(temp) return nil, nil, nil, err } copy(buffer, dumpMagic) @@ -358,7 +361,7 @@ func (d *dataset) generate(dir string, limit int, lock bool, test bool) { if err != nil { logger.Error("Failed to generate mapped ethash dataset", "err", err) - d.dataset = make([]uint32, dsize/2) + d.dataset = make([]uint32, dsize/4) generateDataset(d.dataset, d.epoch, cache) } // Iterate over all previous instances and delete old ones diff --git a/consensus/ethash/mmap_help_linux.go b/consensus/ethash/mmap_help_linux.go new file mode 100644 index 0000000000..b40a1dd25c --- /dev/null +++ b/consensus/ethash/mmap_help_linux.go @@ -0,0 +1,35 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +//go:build linux +// +build linux + +package ethash + +import ( + "os" + + "golang.org/x/sys/unix" +) + +// ensureSize expands the file to the given size. This is to prevent runtime +// errors later on, if the underlying file expands beyond the disk capacity, +// even though it ostensibly is already expanded, but due to being sparse +// does not actually occupy the full declared size on disk. +func ensureSize(f *os.File, size int64) error { + // Docs: https://www.man7.org/linux/man-pages/man2/fallocate.2.html + return unix.Fallocate(int(f.Fd()), 0, 0, size) +} diff --git a/consensus/ethash/mmap_help_other.go b/consensus/ethash/mmap_help_other.go new file mode 100644 index 0000000000..8ad514ce42 --- /dev/null +++ b/consensus/ethash/mmap_help_other.go @@ -0,0 +1,36 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +//go:build !linux +// +build !linux + +package ethash + +import ( + "os" +) + +// ensureSize expands the file to the given size. This is to prevent runtime +// errors later on, if the underlying file expands beyond the disk capacity, +// even though it ostensibly is already expanded, but due to being sparse +// does not actually occupy the full declared size on disk. +func ensureSize(f *os.File, size int64) error { + // On systems which do not support fallocate, we merely truncate it. + // More robust alternatives would be to + // - Use posix_fallocate, or + // - explicitly fill the file with zeroes. + return f.Truncate(size) +} diff --git a/consensus/merger.go b/consensus/merger.go new file mode 100644 index 0000000000..ffbcbf2b85 --- /dev/null +++ b/consensus/merger.go @@ -0,0 +1,110 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package consensus + +import ( + "fmt" + "sync" + + "github.com/ethereum/go-ethereum/core/rawdb" + "github.com/ethereum/go-ethereum/ethdb" + "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/rlp" +) + +// transitionStatus describes the status of eth1/2 transition. This switch +// between modes is a one-way action which is triggered by corresponding +// consensus-layer message. +type transitionStatus struct { + LeftPoW bool // The flag is set when the first NewHead message received + EnteredPoS bool // The flag is set when the first FinalisedBlock message received +} + +// Merger is an internal help structure used to track the eth1/2 transition status. +// It's a common structure can be used in both full node and light client. +type Merger struct { + db ethdb.KeyValueStore + status transitionStatus + mu sync.RWMutex +} + +// NewMerger creates a new Merger which stores its transition status in the provided db. +func NewMerger(db ethdb.KeyValueStore) *Merger { + var status transitionStatus + blob := rawdb.ReadTransitionStatus(db) + if len(blob) != 0 { + if err := rlp.DecodeBytes(blob, &status); err != nil { + log.Crit("Failed to decode the transition status", "err", err) + } + } + return &Merger{ + db: db, + status: status, + } +} + +// ReachTTD is called whenever the first NewHead message received +// from the consensus-layer. +func (m *Merger) ReachTTD() { + m.mu.Lock() + defer m.mu.Unlock() + + if m.status.LeftPoW { + return + } + m.status = transitionStatus{LeftPoW: true} + blob, err := rlp.EncodeToBytes(m.status) + if err != nil { + panic(fmt.Sprintf("Failed to encode the transition status: %v", err)) + } + rawdb.WriteTransitionStatus(m.db, blob) + log.Info("Left PoW stage") +} + +// FinalizePoS is called whenever the first FinalisedBlock message received +// from the consensus-layer. +func (m *Merger) FinalizePoS() { + m.mu.Lock() + defer m.mu.Unlock() + + if m.status.EnteredPoS { + return + } + m.status = transitionStatus{LeftPoW: true, EnteredPoS: true} + blob, err := rlp.EncodeToBytes(m.status) + if err != nil { + panic(fmt.Sprintf("Failed to encode the transition status: %v", err)) + } + rawdb.WriteTransitionStatus(m.db, blob) + log.Info("Entered PoS stage") +} + +// TDDReached reports whether the chain has left the PoW stage. +func (m *Merger) TDDReached() bool { + m.mu.RLock() + defer m.mu.RUnlock() + + return m.status.LeftPoW +} + +// PoSFinalized reports whether the chain has entered the PoS stage. +func (m *Merger) PoSFinalized() bool { + m.mu.RLock() + defer m.mu.RUnlock() + + return m.status.EnteredPoS +} diff --git a/console/console.go b/console/console.go index dd39300d0a..ab26bd64f7 100644 --- a/console/console.go +++ b/console/console.go @@ -17,6 +17,7 @@ package console import ( + "errors" "fmt" "io" "io/ioutil" @@ -26,6 +27,7 @@ import ( "regexp" "sort" "strings" + "sync" "syscall" "github.com/dop251/goja" @@ -74,6 +76,13 @@ type Console struct { histPath string // Absolute path to the console scrollback history history []string // Scroll history maintained by the console printer io.Writer // Output writer to serialize any display strings to + + interactiveStopped chan struct{} + stopInteractiveCh chan struct{} + signalReceived chan struct{} + stopped chan struct{} + wg sync.WaitGroup + stopOnce sync.Once } // New initializes a JavaScript interpreted runtime environment and sets defaults @@ -92,12 +101,16 @@ func New(config Config) (*Console, error) { // Initialize the console and return console := &Console{ - client: config.Client, - jsre: jsre.New(config.DocRoot, config.Printer), - prompt: config.Prompt, - prompter: config.Prompter, - printer: config.Printer, - histPath: filepath.Join(config.DataDir, HistoryFile), + client: config.Client, + jsre: jsre.New(config.DocRoot, config.Printer), + prompt: config.Prompt, + prompter: config.Prompter, + printer: config.Printer, + histPath: filepath.Join(config.DataDir, HistoryFile), + interactiveStopped: make(chan struct{}), + stopInteractiveCh: make(chan struct{}), + signalReceived: make(chan struct{}, 1), + stopped: make(chan struct{}), } if err := os.MkdirAll(config.DataDir, 0700); err != nil { return nil, err @@ -105,6 +118,10 @@ func New(config Config) (*Console, error) { if err := console.init(config.Preload); err != nil { return nil, err } + + console.wg.Add(1) + go console.interruptHandler() + return console, nil } @@ -337,9 +354,63 @@ func (c *Console) Evaluate(statement string) { } }() c.jsre.Evaluate(statement, c.printer) + + // Avoid exiting Interactive when jsre was interrupted by SIGINT. + c.clearSignalReceived() } -// Interactive starts an interactive user session, where input is propted from +// interruptHandler runs in its own goroutine and waits for signals. +// When a signal is received, it interrupts the JS interpreter. +func (c *Console) interruptHandler() { + defer c.wg.Done() + + // During Interactive, liner inhibits the signal while it is prompting for + // input. However, the signal will be received while evaluating JS. + // + // On unsupported terminals, SIGINT can also happen while prompting. + // Unfortunately, it is not possible to abort the prompt in this case and + // the c.readLines goroutine leaks. + sig := make(chan os.Signal, 1) + signal.Notify(sig, syscall.SIGINT) + defer signal.Stop(sig) + + for { + select { + case <-sig: + c.setSignalReceived() + c.jsre.Interrupt(errors.New("interrupted")) + case <-c.stopInteractiveCh: + close(c.interactiveStopped) + c.jsre.Interrupt(errors.New("interrupted")) + case <-c.stopped: + return + } + } +} + +func (c *Console) setSignalReceived() { + select { + case c.signalReceived <- struct{}{}: + default: + } +} + +func (c *Console) clearSignalReceived() { + select { + case <-c.signalReceived: + default: + } +} + +// StopInteractive causes Interactive to return as soon as possible. +func (c *Console) StopInteractive() { + select { + case c.stopInteractiveCh <- struct{}{}: + case <-c.stopped: + } +} + +// Interactive starts an interactive user session, where in.put is propted from // the configured user prompter. func (c *Console) Interactive() { var ( @@ -349,15 +420,11 @@ func (c *Console) Interactive() { inputLine = make(chan string, 1) // receives user input inputErr = make(chan error, 1) // receives liner errors requestLine = make(chan string) // requests a line of input - interrupt = make(chan os.Signal, 1) ) - // Monitor Ctrl-C. While liner does turn on the relevant terminal mode bits to avoid - // the signal, a signal can still be received for unsupported terminals. Unfortunately - // there is no way to cancel the line reader when this happens. The readLines - // goroutine will be leaked in this case. - signal.Notify(interrupt, syscall.SIGINT, syscall.SIGTERM) - defer signal.Stop(interrupt) + defer func() { + c.writeHistory() + }() // The line reader runs in a separate goroutine. go c.readLines(inputLine, inputErr, requestLine) @@ -368,7 +435,14 @@ func (c *Console) Interactive() { requestLine <- prompt select { - case <-interrupt: + case <-c.interactiveStopped: + fmt.Fprintln(c.printer, "node is down, exiting console") + return + + case <-c.signalReceived: + // SIGINT received while prompting for input -> unsupported terminal. + // I'm not sure if the best choice would be to leave the console running here. + // Bash keeps running in this case. node.js does not. fmt.Fprintln(c.printer, "caught interrupt, exiting") return @@ -476,12 +550,19 @@ func (c *Console) Execute(path string) error { // Stop cleans up the console and terminates the runtime environment. func (c *Console) Stop(graceful bool) error { - if err := ioutil.WriteFile(c.histPath, []byte(strings.Join(c.history, "\n")), 0600); err != nil { - return err - } - if err := os.Chmod(c.histPath, 0600); err != nil { // Force 0600, even if it was different previously - return err - } + c.stopOnce.Do(func() { + // Stop the interrupt handler. + close(c.stopped) + c.wg.Wait() + }) + c.jsre.Stop(graceful) return nil } + +func (c *Console) writeHistory() error { + if err := ioutil.WriteFile(c.histPath, []byte(strings.Join(c.history, "\n")), 0600); err != nil { + return err + } + return os.Chmod(c.histPath, 0600) // Force 0600, even if it was different previously +} diff --git a/console/console_test.go b/console/console_test.go index f6ab781410..71c80c20fa 100644 --- a/console/console_test.go +++ b/console/console_test.go @@ -99,7 +99,7 @@ func newTester(t *testing.T, confOverride func(*ethconfig.Config)) *tester { t.Fatalf("failed to create node: %v", err) } ethConf := ðconfig.Config{ - Genesis: core.DeveloperGenesisBlock(15, common.Address{}), + Genesis: core.DeveloperGenesisBlock(15, 11_500_000, common.Address{}), Miner: miner.Config{ Etherbase: common.HexToAddress(testAddress), }, diff --git a/core/asm/lexer.go b/core/asm/lexer.go index 21cc8c4658..ed367939d7 100644 --- a/core/asm/lexer.go +++ b/core/asm/lexer.go @@ -68,10 +68,10 @@ func (it tokenType) String() string { var stringtokenTypes = []string{ eof: "EOF", + lineStart: "new line", + lineEnd: "end of line", invalidStatement: "invalid statement", element: "element", - lineEnd: "end of line", - lineStart: "new line", label: "label", labelDef: "label definition", number: "number", diff --git a/core/bench_test.go b/core/bench_test.go index ce288d372e..959979763d 100644 --- a/core/bench_test.go +++ b/core/bench_test.go @@ -75,7 +75,7 @@ var ( // This is the content of the genesis block used by the benchmarks. benchRootKey, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291") benchRootAddr = crypto.PubkeyToAddress(benchRootKey.PublicKey) - benchRootFunds = math.BigPow(2, 100) + benchRootFunds = math.BigPow(2, 200) ) // genValueTx returns a block generator that includes a single @@ -86,7 +86,19 @@ func genValueTx(nbytes int) func(int, *BlockGen) { toaddr := common.Address{} data := make([]byte, nbytes) gas, _ := IntrinsicGas(data, nil, false, false, false) - tx, _ := types.SignTx(types.NewTransaction(gen.TxNonce(benchRootAddr), toaddr, big.NewInt(1), gas, nil, data), types.HomesteadSigner{}, benchRootKey) + signer := types.MakeSigner(gen.config, big.NewInt(int64(i))) + gasPrice := big.NewInt(0) + if gen.header.BaseFee != nil { + gasPrice = gen.header.BaseFee + } + tx, _ := types.SignNewTx(benchRootKey, signer, &types.LegacyTx{ + Nonce: gen.TxNonce(benchRootAddr), + To: &toaddr, + Value: big.NewInt(1), + Gas: gas, + Data: data, + GasPrice: gasPrice, + }) gen.AddTx(tx) } } @@ -110,24 +122,38 @@ func init() { // and fills the blocks with many small transactions. func genTxRing(naccounts int) func(int, *BlockGen) { from := 0 + availableFunds := new(big.Int).Set(benchRootFunds) return func(i int, gen *BlockGen) { block := gen.PrevBlock(i - 1) gas := block.GasLimit() + gasPrice := big.NewInt(0) + if gen.header.BaseFee != nil { + gasPrice = gen.header.BaseFee + } + signer := types.MakeSigner(gen.config, big.NewInt(int64(i))) for { gas -= params.TxGas if gas < params.TxGas { break } to := (from + 1) % naccounts - tx := types.NewTransaction( - gen.TxNonce(ringAddrs[from]), - ringAddrs[to], - benchRootFunds, - params.TxGas, - nil, - nil, - ) - tx, _ = types.SignTx(tx, types.HomesteadSigner{}, ringKeys[from]) + burn := new(big.Int).SetUint64(params.TxGas) + burn.Mul(burn, gen.header.BaseFee) + availableFunds.Sub(availableFunds, burn) + if availableFunds.Cmp(big.NewInt(1)) < 0 { + panic("not enough funds") + } + tx, err := types.SignNewTx(ringKeys[from], signer, + &types.LegacyTx{ + Nonce: gen.TxNonce(ringAddrs[from]), + To: &ringAddrs[to], + Value: availableFunds, + Gas: params.TxGas, + GasPrice: gasPrice, + }) + if err != nil { + panic(err) + } gen.AddTx(tx) from = to } @@ -245,6 +271,7 @@ func makeChainForBench(db ethdb.Database, full bool, count uint64) { block := types.NewBlockWithHeader(header) rawdb.WriteBody(db, hash, n, block.Body()) rawdb.WriteReceipts(db, hash, n, nil) + rawdb.WriteHeadBlockHash(db, hash) } } } @@ -278,6 +305,8 @@ func benchReadChain(b *testing.B, full bool, count uint64) { } makeChainForBench(db, full, count) db.Close() + cacheConfig := *defaultCacheConfig + cacheConfig.TrieDirtyDisabled = true b.ReportAllocs() b.ResetTimer() @@ -287,7 +316,7 @@ func benchReadChain(b *testing.B, full bool, count uint64) { if err != nil { b.Fatalf("error opening database at %v: %v", dir, err) } - chain, err := NewBlockChain(db, nil, params.TestChainConfig, ethash.NewFaker(), vm.Config{}, nil, nil) + chain, err := NewBlockChain(db, &cacheConfig, params.TestChainConfig, ethash.NewFaker(), vm.Config{}, nil, nil) if err != nil { b.Fatalf("error creating chain: %v", err) } diff --git a/core/block_validator_test.go b/core/block_validator_test.go index 86f9835a01..0f183ba527 100644 --- a/core/block_validator_test.go +++ b/core/block_validator_test.go @@ -17,14 +17,21 @@ package core import ( + "encoding/json" + "math/big" "runtime" "testing" "time" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/consensus" + "github.com/ethereum/go-ethereum/consensus/beacon" + "github.com/ethereum/go-ethereum/consensus/clique" "github.com/ethereum/go-ethereum/consensus/ethash" "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" + "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/params" ) @@ -76,6 +83,172 @@ func TestHeaderVerification(t *testing.T) { } } +func TestHeaderVerificationForMergingClique(t *testing.T) { testHeaderVerificationForMerging(t, true) } +func TestHeaderVerificationForMergingEthash(t *testing.T) { testHeaderVerificationForMerging(t, false) } + +// Tests the verification for eth1/2 merging, including pre-merge and post-merge +func testHeaderVerificationForMerging(t *testing.T, isClique bool) { + var ( + testdb = rawdb.NewMemoryDatabase() + preBlocks []*types.Block + postBlocks []*types.Block + runEngine consensus.Engine + chainConfig *params.ChainConfig + merger = consensus.NewMerger(rawdb.NewMemoryDatabase()) + ) + if isClique { + var ( + key, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291") + addr = crypto.PubkeyToAddress(key.PublicKey) + engine = clique.New(params.AllCliqueProtocolChanges.Clique, testdb) + ) + genspec := &Genesis{ + ExtraData: make([]byte, 32+common.AddressLength+crypto.SignatureLength), + Alloc: map[common.Address]GenesisAccount{ + addr: {Balance: big.NewInt(1)}, + }, + BaseFee: big.NewInt(params.InitialBaseFee), + } + copy(genspec.ExtraData[32:], addr[:]) + genesis := genspec.MustCommit(testdb) + + genEngine := beacon.New(engine) + preBlocks, _ = GenerateChain(params.AllCliqueProtocolChanges, genesis, genEngine, testdb, 8, nil) + td := 0 + for i, block := range preBlocks { + header := block.Header() + if i > 0 { + header.ParentHash = preBlocks[i-1].Hash() + } + header.Extra = make([]byte, 32+crypto.SignatureLength) + header.Difficulty = big.NewInt(2) + + sig, _ := crypto.Sign(genEngine.SealHash(header).Bytes(), key) + copy(header.Extra[len(header.Extra)-crypto.SignatureLength:], sig) + preBlocks[i] = block.WithSeal(header) + // calculate td + td += int(block.Difficulty().Uint64()) + } + config := *params.AllCliqueProtocolChanges + config.TerminalTotalDifficulty = big.NewInt(int64(td)) + postBlocks, _ = GenerateChain(&config, preBlocks[len(preBlocks)-1], genEngine, testdb, 8, nil) + chainConfig = &config + runEngine = beacon.New(engine) + } else { + gspec := &Genesis{Config: params.TestChainConfig} + genesis := gspec.MustCommit(testdb) + genEngine := beacon.New(ethash.NewFaker()) + + preBlocks, _ = GenerateChain(params.TestChainConfig, genesis, genEngine, testdb, 8, nil) + td := 0 + for _, block := range preBlocks { + // calculate td + td += int(block.Difficulty().Uint64()) + } + config := *params.TestChainConfig + config.TerminalTotalDifficulty = big.NewInt(int64(td)) + postBlocks, _ = GenerateChain(params.TestChainConfig, preBlocks[len(preBlocks)-1], genEngine, testdb, 8, nil) + + chainConfig = &config + runEngine = beacon.New(ethash.NewFaker()) + } + + preHeaders := make([]*types.Header, len(preBlocks)) + for i, block := range preBlocks { + preHeaders[i] = block.Header() + + blob, _ := json.Marshal(block.Header()) + t.Logf("Log header before the merging %d: %v", block.NumberU64(), string(blob)) + } + postHeaders := make([]*types.Header, len(postBlocks)) + for i, block := range postBlocks { + postHeaders[i] = block.Header() + + blob, _ := json.Marshal(block.Header()) + t.Logf("Log header after the merging %d: %v", block.NumberU64(), string(blob)) + } + // Run the header checker for blocks one-by-one, checking for both valid and invalid nonces + chain, _ := NewBlockChain(testdb, nil, chainConfig, runEngine, vm.Config{}, nil, nil) + defer chain.Stop() + + // Verify the blocks before the merging + for i := 0; i < len(preBlocks); i++ { + _, results := runEngine.VerifyHeaders(chain, []*types.Header{preHeaders[i]}, []bool{true}) + // Wait for the verification result + select { + case result := <-results: + if result != nil { + t.Errorf("test %d: verification failed %v", i, result) + } + case <-time.After(time.Second): + t.Fatalf("test %d: verification timeout", i) + } + // Make sure no more data is returned + select { + case result := <-results: + t.Fatalf("test %d: unexpected result returned: %v", i, result) + case <-time.After(25 * time.Millisecond): + } + chain.InsertChain(preBlocks[i : i+1]) + } + + // Make the transition + merger.ReachTTD() + merger.FinalizePoS() + + // Verify the blocks after the merging + for i := 0; i < len(postBlocks); i++ { + _, results := runEngine.VerifyHeaders(chain, []*types.Header{postHeaders[i]}, []bool{true}) + // Wait for the verification result + select { + case result := <-results: + if result != nil { + t.Errorf("test %d: verification failed %v", i, result) + } + case <-time.After(time.Second): + t.Fatalf("test %d: verification timeout", i) + } + // Make sure no more data is returned + select { + case result := <-results: + t.Fatalf("test %d: unexpected result returned: %v", i, result) + case <-time.After(25 * time.Millisecond): + } + chain.InsertBlockWithoutSetHead(postBlocks[i]) + } + + // Verify the blocks with pre-merge blocks and post-merge blocks + var ( + headers []*types.Header + seals []bool + ) + for _, block := range preBlocks { + headers = append(headers, block.Header()) + seals = append(seals, true) + } + for _, block := range postBlocks { + headers = append(headers, block.Header()) + seals = append(seals, true) + } + _, results := runEngine.VerifyHeaders(chain, headers, seals) + for i := 0; i < len(headers); i++ { + select { + case result := <-results: + if result != nil { + t.Errorf("test %d: verification failed %v", i, result) + } + case <-time.After(time.Second): + t.Fatalf("test %d: verification timeout", i) + } + } + // Make sure no more data is returned + select { + case result := <-results: + t.Fatalf("unexpected result returned: %v", result) + case <-time.After(25 * time.Millisecond): + } +} + // Tests that concurrent header verification works, for both good and bad blocks. func TestHeaderConcurrentVerification2(t *testing.T) { testHeaderConcurrentVerification(t, 2) } func TestHeaderConcurrentVerification8(t *testing.T) { testHeaderConcurrentVerification(t, 8) } diff --git a/core/blockchain.go b/core/blockchain.go index 05108a9c6b..88f4dd593e 100644 --- a/core/blockchain.go +++ b/core/blockchain.go @@ -22,7 +22,6 @@ import ( "fmt" "io" "math/big" - mrand "math/rand" "sort" "sync" "sync/atomic" @@ -43,7 +42,6 @@ import ( "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/metrics" "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/rlp" "github.com/ethereum/go-ethereum/trie" lru "github.com/hashicorp/golang-lru" ) @@ -209,10 +207,9 @@ type BlockChain struct { validator Validator // Block and state validator interface prefetcher Prefetcher processor Processor // Block transaction processor interface + forker *ForkChoice vmConfig vm.Config - shouldPreserve func(*types.Block) bool // Function used to determine whether should preserve the given block. - // Bor related changes borReceiptsCache *lru.Cache // Cache for the most recent bor receipt receipts per block stateSyncData []*types.StateSyncData // State sync data @@ -220,9 +217,9 @@ type BlockChain struct { } // NewBlockChain returns a fully initialised block chain using information -// available in the database. It initialises the default Ethereum Validator and -// Processor. -func NewBlockChain(db ethdb.Database, cacheConfig *CacheConfig, chainConfig *params.ChainConfig, engine consensus.Engine, vmConfig vm.Config, shouldPreserve func(block *types.Block) bool, txLookupLimit *uint64) (*BlockChain, error) { +// available in the database. It initialises the default Ethereum Validator +// and Processor. +func NewBlockChain(db ethdb.Database, cacheConfig *CacheConfig, chainConfig *params.ChainConfig, engine consensus.Engine, vmConfig vm.Config, shouldPreserve func(header *types.Header) bool, txLookupLimit *uint64) (*BlockChain, error) { if cacheConfig == nil { cacheConfig = defaultCacheConfig } @@ -245,20 +242,20 @@ func NewBlockChain(db ethdb.Database, cacheConfig *CacheConfig, chainConfig *par Journal: cacheConfig.TrieCleanJournal, Preimages: cacheConfig.Preimages, }), - quit: make(chan struct{}), - chainmu: syncx.NewClosableMutex(), - shouldPreserve: shouldPreserve, - bodyCache: bodyCache, - bodyRLPCache: bodyRLPCache, - receiptsCache: receiptsCache, - blockCache: blockCache, - txLookupCache: txLookupCache, - futureBlocks: futureBlocks, - engine: engine, - vmConfig: vmConfig, + quit: make(chan struct{}), + chainmu: syncx.NewClosableMutex(), + bodyCache: bodyCache, + bodyRLPCache: bodyRLPCache, + receiptsCache: receiptsCache, + blockCache: blockCache, + txLookupCache: txLookupCache, + futureBlocks: futureBlocks, + engine: engine, + vmConfig: vmConfig, borReceiptsCache: borReceiptsCache, } + bc.forker = NewForkChoice(bc, shouldPreserve) bc.validator = NewBlockValidator(chainConfig, bc, engine) bc.prefetcher = newStatePrefetcher(chainConfig, bc, engine) bc.processor = NewStateProcessor(chainConfig, bc, engine) @@ -306,7 +303,7 @@ func NewBlockChain(db ethdb.Database, cacheConfig *CacheConfig, chainConfig *par if diskRoot != (common.Hash{}) { log.Warn("Head state missing, repairing", "number", head.Number(), "hash", head.Hash(), "snaproot", diskRoot) - snapDisk, err := bc.SetHeadBeyondRoot(head.NumberU64(), diskRoot) + snapDisk, err := bc.setHeadBeyondRoot(head.NumberU64(), diskRoot, true) if err != nil { return nil, err } @@ -316,7 +313,7 @@ func NewBlockChain(db ethdb.Database, cacheConfig *CacheConfig, chainConfig *par } } else { log.Warn("Head state missing, repairing", "number", head.Number(), "hash", head.Hash()) - if err := bc.SetHead(head.NumberU64()); err != nil { + if _, err := bc.setHeadBeyondRoot(head.NumberU64(), common.Hash{}, true); err != nil { return nil, err } } @@ -392,7 +389,7 @@ func NewBlockChain(db ethdb.Database, cacheConfig *CacheConfig, chainConfig *par // Start future block processor. bc.wg.Add(1) - go bc.futureBlocksLoop() + go bc.updateFutureBlocks() // Start tx indexer/unindexer. if txLookupLimit != nil { @@ -418,11 +415,6 @@ func NewBlockChain(db ethdb.Database, cacheConfig *CacheConfig, chainConfig *par return bc, nil } -// GetVMConfig returns the block chain VM config. -func (bc *BlockChain) GetVMConfig() *vm.Config { - return &bc.vmConfig -} - // empty returns an indicator whether the blockchain is empty. // Note, it's a special case that we connect a non-empty ancient // database with an empty node, so that we can plugin the ancient @@ -497,11 +489,11 @@ func (bc *BlockChain) loadLastState() error { // was fast synced or full synced and in which state, the method will try to // delete minimal data from disk whilst retaining chain consistency. func (bc *BlockChain) SetHead(head uint64) error { - _, err := bc.SetHeadBeyondRoot(head, common.Hash{}) + _, err := bc.setHeadBeyondRoot(head, common.Hash{}, false) return err } -// SetHeadBeyondRoot rewinds the local chain to a new head with the extra condition +// setHeadBeyondRoot rewinds the local chain to a new head with the extra condition // that the rewind must pass the specified state root. This method is meant to be // used when rewinding with snapshots enabled to ensure that we go back further than // persistent disk layer. Depending on whether the node was fast synced or full, and @@ -509,7 +501,7 @@ func (bc *BlockChain) SetHead(head uint64) error { // retaining chain consistency. // // The method returns the block number where the requested root cap was found. -func (bc *BlockChain) SetHeadBeyondRoot(head uint64, root common.Hash) (uint64, error) { +func (bc *BlockChain) setHeadBeyondRoot(head uint64, root common.Hash, repair bool) (uint64, error) { if !bc.chainmu.TryLock() { return 0, errChainStopped } @@ -524,7 +516,7 @@ func (bc *BlockChain) SetHeadBeyondRoot(head uint64, root common.Hash) (uint64, frozen, _ := bc.db.Ancients() updateFn := func(db ethdb.KeyValueWriter, header *types.Header) (uint64, bool) { - // Rewind the block chain, ensuring we don't end up with a stateless head + // Rewind the blockchain, ensuring we don't end up with a stateless head // block. Note, depth equality is permitted to allow using SetHead as a // chain reparation mechanism without deleting any data! if currentBlock := bc.CurrentBlock(); currentBlock != nil && header.Number.Uint64() <= currentBlock.NumberU64() { @@ -627,8 +619,8 @@ func (bc *BlockChain) SetHeadBeyondRoot(head uint64, root common.Hash) (uint64, } // If SetHead was only called as a chain reparation method, try to skip // touching the header chain altogether, unless the freezer is broken - if block := bc.CurrentBlock(); block.NumberU64() == head { - if target, force := updateFn(bc.db, block.Header()); force { + if repair { + if target, force := updateFn(bc.db, bc.CurrentBlock().Header()); force { bc.hc.SetHead(target, updateFn, delFn) } } else { @@ -649,9 +641,9 @@ func (bc *BlockChain) SetHeadBeyondRoot(head uint64, root common.Hash) (uint64, return rootNumber, bc.loadLastState() } -// FastSyncCommitHead sets the current head block to the one defined by the hash +// SnapSyncCommitHead sets the current head block to the one defined by the hash // irrelevant what the chain contents were prior. -func (bc *BlockChain) FastSyncCommitHead(hash common.Hash) error { +func (bc *BlockChain) SnapSyncCommitHead(hash common.Hash) error { // Make sure that both the block as well at its state trie exists block := bc.GetBlockByHash(hash) if block == nil { @@ -678,53 +670,6 @@ func (bc *BlockChain) FastSyncCommitHead(hash common.Hash) error { return nil } -// GasLimit returns the gas limit of the current HEAD block. -func (bc *BlockChain) GasLimit() uint64 { - return bc.CurrentBlock().GasLimit() -} - -// CurrentBlock retrieves the current head block of the canonical chain. The -// block is retrieved from the blockchain's internal cache. -func (bc *BlockChain) CurrentBlock() *types.Block { - return bc.currentBlock.Load().(*types.Block) -} - -// Snapshots returns the blockchain snapshot tree. -func (bc *BlockChain) Snapshots() *snapshot.Tree { - return bc.snaps -} - -// CurrentFastBlock retrieves the current fast-sync head block of the canonical -// chain. The block is retrieved from the blockchain's internal cache. -func (bc *BlockChain) CurrentFastBlock() *types.Block { - return bc.currentFastBlock.Load().(*types.Block) -} - -// Validator returns the current validator. -func (bc *BlockChain) Validator() Validator { - return bc.validator -} - -// Processor returns the current processor. -func (bc *BlockChain) Processor() Processor { - return bc.processor -} - -// State returns a new mutable state based on the current HEAD block. -func (bc *BlockChain) State() (*state.StateDB, error) { - return bc.StateAt(bc.CurrentBlock().Root()) -} - -// StateAt returns a new mutable state based on a particular point in time. -func (bc *BlockChain) StateAt(root common.Hash) (*state.StateDB, error) { - return state.New(root, bc.stateCache, bc.snaps) -} - -// StateCache returns the caching database underpinning the blockchain instance. -func (bc *BlockChain) StateCache() state.Database { - return bc.stateCache -} - // Reset purges the entire blockchain, restoring it to its genesis state. func (bc *BlockChain) Reset() error { return bc.ResetWithGenesisBlock(bc.genesisBlock) @@ -803,222 +748,28 @@ func (bc *BlockChain) ExportN(w io.Writer, first uint64, last uint64) error { // // Note, this function assumes that the `mu` mutex is held! func (bc *BlockChain) writeHeadBlock(block *types.Block) { - // If the block is on a side chain or an unknown one, force other heads onto it too - updateHeads := rawdb.ReadCanonicalHash(bc.db, block.NumberU64()) != block.Hash() - // Add the block to the canonical chain number scheme and mark as the head batch := bc.db.NewBatch() + rawdb.WriteHeadHeaderHash(batch, block.Hash()) + rawdb.WriteHeadFastBlockHash(batch, block.Hash()) rawdb.WriteCanonicalHash(batch, block.Hash(), block.NumberU64()) rawdb.WriteTxLookupEntriesByBlock(batch, block) rawdb.WriteHeadBlockHash(batch, block.Hash()) - // If the block is better than our head or is on a different chain, force update heads - if updateHeads { - rawdb.WriteHeadHeaderHash(batch, block.Hash()) - rawdb.WriteHeadFastBlockHash(batch, block.Hash()) - } // Flush the whole batch into the disk, exit the node if failed if err := batch.Write(); err != nil { log.Crit("Failed to update chain indexes and markers", "err", err) } // Update all in-memory chain markers in the last step - if updateHeads { - bc.hc.SetCurrentHeader(block.Header()) - bc.currentFastBlock.Store(block) - headFastBlockGauge.Update(int64(block.NumberU64())) - } + bc.hc.SetCurrentHeader(block.Header()) + + bc.currentFastBlock.Store(block) + headFastBlockGauge.Update(int64(block.NumberU64())) + bc.currentBlock.Store(block) headBlockGauge.Update(int64(block.NumberU64())) } -// Genesis retrieves the chain's genesis block. -func (bc *BlockChain) Genesis() *types.Block { - return bc.genesisBlock -} - -// GetBody retrieves a block body (transactions and uncles) from the database by -// hash, caching it if found. -func (bc *BlockChain) GetBody(hash common.Hash) *types.Body { - // Short circuit if the body's already in the cache, retrieve otherwise - if cached, ok := bc.bodyCache.Get(hash); ok { - body := cached.(*types.Body) - return body - } - number := bc.hc.GetBlockNumber(hash) - if number == nil { - return nil - } - body := rawdb.ReadBody(bc.db, hash, *number) - if body == nil { - return nil - } - // Cache the found body for next time and return - bc.bodyCache.Add(hash, body) - return body -} - -// GetBodyRLP retrieves a block body in RLP encoding from the database by hash, -// caching it if found. -func (bc *BlockChain) GetBodyRLP(hash common.Hash) rlp.RawValue { - // Short circuit if the body's already in the cache, retrieve otherwise - if cached, ok := bc.bodyRLPCache.Get(hash); ok { - return cached.(rlp.RawValue) - } - number := bc.hc.GetBlockNumber(hash) - if number == nil { - return nil - } - body := rawdb.ReadBodyRLP(bc.db, hash, *number) - if len(body) == 0 { - return nil - } - // Cache the found body for next time and return - bc.bodyRLPCache.Add(hash, body) - return body -} - -// HasBlock checks if a block is fully present in the database or not. -func (bc *BlockChain) HasBlock(hash common.Hash, number uint64) bool { - if bc.blockCache.Contains(hash) { - return true - } - return rawdb.HasBody(bc.db, hash, number) -} - -// HasFastBlock checks if a fast block is fully present in the database or not. -func (bc *BlockChain) HasFastBlock(hash common.Hash, number uint64) bool { - if !bc.HasBlock(hash, number) { - return false - } - if bc.receiptsCache.Contains(hash) { - return true - } - return rawdb.HasReceipts(bc.db, hash, number) -} - -// HasState checks if state trie is fully present in the database or not. -func (bc *BlockChain) HasState(hash common.Hash) bool { - _, err := bc.stateCache.OpenTrie(hash) - return err == nil -} - -// HasBlockAndState checks if a block and associated state trie is fully present -// in the database or not, caching it if present. -func (bc *BlockChain) HasBlockAndState(hash common.Hash, number uint64) bool { - // Check first that the block itself is known - block := bc.GetBlock(hash, number) - if block == nil { - return false - } - return bc.HasState(block.Root()) -} - -// GetBlock retrieves a block from the database by hash and number, -// caching it if found. -func (bc *BlockChain) GetBlock(hash common.Hash, number uint64) *types.Block { - // Short circuit if the block's already in the cache, retrieve otherwise - if block, ok := bc.blockCache.Get(hash); ok { - return block.(*types.Block) - } - block := rawdb.ReadBlock(bc.db, hash, number) - if block == nil { - return nil - } - // Cache the found block for next time and return - bc.blockCache.Add(block.Hash(), block) - return block -} - -// GetBlockByHash retrieves a block from the database by hash, caching it if found. -func (bc *BlockChain) GetBlockByHash(hash common.Hash) *types.Block { - number := bc.hc.GetBlockNumber(hash) - if number == nil { - return nil - } - return bc.GetBlock(hash, *number) -} - -// GetBlockByNumber retrieves a block from the database by number, caching it -// (associated with its hash) if found. -func (bc *BlockChain) GetBlockByNumber(number uint64) *types.Block { - hash := rawdb.ReadCanonicalHash(bc.db, number) - if hash == (common.Hash{}) { - return nil - } - return bc.GetBlock(hash, number) -} - -// GetReceiptsByHash retrieves the receipts for all transactions in a given block. -func (bc *BlockChain) GetReceiptsByHash(hash common.Hash) types.Receipts { - if receipts, ok := bc.receiptsCache.Get(hash); ok { - return receipts.(types.Receipts) - } - number := rawdb.ReadHeaderNumber(bc.db, hash) - if number == nil { - return nil - } - receipts := rawdb.ReadReceipts(bc.db, hash, *number, bc.chainConfig) - if receipts == nil { - return nil - } - bc.receiptsCache.Add(hash, receipts) - return receipts -} - -// GetBlocksFromHash returns the block corresponding to hash and up to n-1 ancestors. -// [deprecated by eth/62] -func (bc *BlockChain) GetBlocksFromHash(hash common.Hash, n int) (blocks []*types.Block) { - number := bc.hc.GetBlockNumber(hash) - if number == nil { - return nil - } - for i := 0; i < n; i++ { - block := bc.GetBlock(hash, *number) - if block == nil { - break - } - blocks = append(blocks, block) - hash = block.ParentHash() - *number-- - } - return -} - -// GetUnclesInChain retrieves all the uncles from a given block backwards until -// a specific distance is reached. -func (bc *BlockChain) GetUnclesInChain(block *types.Block, length int) []*types.Header { - uncles := []*types.Header{} - for i := 0; block != nil && i < length; i++ { - uncles = append(uncles, block.Uncles()...) - block = bc.GetBlock(block.ParentHash(), block.NumberU64()-1) - } - return uncles -} - -// TrieNode retrieves a blob of data associated with a trie node -// either from ephemeral in-memory cache, or from persistent storage. -func (bc *BlockChain) TrieNode(hash common.Hash) ([]byte, error) { - return bc.stateCache.TrieDB().Node(hash) -} - -// ContractCode retrieves a blob of data associated with a contract hash -// either from ephemeral in-memory cache, or from persistent storage. -func (bc *BlockChain) ContractCode(hash common.Hash) ([]byte, error) { - return bc.stateCache.ContractCode(common.Hash{}, hash) -} - -// ContractCodeWithPrefix retrieves a blob of data associated with a contract -// hash either from ephemeral in-memory cache, or from persistent storage. -// -// If the code doesn't exist in the in-memory cache, check the storage with -// new code scheme. -func (bc *BlockChain) ContractCodeWithPrefix(hash common.Hash) ([]byte, error) { - type codeReader interface { - ContractCodeWithPrefix(addrHash, codeHash common.Hash) ([]byte, error) - } - return bc.stateCache.(codeReader).ContractCodeWithPrefix(common.Hash{}, hash) -} - // Stop stops the blockchain service. If any imports are currently in progress // it will abort them using the procInterrupt. func (bc *BlockChain) Stop() { @@ -1130,12 +881,6 @@ const ( SideStatTy ) -// numberHash is just a container for a number and a hash, to represent a block -type numberHash struct { - number uint64 - hash common.Hash -} - // InsertReceiptChain attempts to complete an already existing header chain with // transaction and receipt data. func (bc *BlockChain) InsertReceiptChain(blockChain types.Blocks, receiptChain []types.Receipts, ancientLimit uint64) (int, error) { @@ -1181,13 +926,17 @@ func (bc *BlockChain) InsertReceiptChain(blockChain types.Blocks, receiptChain [ // Rewind may have occurred, skip in that case. if bc.CurrentHeader().Number.Cmp(head.Number()) >= 0 { - currentFastBlock, td := bc.CurrentFastBlock(), bc.GetTd(head.Hash(), head.NumberU64()) - if bc.GetTd(currentFastBlock.Hash(), currentFastBlock.NumberU64()).Cmp(td) < 0 { - rawdb.WriteHeadFastBlockHash(bc.db, head.Hash()) - bc.currentFastBlock.Store(head) - headFastBlockGauge.Update(int64(head.NumberU64())) - return true + reorg, err := bc.forker.ReorgNeeded(bc.CurrentFastBlock().Header(), head.Header()) + if err != nil { + log.Warn("Reorg failed", "err", err) + return false + } else if !reorg { + return false } + rawdb.WriteHeadFastBlockHash(bc.db, head.Hash()) + bc.currentFastBlock.Store(head) + headFastBlockGauge.Update(int64(head.NumberU64())) + return true } return false } @@ -1408,18 +1157,6 @@ func (bc *BlockChain) InsertReceiptChain(blockChain types.Blocks, receiptChain [ return 0, nil } -// SetTxLookupLimit is responsible for updating the txlookup limit to the -// original one stored in db if the new mismatches with the old one. -func (bc *BlockChain) SetTxLookupLimit(limit uint64) { - bc.txLookupLimit = limit -} - -// TxLookupLimit retrieves the txlookup limit used by blockchain to prune -// stale transaction indices. -func (bc *BlockChain) TxLookupLimit() uint64 { - return bc.txLookupLimit -} - var lastWrite uint64 // writeBlockWithoutState writes only the block and its metadata to the database, @@ -1452,30 +1189,15 @@ func (bc *BlockChain) writeKnownBlock(block *types.Block) error { return nil } -// WriteBlockWithState writes the block and all associated state to the database. -func (bc *BlockChain) WriteBlockWithState(block *types.Block, receipts []*types.Receipt, logs []*types.Log, state *state.StateDB, emitHeadEvent bool) (status WriteStatus, err error) { - if !bc.chainmu.TryLock() { - return NonStatTy, errInsertionInterrupted - } - defer bc.chainmu.Unlock() - return bc.writeBlockWithState(block, receipts, logs, state, emitHeadEvent) -} - -// writeBlockWithState writes the block and all associated state to the database, -// but is expects the chain mutex to be held. -func (bc *BlockChain) writeBlockWithState(block *types.Block, receipts []*types.Receipt, logs []*types.Log, state *state.StateDB, emitHeadEvent bool) (status WriteStatus, err error) { - if bc.insertStopped() { - return NonStatTy, errInsertionInterrupted - } - +// writeBlockWithState writes block, metadata and corresponding state data to the +// database. +func (bc *BlockChain) writeBlockWithState(block *types.Block, receipts []*types.Receipt, logs []*types.Log, state *state.StateDB) ([]*types.Log, error) { // Calculate the total difficulty of the block ptd := bc.GetTd(block.ParentHash(), block.NumberU64()-1) if ptd == nil { - return NonStatTy, consensus.ErrUnknownAncestor + return []*types.Log{}, consensus.ErrUnknownAncestor } // Make sure no inconsistent state is leaked during insertion - currentBlock := bc.CurrentBlock() - localTd := bc.GetTd(currentBlock.Hash(), currentBlock.NumberU64()) externTd := new(big.Int).Add(block.Difficulty(), ptd) // Irrelevant of the canonical status, write the block itself to the database. @@ -1527,15 +1249,13 @@ func (bc *BlockChain) writeBlockWithState(block *types.Block, receipts []*types. // Commit all cached state changes into underlying memory database. root, err := state.Commit(bc.chainConfig.IsEIP158(block.Number())) if err != nil { - return NonStatTy, err + return []*types.Log{}, err } triedb := bc.stateCache.TrieDB() // If we're running an archive node, always flush if bc.cacheConfig.TrieDirtyDisabled { - if err := triedb.Commit(root, false, nil); err != nil { - return NonStatTy, err - } + return []*types.Log{}, triedb.Commit(root, false, nil) } else { // Full but not archive node, do proper garbage collection triedb.Reference(root, common.Hash{}) // metadata reference to keep trie alive @@ -1583,23 +1303,31 @@ func (bc *BlockChain) writeBlockWithState(block *types.Block, receipts []*types. } } } - // If the total difficulty is higher than our known, add it to the canonical chain - // Second clause in the if statement reduces the vulnerability to selfish mining. - // Please refer to http://www.cs.cornell.edu/~ie53/publications/btcProcFC.pdf - reorg := externTd.Cmp(localTd) > 0 - currentBlock = bc.CurrentBlock() - if !reorg && externTd.Cmp(localTd) == 0 { - // Split same-difficulty blocks by number, then preferentially select - // the block generated by the local miner as the canonical block. - if block.NumberU64() < currentBlock.NumberU64() { - reorg = true - } else if block.NumberU64() == currentBlock.NumberU64() { - var currentPreserve, blockPreserve bool - if bc.shouldPreserve != nil { - currentPreserve, blockPreserve = bc.shouldPreserve(currentBlock), bc.shouldPreserve(block) - } - reorg = !currentPreserve && (blockPreserve || mrand.Float64() < 0.5) - } + return stateSyncLogs, nil +} + +// WriteBlockWithState writes the block and all associated state to the database. +func (bc *BlockChain) WriteBlockAndSetHead(block *types.Block, receipts []*types.Receipt, logs []*types.Log, state *state.StateDB, emitHeadEvent bool) (status WriteStatus, err error) { + if !bc.chainmu.TryLock() { + return NonStatTy, errChainStopped + } + defer bc.chainmu.Unlock() + + return bc.writeBlockAndSetHead(block, receipts, logs, state, emitHeadEvent) +} + +// writeBlockAndSetHead writes the block and all associated state to the database, +// and also it applies the given block as the new chain head. This function expects +// the chain mutex to be held. +func (bc *BlockChain) writeBlockAndSetHead(block *types.Block, receipts []*types.Receipt, logs []*types.Log, state *state.StateDB, emitHeadEvent bool) (status WriteStatus, err error) { + var stateSyncLogs []*types.Log + if stateSyncLogs, err = bc.writeBlockWithState(block, receipts, logs, state); err != nil { + return NonStatTy, err + } + currentBlock := bc.CurrentBlock() + reorg, err := bc.forker.ReorgNeeded(currentBlock.Header(), block.Header()) + if err != nil { + return NonStatTy, err } if reorg { // Reorganise the chain if the parent is not the head block @@ -1631,7 +1359,7 @@ func (bc *BlockChain) writeBlockWithState(block *types.Block, receipts []*types. // In theory we should fire a ChainHeadEvent when we inject // a canonical block, but sometimes we can insert a batch of - // canonicial blocks. Avoid firing too much ChainHeadEvents, + // canonicial blocks. Avoid firing too many ChainHeadEvents, // we will fire an accumulated ChainHeadEvent and disable fire // event here. if emitHeadEvent { @@ -1651,11 +1379,18 @@ func (bc *BlockChain) writeBlockWithState(block *types.Block, receipts []*types. // addFutureBlock checks if the block is within the max allowed window to get // accepted for future processing, and returns an error if the block is too far // ahead and was not added. +// +// TODO after the transition, the future block shouldn't be kept. Because +// it's not checked in the Geth side anymore. func (bc *BlockChain) addFutureBlock(block *types.Block) error { max := uint64(time.Now().Unix() + maxTimeFutureBlocks) if block.Time() > max { return fmt.Errorf("future block timestamp %v > allowed %v", block.Time(), max) } + if block.Difficulty().Cmp(common.Big0) == 0 { + // Never add PoS blocks into the future queue + return nil + } bc.futureBlocks.Add(block.Hash(), block) return nil } @@ -1663,15 +1398,12 @@ func (bc *BlockChain) addFutureBlock(block *types.Block) error { // InsertChain attempts to insert the given batch of blocks in to the canonical // chain or, otherwise, create a fork. If an error is returned it will return // the index number of the failing block as well an error describing what went -// wrong. -// -// After insertion is done, all accumulated events will be fired. +// wrong. After insertion is done, all accumulated events will be fired. func (bc *BlockChain) InsertChain(chain types.Blocks) (int, error) { // Sanity check that we have something meaningful to import if len(chain) == 0 { return 0, nil } - bc.blockProcFeed.Send(true) defer bc.blockProcFeed.Send(false) @@ -1690,26 +1422,12 @@ func (bc *BlockChain) InsertChain(chain types.Blocks) (int, error) { prev.Hash().Bytes()[:4], i, block.NumberU64(), block.Hash().Bytes()[:4], block.ParentHash().Bytes()[:4]) } } - - // Pre-check passed, start the full block imports. + // Pre-checks passed, start the full block imports if !bc.chainmu.TryLock() { return 0, errChainStopped } defer bc.chainmu.Unlock() - return bc.insertChain(chain, true) -} - -// InsertChainWithoutSealVerification works exactly the same -// except for seal verification, seal verification is omitted -func (bc *BlockChain) InsertChainWithoutSealVerification(block *types.Block) (int, error) { - bc.blockProcFeed.Send(true) - defer bc.blockProcFeed.Send(false) - - if !bc.chainmu.TryLock() { - return 0, errChainStopped - } - defer bc.chainmu.Unlock() - return bc.insertChain(types.Blocks([]*types.Block{block}), false) + return bc.insertChain(chain, true, true) } // insertChain is the internal implementation of InsertChain, which assumes that @@ -1720,7 +1438,7 @@ func (bc *BlockChain) InsertChainWithoutSealVerification(block *types.Block) (in // racey behaviour. If a sidechain import is in progress, and the historic state // is imported, but then new canon-head is added before the actual sidechain // completes, then the historic state could be pruned again -func (bc *BlockChain) insertChain(chain types.Blocks, verifySeals bool) (int, error) { +func (bc *BlockChain) insertChain(chain types.Blocks, verifySeals, setHead bool) (int, error) { // If the chain is terminating, don't even bother starting up. if bc.insertStopped() { return 0, nil @@ -1752,25 +1470,33 @@ func (bc *BlockChain) insertChain(chain types.Blocks, verifySeals bool) (int, er // Peek the error for the first block to decide the directing import logic it := newInsertIterator(chain, results, bc.validator) - block, err := it.next() - // Left-trim all the known blocks - if err == ErrKnownBlock { + // Left-trim all the known blocks that don't need to build snapshot + if bc.skipBlock(err, it) { // First block (and state) is known // 1. We did a roll-back, and should now do a re-import // 2. The block is stored as a sidechain, and is lying about it's stateroot, and passes a stateroot // from the canonical chain, which has not been verified. // Skip all known blocks that are behind us. var ( - current = bc.CurrentBlock() - localTd = bc.GetTd(current.Hash(), current.NumberU64()) - externTd = bc.GetTd(block.ParentHash(), block.NumberU64()-1) // The first block can't be nil + reorg bool + current = bc.CurrentBlock() ) - for block != nil && err == ErrKnownBlock { - externTd = new(big.Int).Add(externTd, block.Difficulty()) - if localTd.Cmp(externTd) < 0 { - break + for block != nil && bc.skipBlock(err, it) { + reorg, err = bc.forker.ReorgNeeded(current.Header(), block.Header()) + if err != nil { + return it.index, err + } + if reorg { + // Switch to import mode if the forker says the reorg is necessary + // and also the block is not on the canonical chain. + // In eth2 the forker always returns true for reorg decision (blindly trusting + // the external consensus engine), but in order to prevent the unnecessary + // reorgs when importing known blocks, the special case is handled here. + if block.NumberU64() > current.NumberU64() || bc.GetCanonicalHash(block.NumberU64()) != block.Hash() { + break + } } log.Debug("Ignoring already known block", "number", block.Number(), "hash", block.Hash()) stats.ignored++ @@ -1785,7 +1511,7 @@ func (bc *BlockChain) insertChain(chain types.Blocks, verifySeals bool) (int, er // When node runs a fast sync again, it can re-import a batch of known blocks via // `insertChain` while a part of them have higher total difficulty than current // head full block(new pivot point). - for block != nil && err == ErrKnownBlock { + for block != nil && bc.skipBlock(err, it) { log.Debug("Writing previously known block", "number", block.Number(), "hash", block.Hash()) if err := bc.writeKnownBlock(block); err != nil { return it.index, err @@ -1797,11 +1523,17 @@ func (bc *BlockChain) insertChain(chain types.Blocks, verifySeals bool) (int, er // Falls through to the block import } switch { - // First block is pruned, insert as sidechain and reorg only if TD grows enough + // First block is pruned case errors.Is(err, consensus.ErrPrunedAncestor): - log.Debug("Pruned ancestor, inserting as sidechain", "number", block.Number(), "hash", block.Hash()) - return bc.insertSideChain(block, it) - + if setHead { + // First block is pruned, insert as sidechain and reorg only if TD grows enough + log.Debug("Pruned ancestor, inserting as sidechain", "number", block.Number(), "hash", block.Hash()) + return bc.insertSideChain(block, it) + } else { + // We're post-merge and the parent is pruned, try to recover the parent state + log.Debug("Pruned ancestor", "number", block.Number(), "hash", block.Hash()) + return it.index, bc.recoverAncestors(block) + } // First block is future, shove it (and all children) to the future queue (unknown ancestor) case errors.Is(err, consensus.ErrFutureBlock) || (errors.Is(err, consensus.ErrUnknownAncestor) && bc.futureBlocks.Contains(it.first().ParentHash())): for block != nil && (it.index == 0 || errors.Is(err, consensus.ErrUnknownAncestor)) { @@ -1817,8 +1549,10 @@ func (bc *BlockChain) insertChain(chain types.Blocks, verifySeals bool) (int, er // If there are any still remaining, mark as ignored return it.index, err - // Some other error occurred, abort - case err != nil: + // Some other error(except ErrKnownBlock) occurred, abort. + // ErrKnownBlock is allowed here since some known blocks + // still need re-execution to generate snapshots that are missing + case err != nil && !errors.Is(err, ErrKnownBlock): bc.futureBlocks.Remove(block.Hash()) stats.ignored += len(it.chain) bc.reportBlock(block, nil, err) @@ -1836,7 +1570,7 @@ func (bc *BlockChain) insertChain(chain types.Blocks, verifySeals bool) (int, er } }() - for ; block != nil && err == nil || err == ErrKnownBlock; block, err = it.next() { + for ; block != nil && err == nil || errors.Is(err, ErrKnownBlock); block, err = it.next() { // If the chain is terminating, stop processing blocks if bc.insertStopped() { log.Debug("Abort during block processing") @@ -1851,8 +1585,9 @@ func (bc *BlockChain) insertChain(chain types.Blocks, verifySeals bool) (int, er // Clique blocks where they can share state among each other, so importing an // older block might complete the state of the subsequent one. In this case, // just skip the block (we already validated it once fully (and crashed), since - // its header and body was already in the database). - if err == ErrKnownBlock { + // its header and body was already in the database). But if the corresponding + // snapshot layer is missing, forcibly rerun the execution to build it. + if bc.skipBlock(err, it) { logger := log.Debug if bc.chainConfig.Clique == nil { logger = log.Warn @@ -1958,12 +1693,17 @@ func (bc *BlockChain) insertChain(chain types.Blocks, verifySeals bool) (int, er // Update the metrics touched during block validation accountHashTimer.Update(statedb.AccountHashes) // Account hashes are complete, we can mark them storageHashTimer.Update(statedb.StorageHashes) // Storage hashes are complete, we can mark them - blockValidationTimer.Update(time.Since(substart) - (statedb.AccountHashes + statedb.StorageHashes - triehash)) // Write the block to the chain and get the status. substart = time.Now() - status, err := bc.writeBlockWithState(block, receipts, logs, statedb, false) + var status WriteStatus + if !setHead { + // Don't set the head, only insert the block + _, err = bc.writeBlockWithState(block, receipts, logs, statedb) + } else { + status, err = bc.writeBlockAndSetHead(block, receipts, logs, statedb, false) + } atomic.StoreUint32(&followupInterrupt, 1) if err != nil { return it.index, err @@ -1976,6 +1716,12 @@ func (bc *BlockChain) insertChain(chain types.Blocks, verifySeals bool) (int, er blockWriteTimer.Update(time.Since(substart) - statedb.AccountCommits - statedb.StorageCommits - statedb.SnapshotCommits) blockInsertTimer.UpdateSince(start) + if !setHead { + // We did not setHead, so we don't have any stats to update + log.Info("Inserted block", "number", block.Number(), "hash", block.Hash(), "txs", len(block.Transactions()), "elapsed", common.PrettyDuration(time.Since(start))) + return it.index, nil + } + switch status { case CanonStatTy: log.Debug("Inserted new block", "number", block.Number(), "hash", block.Hash(), @@ -2034,10 +1780,12 @@ func (bc *BlockChain) insertChain(chain types.Blocks, verifySeals bool) (int, er // // The method writes all (header-and-body-valid) blocks to disk, then tries to // switch over to the new chain if the TD exceeded the current chain. +// insertSideChain is only used pre-merge. func (bc *BlockChain) insertSideChain(block *types.Block, it *insertIterator) (int, error) { var ( - externTd *big.Int - current = bc.CurrentBlock() + externTd *big.Int + lastBlock = block + current = bc.CurrentBlock() ) // The first sidechain block error is already verified to be ErrPrunedAncestor. // Since we don't import them here, we expect ErrUnknownAncestor for the remaining @@ -2088,6 +1836,7 @@ func (bc *BlockChain) insertSideChain(block *types.Block, it *insertIterator) (i "txs", len(block.Transactions()), "gas", block.GasUsed(), "uncles", len(block.Uncles()), "root", block.Root()) } + lastBlock = block } // At this point, we've written all sidechain blocks to database. Loop ended // either on some other error or all were processed. If there was some other @@ -2095,8 +1844,12 @@ func (bc *BlockChain) insertSideChain(block *types.Block, it *insertIterator) (i // // If the externTd was larger than our local TD, we now need to reimport the previous // blocks to regenerate the required state - localTd := bc.GetTd(current.Hash(), current.NumberU64()) - if localTd.Cmp(externTd) > 0 { + reorg, err := bc.forker.ReorgNeeded(current.Header(), lastBlock.Header()) + if err != nil { + return it.index, err + } + if !reorg { + localTd := bc.GetTd(current.Hash(), current.NumberU64()) log.Info("Sidechain written to disk", "start", it.first().NumberU64(), "end", it.previous().Number, "sidetd", externTd, "localtd", localTd) return it.index, err } @@ -2132,7 +1885,7 @@ func (bc *BlockChain) insertSideChain(block *types.Block, it *insertIterator) (i // memory here. if len(blocks) >= 2048 || memory > 64*1024*1024 { log.Info("Importing heavy sidechain segment", "blocks", len(blocks), "start", blocks[0].NumberU64(), "end", block.NumberU64()) - if _, err := bc.insertChain(blocks, false); err != nil { + if _, err := bc.insertChain(blocks, false, true); err != nil { return 0, err } blocks, memory = blocks[:0], 0 @@ -2146,14 +1899,104 @@ func (bc *BlockChain) insertSideChain(block *types.Block, it *insertIterator) (i } if len(blocks) > 0 { log.Info("Importing sidechain segment", "start", blocks[0].NumberU64(), "end", blocks[len(blocks)-1].NumberU64()) - return bc.insertChain(blocks, false) + return bc.insertChain(blocks, false, true) } return 0, nil } +// recoverAncestors finds the closest ancestor with available state and re-execute +// all the ancestor blocks since that. +// recoverAncestors is only used post-merge. +func (bc *BlockChain) recoverAncestors(block *types.Block) error { + // Gather all the sidechain hashes (full blocks may be memory heavy) + var ( + hashes []common.Hash + numbers []uint64 + parent = block + ) + for parent != nil && !bc.HasState(parent.Root()) { + hashes = append(hashes, parent.Hash()) + numbers = append(numbers, parent.NumberU64()) + parent = bc.GetBlock(parent.ParentHash(), parent.NumberU64()-1) + + // If the chain is terminating, stop iteration + if bc.insertStopped() { + log.Debug("Abort during blocks iteration") + return errInsertionInterrupted + } + } + if parent == nil { + return errors.New("missing parent") + } + // Import all the pruned blocks to make the state available + for i := len(hashes) - 1; i >= 0; i-- { + // If the chain is terminating, stop processing blocks + if bc.insertStopped() { + log.Debug("Abort during blocks processing") + return errInsertionInterrupted + } + var b *types.Block + if i == 0 { + b = block + } else { + b = bc.GetBlock(hashes[i], numbers[i]) + } + if _, err := bc.insertChain(types.Blocks{b}, false, false); err != nil { + return err + } + } + return nil +} + +// collectLogs collects the logs that were generated or removed during +// the processing of the block that corresponds with the given hash. +// These logs are later announced as deleted or reborn. +func (bc *BlockChain) collectLogs(hash common.Hash, removed bool) []*types.Log { + number := bc.hc.GetBlockNumber(hash) + if number == nil { + return []*types.Log{} + } + receipts := rawdb.ReadReceipts(bc.db, hash, *number, bc.chainConfig) + + // Append bor receipt + borReceipt := rawdb.ReadBorReceipt(bc.db, hash, *number) + if borReceipt != nil { + receipts = append(receipts, borReceipt) + } + + var logs []*types.Log + for _, receipt := range receipts { + for _, log := range receipt.Logs { + l := *log + if removed { + l.Removed = true + } + logs = append(logs, &l) + } + } + return logs +} + +// mergeLogs returns a merged log slice with specified sort order. +func mergeLogs(logs [][]*types.Log, reverse bool) []*types.Log { + var ret []*types.Log + if reverse { + for i := len(logs) - 1; i >= 0; i-- { + ret = append(ret, logs[i]...) + } + } else { + for i := 0; i < len(logs); i++ { + ret = append(ret, logs[i]...) + } + } + return ret +} + // reorg takes two blocks, an old chain and a new chain and will reconstruct the // blocks and inserts them to be part of the new canonical chain and accumulates // potential missing transactions and post an event about them. +// Note the new head block won't be processed here, callers need to handle it +// externally. func (bc *BlockChain) reorg(oldBlock, newBlock *types.Block) error { var ( newChain types.Blocks @@ -2165,55 +2008,6 @@ func (bc *BlockChain) reorg(oldBlock, newBlock *types.Block) error { deletedLogs [][]*types.Log rebirthLogs [][]*types.Log - - // collectLogs collects the logs that were generated or removed during - // the processing of the block that corresponds with the given hash. - // These logs are later announced as deleted or reborn - collectLogs = func(hash common.Hash, removed bool) { - number := bc.hc.GetBlockNumber(hash) - if number == nil { - return - } - receipts := rawdb.ReadReceipts(bc.db, hash, *number, bc.chainConfig) - - // Append bor receipt - borReceipt := rawdb.ReadBorReceipt(bc.db, hash, *number) - if borReceipt != nil { - receipts = append(receipts, borReceipt) - } - - var logs []*types.Log - for _, receipt := range receipts { - for _, log := range receipt.Logs { - l := *log - if removed { - l.Removed = true - } - logs = append(logs, &l) - } - } - if len(logs) > 0 { - if removed { - deletedLogs = append(deletedLogs, logs) - } else { - rebirthLogs = append(rebirthLogs, logs) - } - } - } - // mergeLogs returns a merged log slice with specified sort order. - mergeLogs = func(logs [][]*types.Log, reverse bool) []*types.Log { - var ret []*types.Log - if reverse { - for i := len(logs) - 1; i >= 0; i-- { - ret = append(ret, logs[i]...) - } - } else { - for i := 0; i < len(logs); i++ { - ret = append(ret, logs[i]...) - } - } - return ret - } ) // Reduce the longer chain to the same number as the shorter one if oldBlock.NumberU64() > newBlock.NumberU64() { @@ -2221,7 +2015,12 @@ func (bc *BlockChain) reorg(oldBlock, newBlock *types.Block) error { for ; oldBlock != nil && oldBlock.NumberU64() != newBlock.NumberU64(); oldBlock = bc.GetBlock(oldBlock.ParentHash(), oldBlock.NumberU64()-1) { oldChain = append(oldChain, oldBlock) deletedTxs = append(deletedTxs, oldBlock.Transactions()...) - collectLogs(oldBlock.Hash(), true) + + // Collect deleted logs for notification + logs := bc.collectLogs(oldBlock.Hash(), true) + if len(logs) > 0 { + deletedLogs = append(deletedLogs, logs) + } } } else { // New chain is longer, stash all blocks away for subsequent insertion @@ -2246,8 +2045,12 @@ func (bc *BlockChain) reorg(oldBlock, newBlock *types.Block) error { // Remove an old block as well as stash away a new block oldChain = append(oldChain, oldBlock) deletedTxs = append(deletedTxs, oldBlock.Transactions()...) - collectLogs(oldBlock.Hash(), true) + // Collect deleted logs for notification + logs := bc.collectLogs(oldBlock.Hash(), true) + if len(logs) > 0 { + deletedLogs = append(deletedLogs, logs) + } newChain = append(newChain, newBlock) // Step back with both chains @@ -2273,8 +2076,15 @@ func (bc *BlockChain) reorg(oldBlock, newBlock *types.Block) error { blockReorgAddMeter.Mark(int64(len(newChain))) blockReorgDropMeter.Mark(int64(len(oldChain))) blockReorgMeter.Mark(1) + } else if len(newChain) > 0 { + // Special case happens in the post merge stage that current head is + // the ancestor of new head while these two blocks are not consecutive + log.Info("Extend chain", "add", len(newChain), "number", newChain[0].NumberU64(), "hash", newChain[0].Hash()) + blockReorgAddMeter.Mark(int64(len(newChain))) } else { - log.Error("Impossible reorg, please file an issue", "oldnum", oldBlock.Number(), "oldhash", oldBlock.Hash(), "newnum", newBlock.Number(), "newhash", newBlock.Hash()) + // len(newChain) == 0 && len(oldChain) > 0 + // rewind the canonical chain to a lower point. + log.Error("Impossible reorg, please file an issue", "oldnum", oldBlock.Number(), "oldhash", oldBlock.Hash(), "oldblocks", len(oldChain), "newnum", newBlock.Number(), "newhash", newBlock.Hash(), "newblocks", len(newChain)) } // Insert the new chain(except the head block(reverse order)), // taking care of the proper incremental order. @@ -2283,8 +2093,10 @@ func (bc *BlockChain) reorg(oldBlock, newBlock *types.Block) error { bc.writeHeadBlock(newChain[i]) // Collect reborn logs due to chain reorg - collectLogs(newChain[i].Hash(), false) - + logs := bc.collectLogs(newChain[i].Hash(), false) + if len(logs) > 0 { + rebirthLogs = append(rebirthLogs, logs) + } // Collect the new added transactions. addedTxs = append(addedTxs, newChain[i].Transactions()...) } @@ -2324,12 +2136,54 @@ func (bc *BlockChain) reorg(oldBlock, newBlock *types.Block) error { return nil } -// futureBlocksLoop processes the 'future block' queue. -func (bc *BlockChain) futureBlocksLoop() { - defer bc.wg.Done() +// InsertBlockWithoutSetHead executes the block, runs the necessary verification +// upon it and then persist the block and the associate state into the database. +// The key difference between the InsertChain is it won't do the canonical chain +// updating. It relies on the additional SetChainHead call to finalize the entire +// procedure. +func (bc *BlockChain) InsertBlockWithoutSetHead(block *types.Block) error { + if !bc.chainmu.TryLock() { + return errChainStopped + } + defer bc.chainmu.Unlock() + _, err := bc.insertChain(types.Blocks{block}, true, false) + return err +} + +// SetChainHead rewinds the chain to set the new head block as the specified +// block. It's possible that after the reorg the relevant state of head +// is missing. It can be fixed by inserting a new block which triggers +// the re-execution. +func (bc *BlockChain) SetChainHead(newBlock *types.Block) error { + if !bc.chainmu.TryLock() { + return errChainStopped + } + defer bc.chainmu.Unlock() + + // Run the reorg if necessary and set the given block as new head. + if newBlock.ParentHash() != bc.CurrentBlock().Hash() { + if err := bc.reorg(bc.CurrentBlock(), newBlock); err != nil { + return err + } + } + bc.writeHeadBlock(newBlock) + + // Emit events + logs := bc.collectLogs(newBlock.Hash(), false) + bc.chainFeed.Send(ChainEvent{Block: newBlock, Hash: newBlock.Hash(), Logs: logs}) + if len(logs) > 0 { + bc.logsFeed.Send(logs) + } + bc.chainHeadFeed.Send(ChainHeadEvent{Block: newBlock}) + log.Info("Set the chain head", "number", newBlock.Number(), "hash", newBlock.Hash()) + return nil +} + +func (bc *BlockChain) updateFutureBlocks() { futureTimer := time.NewTicker(5 * time.Second) defer futureTimer.Stop() + defer bc.wg.Done() for { select { case <-futureTimer.C: @@ -2340,6 +2194,47 @@ func (bc *BlockChain) futureBlocksLoop() { } } +// skipBlock returns 'true', if the block being imported can be skipped over, meaning +// that the block does not need to be processed but can be considered already fully 'done'. +func (bc *BlockChain) skipBlock(err error, it *insertIterator) bool { + // We can only ever bypass processing if the only error returned by the validator + // is ErrKnownBlock, which means all checks passed, but we already have the block + // and state. + if !errors.Is(err, ErrKnownBlock) { + return false + } + // If we're not using snapshots, we can skip this, since we have both block + // and (trie-) state + if bc.snaps == nil { + return true + } + var ( + header = it.current() // header can't be nil + parentRoot common.Hash + ) + // If we also have the snapshot-state, we can skip the processing. + if bc.snaps.Snapshot(header.Root) != nil { + return true + } + // In this case, we have the trie-state but not snapshot-state. If the parent + // snapshot-state exists, we need to process this in order to not get a gap + // in the snapshot layers. + // Resolve parent block + if parent := it.previous(); parent != nil { + parentRoot = parent.Root + } else if parent = bc.GetHeaderByHash(header.ParentHash); parent != nil { + parentRoot = parent.Root + } + if parentRoot == (common.Hash{}) { + return false // Theoretically impossible case + } + // Parent is also missing snapshot: we can skip this. Otherwise process. + if bc.snaps.Snapshot(parentRoot) == nil { + return true + } + return false +} + // maintainTxIndex is responsible for the construction and deletion of the // transaction index. // @@ -2384,7 +2279,14 @@ func (bc *BlockChain) maintainTxIndex(ancients uint64) { // If a previous indexing existed, make sure that we fill in any missing entries if bc.txLookupLimit == 0 || head < bc.txLookupLimit { if *tail > 0 { - rawdb.IndexTransactions(bc.db, 0, *tail, bc.quit) + // It can happen when chain is rewound to a historical point which + // is even lower than the indexes tail, recap the indexing target + // to new head to avoid reading non-existent block bodies. + end := *tail + if end > head+1 { + end = head + 1 + } + rawdb.IndexTransactions(bc.db, 0, end, bc.quit) } return } @@ -2469,133 +2371,6 @@ func (bc *BlockChain) InsertHeaderChain(chain []*types.Header, checkFreq int) (i return 0, errChainStopped } defer bc.chainmu.Unlock() - _, err := bc.hc.InsertHeaderChain(chain, start) + _, err := bc.hc.InsertHeaderChain(chain, start, bc.forker) return 0, err } - -// CurrentHeader retrieves the current head header of the canonical chain. The -// header is retrieved from the HeaderChain's internal cache. -func (bc *BlockChain) CurrentHeader() *types.Header { - return bc.hc.CurrentHeader() -} - -// GetTd retrieves a block's total difficulty in the canonical chain from the -// database by hash and number, caching it if found. -func (bc *BlockChain) GetTd(hash common.Hash, number uint64) *big.Int { - return bc.hc.GetTd(hash, number) -} - -// GetHeader retrieves a block header from the database by hash and number, -// caching it if found. -func (bc *BlockChain) GetHeader(hash common.Hash, number uint64) *types.Header { - // Blockchain might have cached the whole block, only if not go to headerchain - if block, ok := bc.blockCache.Get(hash); ok { - return block.(*types.Block).Header() - } - - return bc.hc.GetHeader(hash, number) -} - -// GetHeaderByHash retrieves a block header from the database by hash, caching it if -// found. -func (bc *BlockChain) GetHeaderByHash(hash common.Hash) *types.Header { - // Blockchain might have cached the whole block, only if not go to headerchain - if block, ok := bc.blockCache.Get(hash); ok { - return block.(*types.Block).Header() - } - - return bc.hc.GetHeaderByHash(hash) -} - -// HasHeader checks if a block header is present in the database or not, caching -// it if present. -func (bc *BlockChain) HasHeader(hash common.Hash, number uint64) bool { - return bc.hc.HasHeader(hash, number) -} - -// GetCanonicalHash returns the canonical hash for a given block number -func (bc *BlockChain) GetCanonicalHash(number uint64) common.Hash { - return bc.hc.GetCanonicalHash(number) -} - -// GetAncestor retrieves the Nth ancestor of a given block. It assumes that either the given block or -// a close ancestor of it is canonical. maxNonCanonical points to a downwards counter limiting the -// number of blocks to be individually checked before we reach the canonical chain. -// -// Note: ancestor == 0 returns the same block, 1 returns its parent and so on. -func (bc *BlockChain) GetAncestor(hash common.Hash, number, ancestor uint64, maxNonCanonical *uint64) (common.Hash, uint64) { - return bc.hc.GetAncestor(hash, number, ancestor, maxNonCanonical) -} - -// GetHeaderByNumber retrieves a block header from the database by number, -// caching it (associated with its hash) if found. -func (bc *BlockChain) GetHeaderByNumber(number uint64) *types.Header { - return bc.hc.GetHeaderByNumber(number) -} - -// GetTransactionLookup retrieves the lookup associate with the given transaction -// hash from the cache or database. -func (bc *BlockChain) GetTransactionLookup(hash common.Hash) *rawdb.LegacyTxLookupEntry { - // Short circuit if the txlookup already in the cache, retrieve otherwise - if lookup, exist := bc.txLookupCache.Get(hash); exist { - return lookup.(*rawdb.LegacyTxLookupEntry) - } - tx, blockHash, blockNumber, txIndex := rawdb.ReadTransaction(bc.db, hash) - if tx == nil { - return nil - } - lookup := &rawdb.LegacyTxLookupEntry{BlockHash: blockHash, BlockIndex: blockNumber, Index: txIndex} - bc.txLookupCache.Add(hash, lookup) - return lookup -} - -// Config retrieves the chain's fork configuration. -func (bc *BlockChain) Config() *params.ChainConfig { return bc.chainConfig } - -// Engine retrieves the blockchain's consensus engine. -func (bc *BlockChain) Engine() consensus.Engine { return bc.engine } - -// SubscribeRemovedLogsEvent registers a subscription of RemovedLogsEvent. -func (bc *BlockChain) SubscribeRemovedLogsEvent(ch chan<- RemovedLogsEvent) event.Subscription { - return bc.scope.Track(bc.rmLogsFeed.Subscribe(ch)) -} - -// SubscribeChainEvent registers a subscription of ChainEvent. -func (bc *BlockChain) SubscribeChainEvent(ch chan<- ChainEvent) event.Subscription { - return bc.scope.Track(bc.chainFeed.Subscribe(ch)) -} - -// SubscribeChainHeadEvent registers a subscription of ChainHeadEvent. -func (bc *BlockChain) SubscribeChainHeadEvent(ch chan<- ChainHeadEvent) event.Subscription { - return bc.scope.Track(bc.chainHeadFeed.Subscribe(ch)) -} - -// SubscribeChainSideEvent registers a subscription of ChainSideEvent. -func (bc *BlockChain) SubscribeChainSideEvent(ch chan<- ChainSideEvent) event.Subscription { - return bc.scope.Track(bc.chainSideFeed.Subscribe(ch)) -} - -// SubscribeLogsEvent registers a subscription of []*types.Log. -func (bc *BlockChain) SubscribeLogsEvent(ch chan<- []*types.Log) event.Subscription { - return bc.scope.Track(bc.logsFeed.Subscribe(ch)) -} - -// SubscribeBlockProcessingEvent registers a subscription of bool where true means -// block processing has started while false means it has stopped. -func (bc *BlockChain) SubscribeBlockProcessingEvent(ch chan<- bool) event.Subscription { - return bc.scope.Track(bc.blockProcFeed.Subscribe(ch)) -} - -// -// Bor related changes -// - -// SetStateSync set sync data in state_data -func (bc *BlockChain) SetStateSync(stateData []*types.StateSyncData) { - bc.stateSyncData = stateData -} - -// SubscribeStateSyncEvent registers a subscription of StateSyncEvent. -func (bc *BlockChain) SubscribeStateSyncEvent(ch chan<- StateSyncEvent) event.Subscription { - return bc.scope.Track(bc.stateSyncFeed.Subscribe(ch)) -} diff --git a/core/blockchain_insert.go b/core/blockchain_insert.go index cb8473c084..4464870279 100644 --- a/core/blockchain_insert.go +++ b/core/blockchain_insert.go @@ -150,6 +150,14 @@ func (it *insertIterator) previous() *types.Header { return it.chain[it.index-1].Header() } +// current returns the current header that is being processed, or nil. +func (it *insertIterator) current() *types.Header { + if it.index == -1 || it.index >= len(it.chain) { + return nil + } + return it.chain[it.index].Header() +} + // first returns the first block in the it. func (it *insertIterator) first() *types.Block { return it.chain[0] diff --git a/core/blockchain_reader.go b/core/blockchain_reader.go new file mode 100644 index 0000000000..9b32aa0f8f --- /dev/null +++ b/core/blockchain_reader.go @@ -0,0 +1,407 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package core + +import ( + "math/big" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/consensus" + "github.com/ethereum/go-ethereum/core/rawdb" + "github.com/ethereum/go-ethereum/core/state" + "github.com/ethereum/go-ethereum/core/state/snapshot" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/core/vm" + "github.com/ethereum/go-ethereum/event" + "github.com/ethereum/go-ethereum/params" + "github.com/ethereum/go-ethereum/rlp" +) + +// CurrentHeader retrieves the current head header of the canonical chain. The +// header is retrieved from the HeaderChain's internal cache. +func (bc *BlockChain) CurrentHeader() *types.Header { + return bc.hc.CurrentHeader() +} + +// CurrentBlock retrieves the current head block of the canonical chain. The +// block is retrieved from the blockchain's internal cache. +func (bc *BlockChain) CurrentBlock() *types.Block { + return bc.currentBlock.Load().(*types.Block) +} + +// CurrentFastBlock retrieves the current fast-sync head block of the canonical +// chain. The block is retrieved from the blockchain's internal cache. +func (bc *BlockChain) CurrentFastBlock() *types.Block { + return bc.currentFastBlock.Load().(*types.Block) +} + +// HasHeader checks if a block header is present in the database or not, caching +// it if present. +func (bc *BlockChain) HasHeader(hash common.Hash, number uint64) bool { + return bc.hc.HasHeader(hash, number) +} + +// GetHeader retrieves a block header from the database by hash and number, +// caching it if found. +func (bc *BlockChain) GetHeader(hash common.Hash, number uint64) *types.Header { + return bc.hc.GetHeader(hash, number) +} + +// GetHeaderByHash retrieves a block header from the database by hash, caching it if +// found. +func (bc *BlockChain) GetHeaderByHash(hash common.Hash) *types.Header { + return bc.hc.GetHeaderByHash(hash) +} + +// GetHeaderByNumber retrieves a block header from the database by number, +// caching it (associated with its hash) if found. +func (bc *BlockChain) GetHeaderByNumber(number uint64) *types.Header { + return bc.hc.GetHeaderByNumber(number) +} + +// GetHeadersFrom returns a contiguous segment of headers, in rlp-form, going +// backwards from the given number. +func (bc *BlockChain) GetHeadersFrom(number, count uint64) []rlp.RawValue { + return bc.hc.GetHeadersFrom(number, count) +} + +// GetBody retrieves a block body (transactions and uncles) from the database by +// hash, caching it if found. +func (bc *BlockChain) GetBody(hash common.Hash) *types.Body { + // Short circuit if the body's already in the cache, retrieve otherwise + if cached, ok := bc.bodyCache.Get(hash); ok { + body := cached.(*types.Body) + return body + } + number := bc.hc.GetBlockNumber(hash) + if number == nil { + return nil + } + body := rawdb.ReadBody(bc.db, hash, *number) + if body == nil { + return nil + } + // Cache the found body for next time and return + bc.bodyCache.Add(hash, body) + return body +} + +// GetBodyRLP retrieves a block body in RLP encoding from the database by hash, +// caching it if found. +func (bc *BlockChain) GetBodyRLP(hash common.Hash) rlp.RawValue { + // Short circuit if the body's already in the cache, retrieve otherwise + if cached, ok := bc.bodyRLPCache.Get(hash); ok { + return cached.(rlp.RawValue) + } + number := bc.hc.GetBlockNumber(hash) + if number == nil { + return nil + } + body := rawdb.ReadBodyRLP(bc.db, hash, *number) + if len(body) == 0 { + return nil + } + // Cache the found body for next time and return + bc.bodyRLPCache.Add(hash, body) + return body +} + +// HasBlock checks if a block is fully present in the database or not. +func (bc *BlockChain) HasBlock(hash common.Hash, number uint64) bool { + if bc.blockCache.Contains(hash) { + return true + } + return rawdb.HasBody(bc.db, hash, number) +} + +// HasFastBlock checks if a fast block is fully present in the database or not. +func (bc *BlockChain) HasFastBlock(hash common.Hash, number uint64) bool { + if !bc.HasBlock(hash, number) { + return false + } + if bc.receiptsCache.Contains(hash) { + return true + } + return rawdb.HasReceipts(bc.db, hash, number) +} + +// GetBlock retrieves a block from the database by hash and number, +// caching it if found. +func (bc *BlockChain) GetBlock(hash common.Hash, number uint64) *types.Block { + // Short circuit if the block's already in the cache, retrieve otherwise + if block, ok := bc.blockCache.Get(hash); ok { + return block.(*types.Block) + } + block := rawdb.ReadBlock(bc.db, hash, number) + if block == nil { + return nil + } + // Cache the found block for next time and return + bc.blockCache.Add(block.Hash(), block) + return block +} + +// GetBlockByHash retrieves a block from the database by hash, caching it if found. +func (bc *BlockChain) GetBlockByHash(hash common.Hash) *types.Block { + number := bc.hc.GetBlockNumber(hash) + if number == nil { + return nil + } + return bc.GetBlock(hash, *number) +} + +// GetBlockByNumber retrieves a block from the database by number, caching it +// (associated with its hash) if found. +func (bc *BlockChain) GetBlockByNumber(number uint64) *types.Block { + hash := rawdb.ReadCanonicalHash(bc.db, number) + if hash == (common.Hash{}) { + return nil + } + return bc.GetBlock(hash, number) +} + +// GetBlocksFromHash returns the block corresponding to hash and up to n-1 ancestors. +// [deprecated by eth/62] +func (bc *BlockChain) GetBlocksFromHash(hash common.Hash, n int) (blocks []*types.Block) { + number := bc.hc.GetBlockNumber(hash) + if number == nil { + return nil + } + for i := 0; i < n; i++ { + block := bc.GetBlock(hash, *number) + if block == nil { + break + } + blocks = append(blocks, block) + hash = block.ParentHash() + *number-- + } + return +} + +// GetReceiptsByHash retrieves the receipts for all transactions in a given block. +func (bc *BlockChain) GetReceiptsByHash(hash common.Hash) types.Receipts { + if receipts, ok := bc.receiptsCache.Get(hash); ok { + return receipts.(types.Receipts) + } + number := rawdb.ReadHeaderNumber(bc.db, hash) + if number == nil { + return nil + } + receipts := rawdb.ReadReceipts(bc.db, hash, *number, bc.chainConfig) + if receipts == nil { + return nil + } + bc.receiptsCache.Add(hash, receipts) + return receipts +} + +// GetUnclesInChain retrieves all the uncles from a given block backwards until +// a specific distance is reached. +func (bc *BlockChain) GetUnclesInChain(block *types.Block, length int) []*types.Header { + uncles := []*types.Header{} + for i := 0; block != nil && i < length; i++ { + uncles = append(uncles, block.Uncles()...) + block = bc.GetBlock(block.ParentHash(), block.NumberU64()-1) + } + return uncles +} + +// GetCanonicalHash returns the canonical hash for a given block number +func (bc *BlockChain) GetCanonicalHash(number uint64) common.Hash { + return bc.hc.GetCanonicalHash(number) +} + +// GetAncestor retrieves the Nth ancestor of a given block. It assumes that either the given block or +// a close ancestor of it is canonical. maxNonCanonical points to a downwards counter limiting the +// number of blocks to be individually checked before we reach the canonical chain. +// +// Note: ancestor == 0 returns the same block, 1 returns its parent and so on. +func (bc *BlockChain) GetAncestor(hash common.Hash, number, ancestor uint64, maxNonCanonical *uint64) (common.Hash, uint64) { + return bc.hc.GetAncestor(hash, number, ancestor, maxNonCanonical) +} + +// GetTransactionLookup retrieves the lookup associate with the given transaction +// hash from the cache or database. +func (bc *BlockChain) GetTransactionLookup(hash common.Hash) *rawdb.LegacyTxLookupEntry { + // Short circuit if the txlookup already in the cache, retrieve otherwise + if lookup, exist := bc.txLookupCache.Get(hash); exist { + return lookup.(*rawdb.LegacyTxLookupEntry) + } + tx, blockHash, blockNumber, txIndex := rawdb.ReadTransaction(bc.db, hash) + if tx == nil { + return nil + } + lookup := &rawdb.LegacyTxLookupEntry{BlockHash: blockHash, BlockIndex: blockNumber, Index: txIndex} + bc.txLookupCache.Add(hash, lookup) + return lookup +} + +// GetTd retrieves a block's total difficulty in the canonical chain from the +// database by hash and number, caching it if found. +func (bc *BlockChain) GetTd(hash common.Hash, number uint64) *big.Int { + return bc.hc.GetTd(hash, number) +} + +// HasState checks if state trie is fully present in the database or not. +func (bc *BlockChain) HasState(hash common.Hash) bool { + _, err := bc.stateCache.OpenTrie(hash) + return err == nil +} + +// HasBlockAndState checks if a block and associated state trie is fully present +// in the database or not, caching it if present. +func (bc *BlockChain) HasBlockAndState(hash common.Hash, number uint64) bool { + // Check first that the block itself is known + block := bc.GetBlock(hash, number) + if block == nil { + return false + } + return bc.HasState(block.Root()) +} + +// TrieNode retrieves a blob of data associated with a trie node +// either from ephemeral in-memory cache, or from persistent storage. +func (bc *BlockChain) TrieNode(hash common.Hash) ([]byte, error) { + return bc.stateCache.TrieDB().Node(hash) +} + +// ContractCode retrieves a blob of data associated with a contract hash +// either from ephemeral in-memory cache, or from persistent storage. +func (bc *BlockChain) ContractCode(hash common.Hash) ([]byte, error) { + return bc.stateCache.ContractCode(common.Hash{}, hash) +} + +// ContractCodeWithPrefix retrieves a blob of data associated with a contract +// hash either from ephemeral in-memory cache, or from persistent storage. +// +// If the code doesn't exist in the in-memory cache, check the storage with +// new code scheme. +func (bc *BlockChain) ContractCodeWithPrefix(hash common.Hash) ([]byte, error) { + type codeReader interface { + ContractCodeWithPrefix(addrHash, codeHash common.Hash) ([]byte, error) + } + return bc.stateCache.(codeReader).ContractCodeWithPrefix(common.Hash{}, hash) +} + +// State returns a new mutable state based on the current HEAD block. +func (bc *BlockChain) State() (*state.StateDB, error) { + return bc.StateAt(bc.CurrentBlock().Root()) +} + +// StateAt returns a new mutable state based on a particular point in time. +func (bc *BlockChain) StateAt(root common.Hash) (*state.StateDB, error) { + return state.New(root, bc.stateCache, bc.snaps) +} + +// Config retrieves the chain's fork configuration. +func (bc *BlockChain) Config() *params.ChainConfig { return bc.chainConfig } + +// Engine retrieves the blockchain's consensus engine. +func (bc *BlockChain) Engine() consensus.Engine { return bc.engine } + +// Snapshots returns the blockchain snapshot tree. +func (bc *BlockChain) Snapshots() *snapshot.Tree { + return bc.snaps +} + +// Validator returns the current validator. +func (bc *BlockChain) Validator() Validator { + return bc.validator +} + +// Processor returns the current processor. +func (bc *BlockChain) Processor() Processor { + return bc.processor +} + +// StateCache returns the caching database underpinning the blockchain instance. +func (bc *BlockChain) StateCache() state.Database { + return bc.stateCache +} + +// GasLimit returns the gas limit of the current HEAD block. +func (bc *BlockChain) GasLimit() uint64 { + return bc.CurrentBlock().GasLimit() +} + +// Genesis retrieves the chain's genesis block. +func (bc *BlockChain) Genesis() *types.Block { + return bc.genesisBlock +} + +// GetVMConfig returns the block chain VM config. +func (bc *BlockChain) GetVMConfig() *vm.Config { + return &bc.vmConfig +} + +// SetTxLookupLimit is responsible for updating the txlookup limit to the +// original one stored in db if the new mismatches with the old one. +func (bc *BlockChain) SetTxLookupLimit(limit uint64) { + bc.txLookupLimit = limit +} + +// TxLookupLimit retrieves the txlookup limit used by blockchain to prune +// stale transaction indices. +func (bc *BlockChain) TxLookupLimit() uint64 { + return bc.txLookupLimit +} + +// SubscribeRemovedLogsEvent registers a subscription of RemovedLogsEvent. +func (bc *BlockChain) SubscribeRemovedLogsEvent(ch chan<- RemovedLogsEvent) event.Subscription { + return bc.scope.Track(bc.rmLogsFeed.Subscribe(ch)) +} + +// SubscribeChainEvent registers a subscription of ChainEvent. +func (bc *BlockChain) SubscribeChainEvent(ch chan<- ChainEvent) event.Subscription { + return bc.scope.Track(bc.chainFeed.Subscribe(ch)) +} + +// SubscribeChainHeadEvent registers a subscription of ChainHeadEvent. +func (bc *BlockChain) SubscribeChainHeadEvent(ch chan<- ChainHeadEvent) event.Subscription { + return bc.scope.Track(bc.chainHeadFeed.Subscribe(ch)) +} + +// SubscribeChainSideEvent registers a subscription of ChainSideEvent. +func (bc *BlockChain) SubscribeChainSideEvent(ch chan<- ChainSideEvent) event.Subscription { + return bc.scope.Track(bc.chainSideFeed.Subscribe(ch)) +} + +// SubscribeLogsEvent registers a subscription of []*types.Log. +func (bc *BlockChain) SubscribeLogsEvent(ch chan<- []*types.Log) event.Subscription { + return bc.scope.Track(bc.logsFeed.Subscribe(ch)) +} + +// SubscribeBlockProcessingEvent registers a subscription of bool where true means +// block processing has started while false means it has stopped. +func (bc *BlockChain) SubscribeBlockProcessingEvent(ch chan<- bool) event.Subscription { + return bc.scope.Track(bc.blockProcFeed.Subscribe(ch)) +} + +// +// Bor related changes +// + +// SetStateSync set sync data in state_data +func (bc *BlockChain) SetStateSync(stateData []*types.StateSyncData) { + bc.stateSyncData = stateData +} + +// SubscribeStateSyncEvent registers a subscription of StateSyncEvent. +func (bc *BlockChain) SubscribeStateSyncEvent(ch chan<- StateSyncEvent) event.Subscription { + return bc.scope.Track(bc.stateSyncFeed.Subscribe(ch)) +} diff --git a/core/blockchain_repair_test.go b/core/blockchain_repair_test.go index aca5546e20..eb5025ed55 100644 --- a/core/blockchain_repair_test.go +++ b/core/blockchain_repair_test.go @@ -79,10 +79,10 @@ func testShortRepair(t *testing.T, snapshots bool) { // already committed, after which the process crashed. In this case we expect the full // chain to be rolled back to the committed block, but the chain data itself left in // the database for replaying. -func TestShortFastSyncedRepair(t *testing.T) { testShortFastSyncedRepair(t, false) } -func TestShortFastSyncedRepairWithSnapshots(t *testing.T) { testShortFastSyncedRepair(t, true) } +func TestShortSnapSyncedRepair(t *testing.T) { testShortSnapSyncedRepair(t, false) } +func TestShortSnapSyncedRepairWithSnapshots(t *testing.T) { testShortSnapSyncedRepair(t, true) } -func testShortFastSyncedRepair(t *testing.T, snapshots bool) { +func testShortSnapSyncedRepair(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8 (HEAD) // @@ -119,10 +119,10 @@ func testShortFastSyncedRepair(t *testing.T, snapshots bool) { // not yet committed, but the process crashed. In this case we expect the chain to // detect that it was fast syncing and not delete anything, since we can just pick // up directly where we left off. -func TestShortFastSyncingRepair(t *testing.T) { testShortFastSyncingRepair(t, false) } -func TestShortFastSyncingRepairWithSnapshots(t *testing.T) { testShortFastSyncingRepair(t, true) } +func TestShortSnapSyncingRepair(t *testing.T) { testShortSnapSyncingRepair(t, false) } +func TestShortSnapSyncingRepairWithSnapshots(t *testing.T) { testShortSnapSyncingRepair(t, true) } -func testShortFastSyncingRepair(t *testing.T, snapshots bool) { +func testShortSnapSyncingRepair(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8 (HEAD) // @@ -203,14 +203,14 @@ func testShortOldForkedRepair(t *testing.T, snapshots bool) { // crashed. In this test scenario the side chain is below the committed block. In // this case we expect the canonical chain to be rolled back to the committed block, // but the chain data itself left in the database for replaying. -func TestShortOldForkedFastSyncedRepair(t *testing.T) { - testShortOldForkedFastSyncedRepair(t, false) +func TestShortOldForkedSnapSyncedRepair(t *testing.T) { + testShortOldForkedSnapSyncedRepair(t, false) } -func TestShortOldForkedFastSyncedRepairWithSnapshots(t *testing.T) { - testShortOldForkedFastSyncedRepair(t, true) +func TestShortOldForkedSnapSyncedRepairWithSnapshots(t *testing.T) { + testShortOldForkedSnapSyncedRepair(t, true) } -func testShortOldForkedFastSyncedRepair(t *testing.T, snapshots bool) { +func testShortOldForkedSnapSyncedRepair(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8 (HEAD) // └->S1->S2->S3 @@ -250,14 +250,14 @@ func testShortOldForkedFastSyncedRepair(t *testing.T, snapshots bool) { // test scenario the side chain is below the committed block. In this case we expect // the chain to detect that it was fast syncing and not delete anything, since we // can just pick up directly where we left off. -func TestShortOldForkedFastSyncingRepair(t *testing.T) { - testShortOldForkedFastSyncingRepair(t, false) +func TestShortOldForkedSnapSyncingRepair(t *testing.T) { + testShortOldForkedSnapSyncingRepair(t, false) } -func TestShortOldForkedFastSyncingRepairWithSnapshots(t *testing.T) { - testShortOldForkedFastSyncingRepair(t, true) +func TestShortOldForkedSnapSyncingRepairWithSnapshots(t *testing.T) { + testShortOldForkedSnapSyncingRepair(t, true) } -func testShortOldForkedFastSyncingRepair(t *testing.T, snapshots bool) { +func testShortOldForkedSnapSyncingRepair(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8 (HEAD) // └->S1->S2->S3 @@ -340,14 +340,14 @@ func testShortNewlyForkedRepair(t *testing.T, snapshots bool) { // crashed. In this test scenario the side chain reaches above the committed block. // In this case we expect the canonical chain to be rolled back to the committed // block, but the chain data itself left in the database for replaying. -func TestShortNewlyForkedFastSyncedRepair(t *testing.T) { - testShortNewlyForkedFastSyncedRepair(t, false) +func TestShortNewlyForkedSnapSyncedRepair(t *testing.T) { + testShortNewlyForkedSnapSyncedRepair(t, false) } -func TestShortNewlyForkedFastSyncedRepairWithSnapshots(t *testing.T) { - testShortNewlyForkedFastSyncedRepair(t, true) +func TestShortNewlyForkedSnapSyncedRepairWithSnapshots(t *testing.T) { + testShortNewlyForkedSnapSyncedRepair(t, true) } -func testShortNewlyForkedFastSyncedRepair(t *testing.T, snapshots bool) { +func testShortNewlyForkedSnapSyncedRepair(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8 (HEAD) // └->S1->S2->S3->S4->S5->S6 @@ -387,14 +387,14 @@ func testShortNewlyForkedFastSyncedRepair(t *testing.T, snapshots bool) { // this test scenario the side chain reaches above the committed block. In this // case we expect the chain to detect that it was fast syncing and not delete // anything, since we can just pick up directly where we left off. -func TestShortNewlyForkedFastSyncingRepair(t *testing.T) { - testShortNewlyForkedFastSyncingRepair(t, false) +func TestShortNewlyForkedSnapSyncingRepair(t *testing.T) { + testShortNewlyForkedSnapSyncingRepair(t, false) } -func TestShortNewlyForkedFastSyncingRepairWithSnapshots(t *testing.T) { - testShortNewlyForkedFastSyncingRepair(t, true) +func TestShortNewlyForkedSnapSyncingRepairWithSnapshots(t *testing.T) { + testShortNewlyForkedSnapSyncingRepair(t, true) } -func testShortNewlyForkedFastSyncingRepair(t *testing.T, snapshots bool) { +func testShortNewlyForkedSnapSyncingRepair(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8 (HEAD) // └->S1->S2->S3->S4->S5->S6 @@ -475,14 +475,14 @@ func testShortReorgedRepair(t *testing.T, snapshots bool) { // the fast sync pivot point was already committed to disk and then the process // crashed. In this case we expect the canonical chain to be rolled back to the // committed block, but the chain data itself left in the database for replaying. -func TestShortReorgedFastSyncedRepair(t *testing.T) { - testShortReorgedFastSyncedRepair(t, false) +func TestShortReorgedSnapSyncedRepair(t *testing.T) { + testShortReorgedSnapSyncedRepair(t, false) } -func TestShortReorgedFastSyncedRepairWithSnapshots(t *testing.T) { - testShortReorgedFastSyncedRepair(t, true) +func TestShortReorgedSnapSyncedRepairWithSnapshots(t *testing.T) { + testShortReorgedSnapSyncedRepair(t, true) } -func testShortReorgedFastSyncedRepair(t *testing.T, snapshots bool) { +func testShortReorgedSnapSyncedRepair(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8 (HEAD) // └->S1->S2->S3->S4->S5->S6->S7->S8->S9->S10 @@ -521,14 +521,14 @@ func testShortReorgedFastSyncedRepair(t *testing.T, snapshots bool) { // the fast sync pivot point was not yet committed, but the process crashed. In // this case we expect the chain to detect that it was fast syncing and not delete // anything, since we can just pick up directly where we left off. -func TestShortReorgedFastSyncingRepair(t *testing.T) { - testShortReorgedFastSyncingRepair(t, false) +func TestShortReorgedSnapSyncingRepair(t *testing.T) { + testShortReorgedSnapSyncingRepair(t, false) } -func TestShortReorgedFastSyncingRepairWithSnapshots(t *testing.T) { - testShortReorgedFastSyncingRepair(t, true) +func TestShortReorgedSnapSyncingRepairWithSnapshots(t *testing.T) { + testShortReorgedSnapSyncingRepair(t, true) } -func testShortReorgedFastSyncingRepair(t *testing.T, snapshots bool) { +func testShortReorgedSnapSyncingRepair(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8 (HEAD) // └->S1->S2->S3->S4->S5->S6->S7->S8->S9->S10 @@ -656,14 +656,14 @@ func testLongDeepRepair(t *testing.T, snapshots bool) { // sync pivot point - newer than the ancient limit - was already committed, after // which the process crashed. In this case we expect the chain to be rolled back // to the committed block, with everything afterwads kept as fast sync data. -func TestLongFastSyncedShallowRepair(t *testing.T) { - testLongFastSyncedShallowRepair(t, false) +func TestLongSnapSyncedShallowRepair(t *testing.T) { + testLongSnapSyncedShallowRepair(t, false) } -func TestLongFastSyncedShallowRepairWithSnapshots(t *testing.T) { - testLongFastSyncedShallowRepair(t, true) +func TestLongSnapSyncedShallowRepairWithSnapshots(t *testing.T) { + testLongSnapSyncedShallowRepair(t, true) } -func testLongFastSyncedShallowRepair(t *testing.T, snapshots bool) { +func testLongSnapSyncedShallowRepair(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18 (HEAD) // @@ -705,10 +705,10 @@ func testLongFastSyncedShallowRepair(t *testing.T, snapshots bool) { // sync pivot point - older than the ancient limit - was already committed, after // which the process crashed. In this case we expect the chain to be rolled back // to the committed block, with everything afterwads deleted. -func TestLongFastSyncedDeepRepair(t *testing.T) { testLongFastSyncedDeepRepair(t, false) } -func TestLongFastSyncedDeepRepairWithSnapshots(t *testing.T) { testLongFastSyncedDeepRepair(t, true) } +func TestLongSnapSyncedDeepRepair(t *testing.T) { testLongSnapSyncedDeepRepair(t, false) } +func TestLongSnapSyncedDeepRepairWithSnapshots(t *testing.T) { testLongSnapSyncedDeepRepair(t, true) } -func testLongFastSyncedDeepRepair(t *testing.T, snapshots bool) { +func testLongSnapSyncedDeepRepair(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18->C19->C20->C21->C22->C23->C24 (HEAD) // @@ -750,14 +750,14 @@ func testLongFastSyncedDeepRepair(t *testing.T, snapshots bool) { // process crashed. In this case we expect the chain to detect that it was fast // syncing and not delete anything, since we can just pick up directly where we // left off. -func TestLongFastSyncingShallowRepair(t *testing.T) { - testLongFastSyncingShallowRepair(t, false) +func TestLongSnapSyncingShallowRepair(t *testing.T) { + testLongSnapSyncingShallowRepair(t, false) } -func TestLongFastSyncingShallowRepairWithSnapshots(t *testing.T) { - testLongFastSyncingShallowRepair(t, true) +func TestLongSnapSyncingShallowRepairWithSnapshots(t *testing.T) { + testLongSnapSyncingShallowRepair(t, true) } -func testLongFastSyncingShallowRepair(t *testing.T, snapshots bool) { +func testLongSnapSyncingShallowRepair(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18 (HEAD) // @@ -800,10 +800,10 @@ func testLongFastSyncingShallowRepair(t *testing.T, snapshots bool) { // process crashed. In this case we expect the chain to detect that it was fast // syncing and not delete anything, since we can just pick up directly where we // left off. -func TestLongFastSyncingDeepRepair(t *testing.T) { testLongFastSyncingDeepRepair(t, false) } -func TestLongFastSyncingDeepRepairWithSnapshots(t *testing.T) { testLongFastSyncingDeepRepair(t, true) } +func TestLongSnapSyncingDeepRepair(t *testing.T) { testLongSnapSyncingDeepRepair(t, false) } +func TestLongSnapSyncingDeepRepairWithSnapshots(t *testing.T) { testLongSnapSyncingDeepRepair(t, true) } -func testLongFastSyncingDeepRepair(t *testing.T, snapshots bool) { +func testLongSnapSyncingDeepRepair(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18->C19->C20->C21->C22->C23->C24 (HEAD) // @@ -946,14 +946,14 @@ func testLongOldForkedDeepRepair(t *testing.T, snapshots bool) { // the side chain is below the committed block. In this case we expect the chain // to be rolled back to the committed block, with everything afterwads kept as // fast sync data; the side chain completely nuked by the freezer. -func TestLongOldForkedFastSyncedShallowRepair(t *testing.T) { - testLongOldForkedFastSyncedShallowRepair(t, false) +func TestLongOldForkedSnapSyncedShallowRepair(t *testing.T) { + testLongOldForkedSnapSyncedShallowRepair(t, false) } -func TestLongOldForkedFastSyncedShallowRepairWithSnapshots(t *testing.T) { - testLongOldForkedFastSyncedShallowRepair(t, true) +func TestLongOldForkedSnapSyncedShallowRepairWithSnapshots(t *testing.T) { + testLongOldForkedSnapSyncedShallowRepair(t, true) } -func testLongOldForkedFastSyncedShallowRepair(t *testing.T, snapshots bool) { +func testLongOldForkedSnapSyncedShallowRepair(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18 (HEAD) // └->S1->S2->S3 @@ -998,14 +998,14 @@ func testLongOldForkedFastSyncedShallowRepair(t *testing.T, snapshots bool) { // the side chain is below the committed block. In this case we expect the canonical // chain to be rolled back to the committed block, with everything afterwads deleted; // the side chain completely nuked by the freezer. -func TestLongOldForkedFastSyncedDeepRepair(t *testing.T) { - testLongOldForkedFastSyncedDeepRepair(t, false) +func TestLongOldForkedSnapSyncedDeepRepair(t *testing.T) { + testLongOldForkedSnapSyncedDeepRepair(t, false) } -func TestLongOldForkedFastSyncedDeepRepairWithSnapshots(t *testing.T) { - testLongOldForkedFastSyncedDeepRepair(t, true) +func TestLongOldForkedSnapSyncedDeepRepairWithSnapshots(t *testing.T) { + testLongOldForkedSnapSyncedDeepRepair(t, true) } -func testLongOldForkedFastSyncedDeepRepair(t *testing.T, snapshots bool) { +func testLongOldForkedSnapSyncedDeepRepair(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18->C19->C20->C21->C22->C23->C24 (HEAD) // └->S1->S2->S3 @@ -1049,14 +1049,14 @@ func testLongOldForkedFastSyncedDeepRepair(t *testing.T, snapshots bool) { // chain is below the committed block. In this case we expect the chain to detect // that it was fast syncing and not delete anything. The side chain is completely // nuked by the freezer. -func TestLongOldForkedFastSyncingShallowRepair(t *testing.T) { - testLongOldForkedFastSyncingShallowRepair(t, false) +func TestLongOldForkedSnapSyncingShallowRepair(t *testing.T) { + testLongOldForkedSnapSyncingShallowRepair(t, false) } -func TestLongOldForkedFastSyncingShallowRepairWithSnapshots(t *testing.T) { - testLongOldForkedFastSyncingShallowRepair(t, true) +func TestLongOldForkedSnapSyncingShallowRepairWithSnapshots(t *testing.T) { + testLongOldForkedSnapSyncingShallowRepair(t, true) } -func testLongOldForkedFastSyncingShallowRepair(t *testing.T, snapshots bool) { +func testLongOldForkedSnapSyncingShallowRepair(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18 (HEAD) // └->S1->S2->S3 @@ -1101,14 +1101,14 @@ func testLongOldForkedFastSyncingShallowRepair(t *testing.T, snapshots bool) { // chain is below the committed block. In this case we expect the chain to detect // that it was fast syncing and not delete anything. The side chain is completely // nuked by the freezer. -func TestLongOldForkedFastSyncingDeepRepair(t *testing.T) { - testLongOldForkedFastSyncingDeepRepair(t, false) +func TestLongOldForkedSnapSyncingDeepRepair(t *testing.T) { + testLongOldForkedSnapSyncingDeepRepair(t, false) } -func TestLongOldForkedFastSyncingDeepRepairWithSnapshots(t *testing.T) { - testLongOldForkedFastSyncingDeepRepair(t, true) +func TestLongOldForkedSnapSyncingDeepRepairWithSnapshots(t *testing.T) { + testLongOldForkedSnapSyncingDeepRepair(t, true) } -func testLongOldForkedFastSyncingDeepRepair(t *testing.T, snapshots bool) { +func testLongOldForkedSnapSyncingDeepRepair(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18->C19->C20->C21->C22->C23->C24 (HEAD) // └->S1->S2->S3 @@ -1252,14 +1252,14 @@ func testLongNewerForkedDeepRepair(t *testing.T, snapshots bool) { // the side chain is above the committed block. In this case we expect the chain // to be rolled back to the committed block, with everything afterwads kept as fast // sync data; the side chain completely nuked by the freezer. -func TestLongNewerForkedFastSyncedShallowRepair(t *testing.T) { - testLongNewerForkedFastSyncedShallowRepair(t, false) +func TestLongNewerForkedSnapSyncedShallowRepair(t *testing.T) { + testLongNewerForkedSnapSyncedShallowRepair(t, false) } -func TestLongNewerForkedFastSyncedShallowRepairWithSnapshots(t *testing.T) { - testLongNewerForkedFastSyncedShallowRepair(t, true) +func TestLongNewerForkedSnapSyncedShallowRepairWithSnapshots(t *testing.T) { + testLongNewerForkedSnapSyncedShallowRepair(t, true) } -func testLongNewerForkedFastSyncedShallowRepair(t *testing.T, snapshots bool) { +func testLongNewerForkedSnapSyncedShallowRepair(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18 (HEAD) // └->S1->S2->S3->S4->S5->S6->S7->S8->S9->S10->S11->S12 @@ -1304,14 +1304,14 @@ func testLongNewerForkedFastSyncedShallowRepair(t *testing.T, snapshots bool) { // the side chain is above the committed block. In this case we expect the canonical // chain to be rolled back to the committed block, with everything afterwads deleted; // the side chain completely nuked by the freezer. -func TestLongNewerForkedFastSyncedDeepRepair(t *testing.T) { - testLongNewerForkedFastSyncedDeepRepair(t, false) +func TestLongNewerForkedSnapSyncedDeepRepair(t *testing.T) { + testLongNewerForkedSnapSyncedDeepRepair(t, false) } -func TestLongNewerForkedFastSyncedDeepRepairWithSnapshots(t *testing.T) { - testLongNewerForkedFastSyncedDeepRepair(t, true) +func TestLongNewerForkedSnapSyncedDeepRepairWithSnapshots(t *testing.T) { + testLongNewerForkedSnapSyncedDeepRepair(t, true) } -func testLongNewerForkedFastSyncedDeepRepair(t *testing.T, snapshots bool) { +func testLongNewerForkedSnapSyncedDeepRepair(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18->C19->C20->C21->C22->C23->C24 (HEAD) // └->S1->S2->S3->S4->S5->S6->S7->S8->S9->S10->S11->S12 @@ -1355,14 +1355,14 @@ func testLongNewerForkedFastSyncedDeepRepair(t *testing.T, snapshots bool) { // chain is above the committed block. In this case we expect the chain to detect // that it was fast syncing and not delete anything. The side chain is completely // nuked by the freezer. -func TestLongNewerForkedFastSyncingShallowRepair(t *testing.T) { - testLongNewerForkedFastSyncingShallowRepair(t, false) +func TestLongNewerForkedSnapSyncingShallowRepair(t *testing.T) { + testLongNewerForkedSnapSyncingShallowRepair(t, false) } -func TestLongNewerForkedFastSyncingShallowRepairWithSnapshots(t *testing.T) { - testLongNewerForkedFastSyncingShallowRepair(t, true) +func TestLongNewerForkedSnapSyncingShallowRepairWithSnapshots(t *testing.T) { + testLongNewerForkedSnapSyncingShallowRepair(t, true) } -func testLongNewerForkedFastSyncingShallowRepair(t *testing.T, snapshots bool) { +func testLongNewerForkedSnapSyncingShallowRepair(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18 (HEAD) // └->S1->S2->S3->S4->S5->S6->S7->S8->S9->S10->S11->S12 @@ -1407,14 +1407,14 @@ func testLongNewerForkedFastSyncingShallowRepair(t *testing.T, snapshots bool) { // chain is above the committed block. In this case we expect the chain to detect // that it was fast syncing and not delete anything. The side chain is completely // nuked by the freezer. -func TestLongNewerForkedFastSyncingDeepRepair(t *testing.T) { - testLongNewerForkedFastSyncingDeepRepair(t, false) +func TestLongNewerForkedSnapSyncingDeepRepair(t *testing.T) { + testLongNewerForkedSnapSyncingDeepRepair(t, false) } -func TestLongNewerForkedFastSyncingDeepRepairWithSnapshots(t *testing.T) { - testLongNewerForkedFastSyncingDeepRepair(t, true) +func TestLongNewerForkedSnapSyncingDeepRepairWithSnapshots(t *testing.T) { + testLongNewerForkedSnapSyncingDeepRepair(t, true) } -func testLongNewerForkedFastSyncingDeepRepair(t *testing.T, snapshots bool) { +func testLongNewerForkedSnapSyncingDeepRepair(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18->C19->C20->C21->C22->C23->C24 (HEAD) // └->S1->S2->S3->S4->S5->S6->S7->S8->S9->S10->S11->S12 @@ -1552,14 +1552,14 @@ func testLongReorgedDeepRepair(t *testing.T, snapshots bool) { // expect the chain to be rolled back to the committed block, with everything // afterwads kept as fast sync data. The side chain completely nuked by the // freezer. -func TestLongReorgedFastSyncedShallowRepair(t *testing.T) { - testLongReorgedFastSyncedShallowRepair(t, false) +func TestLongReorgedSnapSyncedShallowRepair(t *testing.T) { + testLongReorgedSnapSyncedShallowRepair(t, false) } -func TestLongReorgedFastSyncedShallowRepairWithSnapshots(t *testing.T) { - testLongReorgedFastSyncedShallowRepair(t, true) +func TestLongReorgedSnapSyncedShallowRepairWithSnapshots(t *testing.T) { + testLongReorgedSnapSyncedShallowRepair(t, true) } -func testLongReorgedFastSyncedShallowRepair(t *testing.T, snapshots bool) { +func testLongReorgedSnapSyncedShallowRepair(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18 (HEAD) // └->S1->S2->S3->S4->S5->S6->S7->S8->S9->S10->S11->S12->S13->S14->S15->S16->S17->S18->S19->S20->S21->S22->S23->S24->S25->S26 @@ -1603,14 +1603,14 @@ func testLongReorgedFastSyncedShallowRepair(t *testing.T, snapshots bool) { // was already committed to disk and then the process crashed. In this case we // expect the canonical chains to be rolled back to the committed block, with // everything afterwads deleted. The side chain completely nuked by the freezer. -func TestLongReorgedFastSyncedDeepRepair(t *testing.T) { - testLongReorgedFastSyncedDeepRepair(t, false) +func TestLongReorgedSnapSyncedDeepRepair(t *testing.T) { + testLongReorgedSnapSyncedDeepRepair(t, false) } -func TestLongReorgedFastSyncedDeepRepairWithSnapshots(t *testing.T) { - testLongReorgedFastSyncedDeepRepair(t, true) +func TestLongReorgedSnapSyncedDeepRepairWithSnapshots(t *testing.T) { + testLongReorgedSnapSyncedDeepRepair(t, true) } -func testLongReorgedFastSyncedDeepRepair(t *testing.T, snapshots bool) { +func testLongReorgedSnapSyncedDeepRepair(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18->C19->C20->C21->C22->C23->C24 (HEAD) // └->S1->S2->S3->S4->S5->S6->S7->S8->S9->S10->S11->S12->S13->S14->S15->S16->S17->S18->S19->S20->S21->S22->S23->S24->S25->S26 @@ -1653,14 +1653,14 @@ func testLongReorgedFastSyncedDeepRepair(t *testing.T, snapshots bool) { // was not yet committed, but the process crashed. In this case we expect the // chain to detect that it was fast syncing and not delete anything, since we // can just pick up directly where we left off. -func TestLongReorgedFastSyncingShallowRepair(t *testing.T) { - testLongReorgedFastSyncingShallowRepair(t, false) +func TestLongReorgedSnapSyncingShallowRepair(t *testing.T) { + testLongReorgedSnapSyncingShallowRepair(t, false) } -func TestLongReorgedFastSyncingShallowRepairWithSnapshots(t *testing.T) { - testLongReorgedFastSyncingShallowRepair(t, true) +func TestLongReorgedSnapSyncingShallowRepairWithSnapshots(t *testing.T) { + testLongReorgedSnapSyncingShallowRepair(t, true) } -func testLongReorgedFastSyncingShallowRepair(t *testing.T, snapshots bool) { +func testLongReorgedSnapSyncingShallowRepair(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18 (HEAD) // └->S1->S2->S3->S4->S5->S6->S7->S8->S9->S10->S11->S12->S13->S14->S15->S16->S17->S18->S19->S20->S21->S22->S23->S24->S25->S26 @@ -1704,14 +1704,14 @@ func testLongReorgedFastSyncingShallowRepair(t *testing.T, snapshots bool) { // was not yet committed, but the process crashed. In this case we expect the // chain to detect that it was fast syncing and not delete anything, since we // can just pick up directly where we left off. -func TestLongReorgedFastSyncingDeepRepair(t *testing.T) { - testLongReorgedFastSyncingDeepRepair(t, false) +func TestLongReorgedSnapSyncingDeepRepair(t *testing.T) { + testLongReorgedSnapSyncingDeepRepair(t, false) } -func TestLongReorgedFastSyncingDeepRepairWithSnapshots(t *testing.T) { - testLongReorgedFastSyncingDeepRepair(t, true) +func TestLongReorgedSnapSyncingDeepRepairWithSnapshots(t *testing.T) { + testLongReorgedSnapSyncingDeepRepair(t, true) } -func testLongReorgedFastSyncingDeepRepair(t *testing.T, snapshots bool) { +func testLongReorgedSnapSyncingDeepRepair(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18->C19->C20->C21->C22->C23->C24 (HEAD) // └->S1->S2->S3->S4->S5->S6->S7->S8->S9->S10->S11->S12->S13->S14->S15->S16->S17->S18->S19->S20->S21->S22->S23->S24->S25->S26 @@ -1829,7 +1829,7 @@ func testRepair(t *testing.T, tt *rewindTest, snapshots bool) { // Pull the plug on the database, simulating a hard crash db.Close() - // Start a new blockchain back up and see where the repait leads us + // Start a new blockchain back up and see where the repair leads us db, err = rawdb.NewLevelDBDatabaseWithFreezer(datadir, 0, 0, datadir, "", false) if err != nil { t.Fatalf("Failed to reopen persistent database: %v", err) @@ -1863,3 +1863,124 @@ func testRepair(t *testing.T, tt *rewindTest, snapshots bool) { t.Errorf("Frozen block count mismatch: have %d, want %d", frozen, tt.expFrozen) } } + +// TestIssue23496 tests scenario described in https://github.com/ethereum/go-ethereum/pull/23496#issuecomment-926393893 +// Credits to @zzyalbert for finding the issue. +// +// Local chain owns these blocks: +// G B1 B2 B3 B4 +// B1: state committed +// B2: snapshot disk layer +// B3: state committed +// B4: head block +// +// Crash happens without fully persisting snapshot and in-memory states, +// chain rewinds itself to the B1 (skip B3 in order to recover snapshot) +// In this case the snapshot layer of B3 is not created because of existent +// state. +func TestIssue23496(t *testing.T) { + // It's hard to follow the test case, visualize the input + //log.Root().SetHandler(log.LvlFilterHandler(log.LvlTrace, log.StreamHandler(os.Stderr, log.TerminalFormat(true)))) + + // Create a temporary persistent database + datadir, err := ioutil.TempDir("", "") + if err != nil { + t.Fatalf("Failed to create temporary datadir: %v", err) + } + os.RemoveAll(datadir) + + db, err := rawdb.NewLevelDBDatabaseWithFreezer(datadir, 0, 0, datadir, "", false) + if err != nil { + t.Fatalf("Failed to create persistent database: %v", err) + } + defer db.Close() // Might double close, should be fine + + // Initialize a fresh chain + var ( + genesis = (&Genesis{BaseFee: big.NewInt(params.InitialBaseFee)}).MustCommit(db) + engine = ethash.NewFullFaker() + config = &CacheConfig{ + TrieCleanLimit: 256, + TrieDirtyLimit: 256, + TrieTimeLimit: 5 * time.Minute, + SnapshotLimit: 256, + SnapshotWait: true, + } + ) + chain, err := NewBlockChain(db, config, params.AllEthashProtocolChanges, engine, vm.Config{}, nil, nil) + if err != nil { + t.Fatalf("Failed to create chain: %v", err) + } + blocks, _ := GenerateChain(params.TestChainConfig, genesis, engine, rawdb.NewMemoryDatabase(), 4, func(i int, b *BlockGen) { + b.SetCoinbase(common.Address{0x02}) + b.SetDifficulty(big.NewInt(1000000)) + }) + + // Insert block B1 and commit the state into disk + if _, err := chain.InsertChain(blocks[:1]); err != nil { + t.Fatalf("Failed to import canonical chain start: %v", err) + } + chain.stateCache.TrieDB().Commit(blocks[0].Root(), true, nil) + + // Insert block B2 and commit the snapshot into disk + if _, err := chain.InsertChain(blocks[1:2]); err != nil { + t.Fatalf("Failed to import canonical chain start: %v", err) + } + if err := chain.snaps.Cap(blocks[1].Root(), 0); err != nil { + t.Fatalf("Failed to flatten snapshots: %v", err) + } + + // Insert block B3 and commit the state into disk + if _, err := chain.InsertChain(blocks[2:3]); err != nil { + t.Fatalf("Failed to import canonical chain start: %v", err) + } + chain.stateCache.TrieDB().Commit(blocks[2].Root(), true, nil) + + // Insert the remaining blocks + if _, err := chain.InsertChain(blocks[3:]); err != nil { + t.Fatalf("Failed to import canonical chain tail: %v", err) + } + + // Pull the plug on the database, simulating a hard crash + db.Close() + + // Start a new blockchain back up and see where the repair leads us + db, err = rawdb.NewLevelDBDatabaseWithFreezer(datadir, 0, 0, datadir, "", false) + if err != nil { + t.Fatalf("Failed to reopen persistent database: %v", err) + } + defer db.Close() + + chain, err = NewBlockChain(db, nil, params.AllEthashProtocolChanges, engine, vm.Config{}, nil, nil) + if err != nil { + t.Fatalf("Failed to recreate chain: %v", err) + } + defer chain.Stop() + + if head := chain.CurrentHeader(); head.Number.Uint64() != uint64(4) { + t.Errorf("Head header mismatch: have %d, want %d", head.Number, 4) + } + if head := chain.CurrentFastBlock(); head.NumberU64() != uint64(4) { + t.Errorf("Head fast block mismatch: have %d, want %d", head.NumberU64(), uint64(4)) + } + if head := chain.CurrentBlock(); head.NumberU64() != uint64(1) { + t.Errorf("Head block mismatch: have %d, want %d", head.NumberU64(), uint64(1)) + } + + // Reinsert B2-B4 + if _, err := chain.InsertChain(blocks[1:]); err != nil { + t.Fatalf("Failed to import canonical chain tail: %v", err) + } + if head := chain.CurrentHeader(); head.Number.Uint64() != uint64(4) { + t.Errorf("Head header mismatch: have %d, want %d", head.Number, 4) + } + if head := chain.CurrentFastBlock(); head.NumberU64() != uint64(4) { + t.Errorf("Head fast block mismatch: have %d, want %d", head.NumberU64(), uint64(4)) + } + if head := chain.CurrentBlock(); head.NumberU64() != uint64(4) { + t.Errorf("Head block mismatch: have %d, want %d", head.NumberU64(), uint64(4)) + } + if layer := chain.Snapshots().Snapshot(blocks[2].Root()); layer == nil { + t.Error("Failed to regenerate the snapshot of known state") + } +} diff --git a/core/blockchain_sethead_test.go b/core/blockchain_sethead_test.go index 27b6be6e13..b2b3a058a4 100644 --- a/core/blockchain_sethead_test.go +++ b/core/blockchain_sethead_test.go @@ -194,10 +194,10 @@ func testShortSetHead(t *testing.T, snapshots bool) { // Everything above the sethead point should be deleted. In between the committed // block and the requested head the data can remain as "fast sync" data to avoid // redownloading it. -func TestShortFastSyncedSetHead(t *testing.T) { testShortFastSyncedSetHead(t, false) } -func TestShortFastSyncedSetHeadWithSnapshots(t *testing.T) { testShortFastSyncedSetHead(t, true) } +func TestShortSnapSyncedSetHead(t *testing.T) { testShortSnapSyncedSetHead(t, false) } +func TestShortSnapSyncedSetHeadWithSnapshots(t *testing.T) { testShortSnapSyncedSetHead(t, true) } -func testShortFastSyncedSetHead(t *testing.T, snapshots bool) { +func testShortSnapSyncedSetHead(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8 (HEAD) // @@ -236,10 +236,10 @@ func testShortFastSyncedSetHead(t *testing.T, snapshots bool) { // detect that it was fast syncing and delete everything from the new head, since // we can just pick up fast syncing from there. The head full block should be set // to the genesis. -func TestShortFastSyncingSetHead(t *testing.T) { testShortFastSyncingSetHead(t, false) } -func TestShortFastSyncingSetHeadWithSnapshots(t *testing.T) { testShortFastSyncingSetHead(t, true) } +func TestShortSnapSyncingSetHead(t *testing.T) { testShortSnapSyncingSetHead(t, false) } +func TestShortSnapSyncingSetHeadWithSnapshots(t *testing.T) { testShortSnapSyncingSetHead(t, true) } -func testShortFastSyncingSetHead(t *testing.T, snapshots bool) { +func testShortSnapSyncingSetHead(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8 (HEAD) // @@ -326,14 +326,14 @@ func testShortOldForkedSetHead(t *testing.T, snapshots bool) { // block. Everything above the sethead point should be deleted. In between the // committed block and the requested head the data can remain as "fast sync" data // to avoid redownloading it. The side chain should be left alone as it was shorter. -func TestShortOldForkedFastSyncedSetHead(t *testing.T) { - testShortOldForkedFastSyncedSetHead(t, false) +func TestShortOldForkedSnapSyncedSetHead(t *testing.T) { + testShortOldForkedSnapSyncedSetHead(t, false) } -func TestShortOldForkedFastSyncedSetHeadWithSnapshots(t *testing.T) { - testShortOldForkedFastSyncedSetHead(t, true) +func TestShortOldForkedSnapSyncedSetHeadWithSnapshots(t *testing.T) { + testShortOldForkedSnapSyncedSetHead(t, true) } -func testShortOldForkedFastSyncedSetHead(t *testing.T, snapshots bool) { +func testShortOldForkedSnapSyncedSetHead(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8 (HEAD) // └->S1->S2->S3 @@ -375,14 +375,14 @@ func testShortOldForkedFastSyncedSetHead(t *testing.T, snapshots bool) { // the chain to detect that it was fast syncing and delete everything from the new // head, since we can just pick up fast syncing from there. The head full block // should be set to the genesis. -func TestShortOldForkedFastSyncingSetHead(t *testing.T) { - testShortOldForkedFastSyncingSetHead(t, false) +func TestShortOldForkedSnapSyncingSetHead(t *testing.T) { + testShortOldForkedSnapSyncingSetHead(t, false) } -func TestShortOldForkedFastSyncingSetHeadWithSnapshots(t *testing.T) { - testShortOldForkedFastSyncingSetHead(t, true) +func TestShortOldForkedSnapSyncingSetHeadWithSnapshots(t *testing.T) { + testShortOldForkedSnapSyncingSetHead(t, true) } -func testShortOldForkedFastSyncingSetHead(t *testing.T, snapshots bool) { +func testShortOldForkedSnapSyncingSetHead(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8 (HEAD) // └->S1->S2->S3 @@ -478,14 +478,14 @@ func testShortNewlyForkedSetHead(t *testing.T, snapshots bool) { // The side chain could be left to be if the fork point was before the new head // we are deleting to, but it would be exceedingly hard to detect that case and // properly handle it, so we'll trade extra work in exchange for simpler code. -func TestShortNewlyForkedFastSyncedSetHead(t *testing.T) { - testShortNewlyForkedFastSyncedSetHead(t, false) +func TestShortNewlyForkedSnapSyncedSetHead(t *testing.T) { + testShortNewlyForkedSnapSyncedSetHead(t, false) } -func TestShortNewlyForkedFastSyncedSetHeadWithSnapshots(t *testing.T) { - testShortNewlyForkedFastSyncedSetHead(t, true) +func TestShortNewlyForkedSnapSyncedSetHeadWithSnapshots(t *testing.T) { + testShortNewlyForkedSnapSyncedSetHead(t, true) } -func testShortNewlyForkedFastSyncedSetHead(t *testing.T, snapshots bool) { +func testShortNewlyForkedSnapSyncedSetHead(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10 (HEAD) // └->S1->S2->S3->S4->S5->S6->S7->S8 @@ -531,14 +531,14 @@ func testShortNewlyForkedFastSyncedSetHead(t *testing.T, snapshots bool) { // The side chain could be left to be if the fork point was before the new head // we are deleting to, but it would be exceedingly hard to detect that case and // properly handle it, so we'll trade extra work in exchange for simpler code. -func TestShortNewlyForkedFastSyncingSetHead(t *testing.T) { - testShortNewlyForkedFastSyncingSetHead(t, false) +func TestShortNewlyForkedSnapSyncingSetHead(t *testing.T) { + testShortNewlyForkedSnapSyncingSetHead(t, false) } -func TestShortNewlyForkedFastSyncingSetHeadWithSnapshots(t *testing.T) { - testShortNewlyForkedFastSyncingSetHead(t, true) +func TestShortNewlyForkedSnapSyncingSetHeadWithSnapshots(t *testing.T) { + testShortNewlyForkedSnapSyncingSetHead(t, true) } -func testShortNewlyForkedFastSyncingSetHead(t *testing.T, snapshots bool) { +func testShortNewlyForkedSnapSyncingSetHead(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10 (HEAD) // └->S1->S2->S3->S4->S5->S6->S7->S8 @@ -634,14 +634,14 @@ func testShortReorgedSetHead(t *testing.T, snapshots bool) { // The side chain could be left to be if the fork point was before the new head // we are deleting to, but it would be exceedingly hard to detect that case and // properly handle it, so we'll trade extra work in exchange for simpler code. -func TestShortReorgedFastSyncedSetHead(t *testing.T) { - testShortReorgedFastSyncedSetHead(t, false) +func TestShortReorgedSnapSyncedSetHead(t *testing.T) { + testShortReorgedSnapSyncedSetHead(t, false) } -func TestShortReorgedFastSyncedSetHeadWithSnapshots(t *testing.T) { - testShortReorgedFastSyncedSetHead(t, true) +func TestShortReorgedSnapSyncedSetHeadWithSnapshots(t *testing.T) { + testShortReorgedSnapSyncedSetHead(t, true) } -func testShortReorgedFastSyncedSetHead(t *testing.T, snapshots bool) { +func testShortReorgedSnapSyncedSetHead(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8 (HEAD) // └->S1->S2->S3->S4->S5->S6->S7->S8->S9->S10 @@ -686,14 +686,14 @@ func testShortReorgedFastSyncedSetHead(t *testing.T, snapshots bool) { // The side chain could be left to be if the fork point was before the new head // we are deleting to, but it would be exceedingly hard to detect that case and // properly handle it, so we'll trade extra work in exchange for simpler code. -func TestShortReorgedFastSyncingSetHead(t *testing.T) { - testShortReorgedFastSyncingSetHead(t, false) +func TestShortReorgedSnapSyncingSetHead(t *testing.T) { + testShortReorgedSnapSyncingSetHead(t, false) } -func TestShortReorgedFastSyncingSetHeadWithSnapshots(t *testing.T) { - testShortReorgedFastSyncingSetHead(t, true) +func TestShortReorgedSnapSyncingSetHeadWithSnapshots(t *testing.T) { + testShortReorgedSnapSyncingSetHead(t, true) } -func testShortReorgedFastSyncingSetHead(t *testing.T, snapshots bool) { +func testShortReorgedSnapSyncingSetHead(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8 (HEAD) // └->S1->S2->S3->S4->S5->S6->S7->S8->S9->S10 @@ -829,14 +829,14 @@ func testLongDeepSetHead(t *testing.T, snapshots bool) { // back to the committed block. Everything above the sethead point should be // deleted. In between the committed block and the requested head the data can // remain as "fast sync" data to avoid redownloading it. -func TestLongFastSyncedShallowSetHead(t *testing.T) { - testLongFastSyncedShallowSetHead(t, false) +func TestLongSnapSyncedShallowSetHead(t *testing.T) { + testLongSnapSyncedShallowSetHead(t, false) } -func TestLongFastSyncedShallowSetHeadWithSnapshots(t *testing.T) { - testLongFastSyncedShallowSetHead(t, true) +func TestLongSnapSyncedShallowSetHeadWithSnapshots(t *testing.T) { + testLongSnapSyncedShallowSetHead(t, true) } -func testLongFastSyncedShallowSetHead(t *testing.T, snapshots bool) { +func testLongSnapSyncedShallowSetHead(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18 (HEAD) // @@ -880,10 +880,10 @@ func testLongFastSyncedShallowSetHead(t *testing.T, snapshots bool) { // which sethead was called. In this case we expect the full chain to be rolled // back to the committed block. Since the ancient limit was underflown, everything // needs to be deleted onwards to avoid creating a gap. -func TestLongFastSyncedDeepSetHead(t *testing.T) { testLongFastSyncedDeepSetHead(t, false) } -func TestLongFastSyncedDeepSetHeadWithSnapshots(t *testing.T) { testLongFastSyncedDeepSetHead(t, true) } +func TestLongSnapSyncedDeepSetHead(t *testing.T) { testLongSnapSyncedDeepSetHead(t, false) } +func TestLongSnapSyncedDeepSetHeadWithSnapshots(t *testing.T) { testLongSnapSyncedDeepSetHead(t, true) } -func testLongFastSyncedDeepSetHead(t *testing.T, snapshots bool) { +func testLongSnapSyncedDeepSetHead(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18->C19->C20->C21->C22->C23->C24 (HEAD) // @@ -926,14 +926,14 @@ func testLongFastSyncedDeepSetHead(t *testing.T, snapshots bool) { // sethead was called. In this case we expect the chain to detect that it was fast // syncing and delete everything from the new head, since we can just pick up fast // syncing from there. -func TestLongFastSyncingShallowSetHead(t *testing.T) { - testLongFastSyncingShallowSetHead(t, false) +func TestLongSnapSyncingShallowSetHead(t *testing.T) { + testLongSnapSyncingShallowSetHead(t, false) } -func TestLongFastSyncingShallowSetHeadWithSnapshots(t *testing.T) { - testLongFastSyncingShallowSetHead(t, true) +func TestLongSnapSyncingShallowSetHeadWithSnapshots(t *testing.T) { + testLongSnapSyncingShallowSetHead(t, true) } -func testLongFastSyncingShallowSetHead(t *testing.T, snapshots bool) { +func testLongSnapSyncingShallowSetHead(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18 (HEAD) // @@ -977,14 +977,14 @@ func testLongFastSyncingShallowSetHead(t *testing.T, snapshots bool) { // sethead was called. In this case we expect the chain to detect that it was fast // syncing and delete everything from the new head, since we can just pick up fast // syncing from there. -func TestLongFastSyncingDeepSetHead(t *testing.T) { - testLongFastSyncingDeepSetHead(t, false) +func TestLongSnapSyncingDeepSetHead(t *testing.T) { + testLongSnapSyncingDeepSetHead(t, false) } -func TestLongFastSyncingDeepSetHeadWithSnapshots(t *testing.T) { - testLongFastSyncingDeepSetHead(t, true) +func TestLongSnapSyncingDeepSetHeadWithSnapshots(t *testing.T) { + testLongSnapSyncingDeepSetHead(t, true) } -func testLongFastSyncingDeepSetHead(t *testing.T, snapshots bool) { +func testLongSnapSyncingDeepSetHead(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18->C19->C20->C21->C22->C23->C24 (HEAD) // @@ -1132,14 +1132,14 @@ func testLongOldForkedDeepSetHead(t *testing.T, snapshots bool) { // sethead point should be deleted. In between the committed block and the // requested head the data can remain as "fast sync" data to avoid redownloading // it. The side chain is nuked by the freezer. -func TestLongOldForkedFastSyncedShallowSetHead(t *testing.T) { - testLongOldForkedFastSyncedShallowSetHead(t, false) +func TestLongOldForkedSnapSyncedShallowSetHead(t *testing.T) { + testLongOldForkedSnapSyncedShallowSetHead(t, false) } -func TestLongOldForkedFastSyncedShallowSetHeadWithSnapshots(t *testing.T) { - testLongOldForkedFastSyncedShallowSetHead(t, true) +func TestLongOldForkedSnapSyncedShallowSetHeadWithSnapshots(t *testing.T) { + testLongOldForkedSnapSyncedShallowSetHead(t, true) } -func testLongOldForkedFastSyncedShallowSetHead(t *testing.T, snapshots bool) { +func testLongOldForkedSnapSyncedShallowSetHead(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18 (HEAD) // └->S1->S2->S3 @@ -1186,14 +1186,14 @@ func testLongOldForkedFastSyncedShallowSetHead(t *testing.T, snapshots bool) { // full chain to be rolled back to the committed block. Since the ancient limit was // underflown, everything needs to be deleted onwards to avoid creating a gap. The // side chain is nuked by the freezer. -func TestLongOldForkedFastSyncedDeepSetHead(t *testing.T) { - testLongOldForkedFastSyncedDeepSetHead(t, false) +func TestLongOldForkedSnapSyncedDeepSetHead(t *testing.T) { + testLongOldForkedSnapSyncedDeepSetHead(t, false) } -func TestLongOldForkedFastSyncedDeepSetHeadWithSnapshots(t *testing.T) { - testLongOldForkedFastSyncedDeepSetHead(t, true) +func TestLongOldForkedSnapSyncedDeepSetHeadWithSnapshots(t *testing.T) { + testLongOldForkedSnapSyncedDeepSetHead(t, true) } -func testLongOldForkedFastSyncedDeepSetHead(t *testing.T, snapshots bool) { +func testLongOldForkedSnapSyncedDeepSetHead(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18->C19->C20->C21->C22->C23->C24 (HEAD) // └->S1->S2->S3 @@ -1239,14 +1239,14 @@ func testLongOldForkedFastSyncedDeepSetHead(t *testing.T, snapshots bool) { // that it was fast syncing and delete everything from the new head, since we can // just pick up fast syncing from there. The side chain is completely nuked by the // freezer. -func TestLongOldForkedFastSyncingShallowSetHead(t *testing.T) { - testLongOldForkedFastSyncingShallowSetHead(t, false) +func TestLongOldForkedSnapSyncingShallowSetHead(t *testing.T) { + testLongOldForkedSnapSyncingShallowSetHead(t, false) } -func TestLongOldForkedFastSyncingShallowSetHeadWithSnapshots(t *testing.T) { - testLongOldForkedFastSyncingShallowSetHead(t, true) +func TestLongOldForkedSnapSyncingShallowSetHeadWithSnapshots(t *testing.T) { + testLongOldForkedSnapSyncingShallowSetHead(t, true) } -func testLongOldForkedFastSyncingShallowSetHead(t *testing.T, snapshots bool) { +func testLongOldForkedSnapSyncingShallowSetHead(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18 (HEAD) // └->S1->S2->S3 @@ -1293,14 +1293,14 @@ func testLongOldForkedFastSyncingShallowSetHead(t *testing.T, snapshots bool) { // that it was fast syncing and delete everything from the new head, since we can // just pick up fast syncing from there. The side chain is completely nuked by the // freezer. -func TestLongOldForkedFastSyncingDeepSetHead(t *testing.T) { - testLongOldForkedFastSyncingDeepSetHead(t, false) +func TestLongOldForkedSnapSyncingDeepSetHead(t *testing.T) { + testLongOldForkedSnapSyncingDeepSetHead(t, false) } -func TestLongOldForkedFastSyncingDeepSetHeadWithSnapshots(t *testing.T) { - testLongOldForkedFastSyncingDeepSetHead(t, true) +func TestLongOldForkedSnapSyncingDeepSetHeadWithSnapshots(t *testing.T) { + testLongOldForkedSnapSyncingDeepSetHead(t, true) } -func testLongOldForkedFastSyncingDeepSetHead(t *testing.T, snapshots bool) { +func testLongOldForkedSnapSyncingDeepSetHead(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18->C19->C20->C21->C22->C23->C24 (HEAD) // └->S1->S2->S3 @@ -1446,15 +1446,15 @@ func testLongNewerForkedDeepSetHead(t *testing.T, snapshots bool) { // side chain, where the fast sync pivot point - newer than the ancient limit - // was already committed to disk and then sethead was called. In this test scenario // the side chain is above the committed block. In this case the freezer will delete -// the sidechain since it's dangling, reverting to TestLongFastSyncedShallowSetHead. -func TestLongNewerForkedFastSyncedShallowSetHead(t *testing.T) { - testLongNewerForkedFastSyncedShallowSetHead(t, false) +// the sidechain since it's dangling, reverting to TestLongSnapSyncedShallowSetHead. +func TestLongNewerForkedSnapSyncedShallowSetHead(t *testing.T) { + testLongNewerForkedSnapSyncedShallowSetHead(t, false) } -func TestLongNewerForkedFastSyncedShallowSetHeadWithSnapshots(t *testing.T) { - testLongNewerForkedFastSyncedShallowSetHead(t, true) +func TestLongNewerForkedSnapSyncedShallowSetHeadWithSnapshots(t *testing.T) { + testLongNewerForkedSnapSyncedShallowSetHead(t, true) } -func testLongNewerForkedFastSyncedShallowSetHead(t *testing.T, snapshots bool) { +func testLongNewerForkedSnapSyncedShallowSetHead(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18 (HEAD) // └->S1->S2->S3->S4->S5->S6->S7->S8->S9->S10->S11->S12 @@ -1498,15 +1498,15 @@ func testLongNewerForkedFastSyncedShallowSetHead(t *testing.T, snapshots bool) { // side chain, where the fast sync pivot point - older than the ancient limit - // was already committed to disk and then sethead was called. In this test scenario // the side chain is above the committed block. In this case the freezer will delete -// the sidechain since it's dangling, reverting to TestLongFastSyncedDeepSetHead. -func TestLongNewerForkedFastSyncedDeepSetHead(t *testing.T) { - testLongNewerForkedFastSyncedDeepSetHead(t, false) +// the sidechain since it's dangling, reverting to TestLongSnapSyncedDeepSetHead. +func TestLongNewerForkedSnapSyncedDeepSetHead(t *testing.T) { + testLongNewerForkedSnapSyncedDeepSetHead(t, false) } -func TestLongNewerForkedFastSyncedDeepSetHeadWithSnapshots(t *testing.T) { - testLongNewerForkedFastSyncedDeepSetHead(t, true) +func TestLongNewerForkedSnapSyncedDeepSetHeadWithSnapshots(t *testing.T) { + testLongNewerForkedSnapSyncedDeepSetHead(t, true) } -func testLongNewerForkedFastSyncedDeepSetHead(t *testing.T, snapshots bool) { +func testLongNewerForkedSnapSyncedDeepSetHead(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18->C19->C20->C21->C22->C23->C24 (HEAD) // └->S1->S2->S3->S4->S5->S6->S7->S8->S9->S10->S11->S12 @@ -1549,15 +1549,15 @@ func testLongNewerForkedFastSyncedDeepSetHead(t *testing.T, snapshots bool) { // side chain, where the fast sync pivot point - newer than the ancient limit - // was not yet committed, but sethead was called. In this test scenario the side // chain is above the committed block. In this case the freezer will delete the -// sidechain since it's dangling, reverting to TestLongFastSyncinghallowSetHead. -func TestLongNewerForkedFastSyncingShallowSetHead(t *testing.T) { - testLongNewerForkedFastSyncingShallowSetHead(t, false) +// sidechain since it's dangling, reverting to TestLongSnapSyncinghallowSetHead. +func TestLongNewerForkedSnapSyncingShallowSetHead(t *testing.T) { + testLongNewerForkedSnapSyncingShallowSetHead(t, false) } -func TestLongNewerForkedFastSyncingShallowSetHeadWithSnapshots(t *testing.T) { - testLongNewerForkedFastSyncingShallowSetHead(t, true) +func TestLongNewerForkedSnapSyncingShallowSetHeadWithSnapshots(t *testing.T) { + testLongNewerForkedSnapSyncingShallowSetHead(t, true) } -func testLongNewerForkedFastSyncingShallowSetHead(t *testing.T, snapshots bool) { +func testLongNewerForkedSnapSyncingShallowSetHead(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18 (HEAD) // └->S1->S2->S3->S4->S5->S6->S7->S8->S9->S10->S11->S12 @@ -1601,15 +1601,15 @@ func testLongNewerForkedFastSyncingShallowSetHead(t *testing.T, snapshots bool) // side chain, where the fast sync pivot point - older than the ancient limit - // was not yet committed, but sethead was called. In this test scenario the side // chain is above the committed block. In this case the freezer will delete the -// sidechain since it's dangling, reverting to TestLongFastSyncingDeepSetHead. -func TestLongNewerForkedFastSyncingDeepSetHead(t *testing.T) { - testLongNewerForkedFastSyncingDeepSetHead(t, false) +// sidechain since it's dangling, reverting to TestLongSnapSyncingDeepSetHead. +func TestLongNewerForkedSnapSyncingDeepSetHead(t *testing.T) { + testLongNewerForkedSnapSyncingDeepSetHead(t, false) } -func TestLongNewerForkedFastSyncingDeepSetHeadWithSnapshots(t *testing.T) { - testLongNewerForkedFastSyncingDeepSetHead(t, true) +func TestLongNewerForkedSnapSyncingDeepSetHeadWithSnapshots(t *testing.T) { + testLongNewerForkedSnapSyncingDeepSetHead(t, true) } -func testLongNewerForkedFastSyncingDeepSetHead(t *testing.T, snapshots bool) { +func testLongNewerForkedSnapSyncingDeepSetHead(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18->C19->C20->C21->C22->C23->C24 (HEAD) // └->S1->S2->S3->S4->S5->S6->S7->S8->S9->S10->S11->S12 @@ -1745,15 +1745,15 @@ func testLongReorgedDeepSetHead(t *testing.T, snapshots bool) { // side chain, where the fast sync pivot point - newer than the ancient limit - // was already committed to disk and then sethead was called. In this case the // freezer will delete the sidechain since it's dangling, reverting to -// TestLongFastSyncedShallowSetHead. -func TestLongReorgedFastSyncedShallowSetHead(t *testing.T) { - testLongReorgedFastSyncedShallowSetHead(t, false) +// TestLongSnapSyncedShallowSetHead. +func TestLongReorgedSnapSyncedShallowSetHead(t *testing.T) { + testLongReorgedSnapSyncedShallowSetHead(t, false) } -func TestLongReorgedFastSyncedShallowSetHeadWithSnapshots(t *testing.T) { - testLongReorgedFastSyncedShallowSetHead(t, true) +func TestLongReorgedSnapSyncedShallowSetHeadWithSnapshots(t *testing.T) { + testLongReorgedSnapSyncedShallowSetHead(t, true) } -func testLongReorgedFastSyncedShallowSetHead(t *testing.T, snapshots bool) { +func testLongReorgedSnapSyncedShallowSetHead(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18 (HEAD) // └->S1->S2->S3->S4->S5->S6->S7->S8->S9->S10->S11->S12->S13->S14->S15->S16->S17->S18->S19->S20->S21->S22->S23->S24->S25->S26 @@ -1797,15 +1797,15 @@ func testLongReorgedFastSyncedShallowSetHead(t *testing.T, snapshots bool) { // side chain, where the fast sync pivot point - older than the ancient limit - // was already committed to disk and then sethead was called. In this case the // freezer will delete the sidechain since it's dangling, reverting to -// TestLongFastSyncedDeepSetHead. -func TestLongReorgedFastSyncedDeepSetHead(t *testing.T) { - testLongReorgedFastSyncedDeepSetHead(t, false) +// TestLongSnapSyncedDeepSetHead. +func TestLongReorgedSnapSyncedDeepSetHead(t *testing.T) { + testLongReorgedSnapSyncedDeepSetHead(t, false) } -func TestLongReorgedFastSyncedDeepSetHeadWithSnapshots(t *testing.T) { - testLongReorgedFastSyncedDeepSetHead(t, true) +func TestLongReorgedSnapSyncedDeepSetHeadWithSnapshots(t *testing.T) { + testLongReorgedSnapSyncedDeepSetHead(t, true) } -func testLongReorgedFastSyncedDeepSetHead(t *testing.T, snapshots bool) { +func testLongReorgedSnapSyncedDeepSetHead(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18->C19->C20->C21->C22->C23->C24 (HEAD) // └->S1->S2->S3->S4->S5->S6->S7->S8->S9->S10->S11->S12->S13->S14->S15->S16->S17->S18->S19->S20->S21->S22->S23->S24->S25->S26 @@ -1850,14 +1850,14 @@ func testLongReorgedFastSyncedDeepSetHead(t *testing.T, snapshots bool) { // chain to detect that it was fast syncing and delete everything from the new // head, since we can just pick up fast syncing from there. The side chain is // completely nuked by the freezer. -func TestLongReorgedFastSyncingShallowSetHead(t *testing.T) { - testLongReorgedFastSyncingShallowSetHead(t, false) +func TestLongReorgedSnapSyncingShallowSetHead(t *testing.T) { + testLongReorgedSnapSyncingShallowSetHead(t, false) } -func TestLongReorgedFastSyncingShallowSetHeadWithSnapshots(t *testing.T) { - testLongReorgedFastSyncingShallowSetHead(t, true) +func TestLongReorgedSnapSyncingShallowSetHeadWithSnapshots(t *testing.T) { + testLongReorgedSnapSyncingShallowSetHead(t, true) } -func testLongReorgedFastSyncingShallowSetHead(t *testing.T, snapshots bool) { +func testLongReorgedSnapSyncingShallowSetHead(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18 (HEAD) // └->S1->S2->S3->S4->S5->S6->S7->S8->S9->S10->S11->S12->S13->S14->S15->S16->S17->S18->S19->S20->S21->S22->S23->S24->S25->S26 @@ -1903,14 +1903,14 @@ func testLongReorgedFastSyncingShallowSetHead(t *testing.T, snapshots bool) { // chain to detect that it was fast syncing and delete everything from the new // head, since we can just pick up fast syncing from there. The side chain is // completely nuked by the freezer. -func TestLongReorgedFastSyncingDeepSetHead(t *testing.T) { - testLongReorgedFastSyncingDeepSetHead(t, false) +func TestLongReorgedSnapSyncingDeepSetHead(t *testing.T) { + testLongReorgedSnapSyncingDeepSetHead(t, false) } -func TestLongReorgedFastSyncingDeepSetHeadWithSnapshots(t *testing.T) { - testLongReorgedFastSyncingDeepSetHead(t, true) +func TestLongReorgedSnapSyncingDeepSetHeadWithSnapshots(t *testing.T) { + testLongReorgedSnapSyncingDeepSetHead(t, true) } -func testLongReorgedFastSyncingDeepSetHead(t *testing.T, snapshots bool) { +func testLongReorgedSnapSyncingDeepSetHead(t *testing.T, snapshots bool) { // Chain: // G->C1->C2->C3->C4->C5->C6->C7->C8->C9->C10->C11->C12->C13->C14->C15->C16->C17->C18->C19->C20->C21->C22->C23->C24 (HEAD) // └->S1->S2->S3->S4->S5->S6->S7->S8->S9->S10->S11->S12->S13->S14->S15->S16->S17->S18->S19->S20->S21->S22->S23->S24->S25->S26 diff --git a/core/blockchain_test.go b/core/blockchain_test.go index 62036ae757..6e542fe2f4 100644 --- a/core/blockchain_test.go +++ b/core/blockchain_test.go @@ -28,13 +28,16 @@ import ( "time" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/math" "github.com/ethereum/go-ethereum/consensus" + "github.com/ethereum/go-ethereum/consensus/beacon" "github.com/ethereum/go-ethereum/consensus/ethash" "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/eth/tracers/logger" "github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/trie" @@ -210,6 +213,55 @@ func TestLastBlock(t *testing.T) { } } +// Test inserts the blocks/headers after the fork choice rule is changed. +// The chain is reorged to whatever specified. +func testInsertAfterMerge(t *testing.T, blockchain *BlockChain, i, n int, full bool) { + // Copy old chain up to #i into a new db + db, blockchain2, err := newCanonical(ethash.NewFaker(), i, full) + if err != nil { + t.Fatal("could not make new canonical in testFork", err) + } + defer blockchain2.Stop() + + // Assert the chains have the same header/block at #i + var hash1, hash2 common.Hash + if full { + hash1 = blockchain.GetBlockByNumber(uint64(i)).Hash() + hash2 = blockchain2.GetBlockByNumber(uint64(i)).Hash() + } else { + hash1 = blockchain.GetHeaderByNumber(uint64(i)).Hash() + hash2 = blockchain2.GetHeaderByNumber(uint64(i)).Hash() + } + if hash1 != hash2 { + t.Errorf("chain content mismatch at %d: have hash %v, want hash %v", i, hash2, hash1) + } + + // Extend the newly created chain + if full { + blockChainB := makeBlockChain(blockchain2.CurrentBlock(), n, ethash.NewFaker(), db, forkSeed) + if _, err := blockchain2.InsertChain(blockChainB); err != nil { + t.Fatalf("failed to insert forking chain: %v", err) + } + if blockchain2.CurrentBlock().NumberU64() != blockChainB[len(blockChainB)-1].NumberU64() { + t.Fatalf("failed to reorg to the given chain") + } + if blockchain2.CurrentBlock().Hash() != blockChainB[len(blockChainB)-1].Hash() { + t.Fatalf("failed to reorg to the given chain") + } + } else { + headerChainB := makeHeaderChain(blockchain2.CurrentHeader(), n, ethash.NewFaker(), db, forkSeed) + if _, err := blockchain2.InsertHeaderChain(headerChainB, 1); err != nil { + t.Fatalf("failed to insert forking chain: %v", err) + } + if blockchain2.CurrentHeader().Number.Uint64() != headerChainB[len(headerChainB)-1].Number.Uint64() { + t.Fatalf("failed to reorg to the given chain") + } + if blockchain2.CurrentHeader().Hash() != headerChainB[len(headerChainB)-1].Hash() { + t.Fatalf("failed to reorg to the given chain") + } + } +} + // Tests that given a starting canonical chain of a given size, it can be extended // with various length chains. func TestExtendCanonicalHeaders(t *testing.T) { testExtendCanonical(t, false) } @@ -238,6 +290,25 @@ func testExtendCanonical(t *testing.T, full bool) { testFork(t, processor, length, 10, full, better) } +// Tests that given a starting canonical chain of a given size, it can be extended +// with various length chains. +func TestExtendCanonicalHeadersAfterMerge(t *testing.T) { testExtendCanonicalAfterMerge(t, false) } +func TestExtendCanonicalBlocksAfterMerge(t *testing.T) { testExtendCanonicalAfterMerge(t, true) } + +func testExtendCanonicalAfterMerge(t *testing.T, full bool) { + length := 5 + + // Make first chain starting from genesis + _, processor, err := newCanonical(ethash.NewFaker(), length, full) + if err != nil { + t.Fatalf("failed to make new canonical chain: %v", err) + } + defer processor.Stop() + + testInsertAfterMerge(t, processor, length, 1, full) + testInsertAfterMerge(t, processor, length, 10, full) +} + // Tests that given a starting canonical chain of a given size, creating shorter // forks do not take canonical ownership. func TestShorterForkHeaders(t *testing.T) { testShorterFork(t, false) } @@ -268,6 +339,29 @@ func testShorterFork(t *testing.T, full bool) { testFork(t, processor, 5, 4, full, worse) } +// Tests that given a starting canonical chain of a given size, creating shorter +// forks do not take canonical ownership. +func TestShorterForkHeadersAfterMerge(t *testing.T) { testShorterForkAfterMerge(t, false) } +func TestShorterForkBlocksAfterMerge(t *testing.T) { testShorterForkAfterMerge(t, true) } + +func testShorterForkAfterMerge(t *testing.T, full bool) { + length := 10 + + // Make first chain starting from genesis + _, processor, err := newCanonical(ethash.NewFaker(), length, full) + if err != nil { + t.Fatalf("failed to make new canonical chain: %v", err) + } + defer processor.Stop() + + testInsertAfterMerge(t, processor, 0, 3, full) + testInsertAfterMerge(t, processor, 0, 7, full) + testInsertAfterMerge(t, processor, 1, 1, full) + testInsertAfterMerge(t, processor, 1, 7, full) + testInsertAfterMerge(t, processor, 5, 3, full) + testInsertAfterMerge(t, processor, 5, 4, full) +} + // Tests that given a starting canonical chain of a given size, creating longer // forks do take canonical ownership. func TestLongerForkHeaders(t *testing.T) { testLongerFork(t, false) } @@ -283,19 +377,35 @@ func testLongerFork(t *testing.T, full bool) { } defer processor.Stop() - // Define the difficulty comparator - better := func(td1, td2 *big.Int) { - if td2.Cmp(td1) <= 0 { - t.Errorf("total difficulty mismatch: have %v, expected more than %v", td2, td1) - } + testInsertAfterMerge(t, processor, 0, 11, full) + testInsertAfterMerge(t, processor, 0, 15, full) + testInsertAfterMerge(t, processor, 1, 10, full) + testInsertAfterMerge(t, processor, 1, 12, full) + testInsertAfterMerge(t, processor, 5, 6, full) + testInsertAfterMerge(t, processor, 5, 8, full) +} + +// Tests that given a starting canonical chain of a given size, creating longer +// forks do take canonical ownership. +func TestLongerForkHeadersAfterMerge(t *testing.T) { testLongerForkAfterMerge(t, false) } +func TestLongerForkBlocksAfterMerge(t *testing.T) { testLongerForkAfterMerge(t, true) } + +func testLongerForkAfterMerge(t *testing.T, full bool) { + length := 10 + + // Make first chain starting from genesis + _, processor, err := newCanonical(ethash.NewFaker(), length, full) + if err != nil { + t.Fatalf("failed to make new canonical chain: %v", err) } - // Sum of numbers must be greater than `length` for this to be a longer fork - testFork(t, processor, 0, 11, full, better) - testFork(t, processor, 0, 15, full, better) - testFork(t, processor, 1, 10, full, better) - testFork(t, processor, 1, 12, full, better) - testFork(t, processor, 5, 6, full, better) - testFork(t, processor, 5, 8, full, better) + defer processor.Stop() + + testInsertAfterMerge(t, processor, 0, 11, full) + testInsertAfterMerge(t, processor, 0, 15, full) + testInsertAfterMerge(t, processor, 1, 10, full) + testInsertAfterMerge(t, processor, 1, 12, full) + testInsertAfterMerge(t, processor, 5, 6, full) + testInsertAfterMerge(t, processor, 5, 8, full) } // Tests that given a starting canonical chain of a given size, creating equal @@ -328,6 +438,29 @@ func testEqualFork(t *testing.T, full bool) { testFork(t, processor, 9, 1, full, equal) } +// Tests that given a starting canonical chain of a given size, creating equal +// forks do take canonical ownership. +func TestEqualForkHeadersAfterMerge(t *testing.T) { testEqualForkAfterMerge(t, false) } +func TestEqualForkBlocksAfterMerge(t *testing.T) { testEqualForkAfterMerge(t, true) } + +func testEqualForkAfterMerge(t *testing.T, full bool) { + length := 10 + + // Make first chain starting from genesis + _, processor, err := newCanonical(ethash.NewFaker(), length, full) + if err != nil { + t.Fatalf("failed to make new canonical chain: %v", err) + } + defer processor.Stop() + + testInsertAfterMerge(t, processor, 0, 10, full) + testInsertAfterMerge(t, processor, 1, 9, full) + testInsertAfterMerge(t, processor, 2, 8, full) + testInsertAfterMerge(t, processor, 5, 5, full) + testInsertAfterMerge(t, processor, 6, 4, full) + testInsertAfterMerge(t, processor, 9, 1, full) +} + // Tests that chains missing links do not get accepted by the processor. func TestBrokenHeaderChain(t *testing.T) { testBrokenChain(t, false) } func TestBrokenBlockChain(t *testing.T) { testBrokenChain(t, true) } @@ -360,7 +493,7 @@ func TestReorgLongHeaders(t *testing.T) { testReorgLong(t, false) } func TestReorgLongBlocks(t *testing.T) { testReorgLong(t, true) } func testReorgLong(t *testing.T, full bool) { - testReorg(t, []int64{0, 0, -9}, []int64{0, 0, 0, -9}, 393280, full) + testReorg(t, []int64{0, 0, -9}, []int64{0, 0, 0, -9}, 393280+params.GenesisDifficulty.Int64(), full) } // Tests that reorganising a short difficult chain after a long easy one @@ -380,7 +513,7 @@ func testReorgShort(t *testing.T, full bool) { for i := 0; i < len(diff); i++ { diff[i] = -9 } - testReorg(t, easy, diff, 12615120, full) + testReorg(t, easy, diff, 12615120+params.GenesisDifficulty.Int64(), full) } func testReorg(t *testing.T, first, second []int64, td int64, full bool) { @@ -1800,21 +1933,56 @@ func TestLowDiffLongChain(t *testing.T) { // - C is canon chain, containing blocks [G..Cn..Cm] // - A common ancestor is placed at prune-point + blocksBetweenCommonAncestorAndPruneblock // - The sidechain S is prepended with numCanonBlocksInSidechain blocks from the canon chain -func testSideImport(t *testing.T, numCanonBlocksInSidechain, blocksBetweenCommonAncestorAndPruneblock int) { - +// +// The mergePoint can be these values: +// -1: the transition won't happen +// 0: the transition happens since genesis +// 1: the transition happens after some chain segments +func testSideImport(t *testing.T, numCanonBlocksInSidechain, blocksBetweenCommonAncestorAndPruneblock int, mergePoint int) { + // Copy the TestChainConfig so we can modify it during tests + chainConfig := *params.TestChainConfig // Generate a canonical chain to act as the main dataset - engine := ethash.NewFaker() - db := rawdb.NewMemoryDatabase() - genesis := (&Genesis{BaseFee: big.NewInt(params.InitialBaseFee)}).MustCommit(db) + var ( + merger = consensus.NewMerger(rawdb.NewMemoryDatabase()) + genEngine = beacon.New(ethash.NewFaker()) + runEngine = beacon.New(ethash.NewFaker()) + db = rawdb.NewMemoryDatabase() + key, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291") + addr = crypto.PubkeyToAddress(key.PublicKey) + nonce = uint64(0) + + gspec = &Genesis{ + Config: &chainConfig, + Alloc: GenesisAlloc{addr: {Balance: big.NewInt(math.MaxInt64)}}, + BaseFee: big.NewInt(params.InitialBaseFee), + } + signer = types.LatestSigner(gspec.Config) + genesis, _ = gspec.Commit(db) + ) // Generate and import the canonical chain - blocks, _ := GenerateChain(params.TestChainConfig, genesis, engine, db, 2*TriesInMemory, nil) diskdb := rawdb.NewMemoryDatabase() - (&Genesis{BaseFee: big.NewInt(params.InitialBaseFee)}).MustCommit(diskdb) - chain, err := NewBlockChain(diskdb, nil, params.TestChainConfig, engine, vm.Config{}, nil, nil) + gspec.MustCommit(diskdb) + chain, err := NewBlockChain(diskdb, nil, &chainConfig, runEngine, vm.Config{}, nil, nil) if err != nil { t.Fatalf("failed to create tester chain: %v", err) } + // Activate the transition since genesis if required + if mergePoint == 0 { + merger.ReachTTD() + merger.FinalizePoS() + + // Set the terminal total difficulty in the config + gspec.Config.TerminalTotalDifficulty = big.NewInt(0) + } + blocks, _ := GenerateChain(&chainConfig, genesis, genEngine, db, 2*TriesInMemory, func(i int, gen *BlockGen) { + tx, err := types.SignTx(types.NewTransaction(nonce, common.HexToAddress("deadbeef"), big.NewInt(100), 21000, big.NewInt(int64(i+1)*params.GWei), nil), signer, key) + if err != nil { + t.Fatalf("failed to create tx: %v", err) + } + gen.AddTx(tx) + nonce++ + }) if n, err := chain.InsertChain(blocks); err != nil { t.Fatalf("block %d: failed to insert into chain: %v", n, err) } @@ -1831,6 +1999,15 @@ func testSideImport(t *testing.T, numCanonBlocksInSidechain, blocksBetweenCommon if !chain.HasBlockAndState(firstNonPrunedBlock.Hash(), firstNonPrunedBlock.NumberU64()) { t.Errorf("Block %d pruned", firstNonPrunedBlock.NumberU64()) } + + // Activate the transition in the middle of the chain + if mergePoint == 1 { + merger.ReachTTD() + merger.FinalizePoS() + // Set the terminal total difficulty in the config + gspec.Config.TerminalTotalDifficulty = big.NewInt(int64(len(blocks))) + } + // Generate the sidechain // First block should be a known block, block after should be a pruned block. So // canon(pruned), side, side... @@ -1838,7 +2015,7 @@ func testSideImport(t *testing.T, numCanonBlocksInSidechain, blocksBetweenCommon // Generate fork chain, make it longer than canon parentIndex := lastPrunedIndex + blocksBetweenCommonAncestorAndPruneblock parent := blocks[parentIndex] - fork, _ := GenerateChain(params.TestChainConfig, parent, engine, db, 2*TriesInMemory, func(i int, b *BlockGen) { + fork, _ := GenerateChain(&chainConfig, parent, genEngine, db, 2*TriesInMemory, func(i int, b *BlockGen) { b.SetCoinbase(common.Address{2}) }) // Prepend the parent(s) @@ -1847,9 +2024,9 @@ func testSideImport(t *testing.T, numCanonBlocksInSidechain, blocksBetweenCommon sidechain = append(sidechain, blocks[parentIndex+1-i]) } sidechain = append(sidechain, fork...) - _, err = chain.InsertChain(sidechain) + n, err := chain.InsertChain(sidechain) if err != nil { - t.Errorf("Got error, %v", err) + t.Errorf("Got error, %v number %d - %d", err, sidechain[n].NumberU64(), n) } head := chain.CurrentBlock() if got := fork[len(fork)-1].Hash(); got != head.Hash() { @@ -1870,11 +2047,28 @@ func TestPrunedImportSide(t *testing.T) { //glogger := log.NewGlogHandler(log.StreamHandler(os.Stdout, log.TerminalFormat(false))) //glogger.Verbosity(3) //log.Root().SetHandler(log.Handler(glogger)) - testSideImport(t, 3, 3) - testSideImport(t, 3, -3) - testSideImport(t, 10, 0) - testSideImport(t, 1, 10) - testSideImport(t, 1, -10) + testSideImport(t, 3, 3, -1) + testSideImport(t, 3, -3, -1) + testSideImport(t, 10, 0, -1) + testSideImport(t, 1, 10, -1) + testSideImport(t, 1, -10, -1) +} + +func TestPrunedImportSideWithMerging(t *testing.T) { + //glogger := log.NewGlogHandler(log.StreamHandler(os.Stdout, log.TerminalFormat(false))) + //glogger.Verbosity(3) + //log.Root().SetHandler(log.Handler(glogger)) + testSideImport(t, 3, 3, 0) + testSideImport(t, 3, -3, 0) + testSideImport(t, 10, 0, 0) + testSideImport(t, 1, 10, 0) + testSideImport(t, 1, -10, 0) + + testSideImport(t, 3, 3, 1) + testSideImport(t, 3, -3, 1) + testSideImport(t, 10, 0, 1) + testSideImport(t, 1, 10, 1) + testSideImport(t, 1, -10, 1) } func TestInsertKnownHeaders(t *testing.T) { testInsertKnownChainData(t, "headers") } @@ -2002,6 +2196,179 @@ func testInsertKnownChainData(t *testing.T, typ string) { asserter(t, blocks2[len(blocks2)-1]) } +func TestInsertKnownHeadersWithMerging(t *testing.T) { + testInsertKnownChainDataWithMerging(t, "headers", 0) +} +func TestInsertKnownReceiptChainWithMerging(t *testing.T) { + testInsertKnownChainDataWithMerging(t, "receipts", 0) +} +func TestInsertKnownBlocksWithMerging(t *testing.T) { + testInsertKnownChainDataWithMerging(t, "blocks", 0) +} +func TestInsertKnownHeadersAfterMerging(t *testing.T) { + testInsertKnownChainDataWithMerging(t, "headers", 1) +} +func TestInsertKnownReceiptChainAfterMerging(t *testing.T) { + testInsertKnownChainDataWithMerging(t, "receipts", 1) +} +func TestInsertKnownBlocksAfterMerging(t *testing.T) { + testInsertKnownChainDataWithMerging(t, "blocks", 1) +} + +// mergeHeight can be assigned in these values: +// 0: means the merging is applied since genesis +// 1: means the merging is applied after the first segment +func testInsertKnownChainDataWithMerging(t *testing.T, typ string, mergeHeight int) { + // Copy the TestChainConfig so we can modify it during tests + chainConfig := *params.TestChainConfig + var ( + db = rawdb.NewMemoryDatabase() + genesis = (&Genesis{BaseFee: big.NewInt(params.InitialBaseFee), Config: &chainConfig}).MustCommit(db) + runMerger = consensus.NewMerger(db) + runEngine = beacon.New(ethash.NewFaker()) + genEngine = beacon.New(ethash.NewFaker()) + ) + applyMerge := func(engine *beacon.Beacon, height int) { + if engine != nil { + runMerger.FinalizePoS() + // Set the terminal total difficulty in the config + chainConfig.TerminalTotalDifficulty = big.NewInt(int64(height)) + } + } + + // Apply merging since genesis + if mergeHeight == 0 { + applyMerge(genEngine, 0) + } + blocks, receipts := GenerateChain(&chainConfig, genesis, genEngine, db, 32, func(i int, b *BlockGen) { b.SetCoinbase(common.Address{1}) }) + + // Apply merging after the first segment + if mergeHeight == 1 { + applyMerge(genEngine, len(blocks)) + } + // Longer chain and shorter chain + blocks2, receipts2 := GenerateChain(&chainConfig, blocks[len(blocks)-1], genEngine, db, 65, func(i int, b *BlockGen) { b.SetCoinbase(common.Address{1}) }) + blocks3, receipts3 := GenerateChain(&chainConfig, blocks[len(blocks)-1], genEngine, db, 64, func(i int, b *BlockGen) { + b.SetCoinbase(common.Address{1}) + b.OffsetTime(-9) // Time shifted, difficulty shouldn't be changed + }) + + // Import the shared chain and the original canonical one + dir, err := ioutil.TempDir("", "") + if err != nil { + t.Fatalf("failed to create temp freezer dir: %v", err) + } + defer os.Remove(dir) + chaindb, err := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), dir, "", false) + if err != nil { + t.Fatalf("failed to create temp freezer db: %v", err) + } + (&Genesis{BaseFee: big.NewInt(params.InitialBaseFee)}).MustCommit(chaindb) + defer os.RemoveAll(dir) + + chain, err := NewBlockChain(chaindb, nil, &chainConfig, runEngine, vm.Config{}, nil, nil) + if err != nil { + t.Fatalf("failed to create tester chain: %v", err) + } + var ( + inserter func(blocks []*types.Block, receipts []types.Receipts) error + asserter func(t *testing.T, block *types.Block) + ) + if typ == "headers" { + inserter = func(blocks []*types.Block, receipts []types.Receipts) error { + headers := make([]*types.Header, 0, len(blocks)) + for _, block := range blocks { + headers = append(headers, block.Header()) + } + _, err := chain.InsertHeaderChain(headers, 1) + return err + } + asserter = func(t *testing.T, block *types.Block) { + if chain.CurrentHeader().Hash() != block.Hash() { + t.Fatalf("current head header mismatch, have %v, want %v", chain.CurrentHeader().Hash().Hex(), block.Hash().Hex()) + } + } + } else if typ == "receipts" { + inserter = func(blocks []*types.Block, receipts []types.Receipts) error { + headers := make([]*types.Header, 0, len(blocks)) + for _, block := range blocks { + headers = append(headers, block.Header()) + } + _, err := chain.InsertHeaderChain(headers, 1) + if err != nil { + return err + } + _, err = chain.InsertReceiptChain(blocks, receipts, 0) + return err + } + asserter = func(t *testing.T, block *types.Block) { + if chain.CurrentFastBlock().Hash() != block.Hash() { + t.Fatalf("current head fast block mismatch, have %v, want %v", chain.CurrentFastBlock().Hash().Hex(), block.Hash().Hex()) + } + } + } else { + inserter = func(blocks []*types.Block, receipts []types.Receipts) error { + _, err := chain.InsertChain(blocks) + return err + } + asserter = func(t *testing.T, block *types.Block) { + if chain.CurrentBlock().Hash() != block.Hash() { + t.Fatalf("current head block mismatch, have %v, want %v", chain.CurrentBlock().Hash().Hex(), block.Hash().Hex()) + } + } + } + + // Apply merging since genesis if required + if mergeHeight == 0 { + applyMerge(runEngine, 0) + } + if err := inserter(blocks, receipts); err != nil { + t.Fatalf("failed to insert chain data: %v", err) + } + + // Reimport the chain data again. All the imported + // chain data are regarded "known" data. + if err := inserter(blocks, receipts); err != nil { + t.Fatalf("failed to insert chain data: %v", err) + } + asserter(t, blocks[len(blocks)-1]) + + // Import a long canonical chain with some known data as prefix. + rollback := blocks[len(blocks)/2].NumberU64() + chain.SetHead(rollback - 1) + if err := inserter(blocks, receipts); err != nil { + t.Fatalf("failed to insert chain data: %v", err) + } + asserter(t, blocks[len(blocks)-1]) + + // Apply merging after the first segment + if mergeHeight == 1 { + applyMerge(runEngine, len(blocks)) + } + + // Import a longer chain with some known data as prefix. + if err := inserter(append(blocks, blocks2...), append(receipts, receipts2...)); err != nil { + t.Fatalf("failed to insert chain data: %v", err) + } + asserter(t, blocks2[len(blocks2)-1]) + + // Import a shorter chain with some known data as prefix. + // The reorg is expected since the fork choice rule is + // already changed. + if err := inserter(append(blocks, blocks3...), append(receipts, receipts3...)); err != nil { + t.Fatalf("failed to insert chain data: %v", err) + } + // The head shouldn't change. + asserter(t, blocks3[len(blocks3)-1]) + + // Reimport the longer chain again, the reorg is still expected + chain.SetHead(rollback - 1) + if err := inserter(append(blocks, blocks2...), append(receipts, receipts2...)); err != nil { + t.Fatalf("failed to insert chain data: %v", err) + } + asserter(t, blocks2[len(blocks2)-1]) +} + // getLongAndShortChains returns two chains: A is longer, B is heavier. func getLongAndShortChains() (bc *BlockChain, longChain []*types.Block, heavyChain []*types.Block, err error) { // Generate a canonical chain to act as the main dataset @@ -2270,7 +2637,7 @@ func TestTransactionIndices(t *testing.T) { } } -func TestSkipStaleTxIndicesInFastSync(t *testing.T) { +func TestSkipStaleTxIndicesInSnapSync(t *testing.T) { // Configure and generate a sample block chain var ( gendb = rawdb.NewMemoryDatabase() @@ -2385,7 +2752,7 @@ func benchmarkLargeNumberOfValueToNonexisting(b *testing.B, numTxs, numBlocks in for txi := 0; txi < numTxs; txi++ { uniq := uint64(i*numTxs + txi) recipient := recipientFn(uniq) - tx, err := types.SignTx(types.NewTransaction(uniq, recipient, big.NewInt(1), params.TxGas, big.NewInt(1), nil), signer, testBankKey) + tx, err := types.SignTx(types.NewTransaction(uniq, recipient, big.NewInt(1), params.TxGas, block.header.BaseFee, nil), signer, testBankKey) if err != nil { b.Error(err) } @@ -2482,6 +2849,7 @@ func TestSideImportPrunedBlocks(t *testing.T) { // Generate and import the canonical chain blocks, _ := GenerateChain(params.TestChainConfig, genesis, engine, db, 2*TriesInMemory, nil) diskdb := rawdb.NewMemoryDatabase() + (&Genesis{BaseFee: big.NewInt(params.InitialBaseFee)}).MustCommit(diskdb) chain, err := NewBlockChain(diskdb, nil, params.TestChainConfig, engine, vm.Config{}, nil, nil) if err != nil { @@ -2690,7 +3058,7 @@ func TestDeleteRecreateSlots(t *testing.T) { gspec.MustCommit(diskdb) chain, err := NewBlockChain(diskdb, nil, params.TestChainConfig, engine, vm.Config{ Debug: true, - Tracer: vm.NewJSONLogger(nil, os.Stdout), + Tracer: logger.NewJSONLogger(nil, os.Stdout), }, nil, nil) if err != nil { t.Fatalf("failed to create tester chain: %v", err) @@ -2770,7 +3138,7 @@ func TestDeleteRecreateAccount(t *testing.T) { gspec.MustCommit(diskdb) chain, err := NewBlockChain(diskdb, nil, params.TestChainConfig, engine, vm.Config{ Debug: true, - Tracer: vm.NewJSONLogger(nil, os.Stdout), + Tracer: logger.NewJSONLogger(nil, os.Stdout), }, nil, nil) if err != nil { t.Fatalf("failed to create tester chain: %v", err) diff --git a/core/chain_makers.go b/core/chain_makers.go index b113c0d1be..c7bf60a4b0 100644 --- a/core/chain_makers.go +++ b/core/chain_makers.go @@ -155,6 +155,28 @@ func (b *BlockGen) TxNonce(addr common.Address) uint64 { // AddUncle adds an uncle header to the generated block. func (b *BlockGen) AddUncle(h *types.Header) { + // The uncle will have the same timestamp and auto-generated difficulty + h.Time = b.header.Time + + var parent *types.Header + for i := b.i - 1; i >= 0; i-- { + if b.chain[i].Hash() == h.ParentHash { + parent = b.chain[i].Header() + break + } + } + chainreader := &fakeChainReader{config: b.config} + h.Difficulty = b.engine.CalcDifficulty(chainreader, b.header.Time, parent) + + // The gas limit and price should be derived from the parent + h.GasLimit = parent.GasLimit + if b.config.IsLondon(h.Number) { + h.BaseFee = misc.CalcBaseFee(b.config, parent) + if !b.config.IsLondon(parent.Number) { + parentGasLimit := parent.GasLimit * params.ElasticityMultiplier + h.GasLimit = CalcGasLimit(parentGasLimit, parentGasLimit) + } + } b.uncles = append(b.uncles, h) } @@ -205,6 +227,18 @@ func GenerateChain(config *params.ChainConfig, parent *types.Block, engine conse b := &BlockGen{i: i, chain: blocks, parent: parent, statedb: statedb, config: config, engine: engine} b.header = makeHeader(chainreader, parent, statedb, b.engine) + // Set the difficulty for clique block. The chain maker doesn't have access + // to a chain, so the difficulty will be left unset (nil). Set it here to the + // correct value. + if b.header.Difficulty == nil { + if config.TerminalTotalDifficulty == nil { + // Clique chain + b.header.Difficulty = big.NewInt(2) + } else { + // Post-merge chain + b.header.Difficulty = big.NewInt(0) + } + } // Mutate the state and block according to any hard-fork specs if daoBlock := config.DAOForkBlock; daoBlock != nil { limit := new(big.Int).Add(daoBlock, params.DAOForkExtraRange) @@ -313,3 +347,4 @@ func (cr *fakeChainReader) GetHeaderByNumber(number uint64) *types.Header func (cr *fakeChainReader) GetHeaderByHash(hash common.Hash) *types.Header { return nil } func (cr *fakeChainReader) GetHeader(hash common.Hash, number uint64) *types.Header { return nil } func (cr *fakeChainReader) GetBlock(hash common.Hash, number uint64) *types.Block { return nil } +func (cr *fakeChainReader) GetTd(hash common.Hash, number uint64) *big.Int { return nil } diff --git a/core/error.go b/core/error.go index 594f3a26e5..51ebefc137 100644 --- a/core/error.go +++ b/core/error.go @@ -51,6 +51,10 @@ var ( // next one expected based on the local chain. ErrNonceTooHigh = errors.New("nonce too high") + // ErrNonceMax is returned if the nonce of a transaction sender account has + // maximum allowed value and would become invalid if incremented. + ErrNonceMax = errors.New("nonce has max value") + // ErrGasLimitReached is returned by the gas pool if the amount of gas required // by a transaction is higher than what's left in the block. ErrGasLimitReached = errors.New("gas limit reached") diff --git a/core/forkchoice.go b/core/forkchoice.go new file mode 100644 index 0000000000..b0dbb200ec --- /dev/null +++ b/core/forkchoice.go @@ -0,0 +1,108 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package core + +import ( + crand "crypto/rand" + "errors" + "math/big" + mrand "math/rand" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/math" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/params" +) + +// ChainReader defines a small collection of methods needed to access the local +// blockchain during header verification. It's implemented by both blockchain +// and lightchain. +type ChainReader interface { + // Config retrieves the header chain's chain configuration. + Config() *params.ChainConfig + + // GetTd returns the total difficulty of a local block. + GetTd(common.Hash, uint64) *big.Int +} + +// ForkChoice is the fork chooser based on the highest total difficulty of the +// chain(the fork choice used in the eth1) and the external fork choice (the fork +// choice used in the eth2). This main goal of this ForkChoice is not only for +// offering fork choice during the eth1/2 merge phase, but also keep the compatibility +// for all other proof-of-work networks. +type ForkChoice struct { + chain ChainReader + rand *mrand.Rand + + // preserve is a helper function used in td fork choice. + // Miners will prefer to choose the local mined block if the + // local td is equal to the extern one. It can be nil for light + // client + preserve func(header *types.Header) bool +} + +func NewForkChoice(chainReader ChainReader, preserve func(header *types.Header) bool) *ForkChoice { + // Seed a fast but crypto originating random generator + seed, err := crand.Int(crand.Reader, big.NewInt(math.MaxInt64)) + if err != nil { + log.Crit("Failed to initialize random seed", "err", err) + } + return &ForkChoice{ + chain: chainReader, + rand: mrand.New(mrand.NewSource(seed.Int64())), + preserve: preserve, + } +} + +// ReorgNeeded returns whether the reorg should be applied +// based on the given external header and local canonical chain. +// In the td mode, the new head is chosen if the corresponding +// total difficulty is higher. In the extern mode, the trusted +// header is always selected as the head. +func (f *ForkChoice) ReorgNeeded(current *types.Header, header *types.Header) (bool, error) { + var ( + localTD = f.chain.GetTd(current.Hash(), current.Number.Uint64()) + externTd = f.chain.GetTd(header.Hash(), header.Number.Uint64()) + ) + if localTD == nil || externTd == nil { + return false, errors.New("missing td") + } + // Accept the new header as the chain head if the transition + // is already triggered. We assume all the headers after the + // transition come from the trusted consensus layer. + if ttd := f.chain.Config().TerminalTotalDifficulty; ttd != nil && ttd.Cmp(externTd) <= 0 { + return true, nil + } + // If the total difficulty is higher than our known, add it to the canonical chain + // Second clause in the if statement reduces the vulnerability to selfish mining. + // Please refer to http://www.cs.cornell.edu/~ie53/publications/btcProcFC.pdf + reorg := externTd.Cmp(localTD) > 0 + if !reorg && externTd.Cmp(localTD) == 0 { + number, headNumber := header.Number.Uint64(), current.Number.Uint64() + if number < headNumber { + reorg = true + } else if number == headNumber { + var currentPreserve, externPreserve bool + if f.preserve != nil { + currentPreserve, externPreserve = f.preserve(current), f.preserve(header) + } + reorg = !currentPreserve && (externPreserve || f.rand.Float64() < 0.5) + } + } + return reorg, nil +} diff --git a/core/forkid/forkid_test.go b/core/forkid/forkid_test.go index 916bffadc0..b0ee59b9eb 100644 --- a/core/forkid/forkid_test.go +++ b/core/forkid/forkid_test.go @@ -19,6 +19,7 @@ package forkid import ( "bytes" "math" + "math/big" "testing" "github.com/ethereum/go-ethereum/common" @@ -29,6 +30,8 @@ import ( // TestCreation tests that different genesis and fork rule combinations result in // the correct fork ID. func TestCreation(t *testing.T) { + mergeConfig := *params.MainnetChainConfig + mergeConfig.MergeForkBlock = big.NewInt(15000000) type testcase struct { head uint64 want ID @@ -63,8 +66,10 @@ func TestCreation(t *testing.T) { {12243999, ID{Hash: checksumToBytes(0xe029e991), Next: 12244000}}, // Last Muir Glacier block {12244000, ID{Hash: checksumToBytes(0x0eb440f6), Next: 12965000}}, // First Berlin block {12964999, ID{Hash: checksumToBytes(0x0eb440f6), Next: 12965000}}, // Last Berlin block - {12965000, ID{Hash: checksumToBytes(0xb715077d), Next: 0}}, // First London block - {20000000, ID{Hash: checksumToBytes(0xb715077d), Next: 0}}, // Future London block + {12965000, ID{Hash: checksumToBytes(0xb715077d), Next: 13773000}}, // First London block + {13772999, ID{Hash: checksumToBytes(0xb715077d), Next: 13773000}}, // Last London block + {13773000, ID{Hash: checksumToBytes(0x20c327fc), Next: 0}}, // First Arrow Glacier block + {20000000, ID{Hash: checksumToBytes(0x20c327fc), Next: 0}}, // Future Arrow Glacier block }, }, // Ropsten test cases @@ -131,6 +136,38 @@ func TestCreation(t *testing.T) { {6000000, ID{Hash: checksumToBytes(0xB8C6299D), Next: 0}}, // Future London block }, }, + // Merge test cases + { + &mergeConfig, + params.MainnetGenesisHash, + []testcase{ + {0, ID{Hash: checksumToBytes(0xfc64ec04), Next: 1150000}}, // Unsynced + {1149999, ID{Hash: checksumToBytes(0xfc64ec04), Next: 1150000}}, // Last Frontier block + {1150000, ID{Hash: checksumToBytes(0x97c2c34c), Next: 1920000}}, // First Homestead block + {1919999, ID{Hash: checksumToBytes(0x97c2c34c), Next: 1920000}}, // Last Homestead block + {1920000, ID{Hash: checksumToBytes(0x91d1f948), Next: 2463000}}, // First DAO block + {2462999, ID{Hash: checksumToBytes(0x91d1f948), Next: 2463000}}, // Last DAO block + {2463000, ID{Hash: checksumToBytes(0x7a64da13), Next: 2675000}}, // First Tangerine block + {2674999, ID{Hash: checksumToBytes(0x7a64da13), Next: 2675000}}, // Last Tangerine block + {2675000, ID{Hash: checksumToBytes(0x3edd5b10), Next: 4370000}}, // First Spurious block + {4369999, ID{Hash: checksumToBytes(0x3edd5b10), Next: 4370000}}, // Last Spurious block + {4370000, ID{Hash: checksumToBytes(0xa00bc324), Next: 7280000}}, // First Byzantium block + {7279999, ID{Hash: checksumToBytes(0xa00bc324), Next: 7280000}}, // Last Byzantium block + {7280000, ID{Hash: checksumToBytes(0x668db0af), Next: 9069000}}, // First and last Constantinople, first Petersburg block + {9068999, ID{Hash: checksumToBytes(0x668db0af), Next: 9069000}}, // Last Petersburg block + {9069000, ID{Hash: checksumToBytes(0x879d6e30), Next: 9200000}}, // First Istanbul and first Muir Glacier block + {9199999, ID{Hash: checksumToBytes(0x879d6e30), Next: 9200000}}, // Last Istanbul and first Muir Glacier block + {9200000, ID{Hash: checksumToBytes(0xe029e991), Next: 12244000}}, // First Muir Glacier block + {12243999, ID{Hash: checksumToBytes(0xe029e991), Next: 12244000}}, // Last Muir Glacier block + {12244000, ID{Hash: checksumToBytes(0x0eb440f6), Next: 12965000}}, // First Berlin block + {12964999, ID{Hash: checksumToBytes(0x0eb440f6), Next: 12965000}}, // Last Berlin block + {12965000, ID{Hash: checksumToBytes(0xb715077d), Next: 13773000}}, // First London block + {13772999, ID{Hash: checksumToBytes(0xb715077d), Next: 13773000}}, // Last London block + {13773000, ID{Hash: checksumToBytes(0x20c327fc), Next: 15000000}}, // First Arrow Glacier block + {15000000, ID{Hash: checksumToBytes(0xe3abe201), Next: 0}}, // First Merge Start block + {20000000, ID{Hash: checksumToBytes(0xe3abe201), Next: 0}}, // Future Merge Start block + }, + }, } for i, tt := range tests { for j, ttt := range tt.cases { @@ -205,11 +242,11 @@ func TestValidation(t *testing.T) { // Local is mainnet Petersburg, remote is Rinkeby Petersburg. {7987396, ID{Hash: checksumToBytes(0xafec6b27), Next: 0}, ErrLocalIncompatibleOrStale}, - // Local is mainnet London, far in the future. Remote announces Gopherium (non existing fork) + // Local is mainnet Arrow Glacier, far in the future. Remote announces Gopherium (non existing fork) // at some future block 88888888, for itself, but past block for local. Local is incompatible. // // This case detects non-upgraded nodes with majority hash power (typical Ropsten mess). - {88888888, ID{Hash: checksumToBytes(0xb715077d), Next: 88888888}, ErrLocalIncompatibleOrStale}, + {88888888, ID{Hash: checksumToBytes(0x20c327fc), Next: 88888888}, ErrLocalIncompatibleOrStale}, // Local is mainnet Byzantium. Remote is also in Byzantium, but announces Gopherium (non existing // fork) at block 7279999, before Petersburg. Local is incompatible. diff --git a/core/genesis.go b/core/genesis.go index 2a65b4409e..49c3e47298 100644 --- a/core/genesis.go +++ b/core/genesis.go @@ -159,10 +159,10 @@ func (e *GenesisMismatchError) Error() string { // // The returned chain configuration is never nil. func SetupGenesisBlock(db ethdb.Database, genesis *Genesis) (*params.ChainConfig, common.Hash, error) { - return SetupGenesisBlockWithOverride(db, genesis, nil) + return SetupGenesisBlockWithOverride(db, genesis, nil, nil) } -func SetupGenesisBlockWithOverride(db ethdb.Database, genesis *Genesis, overrideLondon *big.Int) (*params.ChainConfig, common.Hash, error) { +func SetupGenesisBlockWithOverride(db ethdb.Database, genesis *Genesis, overrideArrowGlacier, overrideTerminalTotalDifficulty *big.Int) (*params.ChainConfig, common.Hash, error) { if genesis != nil && genesis.Config == nil { return params.AllEthashProtocolChanges, common.Hash{}, errGenesisNoConfig } @@ -208,8 +208,11 @@ func SetupGenesisBlockWithOverride(db ethdb.Database, genesis *Genesis, override } // Get the existing chain configuration. newcfg := genesis.configOrDefault(stored) - if overrideLondon != nil { - newcfg.LondonBlock = overrideLondon + if overrideArrowGlacier != nil { + newcfg.ArrowGlacierBlock = overrideArrowGlacier + } + if overrideTerminalTotalDifficulty != nil { + newcfg.TerminalTotalDifficulty = overrideTerminalTotalDifficulty } if err := newcfg.CheckConfigForkOrder(); err != nil { return newcfg, common.Hash{}, err @@ -250,6 +253,8 @@ func (g *Genesis) configOrDefault(ghash common.Hash) *params.ChainConfig { return params.MainnetChainConfig case ghash == params.RopstenGenesisHash: return params.RopstenChainConfig + case ghash == params.SepoliaGenesisHash: + return params.SepoliaChainConfig case ghash == params.RinkebyGenesisHash: return params.RinkebyChainConfig case ghash == params.GoerliGenesisHash: @@ -333,7 +338,7 @@ func (g *Genesis) Commit(db ethdb.Database) (*types.Block, error) { if config.Clique != nil && len(block.Extra()) == 0 { return nil, errors.New("can't start clique chain without signers") } - rawdb.WriteTd(db, block.Hash(), block.NumberU64(), g.Difficulty) + rawdb.WriteTd(db, block.Hash(), block.NumberU64(), block.Difficulty()) rawdb.WriteBlock(db, block) rawdb.WriteReceipts(db, block.Hash(), block.NumberU64(), nil) rawdb.WriteCanonicalHash(db, block.Hash(), block.NumberU64()) @@ -439,8 +444,21 @@ func DefaultBorMainnetGenesisBlock() *Genesis { } } +// DefaultSepoliaGenesisBlock returns the Sepolia network genesis block. +func DefaultSepoliaGenesisBlock() *Genesis { + return &Genesis{ + Config: params.SepoliaChainConfig, + Nonce: 0, + ExtraData: []byte("Sepolia, Athens, Attica, Greece!"), + GasLimit: 0x1c9c380, + Difficulty: big.NewInt(0x20000), + Timestamp: 1633267481, + Alloc: decodePrealloc(sepoliaAllocData), + } +} + // DeveloperGenesisBlock returns the 'geth --dev' genesis block. -func DeveloperGenesisBlock(period uint64, faucet common.Address) *Genesis { +func DeveloperGenesisBlock(period uint64, gasLimit uint64, faucet common.Address) *Genesis { // Override the default period to the user requested one config := *params.AllCliqueProtocolChanges config.Clique = ¶ms.CliqueConfig{ @@ -452,7 +470,7 @@ func DeveloperGenesisBlock(period uint64, faucet common.Address) *Genesis { return &Genesis{ Config: &config, ExtraData: append(append(make([]byte, 32), faucet[:]...), make([]byte, crypto.SignatureLength)...), - GasLimit: 11500000, + GasLimit: gasLimit, BaseFee: big.NewInt(params.InitialBaseFee), Difficulty: big.NewInt(1), Alloc: map[common.Address]GenesisAccount{ diff --git a/core/genesis_alloc.go b/core/genesis_alloc.go index ee542334b5..3d053904e7 100644 --- a/core/genesis_alloc.go +++ b/core/genesis_alloc.go @@ -26,3 +26,4 @@ const ropstenAllocData = "\xf9\x03\xa4\u0080\x01\xc2\x01\x01\xc2\x02\x01\xc2\x03 const rinkebyAllocData = "\xf9\x03\xb7\u0080\x01\xc2\x01\x01\xc2\x02\x01\xc2\x03\x01\xc2\x04\x01\xc2\x05\x01\xc2\x06\x01\xc2\a\x01\xc2\b\x01\xc2\t\x01\xc2\n\x01\xc2\v\x01\xc2\f\x01\xc2\r\x01\xc2\x0e\x01\xc2\x0f\x01\xc2\x10\x01\xc2\x11\x01\xc2\x12\x01\xc2\x13\x01\xc2\x14\x01\xc2\x15\x01\xc2\x16\x01\xc2\x17\x01\xc2\x18\x01\xc2\x19\x01\xc2\x1a\x01\xc2\x1b\x01\xc2\x1c\x01\xc2\x1d\x01\xc2\x1e\x01\xc2\x1f\x01\xc2 \x01\xc2!\x01\xc2\"\x01\xc2#\x01\xc2$\x01\xc2%\x01\xc2&\x01\xc2'\x01\xc2(\x01\xc2)\x01\xc2*\x01\xc2+\x01\xc2,\x01\xc2-\x01\xc2.\x01\xc2/\x01\xc20\x01\xc21\x01\xc22\x01\xc23\x01\xc24\x01\xc25\x01\xc26\x01\xc27\x01\xc28\x01\xc29\x01\xc2:\x01\xc2;\x01\xc2<\x01\xc2=\x01\xc2>\x01\xc2?\x01\xc2@\x01\xc2A\x01\xc2B\x01\xc2C\x01\xc2D\x01\xc2E\x01\xc2F\x01\xc2G\x01\xc2H\x01\xc2I\x01\xc2J\x01\xc2K\x01\xc2L\x01\xc2M\x01\xc2N\x01\xc2O\x01\xc2P\x01\xc2Q\x01\xc2R\x01\xc2S\x01\xc2T\x01\xc2U\x01\xc2V\x01\xc2W\x01\xc2X\x01\xc2Y\x01\xc2Z\x01\xc2[\x01\xc2\\\x01\xc2]\x01\xc2^\x01\xc2_\x01\xc2`\x01\xc2a\x01\xc2b\x01\xc2c\x01\xc2d\x01\xc2e\x01\xc2f\x01\xc2g\x01\xc2h\x01\xc2i\x01\xc2j\x01\xc2k\x01\xc2l\x01\xc2m\x01\xc2n\x01\xc2o\x01\xc2p\x01\xc2q\x01\xc2r\x01\xc2s\x01\xc2t\x01\xc2u\x01\xc2v\x01\xc2w\x01\xc2x\x01\xc2y\x01\xc2z\x01\xc2{\x01\xc2|\x01\xc2}\x01\xc2~\x01\xc2\u007f\x01\u00c1\x80\x01\u00c1\x81\x01\u00c1\x82\x01\u00c1\x83\x01\u00c1\x84\x01\u00c1\x85\x01\u00c1\x86\x01\u00c1\x87\x01\u00c1\x88\x01\u00c1\x89\x01\u00c1\x8a\x01\u00c1\x8b\x01\u00c1\x8c\x01\u00c1\x8d\x01\u00c1\x8e\x01\u00c1\x8f\x01\u00c1\x90\x01\u00c1\x91\x01\u00c1\x92\x01\u00c1\x93\x01\u00c1\x94\x01\u00c1\x95\x01\u00c1\x96\x01\u00c1\x97\x01\u00c1\x98\x01\u00c1\x99\x01\u00c1\x9a\x01\u00c1\x9b\x01\u00c1\x9c\x01\u00c1\x9d\x01\u00c1\x9e\x01\u00c1\x9f\x01\u00c1\xa0\x01\u00c1\xa1\x01\u00c1\xa2\x01\u00c1\xa3\x01\u00c1\xa4\x01\u00c1\xa5\x01\u00c1\xa6\x01\u00c1\xa7\x01\u00c1\xa8\x01\u00c1\xa9\x01\u00c1\xaa\x01\u00c1\xab\x01\u00c1\xac\x01\u00c1\xad\x01\u00c1\xae\x01\u00c1\xaf\x01\u00c1\xb0\x01\u00c1\xb1\x01\u00c1\xb2\x01\u00c1\xb3\x01\u00c1\xb4\x01\u00c1\xb5\x01\u00c1\xb6\x01\u00c1\xb7\x01\u00c1\xb8\x01\u00c1\xb9\x01\u00c1\xba\x01\u00c1\xbb\x01\u00c1\xbc\x01\u00c1\xbd\x01\u00c1\xbe\x01\u00c1\xbf\x01\u00c1\xc0\x01\u00c1\xc1\x01\u00c1\xc2\x01\u00c1\xc3\x01\u00c1\xc4\x01\u00c1\xc5\x01\u00c1\xc6\x01\u00c1\xc7\x01\u00c1\xc8\x01\u00c1\xc9\x01\u00c1\xca\x01\u00c1\xcb\x01\u00c1\xcc\x01\u00c1\xcd\x01\u00c1\xce\x01\u00c1\xcf\x01\u00c1\xd0\x01\u00c1\xd1\x01\u00c1\xd2\x01\u00c1\xd3\x01\u00c1\xd4\x01\u00c1\xd5\x01\u00c1\xd6\x01\u00c1\xd7\x01\u00c1\xd8\x01\u00c1\xd9\x01\u00c1\xda\x01\u00c1\xdb\x01\u00c1\xdc\x01\u00c1\xdd\x01\u00c1\xde\x01\u00c1\xdf\x01\u00c1\xe0\x01\u00c1\xe1\x01\u00c1\xe2\x01\u00c1\xe3\x01\u00c1\xe4\x01\u00c1\xe5\x01\u00c1\xe6\x01\u00c1\xe7\x01\u00c1\xe8\x01\u00c1\xe9\x01\u00c1\xea\x01\u00c1\xeb\x01\u00c1\xec\x01\u00c1\xed\x01\u00c1\xee\x01\u00c1\xef\x01\u00c1\xf0\x01\u00c1\xf1\x01\u00c1\xf2\x01\u00c1\xf3\x01\u00c1\xf4\x01\u00c1\xf5\x01\u00c1\xf6\x01\u00c1\xf7\x01\u00c1\xf8\x01\u00c1\xf9\x01\u00c1\xfa\x01\u00c1\xfb\x01\u00c1\xfc\x01\u00c1\xfd\x01\u00c1\xfe\x01\u00c1\xff\x01\xf6\x941\xb9\x8d\x14\x00{\xde\xe67)\x80\x86\x98\x8a\v\xbd1\x18E#\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" const goerliAllocData = "\xf9\x04\x06\u0080\x01\xc2\x01\x01\xc2\x02\x01\xc2\x03\x01\xc2\x04\x01\xc2\x05\x01\xc2\x06\x01\xc2\a\x01\xc2\b\x01\xc2\t\x01\xc2\n\x01\xc2\v\x01\xc2\f\x01\xc2\r\x01\xc2\x0e\x01\xc2\x0f\x01\xc2\x10\x01\xc2\x11\x01\xc2\x12\x01\xc2\x13\x01\xc2\x14\x01\xc2\x15\x01\xc2\x16\x01\xc2\x17\x01\xc2\x18\x01\xc2\x19\x01\xc2\x1a\x01\xc2\x1b\x01\xc2\x1c\x01\xc2\x1d\x01\xc2\x1e\x01\xc2\x1f\x01\xc2 \x01\xc2!\x01\xc2\"\x01\xc2#\x01\xc2$\x01\xc2%\x01\xc2&\x01\xc2'\x01\xc2(\x01\xc2)\x01\xc2*\x01\xc2+\x01\xc2,\x01\xc2-\x01\xc2.\x01\xc2/\x01\xc20\x01\xc21\x01\xc22\x01\xc23\x01\xc24\x01\xc25\x01\xc26\x01\xc27\x01\xc28\x01\xc29\x01\xc2:\x01\xc2;\x01\xc2<\x01\xc2=\x01\xc2>\x01\xc2?\x01\xc2@\x01\xc2A\x01\xc2B\x01\xc2C\x01\xc2D\x01\xc2E\x01\xc2F\x01\xc2G\x01\xc2H\x01\xc2I\x01\xc2J\x01\xc2K\x01\xc2L\x01\xc2M\x01\xc2N\x01\xc2O\x01\xc2P\x01\xc2Q\x01\xc2R\x01\xc2S\x01\xc2T\x01\xc2U\x01\xc2V\x01\xc2W\x01\xc2X\x01\xc2Y\x01\xc2Z\x01\xc2[\x01\xc2\\\x01\xc2]\x01\xc2^\x01\xc2_\x01\xc2`\x01\xc2a\x01\xc2b\x01\xc2c\x01\xc2d\x01\xc2e\x01\xc2f\x01\xc2g\x01\xc2h\x01\xc2i\x01\xc2j\x01\xc2k\x01\xc2l\x01\xc2m\x01\xc2n\x01\xc2o\x01\xc2p\x01\xc2q\x01\xc2r\x01\xc2s\x01\xc2t\x01\xc2u\x01\xc2v\x01\xc2w\x01\xc2x\x01\xc2y\x01\xc2z\x01\xc2{\x01\xc2|\x01\xc2}\x01\xc2~\x01\xc2\u007f\x01\u00c1\x80\x01\u00c1\x81\x01\u00c1\x82\x01\u00c1\x83\x01\u00c1\x84\x01\u00c1\x85\x01\u00c1\x86\x01\u00c1\x87\x01\u00c1\x88\x01\u00c1\x89\x01\u00c1\x8a\x01\u00c1\x8b\x01\u00c1\x8c\x01\u00c1\x8d\x01\u00c1\x8e\x01\u00c1\x8f\x01\u00c1\x90\x01\u00c1\x91\x01\u00c1\x92\x01\u00c1\x93\x01\u00c1\x94\x01\u00c1\x95\x01\u00c1\x96\x01\u00c1\x97\x01\u00c1\x98\x01\u00c1\x99\x01\u00c1\x9a\x01\u00c1\x9b\x01\u00c1\x9c\x01\u00c1\x9d\x01\u00c1\x9e\x01\u00c1\x9f\x01\u00c1\xa0\x01\u00c1\xa1\x01\u00c1\xa2\x01\u00c1\xa3\x01\u00c1\xa4\x01\u00c1\xa5\x01\u00c1\xa6\x01\u00c1\xa7\x01\u00c1\xa8\x01\u00c1\xa9\x01\u00c1\xaa\x01\u00c1\xab\x01\u00c1\xac\x01\u00c1\xad\x01\u00c1\xae\x01\u00c1\xaf\x01\u00c1\xb0\x01\u00c1\xb1\x01\u00c1\xb2\x01\u00c1\xb3\x01\u00c1\xb4\x01\u00c1\xb5\x01\u00c1\xb6\x01\u00c1\xb7\x01\u00c1\xb8\x01\u00c1\xb9\x01\u00c1\xba\x01\u00c1\xbb\x01\u00c1\xbc\x01\u00c1\xbd\x01\u00c1\xbe\x01\u00c1\xbf\x01\u00c1\xc0\x01\u00c1\xc1\x01\u00c1\xc2\x01\u00c1\xc3\x01\u00c1\xc4\x01\u00c1\xc5\x01\u00c1\xc6\x01\u00c1\xc7\x01\u00c1\xc8\x01\u00c1\xc9\x01\u00c1\xca\x01\u00c1\xcb\x01\u00c1\xcc\x01\u00c1\xcd\x01\u00c1\xce\x01\u00c1\xcf\x01\u00c1\xd0\x01\u00c1\xd1\x01\u00c1\xd2\x01\u00c1\xd3\x01\u00c1\xd4\x01\u00c1\xd5\x01\u00c1\xd6\x01\u00c1\xd7\x01\u00c1\xd8\x01\u00c1\xd9\x01\u00c1\xda\x01\u00c1\xdb\x01\u00c1\xdc\x01\u00c1\xdd\x01\u00c1\xde\x01\u00c1\xdf\x01\u00c1\xe0\x01\u00c1\xe1\x01\u00c1\xe2\x01\u00c1\xe3\x01\u00c1\xe4\x01\u00c1\xe5\x01\u00c1\xe6\x01\u00c1\xe7\x01\u00c1\xe8\x01\u00c1\xe9\x01\u00c1\xea\x01\u00c1\xeb\x01\u00c1\xec\x01\u00c1\xed\x01\u00c1\xee\x01\u00c1\xef\x01\u00c1\xf0\x01\u00c1\xf1\x01\u00c1\xf2\x01\u00c1\xf3\x01\u00c1\xf4\x01\u00c1\xf5\x01\u00c1\xf6\x01\u00c1\xf7\x01\u00c1\xf8\x01\u00c1\xf9\x01\u00c1\xfa\x01\u00c1\xfb\x01\u00c1\xfc\x01\u00c1\xfd\x01\u00c1\xfe\x01\u00c1\xff\x01\xe0\x94L*\xe4\x82Y5\x05\xf0\x16<\xde\xfc\a>\x81\xc6<\xdaA\a\x8a\x15-\x02\xc7\xe1J\xf6\x80\x00\x00\xe0\x94\xa8\xe8\xf1G2e\x8eKQ\xe8q\x191\x05:\x8ai\xba\xf2\xb1\x8a\x15-\x02\xc7\xe1J\xf6\x80\x00\x00\xe1\x94\u0665\x17\x9f\t\x1d\x85\x05\x1d<\x98'\x85\xef\xd1E\\\uc199\x8b\bE\x95\x16\x14\x01HJ\x00\x00\x00\xe1\x94\u08bdBX\xd2v\x887\xba\xa2j(\xfeq\xdc\a\x9f\x84\u01cbJG\xe3\xc1$H\xf4\xad\x00\x00\x00" const calaverasAllocData = "\xf9\x06\x14\u0080\x01\xc2\x01\x01\xc2\x02\x01\xc2\x03\x01\xc2\x04\x01\xc2\x05\x01\xc2\x06\x01\xc2\a\x01\xc2\b\x01\xc2\t\x01\xc2\n\x01\xc2\v\x01\xc2\f\x01\xc2\r\x01\xc2\x0e\x01\xc2\x0f\x01\xc2\x10\x01\xc2\x11\x01\xc2\x12\x01\xc2\x13\x01\xc2\x14\x01\xc2\x15\x01\xc2\x16\x01\xc2\x17\x01\xc2\x18\x01\xc2\x19\x01\xc2\x1a\x01\xc2\x1b\x01\xc2\x1c\x01\xc2\x1d\x01\xc2\x1e\x01\xc2\x1f\x01\xc2 \x01\xc2!\x01\xc2\"\x01\xc2#\x01\xc2$\x01\xc2%\x01\xc2&\x01\xc2'\x01\xc2(\x01\xc2)\x01\xc2*\x01\xc2+\x01\xc2,\x01\xc2-\x01\xc2.\x01\xc2/\x01\xc20\x01\xc21\x01\xc22\x01\xc23\x01\xc24\x01\xc25\x01\xc26\x01\xc27\x01\xc28\x01\xc29\x01\xc2:\x01\xc2;\x01\xc2<\x01\xc2=\x01\xc2>\x01\xc2?\x01\xc2@\x01\xc2A\x01\xc2B\x01\xc2C\x01\xc2D\x01\xc2E\x01\xc2F\x01\xc2G\x01\xc2H\x01\xc2I\x01\xc2J\x01\xc2K\x01\xc2L\x01\xc2M\x01\xc2N\x01\xc2O\x01\xc2P\x01\xc2Q\x01\xc2R\x01\xc2S\x01\xc2T\x01\xc2U\x01\xc2V\x01\xc2W\x01\xc2X\x01\xc2Y\x01\xc2Z\x01\xc2[\x01\xc2\\\x01\xc2]\x01\xc2^\x01\xc2_\x01\xc2`\x01\xc2a\x01\xc2b\x01\xc2c\x01\xc2d\x01\xc2e\x01\xc2f\x01\xc2g\x01\xc2h\x01\xc2i\x01\xc2j\x01\xc2k\x01\xc2l\x01\xc2m\x01\xc2n\x01\xc2o\x01\xc2p\x01\xc2q\x01\xc2r\x01\xc2s\x01\xc2t\x01\xc2u\x01\xc2v\x01\xc2w\x01\xc2x\x01\xc2y\x01\xc2z\x01\xc2{\x01\xc2|\x01\xc2}\x01\xc2~\x01\xc2\u007f\x01\u00c1\x80\x01\u00c1\x81\x01\u00c1\x82\x01\u00c1\x83\x01\u00c1\x84\x01\u00c1\x85\x01\u00c1\x86\x01\u00c1\x87\x01\u00c1\x88\x01\u00c1\x89\x01\u00c1\x8a\x01\u00c1\x8b\x01\u00c1\x8c\x01\u00c1\x8d\x01\u00c1\x8e\x01\u00c1\x8f\x01\u00c1\x90\x01\u00c1\x91\x01\u00c1\x92\x01\u00c1\x93\x01\u00c1\x94\x01\u00c1\x95\x01\u00c1\x96\x01\u00c1\x97\x01\u00c1\x98\x01\u00c1\x99\x01\u00c1\x9a\x01\u00c1\x9b\x01\u00c1\x9c\x01\u00c1\x9d\x01\u00c1\x9e\x01\u00c1\x9f\x01\u00c1\xa0\x01\u00c1\xa1\x01\u00c1\xa2\x01\u00c1\xa3\x01\u00c1\xa4\x01\u00c1\xa5\x01\u00c1\xa6\x01\u00c1\xa7\x01\u00c1\xa8\x01\u00c1\xa9\x01\u00c1\xaa\x01\u00c1\xab\x01\u00c1\xac\x01\u00c1\xad\x01\u00c1\xae\x01\u00c1\xaf\x01\u00c1\xb0\x01\u00c1\xb1\x01\u00c1\xb2\x01\u00c1\xb3\x01\u00c1\xb4\x01\u00c1\xb5\x01\u00c1\xb6\x01\u00c1\xb7\x01\u00c1\xb8\x01\u00c1\xb9\x01\u00c1\xba\x01\u00c1\xbb\x01\u00c1\xbc\x01\u00c1\xbd\x01\u00c1\xbe\x01\u00c1\xbf\x01\u00c1\xc0\x01\u00c1\xc1\x01\u00c1\xc2\x01\u00c1\xc3\x01\u00c1\xc4\x01\u00c1\xc5\x01\u00c1\xc6\x01\u00c1\xc7\x01\u00c1\xc8\x01\u00c1\xc9\x01\u00c1\xca\x01\u00c1\xcb\x01\u00c1\xcc\x01\u00c1\xcd\x01\u00c1\xce\x01\u00c1\xcf\x01\u00c1\xd0\x01\u00c1\xd1\x01\u00c1\xd2\x01\u00c1\xd3\x01\u00c1\xd4\x01\u00c1\xd5\x01\u00c1\xd6\x01\u00c1\xd7\x01\u00c1\xd8\x01\u00c1\xd9\x01\u00c1\xda\x01\u00c1\xdb\x01\u00c1\xdc\x01\u00c1\xdd\x01\u00c1\xde\x01\u00c1\xdf\x01\u00c1\xe0\x01\u00c1\xe1\x01\u00c1\xe2\x01\u00c1\xe3\x01\u00c1\xe4\x01\u00c1\xe5\x01\u00c1\xe6\x01\u00c1\xe7\x01\u00c1\xe8\x01\u00c1\xe9\x01\u00c1\xea\x01\u00c1\xeb\x01\u00c1\xec\x01\u00c1\xed\x01\u00c1\xee\x01\u00c1\xef\x01\u00c1\xf0\x01\u00c1\xf1\x01\u00c1\xf2\x01\u00c1\xf3\x01\u00c1\xf4\x01\u00c1\xf5\x01\u00c1\xf6\x01\u00c1\xf7\x01\u00c1\xf8\x01\u00c1\xf9\x01\u00c1\xfa\x01\u00c1\xfb\x01\u00c1\xfc\x01\u00c1\xfd\x01\u00c1\xfe\x01\u00c1\xff\x01\xf6\x94\x0e\x89\xe2\xae\xdb\x1c\xfc\u06d4$\xd4\x1a\x1f!\x8fA2s\x81r\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94\x10A\xaf\xbc\xb3Y\u0568\xdcX\xc1[/\xf5\x13T\xff\x8a!}\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94#o\xf1\xe9t\x19\xae\x93\xad\x80\xca\xfb\xaa!\"\f]x\xfb}\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94`\xad\xc0\xf8\x9aA\xaf#|\xe75T\xed\xe1p\xd73\xec\x14\xe0\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94y\x9d2\x9e_X4\x19\x16|\xd7\"\x96$\x85\x92n3\x8fJ\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94|\xf5\xb7\x9b\xfe)\x1ag\xab\x02\xb3\x93\xe4V\xcc\xc4\xc2f\xf7S\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94\x8a\x8e\xaf\xb1\xcfb\xbf\xbe\xb1t\x17i\xda\xe1\xa9\xddG\x99a\x92\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94\x8b\xa1\xf1\tU\x1b\xd42\x800\x12dZ\xc16\xdd\xd6M\xbar\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94\xb0*.\xda\x1b1\u007f\xbd\x16v\x01(\x83k\n\u015bV\x0e\x9d\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94\xba\xdc\r\xe9\xe0yK\x04\x9b^\xa6<>\x1ei\x8a4v\xc1r\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94\xf00\v\ue24a\xe2r\xeb4~\x83i\xac\fv\xdfB\xc9?\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94\xfe;U~\x8f\xb6+\x89\xf4\x91kr\x1b\xe5\\\ub08d\xbds\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" +const sepoliaAllocData = "\xf9\x01\xee\u0791i\x16\xa8{\x823?BE\x04f#\xb27\x94\xc6\\\x8b\bE\x95\x16\x14\x01HJ\x00\x00\x00\xe1\x94\x10\xf5\xd4XT\xe08\a\x14\x85\xac\x9e@#\b\u03c0\xd2\xd2\xfe\x8bR\xb7\xd2\xdc\xc8\f\xd2\xe4\x00\x00\x00\u0794y\x9d2\x9e_X4\x19\x16|\xd7\"\x96$\x85\x92n3\x8fJ\x88\r\u0db3\xa7d\x00\x00\xe0\x94|\xf5\xb7\x9b\xfe)\x1ag\xab\x02\xb3\x93\xe4V\xcc\xc4\xc2f\xf7S\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\x8b\u007f\tw\xbbO\x0f\xbepv\xfa\"\xbc$\xac\xa0CX?^\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\xa2\xa6\xd949\x14O\xfeM'\xc9\xe0\x88\xdc\u0637\x83\x94bc\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\xaa\xec\x869DA\xf9\x15\xbc\xe3\xe6\xab9\x99w\xe9\x90o;i\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\u1532\x1c3\xde\x1f\xab?\xa1T\x99\xc6+Y\xfe\f\xc3%\x00 \u044bR\xb7\xd2\xdc\xc8\f\xd2\xe4\x00\x00\x00\xe0\x94\xbc\x11)Y6\xaay\u0554\x13\x9d\xe1\xb2\xe1&)AO;\u06ca\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\xbe\xef2\xca[\x9a\x19\x8d'\xb4\xe0/LpC\x9f\xe6\x03V\u03ca\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe1\x94\xd7\xd7lX\xb3\xa5\x19\xe9\xfal\xc4\xd2-\xc0\x17%\x9b\u011f\x1e\x8bR\xb7\xd2\xdc\xc8\f\xd2\xe4\x00\x00\x00\xe0\x94\xd7\xed\xdbx\xed)[<\x96)$\x0e\x89$\xfb\x8d\x88t\xdd\u060a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\u0665\x17\x9f\t\x1d\x85\x05\x1d<\x98'\x85\xef\xd1E\\\uc199\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\xe2\xe2e\x90(\x147\x84\xd5W\xbc\xeco\xf3\xa0r\x10H\x88\n\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\xf4|\xae\x1c\xf7\x9c\xa6u\x8b\xfcx}\xbd!\u6f7eq\x12\xb8\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00" diff --git a/core/genesis_test.go b/core/genesis_test.go index 055be2796c..f3d6b23e5f 100644 --- a/core/genesis_test.go +++ b/core/genesis_test.go @@ -30,25 +30,6 @@ import ( "github.com/ethereum/go-ethereum/params" ) -func TestDefaultGenesisBlock(t *testing.T) { - block := DefaultGenesisBlock().ToBlock(nil) - if block.Hash() != params.MainnetGenesisHash { - t.Errorf("wrong mainnet genesis hash, got %v, want %v", block.Hash(), params.MainnetGenesisHash) - } - block = DefaultRopstenGenesisBlock().ToBlock(nil) - if block.Hash() != params.RopstenGenesisHash { - t.Errorf("wrong ropsten genesis hash, got %v, want %v", block.Hash(), params.RopstenGenesisHash) - } - block = DefaultRinkebyGenesisBlock().ToBlock(nil) - if block.Hash() != params.RinkebyGenesisHash { - t.Errorf("wrong rinkeby genesis hash, got %v, want %v", block.Hash(), params.RinkebyGenesisHash) - } - block = DefaultGoerliGenesisBlock().ToBlock(nil) - if block.Hash() != params.GoerliGenesisHash { - t.Errorf("wrong goerli genesis hash, got %v, want %v", block.Hash(), params.GoerliGenesisHash) - } -} - func TestInvalidCliqueConfig(t *testing.T) { block := DefaultGoerliGenesisBlock() block.ExtraData = []byte{} @@ -179,33 +160,56 @@ func TestSetupGenesis(t *testing.T) { } } -// TestGenesisHashes checks the congruity of default genesis data to corresponding hardcoded genesis hash values. +// TestGenesisHashes checks the congruity of default genesis data to +// corresponding hardcoded genesis hash values. func TestGenesisHashes(t *testing.T) { - cases := []struct { + for i, c := range []struct { genesis *Genesis - hash common.Hash + want common.Hash }{ - { - genesis: DefaultGenesisBlock(), - hash: params.MainnetGenesisHash, - }, - { - genesis: DefaultGoerliGenesisBlock(), - hash: params.GoerliGenesisHash, - }, - { - genesis: DefaultRopstenGenesisBlock(), - hash: params.RopstenGenesisHash, - }, - { - genesis: DefaultRinkebyGenesisBlock(), - hash: params.RinkebyGenesisHash, - }, - } - for i, c := range cases { - b := c.genesis.MustCommit(rawdb.NewMemoryDatabase()) - if got := b.Hash(); got != c.hash { - t.Errorf("case: %d, want: %s, got: %s", i, c.hash.Hex(), got.Hex()) + {DefaultGenesisBlock(), params.MainnetGenesisHash}, + {DefaultGoerliGenesisBlock(), params.GoerliGenesisHash}, + {DefaultRopstenGenesisBlock(), params.RopstenGenesisHash}, + {DefaultRinkebyGenesisBlock(), params.RinkebyGenesisHash}, + {DefaultSepoliaGenesisBlock(), params.SepoliaGenesisHash}, + } { + // Test via MustCommit + if have := c.genesis.MustCommit(rawdb.NewMemoryDatabase()).Hash(); have != c.want { + t.Errorf("case: %d a), want: %s, got: %s", i, c.want.Hex(), have.Hex()) + } + // Test via ToBlock + if have := c.genesis.ToBlock(nil).Hash(); have != c.want { + t.Errorf("case: %d a), want: %s, got: %s", i, c.want.Hex(), have.Hex()) } } } + +func TestGenesis_Commit(t *testing.T) { + genesis := &Genesis{ + BaseFee: big.NewInt(params.InitialBaseFee), + Config: params.TestChainConfig, + // difficulty is nil + } + + db := rawdb.NewMemoryDatabase() + genesisBlock, err := genesis.Commit(db) + if err != nil { + t.Fatal(err) + } + + if genesis.Difficulty != nil { + t.Fatalf("assumption wrong") + } + + // This value should have been set as default in the ToBlock method. + if genesisBlock.Difficulty().Cmp(params.GenesisDifficulty) != 0 { + t.Errorf("assumption wrong: want: %d, got: %v", params.GenesisDifficulty, genesisBlock.Difficulty()) + } + + // Expect the stored total difficulty to be the difficulty of the genesis block. + stored := rawdb.ReadTd(db, genesisBlock.Hash(), genesisBlock.NumberU64()) + + if stored.Cmp(genesisBlock.Difficulty()) != 0 { + t.Errorf("inequal difficulty; stored: %v, genesisBlock: %v", stored, genesisBlock.Difficulty()) + } +} diff --git a/core/headerchain.go b/core/headerchain.go index 9f2b708d0a..99364f638f 100644 --- a/core/headerchain.go +++ b/core/headerchain.go @@ -33,6 +33,7 @@ import ( "github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/params" + "github.com/ethereum/go-ethereum/rlp" lru "github.com/hashicorp/golang-lru" ) @@ -49,15 +50,14 @@ const ( // HeaderChain is responsible for maintaining the header chain including the // header query and updating. // -// The components maintained by headerchain includes: (1) total difficult +// The components maintained by headerchain includes: (1) total difficulty // (2) header (3) block hash -> number mapping (4) canonical number -> hash mapping // and (5) head header flag. // // It is not thread safe either, the encapsulating chain structures should do // the necessary mutex locking/unlocking. type HeaderChain struct { - config *params.ChainConfig - + config *params.ChainConfig chainDb ethdb.Database genesisHeader *types.Header @@ -86,7 +86,6 @@ func NewHeaderChain(chainDb ethdb.Database, config *params.ChainConfig, engine c if err != nil { return nil, err } - hc := &HeaderChain{ config: config, chainDb: chainDb, @@ -97,12 +96,10 @@ func NewHeaderChain(chainDb ethdb.Database, config *params.ChainConfig, engine c rand: mrand.New(mrand.NewSource(seed.Int64())), engine: engine, } - hc.genesisHeader = hc.GetHeaderByNumber(0) if hc.genesisHeader == nil { return nil, ErrNoGenesis } - hc.currentHeader.Store(hc.genesisHeader) if head := rawdb.ReadHeadBlockHash(chainDb); head != (common.Hash{}) { if chead := hc.GetHeaderByHash(head); chead != nil { @@ -111,7 +108,6 @@ func NewHeaderChain(chainDb ethdb.Database, config *params.ChainConfig, engine c } hc.currentHeaderHash = hc.CurrentHeader().Hash() headHeaderGauge.Update(hc.CurrentHeader().Number.Int64()) - return hc, nil } @@ -137,35 +133,93 @@ type headerWriteResult struct { lastHeader *types.Header } -// WriteHeaders writes a chain of headers into the local chain, given that the parents -// are already known. If the total difficulty of the newly inserted chain becomes -// greater than the current known TD, the canonical chain is reorged. -// -// Note: This method is not concurrent-safe with inserting blocks simultaneously -// into the chain, as side effects caused by reorganisations cannot be emulated -// without the real blocks. Hence, writing headers directly should only be done -// in two scenarios: pure-header mode of operation (light clients), or properly -// separated header/block phases (non-archive clients). -func (hc *HeaderChain) writeHeaders(headers []*types.Header) (result *headerWriteResult, err error) { +// Reorg reorgs the local canonical chain into the specified chain. The reorg +// can be classified into two cases: (a) extend the local chain (b) switch the +// head to the given header. +func (hc *HeaderChain) Reorg(headers []*types.Header) error { + // Short circuit if nothing to reorg. if len(headers) == 0 { - return &headerWriteResult{}, nil + return nil + } + // If the parent of the (first) block is already the canon header, + // we don't have to go backwards to delete canon blocks, but simply + // pile them onto the existing chain. Otherwise, do the necessary + // reorgs. + var ( + first = headers[0] + last = headers[len(headers)-1] + batch = hc.chainDb.NewBatch() + ) + if first.ParentHash != hc.currentHeaderHash { + // Delete any canonical number assignments above the new head + for i := last.Number.Uint64() + 1; ; i++ { + hash := rawdb.ReadCanonicalHash(hc.chainDb, i) + if hash == (common.Hash{}) { + break + } + rawdb.DeleteCanonicalHash(batch, i) + } + // Overwrite any stale canonical number assignments, going + // backwards from the first header in this import until the + // cross link between two chains. + var ( + header = first + headNumber = header.Number.Uint64() + headHash = header.Hash() + ) + for rawdb.ReadCanonicalHash(hc.chainDb, headNumber) != headHash { + rawdb.WriteCanonicalHash(batch, headHash, headNumber) + if headNumber == 0 { + break // It shouldn't be reached + } + headHash, headNumber = header.ParentHash, header.Number.Uint64()-1 + header = hc.GetHeader(headHash, headNumber) + if header == nil { + return fmt.Errorf("missing parent %d %x", headNumber, headHash) + } + } + } + // Extend the canonical chain with the new headers + for i := 0; i < len(headers)-1; i++ { + hash := headers[i+1].ParentHash // Save some extra hashing + num := headers[i].Number.Uint64() + rawdb.WriteCanonicalHash(batch, hash, num) + rawdb.WriteHeadHeaderHash(batch, hash) + } + // Write the last header + hash := headers[len(headers)-1].Hash() + num := headers[len(headers)-1].Number.Uint64() + rawdb.WriteCanonicalHash(batch, hash, num) + rawdb.WriteHeadHeaderHash(batch, hash) + + if err := batch.Write(); err != nil { + return err + } + // Last step update all in-memory head header markers + hc.currentHeaderHash = last.Hash() + hc.currentHeader.Store(types.CopyHeader(last)) + headHeaderGauge.Update(last.Number.Int64()) + return nil +} + +// WriteHeaders writes a chain of headers into the local chain, given that the +// parents are already known. The chain head header won't be updated in this +// function, the additional setChainHead is expected in order to finish the entire +// procedure. +func (hc *HeaderChain) WriteHeaders(headers []*types.Header) (int, error) { + if len(headers) == 0 { + return 0, nil } ptd := hc.GetTd(headers[0].ParentHash, headers[0].Number.Uint64()-1) if ptd == nil { - return &headerWriteResult{}, consensus.ErrUnknownAncestor + return 0, consensus.ErrUnknownAncestor } var ( - lastNumber = headers[0].Number.Uint64() - 1 // Last successfully imported number - lastHash = headers[0].ParentHash // Last imported header hash - newTD = new(big.Int).Set(ptd) // Total difficulty of inserted chain - - lastHeader *types.Header - inserted []numberHash // Ephemeral lookup of number/hash for the chain - firstInserted = -1 // Index of the first non-ignored header + newTD = new(big.Int).Set(ptd) // Total difficulty of inserted chain + inserted []rawdb.NumberHash // Ephemeral lookup of number/hash for the chain + parentKnown = true // Set to true to force hc.HasHeader check the first iteration + batch = hc.chainDb.NewBatch() ) - - batch := hc.chainDb.NewBatch() - parentKnown := true // Set to true to force hc.HasHeader check the first iteration for i, header := range headers { var hash common.Hash // The headers have already been validated at this point, so we already @@ -188,116 +242,67 @@ func (hc *HeaderChain) writeHeaders(headers []*types.Header) (result *headerWrit hc.tdCache.Add(hash, new(big.Int).Set(newTD)) rawdb.WriteHeader(batch, header) - inserted = append(inserted, numberHash{number, hash}) + inserted = append(inserted, rawdb.NumberHash{Number: number, Hash: hash}) hc.headerCache.Add(hash, header) hc.numberCache.Add(hash, number) - if firstInserted < 0 { - firstInserted = i - } } parentKnown = alreadyKnown - lastHeader, lastHash, lastNumber = header, hash, number } - // Skip the slow disk write of all headers if interrupted. if hc.procInterrupt() { log.Debug("Premature abort during headers import") - return &headerWriteResult{}, errors.New("aborted") + return 0, errors.New("aborted") } // Commit to disk! if err := batch.Write(); err != nil { log.Crit("Failed to write headers", "error", err) } - batch.Reset() + return len(inserted), nil +} +// writeHeadersAndSetHead writes a batch of block headers and applies the last +// header as the chain head if the fork choicer says it's ok to update the chain. +// Note: This method is not concurrent-safe with inserting blocks simultaneously +// into the chain, as side effects caused by reorganisations cannot be emulated +// without the real blocks. Hence, writing headers directly should only be done +// in two scenarios: pure-header mode of operation (light clients), or properly +// separated header/block phases (non-archive clients). +func (hc *HeaderChain) writeHeadersAndSetHead(headers []*types.Header, forker *ForkChoice) (*headerWriteResult, error) { + inserted, err := hc.WriteHeaders(headers) + if err != nil { + return nil, err + } var ( - head = hc.CurrentHeader().Number.Uint64() - localTD = hc.GetTd(hc.currentHeaderHash, head) - status = SideStatTy + lastHeader = headers[len(headers)-1] + lastHash = headers[len(headers)-1].Hash() + result = &headerWriteResult{ + status: NonStatTy, + ignored: len(headers) - inserted, + imported: inserted, + lastHash: lastHash, + lastHeader: lastHeader, + } ) - // If the total difficulty is higher than our known, add it to the canonical chain - // Second clause in the if statement reduces the vulnerability to selfish mining. - // Please refer to http://www.cs.cornell.edu/~ie53/publications/btcProcFC.pdf - reorg := newTD.Cmp(localTD) > 0 - if !reorg && newTD.Cmp(localTD) == 0 { - if lastNumber < head { - reorg = true - } else if lastNumber == head { - reorg = mrand.Float64() < 0.5 + // Ask the fork choicer if the reorg is necessary + if reorg, err := forker.ReorgNeeded(hc.CurrentHeader(), lastHeader); err != nil { + return nil, err + } else if !reorg { + if inserted != 0 { + result.status = SideStatTy } + return result, nil } - // If the parent of the (first) block is already the canon header, - // we don't have to go backwards to delete canon blocks, but - // simply pile them onto the existing chain - chainAlreadyCanon := headers[0].ParentHash == hc.currentHeaderHash - if reorg { - // If the header can be added into canonical chain, adjust the - // header chain markers(canonical indexes and head header flag). - // - // Note all markers should be written atomically. - markerBatch := batch // we can reuse the batch to keep allocs down - if !chainAlreadyCanon { - // Delete any canonical number assignments above the new head - for i := lastNumber + 1; ; i++ { - hash := rawdb.ReadCanonicalHash(hc.chainDb, i) - if hash == (common.Hash{}) { - break - } - rawdb.DeleteCanonicalHash(markerBatch, i) - } - // Overwrite any stale canonical number assignments, going - // backwards from the first header in this import - var ( - headHash = headers[0].ParentHash // inserted[0].parent? - headNumber = headers[0].Number.Uint64() - 1 // inserted[0].num-1 ? - headHeader = hc.GetHeader(headHash, headNumber) - ) - for rawdb.ReadCanonicalHash(hc.chainDb, headNumber) != headHash { - rawdb.WriteCanonicalHash(markerBatch, headHash, headNumber) - headHash = headHeader.ParentHash - headNumber = headHeader.Number.Uint64() - 1 - headHeader = hc.GetHeader(headHash, headNumber) - } - // If some of the older headers were already known, but obtained canon-status - // during this import batch, then we need to write that now - // Further down, we continue writing the staus for the ones that - // were not already known - for i := 0; i < firstInserted; i++ { - hash := headers[i].Hash() - num := headers[i].Number.Uint64() - rawdb.WriteCanonicalHash(markerBatch, hash, num) - rawdb.WriteHeadHeaderHash(markerBatch, hash) - } - } - // Extend the canonical chain with the new headers - for _, hn := range inserted { - rawdb.WriteCanonicalHash(markerBatch, hn.hash, hn.number) - rawdb.WriteHeadHeaderHash(markerBatch, hn.hash) - } - if err := markerBatch.Write(); err != nil { - log.Crit("Failed to write header markers into disk", "err", err) - } - markerBatch.Reset() - // Last step update all in-memory head header markers - hc.currentHeaderHash = lastHash - hc.currentHeader.Store(types.CopyHeader(lastHeader)) - headHeaderGauge.Update(lastHeader.Number.Int64()) - - // Chain status is canonical since this insert was a reorg. - // Note that all inserts which have higher TD than existing are 'reorg'. - status = CanonStatTy + // Special case, all the inserted headers are already on the canonical + // header chain, skip the reorg operation. + if hc.GetCanonicalHash(lastHeader.Number.Uint64()) == lastHash && lastHeader.Number.Uint64() <= hc.CurrentHeader().Number.Uint64() { + return result, nil } - - if len(inserted) == 0 { - status = NonStatTy + // Apply the reorg operation + if err := hc.Reorg(headers); err != nil { + return nil, err } - return &headerWriteResult{ - status: status, - ignored: len(headers) - len(inserted), - imported: len(inserted), - lastHash: lastHash, - lastHeader: lastHeader, - }, nil + result.status = CanonStatTy + return result, nil } func (hc *HeaderChain) ValidateHeaderChain(chain []*types.Header, checkFreq int) (int, error) { @@ -357,7 +362,7 @@ func (hc *HeaderChain) ValidateHeaderChain(chain []*types.Header, checkFreq int) return 0, nil } -// InsertHeaderChain inserts the given headers. +// InsertHeaderChain inserts the given headers and does the reorganisations. // // The validity of the headers is NOT CHECKED by this method, i.e. they need to be // validated by ValidateHeaderChain before calling InsertHeaderChain. @@ -367,20 +372,19 @@ func (hc *HeaderChain) ValidateHeaderChain(chain []*types.Header, checkFreq int) // // The returned 'write status' says if the inserted headers are part of the canonical chain // or a side chain. -func (hc *HeaderChain) InsertHeaderChain(chain []*types.Header, start time.Time) (WriteStatus, error) { +func (hc *HeaderChain) InsertHeaderChain(chain []*types.Header, start time.Time, forker *ForkChoice) (WriteStatus, error) { if hc.procInterrupt() { return 0, errors.New("aborted") } - res, err := hc.writeHeaders(chain) - + res, err := hc.writeHeadersAndSetHead(chain, forker) + if err != nil { + return 0, err + } // Report some public statistics so the user has a clue what's going on context := []interface{}{ "count", res.imported, "elapsed", common.PrettyDuration(time.Since(start)), } - if err != nil { - context = append(context, "err", err) - } if last := res.lastHeader; last != nil { context = append(context, "number", last.Number, "hash", res.lastHash) if timestamp := time.Unix(int64(last.Time), 0); time.Since(timestamp) > time.Minute { @@ -495,6 +499,46 @@ func (hc *HeaderChain) GetHeaderByNumber(number uint64) *types.Header { return hc.GetHeader(hash, number) } +// GetHeadersFrom returns a contiguous segment of headers, in rlp-form, going +// backwards from the given number. +// If the 'number' is higher than the highest local header, this method will +// return a best-effort response, containing the headers that we do have. +func (hc *HeaderChain) GetHeadersFrom(number, count uint64) []rlp.RawValue { + // If the request is for future headers, we still return the portion of + // headers that we are able to serve + if current := hc.CurrentHeader().Number.Uint64(); current < number { + if count > number-current { + count -= number - current + number = current + } else { + return nil + } + } + var headers []rlp.RawValue + // If we have some of the headers in cache already, use that before going to db. + hash := rawdb.ReadCanonicalHash(hc.chainDb, number) + if hash == (common.Hash{}) { + return nil + } + for count > 0 { + header, ok := hc.headerCache.Get(hash) + if !ok { + break + } + h := header.(*types.Header) + rlpData, _ := rlp.EncodeToBytes(h) + headers = append(headers, rlpData) + hash = h.ParentHash + count-- + number-- + } + // Read remaining from db + if count > 0 { + headers = append(headers, rawdb.ReadHeaderRange(hc.chainDb, number, count)...) + } + return headers +} + func (hc *HeaderChain) GetCanonicalHash(number uint64) common.Hash { return rawdb.ReadCanonicalHash(hc.chainDb, number) } diff --git a/core/headerchain_test.go b/core/headerchain_test.go index f3e40b6213..ed0522671f 100644 --- a/core/headerchain_test.go +++ b/core/headerchain_test.go @@ -51,10 +51,10 @@ func verifyUnbrokenCanonchain(hc *HeaderChain) error { return nil } -func testInsert(t *testing.T, hc *HeaderChain, chain []*types.Header, wantStatus WriteStatus, wantErr error) { +func testInsert(t *testing.T, hc *HeaderChain, chain []*types.Header, wantStatus WriteStatus, wantErr error, forker *ForkChoice) { t.Helper() - status, err := hc.InsertHeaderChain(chain, time.Now()) + status, err := hc.InsertHeaderChain(chain, time.Now(), forker) if status != wantStatus { t.Errorf("wrong write status from InsertHeaderChain: got %v, want %v", status, wantStatus) } @@ -80,37 +80,38 @@ func TestHeaderInsertion(t *testing.T) { } // chain A: G->A1->A2...A128 chainA := makeHeaderChain(genesis.Header(), 128, ethash.NewFaker(), db, 10) - // chain B: G->A1->B2...B128 + // chain B: G->A1->B1...B128 chainB := makeHeaderChain(chainA[0], 128, ethash.NewFaker(), db, 10) log.Root().SetHandler(log.StdoutHandler) + forker := NewForkChoice(hc, nil) // Inserting 64 headers on an empty chain, expecting // 1 callbacks, 1 canon-status, 0 sidestatus, - testInsert(t, hc, chainA[:64], CanonStatTy, nil) + testInsert(t, hc, chainA[:64], CanonStatTy, nil, forker) // Inserting 64 identical headers, expecting // 0 callbacks, 0 canon-status, 0 sidestatus, - testInsert(t, hc, chainA[:64], NonStatTy, nil) + testInsert(t, hc, chainA[:64], NonStatTy, nil, forker) // Inserting the same some old, some new headers // 1 callbacks, 1 canon, 0 side - testInsert(t, hc, chainA[32:96], CanonStatTy, nil) + testInsert(t, hc, chainA[32:96], CanonStatTy, nil, forker) // Inserting side blocks, but not overtaking the canon chain - testInsert(t, hc, chainB[0:32], SideStatTy, nil) + testInsert(t, hc, chainB[0:32], SideStatTy, nil, forker) // Inserting more side blocks, but we don't have the parent - testInsert(t, hc, chainB[34:36], NonStatTy, consensus.ErrUnknownAncestor) + testInsert(t, hc, chainB[34:36], NonStatTy, consensus.ErrUnknownAncestor, forker) // Inserting more sideblocks, overtaking the canon chain - testInsert(t, hc, chainB[32:97], CanonStatTy, nil) + testInsert(t, hc, chainB[32:97], CanonStatTy, nil, forker) // Inserting more A-headers, taking back the canonicality - testInsert(t, hc, chainA[90:100], CanonStatTy, nil) + testInsert(t, hc, chainA[90:100], CanonStatTy, nil, forker) // And B becomes canon again - testInsert(t, hc, chainB[97:107], CanonStatTy, nil) + testInsert(t, hc, chainB[97:107], CanonStatTy, nil, forker) // And B becomes even longer - testInsert(t, hc, chainB[107:128], CanonStatTy, nil) + testInsert(t, hc, chainB[107:128], CanonStatTy, nil, forker) } diff --git a/core/rawdb/accessors_chain.go b/core/rawdb/accessors_chain.go index 332a7016d1..2c285c60e7 100644 --- a/core/rawdb/accessors_chain.go +++ b/core/rawdb/accessors_chain.go @@ -35,20 +35,15 @@ import ( // ReadCanonicalHash retrieves the hash assigned to a canonical block number. func ReadCanonicalHash(db ethdb.Reader, number uint64) common.Hash { - data, _ := db.Ancient(freezerHashTable, number) - if len(data) == 0 { - data, _ = db.Get(headerHashKey(number)) - // In the background freezer is moving data from leveldb to flatten files. - // So during the first check for ancient db, the data is not yet in there, - // but when we reach into leveldb, the data was already moved. That would - // result in a not found error. + var data []byte + db.ReadAncients(func(reader ethdb.AncientReader) error { + data, _ = reader.Ancient(freezerHashTable, number) if len(data) == 0 { - data, _ = db.Ancient(freezerHashTable, number) + // Get it by hash from leveldb + data, _ = db.Get(headerHashKey(number)) } - } - if len(data) == 0 { - return common.Hash{} - } + return nil + }) return common.BytesToHash(data) } @@ -247,24 +242,6 @@ func WriteLastPivotNumber(db ethdb.KeyValueWriter, pivot uint64) { } } -// ReadFastTrieProgress retrieves the number of tries nodes fast synced to allow -// reporting correct numbers across restarts. -func ReadFastTrieProgress(db ethdb.KeyValueReader) uint64 { - data, _ := db.Get(fastTrieProgressKey) - if len(data) == 0 { - return 0 - } - return new(big.Int).SetBytes(data).Uint64() -} - -// WriteFastTrieProgress stores the fast sync trie process counter to support -// retrieving it across restarts. -func WriteFastTrieProgress(db ethdb.KeyValueWriter, count uint64) { - if err := db.Put(fastTrieProgressKey, new(big.Int).SetUint64(count).Bytes()); err != nil { - log.Crit("Failed to store fast sync trie progress", "err", err) - } -} - // ReadTxIndexTail retrieves the number of oldest indexed block // whose transaction indices has been indexed. If the corresponding entry // is non-existent in database it means the indexing has been finished. @@ -302,34 +279,77 @@ func WriteFastTxLookupLimit(db ethdb.KeyValueWriter, number uint64) { } } +// ReadHeaderRange returns the rlp-encoded headers, starting at 'number', and going +// backwards towards genesis. This method assumes that the caller already has +// placed a cap on count, to prevent DoS issues. +// Since this method operates in head-towards-genesis mode, it will return an empty +// slice in case the head ('number') is missing. Hence, the caller must ensure that +// the head ('number') argument is actually an existing header. +// +// N.B: Since the input is a number, as opposed to a hash, it's implicit that +// this method only operates on canon headers. +func ReadHeaderRange(db ethdb.Reader, number uint64, count uint64) []rlp.RawValue { + var rlpHeaders []rlp.RawValue + if count == 0 { + return rlpHeaders + } + i := number + if count-1 > number { + // It's ok to request block 0, 1 item + count = number + 1 + } + limit, _ := db.Ancients() + // First read live blocks + if i >= limit { + // If we need to read live blocks, we need to figure out the hash first + hash := ReadCanonicalHash(db, number) + for ; i >= limit && count > 0; i-- { + if data, _ := db.Get(headerKey(i, hash)); len(data) > 0 { + rlpHeaders = append(rlpHeaders, data) + // Get the parent hash for next query + hash = types.HeaderParentHashFromRLP(data) + } else { + break // Maybe got moved to ancients + } + count-- + } + } + if count == 0 { + return rlpHeaders + } + // read remaining from ancients + max := count * 700 + data, err := db.AncientRange(freezerHeaderTable, i+1-count, count, max) + if err == nil && uint64(len(data)) == count { + // the data is on the order [h, h+1, .., n] -- reordering needed + for i := range data { + rlpHeaders = append(rlpHeaders, data[len(data)-1-i]) + } + } + return rlpHeaders +} + // ReadHeaderRLP retrieves a block header in its raw RLP database encoding. func ReadHeaderRLP(db ethdb.Reader, hash common.Hash, number uint64) rlp.RawValue { - // First try to look up the data in ancient database. Extra hash - // comparison is necessary since ancient database only maintains - // the canonical data. - data, _ := db.Ancient(freezerHeaderTable, number) - if len(data) > 0 && crypto.Keccak256Hash(data) == hash { - return data - } - // Then try to look up the data in leveldb. - data, _ = db.Get(headerKey(number, hash)) - if len(data) > 0 { - return data - } - // In the background freezer is moving data from leveldb to flatten files. - // So during the first check for ancient db, the data is not yet in there, - // but when we reach into leveldb, the data was already moved. That would - // result in a not found error. - data, _ = db.Ancient(freezerHeaderTable, number) - if len(data) > 0 && crypto.Keccak256Hash(data) == hash { - return data - } - return nil // Can't find the data anywhere. + var data []byte + db.ReadAncients(func(reader ethdb.AncientReader) error { + // First try to look up the data in ancient database. Extra hash + // comparison is necessary since ancient database only maintains + // the canonical data. + data, _ = reader.Ancient(freezerHeaderTable, number) + if len(data) > 0 && crypto.Keccak256Hash(data) == hash { + return nil + } + // If not, try reading from leveldb + data, _ = db.Get(headerKey(number, hash)) + return nil + }) + return data } // HasHeader verifies the existence of a block header corresponding to the hash. func HasHeader(db ethdb.Reader, hash common.Hash, number uint64) bool { - if has, err := db.Ancient(freezerHashTable, number); err == nil && common.BytesToHash(has) == hash { + if isCanon(db, number, hash) { return true } if has, err := db.Has(headerKey(number, hash)); !has || err != nil { @@ -389,53 +409,51 @@ func deleteHeaderWithoutNumber(db ethdb.KeyValueWriter, hash common.Hash, number } } +// isCanon is an internal utility method, to check whether the given number/hash +// is part of the ancient (canon) set. +func isCanon(reader ethdb.AncientReader, number uint64, hash common.Hash) bool { + h, err := reader.Ancient(freezerHashTable, number) + if err != nil { + return false + } + return bytes.Equal(h, hash[:]) +} + // ReadBodyRLP retrieves the block body (transactions and uncles) in RLP encoding. func ReadBodyRLP(db ethdb.Reader, hash common.Hash, number uint64) rlp.RawValue { // First try to look up the data in ancient database. Extra hash // comparison is necessary since ancient database only maintains // the canonical data. - data, _ := db.Ancient(freezerBodiesTable, number) - if len(data) > 0 { - h, _ := db.Ancient(freezerHashTable, number) - if common.BytesToHash(h) == hash { - return data + var data []byte + db.ReadAncients(func(reader ethdb.AncientReader) error { + // Check if the data is in ancients + if isCanon(reader, number, hash) { + data, _ = reader.Ancient(freezerBodiesTable, number) + return nil } - } - // Then try to look up the data in leveldb. - data, _ = db.Get(blockBodyKey(number, hash)) - if len(data) > 0 { - return data - } - // In the background freezer is moving data from leveldb to flatten files. - // So during the first check for ancient db, the data is not yet in there, - // but when we reach into leveldb, the data was already moved. That would - // result in a not found error. - data, _ = db.Ancient(freezerBodiesTable, number) - if len(data) > 0 { - h, _ := db.Ancient(freezerHashTable, number) - if common.BytesToHash(h) == hash { - return data - } - } - return nil // Can't find the data anywhere. + // If not, try reading from leveldb + data, _ = db.Get(blockBodyKey(number, hash)) + return nil + }) + return data } // ReadCanonicalBodyRLP retrieves the block body (transactions and uncles) for the canonical // block at number, in RLP encoding. func ReadCanonicalBodyRLP(db ethdb.Reader, number uint64) rlp.RawValue { - // If it's an ancient one, we don't need the canonical hash - data, _ := db.Ancient(freezerBodiesTable, number) - if len(data) == 0 { - // Need to get the hash - data, _ = db.Get(blockBodyKey(number, ReadCanonicalHash(db, number))) - // In the background freezer is moving data from leveldb to flatten files. - // So during the first check for ancient db, the data is not yet in there, - // but when we reach into leveldb, the data was already moved. That would - // result in a not found error. - if len(data) == 0 { - data, _ = db.Ancient(freezerBodiesTable, number) + var data []byte + db.ReadAncients(func(reader ethdb.AncientReader) error { + data, _ = reader.Ancient(freezerBodiesTable, number) + if len(data) > 0 { + return nil } - } + // Block is not in ancients, read from leveldb by hash and number. + // Note: ReadCanonicalHash cannot be used here because it also + // calls ReadAncients internally. + hash, _ := db.Get(headerHashKey(number)) + data, _ = db.Get(blockBodyKey(number, common.BytesToHash(hash))) + return nil + }) return data } @@ -448,7 +466,7 @@ func WriteBodyRLP(db ethdb.KeyValueWriter, hash common.Hash, number uint64, rlp // HasBody verifies the existence of a block body corresponding to the hash. func HasBody(db ethdb.Reader, hash common.Hash, number uint64) bool { - if has, err := db.Ancient(freezerHashTable, number); err == nil && common.BytesToHash(has) == hash { + if isCanon(db, number, hash) { return true } if has, err := db.Has(blockBodyKey(number, hash)); !has || err != nil { @@ -489,33 +507,18 @@ func DeleteBody(db ethdb.KeyValueWriter, hash common.Hash, number uint64) { // ReadTdRLP retrieves a block's total difficulty corresponding to the hash in RLP encoding. func ReadTdRLP(db ethdb.Reader, hash common.Hash, number uint64) rlp.RawValue { - // First try to look up the data in ancient database. Extra hash - // comparison is necessary since ancient database only maintains - // the canonical data. - data, _ := db.Ancient(freezerDifficultyTable, number) - if len(data) > 0 { - h, _ := db.Ancient(freezerHashTable, number) - if common.BytesToHash(h) == hash { - return data + var data []byte + db.ReadAncients(func(reader ethdb.AncientReader) error { + // Check if the data is in ancients + if isCanon(reader, number, hash) { + data, _ = reader.Ancient(freezerDifficultyTable, number) + return nil } - } - // Then try to look up the data in leveldb. - data, _ = db.Get(headerTDKey(number, hash)) - if len(data) > 0 { - return data - } - // In the background freezer is moving data from leveldb to flatten files. - // So during the first check for ancient db, the data is not yet in there, - // but when we reach into leveldb, the data was already moved. That would - // result in a not found error. - data, _ = db.Ancient(freezerDifficultyTable, number) - if len(data) > 0 { - h, _ := db.Ancient(freezerHashTable, number) - if common.BytesToHash(h) == hash { - return data - } - } - return nil // Can't find the data anywhere. + // If not, try reading from leveldb + data, _ = db.Get(headerTDKey(number, hash)) + return nil + }) + return data } // ReadTd retrieves a block's total difficulty corresponding to the hash. @@ -553,7 +556,7 @@ func DeleteTd(db ethdb.KeyValueWriter, hash common.Hash, number uint64) { // HasReceipts verifies the existence of all the transaction receipts belonging // to a block. func HasReceipts(db ethdb.Reader, hash common.Hash, number uint64) bool { - if has, err := db.Ancient(freezerHashTable, number); err == nil && common.BytesToHash(has) == hash { + if isCanon(db, number, hash) { return true } if has, err := db.Has(blockReceiptsKey(number, hash)); !has || err != nil { @@ -564,33 +567,18 @@ func HasReceipts(db ethdb.Reader, hash common.Hash, number uint64) bool { // ReadReceiptsRLP retrieves all the transaction receipts belonging to a block in RLP encoding. func ReadReceiptsRLP(db ethdb.Reader, hash common.Hash, number uint64) rlp.RawValue { - // First try to look up the data in ancient database. Extra hash - // comparison is necessary since ancient database only maintains - // the canonical data. - data, _ := db.Ancient(freezerReceiptTable, number) - if len(data) > 0 { - h, _ := db.Ancient(freezerHashTable, number) - if common.BytesToHash(h) == hash { - return data + var data []byte + db.ReadAncients(func(reader ethdb.AncientReader) error { + // Check if the data is in ancients + if isCanon(reader, number, hash) { + data, _ = reader.Ancient(freezerReceiptTable, number) + return nil } - } - // Then try to look up the data in leveldb. - data, _ = db.Get(blockReceiptsKey(number, hash)) - if len(data) > 0 { - return data - } - // In the background freezer is moving data from leveldb to flatten files. - // So during the first check for ancient db, the data is not yet in there, - // but when we reach into leveldb, the data was already moved. That would - // result in a not found error. - data, _ = db.Ancient(freezerReceiptTable, number) - if len(data) > 0 { - h, _ := db.Ancient(freezerHashTable, number) - if common.BytesToHash(h) == hash { - return data - } - } - return nil // Can't find the data anywhere. + // If not, try reading from leveldb + data, _ = db.Get(blockReceiptsKey(number, hash)) + return nil + }) + return data } // ReadRawReceipts retrieves all the transaction receipts belonging to a block. @@ -716,7 +704,7 @@ func deriveLogFields(receipts []*receiptLogs, hash common.Hash, number uint64, t // ReadLogs retrieves the logs for all transactions in a block. The log fields // are populated with metadata. In case the receipts or the block body // are not found, a nil is returned. -func ReadLogs(db ethdb.Reader, hash common.Hash, number uint64) [][]*types.Log { +func ReadLogs(db ethdb.Reader, hash common.Hash, number uint64, config *params.ChainConfig) [][]*types.Log { // Retrieve the flattened receipt slice data := ReadReceiptsRLP(db, hash, number) if len(data) == 0 { @@ -724,6 +712,11 @@ func ReadLogs(db ethdb.Reader, hash common.Hash, number uint64) [][]*types.Log { } receipts := []*receiptLogs{} if err := rlp.DecodeBytes(data, &receipts); err != nil { + // Receipts might be in the legacy format, try decoding that. + // TODO: to be removed after users migrated + if logs := readLegacyLogs(db, hash, number, config); logs != nil { + return logs + } log.Error("Invalid receipt array RLP", "hash", hash, "err", err) return nil } @@ -744,6 +737,21 @@ func ReadLogs(db ethdb.Reader, hash common.Hash, number uint64) [][]*types.Log { return logs } +// readLegacyLogs is a temporary workaround for when trying to read logs +// from a block which has its receipt stored in the legacy format. It'll +// be removed after users have migrated their freezer databases. +func readLegacyLogs(db ethdb.Reader, hash common.Hash, number uint64, config *params.ChainConfig) [][]*types.Log { + receipts := ReadReceipts(db, hash, number, config) + if receipts == nil { + return nil + } + logs := make([][]*types.Log, len(receipts)) + for i, receipt := range receipts { + logs[i] = receipt.Logs + } + return logs +} + // ReadBlock retrieves an entire block corresponding to the hash, assembling it // back from the stored header and body. If either the header or body could not // be retrieved nil is returned. diff --git a/core/rawdb/accessors_chain_test.go b/core/rawdb/accessors_chain_test.go index eb1951d326..d57b9899bf 100644 --- a/core/rawdb/accessors_chain_test.go +++ b/core/rawdb/accessors_chain_test.go @@ -744,7 +744,7 @@ func TestReadLogs(t *testing.T) { // Insert the receipt slice into the database and check presence WriteReceipts(db, hash, 0, receipts) - logs := ReadLogs(db, hash, 0) + logs := ReadLogs(db, hash, 0, params.TestChainConfig) if len(logs) == 0 { t.Fatalf("no logs returned") } @@ -883,3 +883,67 @@ func BenchmarkDecodeRLPLogs(b *testing.B) { } }) } + +func TestHeadersRLPStorage(t *testing.T) { + // Have N headers in the freezer + frdir, err := ioutil.TempDir("", "") + if err != nil { + t.Fatalf("failed to create temp freezer dir: %v", err) + } + defer os.Remove(frdir) + + db, err := NewDatabaseWithFreezer(NewMemoryDatabase(), frdir, "", false) + if err != nil { + t.Fatalf("failed to create database with ancient backend") + } + defer db.Close() + // Create blocks + var chain []*types.Block + var pHash common.Hash + for i := 0; i < 100; i++ { + block := types.NewBlockWithHeader(&types.Header{ + Number: big.NewInt(int64(i)), + Extra: []byte("test block"), + UncleHash: types.EmptyUncleHash, + TxHash: types.EmptyRootHash, + ReceiptHash: types.EmptyRootHash, + ParentHash: pHash, + }) + chain = append(chain, block) + pHash = block.Hash() + } + var receipts []types.Receipts = make([]types.Receipts, 100) + // Write first half to ancients + WriteAncientBlocks(db, chain[:50], receipts[:50], big.NewInt(100)) + // Write second half to db + for i := 50; i < 100; i++ { + WriteCanonicalHash(db, chain[i].Hash(), chain[i].NumberU64()) + WriteBlock(db, chain[i]) + } + checkSequence := func(from, amount int) { + headersRlp := ReadHeaderRange(db, uint64(from), uint64(amount)) + if have, want := len(headersRlp), amount; have != want { + t.Fatalf("have %d headers, want %d", have, want) + } + for i, headerRlp := range headersRlp { + var header types.Header + if err := rlp.DecodeBytes(headerRlp, &header); err != nil { + t.Fatal(err) + } + if have, want := header.Number.Uint64(), uint64(from-i); have != want { + t.Fatalf("wrong number, have %d want %d", have, want) + } + } + } + checkSequence(99, 20) // Latest block and 19 parents + checkSequence(99, 50) // Latest block -> all db blocks + checkSequence(99, 51) // Latest block -> one from ancients + checkSequence(99, 52) // Latest blocks -> two from ancients + checkSequence(50, 2) // One from db, one from ancients + checkSequence(49, 1) // One from ancients + checkSequence(49, 50) // All ancient ones + checkSequence(99, 100) // All blocks + checkSequence(0, 1) // Only genesis + checkSequence(1, 1) // Only block 1 + checkSequence(1, 2) // Genesis + block 1 +} diff --git a/core/rawdb/accessors_metadata.go b/core/rawdb/accessors_metadata.go index 079e335fa6..3b0fcf0f2d 100644 --- a/core/rawdb/accessors_metadata.go +++ b/core/rawdb/accessors_metadata.go @@ -138,3 +138,38 @@ func PopUncleanShutdownMarker(db ethdb.KeyValueStore) { log.Warn("Failed to clear unclean-shutdown marker", "err", err) } } + +// UpdateUncleanShutdownMarker updates the last marker's timestamp to now. +func UpdateUncleanShutdownMarker(db ethdb.KeyValueStore) { + var uncleanShutdowns crashList + // Read old data + if data, err := db.Get(uncleanShutdownKey); err != nil { + log.Warn("Error reading unclean shutdown markers", "error", err) + } else if err := rlp.DecodeBytes(data, &uncleanShutdowns); err != nil { + log.Warn("Error decoding unclean shutdown markers", "error", err) + } + // This shouldn't happen because we push a marker on Backend instantiation + count := len(uncleanShutdowns.Recent) + if count == 0 { + log.Warn("No unclean shutdown marker to update") + return + } + uncleanShutdowns.Recent[count-1] = uint64(time.Now().Unix()) + data, _ := rlp.EncodeToBytes(uncleanShutdowns) + if err := db.Put(uncleanShutdownKey, data); err != nil { + log.Warn("Failed to write unclean-shutdown marker", "err", err) + } +} + +// ReadTransitionStatus retrieves the eth2 transition status from the database +func ReadTransitionStatus(db ethdb.KeyValueReader) []byte { + data, _ := db.Get(transitionStatusKey) + return data +} + +// WriteTransitionStatus stores the eth2 transition status to the database +func WriteTransitionStatus(db ethdb.KeyValueWriter, data []byte) { + if err := db.Put(transitionStatusKey, data); err != nil { + log.Crit("Failed to store the eth2 transition status", "err", err) + } +} diff --git a/core/rawdb/accessors_snapshot.go b/core/rawdb/accessors_snapshot.go index 88446e0792..1c828662c1 100644 --- a/core/rawdb/accessors_snapshot.go +++ b/core/rawdb/accessors_snapshot.go @@ -47,7 +47,7 @@ func DeleteSnapshotDisabled(db ethdb.KeyValueWriter) { // ReadSnapshotRoot retrieves the root of the block whose state is contained in // the persisted snapshot. func ReadSnapshotRoot(db ethdb.KeyValueReader) common.Hash { - data, _ := db.Get(snapshotRootKey) + data, _ := db.Get(SnapshotRootKey) if len(data) != common.HashLength { return common.Hash{} } @@ -57,7 +57,7 @@ func ReadSnapshotRoot(db ethdb.KeyValueReader) common.Hash { // WriteSnapshotRoot stores the root of the block whose state is contained in // the persisted snapshot. func WriteSnapshotRoot(db ethdb.KeyValueWriter, root common.Hash) { - if err := db.Put(snapshotRootKey, root[:]); err != nil { + if err := db.Put(SnapshotRootKey, root[:]); err != nil { log.Crit("Failed to store snapshot root", "err", err) } } @@ -67,7 +67,7 @@ func WriteSnapshotRoot(db ethdb.KeyValueWriter, root common.Hash) { // be used during updates, so a crash or failure will mark the entire snapshot // invalid. func DeleteSnapshotRoot(db ethdb.KeyValueWriter) { - if err := db.Delete(snapshotRootKey); err != nil { + if err := db.Delete(SnapshotRootKey); err != nil { log.Crit("Failed to remove snapshot root", "err", err) } } @@ -208,11 +208,3 @@ func WriteSnapshotSyncStatus(db ethdb.KeyValueWriter, status []byte) { log.Crit("Failed to store snapshot sync status", "err", err) } } - -// DeleteSnapshotSyncStatus deletes the serialized sync status saved at the last -// shutdown -func DeleteSnapshotSyncStatus(db ethdb.KeyValueWriter) { - if err := db.Delete(snapshotSyncStatusKey); err != nil { - log.Crit("Failed to remove snapshot sync status", "err", err) - } -} diff --git a/core/rawdb/chain_iterator.go b/core/rawdb/chain_iterator.go index ad222005be..0d5a5ee6a7 100644 --- a/core/rawdb/chain_iterator.go +++ b/core/rawdb/chain_iterator.go @@ -44,24 +44,29 @@ func InitDatabaseFromFreezer(db ethdb.Database) { logged = start.Add(-7 * time.Second) // Unindex during import is fast, don't double log hash common.Hash ) - for i := uint64(0); i < frozen; i++ { - // Since the freezer has all data in sequential order on a file, - // it would be 'neat' to read more data in one go, and let the - // freezerdb return N items (e.g up to 1000 items per go) - // That would require an API change in Ancients though - if h, err := db.Ancient(freezerHashTable, i); err != nil { + for i := uint64(0); i < frozen; { + // We read 100K hashes at a time, for a total of 3.2M + count := uint64(100_000) + if i+count > frozen { + count = frozen - i + } + data, err := db.AncientRange(freezerHashTable, i, count, 32*count) + if err != nil { log.Crit("Failed to init database from freezer", "err", err) - } else { + } + for j, h := range data { + number := i + uint64(j) hash = common.BytesToHash(h) - } - WriteHeaderNumber(batch, hash, i) - // If enough data was accumulated in memory or we're at the last block, dump to disk - if batch.ValueSize() > ethdb.IdealBatchSize { - if err := batch.Write(); err != nil { - log.Crit("Failed to write data to db", "err", err) + WriteHeaderNumber(batch, hash, number) + // If enough data was accumulated in memory or we're at the last block, dump to disk + if batch.ValueSize() > ethdb.IdealBatchSize { + if err := batch.Write(); err != nil { + log.Crit("Failed to write data to db", "err", err) + } + batch.Reset() } - batch.Reset() } + i += uint64(len(data)) // If we've spent too much time already, notify the user of what we're doing if time.Since(logged) > 8*time.Second { log.Info("Initializing database from freezer", "total", frozen, "number", i, "hash", hash, "elapsed", common.PrettyDuration(time.Since(start))) @@ -242,7 +247,8 @@ func indexTransactions(db ethdb.Database, from uint64, to uint64, interrupt chan } } -// IndexTransactions creates txlookup indices of the specified block range. +// IndexTransactions creates txlookup indices of the specified block range. The from +// is included while to is excluded. // // This function iterates canonical chain in reverse order, it has one main advantage: // We can write tx index tail flag periodically even without the whole indexing @@ -334,6 +340,7 @@ func unindexTransactions(db ethdb.Database, from uint64, to uint64, interrupt ch } // UnindexTransactions removes txlookup indices of the specified block range. +// The from is included while to is excluded. // // There is a passed channel, the whole procedure will be interrupted if any // signal received. diff --git a/core/rawdb/database.go b/core/rawdb/database.go index 0e116ef999..5ef64d26a2 100644 --- a/core/rawdb/database.go +++ b/core/rawdb/database.go @@ -89,8 +89,8 @@ func (db *nofreezedb) Ancient(kind string, number uint64) ([]byte, error) { return nil, errNotSupported } -// ReadAncients returns an error as we don't have a backing chain freezer. -func (db *nofreezedb) ReadAncients(kind string, start, max, maxByteSize uint64) ([][]byte, error) { +// AncientRange returns an error as we don't have a backing chain freezer. +func (db *nofreezedb) AncientRange(kind string, start, max, maxByteSize uint64) ([][]byte, error) { return nil, errNotSupported } @@ -119,6 +119,22 @@ func (db *nofreezedb) Sync() error { return errNotSupported } +func (db *nofreezedb) ReadAncients(fn func(reader ethdb.AncientReader) error) (err error) { + // Unlike other ancient-related methods, this method does not return + // errNotSupported when invoked. + // The reason for this is that the caller might want to do several things: + // 1. Check if something is in freezer, + // 2. If not, check leveldb. + // + // This will work, since the ancient-checks inside 'fn' will return errors, + // and the leveldb work will continue. + // + // If we instead were to return errNotSupported here, then the caller would + // have to explicitly check for that, having an extra clause to do the + // non-ancient operations. + return fn(db) +} + // NewDatabase creates a high level database on top of a given key-value data // store without a freezer moving immutable chain segments into cold storage. func NewDatabase(db ethdb.KeyValueStore) ethdb.Database { @@ -355,7 +371,7 @@ func InspectDatabase(db ethdb.Database, keyPrefix, keyStart []byte) error { accountSnaps.Add(size) case bytes.HasPrefix(key, SnapshotStoragePrefix) && len(key) == (len(SnapshotStoragePrefix)+2*common.HashLength): storageSnaps.Add(size) - case bytes.HasPrefix(key, preimagePrefix) && len(key) == (len(preimagePrefix)+common.HashLength): + case bytes.HasPrefix(key, PreimagePrefix) && len(key) == (len(PreimagePrefix)+common.HashLength): preimages.Add(size) case bytes.HasPrefix(key, configPrefix) && len(key) == (len(configPrefix)+common.HashLength): metadata.Add(size) @@ -377,9 +393,9 @@ func InspectDatabase(db ethdb.Database, keyPrefix, keyStart []byte) error { var accounted bool for _, meta := range [][]byte{ databaseVersionKey, headHeaderKey, headBlockKey, headFastBlockKey, lastPivotKey, - fastTrieProgressKey, snapshotDisabledKey, snapshotRootKey, snapshotJournalKey, + fastTrieProgressKey, snapshotDisabledKey, SnapshotRootKey, snapshotJournalKey, snapshotGeneratorKey, snapshotRecoveryKey, txIndexTailKey, fastTxLookupLimitKey, - uncleanShutdownKey, badBlockKey, + uncleanShutdownKey, badBlockKey, transitionStatusKey, } { if bytes.Equal(key, meta) { metadata.Add(size) diff --git a/core/rawdb/freezer.go b/core/rawdb/freezer.go index 0d4f0fa90a..94ceccc34a 100644 --- a/core/rawdb/freezer.go +++ b/core/rawdb/freezer.go @@ -80,8 +80,9 @@ type freezer struct { frozen uint64 // Number of blocks already frozen threshold uint64 // Number of recent blocks not to freeze (params.FullImmutabilityThreshold apart from tests) - // This lock synchronizes writers and the truncate operation. - writeLock sync.Mutex + // This lock synchronizes writers and the truncate operation, as well as + // the "atomic" (batched) read operations. + writeLock sync.RWMutex writeBatch *freezerBatch readonly bool @@ -213,12 +214,12 @@ func (f *freezer) Ancient(kind string, number uint64) ([]byte, error) { return nil, errUnknownTable } -// ReadAncients retrieves multiple items in sequence, starting from the index 'start'. +// AncientRange retrieves multiple items in sequence, starting from the index 'start'. // It will return // - at most 'max' items, // - at least 1 item (even if exceeding the maxByteSize), but will otherwise // return as many items as fit into maxByteSize. -func (f *freezer) ReadAncients(kind string, start, count, maxBytes uint64) ([][]byte, error) { +func (f *freezer) AncientRange(kind string, start, count, maxBytes uint64) ([][]byte, error) { if table := f.tables[kind]; table != nil { return table.RetrieveItems(start, count, maxBytes) } @@ -234,8 +235,8 @@ func (f *freezer) Ancients() (uint64, error) { func (f *freezer) AncientSize(kind string) (uint64, error) { // This needs the write lock to avoid data races on table fields. // Speed doesn't matter here, AncientSize is for debugging. - f.writeLock.Lock() - defer f.writeLock.Unlock() + f.writeLock.RLock() + defer f.writeLock.RUnlock() if table := f.tables[kind]; table != nil { return table.size() @@ -243,6 +244,14 @@ func (f *freezer) AncientSize(kind string) (uint64, error) { return 0, errUnknownTable } +// ReadAncients runs the given read operation while ensuring that no writes take place +// on the underlying freezer. +func (f *freezer) ReadAncients(fn func(ethdb.AncientReader) error) (err error) { + f.writeLock.RLock() + defer f.writeLock.RUnlock() + return fn(f) +} + // ModifyAncients runs the given write operation. func (f *freezer) ModifyAncients(fn func(ethdb.AncientWriteOp) error) (writeSize int64, err error) { if f.readonly { diff --git a/core/rawdb/freezer_batch.go b/core/rawdb/freezer_batch.go index 8297c0ac1d..762fa8f25f 100644 --- a/core/rawdb/freezer_batch.go +++ b/core/rawdb/freezer_batch.go @@ -116,7 +116,7 @@ func (batch *freezerTableBatch) reset() { // existing data. func (batch *freezerTableBatch) Append(item uint64, data interface{}) error { if item != batch.curItem { - return errOutOrderInsertion + return fmt.Errorf("%w: have %d want %d", errOutOrderInsertion, item, batch.curItem) } // Encode the item. @@ -136,7 +136,7 @@ func (batch *freezerTableBatch) Append(item uint64, data interface{}) error { // existing data. func (batch *freezerTableBatch) AppendRaw(item uint64, blob []byte) error { if item != batch.curItem { - return errOutOrderInsertion + return fmt.Errorf("%w: have %d want %d", errOutOrderInsertion, item, batch.curItem) } encItem := blob diff --git a/core/rawdb/freezer_test.go b/core/rawdb/freezer_test.go index 7359131c89..fa84f80306 100644 --- a/core/rawdb/freezer_test.go +++ b/core/rawdb/freezer_test.go @@ -246,7 +246,7 @@ func TestFreezerConcurrentModifyTruncate(t *testing.T) { if truncateErr != nil { t.Fatal("concurrent truncate failed:", err) } - if !(modifyErr == nil || modifyErr == errOutOrderInsertion) { + if !(errors.Is(modifyErr, nil) || errors.Is(modifyErr, errOutOrderInsertion)) { t.Fatal("wrong error from concurrent modify:", modifyErr) } checkAncientCount(t, f, "test", 10) diff --git a/core/rawdb/schema.go b/core/rawdb/schema.go index a6c9888522..942b8199e8 100644 --- a/core/rawdb/schema.go +++ b/core/rawdb/schema.go @@ -48,8 +48,8 @@ var ( // snapshotDisabledKey flags that the snapshot should not be maintained due to initial sync. snapshotDisabledKey = []byte("SnapshotDisabled") - // snapshotRootKey tracks the hash of the last snapshot. - snapshotRootKey = []byte("SnapshotRoot") + // SnapshotRootKey tracks the hash of the last snapshot. + SnapshotRootKey = []byte("SnapshotRoot") // snapshotJournalKey tracks the in-memory diff layers across restarts. snapshotJournalKey = []byte("SnapshotJournal") @@ -75,6 +75,9 @@ var ( // uncleanShutdownKey tracks the list of local crashes uncleanShutdownKey = []byte("unclean-shutdown") // config prefix for the db + // transitionStatusKey tracks the eth2 transition status. + transitionStatusKey = []byte("eth2-transition") + // Data item prefixes (use single byte to avoid mixing data types, avoid `i`, used for indexes). headerPrefix = []byte("h") // headerPrefix + num (uint64 big endian) + hash -> header headerTDSuffix = []byte("t") // headerPrefix + num (uint64 big endian) + hash + headerTDSuffix -> td @@ -90,7 +93,7 @@ var ( SnapshotStoragePrefix = []byte("o") // SnapshotStoragePrefix + account hash + storage hash -> storage trie value CodePrefix = []byte("c") // CodePrefix + code hash -> account code - preimagePrefix = []byte("secure-key-") // preimagePrefix + hash -> preimage + PreimagePrefix = []byte("secure-key-") // PreimagePrefix + hash -> preimage configPrefix = []byte("ethereum-config-") // config prefix for the db // Chain index prefixes (use `i` + single byte to avoid mixing data types). @@ -208,9 +211,9 @@ func bloomBitsKey(bit uint, section uint64, hash common.Hash) []byte { return key } -// preimageKey = preimagePrefix + hash +// preimageKey = PreimagePrefix + hash func preimageKey(hash common.Hash) []byte { - return append(preimagePrefix, hash.Bytes()...) + return append(PreimagePrefix, hash.Bytes()...) } // codeKey = CodePrefix + hash diff --git a/core/rawdb/table.go b/core/rawdb/table.go index 02e23b5174..91fc31b660 100644 --- a/core/rawdb/table.go +++ b/core/rawdb/table.go @@ -62,10 +62,10 @@ func (t *table) Ancient(kind string, number uint64) ([]byte, error) { return t.db.Ancient(kind, number) } -// ReadAncients is a noop passthrough that just forwards the request to the underlying +// AncientRange is a noop passthrough that just forwards the request to the underlying // database. -func (t *table) ReadAncients(kind string, start, count, maxBytes uint64) ([][]byte, error) { - return t.db.ReadAncients(kind, start, count, maxBytes) +func (t *table) AncientRange(kind string, start, count, maxBytes uint64) ([][]byte, error) { + return t.db.AncientRange(kind, start, count, maxBytes) } // Ancients is a noop passthrough that just forwards the request to the underlying @@ -85,6 +85,10 @@ func (t *table) ModifyAncients(fn func(ethdb.AncientWriteOp) error) (int64, erro return t.db.ModifyAncients(fn) } +func (t *table) ReadAncients(fn func(reader ethdb.AncientReader) error) (err error) { + return t.db.ReadAncients(fn) +} + // TruncateAncients is a noop passthrough that just forwards the request to the underlying // database. func (t *table) TruncateAncients(items uint64) error { diff --git a/core/rlp_test.go b/core/rlp_test.go index 3a90811e74..40bcef5e55 100644 --- a/core/rlp_test.go +++ b/core/rlp_test.go @@ -40,7 +40,7 @@ func getBlock(transactions int, uncles int, dataSize int) *types.Block { // A sender who makes transactions, has some funds key, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291") address = crypto.PubkeyToAddress(key.PublicKey) - funds = big.NewInt(1000000000000000) + funds = big.NewInt(1_000_000_000_000_000_000) gspec = &Genesis{ Config: params.TestChainConfig, Alloc: GenesisAlloc{address: {Balance: funds}}, diff --git a/core/state/snapshot/difflayer_test.go b/core/state/snapshot/difflayer_test.go index 919af5fa86..e15c1d5049 100644 --- a/core/state/snapshot/difflayer_test.go +++ b/core/state/snapshot/difflayer_test.go @@ -388,7 +388,7 @@ func BenchmarkJournal(b *testing.B) { } return newDiffLayer(parent, common.Hash{}, destructs, accounts, storage) } - layer := snapshot(new(diskLayer)) + layer := snapshot(emptyLayer()) for i := 1; i < 128; i++ { layer = fill(layer) } diff --git a/core/state/snapshot/generate.go b/core/state/snapshot/generate.go index 3e11b4ac6b..9d74ca4d9b 100644 --- a/core/state/snapshot/generate.go +++ b/core/state/snapshot/generate.go @@ -48,13 +48,13 @@ var ( // accountCheckRange is the upper limit of the number of accounts involved in // each range check. This is a value estimated based on experience. If this // value is too large, the failure rate of range prove will increase. Otherwise - // the the value is too small, the efficiency of the state recovery will decrease. + // the value is too small, the efficiency of the state recovery will decrease. accountCheckRange = 128 // storageCheckRange is the upper limit of the number of storage slots involved // in each range check. This is a value estimated based on experience. If this // value is too large, the failure rate of range prove will increase. Otherwise - // the the value is too small, the efficiency of the state recovery will decrease. + // the value is too small, the efficiency of the state recovery will decrease. storageCheckRange = 1024 // errMissingTrie is returned if the target trie is missing while the generation @@ -560,6 +560,12 @@ func (dl *diskLayer) generate(stats *generatorStats) { default: } if batch.ValueSize() > ethdb.IdealBatchSize || abort != nil { + if bytes.Compare(currentLocation, dl.genMarker) < 0 { + log.Error("Snapshot generator went backwards", + "currentLocation", fmt.Sprintf("%x", currentLocation), + "genMarker", fmt.Sprintf("%x", dl.genMarker)) + } + // Flush out the batch anyway no matter it's empty or not. // It's possible that all the states are recovered and the // generation indeed makes progress. @@ -634,8 +640,14 @@ func (dl *diskLayer) generate(stats *generatorStats) { stats.storage += common.StorageSize(1 + common.HashLength + dataLen) stats.accounts++ } + marker := accountHash[:] + // If the snap generation goes here after interrupted, genMarker may go backward + // when last genMarker is consisted of accountHash and storageHash + if accMarker != nil && bytes.Equal(marker, accMarker) && len(dl.genMarker) > common.HashLength { + marker = dl.genMarker[:] + } // If we've exceeded our batch allowance or termination was requested, flush to disk - if err := checkAndFlush(accountHash[:]); err != nil { + if err := checkAndFlush(marker); err != nil { return err } // If the iterated account is the contract, create a further loop to diff --git a/core/state/snapshot/wipe.go b/core/state/snapshot/wipe.go index 2cab57393b..b774c37a4b 100644 --- a/core/state/snapshot/wipe.go +++ b/core/state/snapshot/wipe.go @@ -21,67 +21,11 @@ import ( "time" "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/metrics" ) -// wipeSnapshot starts a goroutine to iterate over the entire key-value database -// and delete all the data associated with the snapshot (accounts, storage, -// metadata). After all is done, the snapshot range of the database is compacted -// to free up unused data blocks. -func wipeSnapshot(db ethdb.KeyValueStore, full bool) chan struct{} { - // Wipe the snapshot root marker synchronously - if full { - rawdb.DeleteSnapshotRoot(db) - } - // Wipe everything else asynchronously - wiper := make(chan struct{}, 1) - go func() { - if err := wipeContent(db); err != nil { - log.Error("Failed to wipe state snapshot", "err", err) // Database close will trigger this - return - } - close(wiper) - }() - return wiper -} - -// wipeContent iterates over the entire key-value database and deletes all the -// data associated with the snapshot (accounts, storage), but not the root hash -// as the wiper is meant to run on a background thread but the root needs to be -// removed in sync to avoid data races. After all is done, the snapshot range of -// the database is compacted to free up unused data blocks. -func wipeContent(db ethdb.KeyValueStore) error { - if err := wipeKeyRange(db, "accounts", rawdb.SnapshotAccountPrefix, nil, nil, len(rawdb.SnapshotAccountPrefix)+common.HashLength, snapWipedAccountMeter, true); err != nil { - return err - } - if err := wipeKeyRange(db, "storage", rawdb.SnapshotStoragePrefix, nil, nil, len(rawdb.SnapshotStoragePrefix)+2*common.HashLength, snapWipedStorageMeter, true); err != nil { - return err - } - // Compact the snapshot section of the database to get rid of unused space - start := time.Now() - - log.Info("Compacting snapshot account area ") - end := common.CopyBytes(rawdb.SnapshotAccountPrefix) - end[len(end)-1]++ - - if err := db.Compact(rawdb.SnapshotAccountPrefix, end); err != nil { - return err - } - log.Info("Compacting snapshot storage area ") - end = common.CopyBytes(rawdb.SnapshotStoragePrefix) - end[len(end)-1]++ - - if err := db.Compact(rawdb.SnapshotStoragePrefix, end); err != nil { - return err - } - log.Info("Compacted snapshot area in database", "elapsed", common.PrettyDuration(time.Since(start))) - - return nil -} - // wipeKeyRange deletes a range of keys from the database starting with prefix // and having a specific total key length. The start and limit is optional for // specifying a particular key range for deletion. diff --git a/core/state/snapshot/wipe_test.go b/core/state/snapshot/wipe_test.go index 2c45652a96..c5b3401365 100644 --- a/core/state/snapshot/wipe_test.go +++ b/core/state/snapshot/wipe_test.go @@ -30,95 +30,50 @@ import ( func TestWipe(t *testing.T) { // Create a database with some random snapshot data db := memorydb.New() - for i := 0; i < 128; i++ { - account := randomHash() - rawdb.WriteAccountSnapshot(db, account, randomHash().Bytes()) - for j := 0; j < 1024; j++ { - rawdb.WriteStorageSnapshot(db, account, randomHash(), randomHash().Bytes()) - } + rawdb.WriteAccountSnapshot(db, randomHash(), randomHash().Bytes()) } - rawdb.WriteSnapshotRoot(db, randomHash()) - // Add some random non-snapshot data too to make wiping harder - for i := 0; i < 65536; i++ { - // Generate a key that's the wrong length for a state snapshot item - var keysize int - for keysize == 0 || keysize == 32 || keysize == 64 { - keysize = 8 + rand.Intn(64) // +8 to ensure we will "never" randomize duplicates - } - // Randomize the suffix, dedup and inject it under the snapshot namespace - keysuffix := make([]byte, keysize) + for i := 0; i < 500; i++ { + // Generate keys with wrong length for a state snapshot item + keysuffix := make([]byte, 31) rand.Read(keysuffix) - - if rand.Int31n(2) == 0 { - db.Put(append(rawdb.SnapshotAccountPrefix, keysuffix...), randomHash().Bytes()) - } else { - db.Put(append(rawdb.SnapshotStoragePrefix, keysuffix...), randomHash().Bytes()) + db.Put(append(rawdb.SnapshotAccountPrefix, keysuffix...), randomHash().Bytes()) + keysuffix = make([]byte, 33) + rand.Read(keysuffix) + db.Put(append(rawdb.SnapshotAccountPrefix, keysuffix...), randomHash().Bytes()) + } + count := func() (items int) { + it := db.NewIterator(rawdb.SnapshotAccountPrefix, nil) + defer it.Release() + for it.Next() { + if len(it.Key()) == len(rawdb.SnapshotAccountPrefix)+common.HashLength { + items++ + } } + return items } // Sanity check that all the keys are present - var items int - - it := db.NewIterator(rawdb.SnapshotAccountPrefix, nil) - defer it.Release() - - for it.Next() { - key := it.Key() - if len(key) == len(rawdb.SnapshotAccountPrefix)+common.HashLength { - items++ - } + if items := count(); items != 128 { + t.Fatalf("snapshot size mismatch: have %d, want %d", items, 128) } - it = db.NewIterator(rawdb.SnapshotStoragePrefix, nil) - defer it.Release() - - for it.Next() { - key := it.Key() - if len(key) == len(rawdb.SnapshotStoragePrefix)+2*common.HashLength { - items++ - } + // Wipe the accounts + if err := wipeKeyRange(db, "accounts", rawdb.SnapshotAccountPrefix, nil, nil, + len(rawdb.SnapshotAccountPrefix)+common.HashLength, snapWipedAccountMeter, true); err != nil { + t.Fatal(err) } - if items != 128+128*1024 { - t.Fatalf("snapshot size mismatch: have %d, want %d", items, 128+128*1024) - } - if hash := rawdb.ReadSnapshotRoot(db); hash == (common.Hash{}) { - t.Errorf("snapshot block marker mismatch: have %#x, want ", hash) - } - // Wipe all snapshot entries from the database - <-wipeSnapshot(db, true) - // Iterate over the database end ensure no snapshot information remains - it = db.NewIterator(rawdb.SnapshotAccountPrefix, nil) - defer it.Release() - - for it.Next() { - key := it.Key() - if len(key) == len(rawdb.SnapshotAccountPrefix)+common.HashLength { - t.Errorf("snapshot entry remained after wipe: %x", key) - } - } - it = db.NewIterator(rawdb.SnapshotStoragePrefix, nil) - defer it.Release() - - for it.Next() { - key := it.Key() - if len(key) == len(rawdb.SnapshotStoragePrefix)+2*common.HashLength { - t.Errorf("snapshot entry remained after wipe: %x", key) - } - } - if hash := rawdb.ReadSnapshotRoot(db); hash != (common.Hash{}) { - t.Errorf("snapshot block marker remained after wipe: %#x", hash) + if items := count(); items != 0 { + t.Fatalf("snapshot size mismatch: have %d, want %d", items, 0) } // Iterate over the database and ensure miscellaneous items are present - items = 0 - - it = db.NewIterator(nil, nil) + items := 0 + it := db.NewIterator(nil, nil) defer it.Release() - for it.Next() { items++ } - if items != 65536 { - t.Fatalf("misc item count mismatch: have %d, want %d", items, 65536) + if items != 1000 { + t.Fatalf("misc item count mismatch: have %d, want %d", items, 1000) } } diff --git a/core/state/sync.go b/core/state/sync.go index 734961d9c5..cc7d01a218 100644 --- a/core/state/sync.go +++ b/core/state/sync.go @@ -27,7 +27,7 @@ import ( ) // NewStateSync create a new state trie download scheduler. -func NewStateSync(root common.Hash, database ethdb.KeyValueReader, bloom *trie.SyncBloom, onLeaf func(paths [][]byte, leaf []byte) error) *trie.Sync { +func NewStateSync(root common.Hash, database ethdb.KeyValueReader, onLeaf func(paths [][]byte, leaf []byte) error) *trie.Sync { // Register the storage slot callback if the external callback is specified. var onSlot func(paths [][]byte, hexpath []byte, leaf []byte, parent common.Hash) error if onLeaf != nil { @@ -52,6 +52,6 @@ func NewStateSync(root common.Hash, database ethdb.KeyValueReader, bloom *trie.S syncer.AddCodeEntry(common.BytesToHash(obj.CodeHash), hexpath, parent) return nil } - syncer = trie.NewSync(root, database, onAccount, bloom) + syncer = trie.NewSync(root, database, onAccount) return syncer } diff --git a/core/state/sync_test.go b/core/state/sync_test.go index beb8fcfd9c..007590c76d 100644 --- a/core/state/sync_test.go +++ b/core/state/sync_test.go @@ -26,7 +26,6 @@ import ( "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/ethdb/memorydb" "github.com/ethereum/go-ethereum/rlp" "github.com/ethereum/go-ethereum/trie" ) @@ -134,7 +133,7 @@ func checkStateConsistency(db ethdb.Database, root common.Hash) error { // Tests that an empty state is not scheduled for syncing. func TestEmptyStateSync(t *testing.T) { empty := common.HexToHash("56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421") - sync := NewStateSync(empty, rawdb.NewMemoryDatabase(), trie.NewSyncBloom(1, memorydb.New()), nil) + sync := NewStateSync(empty, rawdb.NewMemoryDatabase(), nil) if nodes, paths, codes := sync.Missing(1); len(nodes) != 0 || len(paths) != 0 || len(codes) != 0 { t.Errorf(" content requested for empty state: %v, %v, %v", nodes, paths, codes) } @@ -171,7 +170,7 @@ func testIterativeStateSync(t *testing.T, count int, commit bool, bypath bool) { // Create a destination state and sync with the scheduler dstDb := rawdb.NewMemoryDatabase() - sched := NewStateSync(srcRoot, dstDb, trie.NewSyncBloom(1, dstDb), nil) + sched := NewStateSync(srcRoot, dstDb, nil) nodes, paths, codes := sched.Missing(count) var ( @@ -250,7 +249,7 @@ func TestIterativeDelayedStateSync(t *testing.T) { // Create a destination state and sync with the scheduler dstDb := rawdb.NewMemoryDatabase() - sched := NewStateSync(srcRoot, dstDb, trie.NewSyncBloom(1, dstDb), nil) + sched := NewStateSync(srcRoot, dstDb, nil) nodes, _, codes := sched.Missing(0) queue := append(append([]common.Hash{}, nodes...), codes...) @@ -298,7 +297,7 @@ func testIterativeRandomStateSync(t *testing.T, count int) { // Create a destination state and sync with the scheduler dstDb := rawdb.NewMemoryDatabase() - sched := NewStateSync(srcRoot, dstDb, trie.NewSyncBloom(1, dstDb), nil) + sched := NewStateSync(srcRoot, dstDb, nil) queue := make(map[common.Hash]struct{}) nodes, _, codes := sched.Missing(count) @@ -348,7 +347,7 @@ func TestIterativeRandomDelayedStateSync(t *testing.T) { // Create a destination state and sync with the scheduler dstDb := rawdb.NewMemoryDatabase() - sched := NewStateSync(srcRoot, dstDb, trie.NewSyncBloom(1, dstDb), nil) + sched := NewStateSync(srcRoot, dstDb, nil) queue := make(map[common.Hash]struct{}) nodes, _, codes := sched.Missing(0) @@ -415,7 +414,7 @@ func TestIncompleteStateSync(t *testing.T) { // Create a destination state and sync with the scheduler dstDb := rawdb.NewMemoryDatabase() - sched := NewStateSync(srcRoot, dstDb, trie.NewSyncBloom(1, dstDb), nil) + sched := NewStateSync(srcRoot, dstDb, nil) var added []common.Hash diff --git a/core/state_processor_test.go b/core/state_processor_test.go index 13a9eb810d..aa8e4bebf9 100644 --- a/core/state_processor_test.go +++ b/core/state_processor_test.go @@ -17,10 +17,12 @@ package core import ( + "crypto/ecdsa" "math/big" "testing" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/math" "github.com/ethereum/go-ethereum/consensus" "github.com/ethereum/go-ethereum/consensus/ethash" "github.com/ethereum/go-ethereum/consensus/misc" @@ -54,11 +56,12 @@ func TestStateProcessorErrors(t *testing.T) { LondonBlock: big.NewInt(0), Ethash: new(params.EthashConfig), } - signer = types.LatestSigner(config) - testKey, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291") + signer = types.LatestSigner(config) + key1, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291") + key2, _ = crypto.HexToECDSA("0202020202020202020202020202020202020202020202020202002020202020") ) - var makeTx = func(nonce uint64, to common.Address, amount *big.Int, gasLimit uint64, gasPrice *big.Int, data []byte) *types.Transaction { - tx, _ := types.SignTx(types.NewTransaction(nonce, to, amount, gasLimit, gasPrice, data), signer, testKey) + var makeTx = func(key *ecdsa.PrivateKey, nonce uint64, to common.Address, amount *big.Int, gasLimit uint64, gasPrice *big.Int, data []byte) *types.Transaction { + tx, _ := types.SignTx(types.NewTransaction(nonce, to, amount, gasLimit, gasPrice, data), signer, key) return tx } var mkDynamicTx = func(nonce uint64, to common.Address, gasLimit uint64, gasTipCap, gasFeeCap *big.Int) *types.Transaction { @@ -69,7 +72,7 @@ func TestStateProcessorErrors(t *testing.T) { Gas: gasLimit, To: &to, Value: big.NewInt(0), - }), signer, testKey) + }), signer, key1) return tx } { // Tests against a 'recent' chain definition @@ -82,6 +85,10 @@ func TestStateProcessorErrors(t *testing.T) { Balance: big.NewInt(1000000000000000000), // 1 ether Nonce: 0, }, + common.HexToAddress("0xfd0810DD14796680f72adf1a371963d0745BCc64"): GenesisAccount{ + Balance: big.NewInt(1000000000000000000), // 1 ether + Nonce: math.MaxUint64, + }, }, } genesis = gspec.MustCommit(db) @@ -97,32 +104,38 @@ func TestStateProcessorErrors(t *testing.T) { }{ { // ErrNonceTooLow txs: []*types.Transaction{ - makeTx(0, common.Address{}, big.NewInt(0), params.TxGas, big.NewInt(875000000), nil), - makeTx(0, common.Address{}, big.NewInt(0), params.TxGas, big.NewInt(875000000), nil), + makeTx(key1, 0, common.Address{}, big.NewInt(0), params.TxGas, big.NewInt(875000000), nil), + makeTx(key1, 0, common.Address{}, big.NewInt(0), params.TxGas, big.NewInt(875000000), nil), }, want: "could not apply tx 1 [0x0026256b3939ed97e2c4a6f3fce8ecf83bdcfa6d507c47838c308a1fb0436f62]: nonce too low: address 0x71562b71999873DB5b286dF957af199Ec94617F7, tx: 0 state: 1", }, { // ErrNonceTooHigh txs: []*types.Transaction{ - makeTx(100, common.Address{}, big.NewInt(0), params.TxGas, big.NewInt(875000000), nil), + makeTx(key1, 100, common.Address{}, big.NewInt(0), params.TxGas, big.NewInt(875000000), nil), }, want: "could not apply tx 0 [0xdebad714ca7f363bd0d8121c4518ad48fa469ca81b0a081be3d10c17460f751b]: nonce too high: address 0x71562b71999873DB5b286dF957af199Ec94617F7, tx: 100 state: 0", }, + { // ErrNonceMax + txs: []*types.Transaction{ + makeTx(key2, math.MaxUint64, common.Address{}, big.NewInt(0), params.TxGas, big.NewInt(875000000), nil), + }, + want: "could not apply tx 0 [0x84ea18d60eb2bb3b040e3add0eb72f757727122cc257dd858c67cb6591a85986]: nonce has max value: address 0xfd0810DD14796680f72adf1a371963d0745BCc64, nonce: 18446744073709551615", + }, { // ErrGasLimitReached txs: []*types.Transaction{ - makeTx(0, common.Address{}, big.NewInt(0), 21000000, big.NewInt(875000000), nil), + makeTx(key1, 0, common.Address{}, big.NewInt(0), 21000000, big.NewInt(875000000), nil), }, want: "could not apply tx 0 [0xbd49d8dadfd47fb846986695f7d4da3f7b2c48c8da82dbc211a26eb124883de9]: gas limit reached", }, { // ErrInsufficientFundsForTransfer txs: []*types.Transaction{ - makeTx(0, common.Address{}, big.NewInt(1000000000000000000), params.TxGas, big.NewInt(875000000), nil), + makeTx(key1, 0, common.Address{}, big.NewInt(1000000000000000000), params.TxGas, big.NewInt(875000000), nil), }, want: "could not apply tx 0 [0x98c796b470f7fcab40aaef5c965a602b0238e1034cce6fb73823042dd0638d74]: insufficient funds for gas * price + value: address 0x71562b71999873DB5b286dF957af199Ec94617F7 have 1000000000000000000 want 1000018375000000000", }, { // ErrInsufficientFunds txs: []*types.Transaction{ - makeTx(0, common.Address{}, big.NewInt(0), params.TxGas, big.NewInt(900000000000000000), nil), + makeTx(key1, 0, common.Address{}, big.NewInt(0), params.TxGas, big.NewInt(900000000000000000), nil), }, want: "could not apply tx 0 [0x4a69690c4b0cd85e64d0d9ea06302455b01e10a83db964d60281739752003440]: insufficient funds for gas * price + value: address 0x71562b71999873DB5b286dF957af199Ec94617F7 have 1000000000000000000 want 18900000000000000000000", }, @@ -132,13 +145,13 @@ func TestStateProcessorErrors(t *testing.T) { // multiplication len(data) +gas_per_byte overflows uint64. Not testable at the moment { // ErrIntrinsicGas txs: []*types.Transaction{ - makeTx(0, common.Address{}, big.NewInt(0), params.TxGas-1000, big.NewInt(875000000), nil), + makeTx(key1, 0, common.Address{}, big.NewInt(0), params.TxGas-1000, big.NewInt(875000000), nil), }, want: "could not apply tx 0 [0xcf3b049a0b516cb4f9274b3e2a264359e2ba53b2fb64b7bda2c634d5c9d01fca]: intrinsic gas too low: have 20000, want 21000", }, { // ErrGasLimitReached txs: []*types.Transaction{ - makeTx(0, common.Address{}, big.NewInt(0), params.TxGas*1000, big.NewInt(875000000), nil), + makeTx(key1, 0, common.Address{}, big.NewInt(0), params.TxGas*1000, big.NewInt(875000000), nil), }, want: "could not apply tx 0 [0xbd49d8dadfd47fb846986695f7d4da3f7b2c48c8da82dbc211a26eb124883de9]: gas limit reached", }, diff --git a/core/state_transition.go b/core/state_transition.go index f650922f2f..81c56fb42f 100644 --- a/core/state_transition.go +++ b/core/state_transition.go @@ -222,6 +222,9 @@ func (st *StateTransition) preCheck() error { } else if stNonce > msgNonce { return fmt.Errorf("%w: address %v, tx: %d state: %d", ErrNonceTooLow, st.msg.From().Hex(), msgNonce, stNonce) + } else if stNonce+1 < stNonce { + return fmt.Errorf("%w: address %v, nonce: %d", ErrNonceMax, + st.msg.From().Hex(), stNonce) } // Make sure the sender is an EOA if codeHash := st.state.GetCodeHash(st.msg.From()); codeHash != emptyCodeHash && codeHash != (common.Hash{}) { diff --git a/core/tx_list.go b/core/tx_list.go index ea96f3ebbd..f141a03bbd 100644 --- a/core/tx_list.go +++ b/core/tx_list.go @@ -295,9 +295,9 @@ func (l *txList) Add(tx *types.Transaction, priceBump uint64) (bool, *types.Tran thresholdFeeCap := aFeeCap.Div(aFeeCap, b) thresholdTip := aTip.Div(aTip, b) - // Have to ensure that either the new fee cap or tip is higher than the + // We have to ensure that both the new fee cap and tip are higher than the // old ones as well as checking the percentage threshold to ensure that - // this is accurate for low (Wei-level) gas price replacements + // this is accurate for low (Wei-level) gas price replacements. if tx.GasFeeCapIntCmp(thresholdFeeCap) < 0 || tx.GasTipCapIntCmp(thresholdTip) < 0 { return false, nil } diff --git a/core/tx_list_test.go b/core/tx_list_test.go index 3a5842d2e8..ef49cae1dd 100644 --- a/core/tx_list_test.go +++ b/core/tx_list_test.go @@ -51,7 +51,7 @@ func TestStrictTxListAdd(t *testing.T) { } } -func BenchmarkTxListAdd(t *testing.B) { +func BenchmarkTxListAdd(b *testing.B) { // Generate a list of transactions to insert key, _ := crypto.GenerateKey() @@ -60,11 +60,13 @@ func BenchmarkTxListAdd(t *testing.B) { txs[i] = transaction(uint64(i), 0, key) } // Insert the transactions in a random order - list := newTxList(true) priceLimit := big.NewInt(int64(DefaultTxPoolConfig.PriceLimit)) - t.ResetTimer() - for _, v := range rand.Perm(len(txs)) { - list.Add(txs[v], DefaultTxPoolConfig.PriceBump) - list.Filter(priceLimit, DefaultTxPoolConfig.PriceBump) + b.ResetTimer() + for i := 0; i < b.N; i++ { + list := newTxList(true) + for _, v := range rand.Perm(len(txs)) { + list.Add(txs[v], DefaultTxPoolConfig.PriceBump) + list.Filter(priceLimit, DefaultTxPoolConfig.PriceBump) + } } } diff --git a/core/tx_noncer.go b/core/tx_noncer.go index aa87c643ae..d6d2200775 100644 --- a/core/tx_noncer.go +++ b/core/tx_noncer.go @@ -77,3 +77,11 @@ func (txn *txNoncer) setIfLower(addr common.Address, nonce uint64) { } txn.nonces[addr] = nonce } + +// setAll sets the nonces for all accounts to the given map. +func (txn *txNoncer) setAll(all map[common.Address]uint64) { + txn.lock.Lock() + defer txn.lock.Unlock() + + txn.nonces = all +} diff --git a/core/tx_pool.go b/core/tx_pool.go index 4b2beba206..91d221ded0 100644 --- a/core/tx_pool.go +++ b/core/tx_pool.go @@ -1188,16 +1188,18 @@ func (pool *TxPool) runReorg(done chan struct{}, reset *txpoolResetRequest, dirt pool.priced.Reheap() } } + // Update all accounts to the latest known pending nonce + nonces := make(map[common.Address]uint64, len(pool.pending)) + for addr, list := range pool.pending { + highestPending := list.LastElement() + nonces[addr] = highestPending.Nonce() + 1 + } + pool.pendingNonces.setAll(nonces) } // Ensure pool.queue and pool.pending sizes stay within the configured limits. pool.truncatePending() pool.truncateQueue() - // Update all accounts to the latest known pending nonce - for addr, list := range pool.pending { - highestPending := list.LastElement() - pool.pendingNonces.set(addr, highestPending.Nonce()+1) - } dropBetweenReorgHistogram.Update(int64(pool.changesSinceReorg)) pool.changesSinceReorg = 0 // Reset change counter pool.mu.Unlock() diff --git a/core/tx_pool_test.go b/core/tx_pool_test.go index 1406c8df02..a7af275835 100644 --- a/core/tx_pool_test.go +++ b/core/tx_pool_test.go @@ -2540,3 +2540,24 @@ func BenchmarkInsertRemoteWithAllLocals(b *testing.B) { pool.Stop() } } + +// Benchmarks the speed of batch transaction insertion in case of multiple accounts. +func BenchmarkPoolMultiAccountBatchInsert(b *testing.B) { + // Generate a batch of transactions to enqueue into the pool + pool, _ := setupTxPool() + defer pool.Stop() + b.ReportAllocs() + batches := make(types.Transactions, b.N) + for i := 0; i < b.N; i++ { + key, _ := crypto.GenerateKey() + account := crypto.PubkeyToAddress(key.PublicKey) + pool.currentState.AddBalance(account, big.NewInt(1000000)) + tx := transaction(uint64(0), 100000, key) + batches[i] = tx + } + // Benchmark importing the transactions into the queue + b.ResetTimer() + for _, tx := range batches { + pool.AddRemotesSync([]*types.Transaction{tx}) + } +} diff --git a/core/types/block.go b/core/types/block.go index 360f1eb47c..f38c55c1ff 100644 --- a/core/types/block.go +++ b/core/types/block.go @@ -85,6 +85,12 @@ type Header struct { // BaseFee was added by EIP-1559 and is ignored in legacy headers. BaseFee *big.Int `json:"baseFeePerGas" rlp:"optional"` + + /* + TODO (MariusVanDerWijden) Add this field once needed + // Random was added during the merge and contains the BeaconState randomness + Random common.Hash `json:"random" rlp:"optional"` + */ } // field type overrides for gencodec @@ -383,3 +389,21 @@ func (b *Block) Hash() common.Hash { } type Blocks []*Block + +// HeaderParentHashFromRLP returns the parentHash of an RLP-encoded +// header. If 'header' is invalid, the zero hash is returned. +func HeaderParentHashFromRLP(header []byte) common.Hash { + // parentHash is the first list element. + listContent, _, err := rlp.SplitList(header) + if err != nil { + return common.Hash{} + } + parentHash, _, err := rlp.SplitString(listContent) + if err != nil { + return common.Hash{} + } + if len(parentHash) != 32 { + return common.Hash{} + } + return common.BytesToHash(parentHash) +} diff --git a/core/types/block_test.go b/core/types/block_test.go index 0b9a4def8d..5cdea3fc06 100644 --- a/core/types/block_test.go +++ b/core/types/block_test.go @@ -281,3 +281,64 @@ func makeBenchBlock() *Block { } return NewBlock(header, txs, uncles, receipts, newHasher()) } + +func TestRlpDecodeParentHash(t *testing.T) { + // A minimum one + want := common.HexToHash("0x112233445566778899001122334455667788990011223344556677889900aabb") + if rlpData, err := rlp.EncodeToBytes(Header{ParentHash: want}); err != nil { + t.Fatal(err) + } else { + if have := HeaderParentHashFromRLP(rlpData); have != want { + t.Fatalf("have %x, want %x", have, want) + } + } + // And a maximum one + // | Difficulty | dynamic| *big.Int | 0x5ad3c2c71bbff854908 (current mainnet TD: 76 bits) | + // | Number | dynamic| *big.Int | 64 bits | + // | Extra | dynamic| []byte | 65+32 byte (clique) | + // | BaseFee | dynamic| *big.Int | 64 bits | + mainnetTd := new(big.Int) + mainnetTd.SetString("5ad3c2c71bbff854908", 16) + if rlpData, err := rlp.EncodeToBytes(Header{ + ParentHash: want, + Difficulty: mainnetTd, + Number: new(big.Int).SetUint64(math.MaxUint64), + Extra: make([]byte, 65+32), + BaseFee: new(big.Int).SetUint64(math.MaxUint64), + }); err != nil { + t.Fatal(err) + } else { + if have := HeaderParentHashFromRLP(rlpData); have != want { + t.Fatalf("have %x, want %x", have, want) + } + } + // Also test a very very large header. + { + // The rlp-encoding of the heder belowCauses _total_ length of 65540, + // which is the first to blow the fast-path. + h := Header{ + ParentHash: want, + Extra: make([]byte, 65041), + } + if rlpData, err := rlp.EncodeToBytes(h); err != nil { + t.Fatal(err) + } else { + if have := HeaderParentHashFromRLP(rlpData); have != want { + t.Fatalf("have %x, want %x", have, want) + } + } + } + { + // Test some invalid erroneous stuff + for i, rlpData := range [][]byte{ + nil, + common.FromHex("0x"), + common.FromHex("0x01"), + common.FromHex("0x3031323334"), + } { + if have, want := HeaderParentHashFromRLP(rlpData), (common.Hash{}); have != want { + t.Fatalf("invalid %d: have %x, want %x", i, have, want) + } + } + } +} diff --git a/core/types/dynamic_fee_tx.go b/core/types/dynamic_fee_tx.go index 585c029d89..53f246ea1f 100644 --- a/core/types/dynamic_fee_tx.go +++ b/core/types/dynamic_fee_tx.go @@ -25,8 +25,8 @@ import ( type DynamicFeeTx struct { ChainID *big.Int Nonce uint64 - GasTipCap *big.Int - GasFeeCap *big.Int + GasTipCap *big.Int // a.k.a. maxPriorityFeePerGas + GasFeeCap *big.Int // a.k.a. maxFeePerGas Gas uint64 To *common.Address `rlp:"nil"` // nil means contract creation Value *big.Int diff --git a/core/vm/analysis.go b/core/vm/analysis.go index 449cded2a8..3733bab6a7 100644 --- a/core/vm/analysis.go +++ b/core/vm/analysis.go @@ -17,12 +17,12 @@ package vm const ( - set2BitsMask = uint16(0b1100_0000_0000_0000) - set3BitsMask = uint16(0b1110_0000_0000_0000) - set4BitsMask = uint16(0b1111_0000_0000_0000) - set5BitsMask = uint16(0b1111_1000_0000_0000) - set6BitsMask = uint16(0b1111_1100_0000_0000) - set7BitsMask = uint16(0b1111_1110_0000_0000) + set2BitsMask = uint16(0b11) + set3BitsMask = uint16(0b111) + set4BitsMask = uint16(0b1111) + set5BitsMask = uint16(0b1_1111) + set6BitsMask = uint16(0b11_1111) + set7BitsMask = uint16(0b111_1111) ) // bitvec is a bit vector which maps bytes in a program. @@ -30,32 +30,26 @@ const ( // it's data (i.e. argument of PUSHxx). type bitvec []byte -var lookup = [8]byte{ - 0x80, 0x40, 0x20, 0x10, 0x8, 0x4, 0x2, 0x1, -} - func (bits bitvec) set1(pos uint64) { - bits[pos/8] |= lookup[pos%8] + bits[pos/8] |= 1 << (pos % 8) } func (bits bitvec) setN(flag uint16, pos uint64) { - a := flag >> (pos % 8) - bits[pos/8] |= byte(a >> 8) - if b := byte(a); b != 0 { - // If the bit-setting affects the neighbouring byte, we can assign - no need to OR it, - // since it's the first write to that byte + a := flag << (pos % 8) + bits[pos/8] |= byte(a) + if b := byte(a >> 8); b != 0 { bits[pos/8+1] = b } } func (bits bitvec) set8(pos uint64) { - a := byte(0xFF >> (pos % 8)) + a := byte(0xFF << (pos % 8)) bits[pos/8] |= a bits[pos/8+1] = ^a } func (bits bitvec) set16(pos uint64) { - a := byte(0xFF >> (pos % 8)) + a := byte(0xFF << (pos % 8)) bits[pos/8] |= a bits[pos/8+1] = 0xFF bits[pos/8+2] = ^a @@ -63,7 +57,7 @@ func (bits bitvec) set16(pos uint64) { // codeSegment checks if the position is in a code segment. func (bits *bitvec) codeSegment(pos uint64) bool { - return ((*bits)[pos/8] & (0x80 >> (pos % 8))) == 0 + return (((*bits)[pos/8] >> (pos % 8)) & 1) == 0 } // codeBitmap collects data locations in code. diff --git a/core/vm/analysis_test.go b/core/vm/analysis_test.go index d7f21e04aa..398861f8ae 100644 --- a/core/vm/analysis_test.go +++ b/core/vm/analysis_test.go @@ -17,6 +17,7 @@ package vm import ( + "math/bits" "testing" "github.com/ethereum/go-ethereum/crypto" @@ -28,24 +29,27 @@ func TestJumpDestAnalysis(t *testing.T) { exp byte which int }{ - {[]byte{byte(PUSH1), 0x01, 0x01, 0x01}, 0x40, 0}, - {[]byte{byte(PUSH1), byte(PUSH1), byte(PUSH1), byte(PUSH1)}, 0x50, 0}, - {[]byte{byte(PUSH8), byte(PUSH8), byte(PUSH8), byte(PUSH8), byte(PUSH8), byte(PUSH8), byte(PUSH8), byte(PUSH8), 0x01, 0x01, 0x01}, 0x7F, 0}, - {[]byte{byte(PUSH8), 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, 0x80, 1}, - {[]byte{0x01, 0x01, 0x01, 0x01, 0x01, byte(PUSH2), byte(PUSH2), byte(PUSH2), 0x01, 0x01, 0x01}, 0x03, 0}, - {[]byte{0x01, 0x01, 0x01, 0x01, 0x01, byte(PUSH2), 0x01, 0x01, 0x01, 0x01, 0x01}, 0x00, 1}, - {[]byte{byte(PUSH3), 0x01, 0x01, 0x01, byte(PUSH1), 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, 0x74, 0}, - {[]byte{byte(PUSH3), 0x01, 0x01, 0x01, byte(PUSH1), 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, 0x00, 1}, - {[]byte{0x01, byte(PUSH8), 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, 0x3F, 0}, - {[]byte{0x01, byte(PUSH8), 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, 0xC0, 1}, - {[]byte{byte(PUSH16), 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, 0x7F, 0}, - {[]byte{byte(PUSH16), 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, 0xFF, 1}, - {[]byte{byte(PUSH16), 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, 0x80, 2}, - {[]byte{byte(PUSH8), 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, byte(PUSH1), 0x01}, 0x7f, 0}, - {[]byte{byte(PUSH8), 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, byte(PUSH1), 0x01}, 0xA0, 1}, - {[]byte{byte(PUSH32)}, 0x7F, 0}, - {[]byte{byte(PUSH32)}, 0xFF, 1}, - {[]byte{byte(PUSH32)}, 0xFF, 2}, + {[]byte{byte(PUSH1), 0x01, 0x01, 0x01}, 0b0000_0010, 0}, + {[]byte{byte(PUSH1), byte(PUSH1), byte(PUSH1), byte(PUSH1)}, 0b0000_1010, 0}, + {[]byte{0x00, byte(PUSH1), 0x00, byte(PUSH1), 0x00, byte(PUSH1), 0x00, byte(PUSH1)}, 0b0101_0100, 0}, + {[]byte{byte(PUSH8), byte(PUSH8), byte(PUSH8), byte(PUSH8), byte(PUSH8), byte(PUSH8), byte(PUSH8), byte(PUSH8), 0x01, 0x01, 0x01}, bits.Reverse8(0x7F), 0}, + {[]byte{byte(PUSH8), 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, 0b0000_0001, 1}, + {[]byte{0x01, 0x01, 0x01, 0x01, 0x01, byte(PUSH2), byte(PUSH2), byte(PUSH2), 0x01, 0x01, 0x01}, 0b1100_0000, 0}, + {[]byte{0x01, 0x01, 0x01, 0x01, 0x01, byte(PUSH2), 0x01, 0x01, 0x01, 0x01, 0x01}, 0b0000_0000, 1}, + {[]byte{byte(PUSH3), 0x01, 0x01, 0x01, byte(PUSH1), 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, 0b0010_1110, 0}, + {[]byte{byte(PUSH3), 0x01, 0x01, 0x01, byte(PUSH1), 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, 0b0000_0000, 1}, + {[]byte{0x01, byte(PUSH8), 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, 0b1111_1100, 0}, + {[]byte{0x01, byte(PUSH8), 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, 0b0000_0011, 1}, + {[]byte{byte(PUSH16), 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, 0b1111_1110, 0}, + {[]byte{byte(PUSH16), 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, 0b1111_1111, 1}, + {[]byte{byte(PUSH16), 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, 0b0000_0001, 2}, + {[]byte{byte(PUSH8), 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, byte(PUSH1), 0x01}, 0b1111_1110, 0}, + {[]byte{byte(PUSH8), 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, byte(PUSH1), 0x01}, 0b0000_0101, 1}, + {[]byte{byte(PUSH32)}, 0b1111_1110, 0}, + {[]byte{byte(PUSH32)}, 0b1111_1111, 1}, + {[]byte{byte(PUSH32)}, 0b1111_1111, 2}, + {[]byte{byte(PUSH32)}, 0b1111_1111, 3}, + {[]byte{byte(PUSH32)}, 0b0000_0001, 4}, } for i, test := range tests { ret := codeBitmap(test.code) diff --git a/core/vm/contract.go b/core/vm/contract.go index 61dbd5007a..bb0902969e 100644 --- a/core/vm/contract.go +++ b/core/vm/contract.go @@ -143,16 +143,11 @@ func (c *Contract) AsDelegate() *Contract { // GetOp returns the n'th element in the contract's byte array func (c *Contract) GetOp(n uint64) OpCode { - return OpCode(c.GetByte(n)) -} - -// GetByte returns the n'th byte in the contract's byte array -func (c *Contract) GetByte(n uint64) byte { if n < uint64(len(c.Code)) { - return c.Code[n] + return OpCode(c.Code[n]) } - return 0 + return STOP } // Caller returns the caller of the contract. diff --git a/core/vm/errors.go b/core/vm/errors.go index c7cfeae53c..004f8ef1c8 100644 --- a/core/vm/errors.go +++ b/core/vm/errors.go @@ -35,6 +35,11 @@ var ( ErrReturnDataOutOfBounds = errors.New("return data out of bounds") ErrGasUintOverflow = errors.New("gas uint64 overflow") ErrInvalidCode = errors.New("invalid code: must not begin with 0xef") + ErrNonceUintOverflow = errors.New("nonce uint64 overflow") + + // errStopToken is an internal token indicating interpreter loop termination, + // never returned to outside callers. + errStopToken = errors.New("stop token") ) // ErrStackUnderflow wraps an evm error when the items on the stack less diff --git a/core/vm/evm.go b/core/vm/evm.go index 3b4bd69d75..2c7880b3bf 100644 --- a/core/vm/evm.go +++ b/core/vm/evm.go @@ -165,9 +165,6 @@ func (evm *EVM) Interpreter() *EVMInterpreter { // the necessary steps to create accounts and reverses the state in case of an // execution error or failed value transfer. func (evm *EVM) Call(caller ContractRef, addr common.Address, input []byte, gas uint64, value *big.Int) (ret []byte, leftOverGas uint64, err error) { - if evm.Config.NoRecursion && evm.depth > 0 { - return nil, gas, nil - } // Fail if we're trying to execute above the call depth limit if evm.depth > int(params.CallCreateDepth) { return nil, gas, ErrDepth @@ -182,9 +179,14 @@ func (evm *EVM) Call(caller ContractRef, addr common.Address, input []byte, gas if !evm.StateDB.Exist(addr) { if !isPrecompile && evm.chainRules.IsEIP158 && value.Sign() == 0 { // Calling a non existing account, don't do anything, but ping the tracer - if evm.Config.Debug && evm.depth == 0 { - evm.Config.Tracer.CaptureStart(evm, caller.Address(), addr, false, input, gas, value) - evm.Config.Tracer.CaptureEnd(ret, 0, 0, nil) + if evm.Config.Debug { + if evm.depth == 0 { + evm.Config.Tracer.CaptureStart(evm, caller.Address(), addr, false, input, gas, value) + evm.Config.Tracer.CaptureEnd(ret, 0, 0, nil) + } else { + evm.Config.Tracer.CaptureEnter(CALL, caller.Address(), addr, input, gas, value) + evm.Config.Tracer.CaptureExit(ret, 0, nil) + } } return nil, gas, nil } @@ -249,9 +251,6 @@ func (evm *EVM) Call(caller ContractRef, addr common.Address, input []byte, gas // CallCode differs from Call in the sense that it executes the given address' // code with the caller as context. func (evm *EVM) CallCode(caller ContractRef, addr common.Address, input []byte, gas uint64, value *big.Int) (ret []byte, leftOverGas uint64, err error) { - if evm.Config.NoRecursion && evm.depth > 0 { - return nil, gas, nil - } // Fail if we're trying to execute above the call depth limit if evm.depth > int(params.CallCreateDepth) { return nil, gas, ErrDepth @@ -300,9 +299,6 @@ func (evm *EVM) CallCode(caller ContractRef, addr common.Address, input []byte, // DelegateCall differs from CallCode in the sense that it executes the given address' // code with the caller as context and the caller is set to the caller of the caller. func (evm *EVM) DelegateCall(caller ContractRef, addr common.Address, input []byte, gas uint64) (ret []byte, leftOverGas uint64, err error) { - if evm.Config.NoRecursion && evm.depth > 0 { - return nil, gas, nil - } // Fail if we're trying to execute above the call depth limit if evm.depth > int(params.CallCreateDepth) { return nil, gas, ErrDepth @@ -342,9 +338,6 @@ func (evm *EVM) DelegateCall(caller ContractRef, addr common.Address, input []by // Opcodes that attempt to perform such modifications will result in exceptions // instead of performing the modifications. func (evm *EVM) StaticCall(caller ContractRef, addr common.Address, input []byte, gas uint64) (ret []byte, leftOverGas uint64, err error) { - if evm.Config.NoRecursion && evm.depth > 0 { - return nil, gas, nil - } // Fail if we're trying to execute above the call depth limit if evm.depth > int(params.CallCreateDepth) { return nil, gas, ErrDepth @@ -419,6 +412,9 @@ func (evm *EVM) create(caller ContractRef, codeAndHash *codeAndHash, gas uint64, return nil, common.Address{}, gas, ErrInsufficientBalance } nonce := evm.StateDB.GetNonce(caller.Address()) + if nonce+1 < nonce { + return nil, common.Address{}, gas, ErrNonceUintOverflow + } evm.StateDB.SetNonce(caller.Address(), nonce+1) // We add this to the access list _before_ taking a snapshot. Even if the creation fails, // the access-list change should not be rolled back @@ -443,10 +439,6 @@ func (evm *EVM) create(caller ContractRef, codeAndHash *codeAndHash, gas uint64, contract := NewContract(caller, AccountRef(address), value, gas) contract.SetCodeOptionalHash(&address, codeAndHash) - if evm.Config.NoRecursion && evm.depth > 0 { - return nil, address, gas, nil - } - if evm.Config.Debug { if evm.depth == 0 { evm.Config.Tracer.CaptureStart(evm, caller.Address(), address, true, codeAndHash.code, gas, value) @@ -510,7 +502,7 @@ func (evm *EVM) Create(caller ContractRef, code []byte, gas uint64, value *big.I // Create2 creates a new contract using code as deployment code. // -// The different between Create2 with Create is Create2 uses sha3(0xff ++ msg.sender ++ salt ++ sha3(init_code))[12:] +// The different between Create2 with Create is Create2 uses keccak256(0xff ++ msg.sender ++ salt ++ keccak256(init_code))[12:] // instead of the usual sender-and-nonce-hash as the address where the contract is initialized at. func (evm *EVM) Create2(caller ContractRef, code []byte, gas uint64, endowment *big.Int, salt *uint256.Int) (ret []byte, contractAddr common.Address, leftOverGas uint64, err error) { codeAndHash := &codeAndHash{code: code} diff --git a/core/vm/gas_table.go b/core/vm/gas_table.go index 19d2198af6..4c2cb3e5cf 100644 --- a/core/vm/gas_table.go +++ b/core/vm/gas_table.go @@ -247,7 +247,7 @@ func makeGasLog(n uint64) gasFunc { } } -func gasSha3(evm *EVM, contract *Contract, stack *Stack, mem *Memory, memorySize uint64) (uint64, error) { +func gasKeccak256(evm *EVM, contract *Contract, stack *Stack, mem *Memory, memorySize uint64) (uint64, error) { gas, err := memoryGasCost(mem, memorySize) if err != nil { return 0, err @@ -256,7 +256,7 @@ func gasSha3(evm *EVM, contract *Contract, stack *Stack, mem *Memory, memorySize if overflow { return 0, ErrGasUintOverflow } - if wordGas, overflow = math.SafeMul(toWordSize(wordGas), params.Sha3WordGas); overflow { + if wordGas, overflow = math.SafeMul(toWordSize(wordGas), params.Keccak256WordGas); overflow { return 0, ErrGasUintOverflow } if gas, overflow = math.SafeAdd(gas, wordGas); overflow { @@ -290,7 +290,7 @@ func gasCreate2(evm *EVM, contract *Contract, stack *Stack, mem *Memory, memoryS if overflow { return 0, ErrGasUintOverflow } - if wordGas, overflow = math.SafeMul(toWordSize(wordGas), params.Sha3WordGas); overflow { + if wordGas, overflow = math.SafeMul(toWordSize(wordGas), params.Keccak256WordGas); overflow { return 0, ErrGasUintOverflow } if gas, overflow = math.SafeAdd(gas, wordGas); overflow { diff --git a/core/vm/instructions.go b/core/vm/instructions.go index bda480f083..4eda3bf531 100644 --- a/core/vm/instructions.go +++ b/core/vm/instructions.go @@ -17,6 +17,8 @@ package vm import ( + "sync/atomic" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/params" @@ -231,7 +233,7 @@ func opSAR(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]byte return nil, nil } -func opSha3(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]byte, error) { +func opKeccak256(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]byte, error) { offset, size := scope.Stack.pop(), scope.Stack.peek() data := scope.Memory.GetPtr(int64(offset.Uint64()), int64(size.Uint64())) @@ -514,6 +516,9 @@ func opSload(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]by } func opSstore(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]byte, error) { + if interpreter.readOnly { + return nil, ErrWriteProtection + } loc := scope.Stack.pop() val := scope.Stack.pop() interpreter.evm.StateDB.SetState(scope.Contract.Address(), @@ -522,23 +527,27 @@ func opSstore(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]b } func opJump(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]byte, error) { + if atomic.LoadInt32(&interpreter.evm.abort) != 0 { + return nil, errStopToken + } pos := scope.Stack.pop() if !scope.Contract.validJumpdest(&pos) { return nil, ErrInvalidJump } - *pc = pos.Uint64() + *pc = pos.Uint64() - 1 // pc will be increased by the interpreter loop return nil, nil } func opJumpi(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]byte, error) { + if atomic.LoadInt32(&interpreter.evm.abort) != 0 { + return nil, errStopToken + } pos, cond := scope.Stack.pop(), scope.Stack.pop() if !cond.IsZero() { if !scope.Contract.validJumpdest(&pos) { return nil, ErrInvalidJump } - *pc = pos.Uint64() - } else { - *pc++ + *pc = pos.Uint64() - 1 // pc will be increased by the interpreter loop } return nil, nil } @@ -563,6 +572,9 @@ func opGas(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]byte } func opCreate(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]byte, error) { + if interpreter.readOnly { + return nil, ErrWriteProtection + } var ( value = scope.Stack.pop() offset, size = scope.Stack.pop(), scope.Stack.pop() @@ -598,12 +610,17 @@ func opCreate(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]b scope.Contract.Gas += returnGas if suberr == ErrExecutionReverted { + interpreter.returnData = res // set REVERT data to return data buffer return res, nil } + interpreter.returnData = nil // clear dirty return data buffer return nil, nil } func opCreate2(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]byte, error) { + if interpreter.readOnly { + return nil, ErrWriteProtection + } var ( endowment = scope.Stack.pop() offset, size = scope.Stack.pop(), scope.Stack.pop() @@ -634,8 +651,10 @@ func opCreate2(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([] scope.Contract.Gas += returnGas if suberr == ErrExecutionReverted { + interpreter.returnData = res // set REVERT data to return data buffer return res, nil } + interpreter.returnData = nil // clear dirty return data buffer return nil, nil } @@ -651,6 +670,9 @@ func opCall(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]byt // Get the arguments from the memory. args := scope.Memory.GetPtr(int64(inOffset.Uint64()), int64(inSize.Uint64())) + if interpreter.readOnly && !value.IsZero() { + return nil, ErrWriteProtection + } var bigVal = big0 //TODO: use uint256.Int instead of converting with toBig() // By using big0 here, we save an alloc for the most common case (non-ether-transferring contract calls), @@ -674,6 +696,7 @@ func opCall(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]byt } scope.Contract.Gas += returnGas + interpreter.returnData = ret return ret, nil } @@ -709,6 +732,7 @@ func opCallCode(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([ } scope.Contract.Gas += returnGas + interpreter.returnData = ret return ret, nil } @@ -737,6 +761,7 @@ func opDelegateCall(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext } scope.Contract.Gas += returnGas + interpreter.returnData = ret return ret, nil } @@ -765,6 +790,7 @@ func opStaticCall(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) } scope.Contract.Gas += returnGas + interpreter.returnData = ret return ret, nil } @@ -772,21 +798,29 @@ func opReturn(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]b offset, size := scope.Stack.pop(), scope.Stack.pop() ret := scope.Memory.GetPtr(int64(offset.Uint64()), int64(size.Uint64())) - return ret, nil + return ret, errStopToken } func opRevert(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]byte, error) { offset, size := scope.Stack.pop(), scope.Stack.pop() ret := scope.Memory.GetPtr(int64(offset.Uint64()), int64(size.Uint64())) - return ret, nil + interpreter.returnData = ret + return ret, ErrExecutionReverted +} + +func opUndefined(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]byte, error) { + return nil, &ErrInvalidOpCode{opcode: OpCode(scope.Contract.Code[*pc])} } func opStop(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]byte, error) { - return nil, nil + return nil, errStopToken } -func opSuicide(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]byte, error) { +func opSelfdestruct(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]byte, error) { + if interpreter.readOnly { + return nil, ErrWriteProtection + } beneficiary := scope.Stack.pop() balance := interpreter.evm.StateDB.GetBalance(scope.Contract.Address()) interpreter.evm.StateDB.AddBalance(beneficiary.Bytes20(), balance) @@ -795,7 +829,7 @@ func opSuicide(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([] interpreter.cfg.Tracer.CaptureEnter(SELFDESTRUCT, scope.Contract.Address(), beneficiary.Bytes20(), []byte{}, 0, balance) interpreter.cfg.Tracer.CaptureExit([]byte{}, 0, nil) } - return nil, nil + return nil, errStopToken } // following functions are used by the instruction jump table @@ -803,6 +837,9 @@ func opSuicide(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([] // make log instruction function func makeLog(size int) executionFunc { return func(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]byte, error) { + if interpreter.readOnly { + return nil, ErrWriteProtection + } topics := make([]common.Hash, size) stack := scope.Stack mStart, mSize := stack.pop(), stack.pop() diff --git a/core/vm/instructions_test.go b/core/vm/instructions_test.go index 560d26a0b8..e67acd8327 100644 --- a/core/vm/instructions_test.go +++ b/core/vm/instructions_test.go @@ -525,12 +525,14 @@ func TestOpMstore(t *testing.T) { mem.Resize(64) pc := uint64(0) v := "abcdef00000000000000abba000000000deaf000000c0de00100000000133700" - stack.pushN(*new(uint256.Int).SetBytes(common.Hex2Bytes(v)), *new(uint256.Int)) + stack.push(new(uint256.Int).SetBytes(common.Hex2Bytes(v))) + stack.push(new(uint256.Int)) opMstore(&pc, evmInterpreter, &ScopeContext{mem, stack, nil}) if got := common.Bytes2Hex(mem.GetCopy(0, 32)); got != v { t.Fatalf("Mstore fail, got %v, expected %v", got, v) } - stack.pushN(*new(uint256.Int).SetUint64(0x1), *new(uint256.Int)) + stack.push(new(uint256.Int).SetUint64(0x1)) + stack.push(new(uint256.Int)) opMstore(&pc, evmInterpreter, &ScopeContext{mem, stack, nil}) if common.Bytes2Hex(mem.GetCopy(0, 32)) != "0000000000000000000000000000000000000000000000000000000000000001" { t.Fatalf("Mstore failed to overwrite previous value") @@ -553,12 +555,13 @@ func BenchmarkOpMstore(bench *testing.B) { bench.ResetTimer() for i := 0; i < bench.N; i++ { - stack.pushN(*value, *memStart) + stack.push(value) + stack.push(memStart) opMstore(&pc, evmInterpreter, &ScopeContext{mem, stack, nil}) } } -func BenchmarkOpSHA3(bench *testing.B) { +func BenchmarkOpKeccak256(bench *testing.B) { var ( env = NewEVM(BlockContext{}, TxContext{}, nil, params.TestChainConfig, Config{}) stack = newstack() @@ -572,8 +575,9 @@ func BenchmarkOpSHA3(bench *testing.B) { bench.ResetTimer() for i := 0; i < bench.N; i++ { - stack.pushN(*uint256.NewInt(32), *start) - opSha3(&pc, evmInterpreter, &ScopeContext{mem, stack, nil}) + stack.push(uint256.NewInt(32)) + stack.push(start) + opKeccak256(&pc, evmInterpreter, &ScopeContext{mem, stack, nil}) } } diff --git a/core/vm/interpreter.go b/core/vm/interpreter.go index 9fb83799c9..1660e3ce0f 100644 --- a/core/vm/interpreter.go +++ b/core/vm/interpreter.go @@ -18,7 +18,6 @@ package vm import ( "hash" - "sync/atomic" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/math" @@ -27,13 +26,12 @@ import ( // Config are the configuration options for the Interpreter type Config struct { - Debug bool // Enables debugging - Tracer Tracer // Opcode logger - NoRecursion bool // Disables call, callcode, delegate call and create - NoBaseFee bool // Forces the EIP-1559 baseFee to 0 (needed for 0 price calls) - EnablePreimageRecording bool // Enables recording of SHA3/keccak preimages + Debug bool // Enables debugging + Tracer EVMLogger // Opcode logger + NoBaseFee bool // Forces the EIP-1559 baseFee to 0 (needed for 0 price calls) + EnablePreimageRecording bool // Enables recording of SHA3/keccak preimages - JumpTable [256]*operation // EVM instruction table, automatically populated if unset + JumpTable *JumpTable // EVM instruction table, automatically populated if unset ExtraEips []int // Additional EIPS that are to be enabled } @@ -68,39 +66,37 @@ type EVMInterpreter struct { // NewEVMInterpreter returns a new instance of the Interpreter. func NewEVMInterpreter(evm *EVM, cfg Config) *EVMInterpreter { - // We use the STOP instruction whether to see - // the jump table was initialised. If it was not - // we'll set the default jump table. - if cfg.JumpTable[STOP] == nil { - var jt JumpTable + // If jump table was not initialised we set the default one. + if cfg.JumpTable == nil { switch { case evm.chainRules.IsLondon: - jt = londonInstructionSet + cfg.JumpTable = &londonInstructionSet case evm.chainRules.IsBerlin: - jt = berlinInstructionSet + cfg.JumpTable = &berlinInstructionSet case evm.chainRules.IsIstanbul: - jt = istanbulInstructionSet + cfg.JumpTable = &istanbulInstructionSet case evm.chainRules.IsConstantinople: - jt = constantinopleInstructionSet + cfg.JumpTable = &constantinopleInstructionSet case evm.chainRules.IsByzantium: - jt = byzantiumInstructionSet + cfg.JumpTable = &byzantiumInstructionSet case evm.chainRules.IsEIP158: - jt = spuriousDragonInstructionSet + cfg.JumpTable = &spuriousDragonInstructionSet case evm.chainRules.IsEIP150: - jt = tangerineWhistleInstructionSet + cfg.JumpTable = &tangerineWhistleInstructionSet case evm.chainRules.IsHomestead: - jt = homesteadInstructionSet + cfg.JumpTable = &homesteadInstructionSet default: - jt = frontierInstructionSet + cfg.JumpTable = &frontierInstructionSet } for i, eip := range cfg.ExtraEips { - if err := EnableEIP(eip, &jt); err != nil { + copy := *cfg.JumpTable + if err := EnableEIP(eip, ©); err != nil { // Disable it, so caller can check if it's activated or not cfg.ExtraEips = append(cfg.ExtraEips[:i], cfg.ExtraEips[i+1:]...) log.Error("EIP activation failed", "eip", eip, "error", err) } + cfg.JumpTable = © } - cfg.JumpTable = jt } return &EVMInterpreter{ @@ -152,9 +148,9 @@ func (in *EVMInterpreter) Run(contract *Contract, input []byte, readOnly bool) ( pc = uint64(0) // program counter cost uint64 // copies used by tracer - pcCopy uint64 // needed for the deferred Tracer - gasCopy uint64 // for Tracer to log gas remaining before execution - logged bool // deferred Tracer should ignore already logged steps + pcCopy uint64 // needed for the deferred EVMLogger + gasCopy uint64 // for EVMLogger to log gas remaining before execution + logged bool // deferred EVMLogger should ignore already logged steps res []byte // result of the opcode execution function ) // Don't move this deferrred function, it's placed before the capturestate-deferred method, @@ -169,9 +165,9 @@ func (in *EVMInterpreter) Run(contract *Contract, input []byte, readOnly bool) ( defer func() { if err != nil { if !logged { - in.cfg.Tracer.CaptureState(in.evm, pcCopy, op, gasCopy, cost, callContext, in.returnData, in.evm.depth, err) + in.cfg.Tracer.CaptureState(pcCopy, op, gasCopy, cost, callContext, in.returnData, in.evm.depth, err) } else { - in.cfg.Tracer.CaptureFault(in.evm, pcCopy, op, gasCopy, cost, callContext, in.evm.depth, err) + in.cfg.Tracer.CaptureFault(pcCopy, op, gasCopy, cost, callContext, in.evm.depth, err) } } }() @@ -180,101 +176,70 @@ func (in *EVMInterpreter) Run(contract *Contract, input []byte, readOnly bool) ( // explicit STOP, RETURN or SELFDESTRUCT is executed, an error occurred during // the execution of one of the operations or until the done flag is set by the // parent context. - steps := 0 for { - steps++ - if steps%1000 == 0 && atomic.LoadInt32(&in.evm.abort) != 0 { - break - } if in.cfg.Debug { // Capture pre-execution values for tracing. logged, pcCopy, gasCopy = false, pc, contract.Gas } - // Get the operation from the jump table and validate the stack to ensure there are // enough stack items available to perform the operation. op = contract.GetOp(pc) operation := in.cfg.JumpTable[op] - if operation == nil { - return nil, &ErrInvalidOpCode{opcode: op} - } + cost = operation.constantGas // For tracing // Validate stack if sLen := stack.len(); sLen < operation.minStack { return nil, &ErrStackUnderflow{stackLen: sLen, required: operation.minStack} } else if sLen > operation.maxStack { return nil, &ErrStackOverflow{stackLen: sLen, limit: operation.maxStack} } - // If the operation is valid, enforce write restrictions - if in.readOnly && in.evm.chainRules.IsByzantium { - // If the interpreter is operating in readonly mode, make sure no - // state-modifying operation is performed. The 3rd stack item - // for a call operation is the value. Transferring value from one - // account to the others means the state is modified and should also - // return with an error. - if operation.writes || (op == CALL && stack.Back(2).Sign() != 0) { - return nil, ErrWriteProtection - } - } - // Static portion of gas - cost = operation.constantGas // For tracing - if !contract.UseGas(operation.constantGas) { + if !contract.UseGas(cost) { return nil, ErrOutOfGas } - - var memorySize uint64 - // calculate the new memory size and expand the memory to fit - // the operation - // Memory check needs to be done prior to evaluating the dynamic gas portion, - // to detect calculation overflows - if operation.memorySize != nil { - memSize, overflow := operation.memorySize(stack) - if overflow { - return nil, ErrGasUintOverflow - } - // memory is expanded in words of 32 bytes. Gas - // is also calculated in words. - if memorySize, overflow = math.SafeMul(toWordSize(memSize), 32); overflow { - return nil, ErrGasUintOverflow - } - } - // Dynamic portion of gas - // consume the gas and return an error if not enough gas is available. - // cost is explicitly set so that the capture state defer method can get the proper cost if operation.dynamicGas != nil { + // All ops with a dynamic memory usage also has a dynamic gas cost. + var memorySize uint64 + // calculate the new memory size and expand the memory to fit + // the operation + // Memory check needs to be done prior to evaluating the dynamic gas portion, + // to detect calculation overflows + if operation.memorySize != nil { + memSize, overflow := operation.memorySize(stack) + if overflow { + return nil, ErrGasUintOverflow + } + // memory is expanded in words of 32 bytes. Gas + // is also calculated in words. + if memorySize, overflow = math.SafeMul(toWordSize(memSize), 32); overflow { + return nil, ErrGasUintOverflow + } + } + // Consume the gas and return an error if not enough gas is available. + // cost is explicitly set so that the capture state defer method can get the proper cost var dynamicCost uint64 dynamicCost, err = operation.dynamicGas(in.evm, contract, stack, mem, memorySize) - cost += dynamicCost // total cost, for debug tracing + cost += dynamicCost // for tracing if err != nil || !contract.UseGas(dynamicCost) { return nil, ErrOutOfGas } + if memorySize > 0 { + mem.Resize(memorySize) + } } - if memorySize > 0 { - mem.Resize(memorySize) - } - if in.cfg.Debug { - in.cfg.Tracer.CaptureState(in.evm, pc, op, gasCopy, cost, callContext, in.returnData, in.evm.depth, err) + in.cfg.Tracer.CaptureState(pc, op, gasCopy, cost, callContext, in.returnData, in.evm.depth, err) logged = true } - // execute the operation res, err = operation.execute(&pc, in, callContext) - // if the operation clears the return data (e.g. it has returning data) - // set the last return to the result of the operation. - if operation.returns { - in.returnData = res - } - - switch { - case err != nil: - return nil, err - case operation.reverts: - return res, ErrExecutionReverted - case operation.halts: - return res, nil - case !operation.jumps: - pc++ + if err != nil { + break } + pc++ } - return nil, nil + + if err == errStopToken { + err = nil // clear stop token error + } + + return res, err } diff --git a/core/vm/interpreter_test.go b/core/vm/interpreter_test.go new file mode 100644 index 0000000000..dfae0f2e2a --- /dev/null +++ b/core/vm/interpreter_test.go @@ -0,0 +1,77 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package vm + +import ( + "math/big" + "testing" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/math" + "github.com/ethereum/go-ethereum/core/rawdb" + "github.com/ethereum/go-ethereum/core/state" + "github.com/ethereum/go-ethereum/params" +) + +var loopInterruptTests = []string{ + // infinite loop using JUMP: push(2) jumpdest dup1 jump + "60025b8056", + // infinite loop using JUMPI: push(1) push(4) jumpdest dup2 dup2 jumpi + "600160045b818157", +} + +func TestLoopInterrupt(t *testing.T) { + address := common.BytesToAddress([]byte("contract")) + vmctx := BlockContext{ + Transfer: func(StateDB, common.Address, common.Address, *big.Int) {}, + } + + for i, tt := range loopInterruptTests { + statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase()), nil) + statedb.CreateAccount(address) + statedb.SetCode(address, common.Hex2Bytes(tt)) + statedb.Finalise(true) + + evm := NewEVM(vmctx, TxContext{}, statedb, params.AllEthashProtocolChanges, Config{}) + + errChannel := make(chan error) + timeout := make(chan bool) + + go func(evm *EVM) { + _, _, err := evm.Call(AccountRef(common.Address{}), address, nil, math.MaxUint64, new(big.Int)) + errChannel <- err + }(evm) + + go func() { + <-time.After(time.Second) + timeout <- true + }() + + evm.Cancel() + + select { + case <-timeout: + t.Errorf("test %d timed out", i) + case err := <-errChannel: + if err != nil { + t.Errorf("test %d failure: %v", i, err) + } + } + } + +} diff --git a/core/vm/jump_table.go b/core/vm/jump_table.go index 329ad77cbf..6dea5d81f3 100644 --- a/core/vm/jump_table.go +++ b/core/vm/jump_table.go @@ -17,6 +17,8 @@ package vm import ( + "fmt" + "github.com/ethereum/go-ethereum/params" ) @@ -40,12 +42,6 @@ type operation struct { // memorySize returns the memory size required for the operation memorySize memorySizeFunc - - halts bool // indicates whether the operation should halt further execution - jumps bool // indicates whether the program counter should not increment - writes bool // determines whether this a state modifying operation - reverts bool // determines whether the operation reverts state (implicitly halts) - returns bool // determines whether the operations sets the return data content } var ( @@ -63,13 +59,31 @@ var ( // JumpTable contains the EVM opcodes supported at a given fork. type JumpTable [256]*operation +func validate(jt JumpTable) JumpTable { + for i, op := range jt { + if op == nil { + panic(fmt.Sprintf("op 0x%x is not set", i)) + } + // The interpreter has an assumption that if the memorySize function is + // set, then the dynamicGas function is also set. This is a somewhat + // arbitrary assumption, and can be removed if we need to -- but it + // allows us to avoid a condition check. As long as we have that assumption + // in there, this little sanity check prevents us from merging in a + // change which violates it. + if op.memorySize != nil && op.dynamicGas == nil { + panic(fmt.Sprintf("op %v has dynamic memory but not dynamic gas", OpCode(i).String())) + } + } + return jt +} + // newLondonInstructionSet returns the frontier, homestead, byzantium, // contantinople, istanbul, petersburg, berlin and london instructions. func newLondonInstructionSet() JumpTable { instructionSet := newBerlinInstructionSet() enable3529(&instructionSet) // EIP-3529: Reduction in refunds https://eips.ethereum.org/EIPS/eip-3529 enable3198(&instructionSet) // Base fee opcode https://eips.ethereum.org/EIPS/eip-3198 - return instructionSet + return validate(instructionSet) } // newBerlinInstructionSet returns the frontier, homestead, byzantium, @@ -77,7 +91,7 @@ func newLondonInstructionSet() JumpTable { func newBerlinInstructionSet() JumpTable { instructionSet := newIstanbulInstructionSet() enable2929(&instructionSet) // Access lists for trie accesses https://eips.ethereum.org/EIPS/eip-2929 - return instructionSet + return validate(instructionSet) } // newIstanbulInstructionSet returns the frontier, homestead, byzantium, @@ -89,7 +103,7 @@ func newIstanbulInstructionSet() JumpTable { enable1884(&instructionSet) // Reprice reader opcodes - https://eips.ethereum.org/EIPS/eip-1884 enable2200(&instructionSet) // Net metered SSTORE - https://eips.ethereum.org/EIPS/eip-2200 - return instructionSet + return validate(instructionSet) } // newConstantinopleInstructionSet returns the frontier, homestead, @@ -127,10 +141,8 @@ func newConstantinopleInstructionSet() JumpTable { minStack: minStack(4, 1), maxStack: maxStack(4, 1), memorySize: memoryCreate2, - writes: true, - returns: true, } - return instructionSet + return validate(instructionSet) } // newByzantiumInstructionSet returns the frontier, homestead and @@ -144,7 +156,6 @@ func newByzantiumInstructionSet() JumpTable { minStack: minStack(6, 1), maxStack: maxStack(6, 1), memorySize: memoryStaticCall, - returns: true, } instructionSet[RETURNDATASIZE] = &operation{ execute: opReturnDataSize, @@ -166,17 +177,15 @@ func newByzantiumInstructionSet() JumpTable { minStack: minStack(2, 0), maxStack: maxStack(2, 0), memorySize: memoryRevert, - reverts: true, - returns: true, } - return instructionSet + return validate(instructionSet) } // EIP 158 a.k.a Spurious Dragon func newSpuriousDragonInstructionSet() JumpTable { instructionSet := newTangerineWhistleInstructionSet() instructionSet[EXP].dynamicGas = gasExpEIP158 - return instructionSet + return validate(instructionSet) } @@ -190,7 +199,7 @@ func newTangerineWhistleInstructionSet() JumpTable { instructionSet[CALL].constantGas = params.CallGasEIP150 instructionSet[CALLCODE].constantGas = params.CallGasEIP150 instructionSet[DELEGATECALL].constantGas = params.CallGasEIP150 - return instructionSet + return validate(instructionSet) } // newHomesteadInstructionSet returns the frontier and homestead @@ -204,21 +213,19 @@ func newHomesteadInstructionSet() JumpTable { minStack: minStack(6, 1), maxStack: maxStack(6, 1), memorySize: memoryDelegateCall, - returns: true, } - return instructionSet + return validate(instructionSet) } // newFrontierInstructionSet returns the frontier instructions // that can be executed during the frontier phase. func newFrontierInstructionSet() JumpTable { - return JumpTable{ + tbl := JumpTable{ STOP: { execute: opStop, constantGas: 0, minStack: minStack(0, 0), maxStack: maxStack(0, 0), - halts: true, }, ADD: { execute: opAdd, @@ -352,13 +359,13 @@ func newFrontierInstructionSet() JumpTable { minStack: minStack(2, 1), maxStack: maxStack(2, 1), }, - SHA3: { - execute: opSha3, - constantGas: params.Sha3Gas, - dynamicGas: gasSha3, + KECCAK256: { + execute: opKeccak256, + constantGas: params.Keccak256Gas, + dynamicGas: gasKeccak256, minStack: minStack(2, 1), maxStack: maxStack(2, 1), - memorySize: memorySha3, + memorySize: memoryKeccak256, }, ADDRESS: { execute: opAddress, @@ -521,21 +528,18 @@ func newFrontierInstructionSet() JumpTable { dynamicGas: gasSStore, minStack: minStack(2, 0), maxStack: maxStack(2, 0), - writes: true, }, JUMP: { execute: opJump, constantGas: GasMidStep, minStack: minStack(1, 0), maxStack: maxStack(1, 0), - jumps: true, }, JUMPI: { execute: opJumpi, constantGas: GasSlowStep, minStack: minStack(2, 0), maxStack: maxStack(2, 0), - jumps: true, }, PC: { execute: opPc, @@ -951,7 +955,6 @@ func newFrontierInstructionSet() JumpTable { minStack: minStack(2, 0), maxStack: maxStack(2, 0), memorySize: memoryLog, - writes: true, }, LOG1: { execute: makeLog(1), @@ -959,7 +962,6 @@ func newFrontierInstructionSet() JumpTable { minStack: minStack(3, 0), maxStack: maxStack(3, 0), memorySize: memoryLog, - writes: true, }, LOG2: { execute: makeLog(2), @@ -967,7 +969,6 @@ func newFrontierInstructionSet() JumpTable { minStack: minStack(4, 0), maxStack: maxStack(4, 0), memorySize: memoryLog, - writes: true, }, LOG3: { execute: makeLog(3), @@ -975,7 +976,6 @@ func newFrontierInstructionSet() JumpTable { minStack: minStack(5, 0), maxStack: maxStack(5, 0), memorySize: memoryLog, - writes: true, }, LOG4: { execute: makeLog(4), @@ -983,7 +983,6 @@ func newFrontierInstructionSet() JumpTable { minStack: minStack(6, 0), maxStack: maxStack(6, 0), memorySize: memoryLog, - writes: true, }, CREATE: { execute: opCreate, @@ -992,8 +991,6 @@ func newFrontierInstructionSet() JumpTable { minStack: minStack(3, 1), maxStack: maxStack(3, 1), memorySize: memoryCreate, - writes: true, - returns: true, }, CALL: { execute: opCall, @@ -1002,7 +999,6 @@ func newFrontierInstructionSet() JumpTable { minStack: minStack(7, 1), maxStack: maxStack(7, 1), memorySize: memoryCall, - returns: true, }, CALLCODE: { execute: opCallCode, @@ -1011,7 +1007,6 @@ func newFrontierInstructionSet() JumpTable { minStack: minStack(7, 1), maxStack: maxStack(7, 1), memorySize: memoryCall, - returns: true, }, RETURN: { execute: opReturn, @@ -1019,15 +1014,21 @@ func newFrontierInstructionSet() JumpTable { minStack: minStack(2, 0), maxStack: maxStack(2, 0), memorySize: memoryReturn, - halts: true, }, SELFDESTRUCT: { - execute: opSuicide, + execute: opSelfdestruct, dynamicGas: gasSelfdestruct, minStack: minStack(1, 0), maxStack: maxStack(1, 0), - halts: true, - writes: true, }, } + + // Fill all unassigned slots with opUndefined. + for i, entry := range tbl { + if entry == nil { + tbl[i] = &operation{execute: opUndefined, maxStack: maxStack(0, 0)} + } + } + + return validate(tbl) } diff --git a/core/vm/logger.go b/core/vm/logger.go index 52dc0b8a0e..3af5aec199 100644 --- a/core/vm/logger.go +++ b/core/vm/logger.go @@ -1,4 +1,4 @@ -// Copyright 2015 The go-ethereum Authors +// Copyright 2021 The go-ethereum Authors // This file is part of the go-ethereum library. // // The go-ethereum library is free software: you can redistribute it and/or modify @@ -17,340 +17,22 @@ package vm import ( - "encoding/hex" - "fmt" - "io" "math/big" - "strings" "time" "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/hexutil" - "github.com/ethereum/go-ethereum/common/math" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/params" - "github.com/holiman/uint256" ) -// Storage represents a contract's storage. -type Storage map[common.Hash]common.Hash - -// Copy duplicates the current storage. -func (s Storage) Copy() Storage { - cpy := make(Storage) - for key, value := range s { - cpy[key] = value - } - return cpy -} - -// LogConfig are the configuration options for structured logger the EVM -type LogConfig struct { - EnableMemory bool // enable memory capture - DisableStack bool // disable stack capture - DisableStorage bool // disable storage capture - EnableReturnData bool // enable return data capture - Debug bool // print output during capture end - Limit int // maximum length of output, but zero means unlimited - // Chain overrides, can be used to execute a trace using future fork rules - Overrides *params.ChainConfig `json:"overrides,omitempty"` -} - -//go:generate gencodec -type StructLog -field-override structLogMarshaling -out gen_structlog.go - -// StructLog is emitted to the EVM each cycle and lists information about the current internal state -// prior to the execution of the statement. -type StructLog struct { - Pc uint64 `json:"pc"` - Op OpCode `json:"op"` - Gas uint64 `json:"gas"` - GasCost uint64 `json:"gasCost"` - Memory []byte `json:"memory"` - MemorySize int `json:"memSize"` - Stack []uint256.Int `json:"stack"` - ReturnData []byte `json:"returnData"` - Storage map[common.Hash]common.Hash `json:"-"` - Depth int `json:"depth"` - RefundCounter uint64 `json:"refund"` - Err error `json:"-"` -} - -// overrides for gencodec -type structLogMarshaling struct { - Gas math.HexOrDecimal64 - GasCost math.HexOrDecimal64 - Memory hexutil.Bytes - ReturnData hexutil.Bytes - OpName string `json:"opName"` // adds call to OpName() in MarshalJSON - ErrorString string `json:"error"` // adds call to ErrorString() in MarshalJSON -} - -// OpName formats the operand name in a human-readable format. -func (s *StructLog) OpName() string { - return s.Op.String() -} - -// ErrorString formats the log's error as a string. -func (s *StructLog) ErrorString() string { - if s.Err != nil { - return s.Err.Error() - } - return "" -} - -// Tracer is used to collect execution traces from an EVM transaction +// EVMLogger is used to collect execution traces from an EVM transaction // execution. CaptureState is called for each step of the VM with the // current VM state. // Note that reference types are actual VM data structures; make copies // if you need to retain them beyond the current call. -type Tracer interface { +type EVMLogger interface { CaptureStart(env *EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) - CaptureState(env *EVM, pc uint64, op OpCode, gas, cost uint64, scope *ScopeContext, rData []byte, depth int, err error) + CaptureState(pc uint64, op OpCode, gas, cost uint64, scope *ScopeContext, rData []byte, depth int, err error) CaptureEnter(typ OpCode, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) CaptureExit(output []byte, gasUsed uint64, err error) - CaptureFault(env *EVM, pc uint64, op OpCode, gas, cost uint64, scope *ScopeContext, depth int, err error) + CaptureFault(pc uint64, op OpCode, gas, cost uint64, scope *ScopeContext, depth int, err error) CaptureEnd(output []byte, gasUsed uint64, t time.Duration, err error) } - -// StructLogger is an EVM state logger and implements Tracer. -// -// StructLogger can capture state based on the given Log configuration and also keeps -// a track record of modified storage which is used in reporting snapshots of the -// contract their storage. -type StructLogger struct { - cfg LogConfig - - storage map[common.Address]Storage - logs []StructLog - output []byte - err error -} - -// NewStructLogger returns a new logger -func NewStructLogger(cfg *LogConfig) *StructLogger { - logger := &StructLogger{ - storage: make(map[common.Address]Storage), - } - if cfg != nil { - logger.cfg = *cfg - } - return logger -} - -// Reset clears the data held by the logger. -func (l *StructLogger) Reset() { - l.storage = make(map[common.Address]Storage) - l.output = make([]byte, 0) - l.logs = l.logs[:0] - l.err = nil -} - -// CaptureStart implements the Tracer interface to initialize the tracing operation. -func (l *StructLogger) CaptureStart(env *EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) { -} - -// CaptureState logs a new structured log message and pushes it out to the environment -// -// CaptureState also tracks SLOAD/SSTORE ops to track storage change. -func (l *StructLogger) CaptureState(env *EVM, pc uint64, op OpCode, gas, cost uint64, scope *ScopeContext, rData []byte, depth int, err error) { - memory := scope.Memory - stack := scope.Stack - contract := scope.Contract - // check if already accumulated the specified number of logs - if l.cfg.Limit != 0 && l.cfg.Limit <= len(l.logs) { - return - } - // Copy a snapshot of the current memory state to a new buffer - var mem []byte - if l.cfg.EnableMemory { - mem = make([]byte, len(memory.Data())) - copy(mem, memory.Data()) - } - // Copy a snapshot of the current stack state to a new buffer - var stck []uint256.Int - if !l.cfg.DisableStack { - stck = make([]uint256.Int, len(stack.Data())) - for i, item := range stack.Data() { - stck[i] = item - } - } - // Copy a snapshot of the current storage to a new container - var storage Storage - if !l.cfg.DisableStorage && (op == SLOAD || op == SSTORE) { - // initialise new changed values storage container for this contract - // if not present. - if l.storage[contract.Address()] == nil { - l.storage[contract.Address()] = make(Storage) - } - // capture SLOAD opcodes and record the read entry in the local storage - if op == SLOAD && stack.len() >= 1 { - var ( - address = common.Hash(stack.data[stack.len()-1].Bytes32()) - value = env.StateDB.GetState(contract.Address(), address) - ) - l.storage[contract.Address()][address] = value - storage = l.storage[contract.Address()].Copy() - } else if op == SSTORE && stack.len() >= 2 { - // capture SSTORE opcodes and record the written entry in the local storage. - var ( - value = common.Hash(stack.data[stack.len()-2].Bytes32()) - address = common.Hash(stack.data[stack.len()-1].Bytes32()) - ) - l.storage[contract.Address()][address] = value - storage = l.storage[contract.Address()].Copy() - } - } - var rdata []byte - if l.cfg.EnableReturnData { - rdata = make([]byte, len(rData)) - copy(rdata, rData) - } - // create a new snapshot of the EVM. - log := StructLog{pc, op, gas, cost, mem, memory.Len(), stck, rdata, storage, depth, env.StateDB.GetRefund(), err} - l.logs = append(l.logs, log) -} - -// CaptureFault implements the Tracer interface to trace an execution fault -// while running an opcode. -func (l *StructLogger) CaptureFault(env *EVM, pc uint64, op OpCode, gas, cost uint64, scope *ScopeContext, depth int, err error) { -} - -// CaptureEnd is called after the call finishes to finalize the tracing. -func (l *StructLogger) CaptureEnd(output []byte, gasUsed uint64, t time.Duration, err error) { - l.output = output - l.err = err - if l.cfg.Debug { - fmt.Printf("0x%x\n", output) - if err != nil { - fmt.Printf(" error: %v\n", err) - } - } -} - -func (l *StructLogger) CaptureEnter(typ OpCode, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) { -} - -func (l *StructLogger) CaptureExit(output []byte, gasUsed uint64, err error) {} - -// StructLogs returns the captured log entries. -func (l *StructLogger) StructLogs() []StructLog { return l.logs } - -// Error returns the VM error captured by the trace. -func (l *StructLogger) Error() error { return l.err } - -// Output returns the VM return value captured by the trace. -func (l *StructLogger) Output() []byte { return l.output } - -// WriteTrace writes a formatted trace to the given writer -func WriteTrace(writer io.Writer, logs []StructLog) { - for _, log := range logs { - fmt.Fprintf(writer, "%-16spc=%08d gas=%v cost=%v", log.Op, log.Pc, log.Gas, log.GasCost) - if log.Err != nil { - fmt.Fprintf(writer, " ERROR: %v", log.Err) - } - fmt.Fprintln(writer) - - if len(log.Stack) > 0 { - fmt.Fprintln(writer, "Stack:") - for i := len(log.Stack) - 1; i >= 0; i-- { - fmt.Fprintf(writer, "%08d %s\n", len(log.Stack)-i-1, log.Stack[i].Hex()) - } - } - if len(log.Memory) > 0 { - fmt.Fprintln(writer, "Memory:") - fmt.Fprint(writer, hex.Dump(log.Memory)) - } - if len(log.Storage) > 0 { - fmt.Fprintln(writer, "Storage:") - for h, item := range log.Storage { - fmt.Fprintf(writer, "%x: %x\n", h, item) - } - } - if len(log.ReturnData) > 0 { - fmt.Fprintln(writer, "ReturnData:") - fmt.Fprint(writer, hex.Dump(log.ReturnData)) - } - fmt.Fprintln(writer) - } -} - -// WriteLogs writes vm logs in a readable format to the given writer -func WriteLogs(writer io.Writer, logs []*types.Log) { - for _, log := range logs { - fmt.Fprintf(writer, "LOG%d: %x bn=%d txi=%x\n", len(log.Topics), log.Address, log.BlockNumber, log.TxIndex) - - for i, topic := range log.Topics { - fmt.Fprintf(writer, "%08d %x\n", i, topic) - } - - fmt.Fprint(writer, hex.Dump(log.Data)) - fmt.Fprintln(writer) - } -} - -type mdLogger struct { - out io.Writer - cfg *LogConfig -} - -// NewMarkdownLogger creates a logger which outputs information in a format adapted -// for human readability, and is also a valid markdown table -func NewMarkdownLogger(cfg *LogConfig, writer io.Writer) *mdLogger { - l := &mdLogger{writer, cfg} - if l.cfg == nil { - l.cfg = &LogConfig{} - } - return l -} - -func (t *mdLogger) CaptureStart(env *EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) { - if !create { - fmt.Fprintf(t.out, "From: `%v`\nTo: `%v`\nData: `0x%x`\nGas: `%d`\nValue `%v` wei\n", - from.String(), to.String(), - input, gas, value) - } else { - fmt.Fprintf(t.out, "From: `%v`\nCreate at: `%v`\nData: `0x%x`\nGas: `%d`\nValue `%v` wei\n", - from.String(), to.String(), - input, gas, value) - } - - fmt.Fprintf(t.out, ` -| Pc | Op | Cost | Stack | RStack | Refund | -|-------|-------------|------|-----------|-----------|---------| -`) -} - -// CaptureState also tracks SLOAD/SSTORE ops to track storage change. -func (t *mdLogger) CaptureState(env *EVM, pc uint64, op OpCode, gas, cost uint64, scope *ScopeContext, rData []byte, depth int, err error) { - stack := scope.Stack - fmt.Fprintf(t.out, "| %4d | %10v | %3d |", pc, op, cost) - - if !t.cfg.DisableStack { - // format stack - var a []string - for _, elem := range stack.data { - a = append(a, elem.Hex()) - } - b := fmt.Sprintf("[%v]", strings.Join(a, ",")) - fmt.Fprintf(t.out, "%10v |", b) - } - fmt.Fprintf(t.out, "%10v |", env.StateDB.GetRefund()) - fmt.Fprintln(t.out, "") - if err != nil { - fmt.Fprintf(t.out, "Error: %v\n", err) - } -} - -func (t *mdLogger) CaptureFault(env *EVM, pc uint64, op OpCode, gas, cost uint64, scope *ScopeContext, depth int, err error) { - fmt.Fprintf(t.out, "\nError: at pc=%d, op=%v: %v\n", pc, op, err) -} - -func (t *mdLogger) CaptureEnd(output []byte, gasUsed uint64, tm time.Duration, err error) { - fmt.Fprintf(t.out, "\nOutput: `0x%x`\nConsumed gas: `%d`\nError: `%v`\n", - output, gasUsed, err) -} - -func (t *mdLogger) CaptureEnter(typ OpCode, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) { -} - -func (t *mdLogger) CaptureExit(output []byte, gasUsed uint64, err error) {} diff --git a/core/vm/memory_table.go b/core/vm/memory_table.go index 4fcb41442c..e35ca84e0e 100644 --- a/core/vm/memory_table.go +++ b/core/vm/memory_table.go @@ -16,7 +16,7 @@ package vm -func memorySha3(stack *Stack) (uint64, bool) { +func memoryKeccak256(stack *Stack) (uint64, bool) { return calcMemSize64(stack.Back(0), stack.Back(1)) } diff --git a/core/vm/opcodes.go b/core/vm/opcodes.go index 286307ae91..a1833e5109 100644 --- a/core/vm/opcodes.go +++ b/core/vm/opcodes.go @@ -32,75 +32,70 @@ func (op OpCode) IsPush() bool { return false } -// IsStaticJump specifies if an opcode is JUMP. -func (op OpCode) IsStaticJump() bool { - return op == JUMP -} - // 0x0 range - arithmetic ops. const ( - STOP OpCode = iota - ADD - MUL - SUB - DIV - SDIV - MOD - SMOD - ADDMOD - MULMOD - EXP - SIGNEXTEND + STOP OpCode = 0x0 + ADD OpCode = 0x1 + MUL OpCode = 0x2 + SUB OpCode = 0x3 + DIV OpCode = 0x4 + SDIV OpCode = 0x5 + MOD OpCode = 0x6 + SMOD OpCode = 0x7 + ADDMOD OpCode = 0x8 + MULMOD OpCode = 0x9 + EXP OpCode = 0xa + SIGNEXTEND OpCode = 0xb ) // 0x10 range - comparison ops. const ( - LT OpCode = iota + 0x10 - GT - SLT - SGT - EQ - ISZERO - AND - OR - XOR - NOT - BYTE - SHL - SHR - SAR + LT OpCode = 0x10 + GT OpCode = 0x11 + SLT OpCode = 0x12 + SGT OpCode = 0x13 + EQ OpCode = 0x14 + ISZERO OpCode = 0x15 + AND OpCode = 0x16 + OR OpCode = 0x17 + XOR OpCode = 0x18 + NOT OpCode = 0x19 + BYTE OpCode = 0x1a + SHL OpCode = 0x1b + SHR OpCode = 0x1c + SAR OpCode = 0x1d - SHA3 OpCode = 0x20 + KECCAK256 OpCode = 0x20 ) // 0x30 range - closure state. const ( - ADDRESS OpCode = 0x30 + iota - BALANCE - ORIGIN - CALLER - CALLVALUE - CALLDATALOAD - CALLDATASIZE - CALLDATACOPY - CODESIZE - CODECOPY - GASPRICE - EXTCODESIZE - EXTCODECOPY - RETURNDATASIZE - RETURNDATACOPY - EXTCODEHASH + ADDRESS OpCode = 0x30 + BALANCE OpCode = 0x31 + ORIGIN OpCode = 0x32 + CALLER OpCode = 0x33 + CALLVALUE OpCode = 0x34 + CALLDATALOAD OpCode = 0x35 + CALLDATASIZE OpCode = 0x36 + CALLDATACOPY OpCode = 0x37 + CODESIZE OpCode = 0x38 + CODECOPY OpCode = 0x39 + GASPRICE OpCode = 0x3a + EXTCODESIZE OpCode = 0x3b + EXTCODECOPY OpCode = 0x3c + RETURNDATASIZE OpCode = 0x3d + RETURNDATACOPY OpCode = 0x3e + EXTCODEHASH OpCode = 0x3f ) // 0x40 range - block operations. const ( - BLOCKHASH OpCode = 0x40 + iota - COINBASE - TIMESTAMP - NUMBER - DIFFICULTY - GASLIMIT + BLOCKHASH OpCode = 0x40 + COINBASE OpCode = 0x41 + TIMESTAMP OpCode = 0x42 + NUMBER OpCode = 0x43 + DIFFICULTY OpCode = 0x44 + GASLIMIT OpCode = 0x45 CHAINID OpCode = 0x46 SELFBALANCE OpCode = 0x47 BASEFEE OpCode = 0x48 @@ -122,7 +117,7 @@ const ( JUMPDEST OpCode = 0x5b ) -// 0x60 range. +// 0x60 range - pushes. const ( PUSH1 OpCode = 0x60 + iota PUSH2 @@ -156,7 +151,11 @@ const ( PUSH30 PUSH31 PUSH32 - DUP1 +) + +// 0x80 range - dups. +const ( + DUP1 = 0x80 + iota DUP2 DUP3 DUP4 @@ -172,7 +171,11 @@ const ( DUP14 DUP15 DUP16 - SWAP1 +) + +// 0x90 range - swaps. +const ( + SWAP1 = 0x90 + iota SWAP2 SWAP3 SWAP4 @@ -199,23 +202,18 @@ const ( LOG4 ) -// unofficial opcodes used for parsing. -const ( - PUSH OpCode = 0xb0 + iota - DUP - SWAP -) - // 0xf0 range - closures. const ( - CREATE OpCode = 0xf0 + iota - CALL - CALLCODE - RETURN - DELEGATECALL - CREATE2 + CREATE OpCode = 0xf0 + CALL OpCode = 0xf1 + CALLCODE OpCode = 0xf2 + RETURN OpCode = 0xf3 + DELEGATECALL OpCode = 0xf4 + CREATE2 OpCode = 0xf5 + STATICCALL OpCode = 0xfa REVERT OpCode = 0xfd + INVALID OpCode = 0xfe SELFDESTRUCT OpCode = 0xff ) @@ -252,7 +250,7 @@ var opCodeToString = map[OpCode]string{ MULMOD: "MULMOD", // 0x20 range - crypto. - SHA3: "SHA3", + KECCAK256: "KECCAK256", // 0x30 range - closure state. ADDRESS: "ADDRESS", @@ -381,11 +379,8 @@ var opCodeToString = map[OpCode]string{ CREATE2: "CREATE2", STATICCALL: "STATICCALL", REVERT: "REVERT", + INVALID: "INVALID", SELFDESTRUCT: "SELFDESTRUCT", - - PUSH: "PUSH", - DUP: "DUP", - SWAP: "SWAP", } func (op OpCode) String() string { @@ -424,7 +419,7 @@ var stringToOp = map[string]OpCode{ "SAR": SAR, "ADDMOD": ADDMOD, "MULMOD": MULMOD, - "SHA3": SHA3, + "KECCAK256": KECCAK256, "ADDRESS": ADDRESS, "BALANCE": BALANCE, "ORIGIN": ORIGIN, @@ -539,6 +534,7 @@ var stringToOp = map[string]OpCode{ "RETURN": RETURN, "CALLCODE": CALLCODE, "REVERT": REVERT, + "INVALID": INVALID, "SELFDESTRUCT": SELFDESTRUCT, } diff --git a/core/vm/runtime/runtime_test.go b/core/vm/runtime/runtime_test.go index 9f4bafbc7f..97673b4906 100644 --- a/core/vm/runtime/runtime_test.go +++ b/core/vm/runtime/runtime_test.go @@ -34,7 +34,11 @@ import ( "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/eth/tracers" + "github.com/ethereum/go-ethereum/eth/tracers/logger" "github.com/ethereum/go-ethereum/params" + + // force-load js tracers to trigger registration + _ "github.com/ethereum/go-ethereum/eth/tracers/js" ) func TestDefaults(t *testing.T) { @@ -323,19 +327,19 @@ func TestBlockhash(t *testing.T) { } type stepCounter struct { - inner *vm.JSONLogger + inner *logger.JSONLogger steps int } func (s *stepCounter) CaptureStart(env *vm.EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) { } -func (s *stepCounter) CaptureFault(env *vm.EVM, pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, depth int, err error) { +func (s *stepCounter) CaptureFault(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, depth int, err error) { } func (s *stepCounter) CaptureEnd(output []byte, gasUsed uint64, t time.Duration, err error) {} -func (s *stepCounter) CaptureState(env *vm.EVM, pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, rData []byte, depth int, err error) { +func (s *stepCounter) CaptureState(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, rData []byte, depth int, err error) { s.steps++ // Enable this for more output //s.inner.CaptureState(env, pc, op, gas, cost, memory, stack, rStack, contract, depth, err) @@ -490,7 +494,7 @@ func BenchmarkSimpleLoop(b *testing.B) { byte(vm.JUMP), } - //tracer := vm.NewJSONLogger(nil, os.Stdout) + //tracer := logger.NewJSONLogger(nil, os.Stdout) //Execute(loopingCode, nil, &Config{ // EVMConfig: vm.Config{ // Debug: true, @@ -511,7 +515,7 @@ func BenchmarkSimpleLoop(b *testing.B) { // TestEip2929Cases contains various testcases that are used for // EIP-2929 about gas repricings func TestEip2929Cases(t *testing.T) { - + t.Skip("Test only useful for generating documentation") id := 1 prettyPrint := func(comment string, code []byte) { @@ -533,7 +537,7 @@ func TestEip2929Cases(t *testing.T) { Execute(code, nil, &Config{ EVMConfig: vm.Config{ Debug: true, - Tracer: vm.NewMarkdownLogger(nil, os.Stdout), + Tracer: logger.NewMarkdownLogger(nil, os.Stdout), ExtraEips: []int{2929}, }, }) @@ -683,7 +687,7 @@ func TestColdAccountAccessCost(t *testing.T) { want: 7600, }, } { - tracer := vm.NewStructLogger(nil) + tracer := logger.NewStructLogger(nil) Execute(tc.code, nil, &Config{ EVMConfig: vm.Config{ Debug: true, diff --git a/core/vm/stack.go b/core/vm/stack.go index 220f97c89f..9e7e887ccd 100644 --- a/core/vm/stack.go +++ b/core/vm/stack.go @@ -54,10 +54,6 @@ func (st *Stack) push(d *uint256.Int) { // NOTE push limit (1024) is checked in baseCheck st.data = append(st.data, *d) } -func (st *Stack) pushN(ds ...uint256.Int) { - // FIXME: Is there a way to pass args by pointers. - st.data = append(st.data, ds...) -} func (st *Stack) pop() (ret uint256.Int) { ret = st.data[len(st.data)-1] diff --git a/crypto/secp256k1/libsecp256k1/src/asm/field_10x26_arm.s b/crypto/secp256k1/libsecp256k1/src/asm/field_10x26_arm.s index 1e2d7ff961..5a9cc3ffcf 100644 --- a/crypto/secp256k1/libsecp256k1/src/asm/field_10x26_arm.s +++ b/crypto/secp256k1/libsecp256k1/src/asm/field_10x26_arm.s @@ -11,7 +11,7 @@ Note: - To avoid unnecessary loads and make use of available registers, two 'passes' have every time been interleaved, with the odd passes accumulating c' and d' - which will be added to c and d respectively in the the even passes + which will be added to c and d respectively in the even passes */ diff --git a/eth/api.go b/eth/api.go index 3ec72c58e4..f81dfa922b 100644 --- a/eth/api.go +++ b/eth/api.go @@ -170,7 +170,7 @@ func (api *PrivateAdminAPI) ExportChain(file string, first *uint64, last *uint64 last = &head } if _, err := os.Stat(file); err == nil { - // File already exists. Allowing overwrite could be a DoS vecotor, + // File already exists. Allowing overwrite could be a DoS vector, // since the 'file' may point to arbitrary paths on the drive return false, errors.New("location would overwrite an existing file") } diff --git a/eth/api_backend.go b/eth/api_backend.go index 01e68f6781..6577ac1e1a 100644 --- a/eth/api_backend.go +++ b/eth/api_backend.go @@ -187,7 +187,7 @@ func (b *EthAPIBackend) GetLogs(ctx context.Context, hash common.Hash) ([][]*typ if number == nil { return nil, errors.New("failed to get block number from hash") } - logs := rawdb.ReadLogs(db, hash, *number) + logs := rawdb.ReadLogs(db, hash, *number, b.eth.blockchain.Config()) if logs == nil { return nil, errors.New("failed to get logs for block") } @@ -352,8 +352,8 @@ func (b *EthAPIBackend) StartMining(threads int) error { return b.eth.StartMining(threads) } -func (b *EthAPIBackend) StateAtBlock(ctx context.Context, block *types.Block, reexec uint64, base *state.StateDB, checkLive bool) (*state.StateDB, error) { - return b.eth.stateAtBlock(block, reexec, base, checkLive) +func (b *EthAPIBackend) StateAtBlock(ctx context.Context, block *types.Block, reexec uint64, base *state.StateDB, checkLive, preferDisk bool) (*state.StateDB, error) { + return b.eth.StateAtBlock(block, reexec, base, checkLive, preferDisk) } func (b *EthAPIBackend) StateAtTransaction(ctx context.Context, block *types.Block, txIndex int, reexec uint64) (core.Message, vm.BlockContext, *state.StateDB, error) { diff --git a/eth/backend.go b/eth/backend.go index fe2637d37e..f1ece4f3fe 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -30,6 +30,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/consensus" + "github.com/ethereum/go-ethereum/consensus/beacon" "github.com/ethereum/go-ethereum/consensus/bor" "github.com/ethereum/go-ethereum/consensus/clique" "github.com/ethereum/go-ethereum/core" @@ -47,6 +48,7 @@ import ( "github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/event" "github.com/ethereum/go-ethereum/internal/ethapi" + "github.com/ethereum/go-ethereum/internal/shutdowncheck" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/miner" "github.com/ethereum/go-ethereum/node" @@ -72,6 +74,7 @@ type Ethereum struct { handler *handler ethDialCandidates enode.Iterator snapDialCandidates enode.Iterator + merger *consensus.Merger // DB interfaces chainDb ethdb.Database // Block chain database @@ -96,6 +99,8 @@ type Ethereum struct { p2pServer *p2p.Server lock sync.RWMutex // Protects the variadic fields (e.g. gas price and etherbase) + + shutdownTracker *shutdowncheck.ShutdownTracker // Tracks if and when the node has shutdown ungracefully } // New creates a new Ethereum object (including the @@ -132,7 +137,7 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { if err != nil { return nil, err } - chainConfig, genesisHash, genesisErr := core.SetupGenesisBlockWithOverride(chainDb, config.Genesis, config.OverrideLondon) + chainConfig, genesisHash, genesisErr := core.SetupGenesisBlockWithOverride(chainDb, config.Genesis, config.OverrideArrowGlacier, config.OverrideTerminalTotalDifficulty) if _, ok := genesisErr.(*params.ConfigCompatError); genesisErr != nil && !ok { return nil, genesisErr } @@ -141,8 +146,10 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { if err := pruner.RecoverPruning(stack.ResolvePath(""), chainDb, stack.ResolvePath(config.TrieCleanCacheJournal)); err != nil { log.Error("Failed to recover state", "error", err) } + merger := consensus.NewMerger(chainDb) eth := &Ethereum{ config: config, + merger: merger, chainDb: chainDb, eventMux: stack.EventMux(), accountManager: stack.AccountManager(), @@ -154,6 +161,7 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { bloomRequests: make(chan chan *bloombits.Retrieval), bloomIndexer: core.NewBloomIndexer(chainDb, params.BloomBitsBlocks, params.BloomConfirms), p2pServer: stack.Server(), + shutdownTracker: shutdowncheck.NewShutdownTracker(chainDb), } // START: Bor changes @@ -238,6 +246,7 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { Database: chainDb, Chain: eth.blockchain, TxPool: eth.txPool, + Merger: merger, Network: config.NetworkId, Sync: config.SyncMode, BloomCache: uint64(cacheLimit), @@ -248,7 +257,7 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { return nil, err } - eth.miner = miner.New(eth, &config.Miner, chainConfig, eth.EventMux(), eth.engine, eth.isLocalBlock) + eth.miner = miner.New(eth, &config.Miner, chainConfig, eth.EventMux(), eth.engine, eth.isLocalBlock, merger) eth.miner.SetExtra(makeExtraData(config.Miner.ExtraData)) // Setup DNS discovery iterators. @@ -269,19 +278,10 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { stack.RegisterAPIs(eth.APIs()) stack.RegisterProtocols(eth.Protocols()) stack.RegisterLifecycle(eth) - // Check for unclean shutdown - if uncleanShutdowns, discards, err := rawdb.PushUncleanShutdownMarker(chainDb); err != nil { - log.Error("Could not update unclean-shutdown-marker list", "error", err) - } else { - if discards > 0 { - log.Warn("Old unclean shutdowns found", "count", discards) - } - for _, tstamp := range uncleanShutdowns { - t := time.Unix(int64(tstamp), 0) - log.Warn("Unclean shutdown detected", "booted", t, - "age", common.PrettyAge(t)) - } - } + + // Successful startup; push a marker and check previous unclean shutdowns. + eth.shutdownTracker.MarkStartup() + return eth, nil } @@ -398,10 +398,10 @@ func (s *Ethereum) Etherbase() (eb common.Address, err error) { // // We regard two types of accounts as local miner account: etherbase // and accounts specified via `txpool.locals` flag. -func (s *Ethereum) isLocalBlock(block *types.Block) bool { - author, err := s.engine.Author(block.Header()) +func (s *Ethereum) isLocalBlock(header *types.Header) bool { + author, err := s.engine.Author(header) if err != nil { - log.Warn("Failed to retrieve block author", "number", block.NumberU64(), "hash", block.Hash(), "err", err) + log.Warn("Failed to retrieve block author", "number", header.Number.Uint64(), "hash", header.Hash(), "err", err) return false } // Check whether the given address is etherbase. @@ -424,7 +424,7 @@ func (s *Ethereum) isLocalBlock(block *types.Block) bool { // shouldPreserve checks whether we should preserve the given block // during the chain reorg depending on whether the author of block // is a local account. -func (s *Ethereum) shouldPreserve(block *types.Block) bool { +func (s *Ethereum) shouldPreserve(header *types.Header) bool { // The reason we need to disable the self-reorg preserving for clique // is it can be probable to introduce a deadlock. // @@ -444,7 +444,7 @@ func (s *Ethereum) shouldPreserve(block *types.Block) bool { if _, ok := s.engine.(*clique.Clique); ok { return false } - return s.isLocalBlock(block) + return s.isLocalBlock(header) } // SetEtherbase sets the mining reward address. @@ -485,13 +485,21 @@ func (s *Ethereum) StartMining(threads int) error { log.Error("Cannot start mining without etherbase", "err", err) return fmt.Errorf("etherbase missing: %v", err) } - if clique, ok := s.engine.(*clique.Clique); ok { + var cli *clique.Clique + if c, ok := s.engine.(*clique.Clique); ok { + cli = c + } else if cl, ok := s.engine.(*beacon.Beacon); ok { + if c, ok := cl.InnerEngine().(*clique.Clique); ok { + cli = c + } + } + if cli != nil { wallet, err := s.accountManager.Find(accounts.Account{Address: eb}) if wallet == nil || err != nil { log.Error("Etherbase account unavailable locally", "err", err) return fmt.Errorf("signer missing: %v", err) } - clique.Authorize(eb, wallet.SignData) + cli.Authorize(eb, wallet.SignData) } if bor, ok := s.engine.(*bor.Bor); ok { wallet, err := s.accountManager.Find(accounts.Account{Address: eb}) @@ -536,8 +544,14 @@ func (s *Ethereum) ChainDb() ethdb.Database { return s.chainDb } func (s *Ethereum) IsListening() bool { return true } // Always listening func (s *Ethereum) Downloader() *downloader.Downloader { return s.handler.downloader } func (s *Ethereum) Synced() bool { return atomic.LoadUint32(&s.handler.acceptTxs) == 1 } +func (s *Ethereum) SetSynced() { atomic.StoreUint32(&s.handler.acceptTxs, 1) } func (s *Ethereum) ArchiveMode() bool { return s.config.NoPruning } func (s *Ethereum) BloomIndexer() *core.ChainIndexer { return s.bloomIndexer } +func (s *Ethereum) Merger() *consensus.Merger { return s.merger } +func (s *Ethereum) SyncMode() downloader.SyncMode { + mode, _ := s.handler.chainSync.modeAndLocalHead() + return mode +} // Protocols returns all the currently configured // network protocols to start. @@ -557,6 +571,9 @@ func (s *Ethereum) Start() error { // Start the bloom bits servicing goroutines s.startBloomHandlers(params.BloomBitsBlocks) + // Regularly update shutdown marker + s.shutdownTracker.Start() + // Figure out a max peers count based on the server limits maxPeers := s.p2pServer.MaxPeers if s.config.LightServ > 0 { @@ -585,7 +602,10 @@ func (s *Ethereum) Stop() error { s.miner.Close() s.blockchain.Stop() s.engine.Close() - rawdb.PopUncleanShutdownMarker(s.chainDb) + + // Clean shutdown marker as the last thing before closing db + s.shutdownTracker.Stop() + s.chainDb.Close() s.eventMux.Stop() diff --git a/eth/catalyst/api.go b/eth/catalyst/api.go index 3913da7572..3c0b6d9e43 100644 --- a/eth/catalyst/api.go +++ b/eth/catalyst/api.go @@ -18,17 +18,23 @@ package catalyst import ( + "crypto/sha256" + "encoding/binary" "errors" "fmt" "math/big" "time" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/consensus" + "github.com/ethereum/go-ethereum/consensus/beacon" "github.com/ethereum/go-ethereum/consensus/misc" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/eth" + "github.com/ethereum/go-ethereum/les" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/node" chainParams "github.com/ethereum/go-ethereum/params" @@ -36,31 +42,81 @@ import ( "github.com/ethereum/go-ethereum/trie" ) -// Register adds catalyst APIs to the node. -func Register(stack *node.Node, backend *eth.Ethereum) error { - chainconfig := backend.BlockChain().Config() - if chainconfig.TerminalTotalDifficulty == nil { - return errors.New("catalyst started without valid total difficulty") - } +var ( + VALID = GenericStringResponse{"VALID"} + SUCCESS = GenericStringResponse{"SUCCESS"} + INVALID = ForkChoiceResponse{Status: "INVALID", PayloadID: nil} + SYNCING = ForkChoiceResponse{Status: "SYNCING", PayloadID: nil} + GenericServerError = rpc.CustomError{Code: -32000, ValidationError: "Server error"} + UnknownPayload = rpc.CustomError{Code: -32001, ValidationError: "Unknown payload"} + InvalidTB = rpc.CustomError{Code: -32002, ValidationError: "Invalid terminal block"} + InvalidPayloadID = rpc.CustomError{Code: 1, ValidationError: "invalid payload id"} +) - log.Warn("Catalyst mode enabled") +// Register adds catalyst APIs to the full node. +func Register(stack *node.Node, backend *eth.Ethereum) error { + log.Warn("Catalyst mode enabled", "protocol", "eth") stack.RegisterAPIs([]rpc.API{ { - Namespace: "consensus", + Namespace: "engine", Version: "1.0", - Service: newConsensusAPI(backend), + Service: NewConsensusAPI(backend, nil), Public: true, }, }) return nil } -type consensusAPI struct { - eth *eth.Ethereum +// RegisterLight adds catalyst APIs to the light client. +func RegisterLight(stack *node.Node, backend *les.LightEthereum) error { + log.Warn("Catalyst mode enabled", "protocol", "les") + stack.RegisterAPIs([]rpc.API{ + { + Namespace: "engine", + Version: "1.0", + Service: NewConsensusAPI(nil, backend), + Public: true, + }, + }) + return nil } -func newConsensusAPI(eth *eth.Ethereum) *consensusAPI { - return &consensusAPI{eth: eth} +type ConsensusAPI struct { + light bool + eth *eth.Ethereum + les *les.LightEthereum + engine consensus.Engine // engine is the post-merge consensus engine, only for block creation + preparedBlocks map[uint64]*ExecutableDataV1 +} + +func NewConsensusAPI(eth *eth.Ethereum, les *les.LightEthereum) *ConsensusAPI { + var engine consensus.Engine + if eth == nil { + if les.BlockChain().Config().TerminalTotalDifficulty == nil { + panic("Catalyst started without valid total difficulty") + } + if b, ok := les.Engine().(*beacon.Beacon); ok { + engine = beacon.New(b.InnerEngine()) + } else { + engine = beacon.New(les.Engine()) + } + } else { + if eth.BlockChain().Config().TerminalTotalDifficulty == nil { + panic("Catalyst started without valid total difficulty") + } + if b, ok := eth.Engine().(*beacon.Beacon); ok { + engine = beacon.New(b.InnerEngine()) + } else { + engine = beacon.New(eth.Engine()) + } + } + return &ConsensusAPI{ + light: eth == nil, + eth: eth, + les: les, + engine: engine, + preparedBlocks: make(map[uint64]*ExecutableDataV1), + } } // blockExecutionEnv gathers all the data required to execute @@ -89,8 +145,24 @@ func (env *blockExecutionEnv) commitTransaction(tx *types.Transaction, coinbase return nil } -func (api *consensusAPI) makeEnv(parent *types.Block, header *types.Header) (*blockExecutionEnv, error) { - state, err := api.eth.BlockChain().StateAt(parent.Root()) +func (api *ConsensusAPI) makeEnv(parent *types.Block, header *types.Header) (*blockExecutionEnv, error) { + // The parent state might be missing. It can be the special scenario + // that consensus layer tries to build a new block based on the very + // old side chain block and the relevant state is already pruned. So + // try to retrieve the live state from the chain, if it's not existent, + // do the necessary recovery work. + var ( + err error + state *state.StateDB + ) + if api.eth.BlockChain().HasState(parent.Root()) { + state, err = api.eth.BlockChain().StateAt(parent.Root()) + } else { + // The maximum acceptable reorg depth can be limited by the + // finalised block somehow. TODO(rjl493456442) fix the hard- + // coded number here later. + state, err = api.eth.StateAtBlock(parent, 1000, nil, false, false) + } if err != nil { return nil, err } @@ -103,57 +175,160 @@ func (api *consensusAPI) makeEnv(parent *types.Block, header *types.Header) (*bl return env, nil } +func (api *ConsensusAPI) GetPayloadV1(payloadID hexutil.Bytes) (*ExecutableDataV1, error) { + hash := []byte(payloadID) + if len(hash) < 8 { + return nil, &InvalidPayloadID + } + id := binary.BigEndian.Uint64(hash[:8]) + data, ok := api.preparedBlocks[id] + if !ok { + return nil, &UnknownPayload + } + return data, nil +} + +func (api *ConsensusAPI) ForkchoiceUpdatedV1(heads ForkchoiceStateV1, PayloadAttributes *PayloadAttributesV1) (ForkChoiceResponse, error) { + if heads.HeadBlockHash == (common.Hash{}) { + return ForkChoiceResponse{Status: SUCCESS.Status, PayloadID: nil}, nil + } + if err := api.checkTerminalTotalDifficulty(heads.HeadBlockHash); err != nil { + if block := api.eth.BlockChain().GetBlockByHash(heads.HeadBlockHash); block == nil { + // TODO (MariusVanDerWijden) trigger sync + return SYNCING, nil + } + return INVALID, err + } + // If the finalized block is set, check if it is in our blockchain + if heads.FinalizedBlockHash != (common.Hash{}) { + if block := api.eth.BlockChain().GetBlockByHash(heads.FinalizedBlockHash); block == nil { + // TODO (MariusVanDerWijden) trigger sync + return SYNCING, nil + } + } + // SetHead + if err := api.setHead(heads.HeadBlockHash); err != nil { + return INVALID, err + } + // Assemble block (if needed) + if PayloadAttributes != nil { + data, err := api.assembleBlock(heads.HeadBlockHash, PayloadAttributes) + if err != nil { + return INVALID, err + } + hash := computePayloadId(heads.HeadBlockHash, PayloadAttributes) + id := binary.BigEndian.Uint64(hash) + api.preparedBlocks[id] = data + log.Info("Created payload", "payloadid", id) + // TODO (MariusVanDerWijden) do something with the payloadID? + hex := hexutil.Bytes(hash) + return ForkChoiceResponse{Status: SUCCESS.Status, PayloadID: &hex}, nil + } + return ForkChoiceResponse{Status: SUCCESS.Status, PayloadID: nil}, nil +} + +func computePayloadId(headBlockHash common.Hash, params *PayloadAttributesV1) []byte { + // Hash + hasher := sha256.New() + hasher.Write(headBlockHash[:]) + binary.Write(hasher, binary.BigEndian, params.Timestamp) + hasher.Write(params.Random[:]) + hasher.Write(params.SuggestedFeeRecipient[:]) + return hasher.Sum([]byte{})[:8] +} + +func (api *ConsensusAPI) invalid() ExecutePayloadResponse { + if api.light { + return ExecutePayloadResponse{Status: INVALID.Status, LatestValidHash: api.les.BlockChain().CurrentHeader().Hash()} + } + return ExecutePayloadResponse{Status: INVALID.Status, LatestValidHash: api.eth.BlockChain().CurrentHeader().Hash()} +} + +// ExecutePayload creates an Eth1 block, inserts it in the chain, and returns the status of the chain. +func (api *ConsensusAPI) ExecutePayloadV1(params ExecutableDataV1) (ExecutePayloadResponse, error) { + block, err := ExecutableDataToBlock(params) + if err != nil { + return api.invalid(), err + } + if api.light { + parent := api.les.BlockChain().GetHeaderByHash(params.ParentHash) + if parent == nil { + return api.invalid(), fmt.Errorf("could not find parent %x", params.ParentHash) + } + if err = api.les.BlockChain().InsertHeader(block.Header()); err != nil { + return api.invalid(), err + } + return ExecutePayloadResponse{Status: VALID.Status, LatestValidHash: block.Hash()}, nil + } + if !api.eth.BlockChain().HasBlock(block.ParentHash(), block.NumberU64()-1) { + /* + TODO (MariusVanDerWijden) reenable once sync is merged + if err := api.eth.Downloader().BeaconSync(api.eth.SyncMode(), block.Header()); err != nil { + return SYNCING, err + } + */ + // TODO (MariusVanDerWijden) we should return nil here not empty hash + return ExecutePayloadResponse{Status: SYNCING.Status, LatestValidHash: common.Hash{}}, nil + } + parent := api.eth.BlockChain().GetBlockByHash(params.ParentHash) + td := api.eth.BlockChain().GetTd(parent.Hash(), block.NumberU64()-1) + ttd := api.eth.BlockChain().Config().TerminalTotalDifficulty + if td.Cmp(ttd) < 0 { + return api.invalid(), fmt.Errorf("can not execute payload on top of block with low td got: %v threshold %v", td, ttd) + } + if err := api.eth.BlockChain().InsertBlockWithoutSetHead(block); err != nil { + return api.invalid(), err + } + + if merger := api.merger(); !merger.TDDReached() { + merger.ReachTTD() + } + return ExecutePayloadResponse{Status: VALID.Status, LatestValidHash: block.Hash()}, nil +} + // AssembleBlock creates a new block, inserts it into the chain, and returns the "execution // data" required for eth2 clients to process the new block. -func (api *consensusAPI) AssembleBlock(params assembleBlockParams) (*executableData, error) { - log.Info("Producing block", "parentHash", params.ParentHash) +func (api *ConsensusAPI) assembleBlock(parentHash common.Hash, params *PayloadAttributesV1) (*ExecutableDataV1, error) { + if api.light { + return nil, errors.New("not supported") + } + log.Info("Producing block", "parentHash", parentHash) bc := api.eth.BlockChain() - parent := bc.GetBlockByHash(params.ParentHash) + parent := bc.GetBlockByHash(parentHash) if parent == nil { - log.Warn("Cannot assemble block with parent hash to unknown block", "parentHash", params.ParentHash) - return nil, fmt.Errorf("cannot assemble block with unknown parent %s", params.ParentHash) + log.Warn("Cannot assemble block with parent hash to unknown block", "parentHash", parentHash) + return nil, fmt.Errorf("cannot assemble block with unknown parent %s", parentHash) } - pool := api.eth.TxPool() - - if parent.Time() >= params.Timestamp { - return nil, fmt.Errorf("child timestamp lower than parent's: %d >= %d", parent.Time(), params.Timestamp) + if params.Timestamp < parent.Time() { + return nil, fmt.Errorf("child timestamp lower than parent's: %d < %d", params.Timestamp, parent.Time()) } if now := uint64(time.Now().Unix()); params.Timestamp > now+1 { - wait := time.Duration(params.Timestamp-now) * time.Second - log.Info("Producing block too far in the future", "wait", common.PrettyDuration(wait)) - time.Sleep(wait) - } - - pending := pool.Pending(true) - - coinbase, err := api.eth.Etherbase() - if err != nil { - return nil, err + diff := time.Duration(params.Timestamp-now) * time.Second + log.Warn("Producing block too far in the future", "diff", common.PrettyDuration(diff)) } + pending := api.eth.TxPool().Pending(true) + coinbase := params.SuggestedFeeRecipient num := parent.Number() header := &types.Header{ ParentHash: parent.Hash(), Number: num.Add(num, common.Big1), Coinbase: coinbase, GasLimit: parent.GasLimit(), // Keep the gas limit constant in this prototype - Extra: []byte{}, + Extra: []byte{}, // TODO (MariusVanDerWijden) properly set extra data Time: params.Timestamp, } if config := api.eth.BlockChain().Config(); config.IsLondon(header.Number) { header.BaseFee = misc.CalcBaseFee(config, parent.Header()) } - err = api.eth.Engine().Prepare(bc, header) - if err != nil { + if err := api.engine.Prepare(bc, header); err != nil { return nil, err } - env, err := api.makeEnv(parent, header) if err != nil { return nil, err } - var ( signer = types.MakeSigner(bc.Config(), header.Number) txHeap = types.NewTransactionsByPriceAndNonce(signer, pending, nil) @@ -204,25 +379,12 @@ func (api *consensusAPI) AssembleBlock(params assembleBlockParams) (*executableD txHeap.Shift() } } - // Create the block. - block, err := api.eth.Engine().FinalizeAndAssemble(bc, header, env.state, transactions, nil /* uncles */, env.receipts) + block, err := api.engine.FinalizeAndAssemble(bc, header, env.state, transactions, nil /* uncles */, env.receipts) if err != nil { return nil, err } - return &executableData{ - BlockHash: block.Hash(), - ParentHash: block.ParentHash(), - Miner: block.Coinbase(), - StateRoot: block.Root(), - Number: block.NumberU64(), - GasLimit: block.GasLimit(), - GasUsed: block.GasUsed(), - Timestamp: block.Time(), - ReceiptRoot: block.ReceiptHash(), - LogsBloom: block.Bloom().Bytes(), - Transactions: encodeTransactions(block.Transactions()), - }, nil + return BlockToExecutableData(block, params.Random), nil } func encodeTransactions(txs []*types.Transaction) [][]byte { @@ -245,66 +407,130 @@ func decodeTransactions(enc [][]byte) ([]*types.Transaction, error) { return txs, nil } -func insertBlockParamsToBlock(config *chainParams.ChainConfig, parent *types.Header, params executableData) (*types.Block, error) { +func ExecutableDataToBlock(params ExecutableDataV1) (*types.Block, error) { txs, err := decodeTransactions(params.Transactions) if err != nil { return nil, err } - + if len(params.ExtraData) > 32 { + return nil, fmt.Errorf("invalid extradata length: %v", len(params.ExtraData)) + } number := big.NewInt(0) number.SetUint64(params.Number) header := &types.Header{ ParentHash: params.ParentHash, UncleHash: types.EmptyUncleHash, - Coinbase: params.Miner, + Coinbase: params.FeeRecipient, Root: params.StateRoot, TxHash: types.DeriveSha(types.Transactions(txs), trie.NewStackTrie(nil)), - ReceiptHash: params.ReceiptRoot, + ReceiptHash: params.ReceiptsRoot, Bloom: types.BytesToBloom(params.LogsBloom), - Difficulty: big.NewInt(1), + Difficulty: common.Big0, Number: number, GasLimit: params.GasLimit, GasUsed: params.GasUsed, Time: params.Timestamp, - } - if config.IsLondon(number) { - header.BaseFee = misc.CalcBaseFee(config, parent) + BaseFee: params.BaseFeePerGas, + Extra: params.ExtraData, + // TODO (MariusVanDerWijden) add params.Random to header once required } block := types.NewBlockWithHeader(header).WithBody(txs, nil /* uncles */) + if block.Hash() != params.BlockHash { + return nil, fmt.Errorf("blockhash mismatch, want %x, got %x", params.BlockHash, block.Hash()) + } return block, nil } -// NewBlock creates an Eth1 block, inserts it in the chain, and either returns true, -// or false + an error. This is a bit redundant for go, but simplifies things on the -// eth2 side. -func (api *consensusAPI) NewBlock(params executableData) (*newBlockResponse, error) { - parent := api.eth.BlockChain().GetBlockByHash(params.ParentHash) - if parent == nil { - return &newBlockResponse{false}, fmt.Errorf("could not find parent %x", params.ParentHash) +func BlockToExecutableData(block *types.Block, random common.Hash) *ExecutableDataV1 { + return &ExecutableDataV1{ + BlockHash: block.Hash(), + ParentHash: block.ParentHash(), + FeeRecipient: block.Coinbase(), + StateRoot: block.Root(), + Number: block.NumberU64(), + GasLimit: block.GasLimit(), + GasUsed: block.GasUsed(), + BaseFeePerGas: block.BaseFee(), + Timestamp: block.Time(), + ReceiptsRoot: block.ReceiptHash(), + LogsBloom: block.Bloom().Bytes(), + Transactions: encodeTransactions(block.Transactions()), + Random: random, + ExtraData: block.Extra(), } - block, err := insertBlockParamsToBlock(api.eth.BlockChain().Config(), parent.Header(), params) - if err != nil { - return nil, err - } - _, err = api.eth.BlockChain().InsertChainWithoutSealVerification(block) - return &newBlockResponse{err == nil}, err } // Used in tests to add a the list of transactions from a block to the tx pool. -func (api *consensusAPI) addBlockTxs(block *types.Block) error { - for _, tx := range block.Transactions() { +func (api *ConsensusAPI) insertTransactions(txs types.Transactions) error { + for _, tx := range txs { api.eth.TxPool().AddLocal(tx) } return nil } -// FinalizeBlock is called to mark a block as synchronized, so -// that data that is no longer needed can be removed. -func (api *consensusAPI) FinalizeBlock(blockHash common.Hash) (*genericResponse, error) { - return &genericResponse{true}, nil +func (api *ConsensusAPI) checkTerminalTotalDifficulty(head common.Hash) error { + // shortcut if we entered PoS already + if api.merger().PoSFinalized() { + return nil + } + // make sure the parent has enough terminal total difficulty + newHeadBlock := api.eth.BlockChain().GetBlockByHash(head) + if newHeadBlock == nil { + return &GenericServerError + } + td := api.eth.BlockChain().GetTd(newHeadBlock.Hash(), newHeadBlock.NumberU64()) + if td != nil && td.Cmp(api.eth.BlockChain().Config().TerminalTotalDifficulty) < 0 { + return &InvalidTB + } + return nil } -// SetHead is called to perform a force choice. -func (api *consensusAPI) SetHead(newHead common.Hash) (*genericResponse, error) { - return &genericResponse{true}, nil +// setHead is called to perform a force choice. +func (api *ConsensusAPI) setHead(newHead common.Hash) error { + log.Info("Setting head", "head", newHead) + if api.light { + headHeader := api.les.BlockChain().CurrentHeader() + if headHeader.Hash() == newHead { + return nil + } + newHeadHeader := api.les.BlockChain().GetHeaderByHash(newHead) + if newHeadHeader == nil { + return &GenericServerError + } + if err := api.les.BlockChain().SetChainHead(newHeadHeader); err != nil { + return err + } + // Trigger the transition if it's the first `NewHead` event. + merger := api.merger() + if !merger.PoSFinalized() { + merger.FinalizePoS() + } + return nil + } + headBlock := api.eth.BlockChain().CurrentBlock() + if headBlock.Hash() == newHead { + return nil + } + newHeadBlock := api.eth.BlockChain().GetBlockByHash(newHead) + if newHeadBlock == nil { + return &GenericServerError + } + if err := api.eth.BlockChain().SetChainHead(newHeadBlock); err != nil { + return err + } + // Trigger the transition if it's the first `NewHead` event. + if merger := api.merger(); !merger.PoSFinalized() { + merger.FinalizePoS() + } + // TODO (MariusVanDerWijden) are we really synced now? + api.eth.SetSynced() + return nil +} + +// Helper function, return the merger instance. +func (api *ConsensusAPI) merger() *consensus.Merger { + if api.light { + return api.les.Merger() + } + return api.eth.Merger() } diff --git a/eth/catalyst/api_test.go b/eth/catalyst/api_test.go index 1104208630..6e52c4fea2 100644 --- a/eth/catalyst/api_test.go +++ b/eth/catalyst/api_test.go @@ -19,7 +19,10 @@ package catalyst import ( "math/big" "testing" + "time" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/consensus/ethash" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/rawdb" @@ -38,10 +41,10 @@ var ( // testAddr is the Ethereum address of the tester account. testAddr = crypto.PubkeyToAddress(testKey.PublicKey) - testBalance = big.NewInt(2e15) + testBalance = big.NewInt(2e18) ) -func generateTestChain() (*core.Genesis, []*types.Block) { +func generatePreMergeChain(n int) (*core.Genesis, []*types.Block) { db := rawdb.NewMemoryDatabase() config := params.AllEthashProtocolChanges genesis := &core.Genesis{ @@ -51,177 +54,280 @@ func generateTestChain() (*core.Genesis, []*types.Block) { Timestamp: 9000, BaseFee: big.NewInt(params.InitialBaseFee), } + testNonce := uint64(0) generate := func(i int, g *core.BlockGen) { g.OffsetTime(5) g.SetExtra([]byte("test")) - } - gblock := genesis.ToBlock(db) - engine := ethash.NewFaker() - blocks, _ := core.GenerateChain(config, gblock, engine, db, 10, generate) - blocks = append([]*types.Block{gblock}, blocks...) - return genesis, blocks -} - -// TODO (MariusVanDerWijden) reenable once engine api is updated to the latest spec -/* -func generateTestChainWithFork(n int, fork int) (*core.Genesis, []*types.Block, []*types.Block) { - if fork >= n { - fork = n - 1 - } - db := rawdb.NewMemoryDatabase() - config := ¶ms.ChainConfig{ - ChainID: big.NewInt(1337), - HomesteadBlock: big.NewInt(0), - EIP150Block: big.NewInt(0), - EIP155Block: big.NewInt(0), - EIP158Block: big.NewInt(0), - ByzantiumBlock: big.NewInt(0), - ConstantinopleBlock: big.NewInt(0), - PetersburgBlock: big.NewInt(0), - IstanbulBlock: big.NewInt(0), - MuirGlacierBlock: big.NewInt(0), - BerlinBlock: big.NewInt(0), - LondonBlock: big.NewInt(0), - TerminalTotalDifficulty: big.NewInt(0), - Ethash: new(params.EthashConfig), - } - genesis := &core.Genesis{ - Config: config, - Alloc: core.GenesisAlloc{testAddr: {Balance: testBalance}}, - ExtraData: []byte("test genesis"), - Timestamp: 9000, - BaseFee: big.NewInt(params.InitialBaseFee), - } - generate := func(i int, g *core.BlockGen) { - g.OffsetTime(5) - g.SetExtra([]byte("test")) - } - generateFork := func(i int, g *core.BlockGen) { - g.OffsetTime(5) - g.SetExtra([]byte("testF")) + tx, _ := types.SignTx(types.NewTransaction(testNonce, common.HexToAddress("0x9a9070028361F7AAbeB3f2F2Dc07F82C4a98A02a"), big.NewInt(1), params.TxGas, big.NewInt(params.InitialBaseFee*2), nil), types.LatestSigner(config), testKey) + g.AddTx(tx) + testNonce++ } gblock := genesis.ToBlock(db) engine := ethash.NewFaker() blocks, _ := core.GenerateChain(config, gblock, engine, db, n, generate) - blocks = append([]*types.Block{gblock}, blocks...) - forkedBlocks, _ := core.GenerateChain(config, blocks[fork], engine, db, n-fork, generateFork) - return genesis, blocks, forkedBlocks + totalDifficulty := big.NewInt(0) + for _, b := range blocks { + totalDifficulty.Add(totalDifficulty, b.Difficulty()) + } + config.TerminalTotalDifficulty = totalDifficulty + return genesis, blocks } -*/ func TestEth2AssembleBlock(t *testing.T) { - genesis, blocks := generateTestChain() - n, ethservice := startEthService(t, genesis, blocks[1:9]) + genesis, blocks := generatePreMergeChain(10) + n, ethservice := startEthService(t, genesis, blocks) defer n.Close() - api := newConsensusAPI(ethservice) + api := NewConsensusAPI(ethservice, nil) signer := types.NewEIP155Signer(ethservice.BlockChain().Config().ChainID) - tx, err := types.SignTx(types.NewTransaction(0, blocks[8].Coinbase(), big.NewInt(1000), params.TxGas, big.NewInt(params.InitialBaseFee), nil), signer, testKey) + tx, err := types.SignTx(types.NewTransaction(uint64(10), blocks[9].Coinbase(), big.NewInt(1000), params.TxGas, big.NewInt(params.InitialBaseFee), nil), signer, testKey) if err != nil { t.Fatalf("error signing transaction, err=%v", err) } ethservice.TxPool().AddLocal(tx) - blockParams := assembleBlockParams{ - ParentHash: blocks[8].ParentHash(), - Timestamp: blocks[8].Time(), + blockParams := PayloadAttributesV1{ + Timestamp: blocks[9].Time() + 5, } - execData, err := api.AssembleBlock(blockParams) - + execData, err := api.assembleBlock(blocks[9].Hash(), &blockParams) if err != nil { t.Fatalf("error producing block, err=%v", err) } - if len(execData.Transactions) != 1 { t.Fatalf("invalid number of transactions %d != 1", len(execData.Transactions)) } } func TestEth2AssembleBlockWithAnotherBlocksTxs(t *testing.T) { - genesis, blocks := generateTestChain() - n, ethservice := startEthService(t, genesis, blocks[1:9]) + genesis, blocks := generatePreMergeChain(10) + n, ethservice := startEthService(t, genesis, blocks[:9]) defer n.Close() - api := newConsensusAPI(ethservice) + api := NewConsensusAPI(ethservice, nil) // Put the 10th block's tx in the pool and produce a new block - api.addBlockTxs(blocks[9]) - blockParams := assembleBlockParams{ - ParentHash: blocks[9].ParentHash(), - Timestamp: blocks[9].Time(), + api.insertTransactions(blocks[9].Transactions()) + blockParams := PayloadAttributesV1{ + Timestamp: blocks[8].Time() + 5, } - execData, err := api.AssembleBlock(blockParams) + execData, err := api.assembleBlock(blocks[8].Hash(), &blockParams) if err != nil { t.Fatalf("error producing block, err=%v", err) } - if len(execData.Transactions) != blocks[9].Transactions().Len() { t.Fatalf("invalid number of transactions %d != 1", len(execData.Transactions)) } } -// TODO (MariusVanDerWijden) reenable once engine api is updated to the latest spec -/* -func TestEth2NewBlock(t *testing.T) { - genesis, blocks, forkedBlocks := generateTestChainWithFork(10, 4) - n, ethservice := startEthService(t, genesis, blocks[1:5]) +func TestSetHeadBeforeTotalDifficulty(t *testing.T) { + genesis, blocks := generatePreMergeChain(10) + n, ethservice := startEthService(t, genesis, blocks) defer n.Close() - api := newConsensusAPI(ethservice) - for i := 5; i < 10; i++ { - p := executableData{ - ParentHash: ethservice.BlockChain().CurrentBlock().Hash(), - Miner: blocks[i].Coinbase(), - StateRoot: blocks[i].Root(), - GasLimit: blocks[i].GasLimit(), - GasUsed: blocks[i].GasUsed(), - Transactions: encodeTransactions(blocks[i].Transactions()), - ReceiptRoot: blocks[i].ReceiptHash(), - LogsBloom: blocks[i].Bloom().Bytes(), - BlockHash: blocks[i].Hash(), - Timestamp: blocks[i].Time(), - Number: uint64(i), - } - success, err := api.NewBlock(p) - if err != nil || !success.Valid { - t.Fatalf("Failed to insert block: %v", err) - } + api := NewConsensusAPI(ethservice, nil) + fcState := ForkchoiceStateV1{ + HeadBlockHash: blocks[5].Hash(), + SafeBlockHash: common.Hash{}, + FinalizedBlockHash: common.Hash{}, } - - exp := ethservice.BlockChain().CurrentBlock().Hash() - - // Introduce the fork point. - lastBlockNum := blocks[4].Number() - lastBlock := blocks[4] - for i := 0; i < 4; i++ { - lastBlockNum.Add(lastBlockNum, big.NewInt(1)) - p := executableData{ - ParentHash: lastBlock.Hash(), - Miner: forkedBlocks[i].Coinbase(), - StateRoot: forkedBlocks[i].Root(), - Number: lastBlockNum.Uint64(), - GasLimit: forkedBlocks[i].GasLimit(), - GasUsed: forkedBlocks[i].GasUsed(), - Transactions: encodeTransactions(blocks[i].Transactions()), - ReceiptRoot: forkedBlocks[i].ReceiptHash(), - LogsBloom: forkedBlocks[i].Bloom().Bytes(), - BlockHash: forkedBlocks[i].Hash(), - Timestamp: forkedBlocks[i].Time(), - } - success, err := api.NewBlock(p) - if err != nil || !success.Valid { - t.Fatalf("Failed to insert forked block #%d: %v", i, err) - } - lastBlock, err = insertBlockParamsToBlock(ethservice.BlockChain().Config(), lastBlock.Header(), p) - if err != nil { - t.Fatal(err) - } - } - - if ethservice.BlockChain().CurrentBlock().Hash() != exp { - t.Fatalf("Wrong head after inserting fork %x != %x", exp, ethservice.BlockChain().CurrentBlock().Hash()) + if _, err := api.ForkchoiceUpdatedV1(fcState, nil); err == nil { + t.Errorf("fork choice updated before total terminal difficulty should fail") } } -*/ + +func TestEth2PrepareAndGetPayload(t *testing.T) { + genesis, blocks := generatePreMergeChain(10) + // We need to properly set the terminal total difficulty + genesis.Config.TerminalTotalDifficulty.Sub(genesis.Config.TerminalTotalDifficulty, blocks[9].Difficulty()) + n, ethservice := startEthService(t, genesis, blocks[:9]) + defer n.Close() + + api := NewConsensusAPI(ethservice, nil) + + // Put the 10th block's tx in the pool and produce a new block + api.insertTransactions(blocks[9].Transactions()) + blockParams := PayloadAttributesV1{ + Timestamp: blocks[8].Time() + 5, + } + fcState := ForkchoiceStateV1{ + HeadBlockHash: blocks[8].Hash(), + SafeBlockHash: common.Hash{}, + FinalizedBlockHash: common.Hash{}, + } + _, err := api.ForkchoiceUpdatedV1(fcState, &blockParams) + if err != nil { + t.Fatalf("error preparing payload, err=%v", err) + } + payloadID := computePayloadId(fcState.HeadBlockHash, &blockParams) + execData, err := api.GetPayloadV1(hexutil.Bytes(payloadID)) + if err != nil { + t.Fatalf("error getting payload, err=%v", err) + } + if len(execData.Transactions) != blocks[9].Transactions().Len() { + t.Fatalf("invalid number of transactions %d != 1", len(execData.Transactions)) + } +} + +func checkLogEvents(t *testing.T, logsCh <-chan []*types.Log, rmLogsCh <-chan core.RemovedLogsEvent, wantNew, wantRemoved int) { + t.Helper() + + if len(logsCh) != wantNew { + t.Fatalf("wrong number of log events: got %d, want %d", len(logsCh), wantNew) + } + if len(rmLogsCh) != wantRemoved { + t.Fatalf("wrong number of removed log events: got %d, want %d", len(rmLogsCh), wantRemoved) + } + // Drain events. + for i := 0; i < len(logsCh); i++ { + <-logsCh + } + for i := 0; i < len(rmLogsCh); i++ { + <-rmLogsCh + } +} + +func TestEth2NewBlock(t *testing.T) { + genesis, preMergeBlocks := generatePreMergeChain(10) + n, ethservice := startEthService(t, genesis, preMergeBlocks) + ethservice.Merger().ReachTTD() + defer n.Close() + + var ( + api = NewConsensusAPI(ethservice, nil) + parent = preMergeBlocks[len(preMergeBlocks)-1] + + // This EVM code generates a log when the contract is created. + logCode = common.Hex2Bytes("60606040525b7f24ec1d3ff24c2f6ff210738839dbc339cd45a5294d85c79361016243157aae7b60405180905060405180910390a15b600a8060416000396000f360606040526008565b00") + ) + // The event channels. + newLogCh := make(chan []*types.Log, 10) + rmLogsCh := make(chan core.RemovedLogsEvent, 10) + ethservice.BlockChain().SubscribeLogsEvent(newLogCh) + ethservice.BlockChain().SubscribeRemovedLogsEvent(rmLogsCh) + + for i := 0; i < 10; i++ { + statedb, _ := ethservice.BlockChain().StateAt(parent.Root()) + nonce := statedb.GetNonce(testAddr) + tx, _ := types.SignTx(types.NewContractCreation(nonce, new(big.Int), 1000000, big.NewInt(2*params.InitialBaseFee), logCode), types.LatestSigner(ethservice.BlockChain().Config()), testKey) + ethservice.TxPool().AddLocal(tx) + + execData, err := api.assembleBlock(parent.Hash(), &PayloadAttributesV1{ + Timestamp: parent.Time() + 5, + }) + if err != nil { + t.Fatalf("Failed to create the executable data %v", err) + } + block, err := ExecutableDataToBlock(*execData) + if err != nil { + t.Fatalf("Failed to convert executable data to block %v", err) + } + newResp, err := api.ExecutePayloadV1(*execData) + if err != nil || newResp.Status != "VALID" { + t.Fatalf("Failed to insert block: %v", err) + } + if ethservice.BlockChain().CurrentBlock().NumberU64() != block.NumberU64()-1 { + t.Fatalf("Chain head shouldn't be updated") + } + checkLogEvents(t, newLogCh, rmLogsCh, 0, 0) + fcState := ForkchoiceStateV1{ + HeadBlockHash: block.Hash(), + SafeBlockHash: block.Hash(), + FinalizedBlockHash: block.Hash(), + } + if _, err := api.ForkchoiceUpdatedV1(fcState, nil); err != nil { + t.Fatalf("Failed to insert block: %v", err) + } + if ethservice.BlockChain().CurrentBlock().NumberU64() != block.NumberU64() { + t.Fatalf("Chain head should be updated") + } + checkLogEvents(t, newLogCh, rmLogsCh, 1, 0) + + parent = block + } + + // Introduce fork chain + var ( + head = ethservice.BlockChain().CurrentBlock().NumberU64() + ) + parent = preMergeBlocks[len(preMergeBlocks)-1] + for i := 0; i < 10; i++ { + execData, err := api.assembleBlock(parent.Hash(), &PayloadAttributesV1{ + Timestamp: parent.Time() + 6, + }) + if err != nil { + t.Fatalf("Failed to create the executable data %v", err) + } + block, err := ExecutableDataToBlock(*execData) + if err != nil { + t.Fatalf("Failed to convert executable data to block %v", err) + } + newResp, err := api.ExecutePayloadV1(*execData) + if err != nil || newResp.Status != "VALID" { + t.Fatalf("Failed to insert block: %v", err) + } + if ethservice.BlockChain().CurrentBlock().NumberU64() != head { + t.Fatalf("Chain head shouldn't be updated") + } + + fcState := ForkchoiceStateV1{ + HeadBlockHash: block.Hash(), + SafeBlockHash: block.Hash(), + FinalizedBlockHash: block.Hash(), + } + if _, err := api.ForkchoiceUpdatedV1(fcState, nil); err != nil { + t.Fatalf("Failed to insert block: %v", err) + } + if ethservice.BlockChain().CurrentBlock().NumberU64() != block.NumberU64() { + t.Fatalf("Chain head should be updated") + } + parent, head = block, block.NumberU64() + } +} + +func TestEth2DeepReorg(t *testing.T) { + // TODO (MariusVanDerWijden) TestEth2DeepReorg is currently broken, because it tries to reorg + // before the totalTerminalDifficulty threshold + /* + genesis, preMergeBlocks := generatePreMergeChain(core.TriesInMemory * 2) + n, ethservice := startEthService(t, genesis, preMergeBlocks) + defer n.Close() + + var ( + api = NewConsensusAPI(ethservice, nil) + parent = preMergeBlocks[len(preMergeBlocks)-core.TriesInMemory-1] + head = ethservice.BlockChain().CurrentBlock().NumberU64() + ) + if ethservice.BlockChain().HasBlockAndState(parent.Hash(), parent.NumberU64()) { + t.Errorf("Block %d not pruned", parent.NumberU64()) + } + for i := 0; i < 10; i++ { + execData, err := api.assembleBlock(AssembleBlockParams{ + ParentHash: parent.Hash(), + Timestamp: parent.Time() + 5, + }) + if err != nil { + t.Fatalf("Failed to create the executable data %v", err) + } + block, err := ExecutableDataToBlock(ethservice.BlockChain().Config(), parent.Header(), *execData) + if err != nil { + t.Fatalf("Failed to convert executable data to block %v", err) + } + newResp, err := api.ExecutePayload(*execData) + if err != nil || newResp.Status != "VALID" { + t.Fatalf("Failed to insert block: %v", err) + } + if ethservice.BlockChain().CurrentBlock().NumberU64() != head { + t.Fatalf("Chain head shouldn't be updated") + } + if err := api.setHead(block.Hash()); err != nil { + t.Fatalf("Failed to set head: %v", err) + } + if ethservice.BlockChain().CurrentBlock().NumberU64() != block.NumberU64() { + t.Fatalf("Chain head should be updated") + } + parent, head = block, block.NumberU64() + } + */ +} // startEthService creates a full node instance for testing. func startEthService(t *testing.T, genesis *core.Genesis, blocks []*types.Block) (*node.Node, *eth.Ethereum) { @@ -232,7 +338,7 @@ func startEthService(t *testing.T, genesis *core.Genesis, blocks []*types.Block) t.Fatal("can't create node:", err) } - ethcfg := ðconfig.Config{Genesis: genesis, Ethash: ethash.Config{PowMode: ethash.ModeFake}} + ethcfg := ðconfig.Config{Genesis: genesis, Ethash: ethash.Config{PowMode: ethash.ModeFake}, TrieTimeout: time.Minute, TrieDirtyCache: 256, TrieCleanCache: 256} ethservice, err := eth.New(n, ethcfg) if err != nil { t.Fatal("can't create eth service:", err) @@ -245,6 +351,69 @@ func startEthService(t *testing.T, genesis *core.Genesis, blocks []*types.Block) t.Fatal("can't import test blocks:", err) } ethservice.SetEtherbase(testAddr) + ethservice.SetSynced() return n, ethservice } + +func TestFullAPI(t *testing.T) { + genesis, preMergeBlocks := generatePreMergeChain(10) + n, ethservice := startEthService(t, genesis, preMergeBlocks) + ethservice.Merger().ReachTTD() + defer n.Close() + var ( + api = NewConsensusAPI(ethservice, nil) + parent = ethservice.BlockChain().CurrentBlock() + // This EVM code generates a log when the contract is created. + logCode = common.Hex2Bytes("60606040525b7f24ec1d3ff24c2f6ff210738839dbc339cd45a5294d85c79361016243157aae7b60405180905060405180910390a15b600a8060416000396000f360606040526008565b00") + ) + for i := 0; i < 10; i++ { + statedb, _ := ethservice.BlockChain().StateAt(parent.Root()) + nonce := statedb.GetNonce(testAddr) + tx, _ := types.SignTx(types.NewContractCreation(nonce, new(big.Int), 1000000, big.NewInt(2*params.InitialBaseFee), logCode), types.LatestSigner(ethservice.BlockChain().Config()), testKey) + ethservice.TxPool().AddLocal(tx) + + params := PayloadAttributesV1{ + Timestamp: parent.Time() + 1, + Random: crypto.Keccak256Hash([]byte{byte(i)}), + SuggestedFeeRecipient: parent.Coinbase(), + } + fcState := ForkchoiceStateV1{ + HeadBlockHash: parent.Hash(), + SafeBlockHash: common.Hash{}, + FinalizedBlockHash: common.Hash{}, + } + resp, err := api.ForkchoiceUpdatedV1(fcState, ¶ms) + if err != nil { + t.Fatalf("error preparing payload, err=%v", err) + } + if resp.Status != SUCCESS.Status { + t.Fatalf("error preparing payload, invalid status: %v", resp.Status) + } + payloadID := computePayloadId(parent.Hash(), ¶ms) + payload, err := api.GetPayloadV1(hexutil.Bytes(payloadID)) + if err != nil { + t.Fatalf("can't get payload: %v", err) + } + execResp, err := api.ExecutePayloadV1(*payload) + if err != nil { + t.Fatalf("can't execute payload: %v", err) + } + if execResp.Status != VALID.Status { + t.Fatalf("invalid status: %v", execResp.Status) + } + fcState = ForkchoiceStateV1{ + HeadBlockHash: payload.BlockHash, + SafeBlockHash: payload.ParentHash, + FinalizedBlockHash: payload.ParentHash, + } + if _, err := api.ForkchoiceUpdatedV1(fcState, nil); err != nil { + t.Fatalf("Failed to insert block: %v", err) + } + if ethservice.BlockChain().CurrentBlock().NumberU64() != payload.Number { + t.Fatalf("Chain head should be updated") + } + parent = ethservice.BlockChain().CurrentBlock() + + } +} diff --git a/eth/catalyst/api_types.go b/eth/catalyst/api_types.go index d5d351a991..1f6703030a 100644 --- a/eth/catalyst/api_types.go +++ b/eth/catalyst/api_types.go @@ -17,54 +17,98 @@ package catalyst import ( + "math/big" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" ) -//go:generate go run github.com/fjl/gencodec -type assembleBlockParams -field-override assembleBlockParamsMarshaling -out gen_blockparams.go +//go:generate go run github.com/fjl/gencodec -type PayloadAttributesV1 -field-override payloadAttributesMarshaling -out gen_blockparams.go -// Structure described at https://hackmd.io/T9x2mMA4S7us8tJwEB3FDQ -type assembleBlockParams struct { - ParentHash common.Hash `json:"parentHash" gencodec:"required"` - Timestamp uint64 `json:"timestamp" gencodec:"required"` +// Structure described at https://github.com/ethereum/execution-apis/pull/74 +type PayloadAttributesV1 struct { + Timestamp uint64 `json:"timestamp" gencodec:"required"` + Random common.Hash `json:"random" gencodec:"required"` + SuggestedFeeRecipient common.Address `json:"suggestedFeeRecipient" gencodec:"required"` } -// JSON type overrides for assembleBlockParams. -type assembleBlockParamsMarshaling struct { +// JSON type overrides for PayloadAttributesV1. +type payloadAttributesMarshaling struct { Timestamp hexutil.Uint64 } -//go:generate go run github.com/fjl/gencodec -type executableData -field-override executableDataMarshaling -out gen_ed.go +//go:generate go run github.com/fjl/gencodec -type ExecutableDataV1 -field-override executableDataMarshaling -out gen_ed.go -// Structure described at https://notes.ethereum.org/@n0ble/rayonism-the-merge-spec#Parameters1 -type executableData struct { - BlockHash common.Hash `json:"blockHash" gencodec:"required"` - ParentHash common.Hash `json:"parentHash" gencodec:"required"` - Miner common.Address `json:"miner" gencodec:"required"` - StateRoot common.Hash `json:"stateRoot" gencodec:"required"` - Number uint64 `json:"number" gencodec:"required"` - GasLimit uint64 `json:"gasLimit" gencodec:"required"` - GasUsed uint64 `json:"gasUsed" gencodec:"required"` - Timestamp uint64 `json:"timestamp" gencodec:"required"` - ReceiptRoot common.Hash `json:"receiptsRoot" gencodec:"required"` - LogsBloom []byte `json:"logsBloom" gencodec:"required"` - Transactions [][]byte `json:"transactions" gencodec:"required"` +// Structure described at https://github.com/ethereum/execution-apis/src/engine/specification.md +type ExecutableDataV1 struct { + ParentHash common.Hash `json:"parentHash" gencodec:"required"` + FeeRecipient common.Address `json:"feeRecipient" gencodec:"required"` + StateRoot common.Hash `json:"stateRoot" gencodec:"required"` + ReceiptsRoot common.Hash `json:"receiptsRoot" gencodec:"required"` + LogsBloom []byte `json:"logsBloom" gencodec:"required"` + Random common.Hash `json:"random" gencodec:"required"` + Number uint64 `json:"blockNumber" gencodec:"required"` + GasLimit uint64 `json:"gasLimit" gencodec:"required"` + GasUsed uint64 `json:"gasUsed" gencodec:"required"` + Timestamp uint64 `json:"timestamp" gencodec:"required"` + ExtraData []byte `json:"extraData" gencodec:"required"` + BaseFeePerGas *big.Int `json:"baseFeePerGas" gencodec:"required"` + BlockHash common.Hash `json:"blockHash" gencodec:"required"` + Transactions [][]byte `json:"transactions" gencodec:"required"` } // JSON type overrides for executableData. type executableDataMarshaling struct { - Number hexutil.Uint64 - GasLimit hexutil.Uint64 - GasUsed hexutil.Uint64 - Timestamp hexutil.Uint64 - LogsBloom hexutil.Bytes - Transactions []hexutil.Bytes + Number hexutil.Uint64 + GasLimit hexutil.Uint64 + GasUsed hexutil.Uint64 + Timestamp hexutil.Uint64 + BaseFeePerGas *hexutil.Big + ExtraData hexutil.Bytes + LogsBloom hexutil.Bytes + Transactions []hexutil.Bytes } -type newBlockResponse struct { +//go:generate go run github.com/fjl/gencodec -type PayloadResponse -field-override payloadResponseMarshaling -out gen_payload.go + +type PayloadResponse struct { + PayloadID uint64 `json:"payloadId"` +} + +// JSON type overrides for payloadResponse. +type payloadResponseMarshaling struct { + PayloadID hexutil.Uint64 +} + +type NewBlockResponse struct { Valid bool `json:"valid"` } -type genericResponse struct { +type GenericResponse struct { Success bool `json:"success"` } + +type GenericStringResponse struct { + Status string `json:"status"` +} + +type ExecutePayloadResponse struct { + Status string `json:"status"` + LatestValidHash common.Hash `json:"latestValidHash"` +} + +type ConsensusValidatedParams struct { + BlockHash common.Hash `json:"blockHash"` + Status string `json:"status"` +} + +type ForkChoiceResponse struct { + Status string `json:"status"` + PayloadID *hexutil.Bytes `json:"payloadId"` +} + +type ForkchoiceStateV1 struct { + HeadBlockHash common.Hash `json:"headBlockHash"` + SafeBlockHash common.Hash `json:"safeBlockHash"` + FinalizedBlockHash common.Hash `json:"finalizedBlockHash"` +} diff --git a/eth/catalyst/gen_blockparams.go b/eth/catalyst/gen_blockparams.go index a9a08ec3a8..ccf5c327ff 100644 --- a/eth/catalyst/gen_blockparams.go +++ b/eth/catalyst/gen_blockparams.go @@ -10,37 +10,44 @@ import ( "github.com/ethereum/go-ethereum/common/hexutil" ) -var _ = (*assembleBlockParamsMarshaling)(nil) +var _ = (*payloadAttributesMarshaling)(nil) // MarshalJSON marshals as JSON. -func (a assembleBlockParams) MarshalJSON() ([]byte, error) { - type assembleBlockParams struct { - ParentHash common.Hash `json:"parentHash" gencodec:"required"` - Timestamp hexutil.Uint64 `json:"timestamp" gencodec:"required"` +func (p PayloadAttributesV1) MarshalJSON() ([]byte, error) { + type PayloadAttributesV1 struct { + Timestamp hexutil.Uint64 `json:"timestamp" gencodec:"required"` + Random common.Hash `json:"random" gencodec:"required"` + SuggestedFeeRecipient common.Address `json:"suggestedFeeRecipient" gencodec:"required"` } - var enc assembleBlockParams - enc.ParentHash = a.ParentHash - enc.Timestamp = hexutil.Uint64(a.Timestamp) + var enc PayloadAttributesV1 + enc.Timestamp = hexutil.Uint64(p.Timestamp) + enc.Random = p.Random + enc.SuggestedFeeRecipient = p.SuggestedFeeRecipient return json.Marshal(&enc) } // UnmarshalJSON unmarshals from JSON. -func (a *assembleBlockParams) UnmarshalJSON(input []byte) error { - type assembleBlockParams struct { - ParentHash *common.Hash `json:"parentHash" gencodec:"required"` - Timestamp *hexutil.Uint64 `json:"timestamp" gencodec:"required"` +func (p *PayloadAttributesV1) UnmarshalJSON(input []byte) error { + type PayloadAttributesV1 struct { + Timestamp *hexutil.Uint64 `json:"timestamp" gencodec:"required"` + Random *common.Hash `json:"random" gencodec:"required"` + SuggestedFeeRecipient *common.Address `json:"suggestedFeeRecipient" gencodec:"required"` } - var dec assembleBlockParams + var dec PayloadAttributesV1 if err := json.Unmarshal(input, &dec); err != nil { return err } - if dec.ParentHash == nil { - return errors.New("missing required field 'parentHash' for assembleBlockParams") - } - a.ParentHash = *dec.ParentHash if dec.Timestamp == nil { - return errors.New("missing required field 'timestamp' for assembleBlockParams") + return errors.New("missing required field 'timestamp' for PayloadAttributesV1") } - a.Timestamp = uint64(*dec.Timestamp) + p.Timestamp = uint64(*dec.Timestamp) + if dec.Random == nil { + return errors.New("missing required field 'random' for PayloadAttributesV1") + } + p.Random = *dec.Random + if dec.SuggestedFeeRecipient == nil { + return errors.New("missing required field 'suggestedFeeRecipient' for PayloadAttributesV1") + } + p.SuggestedFeeRecipient = *dec.SuggestedFeeRecipient return nil } diff --git a/eth/catalyst/gen_ed.go b/eth/catalyst/gen_ed.go index 4c2e4c8ead..46eb45808b 100644 --- a/eth/catalyst/gen_ed.go +++ b/eth/catalyst/gen_ed.go @@ -5,6 +5,7 @@ package catalyst import ( "encoding/json" "errors" + "math/big" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" @@ -13,31 +14,37 @@ import ( var _ = (*executableDataMarshaling)(nil) // MarshalJSON marshals as JSON. -func (e executableData) MarshalJSON() ([]byte, error) { - type executableData struct { - BlockHash common.Hash `json:"blockHash" gencodec:"required"` - ParentHash common.Hash `json:"parentHash" gencodec:"required"` - Miner common.Address `json:"miner" gencodec:"required"` - StateRoot common.Hash `json:"stateRoot" gencodec:"required"` - Number hexutil.Uint64 `json:"number" gencodec:"required"` - GasLimit hexutil.Uint64 `json:"gasLimit" gencodec:"required"` - GasUsed hexutil.Uint64 `json:"gasUsed" gencodec:"required"` - Timestamp hexutil.Uint64 `json:"timestamp" gencodec:"required"` - ReceiptRoot common.Hash `json:"receiptsRoot" gencodec:"required"` - LogsBloom hexutil.Bytes `json:"logsBloom" gencodec:"required"` - Transactions []hexutil.Bytes `json:"transactions" gencodec:"required"` +func (e ExecutableDataV1) MarshalJSON() ([]byte, error) { + type ExecutableDataV1 struct { + ParentHash common.Hash `json:"parentHash" gencodec:"required"` + FeeRecipient common.Address `json:"feeRecipient" gencodec:"required"` + StateRoot common.Hash `json:"stateRoot" gencodec:"required"` + ReceiptsRoot common.Hash `json:"receiptsRoot" gencodec:"required"` + LogsBloom hexutil.Bytes `json:"logsBloom" gencodec:"required"` + Random common.Hash `json:"random" gencodec:"required"` + Number hexutil.Uint64 `json:"blockNumber" gencodec:"required"` + GasLimit hexutil.Uint64 `json:"gasLimit" gencodec:"required"` + GasUsed hexutil.Uint64 `json:"gasUsed" gencodec:"required"` + Timestamp hexutil.Uint64 `json:"timestamp" gencodec:"required"` + ExtraData hexutil.Bytes `json:"extraData" gencodec:"required"` + BaseFeePerGas *hexutil.Big `json:"baseFeePerGas" gencodec:"required"` + BlockHash common.Hash `json:"blockHash" gencodec:"required"` + Transactions []hexutil.Bytes `json:"transactions" gencodec:"required"` } - var enc executableData - enc.BlockHash = e.BlockHash + var enc ExecutableDataV1 enc.ParentHash = e.ParentHash - enc.Miner = e.Miner + enc.FeeRecipient = e.FeeRecipient enc.StateRoot = e.StateRoot + enc.ReceiptsRoot = e.ReceiptsRoot + enc.LogsBloom = e.LogsBloom + enc.Random = e.Random enc.Number = hexutil.Uint64(e.Number) enc.GasLimit = hexutil.Uint64(e.GasLimit) enc.GasUsed = hexutil.Uint64(e.GasUsed) enc.Timestamp = hexutil.Uint64(e.Timestamp) - enc.ReceiptRoot = e.ReceiptRoot - enc.LogsBloom = e.LogsBloom + enc.ExtraData = e.ExtraData + enc.BaseFeePerGas = (*hexutil.Big)(e.BaseFeePerGas) + enc.BlockHash = e.BlockHash if e.Transactions != nil { enc.Transactions = make([]hexutil.Bytes, len(e.Transactions)) for k, v := range e.Transactions { @@ -48,66 +55,81 @@ func (e executableData) MarshalJSON() ([]byte, error) { } // UnmarshalJSON unmarshals from JSON. -func (e *executableData) UnmarshalJSON(input []byte) error { - type executableData struct { - BlockHash *common.Hash `json:"blockHash" gencodec:"required"` - ParentHash *common.Hash `json:"parentHash" gencodec:"required"` - Miner *common.Address `json:"miner" gencodec:"required"` - StateRoot *common.Hash `json:"stateRoot" gencodec:"required"` - Number *hexutil.Uint64 `json:"number" gencodec:"required"` - GasLimit *hexutil.Uint64 `json:"gasLimit" gencodec:"required"` - GasUsed *hexutil.Uint64 `json:"gasUsed" gencodec:"required"` - Timestamp *hexutil.Uint64 `json:"timestamp" gencodec:"required"` - ReceiptRoot *common.Hash `json:"receiptsRoot" gencodec:"required"` - LogsBloom *hexutil.Bytes `json:"logsBloom" gencodec:"required"` - Transactions []hexutil.Bytes `json:"transactions" gencodec:"required"` +func (e *ExecutableDataV1) UnmarshalJSON(input []byte) error { + type ExecutableDataV1 struct { + ParentHash *common.Hash `json:"parentHash" gencodec:"required"` + FeeRecipient *common.Address `json:"feeRecipient" gencodec:"required"` + StateRoot *common.Hash `json:"stateRoot" gencodec:"required"` + ReceiptsRoot *common.Hash `json:"receiptsRoot" gencodec:"required"` + LogsBloom *hexutil.Bytes `json:"logsBloom" gencodec:"required"` + Random *common.Hash `json:"random" gencodec:"required"` + Number *hexutil.Uint64 `json:"blockNumber" gencodec:"required"` + GasLimit *hexutil.Uint64 `json:"gasLimit" gencodec:"required"` + GasUsed *hexutil.Uint64 `json:"gasUsed" gencodec:"required"` + Timestamp *hexutil.Uint64 `json:"timestamp" gencodec:"required"` + ExtraData *hexutil.Bytes `json:"extraData" gencodec:"required"` + BaseFeePerGas *hexutil.Big `json:"baseFeePerGas" gencodec:"required"` + BlockHash *common.Hash `json:"blockHash" gencodec:"required"` + Transactions []hexutil.Bytes `json:"transactions" gencodec:"required"` } - var dec executableData + var dec ExecutableDataV1 if err := json.Unmarshal(input, &dec); err != nil { return err } - if dec.BlockHash == nil { - return errors.New("missing required field 'blockHash' for executableData") - } - e.BlockHash = *dec.BlockHash if dec.ParentHash == nil { - return errors.New("missing required field 'parentHash' for executableData") + return errors.New("missing required field 'parentHash' for ExecutableDataV1") } e.ParentHash = *dec.ParentHash - if dec.Miner == nil { - return errors.New("missing required field 'miner' for executableData") + if dec.FeeRecipient == nil { + return errors.New("missing required field 'feeRecipient' for ExecutableDataV1") } - e.Miner = *dec.Miner + e.FeeRecipient = *dec.FeeRecipient if dec.StateRoot == nil { - return errors.New("missing required field 'stateRoot' for executableData") + return errors.New("missing required field 'stateRoot' for ExecutableDataV1") } e.StateRoot = *dec.StateRoot + if dec.ReceiptsRoot == nil { + return errors.New("missing required field 'receiptsRoot' for ExecutableDataV1") + } + e.ReceiptsRoot = *dec.ReceiptsRoot + if dec.LogsBloom == nil { + return errors.New("missing required field 'logsBloom' for ExecutableDataV1") + } + e.LogsBloom = *dec.LogsBloom + if dec.Random == nil { + return errors.New("missing required field 'random' for ExecutableDataV1") + } + e.Random = *dec.Random if dec.Number == nil { - return errors.New("missing required field 'number' for executableData") + return errors.New("missing required field 'blockNumber' for ExecutableDataV1") } e.Number = uint64(*dec.Number) if dec.GasLimit == nil { - return errors.New("missing required field 'gasLimit' for executableData") + return errors.New("missing required field 'gasLimit' for ExecutableDataV1") } e.GasLimit = uint64(*dec.GasLimit) if dec.GasUsed == nil { - return errors.New("missing required field 'gasUsed' for executableData") + return errors.New("missing required field 'gasUsed' for ExecutableDataV1") } e.GasUsed = uint64(*dec.GasUsed) if dec.Timestamp == nil { - return errors.New("missing required field 'timestamp' for executableData") + return errors.New("missing required field 'timestamp' for ExecutableDataV1") } e.Timestamp = uint64(*dec.Timestamp) - if dec.ReceiptRoot == nil { - return errors.New("missing required field 'receiptsRoot' for executableData") + if dec.ExtraData == nil { + return errors.New("missing required field 'extraData' for ExecutableDataV1") } - e.ReceiptRoot = *dec.ReceiptRoot - if dec.LogsBloom == nil { - return errors.New("missing required field 'logsBloom' for executableData") + e.ExtraData = *dec.ExtraData + if dec.BaseFeePerGas == nil { + return errors.New("missing required field 'baseFeePerGas' for ExecutableDataV1") } - e.LogsBloom = *dec.LogsBloom + e.BaseFeePerGas = (*big.Int)(dec.BaseFeePerGas) + if dec.BlockHash == nil { + return errors.New("missing required field 'blockHash' for ExecutableDataV1") + } + e.BlockHash = *dec.BlockHash if dec.Transactions == nil { - return errors.New("missing required field 'transactions' for executableData") + return errors.New("missing required field 'transactions' for ExecutableDataV1") } e.Transactions = make([][]byte, len(dec.Transactions)) for k, v := range dec.Transactions { diff --git a/eth/catalyst/gen_payload.go b/eth/catalyst/gen_payload.go new file mode 100644 index 0000000000..a0b00fcfd8 --- /dev/null +++ b/eth/catalyst/gen_payload.go @@ -0,0 +1,36 @@ +// Code generated by github.com/fjl/gencodec. DO NOT EDIT. + +package catalyst + +import ( + "encoding/json" + + "github.com/ethereum/go-ethereum/common/hexutil" +) + +var _ = (*payloadResponseMarshaling)(nil) + +// MarshalJSON marshals as JSON. +func (p PayloadResponse) MarshalJSON() ([]byte, error) { + type PayloadResponse struct { + PayloadID hexutil.Uint64 `json:"payloadId"` + } + var enc PayloadResponse + enc.PayloadID = hexutil.Uint64(p.PayloadID) + return json.Marshal(&enc) +} + +// UnmarshalJSON unmarshals from JSON. +func (p *PayloadResponse) UnmarshalJSON(input []byte) error { + type PayloadResponse struct { + PayloadID *hexutil.Uint64 `json:"payloadId"` + } + var dec PayloadResponse + if err := json.Unmarshal(input, &dec); err != nil { + return err + } + if dec.PayloadID != nil { + p.PayloadID = uint64(*dec.PayloadID) + } + return nil +} diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go index fcd94b366d..cd399be7b0 100644 --- a/eth/downloader/downloader.go +++ b/eth/downloader/downloader.go @@ -35,9 +35,7 @@ import ( "github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/event" "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/metrics" "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/trie" ) var ( @@ -45,7 +43,6 @@ var ( MaxHeaderFetch = 192 // Amount of block headers to be fetched per retrieval request MaxSkeletonSize = 128 // Number of header fetches to need for a skeleton assembly MaxReceiptFetch = 256 // Amount of transaction receipts to allow fetching per request - MaxStateFetch = 384 // Amount of node state values to allow fetching per request maxQueuedHeaders = 32 * 1024 // [eth/62] Maximum number of headers to queue for import (DOS protection) maxHeadersProcess = 2048 // Number of header download results to import at once into the chain @@ -56,11 +53,11 @@ var ( reorgProtThreshold = 48 // Threshold number of recent blocks to disable mini reorg protection reorgProtHeaderDelay = 2 // Number of headers to delay delivering to cover mini reorgs - fsHeaderCheckFrequency = 100 // Verification frequency of the downloaded headers during fast sync + fsHeaderCheckFrequency = 100 // Verification frequency of the downloaded headers during snap sync fsHeaderSafetyNet = 2048 // Number of headers to discard in case a chain violation is detected fsHeaderForceVerify = 24 // Number of headers to verify before and after the pivot to accept it fsHeaderContCheck = 3 * time.Second // Time interval to check for header continuations during state download - fsMinFullBlocks = 64 // Number of blocks to retrieve fully even in fast sync + fsMinFullBlocks = 64 // Number of blocks to retrieve fully even in snap sync ) var ( @@ -80,27 +77,34 @@ var ( errCancelStateFetch = errors.New("state data download canceled (requested)") errCancelContentProcessing = errors.New("content processing canceled (requested)") errCanceled = errors.New("syncing canceled (requested)") - errNoSyncActive = errors.New("no sync active") errTooOld = errors.New("peer's protocol version too old") errNoAncestorFound = errors.New("no common ancestor found") ) +// peerDropFn is a callback type for dropping a peer detected as malicious. +type peerDropFn func(id string) + +// headerTask is a set of downloaded headers to queue along with their precomputed +// hashes to avoid constant rehashing. +type headerTask struct { + headers []*types.Header + hashes []common.Hash +} + type Downloader struct { mode uint32 // Synchronisation mode defining the strategy used (per sync cycle), use d.getMode() to get the SyncMode mux *event.TypeMux // Event multiplexer to announce sync operation events - checkpoint uint64 // Checkpoint block number to enforce head against (e.g. fast sync) + checkpoint uint64 // Checkpoint block number to enforce head against (e.g. snap sync) genesis uint64 // Genesis block number to limit sync to (e.g. light client CHT) queue *queue // Scheduler for selecting the hashes to download peers *peerSet // Set of active peers from which download can proceed - stateDB ethdb.Database // Database to state sync into (and deduplicate via) - stateBloom *trie.SyncBloom // Bloom filter for fast trie node and contract code existence checks + stateDB ethdb.Database // Database to state sync into (and deduplicate via) // Statistics - syncStatsChainOrigin uint64 // Origin block number where syncing started at - syncStatsChainHeight uint64 // Highest block number known when syncing started - syncStatsState stateSyncStats + syncStatsChainOrigin uint64 // Origin block number where syncing started at + syncStatsChainHeight uint64 // Highest block number known when syncing started syncStatsLock sync.RWMutex // Lock protecting the sync stats fields lightchain LightChain @@ -117,12 +121,7 @@ type Downloader struct { ancientLimit uint64 // The maximum block number which can be regarded as ancient data. // Channels - headerCh chan dataPack // Channel receiving inbound block headers - bodyCh chan dataPack // Channel receiving inbound block bodies - receiptCh chan dataPack // Channel receiving inbound receipts - bodyWakeCh chan bool // Channel to signal the block body fetcher of new tasks - receiptWakeCh chan bool // Channel to signal the receipt fetcher of new tasks - headerProcCh chan []*types.Header // Channel to feed the header processor new tasks + headerProcCh chan *headerTask // Channel to feed the header processor new tasks // State sync pivotHeader *types.Header // Pivot block header to dynamically push the syncing state root @@ -131,8 +130,6 @@ type Downloader struct { snapSync bool // Whether to run state sync over the snap protocol SnapSyncer *snap.Syncer // TODO(karalabe): make private! hack for now stateSyncStart chan *stateSync - trackStateReq chan *stateReq - stateCh chan dataPack // Channel receiving inbound node state data // Cancellation and termination cancelPeer string // Identifier of the peer currently being used as the master (cancel on drop) @@ -171,14 +168,14 @@ type LightChain interface { SetHead(uint64) error } -// BlockChain encapsulates functions required to sync a (full or fast) blockchain. +// BlockChain encapsulates functions required to sync a (full or snap) blockchain. type BlockChain interface { LightChain // HasBlock verifies a block's presence in the local chain. HasBlock(common.Hash, uint64) bool - // HasFastBlock verifies a fast block's presence in the local chain. + // HasFastBlock verifies a snap block's presence in the local chain. HasFastBlock(common.Hash, uint64) bool // GetBlockByHash retrieves a block from the local chain. @@ -187,11 +184,11 @@ type BlockChain interface { // CurrentBlock retrieves the head block from the local chain. CurrentBlock() *types.Block - // CurrentFastBlock retrieves the head fast block from the local chain. + // CurrentFastBlock retrieves the head snap block from the local chain. CurrentFastBlock() *types.Block - // FastSyncCommitHead directly commits the head block to a certain entity. - FastSyncCommitHead(common.Hash) error + // SnapSyncCommitHead directly commits the head block to a certain entity. + SnapSyncCommitHead(common.Hash) error // InsertChain inserts a batch of blocks into the local chain. InsertChain(types.Blocks) (int, error) @@ -204,13 +201,12 @@ type BlockChain interface { } // New creates a new downloader to fetch hashes and blocks from remote peers. -func New(checkpoint uint64, stateDb ethdb.Database, stateBloom *trie.SyncBloom, mux *event.TypeMux, chain BlockChain, lightchain LightChain, dropPeer peerDropFn) *Downloader { +func New(checkpoint uint64, stateDb ethdb.Database, mux *event.TypeMux, chain BlockChain, lightchain LightChain, dropPeer peerDropFn) *Downloader { if lightchain == nil { lightchain = chain } dl := &Downloader{ stateDB: stateDb, - stateBloom: stateBloom, mux: mux, checkpoint: checkpoint, queue: newQueue(blockCacheMaxItems, blockCacheInitialItems), @@ -218,20 +214,10 @@ func New(checkpoint uint64, stateDb ethdb.Database, stateBloom *trie.SyncBloom, blockchain: chain, lightchain: lightchain, dropPeer: dropPeer, - headerCh: make(chan dataPack, 1), - bodyCh: make(chan dataPack, 1), - receiptCh: make(chan dataPack, 1), - bodyWakeCh: make(chan bool, 1), - receiptWakeCh: make(chan bool, 1), - headerProcCh: make(chan []*types.Header, 1), + headerProcCh: make(chan *headerTask, 1), quitCh: make(chan struct{}), - stateCh: make(chan dataPack), SnapSyncer: snap.NewSyncer(stateDb), stateSyncStart: make(chan *stateSync), - syncStatsState: stateSyncStats{ - processed: rawdb.ReadFastTrieProgress(stateDb), - }, - trackStateReq: make(chan *stateReq), } go dl.stateFetcher() return dl @@ -241,7 +227,7 @@ func New(checkpoint uint64, stateDb ethdb.Database, stateBloom *trie.SyncBloom, // block where synchronisation started at (may have failed/suspended); the block // or header sync is currently at; and the latest known block which the sync targets. // -// In addition, during the state download phase of fast synchronisation the number +// In addition, during the state download phase of snap synchronisation the number // of processed and the total number of known states are also returned. Otherwise // these are zero. func (d *Downloader) Progress() ethereum.SyncProgress { @@ -254,19 +240,31 @@ func (d *Downloader) Progress() ethereum.SyncProgress { switch { case d.blockchain != nil && mode == FullSync: current = d.blockchain.CurrentBlock().NumberU64() - case d.blockchain != nil && mode == FastSync: + case d.blockchain != nil && mode == SnapSync: current = d.blockchain.CurrentFastBlock().NumberU64() case d.lightchain != nil: current = d.lightchain.CurrentHeader().Number.Uint64() default: log.Error("Unknown downloader chain/mode combo", "light", d.lightchain != nil, "full", d.blockchain != nil, "mode", mode) } + progress, pending := d.SnapSyncer.Progress() + return ethereum.SyncProgress{ - StartingBlock: d.syncStatsChainOrigin, - CurrentBlock: current, - HighestBlock: d.syncStatsChainHeight, - PulledStates: d.syncStatsState.processed, - KnownStates: d.syncStatsState.processed + d.syncStatsState.pending, + StartingBlock: d.syncStatsChainOrigin, + CurrentBlock: current, + HighestBlock: d.syncStatsChainHeight, + SyncedAccounts: progress.AccountSynced, + SyncedAccountBytes: uint64(progress.AccountBytes), + SyncedBytecodes: progress.BytecodeSynced, + SyncedBytecodeBytes: uint64(progress.BytecodeBytes), + SyncedStorage: progress.StorageSynced, + SyncedStorageBytes: uint64(progress.StorageBytes), + HealedTrienodes: progress.TrienodeHealSynced, + HealedTrienodeBytes: uint64(progress.TrienodeHealBytes), + HealedBytecodes: progress.BytecodeHealSynced, + HealedBytecodeBytes: uint64(progress.BytecodeHealBytes), + HealingTrienodes: pending.TrienodeHeal, + HealingBytecode: pending.BytecodeHeal, } } @@ -364,47 +362,27 @@ func (d *Downloader) synchronise(id string, hash common.Hash, td *big.Int, mode if atomic.CompareAndSwapInt32(&d.notified, 0, 1) { log.Info("Block synchronisation started") } - // If we are already full syncing, but have a fast-sync bloom filter laying - // around, make sure it doesn't use memory any more. This is a special case - // when the user attempts to fast sync a new empty network. - if mode == FullSync && d.stateBloom != nil { - d.stateBloom.Close() - } - // If snap sync was requested, create the snap scheduler and switch to fast - // sync mode. Long term we could drop fast sync or merge the two together, + // If snap sync was requested, create the snap scheduler and switch to snap + // sync mode. Long term we could drop snap sync or merge the two together, // but until snap becomes prevalent, we should support both. TODO(karalabe). if mode == SnapSync { - if !d.snapSync { - // Snap sync uses the snapshot namespace to store potentially flakey data until - // sync completely heals and finishes. Pause snapshot maintenance in the mean - // time to prevent access. - if snapshots := d.blockchain.Snapshots(); snapshots != nil { // Only nil in tests - snapshots.Disable() - } - log.Warn("Enabling snapshot sync prototype") - d.snapSync = true + // Snap sync uses the snapshot namespace to store potentially flakey data until + // sync completely heals and finishes. Pause snapshot maintenance in the mean- + // time to prevent access. + if snapshots := d.blockchain.Snapshots(); snapshots != nil { // Only nil in tests + snapshots.Disable() } - mode = FastSync } // Reset the queue, peer set and wake channels to clean any internal leftover state d.queue.Reset(blockCacheMaxItems, blockCacheInitialItems) d.peers.Reset() - for _, ch := range []chan bool{d.bodyWakeCh, d.receiptWakeCh} { + for _, ch := range []chan bool{d.queue.blockWakeCh, d.queue.receiptWakeCh} { select { case <-ch: default: } } - for _, ch := range []chan dataPack{d.headerCh, d.bodyCh, d.receiptCh} { - for empty := false; !empty; { - select { - case <-ch: - default: - empty = true - } - } - } for empty := false; !empty; { select { case <-d.headerProcCh: @@ -463,9 +441,9 @@ func (d *Downloader) syncWithPeer(p *peerConnection, hash common.Hash, td *big.I if err != nil { return err } - if mode == FastSync && pivot == nil { + if mode == SnapSync && pivot == nil { // If no pivot block was returned, the head is below the min full block - // threshold (i.e. new chain). In that case we won't really fast sync + // threshold (i.e. new chain). In that case we won't really snap sync // anyway, but still need a valid pivot block to avoid some code hitting // nil panics on an access. pivot = d.blockchain.CurrentBlock().Header() @@ -483,8 +461,8 @@ func (d *Downloader) syncWithPeer(p *peerConnection, hash common.Hash, td *big.I d.syncStatsChainHeight = height d.syncStatsLock.Unlock() - // Ensure our origin point is below any fast sync pivot point - if mode == FastSync { + // Ensure our origin point is below any snap sync pivot point + if mode == SnapSync { if height <= uint64(fsMinFullBlocks) { origin = 0 } else { @@ -493,17 +471,17 @@ func (d *Downloader) syncWithPeer(p *peerConnection, hash common.Hash, td *big.I origin = pivotNumber - 1 } // Write out the pivot into the database so a rollback beyond it will - // reenable fast sync + // reenable snap sync rawdb.WriteLastPivotNumber(d.stateDB, pivotNumber) } } d.committed = 1 - if mode == FastSync && pivot.Number.Uint64() != 0 { + if mode == SnapSync && pivot.Number.Uint64() != 0 { d.committed = 0 } - if mode == FastSync { + if mode == SnapSync { // Set the ancient data limitation. - // If we are running fast sync, all block data older than ancientLimit will be + // If we are running snap sync, all block data older than ancientLimit will be // written to the ancient store. More recent data will be written to the active // database and will wait for the freezer to migrate. // @@ -535,7 +513,7 @@ func (d *Downloader) syncWithPeer(p *peerConnection, hash common.Hash, td *big.I } // Rewind the ancient store and blockchain if reorg happens. if origin+1 < frozen { - if err := d.lightchain.SetHead(origin + 1); err != nil { + if err := d.lightchain.SetHead(origin); err != nil { return err } } @@ -546,17 +524,17 @@ func (d *Downloader) syncWithPeer(p *peerConnection, hash common.Hash, td *big.I d.syncInitHook(origin, height) } fetchers := []func() error{ - func() error { return d.fetchHeaders(p, origin+1) }, // Headers are always retrieved - func() error { return d.fetchBodies(origin + 1) }, // Bodies are retrieved during normal and fast sync - func() error { return d.fetchReceipts(origin + 1) }, // Receipts are retrieved during fast sync + func() error { return d.fetchHeaders(p, origin+1, latest.Number.Uint64()) }, // Headers are always retrieved + func() error { return d.fetchBodies(origin + 1) }, // Bodies are retrieved during normal and snap sync + func() error { return d.fetchReceipts(origin + 1) }, // Receipts are retrieved during snap sync func() error { return d.processHeaders(origin+1, td) }, } - if mode == FastSync { + if mode == SnapSync { d.pivotLock.Lock() d.pivotHeader = pivot d.pivotLock.Unlock() - fetchers = append(fetchers, func() error { return d.processFastSyncContent() }) + fetchers = append(fetchers, func() error { return d.processSnapSyncContent() }) } else if mode == FullSync { fetchers = append(fetchers, d.processFullSyncContent) } @@ -625,9 +603,6 @@ func (d *Downloader) Terminate() { default: close(d.quitCh) } - if d.stateBloom != nil { - d.stateBloom.Close() - } d.quitLock.Unlock() // Cancel any pending download requests @@ -643,60 +618,38 @@ func (d *Downloader) fetchHead(p *peerConnection) (head *types.Header, pivot *ty // Request the advertised remote head block and wait for the response latest, _ := p.peer.Head() fetch := 1 - if mode == FastSync { + if mode == SnapSync { fetch = 2 // head + pivot headers } - go p.peer.RequestHeadersByHash(latest, fetch, fsMinFullBlocks-1, true) - - ttl := d.peers.rates.TargetTimeout() - timeout := time.After(ttl) - for { - select { - case <-d.cancelCh: - return nil, nil, errCanceled - - case packet := <-d.headerCh: - // Discard anything not from the origin peer - if packet.PeerId() != p.id { - log.Debug("Received headers from incorrect peer", "peer", packet.PeerId()) - break - } - // Make sure the peer gave us at least one and at most the requested headers - headers := packet.(*headerPack).headers - if len(headers) == 0 || len(headers) > fetch { - return nil, nil, fmt.Errorf("%w: returned headers %d != requested %d", errBadPeer, len(headers), fetch) - } - // The first header needs to be the head, validate against the checkpoint - // and request. If only 1 header was returned, make sure there's no pivot - // or there was not one requested. - head := headers[0] - if (mode == FastSync || mode == LightSync) && head.Number.Uint64() < d.checkpoint { - return nil, nil, fmt.Errorf("%w: remote head %d below checkpoint %d", errUnsyncedPeer, head.Number, d.checkpoint) - } - if len(headers) == 1 { - if mode == FastSync && head.Number.Uint64() > uint64(fsMinFullBlocks) { - return nil, nil, fmt.Errorf("%w: no pivot included along head header", errBadPeer) - } - p.log.Debug("Remote head identified, no pivot", "number", head.Number, "hash", head.Hash()) - return head, nil, nil - } - // At this point we have 2 headers in total and the first is the - // validated head of the chain. Check the pivot number and return, - pivot := headers[1] - if pivot.Number.Uint64() != head.Number.Uint64()-uint64(fsMinFullBlocks) { - return nil, nil, fmt.Errorf("%w: remote pivot %d != requested %d", errInvalidChain, pivot.Number, head.Number.Uint64()-uint64(fsMinFullBlocks)) - } - return head, pivot, nil - - case <-timeout: - p.log.Debug("Waiting for head header timed out", "elapsed", ttl) - return nil, nil, errTimeout - - case <-d.bodyCh: - case <-d.receiptCh: - // Out of bounds delivery, ignore - } + headers, hashes, err := d.fetchHeadersByHash(p, latest, fetch, fsMinFullBlocks-1, true) + if err != nil { + return nil, nil, err } + // Make sure the peer gave us at least one and at most the requested headers + if len(headers) == 0 || len(headers) > fetch { + return nil, nil, fmt.Errorf("%w: returned headers %d != requested %d", errBadPeer, len(headers), fetch) + } + // The first header needs to be the head, validate against the checkpoint + // and request. If only 1 header was returned, make sure there's no pivot + // or there was not one requested. + head = headers[0] + if (mode == SnapSync || mode == LightSync) && head.Number.Uint64() < d.checkpoint { + return nil, nil, fmt.Errorf("%w: remote head %d below checkpoint %d", errUnsyncedPeer, head.Number, d.checkpoint) + } + if len(headers) == 1 { + if mode == SnapSync && head.Number.Uint64() > uint64(fsMinFullBlocks) { + return nil, nil, fmt.Errorf("%w: no pivot included along head header", errBadPeer) + } + p.log.Debug("Remote head identified, no pivot", "number", head.Number, "hash", hashes[0]) + return head, nil, nil + } + // At this point we have 2 headers in total and the first is the + // validated head of the chain. Check the pivot number and return, + pivot = headers[1] + if pivot.Number.Uint64() != head.Number.Uint64()-uint64(fsMinFullBlocks) { + return nil, nil, fmt.Errorf("%w: remote pivot %d != requested %d", errInvalidChain, pivot.Number, head.Number.Uint64()-uint64(fsMinFullBlocks)) + } + return head, pivot, nil } // calculateRequestSpan calculates what headers to request from a peer when trying to determine the @@ -767,7 +720,7 @@ func (d *Downloader) findAncestor(p *peerConnection, remoteHeader *types.Header) switch mode { case FullSync: localHeight = d.blockchain.CurrentBlock().NumberU64() - case FastSync: + case SnapSync: localHeight = d.blockchain.CurrentFastBlock().NumberU64() default: localHeight = d.lightchain.CurrentHeader().Number.Uint64() @@ -822,76 +775,52 @@ func (d *Downloader) findAncestor(p *peerConnection, remoteHeader *types.Header) return ancestor, nil } -func (d *Downloader) findAncestorSpanSearch(p *peerConnection, mode SyncMode, remoteHeight, localHeight uint64, floor int64) (commonAncestor uint64, err error) { +func (d *Downloader) findAncestorSpanSearch(p *peerConnection, mode SyncMode, remoteHeight, localHeight uint64, floor int64) (uint64, error) { from, count, skip, max := calculateRequestSpan(remoteHeight, localHeight) p.log.Trace("Span searching for common ancestor", "count", count, "from", from, "skip", skip) - go p.peer.RequestHeadersByNumber(uint64(from), count, skip, false) - + headers, hashes, err := d.fetchHeadersByNumber(p, uint64(from), count, skip, false) + if err != nil { + return 0, err + } // Wait for the remote response to the head fetch number, hash := uint64(0), common.Hash{} - ttl := d.peers.rates.TargetTimeout() - timeout := time.After(ttl) + // Make sure the peer actually gave something valid + if len(headers) == 0 { + p.log.Warn("Empty head header set") + return 0, errEmptyHeaderSet + } + // Make sure the peer's reply conforms to the request + for i, header := range headers { + expectNumber := from + int64(i)*int64(skip+1) + if number := header.Number.Int64(); number != expectNumber { + p.log.Warn("Head headers broke chain ordering", "index", i, "requested", expectNumber, "received", number) + return 0, fmt.Errorf("%w: %v", errInvalidChain, errors.New("head headers broke chain ordering")) + } + } + // Check if a common ancestor was found + for i := len(headers) - 1; i >= 0; i-- { + // Skip any headers that underflow/overflow our requested set + if headers[i].Number.Int64() < from || headers[i].Number.Uint64() > max { + continue + } + // Otherwise check if we already know the header or not + h := hashes[i] + n := headers[i].Number.Uint64() - for finished := false; !finished; { - select { - case <-d.cancelCh: - return 0, errCanceled - - case packet := <-d.headerCh: - // Discard anything not from the origin peer - if packet.PeerId() != p.id { - log.Debug("Received headers from incorrect peer", "peer", packet.PeerId()) - break - } - // Make sure the peer actually gave something valid - headers := packet.(*headerPack).headers - if len(headers) == 0 { - p.log.Warn("Empty head header set") - return 0, errEmptyHeaderSet - } - // Make sure the peer's reply conforms to the request - for i, header := range headers { - expectNumber := from + int64(i)*int64(skip+1) - if number := header.Number.Int64(); number != expectNumber { - p.log.Warn("Head headers broke chain ordering", "index", i, "requested", expectNumber, "received", number) - return 0, fmt.Errorf("%w: %v", errInvalidChain, errors.New("head headers broke chain ordering")) - } - } - // Check if a common ancestor was found - finished = true - for i := len(headers) - 1; i >= 0; i-- { - // Skip any headers that underflow/overflow our requested set - if headers[i].Number.Int64() < from || headers[i].Number.Uint64() > max { - continue - } - // Otherwise check if we already know the header or not - h := headers[i].Hash() - n := headers[i].Number.Uint64() - - var known bool - switch mode { - case FullSync: - known = d.blockchain.HasBlock(h, n) - case FastSync: - known = d.blockchain.HasFastBlock(h, n) - default: - known = d.lightchain.HasHeader(h, n) - } - if known { - number, hash = n, h - break - } - } - - case <-timeout: - p.log.Debug("Waiting for head header timed out", "elapsed", ttl) - return 0, errTimeout - - case <-d.bodyCh: - case <-d.receiptCh: - // Out of bounds delivery, ignore + var known bool + switch mode { + case FullSync: + known = d.blockchain.HasBlock(h, n) + case SnapSync: + known = d.blockchain.HasFastBlock(h, n) + default: + known = d.lightchain.HasHeader(h, n) + } + if known { + number, hash = n, h + break } } // If the head fetch already found an ancestor, return @@ -906,7 +835,7 @@ func (d *Downloader) findAncestorSpanSearch(p *peerConnection, mode SyncMode, re return 0, errNoAncestorFound } -func (d *Downloader) findAncestorBinarySearch(p *peerConnection, mode SyncMode, remoteHeight uint64, floor int64) (commonAncestor uint64, err error) { +func (d *Downloader) findAncestorBinarySearch(p *peerConnection, mode SyncMode, remoteHeight uint64, floor int64) (uint64, error) { hash := common.Hash{} // Ancestor not found, we need to binary search over our chain @@ -920,65 +849,39 @@ func (d *Downloader) findAncestorBinarySearch(p *peerConnection, mode SyncMode, // Split our chain interval in two, and request the hash to cross check check := (start + end) / 2 - ttl := d.peers.rates.TargetTimeout() - timeout := time.After(ttl) - - go p.peer.RequestHeadersByNumber(check, 1, 0, false) - - // Wait until a reply arrives to this request - for arrived := false; !arrived; { - select { - case <-d.cancelCh: - return 0, errCanceled - - case packet := <-d.headerCh: - // Discard anything not from the origin peer - if packet.PeerId() != p.id { - log.Debug("Received headers from incorrect peer", "peer", packet.PeerId()) - break - } - // Make sure the peer actually gave something valid - headers := packet.(*headerPack).headers - if len(headers) != 1 { - p.log.Warn("Multiple headers for single request", "headers", len(headers)) - return 0, fmt.Errorf("%w: multiple headers (%d) for single request", errBadPeer, len(headers)) - } - arrived = true - - // Modify the search interval based on the response - h := headers[0].Hash() - n := headers[0].Number.Uint64() - - var known bool - switch mode { - case FullSync: - known = d.blockchain.HasBlock(h, n) - case FastSync: - known = d.blockchain.HasFastBlock(h, n) - default: - known = d.lightchain.HasHeader(h, n) - } - if !known { - end = check - break - } - header := d.lightchain.GetHeaderByHash(h) // Independent of sync mode, header surely exists - if header.Number.Uint64() != check { - p.log.Warn("Received non requested header", "number", header.Number, "hash", header.Hash(), "request", check) - return 0, fmt.Errorf("%w: non-requested header (%d)", errBadPeer, header.Number) - } - start = check - hash = h - - case <-timeout: - p.log.Debug("Waiting for search header timed out", "elapsed", ttl) - return 0, errTimeout - - case <-d.bodyCh: - case <-d.receiptCh: - // Out of bounds delivery, ignore - } + headers, hashes, err := d.fetchHeadersByNumber(p, check, 1, 0, false) + if err != nil { + return 0, err } + // Make sure the peer actually gave something valid + if len(headers) != 1 { + p.log.Warn("Multiple headers for single request", "headers", len(headers)) + return 0, fmt.Errorf("%w: multiple headers (%d) for single request", errBadPeer, len(headers)) + } + // Modify the search interval based on the response + h := hashes[0] + n := headers[0].Number.Uint64() + + var known bool + switch mode { + case FullSync: + known = d.blockchain.HasBlock(h, n) + case SnapSync: + known = d.blockchain.HasFastBlock(h, n) + default: + known = d.lightchain.HasHeader(h, n) + } + if !known { + end = check + continue + } + header := d.lightchain.GetHeaderByHash(h) // Independent of sync mode, header surely exists + if header.Number.Uint64() != check { + p.log.Warn("Received non requested header", "number", header.Number, "hash", header.Hash(), "request", check) + return 0, fmt.Errorf("%w: non-requested header (%d)", errBadPeer, header.Number) + } + start = check + hash = h } // Ensure valid ancestry and return if int64(start) <= floor { @@ -997,217 +900,59 @@ func (d *Downloader) findAncestorBinarySearch(p *peerConnection, mode SyncMode, // other peers are only accepted if they map cleanly to the skeleton. If no one // can fill in the skeleton - not even the origin peer - it's assumed invalid and // the origin is dropped. -func (d *Downloader) fetchHeaders(p *peerConnection, from uint64) error { +func (d *Downloader) fetchHeaders(p *peerConnection, from uint64, head uint64) error { p.log.Debug("Directing header downloads", "origin", from) defer p.log.Debug("Header download terminated") - // Create a timeout timer, and the associated header fetcher - skeleton := true // Skeleton assembly phase or finishing up - pivoting := false // Whether the next request is pivot verification - request := time.Now() // time of the last skeleton fetch request - timeout := time.NewTimer(0) // timer to dump a non-responsive active peer - <-timeout.C // timeout channel should be initially empty - defer timeout.Stop() - - var ttl time.Duration - getHeaders := func(from uint64) { - request = time.Now() - - ttl = d.peers.rates.TargetTimeout() - timeout.Reset(ttl) - - if skeleton { - p.log.Trace("Fetching skeleton headers", "count", MaxHeaderFetch, "from", from) - go p.peer.RequestHeadersByNumber(from+uint64(MaxHeaderFetch)-1, MaxSkeletonSize, MaxHeaderFetch-1, false) - } else { - p.log.Trace("Fetching full headers", "count", MaxHeaderFetch, "from", from) - go p.peer.RequestHeadersByNumber(from, MaxHeaderFetch, 0, false) - } - } - getNextPivot := func() { - pivoting = true - request = time.Now() - - ttl = d.peers.rates.TargetTimeout() - timeout.Reset(ttl) - - d.pivotLock.RLock() - pivot := d.pivotHeader.Number.Uint64() - d.pivotLock.RUnlock() - - p.log.Trace("Fetching next pivot header", "number", pivot+uint64(fsMinFullBlocks)) - go p.peer.RequestHeadersByNumber(pivot+uint64(fsMinFullBlocks), 2, fsMinFullBlocks-9, false) // move +64 when it's 2x64-8 deep - } // Start pulling the header chain skeleton until all is done - ancestor := from - getHeaders(from) - - mode := d.getMode() + var ( + skeleton = true // Skeleton assembly phase or finishing up + pivoting = false // Whether the next request is pivot verification + ancestor = from + mode = d.getMode() + ) for { - select { - case <-d.cancelCh: - return errCanceled - - case packet := <-d.headerCh: - // Make sure the active peer is giving us the skeleton headers - if packet.PeerId() != p.id { - log.Debug("Received skeleton from incorrect peer", "peer", packet.PeerId()) - break - } - headerReqTimer.UpdateSince(request) - timeout.Stop() - - // If the pivot is being checked, move if it became stale and run the real retrieval - var pivot uint64 - + // Pull the next batch of headers, it either: + // - Pivot check to see if the chain moved too far + // - Skeleton retrieval to permit concurrent header fetches + // - Full header retrieval if we're near the chain head + var ( + headers []*types.Header + hashes []common.Hash + err error + ) + switch { + case pivoting: d.pivotLock.RLock() - if d.pivotHeader != nil { - pivot = d.pivotHeader.Number.Uint64() - } + pivot := d.pivotHeader.Number.Uint64() d.pivotLock.RUnlock() - if pivoting { - if packet.Items() == 2 { - // Retrieve the headers and do some sanity checks, just in case - headers := packet.(*headerPack).headers + p.log.Trace("Fetching next pivot header", "number", pivot+uint64(fsMinFullBlocks)) + headers, hashes, err = d.fetchHeadersByNumber(p, pivot+uint64(fsMinFullBlocks), 2, fsMinFullBlocks-9, false) // move +64 when it's 2x64-8 deep - if have, want := headers[0].Number.Uint64(), pivot+uint64(fsMinFullBlocks); have != want { - log.Warn("Peer sent invalid next pivot", "have", have, "want", want) - return fmt.Errorf("%w: next pivot number %d != requested %d", errInvalidChain, have, want) - } - if have, want := headers[1].Number.Uint64(), pivot+2*uint64(fsMinFullBlocks)-8; have != want { - log.Warn("Peer sent invalid pivot confirmer", "have", have, "want", want) - return fmt.Errorf("%w: next pivot confirmer number %d != requested %d", errInvalidChain, have, want) - } - log.Warn("Pivot seemingly stale, moving", "old", pivot, "new", headers[0].Number) - pivot = headers[0].Number.Uint64() + case skeleton: + p.log.Trace("Fetching skeleton headers", "count", MaxHeaderFetch, "from", from) + headers, hashes, err = d.fetchHeadersByNumber(p, from+uint64(MaxHeaderFetch)-1, MaxSkeletonSize, MaxHeaderFetch-1, false) - d.pivotLock.Lock() - d.pivotHeader = headers[0] - d.pivotLock.Unlock() + default: + p.log.Trace("Fetching full headers", "count", MaxHeaderFetch, "from", from) + headers, hashes, err = d.fetchHeadersByNumber(p, from, MaxHeaderFetch, 0, false) + } + switch err { + case nil: + // Headers retrieved, continue with processing - // Write out the pivot into the database so a rollback beyond - // it will reenable fast sync and update the state root that - // the state syncer will be downloading. - rawdb.WriteLastPivotNumber(d.stateDB, pivot) - } - pivoting = false - getHeaders(from) - continue - } - // If the skeleton's finished, pull any remaining head headers directly from the origin - if skeleton && packet.Items() == 0 { - skeleton = false - getHeaders(from) - continue - } - // If no more headers are inbound, notify the content fetchers and return - if packet.Items() == 0 { - // Don't abort header fetches while the pivot is downloading - if atomic.LoadInt32(&d.committed) == 0 && pivot <= from { - p.log.Debug("No headers, waiting for pivot commit") - select { - case <-time.After(fsHeaderContCheck): - getHeaders(from) - continue - case <-d.cancelCh: - return errCanceled - } - } - // Pivot done (or not in fast sync) and no more headers, terminate the process - p.log.Debug("No more headers available") - select { - case d.headerProcCh <- nil: - return nil - case <-d.cancelCh: - return errCanceled - } - } - headers := packet.(*headerPack).headers + case errCanceled: + // Sync cancelled, no issue, propagate up + return err - // If we received a skeleton batch, resolve internals concurrently - if skeleton { - filled, proced, err := d.fillHeaderSkeleton(from, headers) - if err != nil { - p.log.Debug("Skeleton chain invalid", "err", err) - return fmt.Errorf("%w: %v", errInvalidChain, err) - } - headers = filled[proced:] - from += uint64(proced) - } else { - // If we're closing in on the chain head, but haven't yet reached it, delay - // the last few headers so mini reorgs on the head don't cause invalid hash - // chain errors. - if n := len(headers); n > 0 { - // Retrieve the current head we're at - var head uint64 - if mode == LightSync { - head = d.lightchain.CurrentHeader().Number.Uint64() - } else { - head = d.blockchain.CurrentFastBlock().NumberU64() - if full := d.blockchain.CurrentBlock().NumberU64(); head < full { - head = full - } - } - // If the head is below the common ancestor, we're actually deduplicating - // already existing chain segments, so use the ancestor as the fake head. - // Otherwise we might end up delaying header deliveries pointlessly. - if head < ancestor { - head = ancestor - } - // If the head is way older than this batch, delay the last few headers - if head+uint64(reorgProtThreshold) < headers[n-1].Number.Uint64() { - delay := reorgProtHeaderDelay - if delay > n { - delay = n - } - headers = headers[:n-delay] - } - } - } - // Insert all the new headers and fetch the next batch - if len(headers) > 0 { - p.log.Trace("Scheduling new headers", "count", len(headers), "from", from) - select { - case d.headerProcCh <- headers: - case <-d.cancelCh: - return errCanceled - } - from += uint64(len(headers)) - - // If we're still skeleton filling fast sync, check pivot staleness - // before continuing to the next skeleton filling - if skeleton && pivot > 0 { - getNextPivot() - } else { - getHeaders(from) - } - } else { - // No headers delivered, or all of them being delayed, sleep a bit and retry - p.log.Trace("All headers delayed, waiting") - select { - case <-time.After(fsHeaderContCheck): - getHeaders(from) - continue - case <-d.cancelCh: - return errCanceled - } - } - - case <-timeout.C: - if d.dropPeer == nil { - // The dropPeer method is nil when `--copydb` is used for a local copy. - // Timeouts can occur if e.g. compaction hits at the wrong time, and can be ignored - p.log.Warn("Downloader wants to drop peer, but peerdrop-function is not set", "peer", p.id) - break - } - // Header retrieval timed out, consider the peer bad and drop - p.log.Debug("Header request timed out", "elapsed", ttl) - headerTimeoutMeter.Mark(1) + default: + // Header retrieval either timed out, or the peer failed in some strange way + // (e.g. disconnect). Consider the master peer bad and drop d.dropPeer(p.id) // Finish the sync gracefully instead of dumping the gathered data though - for _, ch := range []chan bool{d.bodyWakeCh, d.receiptWakeCh} { + for _, ch := range []chan bool{d.queue.blockWakeCh, d.queue.receiptWakeCh} { select { case ch <- false: case <-d.cancelCh: @@ -1217,7 +962,154 @@ func (d *Downloader) fetchHeaders(p *peerConnection, from uint64) error { case d.headerProcCh <- nil: case <-d.cancelCh: } - return fmt.Errorf("%w: header request timed out", errBadPeer) + return fmt.Errorf("%w: header request failed: %v", errBadPeer, err) + } + // If the pivot is being checked, move if it became stale and run the real retrieval + var pivot uint64 + + d.pivotLock.RLock() + if d.pivotHeader != nil { + pivot = d.pivotHeader.Number.Uint64() + } + d.pivotLock.RUnlock() + + if pivoting { + if len(headers) == 2 { + if have, want := headers[0].Number.Uint64(), pivot+uint64(fsMinFullBlocks); have != want { + log.Warn("Peer sent invalid next pivot", "have", have, "want", want) + return fmt.Errorf("%w: next pivot number %d != requested %d", errInvalidChain, have, want) + } + if have, want := headers[1].Number.Uint64(), pivot+2*uint64(fsMinFullBlocks)-8; have != want { + log.Warn("Peer sent invalid pivot confirmer", "have", have, "want", want) + return fmt.Errorf("%w: next pivot confirmer number %d != requested %d", errInvalidChain, have, want) + } + log.Warn("Pivot seemingly stale, moving", "old", pivot, "new", headers[0].Number) + pivot = headers[0].Number.Uint64() + + d.pivotLock.Lock() + d.pivotHeader = headers[0] + d.pivotLock.Unlock() + + // Write out the pivot into the database so a rollback beyond + // it will reenable snap sync and update the state root that + // the state syncer will be downloading. + rawdb.WriteLastPivotNumber(d.stateDB, pivot) + } + // Disable the pivot check and fetch the next batch of headers + pivoting = false + continue + } + // If the skeleton's finished, pull any remaining head headers directly from the origin + if skeleton && len(headers) == 0 { + // A malicious node might withhold advertised headers indefinitely + if from+uint64(MaxHeaderFetch)-1 <= head { + p.log.Warn("Peer withheld skeleton headers", "advertised", head, "withheld", from+uint64(MaxHeaderFetch)-1) + return fmt.Errorf("%w: withheld skeleton headers: advertised %d, withheld #%d", errStallingPeer, head, from+uint64(MaxHeaderFetch)-1) + } + p.log.Debug("No skeleton, fetching headers directly") + skeleton = false + continue + } + // If no more headers are inbound, notify the content fetchers and return + if len(headers) == 0 { + // Don't abort header fetches while the pivot is downloading + if atomic.LoadInt32(&d.committed) == 0 && pivot <= from { + p.log.Debug("No headers, waiting for pivot commit") + select { + case <-time.After(fsHeaderContCheck): + continue + case <-d.cancelCh: + return errCanceled + } + } + // Pivot done (or not in snap sync) and no more headers, terminate the process + p.log.Debug("No more headers available") + select { + case d.headerProcCh <- nil: + return nil + case <-d.cancelCh: + return errCanceled + } + } + // If we received a skeleton batch, resolve internals concurrently + var progressed bool + if skeleton { + filled, hashset, proced, err := d.fillHeaderSkeleton(from, headers) + if err != nil { + p.log.Debug("Skeleton chain invalid", "err", err) + return fmt.Errorf("%w: %v", errInvalidChain, err) + } + headers = filled[proced:] + hashes = hashset[proced:] + + progressed = proced > 0 + from += uint64(proced) + } else { + // A malicious node might withhold advertised headers indefinitely + if n := len(headers); n < MaxHeaderFetch && headers[n-1].Number.Uint64() < head { + p.log.Warn("Peer withheld headers", "advertised", head, "delivered", headers[n-1].Number.Uint64()) + return fmt.Errorf("%w: withheld headers: advertised %d, delivered %d", errStallingPeer, head, headers[n-1].Number.Uint64()) + } + // If we're closing in on the chain head, but haven't yet reached it, delay + // the last few headers so mini reorgs on the head don't cause invalid hash + // chain errors. + if n := len(headers); n > 0 { + // Retrieve the current head we're at + var head uint64 + if mode == LightSync { + head = d.lightchain.CurrentHeader().Number.Uint64() + } else { + head = d.blockchain.CurrentFastBlock().NumberU64() + if full := d.blockchain.CurrentBlock().NumberU64(); head < full { + head = full + } + } + // If the head is below the common ancestor, we're actually deduplicating + // already existing chain segments, so use the ancestor as the fake head. + // Otherwise, we might end up delaying header deliveries pointlessly. + if head < ancestor { + head = ancestor + } + // If the head is way older than this batch, delay the last few headers + if head+uint64(reorgProtThreshold) < headers[n-1].Number.Uint64() { + delay := reorgProtHeaderDelay + if delay > n { + delay = n + } + headers = headers[:n-delay] + hashes = hashes[:n-delay] + } + } + } + // If no headers have bene delivered, or all of them have been delayed, + // sleep a bit and retry. Take care with headers already consumed during + // skeleton filling + if len(headers) == 0 && !progressed { + p.log.Trace("All headers delayed, waiting") + select { + case <-time.After(fsHeaderContCheck): + continue + case <-d.cancelCh: + return errCanceled + } + } + // Insert any remaining new headers and fetch the next batch + if len(headers) > 0 { + p.log.Trace("Scheduling new headers", "count", len(headers), "from", from) + select { + case d.headerProcCh <- &headerTask{ + headers: headers, + hashes: hashes, + }: + case <-d.cancelCh: + return errCanceled + } + from += uint64(len(headers)) + } + // If we're still skeleton filling snap sync, check pivot staleness + // before continuing to the next skeleton filling + if skeleton && pivot > 0 { + pivoting = true } } } @@ -1231,33 +1123,19 @@ func (d *Downloader) fetchHeaders(p *peerConnection, from uint64) error { // // The method returns the entire filled skeleton and also the number of headers // already forwarded for processing. -func (d *Downloader) fillHeaderSkeleton(from uint64, skeleton []*types.Header) ([]*types.Header, int, error) { +func (d *Downloader) fillHeaderSkeleton(from uint64, skeleton []*types.Header) ([]*types.Header, []common.Hash, int, error) { log.Debug("Filling up skeleton", "from", from) d.queue.ScheduleSkeleton(from, skeleton) - var ( - deliver = func(packet dataPack) (int, error) { - pack := packet.(*headerPack) - return d.queue.DeliverHeaders(pack.peerID, pack.headers, d.headerProcCh) - } - expire = func() map[string]int { return d.queue.ExpireHeaders(d.peers.rates.TargetTimeout()) } - reserve = func(p *peerConnection, count int) (*fetchRequest, bool, bool) { - return d.queue.ReserveHeaders(p, count), false, false - } - fetch = func(p *peerConnection, req *fetchRequest) error { return p.FetchHeaders(req.From, MaxHeaderFetch) } - capacity = func(p *peerConnection) int { return p.HeaderCapacity(d.peers.rates.TargetRoundTrip()) } - setIdle = func(p *peerConnection, accepted int, deliveryTime time.Time) { - p.SetHeadersIdle(accepted, deliveryTime) - } - ) - err := d.fetchParts(d.headerCh, deliver, d.queue.headerContCh, expire, - d.queue.PendingHeaders, d.queue.InFlightHeaders, reserve, - nil, fetch, d.queue.CancelHeaders, capacity, d.peers.HeaderIdlePeers, setIdle, "headers") - - log.Debug("Skeleton fill terminated", "err", err) - - filled, proced := d.queue.RetrieveHeaders() - return filled, proced, err + err := d.concurrentFetch((*headerQueue)(d)) + if err != nil { + log.Debug("Skeleton fill failed", "err", err) + } + filled, hashes, proced := d.queue.RetrieveHeaders() + if err == nil { + log.Debug("Skeleton fill succeeded", "filled", len(filled), "processed", proced) + } + return filled, hashes, proced, err } // fetchBodies iteratively downloads the scheduled block bodies, taking any @@ -1265,20 +1143,7 @@ func (d *Downloader) fillHeaderSkeleton(from uint64, skeleton []*types.Header) ( // and also periodically checking for timeouts. func (d *Downloader) fetchBodies(from uint64) error { log.Debug("Downloading block bodies", "origin", from) - - var ( - deliver = func(packet dataPack) (int, error) { - pack := packet.(*bodyPack) - return d.queue.DeliverBodies(pack.peerID, pack.transactions, pack.uncles) - } - expire = func() map[string]int { return d.queue.ExpireBodies(d.peers.rates.TargetTimeout()) } - fetch = func(p *peerConnection, req *fetchRequest) error { return p.FetchBodies(req) } - capacity = func(p *peerConnection) int { return p.BlockCapacity(d.peers.rates.TargetRoundTrip()) } - setIdle = func(p *peerConnection, accepted int, deliveryTime time.Time) { p.SetBodiesIdle(accepted, deliveryTime) } - ) - err := d.fetchParts(d.bodyCh, deliver, d.bodyWakeCh, expire, - d.queue.PendingBlocks, d.queue.InFlightBlocks, d.queue.ReserveBodies, - d.bodyFetchHook, fetch, d.queue.CancelBodies, capacity, d.peers.BodyIdlePeers, setIdle, "bodies") + err := d.concurrentFetch((*bodyQueue)(d)) log.Debug("Block body download terminated", "err", err) return err @@ -1288,225 +1153,13 @@ func (d *Downloader) fetchBodies(from uint64) error { // available peers, reserving a chunk of receipts for each, waiting for delivery // and also periodically checking for timeouts. func (d *Downloader) fetchReceipts(from uint64) error { - log.Debug("Downloading transaction receipts", "origin", from) + log.Debug("Downloading receipts", "origin", from) + err := d.concurrentFetch((*receiptQueue)(d)) - var ( - deliver = func(packet dataPack) (int, error) { - pack := packet.(*receiptPack) - return d.queue.DeliverReceipts(pack.peerID, pack.receipts) - } - expire = func() map[string]int { return d.queue.ExpireReceipts(d.peers.rates.TargetTimeout()) } - fetch = func(p *peerConnection, req *fetchRequest) error { return p.FetchReceipts(req) } - capacity = func(p *peerConnection) int { return p.ReceiptCapacity(d.peers.rates.TargetRoundTrip()) } - setIdle = func(p *peerConnection, accepted int, deliveryTime time.Time) { - p.SetReceiptsIdle(accepted, deliveryTime) - } - ) - err := d.fetchParts(d.receiptCh, deliver, d.receiptWakeCh, expire, - d.queue.PendingReceipts, d.queue.InFlightReceipts, d.queue.ReserveReceipts, - d.receiptFetchHook, fetch, d.queue.CancelReceipts, capacity, d.peers.ReceiptIdlePeers, setIdle, "receipts") - - log.Debug("Transaction receipt download terminated", "err", err) + log.Debug("Receipt download terminated", "err", err) return err } -// fetchParts iteratively downloads scheduled block parts, taking any available -// peers, reserving a chunk of fetch requests for each, waiting for delivery and -// also periodically checking for timeouts. -// -// As the scheduling/timeout logic mostly is the same for all downloaded data -// types, this method is used by each for data gathering and is instrumented with -// various callbacks to handle the slight differences between processing them. -// -// The instrumentation parameters: -// - errCancel: error type to return if the fetch operation is cancelled (mostly makes logging nicer) -// - deliveryCh: channel from which to retrieve downloaded data packets (merged from all concurrent peers) -// - deliver: processing callback to deliver data packets into type specific download queues (usually within `queue`) -// - wakeCh: notification channel for waking the fetcher when new tasks are available (or sync completed) -// - expire: task callback method to abort requests that took too long and return the faulty peers (traffic shaping) -// - pending: task callback for the number of requests still needing download (detect completion/non-completability) -// - inFlight: task callback for the number of in-progress requests (wait for all active downloads to finish) -// - throttle: task callback to check if the processing queue is full and activate throttling (bound memory use) -// - reserve: task callback to reserve new download tasks to a particular peer (also signals partial completions) -// - fetchHook: tester callback to notify of new tasks being initiated (allows testing the scheduling logic) -// - fetch: network callback to actually send a particular download request to a physical remote peer -// - cancel: task callback to abort an in-flight download request and allow rescheduling it (in case of lost peer) -// - capacity: network callback to retrieve the estimated type-specific bandwidth capacity of a peer (traffic shaping) -// - idle: network callback to retrieve the currently (type specific) idle peers that can be assigned tasks -// - setIdle: network callback to set a peer back to idle and update its estimated capacity (traffic shaping) -// - kind: textual label of the type being downloaded to display in log messages -func (d *Downloader) fetchParts(deliveryCh chan dataPack, deliver func(dataPack) (int, error), wakeCh chan bool, - expire func() map[string]int, pending func() int, inFlight func() bool, reserve func(*peerConnection, int) (*fetchRequest, bool, bool), - fetchHook func([]*types.Header), fetch func(*peerConnection, *fetchRequest) error, cancel func(*fetchRequest), capacity func(*peerConnection) int, - idle func() ([]*peerConnection, int), setIdle func(*peerConnection, int, time.Time), kind string) error { - - // Create a ticker to detect expired retrieval tasks - ticker := time.NewTicker(100 * time.Millisecond) - defer ticker.Stop() - - update := make(chan struct{}, 1) - - // Prepare the queue and fetch block parts until the block header fetcher's done - finished := false - for { - select { - case <-d.cancelCh: - return errCanceled - - case packet := <-deliveryCh: - deliveryTime := time.Now() - // If the peer was previously banned and failed to deliver its pack - // in a reasonable time frame, ignore its message. - if peer := d.peers.Peer(packet.PeerId()); peer != nil { - // Deliver the received chunk of data and check chain validity - accepted, err := deliver(packet) - if errors.Is(err, errInvalidChain) { - return err - } - // Unless a peer delivered something completely else than requested (usually - // caused by a timed out request which came through in the end), set it to - // idle. If the delivery's stale, the peer should have already been idled. - if !errors.Is(err, errStaleDelivery) { - setIdle(peer, accepted, deliveryTime) - } - // Issue a log to the user to see what's going on - switch { - case err == nil && packet.Items() == 0: - peer.log.Trace("Requested data not delivered", "type", kind) - case err == nil: - peer.log.Trace("Delivered new batch of data", "type", kind, "count", packet.Stats()) - default: - peer.log.Debug("Failed to deliver retrieved data", "type", kind, "err", err) - } - } - // Blocks assembled, try to update the progress - select { - case update <- struct{}{}: - default: - } - - case cont := <-wakeCh: - // The header fetcher sent a continuation flag, check if it's done - if !cont { - finished = true - } - // Headers arrive, try to update the progress - select { - case update <- struct{}{}: - default: - } - - case <-ticker.C: - // Sanity check update the progress - select { - case update <- struct{}{}: - default: - } - - case <-update: - // Short circuit if we lost all our peers - if d.peers.Len() == 0 { - return errNoPeers - } - // Check for fetch request timeouts and demote the responsible peers - for pid, fails := range expire() { - if peer := d.peers.Peer(pid); peer != nil { - // If a lot of retrieval elements expired, we might have overestimated the remote peer or perhaps - // ourselves. Only reset to minimal throughput but don't drop just yet. If even the minimal times - // out that sync wise we need to get rid of the peer. - // - // The reason the minimum threshold is 2 is because the downloader tries to estimate the bandwidth - // and latency of a peer separately, which requires pushing the measures capacity a bit and seeing - // how response times reacts, to it always requests one more than the minimum (i.e. min 2). - if fails > 2 { - peer.log.Trace("Data delivery timed out", "type", kind) - setIdle(peer, 0, time.Now()) - } else { - peer.log.Debug("Stalling delivery, dropping", "type", kind) - - if d.dropPeer == nil { - // The dropPeer method is nil when `--copydb` is used for a local copy. - // Timeouts can occur if e.g. compaction hits at the wrong time, and can be ignored - peer.log.Warn("Downloader wants to drop peer, but peerdrop-function is not set", "peer", pid) - } else { - d.dropPeer(pid) - - // If this peer was the master peer, abort sync immediately - d.cancelLock.RLock() - master := pid == d.cancelPeer - d.cancelLock.RUnlock() - - if master { - d.cancel() - return errTimeout - } - } - } - } - } - // If there's nothing more to fetch, wait or terminate - if pending() == 0 { - if !inFlight() && finished { - log.Debug("Data fetching completed", "type", kind) - return nil - } - break - } - // Send a download request to all idle peers, until throttled - progressed, throttled, running := false, false, inFlight() - idles, total := idle() - pendCount := pending() - for _, peer := range idles { - // Short circuit if throttling activated - if throttled { - break - } - // Short circuit if there is no more available task. - if pendCount = pending(); pendCount == 0 { - break - } - // Reserve a chunk of fetches for a peer. A nil can mean either that - // no more headers are available, or that the peer is known not to - // have them. - request, progress, throttle := reserve(peer, capacity(peer)) - if progress { - progressed = true - } - if throttle { - throttled = true - throttleCounter.Inc(1) - } - if request == nil { - continue - } - if request.From > 0 { - peer.log.Trace("Requesting new batch of data", "type", kind, "from", request.From) - } else { - peer.log.Trace("Requesting new batch of data", "type", kind, "count", len(request.Headers), "from", request.Headers[0].Number) - } - // Fetch the chunk and make sure any errors return the hashes to the queue - if fetchHook != nil { - fetchHook(request.Headers) - } - if err := fetch(peer, request); err != nil { - // Although we could try and make an attempt to fix this, this error really - // means that we've double allocated a fetch task to a peer. If that is the - // case, the internal state of the downloader and the queue is very wrong so - // better hard crash and note the error instead of silently accumulating into - // a much bigger issue. - panic(fmt.Sprintf("%v: %s fetch assignment failed", peer, kind)) - } - running = true - } - // Make sure that we have peers available for fetching. If all peers have been tried - // and all failed throw an error - if !progressed && !throttled && !running && len(idles) == total && pendCount > 0 { - return errPeersUnavailable - } - } - } -} - // processHeaders takes batches of retrieved headers from an input channel and // keeps processing and scheduling them into the header chain and downloader's // queue until the stream ends or a failure occurs. @@ -1535,7 +1188,7 @@ func (d *Downloader) processHeaders(origin uint64, td *big.Int) error { } log.Warn("Rolled back chain segment", "header", fmt.Sprintf("%d->%d", lastHeader, d.lightchain.CurrentHeader().Number), - "fast", fmt.Sprintf("%d->%d", lastFastBlock, curFastBlock), + "snap", fmt.Sprintf("%d->%d", lastFastBlock, curFastBlock), "block", fmt.Sprintf("%d->%d", lastBlock, curBlock), "reason", rollbackErr) } }() @@ -1548,11 +1201,11 @@ func (d *Downloader) processHeaders(origin uint64, td *big.Int) error { rollbackErr = errCanceled return errCanceled - case headers := <-d.headerProcCh: + case task := <-d.headerProcCh: // Terminate header processing if we synced up - if len(headers) == 0 { + if task == nil || len(task.headers) == 0 { // Notify everyone that headers are fully processed - for _, ch := range []chan bool{d.bodyWakeCh, d.receiptWakeCh} { + for _, ch := range []chan bool{d.queue.blockWakeCh, d.queue.receiptWakeCh} { select { case ch <- false: case <-d.cancelCh: @@ -1576,14 +1229,14 @@ func (d *Downloader) processHeaders(origin uint64, td *big.Int) error { return errStallingPeer } } - // If fast or light syncing, ensure promised headers are indeed delivered. This is + // If snap or light syncing, ensure promised headers are indeed delivered. This is // needed to detect scenarios where an attacker feeds a bad pivot and then bails out // of delivering the post-pivot blocks that would flag the invalid content. // // This check cannot be executed "as is" for full imports, since blocks may still be // queued for processing when the header download completes. However, as long as the // peer gave us something useful, we're already happy/progressed (above check). - if mode == FastSync || mode == LightSync { + if mode == SnapSync || mode == LightSync { head := d.lightchain.CurrentHeader() if td.Cmp(d.lightchain.GetTd(head.Hash(), head.Number.Uint64())) > 0 { return errStallingPeer @@ -1594,6 +1247,8 @@ func (d *Downloader) processHeaders(origin uint64, td *big.Int) error { return nil } // Otherwise split the chunk of headers into batches and process them + headers, hashes := task.headers, task.hashes + gotHeaders = true for len(headers) > 0 { // Terminate if something failed in between processing chunks @@ -1608,10 +1263,11 @@ func (d *Downloader) processHeaders(origin uint64, td *big.Int) error { if limit > len(headers) { limit = len(headers) } - chunk := headers[:limit] + chunkHeaders := headers[:limit] + chunkHashes := hashes[:limit] // In case of header only syncing, validate the chunk immediately - if mode == FastSync || mode == LightSync { + if mode == SnapSync || mode == LightSync { // If we're importing pure headers, verify based on their recentness var pivot uint64 @@ -1622,22 +1278,22 @@ func (d *Downloader) processHeaders(origin uint64, td *big.Int) error { d.pivotLock.RUnlock() frequency := fsHeaderCheckFrequency - if chunk[len(chunk)-1].Number.Uint64()+uint64(fsHeaderForceVerify) > pivot { + if chunkHeaders[len(chunkHeaders)-1].Number.Uint64()+uint64(fsHeaderForceVerify) > pivot { frequency = 1 } - if n, err := d.lightchain.InsertHeaderChain(chunk, frequency); err != nil { + if n, err := d.lightchain.InsertHeaderChain(chunkHeaders, frequency); err != nil { rollbackErr = err // If some headers were inserted, track them as uncertain - if (mode == FastSync || frequency > 1) && n > 0 && rollback == 0 { - rollback = chunk[0].Number.Uint64() + if (mode == SnapSync || frequency > 1) && n > 0 && rollback == 0 { + rollback = chunkHeaders[0].Number.Uint64() } - log.Warn("Invalid header encountered", "number", chunk[n].Number, "hash", chunk[n].Hash(), "parent", chunk[n].ParentHash, "err", err) + log.Warn("Invalid header encountered", "number", chunkHeaders[n].Number, "hash", chunkHashes[n], "parent", chunkHeaders[n].ParentHash, "err", err) return fmt.Errorf("%w: %v", errInvalidChain, err) } // All verifications passed, track all headers within the alloted limits - if mode == FastSync { - head := chunk[len(chunk)-1].Number.Uint64() + if mode == SnapSync { + head := chunkHeaders[len(chunkHeaders)-1].Number.Uint64() if head-rollback > uint64(fsHeaderSafetyNet) { rollback = head - uint64(fsHeaderSafetyNet) } else { @@ -1646,9 +1302,9 @@ func (d *Downloader) processHeaders(origin uint64, td *big.Int) error { } } // Unless we're doing light chains, schedule the headers for associated content retrieval - if mode == FullSync || mode == FastSync { + if mode == FullSync || mode == SnapSync { // If we've reached the allowed number of pending headers, stall a bit - for d.queue.PendingBlocks() >= maxQueuedHeaders || d.queue.PendingReceipts() >= maxQueuedHeaders { + for d.queue.PendingBodies() >= maxQueuedHeaders || d.queue.PendingReceipts() >= maxQueuedHeaders { select { case <-d.cancelCh: rollbackErr = errCanceled @@ -1657,13 +1313,14 @@ func (d *Downloader) processHeaders(origin uint64, td *big.Int) error { } } // Otherwise insert the headers for content retrieval - inserts := d.queue.Schedule(chunk, origin) - if len(inserts) != len(chunk) { - rollbackErr = fmt.Errorf("stale headers: len inserts %v len(chunk) %v", len(inserts), len(chunk)) + inserts := d.queue.Schedule(chunkHeaders, chunkHashes, origin) + if len(inserts) != len(chunkHeaders) { + rollbackErr = fmt.Errorf("stale headers: len inserts %v len(chunk) %v", len(inserts), len(chunkHeaders)) return fmt.Errorf("%w: stale headers", errBadPeer) } } headers = headers[limit:] + hashes = hashes[limit:] origin += uint64(limit) } // Update the highest block number we know if a higher one is found. @@ -1674,7 +1331,7 @@ func (d *Downloader) processHeaders(origin uint64, td *big.Int) error { d.syncStatsLock.Unlock() // Signal the content downloaders of the availablility of new tasks - for _, ch := range []chan bool{d.bodyWakeCh, d.receiptWakeCh} { + for _, ch := range []chan bool{d.queue.blockWakeCh, d.queue.receiptWakeCh} { select { case ch <- true: default: @@ -1720,6 +1377,9 @@ func (d *Downloader) importBlockResults(results []*fetchResult) error { for i, result := range results { blocks[i] = types.NewBlockWithHeader(result.Header).WithBody(result.Transactions, result.Uncles) } + // Downloaded blocks are always regarded as trusted after the + // transition. Because the downloaded chain is guided by the + // consensus-layer. if index, err := d.blockchain.InsertChain(blocks); err != nil { if index < len(results) { log.Debug("Downloaded item processing failed", "number", results[index].Header.Number, "hash", results[index].Header.Hash(), "err", err) @@ -1735,9 +1395,9 @@ func (d *Downloader) importBlockResults(results []*fetchResult) error { return nil } -// processFastSyncContent takes fetch results from the queue and writes them to the +// processSnapSyncContent takes fetch results from the queue and writes them to the // database. It also controls the synchronisation of state nodes of the pivot block. -func (d *Downloader) processFastSyncContent() error { +func (d *Downloader) processSnapSyncContent() error { // Start syncing state of the reported head block. This should get us most of // the state of the pivot block. d.pivotLock.RLock() @@ -1800,7 +1460,7 @@ func (d *Downloader) processFastSyncContent() error { } else { results = append(append([]*fetchResult{oldPivot}, oldTail...), results...) } - // Split around the pivot block and process the two sides via fast/full sync + // Split around the pivot block and process the two sides via snap/full sync if atomic.LoadInt32(&d.committed) == 0 { latest := results[len(results)-1].Header // If the height is above the pivot block by 2 sets, it means the pivot @@ -1819,12 +1479,12 @@ func (d *Downloader) processFastSyncContent() error { d.pivotLock.Unlock() // Write out the pivot into the database so a rollback beyond it will - // reenable fast sync + // reenable snap sync rawdb.WriteLastPivotNumber(d.stateDB, pivot.Number.Uint64()) } } P, beforeP, afterP := splitAroundPivot(pivot.Number.Uint64(), results) - if err := d.commitFastSyncData(beforeP, sync); err != nil { + if err := d.commitSnapSyncData(beforeP, sync); err != nil { return err } if P != nil { @@ -1882,7 +1542,7 @@ func splitAroundPivot(pivot uint64, results []*fetchResult) (p *fetchResult, bef return p, before, after } -func (d *Downloader) commitFastSyncData(results []*fetchResult, stateSync *stateSync) error { +func (d *Downloader) commitSnapSyncData(results []*fetchResult, stateSync *stateSync) error { // Check for any early termination requests if len(results) == 0 { return nil @@ -1898,7 +1558,7 @@ func (d *Downloader) commitFastSyncData(results []*fetchResult, stateSync *state } // Retrieve the a batch of results to import first, last := results[0].Header, results[len(results)-1].Header - log.Debug("Inserting fast-sync blocks", "items", len(results), + log.Debug("Inserting snap-sync blocks", "items", len(results), "firstnum", first.Number, "firsthash", first.Hash(), "lastnumn", last.Number, "lasthash", last.Hash(), ) @@ -1917,49 +1577,19 @@ func (d *Downloader) commitFastSyncData(results []*fetchResult, stateSync *state func (d *Downloader) commitPivotBlock(result *fetchResult) error { block := types.NewBlockWithHeader(result.Header).WithBody(result.Transactions, result.Uncles) - log.Debug("Committing fast sync pivot as new head", "number", block.Number(), "hash", block.Hash()) + log.Debug("Committing snap sync pivot as new head", "number", block.Number(), "hash", block.Hash()) // Commit the pivot block as the new head, will require full sync from here on if _, err := d.blockchain.InsertReceiptChain([]*types.Block{block}, []types.Receipts{result.Receipts}, d.ancientLimit); err != nil { return err } - if err := d.blockchain.FastSyncCommitHead(block.Hash()); err != nil { + if err := d.blockchain.SnapSyncCommitHead(block.Hash()); err != nil { return err } atomic.StoreInt32(&d.committed, 1) - - // If we had a bloom filter for the state sync, deallocate it now. Note, we only - // deallocate internally, but keep the empty wrapper. This ensures that if we do - // a rollback after committing the pivot and restarting fast sync, we don't end - // up using a nil bloom. Empty bloom is fine, it just returns that it does not - // have the info we need, so reach down to the database instead. - if d.stateBloom != nil { - d.stateBloom.Close() - } return nil } -// DeliverHeaders injects a new batch of block headers received from a remote -// node into the download schedule. -func (d *Downloader) DeliverHeaders(id string, headers []*types.Header) error { - return d.deliver(d.headerCh, &headerPack{id, headers}, headerInMeter, headerDropMeter) -} - -// DeliverBodies injects a new batch of block bodies received from a remote node. -func (d *Downloader) DeliverBodies(id string, transactions [][]*types.Transaction, uncles [][]*types.Header) error { - return d.deliver(d.bodyCh, &bodyPack{id, transactions, uncles}, bodyInMeter, bodyDropMeter) -} - -// DeliverReceipts injects a new batch of receipts received from a remote node. -func (d *Downloader) DeliverReceipts(id string, receipts [][]*types.Receipt) error { - return d.deliver(d.receiptCh, &receiptPack{id, receipts}, receiptInMeter, receiptDropMeter) -} - -// DeliverNodeData injects a new batch of node state data received from a remote node. -func (d *Downloader) DeliverNodeData(id string, data [][]byte) error { - return d.deliver(d.stateCh, &statePack{id, data}, stateInMeter, stateDropMeter) -} - // DeliverSnapPacket is invoked from a peer's message handler when it transmits a // data packet for the local node to consume. func (d *Downloader) DeliverSnapPacket(peer *snap.Peer, packet snap.Packet) error { @@ -1985,27 +1615,3 @@ func (d *Downloader) DeliverSnapPacket(peer *snap.Peer, packet snap.Packet) erro return fmt.Errorf("unexpected snap packet type: %T", packet) } } - -// deliver injects a new batch of data received from a remote node. -func (d *Downloader) deliver(destCh chan dataPack, packet dataPack, inMeter, dropMeter metrics.Meter) (err error) { - // Update the delivery metrics for both good and failed deliveries - inMeter.Mark(int64(packet.Items())) - defer func() { - if err != nil { - dropMeter.Mark(int64(packet.Items())) - } - }() - // Deliver or abort if the sync is canceled while queuing - d.cancelLock.RLock() - cancel := d.cancelCh - d.cancelLock.RUnlock() - if cancel == nil { - return errNoSyncActive - } - select { - case destCh <- packet: - return nil - case <-cancel: - return errNoSyncActive - } -} diff --git a/eth/downloader/downloader_test.go b/eth/downloader/downloader_test.go index 17cd3630c9..70c6a51215 100644 --- a/eth/downloader/downloader_test.go +++ b/eth/downloader/downloader_test.go @@ -19,7 +19,9 @@ package downloader import ( "errors" "fmt" + "io/ioutil" "math/big" + "os" "strings" "sync" "sync/atomic" @@ -28,68 +30,52 @@ import ( "github.com/ethereum/go-ethereum" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/consensus/ethash" + "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/core/state/snapshot" "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/eth/protocols/eth" - "github.com/ethereum/go-ethereum/ethdb" + "github.com/ethereum/go-ethereum/eth/protocols/snap" "github.com/ethereum/go-ethereum/event" + "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/params" + "github.com/ethereum/go-ethereum/rlp" "github.com/ethereum/go-ethereum/trie" ) -// Reduce some of the parameters to make the tester faster. -func init() { - fullMaxForkAncestry = 10000 - lightMaxForkAncestry = 10000 - blockCacheMaxItems = 1024 - fsHeaderContCheck = 500 * time.Millisecond -} - // downloadTester is a test simulator for mocking out local block chain. type downloadTester struct { + freezer string + chain *core.BlockChain downloader *Downloader - genesis *types.Block // Genesis blocks used by the tester and peers - stateDb ethdb.Database // Database used by the tester for syncing from peers - peerDb ethdb.Database // Database of the peers containing all data - peers map[string]*downloadTesterPeer - - ownHashes []common.Hash // Hash chain belonging to the tester - ownHeaders map[common.Hash]*types.Header // Headers belonging to the tester - ownBlocks map[common.Hash]*types.Block // Blocks belonging to the tester - ownReceipts map[common.Hash]types.Receipts // Receipts belonging to the tester - ownChainTd map[common.Hash]*big.Int // Total difficulties of the blocks in the local chain - - ancientHeaders map[common.Hash]*types.Header // Ancient headers belonging to the tester - ancientBlocks map[common.Hash]*types.Block // Ancient blocks belonging to the tester - ancientReceipts map[common.Hash]types.Receipts // Ancient receipts belonging to the tester - ancientChainTd map[common.Hash]*big.Int // Ancient total difficulties of the blocks in the local chain - - lock sync.RWMutex + peers map[string]*downloadTesterPeer + lock sync.RWMutex } // newTester creates a new downloader test mocker. func newTester() *downloadTester { - tester := &downloadTester{ - genesis: testGenesis, - peerDb: testDB, - peers: make(map[string]*downloadTesterPeer), - ownHashes: []common.Hash{testGenesis.Hash()}, - ownHeaders: map[common.Hash]*types.Header{testGenesis.Hash(): testGenesis.Header()}, - ownBlocks: map[common.Hash]*types.Block{testGenesis.Hash(): testGenesis}, - ownReceipts: map[common.Hash]types.Receipts{testGenesis.Hash(): nil}, - ownChainTd: map[common.Hash]*big.Int{testGenesis.Hash(): testGenesis.Difficulty()}, - - // Initialize ancient store with test genesis block - ancientHeaders: map[common.Hash]*types.Header{testGenesis.Hash(): testGenesis.Header()}, - ancientBlocks: map[common.Hash]*types.Block{testGenesis.Hash(): testGenesis}, - ancientReceipts: map[common.Hash]types.Receipts{testGenesis.Hash(): nil}, - ancientChainTd: map[common.Hash]*big.Int{testGenesis.Hash(): testGenesis.Difficulty()}, + freezer, err := ioutil.TempDir("", "") + if err != nil { + panic(err) } - tester.stateDb = rawdb.NewMemoryDatabase() - tester.stateDb.Put(testGenesis.Root().Bytes(), []byte{0x00}) + db, err := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), freezer, "", false) + if err != nil { + panic(err) + } + core.GenesisBlockForTesting(db, testAddress, big.NewInt(1000000000000000)) - tester.downloader = New(0, tester.stateDb, trie.NewSyncBloom(1, tester.stateDb), new(event.TypeMux), tester, nil, tester.dropPeer) + chain, err := core.NewBlockChain(db, nil, params.TestChainConfig, ethash.NewFaker(), vm.Config{}, nil, nil) + if err != nil { + panic(err) + } + tester := &downloadTester{ + freezer: freezer, + chain: chain, + peers: make(map[string]*downloadTesterPeer), + } + tester.downloader = New(0, db, new(event.TypeMux), tester.chain, nil, tester.dropPeer) return tester } @@ -97,20 +83,20 @@ func newTester() *downloadTester { // held resources. func (dl *downloadTester) terminate() { dl.downloader.Terminate() + dl.chain.Stop() + + os.RemoveAll(dl.freezer) } // sync starts synchronizing with a remote peer, blocking until it completes. func (dl *downloadTester) sync(id string, td *big.Int, mode SyncMode) error { - dl.lock.RLock() - hash := dl.peers[id].chain.headBlock().Hash() - // If no particular TD was requested, load from the peer's blockchain + head := dl.peers[id].chain.CurrentBlock() if td == nil { - td = dl.peers[id].chain.td(hash) + // If no particular TD was requested, load from the peer's blockchain + td = dl.peers[id].chain.GetTd(head.Hash(), head.NumberU64()) } - dl.lock.RUnlock() - // Synchronise with the chosen peer and ensure proper cleanup afterwards - err := dl.downloader.synchronise(id, hash, td, mode) + err := dl.downloader.synchronise(id, head.Hash(), td, mode) select { case <-dl.downloader.cancelCh: // Ok, downloader fully cancelled after sync cycle @@ -121,284 +107,26 @@ func (dl *downloadTester) sync(id string, td *big.Int, mode SyncMode) error { return err } -// HasHeader checks if a header is present in the testers canonical chain. -func (dl *downloadTester) HasHeader(hash common.Hash, number uint64) bool { - return dl.GetHeaderByHash(hash) != nil -} - -// HasBlock checks if a block is present in the testers canonical chain. -func (dl *downloadTester) HasBlock(hash common.Hash, number uint64) bool { - return dl.GetBlockByHash(hash) != nil -} - -// HasFastBlock checks if a block is present in the testers canonical chain. -func (dl *downloadTester) HasFastBlock(hash common.Hash, number uint64) bool { - dl.lock.RLock() - defer dl.lock.RUnlock() - - if _, ok := dl.ancientReceipts[hash]; ok { - return true - } - _, ok := dl.ownReceipts[hash] - return ok -} - -// GetHeader retrieves a header from the testers canonical chain. -func (dl *downloadTester) GetHeaderByHash(hash common.Hash) *types.Header { - dl.lock.RLock() - defer dl.lock.RUnlock() - return dl.getHeaderByHash(hash) -} - -// getHeaderByHash returns the header if found either within ancients or own blocks) -// This method assumes that the caller holds at least the read-lock (dl.lock) -func (dl *downloadTester) getHeaderByHash(hash common.Hash) *types.Header { - header := dl.ancientHeaders[hash] - if header != nil { - return header - } - return dl.ownHeaders[hash] -} - -// GetBlock retrieves a block from the testers canonical chain. -func (dl *downloadTester) GetBlockByHash(hash common.Hash) *types.Block { - dl.lock.RLock() - defer dl.lock.RUnlock() - - block := dl.ancientBlocks[hash] - if block != nil { - return block - } - return dl.ownBlocks[hash] -} - -// CurrentHeader retrieves the current head header from the canonical chain. -func (dl *downloadTester) CurrentHeader() *types.Header { - dl.lock.RLock() - defer dl.lock.RUnlock() - - for i := len(dl.ownHashes) - 1; i >= 0; i-- { - if header := dl.ancientHeaders[dl.ownHashes[i]]; header != nil { - return header - } - if header := dl.ownHeaders[dl.ownHashes[i]]; header != nil { - return header - } - } - return dl.genesis.Header() -} - -// CurrentBlock retrieves the current head block from the canonical chain. -func (dl *downloadTester) CurrentBlock() *types.Block { - dl.lock.RLock() - defer dl.lock.RUnlock() - - for i := len(dl.ownHashes) - 1; i >= 0; i-- { - if block := dl.ancientBlocks[dl.ownHashes[i]]; block != nil { - if _, err := dl.stateDb.Get(block.Root().Bytes()); err == nil { - return block - } - return block - } - if block := dl.ownBlocks[dl.ownHashes[i]]; block != nil { - if _, err := dl.stateDb.Get(block.Root().Bytes()); err == nil { - return block - } - } - } - return dl.genesis -} - -// CurrentFastBlock retrieves the current head fast-sync block from the canonical chain. -func (dl *downloadTester) CurrentFastBlock() *types.Block { - dl.lock.RLock() - defer dl.lock.RUnlock() - - for i := len(dl.ownHashes) - 1; i >= 0; i-- { - if block := dl.ancientBlocks[dl.ownHashes[i]]; block != nil { - return block - } - if block := dl.ownBlocks[dl.ownHashes[i]]; block != nil { - return block - } - } - return dl.genesis -} - -// FastSyncCommitHead manually sets the head block to a given hash. -func (dl *downloadTester) FastSyncCommitHead(hash common.Hash) error { - // For now only check that the state trie is correct - if block := dl.GetBlockByHash(hash); block != nil { - _, err := trie.NewSecure(block.Root(), trie.NewDatabase(dl.stateDb)) - return err - } - return fmt.Errorf("non existent block: %x", hash[:4]) -} - -// GetTd retrieves the block's total difficulty from the canonical chain. -func (dl *downloadTester) GetTd(hash common.Hash, number uint64) *big.Int { - dl.lock.RLock() - defer dl.lock.RUnlock() - - return dl.getTd(hash) -} - -// getTd retrieves the block's total difficulty if found either within -// ancients or own blocks). -// This method assumes that the caller holds at least the read-lock (dl.lock) -func (dl *downloadTester) getTd(hash common.Hash) *big.Int { - if td := dl.ancientChainTd[hash]; td != nil { - return td - } - return dl.ownChainTd[hash] -} - -// InsertHeaderChain injects a new batch of headers into the simulated chain. -func (dl *downloadTester) InsertHeaderChain(headers []*types.Header, checkFreq int) (i int, err error) { - dl.lock.Lock() - defer dl.lock.Unlock() - // Do a quick check, as the blockchain.InsertHeaderChain doesn't insert anything in case of errors - if dl.getHeaderByHash(headers[0].ParentHash) == nil { - return 0, fmt.Errorf("InsertHeaderChain: unknown parent at first position, parent of number %d", headers[0].Number) - } - var hashes []common.Hash - for i := 1; i < len(headers); i++ { - hash := headers[i-1].Hash() - if headers[i].ParentHash != headers[i-1].Hash() { - return i, fmt.Errorf("non-contiguous import at position %d", i) - } - hashes = append(hashes, hash) - } - hashes = append(hashes, headers[len(headers)-1].Hash()) - // Do a full insert if pre-checks passed - for i, header := range headers { - hash := hashes[i] - if dl.getHeaderByHash(hash) != nil { - continue - } - if dl.getHeaderByHash(header.ParentHash) == nil { - // This _should_ be impossible, due to precheck and induction - return i, fmt.Errorf("InsertHeaderChain: unknown parent at position %d", i) - } - dl.ownHashes = append(dl.ownHashes, hash) - dl.ownHeaders[hash] = header - - td := dl.getTd(header.ParentHash) - dl.ownChainTd[hash] = new(big.Int).Add(td, header.Difficulty) - } - return len(headers), nil -} - -// InsertChain injects a new batch of blocks into the simulated chain. -func (dl *downloadTester) InsertChain(blocks types.Blocks) (i int, err error) { - dl.lock.Lock() - defer dl.lock.Unlock() - for i, block := range blocks { - if parent, ok := dl.ownBlocks[block.ParentHash()]; !ok { - return i, fmt.Errorf("InsertChain: unknown parent at position %d / %d", i, len(blocks)) - } else if _, err := dl.stateDb.Get(parent.Root().Bytes()); err != nil { - return i, fmt.Errorf("InsertChain: unknown parent state %x: %v", parent.Root(), err) - } - if hdr := dl.getHeaderByHash(block.Hash()); hdr == nil { - dl.ownHashes = append(dl.ownHashes, block.Hash()) - dl.ownHeaders[block.Hash()] = block.Header() - } - dl.ownBlocks[block.Hash()] = block - dl.ownReceipts[block.Hash()] = make(types.Receipts, 0) - dl.stateDb.Put(block.Root().Bytes(), []byte{0x00}) - td := dl.getTd(block.ParentHash()) - dl.ownChainTd[block.Hash()] = new(big.Int).Add(td, block.Difficulty()) - } - return len(blocks), nil -} - -// InsertReceiptChain injects a new batch of receipts into the simulated chain. -func (dl *downloadTester) InsertReceiptChain(blocks types.Blocks, receipts []types.Receipts, ancientLimit uint64) (i int, err error) { - dl.lock.Lock() - defer dl.lock.Unlock() - - for i := 0; i < len(blocks) && i < len(receipts); i++ { - if _, ok := dl.ownHeaders[blocks[i].Hash()]; !ok { - return i, errors.New("unknown owner") - } - if _, ok := dl.ancientBlocks[blocks[i].ParentHash()]; !ok { - if _, ok := dl.ownBlocks[blocks[i].ParentHash()]; !ok { - return i, errors.New("InsertReceiptChain: unknown parent") - } - } - if blocks[i].NumberU64() <= ancientLimit { - dl.ancientBlocks[blocks[i].Hash()] = blocks[i] - dl.ancientReceipts[blocks[i].Hash()] = receipts[i] - - // Migrate from active db to ancient db - dl.ancientHeaders[blocks[i].Hash()] = blocks[i].Header() - dl.ancientChainTd[blocks[i].Hash()] = new(big.Int).Add(dl.ancientChainTd[blocks[i].ParentHash()], blocks[i].Difficulty()) - delete(dl.ownHeaders, blocks[i].Hash()) - delete(dl.ownChainTd, blocks[i].Hash()) - } else { - dl.ownBlocks[blocks[i].Hash()] = blocks[i] - dl.ownReceipts[blocks[i].Hash()] = receipts[i] - } - } - return len(blocks), nil -} - -// SetHead rewinds the local chain to a new head. -func (dl *downloadTester) SetHead(head uint64) error { - dl.lock.Lock() - defer dl.lock.Unlock() - - // Find the hash of the head to reset to - var hash common.Hash - for h, header := range dl.ownHeaders { - if header.Number.Uint64() == head { - hash = h - } - } - for h, header := range dl.ancientHeaders { - if header.Number.Uint64() == head { - hash = h - } - } - if hash == (common.Hash{}) { - return fmt.Errorf("unknown head to set: %d", head) - } - // Find the offset in the header chain - var offset int - for o, h := range dl.ownHashes { - if h == hash { - offset = o - break - } - } - // Remove all the hashes and associated data afterwards - for i := offset + 1; i < len(dl.ownHashes); i++ { - delete(dl.ownChainTd, dl.ownHashes[i]) - delete(dl.ownHeaders, dl.ownHashes[i]) - delete(dl.ownReceipts, dl.ownHashes[i]) - delete(dl.ownBlocks, dl.ownHashes[i]) - - delete(dl.ancientChainTd, dl.ownHashes[i]) - delete(dl.ancientHeaders, dl.ownHashes[i]) - delete(dl.ancientReceipts, dl.ownHashes[i]) - delete(dl.ancientBlocks, dl.ownHashes[i]) - } - dl.ownHashes = dl.ownHashes[:offset+1] - return nil -} - -// Rollback removes some recently added elements from the chain. -func (dl *downloadTester) Rollback(hashes []common.Hash) { -} - // newPeer registers a new block download source into the downloader. -func (dl *downloadTester) newPeer(id string, version uint, chain *testChain) error { +func (dl *downloadTester) newPeer(id string, version uint, blocks []*types.Block) *downloadTesterPeer { dl.lock.Lock() defer dl.lock.Unlock() - peer := &downloadTesterPeer{dl: dl, id: id, chain: chain} + peer := &downloadTesterPeer{ + dl: dl, + id: id, + chain: newTestBlockchain(blocks), + withholdHeaders: make(map[common.Hash]struct{}), + } dl.peers[id] = peer - return dl.downloader.RegisterPeer(id, version, peer) + + if err := dl.downloader.RegisterPeer(id, version, peer); err != nil { + panic(err) + } + if err := dl.downloader.SnapSyncer.Register(peer); err != nil { + panic(err) + } + return peer } // dropPeer simulates a hard peer removal from the connection pool. @@ -407,154 +135,332 @@ func (dl *downloadTester) dropPeer(id string) { defer dl.lock.Unlock() delete(dl.peers, id) + dl.downloader.SnapSyncer.Unregister(id) dl.downloader.UnregisterPeer(id) } -// Snapshots implements the BlockChain interface for the downloader, but is a noop. -func (dl *downloadTester) Snapshots() *snapshot.Tree { - return nil -} - type downloadTesterPeer struct { - dl *downloadTester - id string - chain *testChain - missingStates map[common.Hash]bool // State entries that fast sync should not return + dl *downloadTester + id string + chain *core.BlockChain + + withholdHeaders map[common.Hash]struct{} } // Head constructs a function to retrieve a peer's current head hash // and total difficulty. func (dlp *downloadTesterPeer) Head() (common.Hash, *big.Int) { - b := dlp.chain.headBlock() - return b.Hash(), dlp.chain.td(b.Hash()) + head := dlp.chain.CurrentBlock() + return head.Hash(), dlp.chain.GetTd(head.Hash(), head.NumberU64()) +} + +func unmarshalRlpHeaders(rlpdata []rlp.RawValue) []*types.Header { + var headers = make([]*types.Header, len(rlpdata)) + for i, data := range rlpdata { + var h types.Header + if err := rlp.DecodeBytes(data, &h); err != nil { + panic(err) + } + headers[i] = &h + } + return headers } // RequestHeadersByHash constructs a GetBlockHeaders function based on a hashed // origin; associated with a particular peer in the download tester. The returned // function can be used to retrieve batches of headers from the particular peer. -func (dlp *downloadTesterPeer) RequestHeadersByHash(origin common.Hash, amount int, skip int, reverse bool) error { - result := dlp.chain.headersByHash(origin, amount, skip, reverse) - go dlp.dl.downloader.DeliverHeaders(dlp.id, result) - return nil +func (dlp *downloadTesterPeer) RequestHeadersByHash(origin common.Hash, amount int, skip int, reverse bool, sink chan *eth.Response) (*eth.Request, error) { + // Service the header query via the live handler code + rlpHeaders := eth.ServiceGetBlockHeadersQuery(dlp.chain, ð.GetBlockHeadersPacket{ + Origin: eth.HashOrNumber{ + Hash: origin, + }, + Amount: uint64(amount), + Skip: uint64(skip), + Reverse: reverse, + }, nil) + headers := unmarshalRlpHeaders(rlpHeaders) + // If a malicious peer is simulated withholding headers, delete them + for hash := range dlp.withholdHeaders { + for i, header := range headers { + if header.Hash() == hash { + headers = append(headers[:i], headers[i+1:]...) + break + } + } + } + hashes := make([]common.Hash, len(headers)) + for i, header := range headers { + hashes[i] = header.Hash() + } + // Deliver the headers to the downloader + req := ð.Request{ + Peer: dlp.id, + } + res := ð.Response{ + Req: req, + Res: (*eth.BlockHeadersPacket)(&headers), + Meta: hashes, + Time: 1, + Done: make(chan error, 1), // Ignore the returned status + } + go func() { + sink <- res + }() + return req, nil } // RequestHeadersByNumber constructs a GetBlockHeaders function based on a numbered // origin; associated with a particular peer in the download tester. The returned // function can be used to retrieve batches of headers from the particular peer. -func (dlp *downloadTesterPeer) RequestHeadersByNumber(origin uint64, amount int, skip int, reverse bool) error { - result := dlp.chain.headersByNumber(origin, amount, skip, reverse) - go dlp.dl.downloader.DeliverHeaders(dlp.id, result) - return nil +func (dlp *downloadTesterPeer) RequestHeadersByNumber(origin uint64, amount int, skip int, reverse bool, sink chan *eth.Response) (*eth.Request, error) { + // Service the header query via the live handler code + rlpHeaders := eth.ServiceGetBlockHeadersQuery(dlp.chain, ð.GetBlockHeadersPacket{ + Origin: eth.HashOrNumber{ + Number: origin, + }, + Amount: uint64(amount), + Skip: uint64(skip), + Reverse: reverse, + }, nil) + headers := unmarshalRlpHeaders(rlpHeaders) + // If a malicious peer is simulated withholding headers, delete them + for hash := range dlp.withholdHeaders { + for i, header := range headers { + if header.Hash() == hash { + headers = append(headers[:i], headers[i+1:]...) + break + } + } + } + hashes := make([]common.Hash, len(headers)) + for i, header := range headers { + hashes[i] = header.Hash() + } + // Deliver the headers to the downloader + req := ð.Request{ + Peer: dlp.id, + } + res := ð.Response{ + Req: req, + Res: (*eth.BlockHeadersPacket)(&headers), + Meta: hashes, + Time: 1, + Done: make(chan error, 1), // Ignore the returned status + } + go func() { + sink <- res + }() + return req, nil } // RequestBodies constructs a getBlockBodies method associated with a particular // peer in the download tester. The returned function can be used to retrieve // batches of block bodies from the particularly requested peer. -func (dlp *downloadTesterPeer) RequestBodies(hashes []common.Hash) error { - txs, uncles := dlp.chain.bodies(hashes) - go dlp.dl.downloader.DeliverBodies(dlp.id, txs, uncles) - return nil +func (dlp *downloadTesterPeer) RequestBodies(hashes []common.Hash, sink chan *eth.Response) (*eth.Request, error) { + blobs := eth.ServiceGetBlockBodiesQuery(dlp.chain, hashes) + + bodies := make([]*eth.BlockBody, len(blobs)) + for i, blob := range blobs { + bodies[i] = new(eth.BlockBody) + rlp.DecodeBytes(blob, bodies[i]) + } + var ( + txsHashes = make([]common.Hash, len(bodies)) + uncleHashes = make([]common.Hash, len(bodies)) + ) + hasher := trie.NewStackTrie(nil) + for i, body := range bodies { + txsHashes[i] = types.DeriveSha(types.Transactions(body.Transactions), hasher) + uncleHashes[i] = types.CalcUncleHash(body.Uncles) + } + req := ð.Request{ + Peer: dlp.id, + } + res := ð.Response{ + Req: req, + Res: (*eth.BlockBodiesPacket)(&bodies), + Meta: [][]common.Hash{txsHashes, uncleHashes}, + Time: 1, + Done: make(chan error, 1), // Ignore the returned status + } + go func() { + sink <- res + }() + return req, nil } // RequestReceipts constructs a getReceipts method associated with a particular // peer in the download tester. The returned function can be used to retrieve // batches of block receipts from the particularly requested peer. -func (dlp *downloadTesterPeer) RequestReceipts(hashes []common.Hash) error { - receipts := dlp.chain.receipts(hashes) - go dlp.dl.downloader.DeliverReceipts(dlp.id, receipts) +func (dlp *downloadTesterPeer) RequestReceipts(hashes []common.Hash, sink chan *eth.Response) (*eth.Request, error) { + blobs := eth.ServiceGetReceiptsQuery(dlp.chain, hashes) + + receipts := make([][]*types.Receipt, len(blobs)) + for i, blob := range blobs { + rlp.DecodeBytes(blob, &receipts[i]) + } + hasher := trie.NewStackTrie(nil) + hashes = make([]common.Hash, len(receipts)) + for i, receipt := range receipts { + hashes[i] = types.DeriveSha(types.Receipts(receipt), hasher) + } + req := ð.Request{ + Peer: dlp.id, + } + res := ð.Response{ + Req: req, + Res: (*eth.ReceiptsPacket)(&receipts), + Meta: hashes, + Time: 1, + Done: make(chan error, 1), // Ignore the returned status + } + go func() { + sink <- res + }() + return req, nil +} + +// ID retrieves the peer's unique identifier. +func (dlp *downloadTesterPeer) ID() string { + return dlp.id +} + +// RequestAccountRange fetches a batch of accounts rooted in a specific account +// trie, starting with the origin. +func (dlp *downloadTesterPeer) RequestAccountRange(id uint64, root, origin, limit common.Hash, bytes uint64) error { + // Create the request and service it + req := &snap.GetAccountRangePacket{ + ID: id, + Root: root, + Origin: origin, + Limit: limit, + Bytes: bytes, + } + slimaccs, proofs := snap.ServiceGetAccountRangeQuery(dlp.chain, req) + + // We need to convert to non-slim format, delegate to the packet code + res := &snap.AccountRangePacket{ + ID: id, + Accounts: slimaccs, + Proof: proofs, + } + hashes, accounts, _ := res.Unpack() + + go dlp.dl.downloader.SnapSyncer.OnAccounts(dlp, id, hashes, accounts, proofs) return nil } -// RequestNodeData constructs a getNodeData method associated with a particular -// peer in the download tester. The returned function can be used to retrieve -// batches of node state data from the particularly requested peer. -func (dlp *downloadTesterPeer) RequestNodeData(hashes []common.Hash) error { - dlp.dl.lock.RLock() - defer dlp.dl.lock.RUnlock() - - results := make([][]byte, 0, len(hashes)) - for _, hash := range hashes { - if data, err := dlp.dl.peerDb.Get(hash.Bytes()); err == nil { - if !dlp.missingStates[hash] { - results = append(results, data) - } - } +// RequestStorageRanges fetches a batch of storage slots belonging to one or +// more accounts. If slots from only one accout is requested, an origin marker +// may also be used to retrieve from there. +func (dlp *downloadTesterPeer) RequestStorageRanges(id uint64, root common.Hash, accounts []common.Hash, origin, limit []byte, bytes uint64) error { + // Create the request and service it + req := &snap.GetStorageRangesPacket{ + ID: id, + Accounts: accounts, + Root: root, + Origin: origin, + Limit: limit, + Bytes: bytes, } - go dlp.dl.downloader.DeliverNodeData(dlp.id, results) + storage, proofs := snap.ServiceGetStorageRangesQuery(dlp.chain, req) + + // We need to convert to demultiplex, delegate to the packet code + res := &snap.StorageRangesPacket{ + ID: id, + Slots: storage, + Proof: proofs, + } + hashes, slots := res.Unpack() + + go dlp.dl.downloader.SnapSyncer.OnStorage(dlp, id, hashes, slots, proofs) return nil } +// RequestByteCodes fetches a batch of bytecodes by hash. +func (dlp *downloadTesterPeer) RequestByteCodes(id uint64, hashes []common.Hash, bytes uint64) error { + req := &snap.GetByteCodesPacket{ + ID: id, + Hashes: hashes, + Bytes: bytes, + } + codes := snap.ServiceGetByteCodesQuery(dlp.chain, req) + go dlp.dl.downloader.SnapSyncer.OnByteCodes(dlp, id, codes) + return nil +} + +// RequestTrieNodes fetches a batch of account or storage trie nodes rooted in +// a specificstate trie. +func (dlp *downloadTesterPeer) RequestTrieNodes(id uint64, root common.Hash, paths []snap.TrieNodePathSet, bytes uint64) error { + req := &snap.GetTrieNodesPacket{ + ID: id, + Root: root, + Paths: paths, + Bytes: bytes, + } + nodes, _ := snap.ServiceGetTrieNodesQuery(dlp.chain, req, time.Now()) + go dlp.dl.downloader.SnapSyncer.OnTrieNodes(dlp, id, nodes) + return nil +} + +// Log retrieves the peer's own contextual logger. +func (dlp *downloadTesterPeer) Log() log.Logger { + return log.New("peer", dlp.id) +} + // assertOwnChain checks if the local chain contains the correct number of items // of the various chain components. func assertOwnChain(t *testing.T, tester *downloadTester, length int) { // Mark this method as a helper to report errors at callsite, not in here t.Helper() - assertOwnForkedChain(t, tester, 1, []int{length}) -} - -// assertOwnForkedChain checks if the local forked chain contains the correct -// number of items of the various chain components. -func assertOwnForkedChain(t *testing.T, tester *downloadTester, common int, lengths []int) { - // Mark this method as a helper to report errors at callsite, not in here - t.Helper() - - // Initialize the counters for the first fork - headers, blocks, receipts := lengths[0], lengths[0], lengths[0] - - // Update the counters for each subsequent fork - for _, length := range lengths[1:] { - headers += length - common - blocks += length - common - receipts += length - common - } + headers, blocks, receipts := length, length, length if tester.downloader.getMode() == LightSync { blocks, receipts = 1, 1 } - if hs := len(tester.ownHeaders) + len(tester.ancientHeaders) - 1; hs != headers { + if hs := int(tester.chain.CurrentHeader().Number.Uint64()) + 1; hs != headers { t.Fatalf("synchronised headers mismatch: have %v, want %v", hs, headers) } - if bs := len(tester.ownBlocks) + len(tester.ancientBlocks) - 1; bs != blocks { + if bs := int(tester.chain.CurrentBlock().NumberU64()) + 1; bs != blocks { t.Fatalf("synchronised blocks mismatch: have %v, want %v", bs, blocks) } - if rs := len(tester.ownReceipts) + len(tester.ancientReceipts) - 1; rs != receipts { + if rs := int(tester.chain.CurrentFastBlock().NumberU64()) + 1; rs != receipts { t.Fatalf("synchronised receipts mismatch: have %v, want %v", rs, receipts) } } func TestCanonicalSynchronisation66Full(t *testing.T) { testCanonSync(t, eth.ETH66, FullSync) } -func TestCanonicalSynchronisation66Fast(t *testing.T) { testCanonSync(t, eth.ETH66, FastSync) } +func TestCanonicalSynchronisation66Snap(t *testing.T) { testCanonSync(t, eth.ETH66, SnapSync) } func TestCanonicalSynchronisation66Light(t *testing.T) { testCanonSync(t, eth.ETH66, LightSync) } func testCanonSync(t *testing.T, protocol uint, mode SyncMode) { - t.Parallel() - tester := newTester() defer tester.terminate() // Create a small enough block chain to download chain := testChainBase.shorten(blockCacheMaxItems - 15) - tester.newPeer("peer", protocol, chain) + tester.newPeer("peer", protocol, chain.blocks[1:]) // Synchronise with the peer and make sure all relevant data was retrieved if err := tester.sync("peer", nil, mode); err != nil { t.Fatalf("failed to synchronise blocks: %v", err) } - assertOwnChain(t, tester, chain.len()) + assertOwnChain(t, tester, len(chain.blocks)) } // Tests that if a large batch of blocks are being downloaded, it is throttled // until the cached blocks are retrieved. func TestThrottling66Full(t *testing.T) { testThrottling(t, eth.ETH66, FullSync) } -func TestThrottling66Fast(t *testing.T) { testThrottling(t, eth.ETH66, FastSync) } +func TestThrottling66Snap(t *testing.T) { testThrottling(t, eth.ETH66, SnapSync) } func testThrottling(t *testing.T, protocol uint, mode SyncMode) { - t.Parallel() tester := newTester() + defer tester.terminate() // Create a long block chain to download and the tester - targetBlocks := testChainBase.len() - 1 - tester.newPeer("peer", protocol, testChainBase) + targetBlocks := len(testChainBase.blocks) - 1 + tester.newPeer("peer", protocol, testChainBase.blocks[1:]) // Wrap the importer to allow stepping blocked, proceed := uint32(0), make(chan struct{}) @@ -571,7 +477,7 @@ func testThrottling(t *testing.T, protocol uint, mode SyncMode) { for { // Check the retrieval count synchronously (! reason for this ugly block) tester.lock.RLock() - retrieved := len(tester.ownBlocks) + retrieved := int(tester.chain.CurrentFastBlock().Number().Uint64()) + 1 tester.lock.RUnlock() if retrieved >= targetBlocks+1 { break @@ -587,7 +493,7 @@ func testThrottling(t *testing.T, protocol uint, mode SyncMode) { { cached = tester.downloader.queue.resultCache.countCompleted() frozen = int(atomic.LoadUint32(&blocked)) - retrieved = len(tester.ownBlocks) + retrieved = int(tester.chain.CurrentFastBlock().Number().Uint64()) + 1 } tester.downloader.queue.resultCache.lock.Unlock() tester.downloader.queue.lock.Unlock() @@ -603,12 +509,11 @@ func testThrottling(t *testing.T, protocol uint, mode SyncMode) { // Make sure we filled up the cache, then exhaust it time.Sleep(25 * time.Millisecond) // give it a chance to screw up tester.lock.RLock() - retrieved = len(tester.ownBlocks) + retrieved = int(tester.chain.CurrentFastBlock().Number().Uint64()) + 1 tester.lock.RUnlock() if cached != blockCacheMaxItems && cached != blockCacheMaxItems-reorgProtHeaderDelay && retrieved+cached+frozen != targetBlocks+1 && retrieved+cached+frozen != targetBlocks+1-reorgProtHeaderDelay { t.Fatalf("block count mismatch: have %v, want %v (owned %v, blocked %v, target %v)", cached, blockCacheMaxItems, retrieved, frozen, targetBlocks+1) } - // Permit the blocked blocks to import if atomic.LoadUint32(&blocked) > 0 { atomic.StoreUint32(&blocked, uint32(0)) @@ -620,93 +525,85 @@ func testThrottling(t *testing.T, protocol uint, mode SyncMode) { if err := <-errc; err != nil { t.Fatalf("block synchronization failed: %v", err) } - tester.terminate() - } // Tests that simple synchronization against a forked chain works correctly. In // this test common ancestor lookup should *not* be short circuited, and a full // binary search should be executed. func TestForkedSync66Full(t *testing.T) { testForkedSync(t, eth.ETH66, FullSync) } -func TestForkedSync66Fast(t *testing.T) { testForkedSync(t, eth.ETH66, FastSync) } +func TestForkedSync66Snap(t *testing.T) { testForkedSync(t, eth.ETH66, SnapSync) } func TestForkedSync66Light(t *testing.T) { testForkedSync(t, eth.ETH66, LightSync) } func testForkedSync(t *testing.T, protocol uint, mode SyncMode) { - t.Parallel() - tester := newTester() defer tester.terminate() - chainA := testChainForkLightA.shorten(testChainBase.len() + 80) - chainB := testChainForkLightB.shorten(testChainBase.len() + 80) - tester.newPeer("fork A", protocol, chainA) - tester.newPeer("fork B", protocol, chainB) + chainA := testChainForkLightA.shorten(len(testChainBase.blocks) + 80) + chainB := testChainForkLightB.shorten(len(testChainBase.blocks) + 81) + tester.newPeer("fork A", protocol, chainA.blocks[1:]) + tester.newPeer("fork B", protocol, chainB.blocks[1:]) // Synchronise with the peer and make sure all blocks were retrieved if err := tester.sync("fork A", nil, mode); err != nil { t.Fatalf("failed to synchronise blocks: %v", err) } - assertOwnChain(t, tester, chainA.len()) + assertOwnChain(t, tester, len(chainA.blocks)) // Synchronise with the second peer and make sure that fork is pulled too if err := tester.sync("fork B", nil, mode); err != nil { t.Fatalf("failed to synchronise blocks: %v", err) } - assertOwnForkedChain(t, tester, testChainBase.len(), []int{chainA.len(), chainB.len()}) + assertOwnChain(t, tester, len(chainB.blocks)) } // Tests that synchronising against a much shorter but much heavyer fork works // corrently and is not dropped. func TestHeavyForkedSync66Full(t *testing.T) { testHeavyForkedSync(t, eth.ETH66, FullSync) } -func TestHeavyForkedSync66Fast(t *testing.T) { testHeavyForkedSync(t, eth.ETH66, FastSync) } +func TestHeavyForkedSync66Snap(t *testing.T) { testHeavyForkedSync(t, eth.ETH66, SnapSync) } func TestHeavyForkedSync66Light(t *testing.T) { testHeavyForkedSync(t, eth.ETH66, LightSync) } func testHeavyForkedSync(t *testing.T, protocol uint, mode SyncMode) { - t.Parallel() - tester := newTester() defer tester.terminate() - chainA := testChainForkLightA.shorten(testChainBase.len() + 80) - chainB := testChainForkHeavy.shorten(testChainBase.len() + 80) - tester.newPeer("light", protocol, chainA) - tester.newPeer("heavy", protocol, chainB) + chainA := testChainForkLightA.shorten(len(testChainBase.blocks) + 80) + chainB := testChainForkHeavy.shorten(len(testChainBase.blocks) + 79) + tester.newPeer("light", protocol, chainA.blocks[1:]) + tester.newPeer("heavy", protocol, chainB.blocks[1:]) // Synchronise with the peer and make sure all blocks were retrieved if err := tester.sync("light", nil, mode); err != nil { t.Fatalf("failed to synchronise blocks: %v", err) } - assertOwnChain(t, tester, chainA.len()) + assertOwnChain(t, tester, len(chainA.blocks)) // Synchronise with the second peer and make sure that fork is pulled too if err := tester.sync("heavy", nil, mode); err != nil { t.Fatalf("failed to synchronise blocks: %v", err) } - assertOwnForkedChain(t, tester, testChainBase.len(), []int{chainA.len(), chainB.len()}) + assertOwnChain(t, tester, len(chainB.blocks)) } // Tests that chain forks are contained within a certain interval of the current // chain head, ensuring that malicious peers cannot waste resources by feeding // long dead chains. func TestBoundedForkedSync66Full(t *testing.T) { testBoundedForkedSync(t, eth.ETH66, FullSync) } -func TestBoundedForkedSync66Fast(t *testing.T) { testBoundedForkedSync(t, eth.ETH66, FastSync) } +func TestBoundedForkedSync66Snap(t *testing.T) { testBoundedForkedSync(t, eth.ETH66, SnapSync) } func TestBoundedForkedSync66Light(t *testing.T) { testBoundedForkedSync(t, eth.ETH66, LightSync) } func testBoundedForkedSync(t *testing.T, protocol uint, mode SyncMode) { - t.Parallel() - tester := newTester() defer tester.terminate() chainA := testChainForkLightA chainB := testChainForkLightB - tester.newPeer("original", protocol, chainA) - tester.newPeer("rewriter", protocol, chainB) + tester.newPeer("original", protocol, chainA.blocks[1:]) + tester.newPeer("rewriter", protocol, chainB.blocks[1:]) // Synchronise with the peer and make sure all blocks were retrieved if err := tester.sync("original", nil, mode); err != nil { t.Fatalf("failed to synchronise blocks: %v", err) } - assertOwnChain(t, tester, chainA.len()) + assertOwnChain(t, tester, len(chainA.blocks)) // Synchronise with the second peer and ensure that the fork is rejected to being too old if err := tester.sync("rewriter", nil, mode); err != errInvalidAncestor { @@ -720,69 +617,46 @@ func testBoundedForkedSync(t *testing.T, protocol uint, mode SyncMode) { func TestBoundedHeavyForkedSync66Full(t *testing.T) { testBoundedHeavyForkedSync(t, eth.ETH66, FullSync) } -func TestBoundedHeavyForkedSync66Fast(t *testing.T) { - testBoundedHeavyForkedSync(t, eth.ETH66, FastSync) +func TestBoundedHeavyForkedSync66Snap(t *testing.T) { + testBoundedHeavyForkedSync(t, eth.ETH66, SnapSync) } func TestBoundedHeavyForkedSync66Light(t *testing.T) { testBoundedHeavyForkedSync(t, eth.ETH66, LightSync) } func testBoundedHeavyForkedSync(t *testing.T, protocol uint, mode SyncMode) { - t.Parallel() tester := newTester() + defer tester.terminate() // Create a long enough forked chain chainA := testChainForkLightA chainB := testChainForkHeavy - tester.newPeer("original", protocol, chainA) + tester.newPeer("original", protocol, chainA.blocks[1:]) // Synchronise with the peer and make sure all blocks were retrieved if err := tester.sync("original", nil, mode); err != nil { t.Fatalf("failed to synchronise blocks: %v", err) } - assertOwnChain(t, tester, chainA.len()) + assertOwnChain(t, tester, len(chainA.blocks)) - tester.newPeer("heavy-rewriter", protocol, chainB) + tester.newPeer("heavy-rewriter", protocol, chainB.blocks[1:]) // Synchronise with the second peer and ensure that the fork is rejected to being too old if err := tester.sync("heavy-rewriter", nil, mode); err != errInvalidAncestor { t.Fatalf("sync failure mismatch: have %v, want %v", err, errInvalidAncestor) } - tester.terminate() -} - -// Tests that an inactive downloader will not accept incoming block headers, -// bodies and receipts. -func TestInactiveDownloader63(t *testing.T) { - t.Parallel() - - tester := newTester() - defer tester.terminate() - - // Check that neither block headers nor bodies are accepted - if err := tester.downloader.DeliverHeaders("bad peer", []*types.Header{}); err != errNoSyncActive { - t.Errorf("error mismatch: have %v, want %v", err, errNoSyncActive) - } - if err := tester.downloader.DeliverBodies("bad peer", [][]*types.Transaction{}, [][]*types.Header{}); err != errNoSyncActive { - t.Errorf("error mismatch: have %v, want %v", err, errNoSyncActive) - } - if err := tester.downloader.DeliverReceipts("bad peer", [][]*types.Receipt{}); err != errNoSyncActive { - t.Errorf("error mismatch: have %v, want %v", err, errNoSyncActive) - } } // Tests that a canceled download wipes all previously accumulated state. func TestCancel66Full(t *testing.T) { testCancel(t, eth.ETH66, FullSync) } -func TestCancel66Fast(t *testing.T) { testCancel(t, eth.ETH66, FastSync) } +func TestCancel66Snap(t *testing.T) { testCancel(t, eth.ETH66, SnapSync) } func TestCancel66Light(t *testing.T) { testCancel(t, eth.ETH66, LightSync) } func testCancel(t *testing.T, protocol uint, mode SyncMode) { - t.Parallel() - tester := newTester() defer tester.terminate() chain := testChainBase.shorten(MaxHeaderFetch) - tester.newPeer("peer", protocol, chain) + tester.newPeer("peer", protocol, chain.blocks[1:]) // Make sure canceling works with a pristine downloader tester.downloader.Cancel() @@ -801,12 +675,10 @@ func testCancel(t *testing.T, protocol uint, mode SyncMode) { // Tests that synchronisation from multiple peers works as intended (multi thread sanity test). func TestMultiSynchronisation66Full(t *testing.T) { testMultiSynchronisation(t, eth.ETH66, FullSync) } -func TestMultiSynchronisation66Fast(t *testing.T) { testMultiSynchronisation(t, eth.ETH66, FastSync) } +func TestMultiSynchronisation66Snap(t *testing.T) { testMultiSynchronisation(t, eth.ETH66, SnapSync) } func TestMultiSynchronisation66Light(t *testing.T) { testMultiSynchronisation(t, eth.ETH66, LightSync) } func testMultiSynchronisation(t *testing.T, protocol uint, mode SyncMode) { - t.Parallel() - tester := newTester() defer tester.terminate() @@ -816,23 +688,21 @@ func testMultiSynchronisation(t *testing.T, protocol uint, mode SyncMode) { for i := 0; i < targetPeers; i++ { id := fmt.Sprintf("peer #%d", i) - tester.newPeer(id, protocol, chain.shorten(chain.len()/(i+1))) + tester.newPeer(id, protocol, chain.shorten(len(chain.blocks) / (i + 1)).blocks[1:]) } if err := tester.sync("peer #0", nil, mode); err != nil { t.Fatalf("failed to synchronise blocks: %v", err) } - assertOwnChain(t, tester, chain.len()) + assertOwnChain(t, tester, len(chain.blocks)) } // Tests that synchronisations behave well in multi-version protocol environments // and not wreak havoc on other nodes in the network. func TestMultiProtoSynchronisation66Full(t *testing.T) { testMultiProtoSync(t, eth.ETH66, FullSync) } -func TestMultiProtoSynchronisation66Fast(t *testing.T) { testMultiProtoSync(t, eth.ETH66, FastSync) } +func TestMultiProtoSynchronisation66Snap(t *testing.T) { testMultiProtoSync(t, eth.ETH66, SnapSync) } func TestMultiProtoSynchronisation66Light(t *testing.T) { testMultiProtoSync(t, eth.ETH66, LightSync) } func testMultiProtoSync(t *testing.T, protocol uint, mode SyncMode) { - t.Parallel() - tester := newTester() defer tester.terminate() @@ -840,14 +710,14 @@ func testMultiProtoSync(t *testing.T, protocol uint, mode SyncMode) { chain := testChainBase.shorten(blockCacheMaxItems - 15) // Create peers of every type - tester.newPeer("peer 66", eth.ETH66, chain) - //tester.newPeer("peer 65", eth.ETH67, chain) + tester.newPeer("peer 66", eth.ETH66, chain.blocks[1:]) + //tester.newPeer("peer 65", eth.ETH67, chain.blocks[1:) // Synchronise with the requested peer and make sure all blocks were retrieved if err := tester.sync(fmt.Sprintf("peer %d", protocol), nil, mode); err != nil { t.Fatalf("failed to synchronise blocks: %v", err) } - assertOwnChain(t, tester, chain.len()) + assertOwnChain(t, tester, len(chain.blocks)) // Check that no peers have been dropped off for _, version := range []int{66} { @@ -861,18 +731,16 @@ func testMultiProtoSync(t *testing.T, protocol uint, mode SyncMode) { // Tests that if a block is empty (e.g. header only), no body request should be // made, and instead the header should be assembled into a whole block in itself. func TestEmptyShortCircuit66Full(t *testing.T) { testEmptyShortCircuit(t, eth.ETH66, FullSync) } -func TestEmptyShortCircuit66Fast(t *testing.T) { testEmptyShortCircuit(t, eth.ETH66, FastSync) } +func TestEmptyShortCircuit66Snap(t *testing.T) { testEmptyShortCircuit(t, eth.ETH66, SnapSync) } func TestEmptyShortCircuit66Light(t *testing.T) { testEmptyShortCircuit(t, eth.ETH66, LightSync) } func testEmptyShortCircuit(t *testing.T, protocol uint, mode SyncMode) { - t.Parallel() - tester := newTester() defer tester.terminate() // Create a block chain to download chain := testChainBase - tester.newPeer("peer", protocol, chain) + tester.newPeer("peer", protocol, chain.blocks[1:]) // Instrument the downloader to signal body requests bodiesHave, receiptsHave := int32(0), int32(0) @@ -886,17 +754,17 @@ func testEmptyShortCircuit(t *testing.T, protocol uint, mode SyncMode) { if err := tester.sync("peer", nil, mode); err != nil { t.Fatalf("failed to synchronise blocks: %v", err) } - assertOwnChain(t, tester, chain.len()) + assertOwnChain(t, tester, len(chain.blocks)) // Validate the number of block bodies that should have been requested bodiesNeeded, receiptsNeeded := 0, 0 - for _, block := range chain.blockm { - if mode != LightSync && block != tester.genesis && (len(block.Transactions()) > 0 || len(block.Uncles()) > 0) { + for _, block := range chain.blocks[1:] { + if mode != LightSync && (len(block.Transactions()) > 0 || len(block.Uncles()) > 0) { bodiesNeeded++ } } - for _, receipt := range chain.receiptm { - if mode == FastSync && len(receipt) > 0 { + for _, block := range chain.blocks[1:] { + if mode == SnapSync && len(block.Transactions()) > 0 { receiptsNeeded++ } } @@ -911,72 +779,64 @@ func testEmptyShortCircuit(t *testing.T, protocol uint, mode SyncMode) { // Tests that headers are enqueued continuously, preventing malicious nodes from // stalling the downloader by feeding gapped header chains. func TestMissingHeaderAttack66Full(t *testing.T) { testMissingHeaderAttack(t, eth.ETH66, FullSync) } -func TestMissingHeaderAttack66Fast(t *testing.T) { testMissingHeaderAttack(t, eth.ETH66, FastSync) } +func TestMissingHeaderAttack66Snap(t *testing.T) { testMissingHeaderAttack(t, eth.ETH66, SnapSync) } func TestMissingHeaderAttack66Light(t *testing.T) { testMissingHeaderAttack(t, eth.ETH66, LightSync) } func testMissingHeaderAttack(t *testing.T, protocol uint, mode SyncMode) { - t.Parallel() - tester := newTester() defer tester.terminate() chain := testChainBase.shorten(blockCacheMaxItems - 15) - brokenChain := chain.shorten(chain.len()) - delete(brokenChain.headerm, brokenChain.chain[brokenChain.len()/2]) - tester.newPeer("attack", protocol, brokenChain) + + attacker := tester.newPeer("attack", protocol, chain.blocks[1:]) + attacker.withholdHeaders[chain.blocks[len(chain.blocks)/2-1].Hash()] = struct{}{} if err := tester.sync("attack", nil, mode); err == nil { t.Fatalf("succeeded attacker synchronisation") } // Synchronise with the valid peer and make sure sync succeeds - tester.newPeer("valid", protocol, chain) + tester.newPeer("valid", protocol, chain.blocks[1:]) if err := tester.sync("valid", nil, mode); err != nil { t.Fatalf("failed to synchronise blocks: %v", err) } - assertOwnChain(t, tester, chain.len()) + assertOwnChain(t, tester, len(chain.blocks)) } // Tests that if requested headers are shifted (i.e. first is missing), the queue // detects the invalid numbering. func TestShiftedHeaderAttack66Full(t *testing.T) { testShiftedHeaderAttack(t, eth.ETH66, FullSync) } -func TestShiftedHeaderAttack66Fast(t *testing.T) { testShiftedHeaderAttack(t, eth.ETH66, FastSync) } +func TestShiftedHeaderAttack66Snap(t *testing.T) { testShiftedHeaderAttack(t, eth.ETH66, SnapSync) } func TestShiftedHeaderAttack66Light(t *testing.T) { testShiftedHeaderAttack(t, eth.ETH66, LightSync) } func testShiftedHeaderAttack(t *testing.T, protocol uint, mode SyncMode) { - t.Parallel() - tester := newTester() defer tester.terminate() chain := testChainBase.shorten(blockCacheMaxItems - 15) // Attempt a full sync with an attacker feeding shifted headers - brokenChain := chain.shorten(chain.len()) - delete(brokenChain.headerm, brokenChain.chain[1]) - delete(brokenChain.blockm, brokenChain.chain[1]) - delete(brokenChain.receiptm, brokenChain.chain[1]) - tester.newPeer("attack", protocol, brokenChain) + attacker := tester.newPeer("attack", protocol, chain.blocks[1:]) + attacker.withholdHeaders[chain.blocks[1].Hash()] = struct{}{} + if err := tester.sync("attack", nil, mode); err == nil { t.Fatalf("succeeded attacker synchronisation") } - // Synchronise with the valid peer and make sure sync succeeds - tester.newPeer("valid", protocol, chain) + tester.newPeer("valid", protocol, chain.blocks[1:]) if err := tester.sync("valid", nil, mode); err != nil { t.Fatalf("failed to synchronise blocks: %v", err) } - assertOwnChain(t, tester, chain.len()) + assertOwnChain(t, tester, len(chain.blocks)) } // Tests that upon detecting an invalid header, the recent ones are rolled back // for various failure scenarios. Afterwards a full sync is attempted to make // sure no state was corrupted. -func TestInvalidHeaderRollback66Fast(t *testing.T) { testInvalidHeaderRollback(t, eth.ETH66, FastSync) } +func TestInvalidHeaderRollback66Snap(t *testing.T) { testInvalidHeaderRollback(t, eth.ETH66, SnapSync) } func testInvalidHeaderRollback(t *testing.T, protocol uint, mode SyncMode) { - t.Parallel() - tester := newTester() + defer tester.terminate() // Create a small enough block chain to download targetBlocks := 3*fsHeaderSafetyNet + 256 + fsMinFullBlocks @@ -985,78 +845,67 @@ func testInvalidHeaderRollback(t *testing.T, protocol uint, mode SyncMode) { // Attempt to sync with an attacker that feeds junk during the fast sync phase. // This should result in the last fsHeaderSafetyNet headers being rolled back. missing := fsHeaderSafetyNet + MaxHeaderFetch + 1 - fastAttackChain := chain.shorten(chain.len()) - delete(fastAttackChain.headerm, fastAttackChain.chain[missing]) - tester.newPeer("fast-attack", protocol, fastAttackChain) + + fastAttacker := tester.newPeer("fast-attack", protocol, chain.blocks[1:]) + fastAttacker.withholdHeaders[chain.blocks[missing].Hash()] = struct{}{} if err := tester.sync("fast-attack", nil, mode); err == nil { t.Fatalf("succeeded fast attacker synchronisation") } - if head := tester.CurrentHeader().Number.Int64(); int(head) > MaxHeaderFetch { + if head := tester.chain.CurrentHeader().Number.Int64(); int(head) > MaxHeaderFetch { t.Errorf("rollback head mismatch: have %v, want at most %v", head, MaxHeaderFetch) } - // Attempt to sync with an attacker that feeds junk during the block import phase. // This should result in both the last fsHeaderSafetyNet number of headers being // rolled back, and also the pivot point being reverted to a non-block status. missing = 3*fsHeaderSafetyNet + MaxHeaderFetch + 1 - blockAttackChain := chain.shorten(chain.len()) - delete(fastAttackChain.headerm, fastAttackChain.chain[missing]) // Make sure the fast-attacker doesn't fill in - delete(blockAttackChain.headerm, blockAttackChain.chain[missing]) - tester.newPeer("block-attack", protocol, blockAttackChain) + + blockAttacker := tester.newPeer("block-attack", protocol, chain.blocks[1:]) + fastAttacker.withholdHeaders[chain.blocks[missing].Hash()] = struct{}{} // Make sure the fast-attacker doesn't fill in + blockAttacker.withholdHeaders[chain.blocks[missing].Hash()] = struct{}{} if err := tester.sync("block-attack", nil, mode); err == nil { t.Fatalf("succeeded block attacker synchronisation") } - if head := tester.CurrentHeader().Number.Int64(); int(head) > 2*fsHeaderSafetyNet+MaxHeaderFetch { + if head := tester.chain.CurrentHeader().Number.Int64(); int(head) > 2*fsHeaderSafetyNet+MaxHeaderFetch { t.Errorf("rollback head mismatch: have %v, want at most %v", head, 2*fsHeaderSafetyNet+MaxHeaderFetch) } - if mode == FastSync { - if head := tester.CurrentBlock().NumberU64(); head != 0 { + if mode == SnapSync { + if head := tester.chain.CurrentBlock().NumberU64(); head != 0 { t.Errorf("fast sync pivot block #%d not rolled back", head) } } - // Attempt to sync with an attacker that withholds promised blocks after the // fast sync pivot point. This could be a trial to leave the node with a bad // but already imported pivot block. - withholdAttackChain := chain.shorten(chain.len()) - tester.newPeer("withhold-attack", protocol, withholdAttackChain) + withholdAttacker := tester.newPeer("withhold-attack", protocol, chain.blocks[1:]) + tester.downloader.syncInitHook = func(uint64, uint64) { - for i := missing; i < withholdAttackChain.len(); i++ { - delete(withholdAttackChain.headerm, withholdAttackChain.chain[i]) + for i := missing; i < len(chain.blocks); i++ { + withholdAttacker.withholdHeaders[chain.blocks[i].Hash()] = struct{}{} } tester.downloader.syncInitHook = nil } if err := tester.sync("withhold-attack", nil, mode); err == nil { t.Fatalf("succeeded withholding attacker synchronisation") } - if head := tester.CurrentHeader().Number.Int64(); int(head) > 2*fsHeaderSafetyNet+MaxHeaderFetch { + if head := tester.chain.CurrentHeader().Number.Int64(); int(head) > 2*fsHeaderSafetyNet+MaxHeaderFetch { t.Errorf("rollback head mismatch: have %v, want at most %v", head, 2*fsHeaderSafetyNet+MaxHeaderFetch) } - if mode == FastSync { - if head := tester.CurrentBlock().NumberU64(); head != 0 { + if mode == SnapSync { + if head := tester.chain.CurrentBlock().NumberU64(); head != 0 { t.Errorf("fast sync pivot block #%d not rolled back", head) } } - - // synchronise with the valid peer and make sure sync succeeds. Since the last rollback + // Synchronise with the valid peer and make sure sync succeeds. Since the last rollback // should also disable fast syncing for this process, verify that we did a fresh full // sync. Note, we can't assert anything about the receipts since we won't purge the // database of them, hence we can't use assertOwnChain. - tester.newPeer("valid", protocol, chain) + tester.newPeer("valid", protocol, chain.blocks[1:]) if err := tester.sync("valid", nil, mode); err != nil { t.Fatalf("failed to synchronise blocks: %v", err) } - if hs := len(tester.ownHeaders); hs != chain.len() { - t.Fatalf("synchronised headers mismatch: have %v, want %v", hs, chain.len()) - } - if mode != LightSync { - if bs := len(tester.ownBlocks); bs != chain.len() { - t.Fatalf("synchronised blocks mismatch: have %v, want %v", bs, chain.len()) - } - } - tester.terminate() + assertOwnChain(t, tester, len(chain.blocks)) } // Tests that a peer advertising a high TD doesn't get to stall the downloader @@ -1064,32 +913,28 @@ func testInvalidHeaderRollback(t *testing.T, protocol uint, mode SyncMode) { func TestHighTDStarvationAttack66Full(t *testing.T) { testHighTDStarvationAttack(t, eth.ETH66, FullSync) } -func TestHighTDStarvationAttack66Fast(t *testing.T) { - testHighTDStarvationAttack(t, eth.ETH66, FastSync) +func TestHighTDStarvationAttack66Snap(t *testing.T) { + testHighTDStarvationAttack(t, eth.ETH66, SnapSync) } func TestHighTDStarvationAttack66Light(t *testing.T) { testHighTDStarvationAttack(t, eth.ETH66, LightSync) } func testHighTDStarvationAttack(t *testing.T, protocol uint, mode SyncMode) { - t.Parallel() - tester := newTester() + defer tester.terminate() chain := testChainBase.shorten(1) - tester.newPeer("attack", protocol, chain) + tester.newPeer("attack", protocol, chain.blocks[1:]) if err := tester.sync("attack", big.NewInt(1000000), mode); err != errStallingPeer { t.Fatalf("synchronisation error mismatch: have %v, want %v", err, errStallingPeer) } - tester.terminate() } // Tests that misbehaving peers are disconnected, whilst behaving ones are not. func TestBlockHeaderAttackerDropping66(t *testing.T) { testBlockHeaderAttackerDropping(t, eth.ETH66) } func testBlockHeaderAttackerDropping(t *testing.T, protocol uint) { - t.Parallel() - // Define the disconnection requirement for individual hash fetch errors tests := []struct { result error @@ -1119,16 +964,14 @@ func testBlockHeaderAttackerDropping(t *testing.T, protocol uint) { for i, tt := range tests { // Register a new peer and ensure its presence id := fmt.Sprintf("test %d", i) - if err := tester.newPeer(id, protocol, chain); err != nil { - t.Fatalf("test %d: failed to register new peer: %v", i, err) - } + tester.newPeer(id, protocol, chain.blocks[1:]) if _, ok := tester.peers[id]; !ok { t.Fatalf("test %d: registered peer not found", i) } // Simulate a synchronisation and check the required result tester.downloader.synchroniseMock = func(string, common.Hash) error { return tt.result } - tester.downloader.Synchronise(id, tester.genesis.Hash(), big.NewInt(1000), FullSync) + tester.downloader.Synchronise(id, tester.chain.Genesis().Hash(), big.NewInt(1000), FullSync) if _, ok := tester.peers[id]; !ok != tt.drop { t.Errorf("test %d: peer drop mismatch for %v: have %v, want %v", i, tt.result, !ok, tt.drop) } @@ -1138,14 +981,13 @@ func testBlockHeaderAttackerDropping(t *testing.T, protocol uint) { // Tests that synchronisation progress (origin block number, current block number // and highest block number) is tracked and updated correctly. func TestSyncProgress66Full(t *testing.T) { testSyncProgress(t, eth.ETH66, FullSync) } -func TestSyncProgress66Fast(t *testing.T) { testSyncProgress(t, eth.ETH66, FastSync) } +func TestSyncProgress66Snap(t *testing.T) { testSyncProgress(t, eth.ETH66, SnapSync) } func TestSyncProgress66Light(t *testing.T) { testSyncProgress(t, eth.ETH66, LightSync) } func testSyncProgress(t *testing.T, protocol uint, mode SyncMode) { - t.Parallel() - tester := newTester() defer tester.terminate() + chain := testChainBase.shorten(blockCacheMaxItems - 15) // Set a sync init hook to catch progress changes @@ -1159,7 +1001,7 @@ func testSyncProgress(t *testing.T, protocol uint, mode SyncMode) { checkProgress(t, tester.downloader, "pristine", ethereum.SyncProgress{}) // Synchronise half the blocks and check initial progress - tester.newPeer("peer-half", protocol, chain.shorten(chain.len()/2)) + tester.newPeer("peer-half", protocol, chain.shorten(len(chain.blocks) / 2).blocks[1:]) pending := new(sync.WaitGroup) pending.Add(1) @@ -1171,13 +1013,13 @@ func testSyncProgress(t *testing.T, protocol uint, mode SyncMode) { }() <-starting checkProgress(t, tester.downloader, "initial", ethereum.SyncProgress{ - HighestBlock: uint64(chain.len()/2 - 1), + HighestBlock: uint64(len(chain.blocks)/2 - 1), }) progress <- struct{}{} pending.Wait() // Synchronise all the blocks and check continuation progress - tester.newPeer("peer-full", protocol, chain) + tester.newPeer("peer-full", protocol, chain.blocks[1:]) pending.Add(1) go func() { defer pending.Done() @@ -1187,18 +1029,18 @@ func testSyncProgress(t *testing.T, protocol uint, mode SyncMode) { }() <-starting checkProgress(t, tester.downloader, "completing", ethereum.SyncProgress{ - StartingBlock: uint64(chain.len()/2 - 1), - CurrentBlock: uint64(chain.len()/2 - 1), - HighestBlock: uint64(chain.len() - 1), + StartingBlock: uint64(len(chain.blocks)/2 - 1), + CurrentBlock: uint64(len(chain.blocks)/2 - 1), + HighestBlock: uint64(len(chain.blocks) - 1), }) // Check final progress after successful sync progress <- struct{}{} pending.Wait() checkProgress(t, tester.downloader, "final", ethereum.SyncProgress{ - StartingBlock: uint64(chain.len()/2 - 1), - CurrentBlock: uint64(chain.len() - 1), - HighestBlock: uint64(chain.len() - 1), + StartingBlock: uint64(len(chain.blocks)/2 - 1), + CurrentBlock: uint64(len(chain.blocks) - 1), + HighestBlock: uint64(len(chain.blocks) - 1), }) } @@ -1207,9 +1049,7 @@ func checkProgress(t *testing.T, d *Downloader, stage string, want ethereum.Sync t.Helper() p := d.Progress() - p.KnownStates, p.PulledStates = 0, 0 - want.KnownStates, want.PulledStates = 0, 0 - if p != want { + if p.StartingBlock != want.StartingBlock || p.CurrentBlock != want.CurrentBlock || p.HighestBlock != want.HighestBlock { t.Fatalf("%s progress mismatch:\nhave %+v\nwant %+v", stage, p, want) } } @@ -1218,16 +1058,15 @@ func checkProgress(t *testing.T, d *Downloader, stage string, want ethereum.Sync // number) is tracked and updated correctly in case of a fork (or manual head // revertal). func TestForkedSyncProgress66Full(t *testing.T) { testForkedSyncProgress(t, eth.ETH66, FullSync) } -func TestForkedSyncProgress66Fast(t *testing.T) { testForkedSyncProgress(t, eth.ETH66, FastSync) } +func TestForkedSyncProgress66Snap(t *testing.T) { testForkedSyncProgress(t, eth.ETH66, SnapSync) } func TestForkedSyncProgress66Light(t *testing.T) { testForkedSyncProgress(t, eth.ETH66, LightSync) } func testForkedSyncProgress(t *testing.T, protocol uint, mode SyncMode) { - t.Parallel() - tester := newTester() defer tester.terminate() - chainA := testChainForkLightA.shorten(testChainBase.len() + MaxHeaderFetch) - chainB := testChainForkLightB.shorten(testChainBase.len() + MaxHeaderFetch) + + chainA := testChainForkLightA.shorten(len(testChainBase.blocks) + MaxHeaderFetch) + chainB := testChainForkLightB.shorten(len(testChainBase.blocks) + MaxHeaderFetch) // Set a sync init hook to catch progress changes starting := make(chan struct{}) @@ -1240,7 +1079,7 @@ func testForkedSyncProgress(t *testing.T, protocol uint, mode SyncMode) { checkProgress(t, tester.downloader, "pristine", ethereum.SyncProgress{}) // Synchronise with one of the forks and check progress - tester.newPeer("fork A", protocol, chainA) + tester.newPeer("fork A", protocol, chainA.blocks[1:]) pending := new(sync.WaitGroup) pending.Add(1) go func() { @@ -1252,7 +1091,7 @@ func testForkedSyncProgress(t *testing.T, protocol uint, mode SyncMode) { <-starting checkProgress(t, tester.downloader, "initial", ethereum.SyncProgress{ - HighestBlock: uint64(chainA.len() - 1), + HighestBlock: uint64(len(chainA.blocks) - 1), }) progress <- struct{}{} pending.Wait() @@ -1261,7 +1100,7 @@ func testForkedSyncProgress(t *testing.T, protocol uint, mode SyncMode) { tester.downloader.syncStatsChainOrigin = tester.downloader.syncStatsChainHeight // Synchronise with the second fork and check progress resets - tester.newPeer("fork B", protocol, chainB) + tester.newPeer("fork B", protocol, chainB.blocks[1:]) pending.Add(1) go func() { defer pending.Done() @@ -1271,18 +1110,18 @@ func testForkedSyncProgress(t *testing.T, protocol uint, mode SyncMode) { }() <-starting checkProgress(t, tester.downloader, "forking", ethereum.SyncProgress{ - StartingBlock: uint64(testChainBase.len()) - 1, - CurrentBlock: uint64(chainA.len() - 1), - HighestBlock: uint64(chainB.len() - 1), + StartingBlock: uint64(len(testChainBase.blocks)) - 1, + CurrentBlock: uint64(len(chainA.blocks) - 1), + HighestBlock: uint64(len(chainB.blocks) - 1), }) // Check final progress after successful sync progress <- struct{}{} pending.Wait() checkProgress(t, tester.downloader, "final", ethereum.SyncProgress{ - StartingBlock: uint64(testChainBase.len()) - 1, - CurrentBlock: uint64(chainB.len() - 1), - HighestBlock: uint64(chainB.len() - 1), + StartingBlock: uint64(len(testChainBase.blocks)) - 1, + CurrentBlock: uint64(len(chainB.blocks) - 1), + HighestBlock: uint64(len(chainB.blocks) - 1), }) } @@ -1290,14 +1129,13 @@ func testForkedSyncProgress(t *testing.T, protocol uint, mode SyncMode) { // origin is not updated in the next sync cycle, as it should be considered the // continuation of the previous sync and not a new instance. func TestFailedSyncProgress66Full(t *testing.T) { testFailedSyncProgress(t, eth.ETH66, FullSync) } -func TestFailedSyncProgress66Fast(t *testing.T) { testFailedSyncProgress(t, eth.ETH66, FastSync) } +func TestFailedSyncProgress66Snap(t *testing.T) { testFailedSyncProgress(t, eth.ETH66, SnapSync) } func TestFailedSyncProgress66Light(t *testing.T) { testFailedSyncProgress(t, eth.ETH66, LightSync) } func testFailedSyncProgress(t *testing.T, protocol uint, mode SyncMode) { - t.Parallel() - tester := newTester() defer tester.terminate() + chain := testChainBase.shorten(blockCacheMaxItems - 15) // Set a sync init hook to catch progress changes @@ -1311,12 +1149,10 @@ func testFailedSyncProgress(t *testing.T, protocol uint, mode SyncMode) { checkProgress(t, tester.downloader, "pristine", ethereum.SyncProgress{}) // Attempt a full sync with a faulty peer - brokenChain := chain.shorten(chain.len()) - missing := brokenChain.len() / 2 - delete(brokenChain.headerm, brokenChain.chain[missing]) - delete(brokenChain.blockm, brokenChain.chain[missing]) - delete(brokenChain.receiptm, brokenChain.chain[missing]) - tester.newPeer("faulty", protocol, brokenChain) + missing := len(chain.blocks)/2 - 1 + + faulter := tester.newPeer("faulty", protocol, chain.blocks[1:]) + faulter.withholdHeaders[chain.blocks[missing].Hash()] = struct{}{} pending := new(sync.WaitGroup) pending.Add(1) @@ -1328,7 +1164,7 @@ func testFailedSyncProgress(t *testing.T, protocol uint, mode SyncMode) { }() <-starting checkProgress(t, tester.downloader, "initial", ethereum.SyncProgress{ - HighestBlock: uint64(brokenChain.len() - 1), + HighestBlock: uint64(len(chain.blocks) - 1), }) progress <- struct{}{} pending.Wait() @@ -1336,7 +1172,7 @@ func testFailedSyncProgress(t *testing.T, protocol uint, mode SyncMode) { // Synchronise with a good peer and check that the progress origin remind the same // after a failure - tester.newPeer("valid", protocol, chain) + tester.newPeer("valid", protocol, chain.blocks[1:]) pending.Add(1) go func() { defer pending.Done() @@ -1351,22 +1187,21 @@ func testFailedSyncProgress(t *testing.T, protocol uint, mode SyncMode) { progress <- struct{}{} pending.Wait() checkProgress(t, tester.downloader, "final", ethereum.SyncProgress{ - CurrentBlock: uint64(chain.len() - 1), - HighestBlock: uint64(chain.len() - 1), + CurrentBlock: uint64(len(chain.blocks) - 1), + HighestBlock: uint64(len(chain.blocks) - 1), }) } // Tests that if an attacker fakes a chain height, after the attack is detected, // the progress height is successfully reduced at the next sync invocation. func TestFakedSyncProgress66Full(t *testing.T) { testFakedSyncProgress(t, eth.ETH66, FullSync) } -func TestFakedSyncProgress66Fast(t *testing.T) { testFakedSyncProgress(t, eth.ETH66, FastSync) } +func TestFakedSyncProgress66Snap(t *testing.T) { testFakedSyncProgress(t, eth.ETH66, SnapSync) } func TestFakedSyncProgress66Light(t *testing.T) { testFakedSyncProgress(t, eth.ETH66, LightSync) } func testFakedSyncProgress(t *testing.T, protocol uint, mode SyncMode) { - t.Parallel() - tester := newTester() defer tester.terminate() + chain := testChainBase.shorten(blockCacheMaxItems - 15) // Set a sync init hook to catch progress changes @@ -1379,13 +1214,11 @@ func testFakedSyncProgress(t *testing.T, protocol uint, mode SyncMode) { checkProgress(t, tester.downloader, "pristine", ethereum.SyncProgress{}) // Create and sync with an attacker that promises a higher chain than available. - brokenChain := chain.shorten(chain.len()) + attacker := tester.newPeer("attack", protocol, chain.blocks[1:]) numMissing := 5 - for i := brokenChain.len() - 2; i > brokenChain.len()-numMissing; i-- { - delete(brokenChain.headerm, brokenChain.chain[i]) + for i := len(chain.blocks) - 2; i > len(chain.blocks)-numMissing; i-- { + attacker.withholdHeaders[chain.blocks[i].Hash()] = struct{}{} } - tester.newPeer("attack", protocol, brokenChain) - pending := new(sync.WaitGroup) pending.Add(1) go func() { @@ -1396,7 +1229,7 @@ func testFakedSyncProgress(t *testing.T, protocol uint, mode SyncMode) { }() <-starting checkProgress(t, tester.downloader, "initial", ethereum.SyncProgress{ - HighestBlock: uint64(brokenChain.len() - 1), + HighestBlock: uint64(len(chain.blocks) - 1), }) progress <- struct{}{} pending.Wait() @@ -1404,8 +1237,8 @@ func testFakedSyncProgress(t *testing.T, protocol uint, mode SyncMode) { // Synchronise with a good peer and check that the progress height has been reduced to // the true value. - validChain := chain.shorten(chain.len() - numMissing) - tester.newPeer("valid", protocol, validChain) + validChain := chain.shorten(len(chain.blocks) - numMissing) + tester.newPeer("valid", protocol, validChain.blocks[1:]) pending.Add(1) go func() { @@ -1417,100 +1250,17 @@ func testFakedSyncProgress(t *testing.T, protocol uint, mode SyncMode) { <-starting checkProgress(t, tester.downloader, "completing", ethereum.SyncProgress{ CurrentBlock: afterFailedSync.CurrentBlock, - HighestBlock: uint64(validChain.len() - 1), + HighestBlock: uint64(len(validChain.blocks) - 1), }) - // Check final progress after successful sync. progress <- struct{}{} pending.Wait() checkProgress(t, tester.downloader, "final", ethereum.SyncProgress{ - CurrentBlock: uint64(validChain.len() - 1), - HighestBlock: uint64(validChain.len() - 1), + CurrentBlock: uint64(len(validChain.blocks) - 1), + HighestBlock: uint64(len(validChain.blocks) - 1), }) } -// This test reproduces an issue where unexpected deliveries would -// block indefinitely if they arrived at the right time. -func TestDeliverHeadersHang66Full(t *testing.T) { testDeliverHeadersHang(t, eth.ETH66, FullSync) } -func TestDeliverHeadersHang66Fast(t *testing.T) { testDeliverHeadersHang(t, eth.ETH66, FastSync) } -func TestDeliverHeadersHang66Light(t *testing.T) { testDeliverHeadersHang(t, eth.ETH66, LightSync) } - -func testDeliverHeadersHang(t *testing.T, protocol uint, mode SyncMode) { - t.Parallel() - - master := newTester() - defer master.terminate() - chain := testChainBase.shorten(15) - - for i := 0; i < 200; i++ { - tester := newTester() - tester.peerDb = master.peerDb - tester.newPeer("peer", protocol, chain) - - // Whenever the downloader requests headers, flood it with - // a lot of unrequested header deliveries. - tester.downloader.peers.peers["peer"].peer = &floodingTestPeer{ - peer: tester.downloader.peers.peers["peer"].peer, - tester: tester, - } - if err := tester.sync("peer", nil, mode); err != nil { - t.Errorf("test %d: sync failed: %v", i, err) - } - tester.terminate() - } -} - -type floodingTestPeer struct { - peer Peer - tester *downloadTester -} - -func (ftp *floodingTestPeer) Head() (common.Hash, *big.Int) { return ftp.peer.Head() } -func (ftp *floodingTestPeer) RequestHeadersByHash(hash common.Hash, count int, skip int, reverse bool) error { - return ftp.peer.RequestHeadersByHash(hash, count, skip, reverse) -} -func (ftp *floodingTestPeer) RequestBodies(hashes []common.Hash) error { - return ftp.peer.RequestBodies(hashes) -} -func (ftp *floodingTestPeer) RequestReceipts(hashes []common.Hash) error { - return ftp.peer.RequestReceipts(hashes) -} -func (ftp *floodingTestPeer) RequestNodeData(hashes []common.Hash) error { - return ftp.peer.RequestNodeData(hashes) -} - -func (ftp *floodingTestPeer) RequestHeadersByNumber(from uint64, count, skip int, reverse bool) error { - deliveriesDone := make(chan struct{}, 500) - for i := 0; i < cap(deliveriesDone)-1; i++ { - peer := fmt.Sprintf("fake-peer%d", i) - go func() { - ftp.tester.downloader.DeliverHeaders(peer, []*types.Header{{}, {}, {}, {}}) - deliveriesDone <- struct{}{} - }() - } - - // None of the extra deliveries should block. - timeout := time.After(60 * time.Second) - launched := false - for i := 0; i < cap(deliveriesDone); i++ { - select { - case <-deliveriesDone: - if !launched { - // Start delivering the requested headers - // after one of the flooding responses has arrived. - go func() { - ftp.peer.RequestHeadersByNumber(from, count, skip, reverse) - deliveriesDone <- struct{}{} - }() - launched = true - } - case <-timeout: - panic("blocked") - } - } - return nil -} - func TestRemoteHeaderRequestSpan(t *testing.T) { testCases := []struct { remoteHeight uint64 @@ -1589,14 +1339,12 @@ func TestRemoteHeaderRequestSpan(t *testing.T) { // Tests that peers below a pre-configured checkpoint block are prevented from // being fast-synced from, avoiding potential cheap eclipse attacks. func TestCheckpointEnforcement66Full(t *testing.T) { testCheckpointEnforcement(t, eth.ETH66, FullSync) } -func TestCheckpointEnforcement66Fast(t *testing.T) { testCheckpointEnforcement(t, eth.ETH66, FastSync) } +func TestCheckpointEnforcement66Snap(t *testing.T) { testCheckpointEnforcement(t, eth.ETH66, SnapSync) } func TestCheckpointEnforcement66Light(t *testing.T) { testCheckpointEnforcement(t, eth.ETH66, LightSync) } func testCheckpointEnforcement(t *testing.T, protocol uint, mode SyncMode) { - t.Parallel() - // Create a new tester with a particular hard coded checkpoint block tester := newTester() defer tester.terminate() @@ -1605,18 +1353,18 @@ func testCheckpointEnforcement(t *testing.T, protocol uint, mode SyncMode) { chain := testChainBase.shorten(int(tester.downloader.checkpoint) - 1) // Attempt to sync with the peer and validate the result - tester.newPeer("peer", protocol, chain) + tester.newPeer("peer", protocol, chain.blocks[1:]) var expect error - if mode == FastSync || mode == LightSync { + if mode == SnapSync || mode == LightSync { expect = errUnsyncedPeer } if err := tester.sync("peer", nil, mode); !errors.Is(err, expect) { t.Fatalf("block sync error mismatch: have %v, want %v", err, expect) } - if mode == FastSync || mode == LightSync { + if mode == SnapSync || mode == LightSync { assertOwnChain(t, tester, 1) } else { - assertOwnChain(t, tester, chain.len()) + assertOwnChain(t, tester, len(chain.blocks)) } } diff --git a/eth/downloader/fetchers.go b/eth/downloader/fetchers.go new file mode 100644 index 0000000000..021e8c4f9b --- /dev/null +++ b/eth/downloader/fetchers.go @@ -0,0 +1,115 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package downloader + +import ( + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/eth/protocols/eth" +) + +// fetchHeadersByHash is a blocking version of Peer.RequestHeadersByHash which +// handles all the cancellation, interruption and timeout mechanisms of a data +// retrieval to allow blocking API calls. +func (d *Downloader) fetchHeadersByHash(p *peerConnection, hash common.Hash, amount int, skip int, reverse bool) ([]*types.Header, []common.Hash, error) { + // Create the response sink and send the network request + start := time.Now() + resCh := make(chan *eth.Response) + + req, err := p.peer.RequestHeadersByHash(hash, amount, skip, reverse, resCh) + if err != nil { + return nil, nil, err + } + defer req.Close() + + // Wait until the response arrives, the request is cancelled or times out + ttl := d.peers.rates.TargetTimeout() + + timeoutTimer := time.NewTimer(ttl) + defer timeoutTimer.Stop() + + select { + case <-d.cancelCh: + return nil, nil, errCanceled + + case <-timeoutTimer.C: + // Header retrieval timed out, update the metrics + p.log.Debug("Header request timed out", "elapsed", ttl) + headerTimeoutMeter.Mark(1) + + return nil, nil, errTimeout + + case res := <-resCh: + // Headers successfully retrieved, update the metrics + headerReqTimer.Update(time.Since(start)) + headerInMeter.Mark(int64(len(*res.Res.(*eth.BlockHeadersPacket)))) + + // Don't reject the packet even if it turns out to be bad, downloader will + // disconnect the peer on its own terms. Simply delivery the headers to + // be processed by the caller + res.Done <- nil + + return *res.Res.(*eth.BlockHeadersPacket), res.Meta.([]common.Hash), nil + } +} + +// fetchHeadersByNumber is a blocking version of Peer.RequestHeadersByNumber which +// handles all the cancellation, interruption and timeout mechanisms of a data +// retrieval to allow blocking API calls. +func (d *Downloader) fetchHeadersByNumber(p *peerConnection, number uint64, amount int, skip int, reverse bool) ([]*types.Header, []common.Hash, error) { + // Create the response sink and send the network request + start := time.Now() + resCh := make(chan *eth.Response) + + req, err := p.peer.RequestHeadersByNumber(number, amount, skip, reverse, resCh) + if err != nil { + return nil, nil, err + } + defer req.Close() + + // Wait until the response arrives, the request is cancelled or times out + ttl := d.peers.rates.TargetTimeout() + + timeoutTimer := time.NewTimer(ttl) + defer timeoutTimer.Stop() + + select { + case <-d.cancelCh: + return nil, nil, errCanceled + + case <-timeoutTimer.C: + // Header retrieval timed out, update the metrics + p.log.Debug("Header request timed out", "elapsed", ttl) + headerTimeoutMeter.Mark(1) + + return nil, nil, errTimeout + + case res := <-resCh: + // Headers successfully retrieved, update the metrics + headerReqTimer.Update(time.Since(start)) + headerInMeter.Mark(int64(len(*res.Res.(*eth.BlockHeadersPacket)))) + + // Don't reject the packet even if it turns out to be bad, downloader will + // disconnect the peer on its own terms. Simply delivery the headers to + // be processed by the caller + res.Done <- nil + + return *res.Res.(*eth.BlockHeadersPacket), res.Meta.([]common.Hash), nil + } +} diff --git a/eth/downloader/fetchers_concurrent.go b/eth/downloader/fetchers_concurrent.go new file mode 100644 index 0000000000..4bade2b4c3 --- /dev/null +++ b/eth/downloader/fetchers_concurrent.go @@ -0,0 +1,381 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package downloader + +import ( + "errors" + "sort" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/prque" + "github.com/ethereum/go-ethereum/eth/protocols/eth" + "github.com/ethereum/go-ethereum/log" +) + +// timeoutGracePeriod is the amount of time to allow for a peer to deliver a +// response to a locally already timed out request. Timeouts are not penalized +// as a peer might be temporarily overloaded, however, they still must reply +// to each request. Failing to do so is considered a protocol violation. +var timeoutGracePeriod = 2 * time.Minute + +// typedQueue is an interface defining the adaptor needed to translate the type +// specific downloader/queue schedulers into the type-agnostic general concurrent +// fetcher algorithm calls. +type typedQueue interface { + // waker returns a notification channel that gets pinged in case more fetches + // have been queued up, so the fetcher might assign it to idle peers. + waker() chan bool + + // pending returns the number of wrapped items that are currently queued for + // fetching by the concurrent downloader. + pending() int + + // capacity is responsible for calculating how many items of the abstracted + // type a particular peer is estimated to be able to retrieve within the + // alloted round trip time. + capacity(peer *peerConnection, rtt time.Duration) int + + // updateCapacity is responsible for updating how many items of the abstracted + // type a particular peer is estimated to be able to retrieve in a unit time. + updateCapacity(peer *peerConnection, items int, elapsed time.Duration) + + // reserve is responsible for allocating a requested number of pending items + // from the download queue to the specified peer. + reserve(peer *peerConnection, items int) (*fetchRequest, bool, bool) + + // unreserve is resposible for removing the current retrieval allocation + // assigned to a specific peer and placing it back into the pool to allow + // reassigning to some other peer. + unreserve(peer string) int + + // request is responsible for converting a generic fetch request into a typed + // one and sending it to the remote peer for fulfillment. + request(peer *peerConnection, req *fetchRequest, resCh chan *eth.Response) (*eth.Request, error) + + // deliver is responsible for taking a generic response packet from the + // concurrent fetcher, unpacking the type specific data and delivering + // it to the downloader's queue. + deliver(peer *peerConnection, packet *eth.Response) (int, error) +} + +// concurrentFetch iteratively downloads scheduled block parts, taking available +// peers, reserving a chunk of fetch requests for each and waiting for delivery +// or timeouts. +func (d *Downloader) concurrentFetch(queue typedQueue) error { + // Create a delivery channel to accept responses from all peers + responses := make(chan *eth.Response) + + // Track the currently active requests and their timeout order + pending := make(map[string]*eth.Request) + defer func() { + // Abort all requests on sync cycle cancellation. The requests may still + // be fulfilled by the remote side, but the dispatcher will not wait to + // deliver them since nobody's going to be listening. + for _, req := range pending { + req.Close() + } + }() + ordering := make(map[*eth.Request]int) + timeouts := prque.New(func(data interface{}, index int) { + ordering[data.(*eth.Request)] = index + }) + + timeout := time.NewTimer(0) + if !timeout.Stop() { + <-timeout.C + } + defer timeout.Stop() + + // Track the timed-out but not-yet-answered requests separately. We want to + // keep tracking which peers are busy (potentially overloaded), so removing + // all trace of a timed out request is not good. We also can't just cancel + // the pending request altogether as that would prevent a late response from + // being delivered, thus never unblocking the peer. + stales := make(map[string]*eth.Request) + defer func() { + // Abort all requests on sync cycle cancellation. The requests may still + // be fulfilled by the remote side, but the dispatcher will not wait to + // deliver them since nobody's going to be listening. + for _, req := range stales { + req.Close() + } + }() + // Subscribe to peer lifecycle events to schedule tasks to new joiners and + // reschedule tasks upon disconnections. We don't care which event happened + // for simplicity, so just use a single channel. + peering := make(chan *peeringEvent, 64) // arbitrary buffer, just some burst protection + + peeringSub := d.peers.SubscribeEvents(peering) + defer peeringSub.Unsubscribe() + + // Prepare the queue and fetch block parts until the block header fetcher's done + finished := false + for { + // Short circuit if we lost all our peers + if d.peers.Len() == 0 { + return errNoPeers + } + // If there's nothing more to fetch, wait or terminate + if queue.pending() == 0 { + if len(pending) == 0 && finished { + return nil + } + } else { + // Send a download request to all idle peers, until throttled + var ( + idles []*peerConnection + caps []int + ) + for _, peer := range d.peers.AllPeers() { + pending, stale := pending[peer.id], stales[peer.id] + if pending == nil && stale == nil { + idles = append(idles, peer) + caps = append(caps, queue.capacity(peer, time.Second)) + } else if stale != nil { + if waited := time.Since(stale.Sent); waited > timeoutGracePeriod { + // Request has been in flight longer than the grace period + // permitted it, consider the peer malicious attempting to + // stall the sync. + peer.log.Warn("Peer stalling, dropping", "waited", common.PrettyDuration(waited)) + d.dropPeer(peer.id) + } + } + } + sort.Sort(&peerCapacitySort{idles, caps}) + + var ( + progressed bool + throttled bool + queued = queue.pending() + ) + for _, peer := range idles { + // Short circuit if throttling activated or there are no more + // queued tasks to be retrieved + if throttled { + break + } + if queued = queue.pending(); queued == 0 { + break + } + // Reserve a chunk of fetches for a peer. A nil can mean either that + // no more headers are available, or that the peer is known not to + // have them. + request, progress, throttle := queue.reserve(peer, queue.capacity(peer, d.peers.rates.TargetRoundTrip())) + if progress { + progressed = true + } + if throttle { + throttled = true + throttleCounter.Inc(1) + } + if request == nil { + continue + } + // Fetch the chunk and make sure any errors return the hashes to the queue + req, err := queue.request(peer, request, responses) + if err != nil { + // Sending the request failed, which generally means the peer + // was diconnected in between assignment and network send. + // Although all peer removal operations return allocated tasks + // to the queue, that is async, and we can do better here by + // immediately pushing the unfulfilled requests. + queue.unreserve(peer.id) // TODO(karalabe): This needs a non-expiration method + continue + } + pending[peer.id] = req + + ttl := d.peers.rates.TargetTimeout() + ordering[req] = timeouts.Size() + + timeouts.Push(req, -time.Now().Add(ttl).UnixNano()) + if timeouts.Size() == 1 { + timeout.Reset(ttl) + } + } + // Make sure that we have peers available for fetching. If all peers have been tried + // and all failed throw an error + if !progressed && !throttled && len(pending) == 0 && len(idles) == d.peers.Len() && queued > 0 { + return errPeersUnavailable + } + } + // Wait for something to happen + select { + case <-d.cancelCh: + // If sync was cancelled, tear down the parallel retriever. Pending + // requests will be cancelled locally, and the remote responses will + // be dropped when they arrive + return errCanceled + + case event := <-peering: + // A peer joined or left, the tasks queue and allocations need to be + // checked for potential assignment or reassignment + peerid := event.peer.id + + if event.join { + // Sanity check the internal state; this can be dropped later + if _, ok := pending[peerid]; ok { + event.peer.log.Error("Pending request exists for joining peer") + } + if _, ok := stales[peerid]; ok { + event.peer.log.Error("Stale request exists for joining peer") + } + // Loop back to the entry point for task assignment + continue + } + // A peer left, any existing requests need to be untracked, pending + // tasks returned and possible reassignment checked + if req, ok := pending[peerid]; ok { + queue.unreserve(peerid) // TODO(karalabe): This needs a non-expiration method + delete(pending, peerid) + req.Close() + + if index, live := ordering[req]; live { + timeouts.Remove(index) + if index == 0 { + if !timeout.Stop() { + <-timeout.C + } + if timeouts.Size() > 0 { + _, exp := timeouts.Peek() + timeout.Reset(time.Until(time.Unix(0, -exp))) + } + } + delete(ordering, req) + } + } + if req, ok := stales[peerid]; ok { + delete(stales, peerid) + req.Close() + } + + case <-timeout.C: + // Retrieve the next request which should have timed out. The check + // below is purely for to catch programming errors, given the correct + // code, there's no possible order of events that should result in a + // timeout firing for a non-existent event. + item, exp := timeouts.Peek() + if now, at := time.Now(), time.Unix(0, -exp); now.Before(at) { + log.Error("Timeout triggered but not reached", "left", at.Sub(now)) + timeout.Reset(at.Sub(now)) + continue + } + req := item.(*eth.Request) + + // Stop tracking the timed out request from a timing perspective, + // cancel it, so it's not considered in-flight anymore, but keep + // the peer marked busy to prevent assigning a second request and + // overloading it further. + delete(pending, req.Peer) + stales[req.Peer] = req + delete(ordering, req) + + timeouts.Pop() + if timeouts.Size() > 0 { + _, exp := timeouts.Peek() + timeout.Reset(time.Until(time.Unix(0, -exp))) + } + // New timeout potentially set if there are more requests pending, + // reschedule the failed one to a free peer + fails := queue.unreserve(req.Peer) + + // Finally, update the peer's retrieval capacity, or if it's already + // below the minimum allowance, drop the peer. If a lot of retrieval + // elements expired, we might have overestimated the remote peer or + // perhaps ourselves. Only reset to minimal throughput but don't drop + // just yet. + // + // The reason the minimum threshold is 2 is that the downloader tries + // to estimate the bandwidth and latency of a peer separately, which + // requires pushing the measured capacity a bit and seeing how response + // times reacts, to it always requests one more than the minimum (i.e. + // min 2). + peer := d.peers.Peer(req.Peer) + if peer == nil { + // If the peer got disconnected in between, we should really have + // short-circuited it already. Just in case there's some strange + // codepath, leave this check in not to crash. + log.Error("Delivery timeout from unknown peer", "peer", req.Peer) + continue + } + if fails > 2 { + queue.updateCapacity(peer, 0, 0) + } else { + d.dropPeer(peer.id) + + // If this peer was the master peer, abort sync immediately + d.cancelLock.RLock() + master := peer.id == d.cancelPeer + d.cancelLock.RUnlock() + + if master { + d.cancel() + return errTimeout + } + } + + case res := <-responses: + // Response arrived, it may be for an existing or an already timed + // out request. If the former, update the timeout heap and perhaps + // reschedule the timeout timer. + index, live := ordering[res.Req] + if live { + timeouts.Remove(index) + if index == 0 { + if !timeout.Stop() { + <-timeout.C + } + if timeouts.Size() > 0 { + _, exp := timeouts.Peek() + timeout.Reset(time.Until(time.Unix(0, -exp))) + } + } + delete(ordering, res.Req) + } + // Delete the pending request (if it still exists) and mark the peer idle + delete(pending, res.Req.Peer) + delete(stales, res.Req.Peer) + + // Signal the dispatcher that the round trip is done. We'll drop the + // peer if the data turns out to be junk. + res.Done <- nil + res.Req.Close() + + // If the peer was previously banned and failed to deliver its pack + // in a reasonable time frame, ignore its message. + if peer := d.peers.Peer(res.Req.Peer); peer != nil { + // Deliver the received chunk of data and check chain validity + accepted, err := queue.deliver(peer, res) + if errors.Is(err, errInvalidChain) { + return err + } + // Unless a peer delivered something completely else than requested (usually + // caused by a timed out request which came through in the end), set it to + // idle. If the delivery's stale, the peer should have already been idled. + if !errors.Is(err, errStaleDelivery) { + queue.updateCapacity(peer, accepted, res.Time) + } + } + + case cont := <-queue.waker(): + // The header fetcher sent a continuation flag, check if it's done + if !cont { + finished = true + } + } + } +} diff --git a/eth/downloader/fetchers_concurrent_bodies.go b/eth/downloader/fetchers_concurrent_bodies.go new file mode 100644 index 0000000000..a8de410323 --- /dev/null +++ b/eth/downloader/fetchers_concurrent_bodies.go @@ -0,0 +1,105 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package downloader + +import ( + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/eth/protocols/eth" + "github.com/ethereum/go-ethereum/log" +) + +// bodyQueue implements typedQueue and is a type adapter between the generic +// concurrent fetcher and the downloader. +type bodyQueue Downloader + +// waker returns a notification channel that gets pinged in case more body +// fetches have been queued up, so the fetcher might assign it to idle peers. +func (q *bodyQueue) waker() chan bool { + return q.queue.blockWakeCh +} + +// pending returns the number of bodies that are currently queued for fetching +// by the concurrent downloader. +func (q *bodyQueue) pending() int { + return q.queue.PendingBodies() +} + +// capacity is responsible for calculating how many bodies a particular peer is +// estimated to be able to retrieve within the alloted round trip time. +func (q *bodyQueue) capacity(peer *peerConnection, rtt time.Duration) int { + return peer.BodyCapacity(rtt) +} + +// updateCapacity is responsible for updating how many bodies a particular peer +// is estimated to be able to retrieve in a unit time. +func (q *bodyQueue) updateCapacity(peer *peerConnection, items int, span time.Duration) { + peer.UpdateBodyRate(items, span) +} + +// reserve is responsible for allocating a requested number of pending bodies +// from the download queue to the specified peer. +func (q *bodyQueue) reserve(peer *peerConnection, items int) (*fetchRequest, bool, bool) { + return q.queue.ReserveBodies(peer, items) +} + +// unreserve is resposible for removing the current body retrieval allocation +// assigned to a specific peer and placing it back into the pool to allow +// reassigning to some other peer. +func (q *bodyQueue) unreserve(peer string) int { + fails := q.queue.ExpireBodies(peer) + if fails > 2 { + log.Trace("Body delivery timed out", "peer", peer) + } else { + log.Debug("Body delivery stalling", "peer", peer) + } + return fails +} + +// request is responsible for converting a generic fetch request into a body +// one and sending it to the remote peer for fulfillment. +func (q *bodyQueue) request(peer *peerConnection, req *fetchRequest, resCh chan *eth.Response) (*eth.Request, error) { + peer.log.Trace("Requesting new batch of bodies", "count", len(req.Headers), "from", req.Headers[0].Number) + if q.bodyFetchHook != nil { + q.bodyFetchHook(req.Headers) + } + + hashes := make([]common.Hash, 0, len(req.Headers)) + for _, header := range req.Headers { + hashes = append(hashes, header.Hash()) + } + return peer.peer.RequestBodies(hashes, resCh) +} + +// deliver is responsible for taking a generic response packet from the concurrent +// fetcher, unpacking the body data and delivering it to the downloader's queue. +func (q *bodyQueue) deliver(peer *peerConnection, packet *eth.Response) (int, error) { + txs, uncles := packet.Res.(*eth.BlockBodiesPacket).Unpack() + hashsets := packet.Meta.([][]common.Hash) // {txs hashes, uncle hashes} + + accepted, err := q.queue.DeliverBodies(peer.id, txs, hashsets[0], uncles, hashsets[1]) + switch { + case err == nil && len(txs) == 0: + peer.log.Trace("Requested bodies delivered") + case err == nil: + peer.log.Trace("Delivered new batch of bodies", "count", len(txs), "accepted", accepted) + default: + peer.log.Debug("Failed to deliver retrieved bodies", "err", err) + } + return accepted, err +} diff --git a/eth/downloader/fetchers_concurrent_headers.go b/eth/downloader/fetchers_concurrent_headers.go new file mode 100644 index 0000000000..bd3bb3e00b --- /dev/null +++ b/eth/downloader/fetchers_concurrent_headers.go @@ -0,0 +1,97 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package downloader + +import ( + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/eth/protocols/eth" + "github.com/ethereum/go-ethereum/log" +) + +// headerQueue implements typedQueue and is a type adapter between the generic +// concurrent fetcher and the downloader. +type headerQueue Downloader + +// waker returns a notification channel that gets pinged in case more header +// fetches have been queued up, so the fetcher might assign it to idle peers. +func (q *headerQueue) waker() chan bool { + return q.queue.headerContCh +} + +// pending returns the number of headers that are currently queued for fetching +// by the concurrent downloader. +func (q *headerQueue) pending() int { + return q.queue.PendingHeaders() +} + +// capacity is responsible for calculating how many headers a particular peer is +// estimated to be able to retrieve within the alloted round trip time. +func (q *headerQueue) capacity(peer *peerConnection, rtt time.Duration) int { + return peer.HeaderCapacity(rtt) +} + +// updateCapacity is responsible for updating how many headers a particular peer +// is estimated to be able to retrieve in a unit time. +func (q *headerQueue) updateCapacity(peer *peerConnection, items int, span time.Duration) { + peer.UpdateHeaderRate(items, span) +} + +// reserve is responsible for allocating a requested number of pending headers +// from the download queue to the specified peer. +func (q *headerQueue) reserve(peer *peerConnection, items int) (*fetchRequest, bool, bool) { + return q.queue.ReserveHeaders(peer, items), false, false +} + +// unreserve is resposible for removing the current header retrieval allocation +// assigned to a specific peer and placing it back into the pool to allow +// reassigning to some other peer. +func (q *headerQueue) unreserve(peer string) int { + fails := q.queue.ExpireHeaders(peer) + if fails > 2 { + log.Trace("Header delivery timed out", "peer", peer) + } else { + log.Debug("Header delivery stalling", "peer", peer) + } + return fails +} + +// request is responsible for converting a generic fetch request into a header +// one and sending it to the remote peer for fulfillment. +func (q *headerQueue) request(peer *peerConnection, req *fetchRequest, resCh chan *eth.Response) (*eth.Request, error) { + peer.log.Trace("Requesting new batch of headers", "from", req.From) + return peer.peer.RequestHeadersByNumber(req.From, MaxHeaderFetch, 0, false, resCh) +} + +// deliver is responsible for taking a generic response packet from the concurrent +// fetcher, unpacking the header data and delivering it to the downloader's queue. +func (q *headerQueue) deliver(peer *peerConnection, packet *eth.Response) (int, error) { + headers := *packet.Res.(*eth.BlockHeadersPacket) + hashes := packet.Meta.([]common.Hash) + + accepted, err := q.queue.DeliverHeaders(peer.id, headers, hashes, q.headerProcCh) + switch { + case err == nil && len(headers) == 0: + peer.log.Trace("Requested headers delivered") + case err == nil: + peer.log.Trace("Delivered new batch of headers", "count", len(headers), "accepted", accepted) + default: + peer.log.Debug("Failed to deliver retrieved headers", "err", err) + } + return accepted, err +} diff --git a/eth/downloader/fetchers_concurrent_receipts.go b/eth/downloader/fetchers_concurrent_receipts.go new file mode 100644 index 0000000000..fee2c34101 --- /dev/null +++ b/eth/downloader/fetchers_concurrent_receipts.go @@ -0,0 +1,104 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package downloader + +import ( + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/eth/protocols/eth" + "github.com/ethereum/go-ethereum/log" +) + +// receiptQueue implements typedQueue and is a type adapter between the generic +// concurrent fetcher and the downloader. +type receiptQueue Downloader + +// waker returns a notification channel that gets pinged in case more reecipt +// fetches have been queued up, so the fetcher might assign it to idle peers. +func (q *receiptQueue) waker() chan bool { + return q.queue.receiptWakeCh +} + +// pending returns the number of receipt that are currently queued for fetching +// by the concurrent downloader. +func (q *receiptQueue) pending() int { + return q.queue.PendingReceipts() +} + +// capacity is responsible for calculating how many receipts a particular peer is +// estimated to be able to retrieve within the alloted round trip time. +func (q *receiptQueue) capacity(peer *peerConnection, rtt time.Duration) int { + return peer.ReceiptCapacity(rtt) +} + +// updateCapacity is responsible for updating how many receipts a particular peer +// is estimated to be able to retrieve in a unit time. +func (q *receiptQueue) updateCapacity(peer *peerConnection, items int, span time.Duration) { + peer.UpdateReceiptRate(items, span) +} + +// reserve is responsible for allocating a requested number of pending receipts +// from the download queue to the specified peer. +func (q *receiptQueue) reserve(peer *peerConnection, items int) (*fetchRequest, bool, bool) { + return q.queue.ReserveReceipts(peer, items) +} + +// unreserve is resposible for removing the current receipt retrieval allocation +// assigned to a specific peer and placing it back into the pool to allow +// reassigning to some other peer. +func (q *receiptQueue) unreserve(peer string) int { + fails := q.queue.ExpireReceipts(peer) + if fails > 2 { + log.Trace("Receipt delivery timed out", "peer", peer) + } else { + log.Debug("Receipt delivery stalling", "peer", peer) + } + return fails +} + +// request is responsible for converting a generic fetch request into a receipt +// one and sending it to the remote peer for fulfillment. +func (q *receiptQueue) request(peer *peerConnection, req *fetchRequest, resCh chan *eth.Response) (*eth.Request, error) { + peer.log.Trace("Requesting new batch of receipts", "count", len(req.Headers), "from", req.Headers[0].Number) + if q.receiptFetchHook != nil { + q.receiptFetchHook(req.Headers) + } + hashes := make([]common.Hash, 0, len(req.Headers)) + for _, header := range req.Headers { + hashes = append(hashes, header.Hash()) + } + return peer.peer.RequestReceipts(hashes, resCh) +} + +// deliver is responsible for taking a generic response packet from the concurrent +// fetcher, unpacking the receipt data and delivering it to the downloader's queue. +func (q *receiptQueue) deliver(peer *peerConnection, packet *eth.Response) (int, error) { + receipts := *packet.Res.(*eth.ReceiptsPacket) + hashes := packet.Meta.([]common.Hash) // {receipt hashes} + + accepted, err := q.queue.DeliverReceipts(peer.id, receipts, hashes) + switch { + case err == nil && len(receipts) == 0: + peer.log.Trace("Requested receipts delivered") + case err == nil: + peer.log.Trace("Delivered new batch of receipts", "count", len(receipts), "accepted", accepted) + default: + peer.log.Debug("Failed to deliver retrieved receipts", "err", err) + } + return accepted, err +} diff --git a/eth/downloader/metrics.go b/eth/downloader/metrics.go index c38732043a..23c033a8ad 100644 --- a/eth/downloader/metrics.go +++ b/eth/downloader/metrics.go @@ -38,8 +38,5 @@ var ( receiptDropMeter = metrics.NewRegisteredMeter("eth/downloader/receipts/drop", nil) receiptTimeoutMeter = metrics.NewRegisteredMeter("eth/downloader/receipts/timeout", nil) - stateInMeter = metrics.NewRegisteredMeter("eth/downloader/states/in", nil) - stateDropMeter = metrics.NewRegisteredMeter("eth/downloader/states/drop", nil) - throttleCounter = metrics.NewRegisteredCounter("eth/downloader/throttle", nil) ) diff --git a/eth/downloader/modes.go b/eth/downloader/modes.go index 3ea14d22d7..d388b9ee4d 100644 --- a/eth/downloader/modes.go +++ b/eth/downloader/modes.go @@ -24,7 +24,6 @@ type SyncMode uint32 const ( FullSync SyncMode = iota // Synchronise the entire blockchain history from full blocks - FastSync // Quickly download the headers, full sync only at the chain SnapSync // Download the chain and the state via compact snapshots LightSync // Download only the headers and terminate afterwards ) @@ -38,8 +37,6 @@ func (mode SyncMode) String() string { switch mode { case FullSync: return "full" - case FastSync: - return "fast" case SnapSync: return "snap" case LightSync: @@ -53,8 +50,6 @@ func (mode SyncMode) MarshalText() ([]byte, error) { switch mode { case FullSync: return []byte("full"), nil - case FastSync: - return []byte("fast"), nil case SnapSync: return []byte("snap"), nil case LightSync: @@ -68,14 +63,12 @@ func (mode *SyncMode) UnmarshalText(text []byte) error { switch string(text) { case "full": *mode = FullSync - case "fast": - *mode = FastSync case "snap": *mode = SnapSync case "light": *mode = LightSync default: - return fmt.Errorf(`unknown sync mode %q, want "full", "fast" or "light"`, text) + return fmt.Errorf(`unknown sync mode %q, want "full", "snap" or "light"`, text) } return nil } diff --git a/eth/downloader/peer.go b/eth/downloader/peer.go index 8632948329..324fdb9cd5 100644 --- a/eth/downloader/peer.go +++ b/eth/downloader/peer.go @@ -22,9 +22,7 @@ package downloader import ( "errors" "math/big" - "sort" "sync" - "sync/atomic" "time" "github.com/ethereum/go-ethereum/common" @@ -39,7 +37,6 @@ const ( ) var ( - errAlreadyFetching = errors.New("already fetching blocks from peer") errAlreadyRegistered = errors.New("peer is already registered") errNotRegistered = errors.New("peer is not registered") ) @@ -48,16 +45,6 @@ var ( type peerConnection struct { id string // Unique identifier of the peer - headerIdle int32 // Current header activity state of the peer (idle = 0, active = 1) - blockIdle int32 // Current block activity state of the peer (idle = 0, active = 1) - receiptIdle int32 // Current receipt activity state of the peer (idle = 0, active = 1) - stateIdle int32 // Current node data activity state of the peer (idle = 0, active = 1) - - headerStarted time.Time // Time instance when the last header fetch was started - blockStarted time.Time // Time instance when the last block (body) fetch was started - receiptStarted time.Time // Time instance when the last receipt fetch was started - stateStarted time.Time // Time instance when the last node data fetch was started - rates *msgrate.Tracker // Tracker to hone in on the number of items retrievable per second lacking map[common.Hash]struct{} // Set of hashes not to request (didn't have previously) @@ -71,16 +58,15 @@ type peerConnection struct { // LightPeer encapsulates the methods required to synchronise with a remote light peer. type LightPeer interface { Head() (common.Hash, *big.Int) - RequestHeadersByHash(common.Hash, int, int, bool) error - RequestHeadersByNumber(uint64, int, int, bool) error + RequestHeadersByHash(common.Hash, int, int, bool, chan *eth.Response) (*eth.Request, error) + RequestHeadersByNumber(uint64, int, int, bool, chan *eth.Response) (*eth.Request, error) } // Peer encapsulates the methods required to synchronise with a remote full peer. type Peer interface { LightPeer - RequestBodies([]common.Hash) error - RequestReceipts([]common.Hash) error - RequestNodeData([]common.Hash) error + RequestBodies([]common.Hash, chan *eth.Response) (*eth.Request, error) + RequestReceipts([]common.Hash, chan *eth.Response) (*eth.Request, error) } // lightPeerWrapper wraps a LightPeer struct, stubbing out the Peer-only methods. @@ -89,21 +75,18 @@ type lightPeerWrapper struct { } func (w *lightPeerWrapper) Head() (common.Hash, *big.Int) { return w.peer.Head() } -func (w *lightPeerWrapper) RequestHeadersByHash(h common.Hash, amount int, skip int, reverse bool) error { - return w.peer.RequestHeadersByHash(h, amount, skip, reverse) +func (w *lightPeerWrapper) RequestHeadersByHash(h common.Hash, amount int, skip int, reverse bool, sink chan *eth.Response) (*eth.Request, error) { + return w.peer.RequestHeadersByHash(h, amount, skip, reverse, sink) } -func (w *lightPeerWrapper) RequestHeadersByNumber(i uint64, amount int, skip int, reverse bool) error { - return w.peer.RequestHeadersByNumber(i, amount, skip, reverse) +func (w *lightPeerWrapper) RequestHeadersByNumber(i uint64, amount int, skip int, reverse bool, sink chan *eth.Response) (*eth.Request, error) { + return w.peer.RequestHeadersByNumber(i, amount, skip, reverse, sink) } -func (w *lightPeerWrapper) RequestBodies([]common.Hash) error { +func (w *lightPeerWrapper) RequestBodies([]common.Hash, chan *eth.Response) (*eth.Request, error) { panic("RequestBodies not supported in light client mode sync") } -func (w *lightPeerWrapper) RequestReceipts([]common.Hash) error { +func (w *lightPeerWrapper) RequestReceipts([]common.Hash, chan *eth.Response) (*eth.Request, error) { panic("RequestReceipts not supported in light client mode sync") } -func (w *lightPeerWrapper) RequestNodeData([]common.Hash) error { - panic("RequestNodeData not supported in light client mode sync") -} // newPeerConnection creates a new downloader peer. func newPeerConnection(id string, version uint, peer Peer, logger log.Logger) *peerConnection { @@ -121,114 +104,28 @@ func (p *peerConnection) Reset() { p.lock.Lock() defer p.lock.Unlock() - atomic.StoreInt32(&p.headerIdle, 0) - atomic.StoreInt32(&p.blockIdle, 0) - atomic.StoreInt32(&p.receiptIdle, 0) - atomic.StoreInt32(&p.stateIdle, 0) - p.lacking = make(map[common.Hash]struct{}) } -// FetchHeaders sends a header retrieval request to the remote peer. -func (p *peerConnection) FetchHeaders(from uint64, count int) error { - // Short circuit if the peer is already fetching - if !atomic.CompareAndSwapInt32(&p.headerIdle, 0, 1) { - return errAlreadyFetching - } - p.headerStarted = time.Now() - - // Issue the header retrieval request (absolute upwards without gaps) - go p.peer.RequestHeadersByNumber(from, count, 0, false) - - return nil +// UpdateHeaderRate updates the peer's estimated header retrieval throughput with +// the current measurement. +func (p *peerConnection) UpdateHeaderRate(delivered int, elapsed time.Duration) { + p.rates.Update(eth.BlockHeadersMsg, elapsed, delivered) } -// FetchBodies sends a block body retrieval request to the remote peer. -func (p *peerConnection) FetchBodies(request *fetchRequest) error { - // Short circuit if the peer is already fetching - if !atomic.CompareAndSwapInt32(&p.blockIdle, 0, 1) { - return errAlreadyFetching - } - p.blockStarted = time.Now() - - go func() { - // Convert the header set to a retrievable slice - hashes := make([]common.Hash, 0, len(request.Headers)) - for _, header := range request.Headers { - hashes = append(hashes, header.Hash()) - } - p.peer.RequestBodies(hashes) - }() - - return nil +// UpdateBodyRate updates the peer's estimated body retrieval throughput with the +// current measurement. +func (p *peerConnection) UpdateBodyRate(delivered int, elapsed time.Duration) { + p.rates.Update(eth.BlockBodiesMsg, elapsed, delivered) } -// FetchReceipts sends a receipt retrieval request to the remote peer. -func (p *peerConnection) FetchReceipts(request *fetchRequest) error { - // Short circuit if the peer is already fetching - if !atomic.CompareAndSwapInt32(&p.receiptIdle, 0, 1) { - return errAlreadyFetching - } - p.receiptStarted = time.Now() - - go func() { - // Convert the header set to a retrievable slice - hashes := make([]common.Hash, 0, len(request.Headers)) - for _, header := range request.Headers { - hashes = append(hashes, header.Hash()) - } - p.peer.RequestReceipts(hashes) - }() - - return nil +// UpdateReceiptRate updates the peer's estimated receipt retrieval throughput +// with the current measurement. +func (p *peerConnection) UpdateReceiptRate(delivered int, elapsed time.Duration) { + p.rates.Update(eth.ReceiptsMsg, elapsed, delivered) } -// FetchNodeData sends a node state data retrieval request to the remote peer. -func (p *peerConnection) FetchNodeData(hashes []common.Hash) error { - // Short circuit if the peer is already fetching - if !atomic.CompareAndSwapInt32(&p.stateIdle, 0, 1) { - return errAlreadyFetching - } - p.stateStarted = time.Now() - - go p.peer.RequestNodeData(hashes) - - return nil -} - -// SetHeadersIdle sets the peer to idle, allowing it to execute new header retrieval -// requests. Its estimated header retrieval throughput is updated with that measured -// just now. -func (p *peerConnection) SetHeadersIdle(delivered int, deliveryTime time.Time) { - p.rates.Update(eth.BlockHeadersMsg, deliveryTime.Sub(p.headerStarted), delivered) - atomic.StoreInt32(&p.headerIdle, 0) -} - -// SetBodiesIdle sets the peer to idle, allowing it to execute block body retrieval -// requests. Its estimated body retrieval throughput is updated with that measured -// just now. -func (p *peerConnection) SetBodiesIdle(delivered int, deliveryTime time.Time) { - p.rates.Update(eth.BlockBodiesMsg, deliveryTime.Sub(p.blockStarted), delivered) - atomic.StoreInt32(&p.blockIdle, 0) -} - -// SetReceiptsIdle sets the peer to idle, allowing it to execute new receipt -// retrieval requests. Its estimated receipt retrieval throughput is updated -// with that measured just now. -func (p *peerConnection) SetReceiptsIdle(delivered int, deliveryTime time.Time) { - p.rates.Update(eth.ReceiptsMsg, deliveryTime.Sub(p.receiptStarted), delivered) - atomic.StoreInt32(&p.receiptIdle, 0) -} - -// SetNodeDataIdle sets the peer to idle, allowing it to execute new state trie -// data retrieval requests. Its estimated state retrieval throughput is updated -// with that measured just now. -func (p *peerConnection) SetNodeDataIdle(delivered int, deliveryTime time.Time) { - p.rates.Update(eth.NodeDataMsg, deliveryTime.Sub(p.stateStarted), delivered) - atomic.StoreInt32(&p.stateIdle, 0) -} - -// HeaderCapacity retrieves the peers header download allowance based on its +// HeaderCapacity retrieves the peer's header download allowance based on its // previously discovered throughput. func (p *peerConnection) HeaderCapacity(targetRTT time.Duration) int { cap := p.rates.Capacity(eth.BlockHeadersMsg, targetRTT) @@ -238,9 +135,9 @@ func (p *peerConnection) HeaderCapacity(targetRTT time.Duration) int { return cap } -// BlockCapacity retrieves the peers block download allowance based on its +// BodyCapacity retrieves the peer's body download allowance based on its // previously discovered throughput. -func (p *peerConnection) BlockCapacity(targetRTT time.Duration) int { +func (p *peerConnection) BodyCapacity(targetRTT time.Duration) int { cap := p.rates.Capacity(eth.BlockBodiesMsg, targetRTT) if cap > MaxBlockFetch { cap = MaxBlockFetch @@ -258,16 +155,6 @@ func (p *peerConnection) ReceiptCapacity(targetRTT time.Duration) int { return cap } -// NodeDataCapacity retrieves the peers state download allowance based on its -// previously discovered throughput. -func (p *peerConnection) NodeDataCapacity(targetRTT time.Duration) int { - cap := p.rates.Capacity(eth.NodeDataMsg, targetRTT) - if cap > MaxStateFetch { - cap = MaxStateFetch - } - return cap -} - // MarkLacking appends a new entity to the set of items (blocks, receipts, states) // that a peer is known not to have (i.e. have been requested before). If the // set reaches its maximum allowed capacity, items are randomly dropped off. @@ -294,14 +181,19 @@ func (p *peerConnection) Lacks(hash common.Hash) bool { return ok } +// peeringEvent is sent on the peer event feed when a remote peer connects or +// disconnects. +type peeringEvent struct { + peer *peerConnection + join bool +} + // peerSet represents the collection of active peer participating in the chain // download procedure. type peerSet struct { - peers map[string]*peerConnection - rates *msgrate.Trackers // Set of rate trackers to give the sync a common beat - - newPeerFeed event.Feed - peerDropFeed event.Feed + peers map[string]*peerConnection + rates *msgrate.Trackers // Set of rate trackers to give the sync a common beat + events event.Feed // Feed to publish peer lifecycle events on lock sync.RWMutex } @@ -314,14 +206,9 @@ func newPeerSet() *peerSet { } } -// SubscribeNewPeers subscribes to peer arrival events. -func (ps *peerSet) SubscribeNewPeers(ch chan<- *peerConnection) event.Subscription { - return ps.newPeerFeed.Subscribe(ch) -} - -// SubscribePeerDrops subscribes to peer departure events. -func (ps *peerSet) SubscribePeerDrops(ch chan<- *peerConnection) event.Subscription { - return ps.peerDropFeed.Subscribe(ch) +// SubscribeEvents subscribes to peer arrival and departure events. +func (ps *peerSet) SubscribeEvents(ch chan<- *peeringEvent) event.Subscription { + return ps.events.Subscribe(ch) } // Reset iterates over the current peer set, and resets each of the known peers @@ -355,7 +242,7 @@ func (ps *peerSet) Register(p *peerConnection) error { ps.peers[p.id] = p ps.lock.Unlock() - ps.newPeerFeed.Send(p) + ps.events.Send(&peeringEvent{peer: p, join: true}) return nil } @@ -372,7 +259,7 @@ func (ps *peerSet) Unregister(id string) error { ps.rates.Untrack(id) ps.lock.Unlock() - ps.peerDropFeed.Send(p) + ps.events.Send(&peeringEvent{peer: p, join: false}) return nil } @@ -404,82 +291,6 @@ func (ps *peerSet) AllPeers() []*peerConnection { return list } -// HeaderIdlePeers retrieves a flat list of all the currently header-idle peers -// within the active peer set, ordered by their reputation. -func (ps *peerSet) HeaderIdlePeers() ([]*peerConnection, int) { - idle := func(p *peerConnection) bool { - return atomic.LoadInt32(&p.headerIdle) == 0 - } - throughput := func(p *peerConnection) int { - return p.rates.Capacity(eth.BlockHeadersMsg, time.Second) - } - return ps.idlePeers(eth.ETH66, eth.ETH66, idle, throughput) -} - -// BodyIdlePeers retrieves a flat list of all the currently body-idle peers within -// the active peer set, ordered by their reputation. -func (ps *peerSet) BodyIdlePeers() ([]*peerConnection, int) { - idle := func(p *peerConnection) bool { - return atomic.LoadInt32(&p.blockIdle) == 0 - } - throughput := func(p *peerConnection) int { - return p.rates.Capacity(eth.BlockBodiesMsg, time.Second) - } - return ps.idlePeers(eth.ETH66, eth.ETH66, idle, throughput) -} - -// ReceiptIdlePeers retrieves a flat list of all the currently receipt-idle peers -// within the active peer set, ordered by their reputation. -func (ps *peerSet) ReceiptIdlePeers() ([]*peerConnection, int) { - idle := func(p *peerConnection) bool { - return atomic.LoadInt32(&p.receiptIdle) == 0 - } - throughput := func(p *peerConnection) int { - return p.rates.Capacity(eth.ReceiptsMsg, time.Second) - } - return ps.idlePeers(eth.ETH66, eth.ETH66, idle, throughput) -} - -// NodeDataIdlePeers retrieves a flat list of all the currently node-data-idle -// peers within the active peer set, ordered by their reputation. -func (ps *peerSet) NodeDataIdlePeers() ([]*peerConnection, int) { - idle := func(p *peerConnection) bool { - return atomic.LoadInt32(&p.stateIdle) == 0 - } - throughput := func(p *peerConnection) int { - return p.rates.Capacity(eth.NodeDataMsg, time.Second) - } - return ps.idlePeers(eth.ETH66, eth.ETH66, idle, throughput) -} - -// idlePeers retrieves a flat list of all currently idle peers satisfying the -// protocol version constraints, using the provided function to check idleness. -// The resulting set of peers are sorted by their capacity. -func (ps *peerSet) idlePeers(minProtocol, maxProtocol uint, idleCheck func(*peerConnection) bool, capacity func(*peerConnection) int) ([]*peerConnection, int) { - ps.lock.RLock() - defer ps.lock.RUnlock() - - var ( - total = 0 - idle = make([]*peerConnection, 0, len(ps.peers)) - tps = make([]int, 0, len(ps.peers)) - ) - for _, p := range ps.peers { - if p.version >= minProtocol && p.version <= maxProtocol { - if idleCheck(p) { - idle = append(idle, p) - tps = append(tps, capacity(p)) - } - total++ - } - } - - // And sort them - sortPeers := &peerCapacitySort{idle, tps} - sort.Sort(sortPeers) - return sortPeers.p, total -} - // peerCapacitySort implements sort.Interface. // It sorts peer connections by capacity (descending). type peerCapacitySort struct { diff --git a/eth/downloader/queue.go b/eth/downloader/queue.go index 04ec12cfa9..ff34d932f0 100644 --- a/eth/downloader/queue.go +++ b/eth/downloader/queue.go @@ -31,7 +31,6 @@ import ( "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/metrics" - "github.com/ethereum/go-ethereum/trie" ) const ( @@ -54,8 +53,8 @@ var ( // fetchRequest is a currently running data retrieval operation. type fetchRequest struct { Peer *peerConnection // Peer to which the request was sent - From uint64 // [eth/62] Requested chain element index (used for skeleton fills only) - Headers []*types.Header // [eth/62] Requested headers, sorted by request order + From uint64 // Requested chain element index (used for skeleton fills only) + Headers []*types.Header // Requested headers, sorted by request order Time time.Time // Time when the request was made } @@ -119,6 +118,7 @@ type queue struct { headerPeerMiss map[string]map[uint64]struct{} // Set of per-peer header batches known to be unavailable headerPendPool map[string]*fetchRequest // Currently pending header retrieval operations headerResults []*types.Header // Result cache accumulating the completed headers + headerHashes []common.Hash // Result cache accumulating the completed header hashes headerProced int // Number of headers already processed from the results headerOffset uint64 // Number of the first header in the result cache headerContCh chan bool // Channel to notify when header download finishes @@ -127,10 +127,12 @@ type queue struct { blockTaskPool map[common.Hash]*types.Header // Pending block (body) retrieval tasks, mapping hashes to headers blockTaskQueue *prque.Prque // Priority queue of the headers to fetch the blocks (bodies) for blockPendPool map[string]*fetchRequest // Currently pending block (body) retrieval operations + blockWakeCh chan bool // Channel to notify the block fetcher of new tasks receiptTaskPool map[common.Hash]*types.Header // Pending receipt retrieval tasks, mapping hashes to headers receiptTaskQueue *prque.Prque // Priority queue of the headers to fetch the receipts for receiptPendPool map[string]*fetchRequest // Currently pending receipt retrieval operations + receiptWakeCh chan bool // Channel to notify when receipt fetcher of new tasks resultCache *resultStore // Downloaded but not yet delivered fetch results resultSize common.StorageSize // Approximate size of a block (exponential moving average) @@ -146,9 +148,11 @@ type queue struct { func newQueue(blockCacheLimit int, thresholdInitialSize int) *queue { lock := new(sync.RWMutex) q := &queue{ - headerContCh: make(chan bool), + headerContCh: make(chan bool, 1), blockTaskQueue: prque.New(nil), + blockWakeCh: make(chan bool, 1), receiptTaskQueue: prque.New(nil), + receiptWakeCh: make(chan bool, 1), active: sync.NewCond(lock), lock: lock, } @@ -196,8 +200,8 @@ func (q *queue) PendingHeaders() int { return q.headerTaskQueue.Size() } -// PendingBlocks retrieves the number of block (body) requests pending for retrieval. -func (q *queue) PendingBlocks() int { +// PendingBodies retrieves the number of block body requests pending for retrieval. +func (q *queue) PendingBodies() int { q.lock.Lock() defer q.lock.Unlock() @@ -212,15 +216,6 @@ func (q *queue) PendingReceipts() int { return q.receiptTaskQueue.Size() } -// InFlightHeaders retrieves whether there are header fetch requests currently -// in flight. -func (q *queue) InFlightHeaders() bool { - q.lock.Lock() - defer q.lock.Unlock() - - return len(q.headerPendPool) > 0 -} - // InFlightBlocks retrieves whether there are block fetch requests currently in // flight. func (q *queue) InFlightBlocks() bool { @@ -265,6 +260,7 @@ func (q *queue) ScheduleSkeleton(from uint64, skeleton []*types.Header) { q.headerTaskQueue = prque.New(nil) q.headerPeerMiss = make(map[string]map[uint64]struct{}) // Reset availability to correct invalid chains q.headerResults = make([]*types.Header, len(skeleton)*MaxHeaderFetch) + q.headerHashes = make([]common.Hash, len(skeleton)*MaxHeaderFetch) q.headerProced = 0 q.headerOffset = from q.headerContCh = make(chan bool, 1) @@ -279,27 +275,27 @@ func (q *queue) ScheduleSkeleton(from uint64, skeleton []*types.Header) { // RetrieveHeaders retrieves the header chain assemble based on the scheduled // skeleton. -func (q *queue) RetrieveHeaders() ([]*types.Header, int) { +func (q *queue) RetrieveHeaders() ([]*types.Header, []common.Hash, int) { q.lock.Lock() defer q.lock.Unlock() - headers, proced := q.headerResults, q.headerProced - q.headerResults, q.headerProced = nil, 0 + headers, hashes, proced := q.headerResults, q.headerHashes, q.headerProced + q.headerResults, q.headerHashes, q.headerProced = nil, nil, 0 - return headers, proced + return headers, hashes, proced } // Schedule adds a set of headers for the download queue for scheduling, returning // the new headers encountered. -func (q *queue) Schedule(headers []*types.Header, from uint64) []*types.Header { +func (q *queue) Schedule(headers []*types.Header, hashes []common.Hash, from uint64) []*types.Header { q.lock.Lock() defer q.lock.Unlock() // Insert all the headers prioritised by the contained block number inserts := make([]*types.Header, 0, len(headers)) - for _, header := range headers { + for i, header := range headers { // Make sure chain order is honoured and preserved throughout - hash := header.Hash() + hash := hashes[i] if header.Number == nil || header.Number.Uint64() != from { log.Warn("Header broke chain ordering", "number", header.Number, "hash", hash, "expected", from) break @@ -318,7 +314,7 @@ func (q *queue) Schedule(headers []*types.Header, from uint64) []*types.Header { q.blockTaskQueue.Push(header, -int64(header.Number.Uint64())) } // Queue for receipt retrieval - if q.mode == FastSync && !header.EmptyReceipts() { + if q.mode == SnapSync && !header.EmptyReceipts() { if _, ok := q.receiptTaskPool[hash]; ok { log.Warn("Header already scheduled for receipt fetch", "number", header.Number, "hash", hash) } else { @@ -383,6 +379,13 @@ func (q *queue) Results(block bool) []*fetchResult { throttleThreshold := uint64((common.StorageSize(blockCacheMemory) + q.resultSize - 1) / q.resultSize) throttleThreshold = q.resultCache.SetThrottleThreshold(throttleThreshold) + // With results removed from the cache, wake throttled fetchers + for _, ch := range []chan bool{q.blockWakeCh, q.receiptWakeCh} { + select { + case ch <- true: + default: + } + } // Log some info at certain times if time.Since(q.lastStatLog) > 60*time.Second { q.lastStatLog = time.Now() @@ -503,7 +506,7 @@ func (q *queue) reserveHeaders(p *peerConnection, count int, taskPool map[common // we can ask the resultcache if this header is within the // "prioritized" segment of blocks. If it is not, we need to throttle - stale, throttle, item, err := q.resultCache.AddFetch(header, q.mode == FastSync) + stale, throttle, item, err := q.resultCache.AddFetch(header, q.mode == SnapSync) if stale { // Don't put back in the task queue, this item has already been // delivered upstream @@ -566,40 +569,6 @@ func (q *queue) reserveHeaders(p *peerConnection, count int, taskPool map[common return request, progress, throttled } -// CancelHeaders aborts a fetch request, returning all pending skeleton indexes to the queue. -func (q *queue) CancelHeaders(request *fetchRequest) { - q.lock.Lock() - defer q.lock.Unlock() - q.cancel(request, q.headerTaskQueue, q.headerPendPool) -} - -// CancelBodies aborts a body fetch request, returning all pending headers to the -// task queue. -func (q *queue) CancelBodies(request *fetchRequest) { - q.lock.Lock() - defer q.lock.Unlock() - q.cancel(request, q.blockTaskQueue, q.blockPendPool) -} - -// CancelReceipts aborts a body fetch request, returning all pending headers to -// the task queue. -func (q *queue) CancelReceipts(request *fetchRequest) { - q.lock.Lock() - defer q.lock.Unlock() - q.cancel(request, q.receiptTaskQueue, q.receiptPendPool) -} - -// Cancel aborts a fetch request, returning all pending hashes to the task queue. -func (q *queue) cancel(request *fetchRequest, taskQueue *prque.Prque, pendPool map[string]*fetchRequest) { - if request.From > 0 { - taskQueue.Push(request.From, -int64(request.From)) - } - for _, header := range request.Headers { - taskQueue.Push(header, -int64(header.Number.Uint64())) - } - delete(pendPool, request.Peer.id) -} - // Revoke cancels all pending requests belonging to a given peer. This method is // meant to be called during a peer drop to quickly reassign owned data fetches // to remaining nodes. @@ -607,6 +576,10 @@ func (q *queue) Revoke(peerID string) { q.lock.Lock() defer q.lock.Unlock() + if request, ok := q.headerPendPool[peerID]; ok { + q.headerTaskQueue.Push(request.From, -int64(request.From)) + delete(q.headerPendPool, peerID) + } if request, ok := q.blockPendPool[peerID]; ok { for _, header := range request.Headers { q.blockTaskQueue.Push(header, -int64(header.Number.Uint64())) @@ -621,62 +594,60 @@ func (q *queue) Revoke(peerID string) { } } -// ExpireHeaders checks for in flight requests that exceeded a timeout allowance, -// canceling them and returning the responsible peers for penalisation. -func (q *queue) ExpireHeaders(timeout time.Duration) map[string]int { +// ExpireHeaders cancels a request that timed out and moves the pending fetch +// task back into the queue for rescheduling. +func (q *queue) ExpireHeaders(peer string) int { q.lock.Lock() defer q.lock.Unlock() - return q.expire(timeout, q.headerPendPool, q.headerTaskQueue, headerTimeoutMeter) + headerTimeoutMeter.Mark(1) + return q.expire(peer, q.headerPendPool, q.headerTaskQueue) } // ExpireBodies checks for in flight block body requests that exceeded a timeout // allowance, canceling them and returning the responsible peers for penalisation. -func (q *queue) ExpireBodies(timeout time.Duration) map[string]int { +func (q *queue) ExpireBodies(peer string) int { q.lock.Lock() defer q.lock.Unlock() - return q.expire(timeout, q.blockPendPool, q.blockTaskQueue, bodyTimeoutMeter) + bodyTimeoutMeter.Mark(1) + return q.expire(peer, q.blockPendPool, q.blockTaskQueue) } // ExpireReceipts checks for in flight receipt requests that exceeded a timeout // allowance, canceling them and returning the responsible peers for penalisation. -func (q *queue) ExpireReceipts(timeout time.Duration) map[string]int { +func (q *queue) ExpireReceipts(peer string) int { q.lock.Lock() defer q.lock.Unlock() - return q.expire(timeout, q.receiptPendPool, q.receiptTaskQueue, receiptTimeoutMeter) + receiptTimeoutMeter.Mark(1) + return q.expire(peer, q.receiptPendPool, q.receiptTaskQueue) } -// expire is the generic check that move expired tasks from a pending pool back -// into a task pool, returning all entities caught with expired tasks. +// expire is the generic check that moves a specific expired task from a pending +// pool back into a task pool. // -// Note, this method expects the queue lock to be already held. The -// reason the lock is not obtained in here is because the parameters already need -// to access the queue, so they already need a lock anyway. -func (q *queue) expire(timeout time.Duration, pendPool map[string]*fetchRequest, taskQueue *prque.Prque, timeoutMeter metrics.Meter) map[string]int { - // Iterate over the expired requests and return each to the queue - expiries := make(map[string]int) - for id, request := range pendPool { - if time.Since(request.Time) > timeout { - // Update the metrics with the timeout - timeoutMeter.Mark(1) - - // Return any non satisfied requests to the pool - if request.From > 0 { - taskQueue.Push(request.From, -int64(request.From)) - } - for _, header := range request.Headers { - taskQueue.Push(header, -int64(header.Number.Uint64())) - } - // Add the peer to the expiry report along the number of failed requests - expiries[id] = len(request.Headers) - - // Remove the expired requests from the pending pool directly - delete(pendPool, id) - } +// Note, this method expects the queue lock to be already held. The reason the +// lock is not obtained in here is that the parameters already need to access +// the queue, so they already need a lock anyway. +func (q *queue) expire(peer string, pendPool map[string]*fetchRequest, taskQueue *prque.Prque) int { + // Retrieve the request being expired and log an error if it's non-existnet, + // as there's no order of events that should lead to such expirations. + req := pendPool[peer] + if req == nil { + log.Error("Expired request does not exist", "peer", peer) + return 0 } - return expiries + delete(pendPool, peer) + + // Return any non-satisfied requests to the pool + if req.From > 0 { + taskQueue.Push(req.From, -int64(req.From)) + } + for _, header := range req.Headers { + taskQueue.Push(header, -int64(header.Number.Uint64())) + } + return len(req.Headers) } // DeliverHeaders injects a header retrieval response into the header results @@ -684,9 +655,9 @@ func (q *queue) expire(timeout time.Duration, pendPool map[string]*fetchRequest, // if they do not map correctly to the skeleton. // // If the headers are accepted, the method makes an attempt to deliver the set -// of ready headers to the processor to keep the pipeline full. However it will +// of ready headers to the processor to keep the pipeline full. However, it will // not block to prevent stalling other pending deliveries. -func (q *queue) DeliverHeaders(id string, headers []*types.Header, headerProcCh chan []*types.Header) (int, error) { +func (q *queue) DeliverHeaders(id string, headers []*types.Header, hashes []common.Hash, headerProcCh chan *headerTask) (int, error) { q.lock.Lock() defer q.lock.Unlock() @@ -700,28 +671,31 @@ func (q *queue) DeliverHeaders(id string, headers []*types.Header, headerProcCh // Short circuit if the data was never requested request := q.headerPendPool[id] if request == nil { + headerDropMeter.Mark(int64(len(headers))) return 0, errNoFetchesPending } - headerReqTimer.UpdateSince(request.Time) delete(q.headerPendPool, id) + headerReqTimer.UpdateSince(request.Time) + headerInMeter.Mark(int64(len(headers))) + // Ensure headers can be mapped onto the skeleton chain target := q.headerTaskPool[request.From].Hash() accepted := len(headers) == MaxHeaderFetch if accepted { if headers[0].Number.Uint64() != request.From { - logger.Trace("First header broke chain ordering", "number", headers[0].Number, "hash", headers[0].Hash(), "expected", request.From) + logger.Trace("First header broke chain ordering", "number", headers[0].Number, "hash", hashes[0], "expected", request.From) accepted = false - } else if headers[len(headers)-1].Hash() != target { - logger.Trace("Last header broke skeleton structure ", "number", headers[len(headers)-1].Number, "hash", headers[len(headers)-1].Hash(), "expected", target) + } else if hashes[len(headers)-1] != target { + logger.Trace("Last header broke skeleton structure ", "number", headers[len(headers)-1].Number, "hash", hashes[len(headers)-1], "expected", target) accepted = false } } if accepted { - parentHash := headers[0].Hash() + parentHash := hashes[0] for i, header := range headers[1:] { - hash := header.Hash() + hash := hashes[i+1] if want := request.From + 1 + uint64(i); header.Number.Uint64() != want { logger.Warn("Header broke chain ordering", "number", header.Number, "hash", hash, "expected", want) accepted = false @@ -739,6 +713,7 @@ func (q *queue) DeliverHeaders(id string, headers []*types.Header, headerProcCh // If the batch of headers wasn't accepted, mark as unavailable if !accepted { logger.Trace("Skeleton filling not accepted", "from", request.From) + headerDropMeter.Mark(int64(len(headers))) miss := q.headerPeerMiss[id] if miss == nil { @@ -752,6 +727,8 @@ func (q *queue) DeliverHeaders(id string, headers []*types.Header, headerProcCh } // Clean up a successful fetch and try to deliver any sub-results copy(q.headerResults[request.From-q.headerOffset:], headers) + copy(q.headerHashes[request.From-q.headerOffset:], hashes) + delete(q.headerTaskPool, request.From) ready := 0 @@ -760,13 +737,19 @@ func (q *queue) DeliverHeaders(id string, headers []*types.Header, headerProcCh } if ready > 0 { // Headers are ready for delivery, gather them and push forward (non blocking) - process := make([]*types.Header, ready) - copy(process, q.headerResults[q.headerProced:q.headerProced+ready]) + processHeaders := make([]*types.Header, ready) + copy(processHeaders, q.headerResults[q.headerProced:q.headerProced+ready]) + + processHashes := make([]common.Hash, ready) + copy(processHashes, q.headerHashes[q.headerProced:q.headerProced+ready]) select { - case headerProcCh <- process: - logger.Trace("Pre-scheduled new headers", "count", len(process), "from", process[0].Number) - q.headerProced += len(process) + case headerProcCh <- &headerTask{ + headers: processHeaders, + hashes: processHashes, + }: + logger.Trace("Pre-scheduled new headers", "count", len(processHeaders), "from", processHeaders[0].Number) + q.headerProced += len(processHeaders) default: } } @@ -780,15 +763,15 @@ func (q *queue) DeliverHeaders(id string, headers []*types.Header, headerProcCh // DeliverBodies injects a block body retrieval response into the results queue. // The method returns the number of blocks bodies accepted from the delivery and // also wakes any threads waiting for data delivery. -func (q *queue) DeliverBodies(id string, txLists [][]*types.Transaction, uncleLists [][]*types.Header) (int, error) { +func (q *queue) DeliverBodies(id string, txLists [][]*types.Transaction, txListHashes []common.Hash, uncleLists [][]*types.Header, uncleListHashes []common.Hash) (int, error) { q.lock.Lock() defer q.lock.Unlock() - trieHasher := trie.NewStackTrie(nil) + validate := func(index int, header *types.Header) error { - if types.DeriveSha(types.Transactions(txLists[index]), trieHasher) != header.TxHash { + if txListHashes[index] != header.TxHash { return errInvalidBody } - if types.CalcUncleHash(uncleLists[index]) != header.UncleHash { + if uncleListHashes[index] != header.UncleHash { return errInvalidBody } return nil @@ -800,18 +783,18 @@ func (q *queue) DeliverBodies(id string, txLists [][]*types.Transaction, uncleLi result.SetBodyDone() } return q.deliver(id, q.blockTaskPool, q.blockTaskQueue, q.blockPendPool, - bodyReqTimer, len(txLists), validate, reconstruct) + bodyReqTimer, bodyInMeter, bodyDropMeter, len(txLists), validate, reconstruct) } // DeliverReceipts injects a receipt retrieval response into the results queue. // The method returns the number of transaction receipts accepted from the delivery // and also wakes any threads waiting for data delivery. -func (q *queue) DeliverReceipts(id string, receiptList [][]*types.Receipt) (int, error) { +func (q *queue) DeliverReceipts(id string, receiptList [][]*types.Receipt, receiptListHashes []common.Hash) (int, error) { q.lock.Lock() defer q.lock.Unlock() - trieHasher := trie.NewStackTrie(nil) + validate := func(index int, header *types.Header) error { - if types.DeriveSha(types.Receipts(receiptList[index]), trieHasher) != header.ReceiptHash { + if receiptListHashes[index] != header.ReceiptHash { return errInvalidReceipt } return nil @@ -821,7 +804,7 @@ func (q *queue) DeliverReceipts(id string, receiptList [][]*types.Receipt) (int, result.SetReceiptsDone() } return q.deliver(id, q.receiptTaskPool, q.receiptTaskQueue, q.receiptPendPool, - receiptReqTimer, len(receiptList), validate, reconstruct) + receiptReqTimer, receiptInMeter, receiptDropMeter, len(receiptList), validate, reconstruct) } // deliver injects a data retrieval response into the results queue. @@ -830,18 +813,22 @@ func (q *queue) DeliverReceipts(id string, receiptList [][]*types.Receipt) (int, // reason this lock is not obtained in here is because the parameters already need // to access the queue, so they already need a lock anyway. func (q *queue) deliver(id string, taskPool map[common.Hash]*types.Header, - taskQueue *prque.Prque, pendPool map[string]*fetchRequest, reqTimer metrics.Timer, + taskQueue *prque.Prque, pendPool map[string]*fetchRequest, + reqTimer metrics.Timer, resInMeter metrics.Meter, resDropMeter metrics.Meter, results int, validate func(index int, header *types.Header) error, reconstruct func(index int, result *fetchResult)) (int, error) { // Short circuit if the data was never requested request := pendPool[id] if request == nil { + resDropMeter.Mark(int64(results)) return 0, errNoFetchesPending } - reqTimer.UpdateSince(request.Time) delete(pendPool, id) + reqTimer.UpdateSince(request.Time) + resInMeter.Mark(int64(results)) + // If no data items were retrieved, mark them as unavailable for the origin peer if results == 0 { for _, header := range request.Headers { @@ -883,6 +870,8 @@ func (q *queue) deliver(id string, taskPool map[common.Hash]*types.Header, delete(taskPool, hashes[accepted]) accepted++ } + resDropMeter.Mark(int64(results - accepted)) + // Return all failed or missing fetches to the queue for _, header := range request.Headers[accepted:] { taskQueue.Push(header, -int64(header.Number.Uint64())) diff --git a/eth/downloader/queue_test.go b/eth/downloader/queue_test.go index cde5f306a2..f729def671 100644 --- a/eth/downloader/queue_test.go +++ b/eth/downloader/queue_test.go @@ -31,6 +31,7 @@ import ( "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/params" + "github.com/ethereum/go-ethereum/trie" ) var ( @@ -104,17 +105,22 @@ func TestBasics(t *testing.T) { if !q.Idle() { t.Errorf("new queue should be idle") } - q.Prepare(1, FastSync) + q.Prepare(1, SnapSync) if res := q.Results(false); len(res) != 0 { t.Fatal("new queue should have 0 results") } // Schedule a batch of headers - q.Schedule(chain.headers(), 1) + headers := chain.headers() + hashes := make([]common.Hash, len(headers)) + for i, header := range headers { + hashes[i] = header.Hash() + } + q.Schedule(headers, hashes, 1) if q.Idle() { t.Errorf("queue should not be idle") } - if got, exp := q.PendingBlocks(), chain.Len(); got != exp { + if got, exp := q.PendingBodies(), chain.Len(); got != exp { t.Errorf("wrong pending block count, got %d, exp %d", got, exp) } // Only non-empty receipts get added to task-queue @@ -197,13 +203,19 @@ func TestEmptyBlocks(t *testing.T) { q := newQueue(10, 10) - q.Prepare(1, FastSync) + q.Prepare(1, SnapSync) + // Schedule a batch of headers - q.Schedule(emptyChain.headers(), 1) + headers := emptyChain.headers() + hashes := make([]common.Hash, len(headers)) + for i, header := range headers { + hashes[i] = header.Hash() + } + q.Schedule(headers, hashes, 1) if q.Idle() { t.Errorf("queue should not be idle") } - if got, exp := q.PendingBlocks(), len(emptyChain.blocks); got != exp { + if got, exp := q.PendingBodies(), len(emptyChain.blocks); got != exp { t.Errorf("wrong pending block count, got %d, exp %d", got, exp) } if got, exp := q.PendingReceipts(), 0; got != exp { @@ -272,7 +284,7 @@ func XTestDelivery(t *testing.T) { } q := newQueue(10, 10) var wg sync.WaitGroup - q.Prepare(1, FastSync) + q.Prepare(1, SnapSync) wg.Add(1) go func() { // deliver headers @@ -280,11 +292,15 @@ func XTestDelivery(t *testing.T) { c := 1 for { //fmt.Printf("getting headers from %d\n", c) - hdrs := world.headers(c) - l := len(hdrs) + headers := world.headers(c) + hashes := make([]common.Hash, len(headers)) + for i, header := range headers { + hashes[i] = header.Hash() + } + l := len(headers) //fmt.Printf("scheduling %d headers, first %d last %d\n", - // l, hdrs[0].Number.Uint64(), hdrs[len(hdrs)-1].Number.Uint64()) - q.Schedule(hdrs, uint64(c)) + // l, headers[0].Number.Uint64(), headers[len(headers)-1].Number.Uint64()) + q.Schedule(headers, hashes, uint64(c)) c += l } }() @@ -311,18 +327,31 @@ func XTestDelivery(t *testing.T) { peer := dummyPeer(fmt.Sprintf("peer-%d", i)) f, _, _ := q.ReserveBodies(peer, rand.Intn(30)) if f != nil { - var emptyList []*types.Header - var txs [][]*types.Transaction - var uncles [][]*types.Header + var ( + emptyList []*types.Header + txset [][]*types.Transaction + uncleset [][]*types.Header + ) numToSkip := rand.Intn(len(f.Headers)) for _, hdr := range f.Headers[0 : len(f.Headers)-numToSkip] { - txs = append(txs, world.getTransactions(hdr.Number.Uint64())) - uncles = append(uncles, emptyList) + txset = append(txset, world.getTransactions(hdr.Number.Uint64())) + uncleset = append(uncleset, emptyList) + } + var ( + txsHashes = make([]common.Hash, len(txset)) + uncleHashes = make([]common.Hash, len(uncleset)) + ) + hasher := trie.NewStackTrie(nil) + for i, txs := range txset { + txsHashes[i] = types.DeriveSha(types.Transactions(txs), hasher) + } + for i, uncles := range uncleset { + uncleHashes[i] = types.CalcUncleHash(uncles) } time.Sleep(100 * time.Millisecond) - _, err := q.DeliverBodies(peer.id, txs, uncles) + _, err := q.DeliverBodies(peer.id, txset, txsHashes, uncleset, uncleHashes) if err != nil { - fmt.Printf("delivered %d bodies %v\n", len(txs), err) + fmt.Printf("delivered %d bodies %v\n", len(txset), err) } } else { i++ @@ -341,7 +370,12 @@ func XTestDelivery(t *testing.T) { for _, hdr := range f.Headers { rcs = append(rcs, world.getReceipts(hdr.Number.Uint64())) } - _, err := q.DeliverReceipts(peer.id, rcs) + hasher := trie.NewStackTrie(nil) + hashes := make([]common.Hash, len(rcs)) + for i, receipt := range rcs { + hashes[i] = types.DeriveSha(types.Receipts(receipt), hasher) + } + _, err := q.DeliverReceipts(peer.id, rcs, hashes) if err != nil { fmt.Printf("delivered %d receipts %v\n", len(rcs), err) } diff --git a/eth/downloader/statesync.go b/eth/downloader/statesync.go index 6c53e5577a..501af63ed5 100644 --- a/eth/downloader/statesync.go +++ b/eth/downloader/statesync.go @@ -17,48 +17,12 @@ package downloader import ( - "fmt" "sync" - "time" "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/core/state" - "github.com/ethereum/go-ethereum/crypto" - "github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/trie" - "golang.org/x/crypto/sha3" ) -// stateReq represents a batch of state fetch requests grouped together into -// a single data retrieval network packet. -type stateReq struct { - nItems uint16 // Number of items requested for download (max is 384, so uint16 is sufficient) - trieTasks map[common.Hash]*trieTask // Trie node download tasks to track previous attempts - codeTasks map[common.Hash]*codeTask // Byte code download tasks to track previous attempts - timeout time.Duration // Maximum round trip time for this to complete - timer *time.Timer // Timer to fire when the RTT timeout expires - peer *peerConnection // Peer that we're requesting from - delivered time.Time // Time when the packet was delivered (independent when we process it) - response [][]byte // Response data of the peer (nil for timeouts) - dropped bool // Flag whether the peer dropped off early -} - -// timedOut returns if this request timed out. -func (req *stateReq) timedOut() bool { - return req.response == nil -} - -// stateSyncStats is a collection of progress stats to report during a state trie -// sync to RPC requests as well as to display in user logs. -type stateSyncStats struct { - processed uint64 // Number of state entries processed - duplicate uint64 // Number of state entries downloaded twice - unexpected uint64 // Number of non-requested state entries received - pending uint64 // Number of still pending state entries -} - // syncState starts downloading state with the given root hash. func (d *Downloader) syncState(root common.Hash) *stateSync { // Create the state sync @@ -85,8 +49,6 @@ func (d *Downloader) stateFetcher() { for next := s; next != nil; { next = d.runStateSync(next) } - case <-d.stateCh: - // Ignore state responses while no sync is running. case <-d.quitCh: return } @@ -96,216 +58,44 @@ func (d *Downloader) stateFetcher() { // runStateSync runs a state synchronisation until it completes or another root // hash is requested to be switched over to. func (d *Downloader) runStateSync(s *stateSync) *stateSync { - var ( - active = make(map[string]*stateReq) // Currently in-flight requests - finished []*stateReq // Completed or failed requests - timeout = make(chan *stateReq) // Timed out active requests - ) log.Trace("State sync starting", "root", s.root) - defer func() { - // Cancel active request timers on exit. Also set peers to idle so they're - // available for the next sync. - for _, req := range active { - req.timer.Stop() - req.peer.SetNodeDataIdle(int(req.nItems), time.Now()) - } - }() go s.run() defer s.Cancel() - // Listen for peer departure events to cancel assigned tasks - peerDrop := make(chan *peerConnection, 1024) - peerSub := s.d.peers.SubscribePeerDrops(peerDrop) - defer peerSub.Unsubscribe() - for { - // Enable sending of the first buffered element if there is one. - var ( - deliverReq *stateReq - deliverReqCh chan *stateReq - ) - if len(finished) > 0 { - deliverReq = finished[0] - deliverReqCh = s.deliver - } - select { - // The stateSync lifecycle: case next := <-d.stateSyncStart: - d.spindownStateSync(active, finished, timeout, peerDrop) return next case <-s.done: - d.spindownStateSync(active, finished, timeout, peerDrop) return nil - - // Send the next finished request to the current sync: - case deliverReqCh <- deliverReq: - // Shift out the first request, but also set the emptied slot to nil for GC - copy(finished, finished[1:]) - finished[len(finished)-1] = nil - finished = finished[:len(finished)-1] - - // Handle incoming state packs: - case pack := <-d.stateCh: - // Discard any data not requested (or previously timed out) - req := active[pack.PeerId()] - if req == nil { - log.Debug("Unrequested node data", "peer", pack.PeerId(), "len", pack.Items()) - continue - } - // Finalize the request and queue up for processing - req.timer.Stop() - req.response = pack.(*statePack).states - req.delivered = time.Now() - - finished = append(finished, req) - delete(active, pack.PeerId()) - - // Handle dropped peer connections: - case p := <-peerDrop: - // Skip if no request is currently pending - req := active[p.id] - if req == nil { - continue - } - // Finalize the request and queue up for processing - req.timer.Stop() - req.dropped = true - req.delivered = time.Now() - - finished = append(finished, req) - delete(active, p.id) - - // Handle timed-out requests: - case req := <-timeout: - // If the peer is already requesting something else, ignore the stale timeout. - // This can happen when the timeout and the delivery happens simultaneously, - // causing both pathways to trigger. - if active[req.peer.id] != req { - continue - } - req.delivered = time.Now() - // Move the timed out data back into the download queue - finished = append(finished, req) - delete(active, req.peer.id) - - // Track outgoing state requests: - case req := <-d.trackStateReq: - // If an active request already exists for this peer, we have a problem. In - // theory the trie node schedule must never assign two requests to the same - // peer. In practice however, a peer might receive a request, disconnect and - // immediately reconnect before the previous times out. In this case the first - // request is never honored, alas we must not silently overwrite it, as that - // causes valid requests to go missing and sync to get stuck. - if old := active[req.peer.id]; old != nil { - log.Warn("Busy peer assigned new state fetch", "peer", old.peer.id) - // Move the previous request to the finished set - old.timer.Stop() - old.dropped = true - old.delivered = time.Now() - finished = append(finished, old) - } - // Start a timer to notify the sync loop if the peer stalled. - req.timer = time.AfterFunc(req.timeout, func() { - timeout <- req - }) - active[req.peer.id] = req } } } -// spindownStateSync 'drains' the outstanding requests; some will be delivered and other -// will time out. This is to ensure that when the next stateSync starts working, all peers -// are marked as idle and de facto _are_ idle. -func (d *Downloader) spindownStateSync(active map[string]*stateReq, finished []*stateReq, timeout chan *stateReq, peerDrop chan *peerConnection) { - log.Trace("State sync spinning down", "active", len(active), "finished", len(finished)) - for len(active) > 0 { - var ( - req *stateReq - reason string - ) - select { - // Handle (drop) incoming state packs: - case pack := <-d.stateCh: - req = active[pack.PeerId()] - reason = "delivered" - // Handle dropped peer connections: - case p := <-peerDrop: - req = active[p.id] - reason = "peerdrop" - // Handle timed-out requests: - case req = <-timeout: - reason = "timeout" - } - if req == nil { - continue - } - req.peer.log.Trace("State peer marked idle (spindown)", "req.items", int(req.nItems), "reason", reason) - req.timer.Stop() - delete(active, req.peer.id) - req.peer.SetNodeDataIdle(int(req.nItems), time.Now()) - } - // The 'finished' set contains deliveries that we were going to pass to processing. - // Those are now moot, but we still need to set those peers as idle, which would - // otherwise have been done after processing - for _, req := range finished { - req.peer.SetNodeDataIdle(int(req.nItems), time.Now()) - } -} - // stateSync schedules requests for downloading a particular state trie defined // by a given state root. type stateSync struct { - d *Downloader // Downloader instance to access and manage current peerset + d *Downloader // Downloader instance to access and manage current peerset + root common.Hash // State root currently being synced - root common.Hash // State root currently being synced - sched *trie.Sync // State trie sync scheduler defining the tasks - keccak crypto.KeccakState // Keccak256 hasher to verify deliveries with - - trieTasks map[common.Hash]*trieTask // Set of trie node tasks currently queued for retrieval - codeTasks map[common.Hash]*codeTask // Set of byte code tasks currently queued for retrieval - - numUncommitted int - bytesUncommitted int - - started chan struct{} // Started is signalled once the sync loop starts - - deliver chan *stateReq // Delivery channel multiplexing peer responses - cancel chan struct{} // Channel to signal a termination request - cancelOnce sync.Once // Ensures cancel only ever gets called once - done chan struct{} // Channel to signal termination completion - err error // Any error hit during sync (set before completion) -} - -// trieTask represents a single trie node download task, containing a set of -// peers already attempted retrieval from to detect stalled syncs and abort. -type trieTask struct { - path [][]byte - attempts map[string]struct{} -} - -// codeTask represents a single byte code download task, containing a set of -// peers already attempted retrieval from to detect stalled syncs and abort. -type codeTask struct { - attempts map[string]struct{} + started chan struct{} // Started is signalled once the sync loop starts + cancel chan struct{} // Channel to signal a termination request + cancelOnce sync.Once // Ensures cancel only ever gets called once + done chan struct{} // Channel to signal termination completion + err error // Any error hit during sync (set before completion) } // newStateSync creates a new state trie download scheduler. This method does not // yet start the sync. The user needs to call run to initiate. func newStateSync(d *Downloader, root common.Hash) *stateSync { return &stateSync{ - d: d, - root: root, - sched: state.NewStateSync(root, d.stateDB, d.stateBloom, nil), - keccak: sha3.NewLegacyKeccak256().(crypto.KeccakState), - trieTasks: make(map[common.Hash]*trieTask), - codeTasks: make(map[common.Hash]*codeTask), - deliver: make(chan *stateReq), - cancel: make(chan struct{}), - done: make(chan struct{}), - started: make(chan struct{}), + d: d, + root: root, + cancel: make(chan struct{}), + done: make(chan struct{}), + started: make(chan struct{}), } } @@ -314,11 +104,7 @@ func newStateSync(d *Downloader, root common.Hash) *stateSync { // finish. func (s *stateSync) run() { close(s.started) - if s.d.snapSync { - s.err = s.d.SnapSyncer.Sync(s.root, s.cancel) - } else { - s.err = s.loop() - } + s.err = s.d.SnapSyncer.Sync(s.root, s.cancel) close(s.done) } @@ -335,281 +121,3 @@ func (s *stateSync) Cancel() error { }) return s.Wait() } - -// loop is the main event loop of a state trie sync. It it responsible for the -// assignment of new tasks to peers (including sending it to them) as well as -// for the processing of inbound data. Note, that the loop does not directly -// receive data from peers, rather those are buffered up in the downloader and -// pushed here async. The reason is to decouple processing from data receipt -// and timeouts. -func (s *stateSync) loop() (err error) { - // Listen for new peer events to assign tasks to them - newPeer := make(chan *peerConnection, 1024) - peerSub := s.d.peers.SubscribeNewPeers(newPeer) - defer peerSub.Unsubscribe() - defer func() { - cerr := s.commit(true) - if err == nil { - err = cerr - } - }() - - // Keep assigning new tasks until the sync completes or aborts - for s.sched.Pending() > 0 { - if err = s.commit(false); err != nil { - return err - } - s.assignTasks() - // Tasks assigned, wait for something to happen - select { - case <-newPeer: - // New peer arrived, try to assign it download tasks - - case <-s.cancel: - return errCancelStateFetch - - case <-s.d.cancelCh: - return errCanceled - - case req := <-s.deliver: - // Response, disconnect or timeout triggered, drop the peer if stalling - log.Trace("Received node data response", "peer", req.peer.id, "count", len(req.response), "dropped", req.dropped, "timeout", !req.dropped && req.timedOut()) - if req.nItems <= 2 && !req.dropped && req.timedOut() { - // 2 items are the minimum requested, if even that times out, we've no use of - // this peer at the moment. - log.Warn("Stalling state sync, dropping peer", "peer", req.peer.id) - if s.d.dropPeer == nil { - // The dropPeer method is nil when `--copydb` is used for a local copy. - // Timeouts can occur if e.g. compaction hits at the wrong time, and can be ignored - req.peer.log.Warn("Downloader wants to drop peer, but peerdrop-function is not set", "peer", req.peer.id) - } else { - s.d.dropPeer(req.peer.id) - - // If this peer was the master peer, abort sync immediately - s.d.cancelLock.RLock() - master := req.peer.id == s.d.cancelPeer - s.d.cancelLock.RUnlock() - - if master { - s.d.cancel() - return errTimeout - } - } - } - // Process all the received blobs and check for stale delivery - delivered, err := s.process(req) - req.peer.SetNodeDataIdle(delivered, req.delivered) - if err != nil { - log.Warn("Node data write error", "err", err) - return err - } - } - } - return nil -} - -func (s *stateSync) commit(force bool) error { - if !force && s.bytesUncommitted < ethdb.IdealBatchSize { - return nil - } - start := time.Now() - b := s.d.stateDB.NewBatch() - if err := s.sched.Commit(b); err != nil { - return err - } - if err := b.Write(); err != nil { - return fmt.Errorf("DB write error: %v", err) - } - s.updateStats(s.numUncommitted, 0, 0, time.Since(start)) - s.numUncommitted = 0 - s.bytesUncommitted = 0 - return nil -} - -// assignTasks attempts to assign new tasks to all idle peers, either from the -// batch currently being retried, or fetching new data from the trie sync itself. -func (s *stateSync) assignTasks() { - // Iterate over all idle peers and try to assign them state fetches - peers, _ := s.d.peers.NodeDataIdlePeers() - for _, p := range peers { - // Assign a batch of fetches proportional to the estimated latency/bandwidth - cap := p.NodeDataCapacity(s.d.peers.rates.TargetRoundTrip()) - req := &stateReq{peer: p, timeout: s.d.peers.rates.TargetTimeout()} - - nodes, _, codes := s.fillTasks(cap, req) - - // If the peer was assigned tasks to fetch, send the network request - if len(nodes)+len(codes) > 0 { - req.peer.log.Trace("Requesting batch of state data", "nodes", len(nodes), "codes", len(codes), "root", s.root) - select { - case s.d.trackStateReq <- req: - req.peer.FetchNodeData(append(nodes, codes...)) // Unified retrieval under eth/6x - case <-s.cancel: - case <-s.d.cancelCh: - } - } - } -} - -// fillTasks fills the given request object with a maximum of n state download -// tasks to send to the remote peer. -func (s *stateSync) fillTasks(n int, req *stateReq) (nodes []common.Hash, paths []trie.SyncPath, codes []common.Hash) { - // Refill available tasks from the scheduler. - if fill := n - (len(s.trieTasks) + len(s.codeTasks)); fill > 0 { - nodes, paths, codes := s.sched.Missing(fill) - for i, hash := range nodes { - s.trieTasks[hash] = &trieTask{ - path: paths[i], - attempts: make(map[string]struct{}), - } - } - for _, hash := range codes { - s.codeTasks[hash] = &codeTask{ - attempts: make(map[string]struct{}), - } - } - } - // Find tasks that haven't been tried with the request's peer. Prefer code - // over trie nodes as those can be written to disk and forgotten about. - nodes = make([]common.Hash, 0, n) - paths = make([]trie.SyncPath, 0, n) - codes = make([]common.Hash, 0, n) - - req.trieTasks = make(map[common.Hash]*trieTask, n) - req.codeTasks = make(map[common.Hash]*codeTask, n) - - for hash, t := range s.codeTasks { - // Stop when we've gathered enough requests - if len(nodes)+len(codes) == n { - break - } - // Skip any requests we've already tried from this peer - if _, ok := t.attempts[req.peer.id]; ok { - continue - } - // Assign the request to this peer - t.attempts[req.peer.id] = struct{}{} - codes = append(codes, hash) - req.codeTasks[hash] = t - delete(s.codeTasks, hash) - } - for hash, t := range s.trieTasks { - // Stop when we've gathered enough requests - if len(nodes)+len(codes) == n { - break - } - // Skip any requests we've already tried from this peer - if _, ok := t.attempts[req.peer.id]; ok { - continue - } - // Assign the request to this peer - t.attempts[req.peer.id] = struct{}{} - - nodes = append(nodes, hash) - paths = append(paths, t.path) - - req.trieTasks[hash] = t - delete(s.trieTasks, hash) - } - req.nItems = uint16(len(nodes) + len(codes)) - return nodes, paths, codes -} - -// process iterates over a batch of delivered state data, injecting each item -// into a running state sync, re-queuing any items that were requested but not -// delivered. Returns whether the peer actually managed to deliver anything of -// value, and any error that occurred. -func (s *stateSync) process(req *stateReq) (int, error) { - // Collect processing stats and update progress if valid data was received - duplicate, unexpected, successful := 0, 0, 0 - - defer func(start time.Time) { - if duplicate > 0 || unexpected > 0 { - s.updateStats(0, duplicate, unexpected, time.Since(start)) - } - }(time.Now()) - - // Iterate over all the delivered data and inject one-by-one into the trie - for _, blob := range req.response { - hash, err := s.processNodeData(blob) - switch err { - case nil: - s.numUncommitted++ - s.bytesUncommitted += len(blob) - successful++ - case trie.ErrNotRequested: - unexpected++ - case trie.ErrAlreadyProcessed: - duplicate++ - default: - return successful, fmt.Errorf("invalid state node %s: %v", hash.TerminalString(), err) - } - // Delete from both queues (one delivery is enough for the syncer) - delete(req.trieTasks, hash) - delete(req.codeTasks, hash) - } - // Put unfulfilled tasks back into the retry queue - npeers := s.d.peers.Len() - for hash, task := range req.trieTasks { - // If the node did deliver something, missing items may be due to a protocol - // limit or a previous timeout + delayed delivery. Both cases should permit - // the node to retry the missing items (to avoid single-peer stalls). - if len(req.response) > 0 || req.timedOut() { - delete(task.attempts, req.peer.id) - } - // If we've requested the node too many times already, it may be a malicious - // sync where nobody has the right data. Abort. - if len(task.attempts) >= npeers { - return successful, fmt.Errorf("trie node %s failed with all peers (%d tries, %d peers)", hash.TerminalString(), len(task.attempts), npeers) - } - // Missing item, place into the retry queue. - s.trieTasks[hash] = task - } - for hash, task := range req.codeTasks { - // If the node did deliver something, missing items may be due to a protocol - // limit or a previous timeout + delayed delivery. Both cases should permit - // the node to retry the missing items (to avoid single-peer stalls). - if len(req.response) > 0 || req.timedOut() { - delete(task.attempts, req.peer.id) - } - // If we've requested the node too many times already, it may be a malicious - // sync where nobody has the right data. Abort. - if len(task.attempts) >= npeers { - return successful, fmt.Errorf("byte code %s failed with all peers (%d tries, %d peers)", hash.TerminalString(), len(task.attempts), npeers) - } - // Missing item, place into the retry queue. - s.codeTasks[hash] = task - } - return successful, nil -} - -// processNodeData tries to inject a trie node data blob delivered from a remote -// peer into the state trie, returning whether anything useful was written or any -// error occurred. -func (s *stateSync) processNodeData(blob []byte) (common.Hash, error) { - res := trie.SyncResult{Data: blob} - s.keccak.Reset() - s.keccak.Write(blob) - s.keccak.Read(res.Hash[:]) - err := s.sched.Process(res) - return res.Hash, err -} - -// updateStats bumps the various state sync progress counters and displays a log -// message for the user to see. -func (s *stateSync) updateStats(written, duplicate, unexpected int, duration time.Duration) { - s.d.syncStatsLock.Lock() - defer s.d.syncStatsLock.Unlock() - - s.d.syncStatsState.pending = uint64(s.sched.Pending()) - s.d.syncStatsState.processed += uint64(written) - s.d.syncStatsState.duplicate += uint64(duplicate) - s.d.syncStatsState.unexpected += uint64(unexpected) - - if written > 0 || duplicate > 0 || unexpected > 0 { - log.Info("Imported new state entries", "count", written, "elapsed", common.PrettyDuration(duration), "processed", s.d.syncStatsState.processed, "pending", s.d.syncStatsState.pending, "trieretry", len(s.trieTasks), "coderetry", len(s.codeTasks), "duplicate", s.d.syncStatsState.duplicate, "unexpected", s.d.syncStatsState.unexpected) - } - if written > 0 { - rawdb.WriteFastTrieProgress(s.d.stateDB, s.d.syncStatsState.processed) - } -} diff --git a/eth/downloader/testchain_test.go b/eth/downloader/testchain_test.go index b9865f7e03..8b873343ca 100644 --- a/eth/downloader/testchain_test.go +++ b/eth/downloader/testchain_test.go @@ -20,12 +20,14 @@ import ( "fmt" "math/big" "sync" + "time" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/consensus/ethash" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/params" ) @@ -39,73 +41,110 @@ var ( ) // The common prefix of all test chains: -var testChainBase = newTestChain(blockCacheMaxItems+200, testGenesis) +var testChainBase *testChain // Different forks on top of the base chain: var testChainForkLightA, testChainForkLightB, testChainForkHeavy *testChain +var pregenerated bool + func init() { + // Reduce some of the parameters to make the tester faster + fullMaxForkAncestry = 10000 + lightMaxForkAncestry = 10000 + blockCacheMaxItems = 1024 + fsHeaderSafetyNet = 256 + fsHeaderContCheck = 500 * time.Millisecond + + testChainBase = newTestChain(blockCacheMaxItems+200, testGenesis) + var forkLen = int(fullMaxForkAncestry + 50) var wg sync.WaitGroup + + // Generate the test chains to seed the peers with wg.Add(3) go func() { testChainForkLightA = testChainBase.makeFork(forkLen, false, 1); wg.Done() }() go func() { testChainForkLightB = testChainBase.makeFork(forkLen, false, 2); wg.Done() }() go func() { testChainForkHeavy = testChainBase.makeFork(forkLen, true, 3); wg.Done() }() wg.Wait() + + // Generate the test peers used by the tests to avoid overloading during testing. + // These seemingly random chains are used in various downloader tests. We're just + // pre-generating them here. + chains := []*testChain{ + testChainBase, + testChainForkLightA, + testChainForkLightB, + testChainForkHeavy, + testChainBase.shorten(1), + testChainBase.shorten(blockCacheMaxItems - 15), + testChainBase.shorten((blockCacheMaxItems - 15) / 2), + testChainBase.shorten(blockCacheMaxItems - 15 - 5), + testChainBase.shorten(MaxHeaderFetch), + testChainBase.shorten(800), + testChainBase.shorten(800 / 2), + testChainBase.shorten(800 / 3), + testChainBase.shorten(800 / 4), + testChainBase.shorten(800 / 5), + testChainBase.shorten(800 / 6), + testChainBase.shorten(800 / 7), + testChainBase.shorten(800 / 8), + testChainBase.shorten(3*fsHeaderSafetyNet + 256 + fsMinFullBlocks), + testChainBase.shorten(fsMinFullBlocks + 256 - 1), + testChainForkLightA.shorten(len(testChainBase.blocks) + 80), + testChainForkLightB.shorten(len(testChainBase.blocks) + 81), + testChainForkLightA.shorten(len(testChainBase.blocks) + MaxHeaderFetch), + testChainForkLightB.shorten(len(testChainBase.blocks) + MaxHeaderFetch), + testChainForkHeavy.shorten(len(testChainBase.blocks) + 79), + } + wg.Add(len(chains)) + for _, chain := range chains { + go func(blocks []*types.Block) { + newTestBlockchain(blocks) + wg.Done() + }(chain.blocks[1:]) + } + wg.Wait() + + // Mark the chains pregenerated. Generating a new one will lead to a panic. + pregenerated = true } type testChain struct { - genesis *types.Block - chain []common.Hash - headerm map[common.Hash]*types.Header - blockm map[common.Hash]*types.Block - receiptm map[common.Hash][]*types.Receipt - tdm map[common.Hash]*big.Int + blocks []*types.Block } // newTestChain creates a blockchain of the given length. func newTestChain(length int, genesis *types.Block) *testChain { - tc := new(testChain).copy(length) - tc.genesis = genesis - tc.chain = append(tc.chain, genesis.Hash()) - tc.headerm[tc.genesis.Hash()] = tc.genesis.Header() - tc.tdm[tc.genesis.Hash()] = tc.genesis.Difficulty() - tc.blockm[tc.genesis.Hash()] = tc.genesis + tc := &testChain{ + blocks: []*types.Block{genesis}, + } tc.generate(length-1, 0, genesis, false) return tc } // makeFork creates a fork on top of the test chain. func (tc *testChain) makeFork(length int, heavy bool, seed byte) *testChain { - fork := tc.copy(tc.len() + length) - fork.generate(length, seed, tc.headBlock(), heavy) + fork := tc.copy(len(tc.blocks) + length) + fork.generate(length, seed, tc.blocks[len(tc.blocks)-1], heavy) return fork } // shorten creates a copy of the chain with the given length. It panics if the // length is longer than the number of available blocks. func (tc *testChain) shorten(length int) *testChain { - if length > tc.len() { - panic(fmt.Errorf("can't shorten test chain to %d blocks, it's only %d blocks long", length, tc.len())) + if length > len(tc.blocks) { + panic(fmt.Errorf("can't shorten test chain to %d blocks, it's only %d blocks long", length, len(tc.blocks))) } return tc.copy(length) } func (tc *testChain) copy(newlen int) *testChain { - cpy := &testChain{ - genesis: tc.genesis, - headerm: make(map[common.Hash]*types.Header, newlen), - blockm: make(map[common.Hash]*types.Block, newlen), - receiptm: make(map[common.Hash][]*types.Receipt, newlen), - tdm: make(map[common.Hash]*big.Int, newlen), + if newlen > len(tc.blocks) { + newlen = len(tc.blocks) } - for i := 0; i < len(tc.chain) && i < newlen; i++ { - hash := tc.chain[i] - cpy.chain = append(cpy.chain, tc.chain[i]) - cpy.tdm[hash] = tc.tdm[hash] - cpy.blockm[hash] = tc.blockm[hash] - cpy.headerm[hash] = tc.headerm[hash] - cpy.receiptm[hash] = tc.receiptm[hash] + cpy := &testChain{ + blocks: append([]*types.Block{}, tc.blocks[:newlen]...), } return cpy } @@ -115,17 +154,14 @@ func (tc *testChain) copy(newlen int) *testChain { // contains a transaction and every 5th an uncle to allow testing correct block // reassembly. func (tc *testChain) generate(n int, seed byte, parent *types.Block, heavy bool) { - // start := time.Now() - // defer func() { fmt.Printf("test chain generated in %v\n", time.Since(start)) }() - - blocks, receipts := core.GenerateChain(params.TestChainConfig, parent, ethash.NewFaker(), testDB, n, func(i int, block *core.BlockGen) { + blocks, _ := core.GenerateChain(params.TestChainConfig, parent, ethash.NewFaker(), testDB, n, func(i int, block *core.BlockGen) { block.SetCoinbase(common.Address{seed}) // If a heavy chain is requested, delay blocks to raise difficulty if heavy { - block.OffsetTime(-1) + block.OffsetTime(-9) } // Include transactions to the miner to make blocks more interesting. - if parent == tc.genesis && i%22 == 0 { + if parent == tc.blocks[0] && i%22 == 0 { signer := types.MakeSigner(params.TestChainConfig, block.Number()) tx, err := types.SignTx(types.NewTransaction(block.TxNonce(testAddress), common.Address{seed}, big.NewInt(1000), params.TxGas, block.BaseFee(), nil), signer, testKey) if err != nil { @@ -136,95 +172,56 @@ func (tc *testChain) generate(n int, seed byte, parent *types.Block, heavy bool) // if the block number is a multiple of 5, add a bonus uncle to the block if i > 0 && i%5 == 0 { block.AddUncle(&types.Header{ - ParentHash: block.PrevBlock(i - 1).Hash(), + ParentHash: block.PrevBlock(i - 2).Hash(), Number: big.NewInt(block.Number().Int64() - 1), }) } }) + tc.blocks = append(tc.blocks, blocks...) +} - // Convert the block-chain into a hash-chain and header/block maps - td := new(big.Int).Set(tc.td(parent.Hash())) - for i, b := range blocks { - td := td.Add(td, b.Difficulty()) - hash := b.Hash() - tc.chain = append(tc.chain, hash) - tc.blockm[hash] = b - tc.headerm[hash] = b.Header() - tc.receiptm[hash] = receipts[i] - tc.tdm[hash] = new(big.Int).Set(td) +var ( + testBlockchains = make(map[common.Hash]*testBlockchain) + testBlockchainsLock sync.Mutex +) + +type testBlockchain struct { + chain *core.BlockChain + gen sync.Once +} + +// newTestBlockchain creates a blockchain database built by running the given blocks, +// either actually running them, or reusing a previously created one. The returned +// chains are *shared*, so *do not* mutate them. +func newTestBlockchain(blocks []*types.Block) *core.BlockChain { + // Retrieve an existing database, or create a new one + head := testGenesis.Hash() + if len(blocks) > 0 { + head = blocks[len(blocks)-1].Hash() } -} - -// len returns the total number of blocks in the chain. -func (tc *testChain) len() int { - return len(tc.chain) -} - -// headBlock returns the head of the chain. -func (tc *testChain) headBlock() *types.Block { - return tc.blockm[tc.chain[len(tc.chain)-1]] -} - -// td returns the total difficulty of the given block. -func (tc *testChain) td(hash common.Hash) *big.Int { - return tc.tdm[hash] -} - -// headersByHash returns headers in order from the given hash. -func (tc *testChain) headersByHash(origin common.Hash, amount int, skip int, reverse bool) []*types.Header { - num, _ := tc.hashToNumber(origin) - return tc.headersByNumber(num, amount, skip, reverse) -} - -// headersByNumber returns headers from the given number. -func (tc *testChain) headersByNumber(origin uint64, amount int, skip int, reverse bool) []*types.Header { - result := make([]*types.Header, 0, amount) - - if !reverse { - for num := origin; num < uint64(len(tc.chain)) && len(result) < amount; num += uint64(skip) + 1 { - if header, ok := tc.headerm[tc.chain[int(num)]]; ok { - result = append(result, header) - } - } - } else { - for num := int64(origin); num >= 0 && len(result) < amount; num -= int64(skip) + 1 { - if header, ok := tc.headerm[tc.chain[int(num)]]; ok { - result = append(result, header) - } - } + testBlockchainsLock.Lock() + if _, ok := testBlockchains[head]; !ok { + testBlockchains[head] = new(testBlockchain) } - return result -} + tbc := testBlockchains[head] + testBlockchainsLock.Unlock() -// receipts returns the receipts of the given block hashes. -func (tc *testChain) receipts(hashes []common.Hash) [][]*types.Receipt { - results := make([][]*types.Receipt, 0, len(hashes)) - for _, hash := range hashes { - if receipt, ok := tc.receiptm[hash]; ok { - results = append(results, receipt) + // Ensure that the database is generated + tbc.gen.Do(func() { + if pregenerated { + panic("Requested chain generation outside of init") } - } - return results -} + db := rawdb.NewMemoryDatabase() + core.GenesisBlockForTesting(db, testAddress, big.NewInt(1000000000000000)) -// bodies returns the block bodies of the given block hashes. -func (tc *testChain) bodies(hashes []common.Hash) ([][]*types.Transaction, [][]*types.Header) { - transactions := make([][]*types.Transaction, 0, len(hashes)) - uncles := make([][]*types.Header, 0, len(hashes)) - for _, hash := range hashes { - if block, ok := tc.blockm[hash]; ok { - transactions = append(transactions, block.Transactions()) - uncles = append(uncles, block.Uncles()) + chain, err := core.NewBlockChain(db, nil, params.TestChainConfig, ethash.NewFaker(), vm.Config{}, nil, nil) + if err != nil { + panic(err) } - } - return transactions, uncles -} - -func (tc *testChain) hashToNumber(target common.Hash) (uint64, bool) { - for num, hash := range tc.chain { - if hash == target { - return uint64(num), true + if n, err := chain.InsertChain(blocks); err != nil { + panic(fmt.Sprintf("block %d: %v", n, err)) } - } - return 0, false + tbc.chain = chain + }) + return tbc.chain } diff --git a/eth/downloader/types.go b/eth/downloader/types.go deleted file mode 100644 index ff70bfa0e3..0000000000 --- a/eth/downloader/types.go +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2015 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package downloader - -import ( - "fmt" - - "github.com/ethereum/go-ethereum/core/types" -) - -// peerDropFn is a callback type for dropping a peer detected as malicious. -type peerDropFn func(id string) - -// dataPack is a data message returned by a peer for some query. -type dataPack interface { - PeerId() string - Items() int - Stats() string -} - -// headerPack is a batch of block headers returned by a peer. -type headerPack struct { - peerID string - headers []*types.Header -} - -func (p *headerPack) PeerId() string { return p.peerID } -func (p *headerPack) Items() int { return len(p.headers) } -func (p *headerPack) Stats() string { return fmt.Sprintf("%d", len(p.headers)) } - -// bodyPack is a batch of block bodies returned by a peer. -type bodyPack struct { - peerID string - transactions [][]*types.Transaction - uncles [][]*types.Header -} - -func (p *bodyPack) PeerId() string { return p.peerID } -func (p *bodyPack) Items() int { - if len(p.transactions) <= len(p.uncles) { - return len(p.transactions) - } - return len(p.uncles) -} -func (p *bodyPack) Stats() string { return fmt.Sprintf("%d:%d", len(p.transactions), len(p.uncles)) } - -// receiptPack is a batch of receipts returned by a peer. -type receiptPack struct { - peerID string - receipts [][]*types.Receipt -} - -func (p *receiptPack) PeerId() string { return p.peerID } -func (p *receiptPack) Items() int { return len(p.receipts) } -func (p *receiptPack) Stats() string { return fmt.Sprintf("%d", len(p.receipts)) } - -// statePack is a batch of states returned by a peer. -type statePack struct { - peerID string - states [][]byte -} - -func (p *statePack) PeerId() string { return p.peerID } -func (p *statePack) Items() int { return len(p.states) } -func (p *statePack) Stats() string { return fmt.Sprintf("%d", len(p.states)) } diff --git a/eth/ethconfig/config.go b/eth/ethconfig/config.go index de39d7a13a..18f63b8052 100644 --- a/eth/ethconfig/config.go +++ b/eth/ethconfig/config.go @@ -210,12 +210,14 @@ type Config struct { // No heimdall service WithoutHeimdall bool - // Berlin block override (TODO: remove after the fork) - OverrideBerlin *big.Int `toml:",omitempty"` - OverrideLondon *big.Int `toml:",omitempty"` - // Bor logs flag BorLogs bool + + // Arrow Glacier block override (TODO: remove after the fork) + OverrideArrowGlacier *big.Int `toml:",omitempty"` + + // OverrideTerminalTotalDifficulty (TODO: remove after the fork) + OverrideTerminalTotalDifficulty *big.Int `toml:",omitempty"` } // CreateConsensusEngine creates a consensus engine for the given chain configuration. @@ -225,8 +227,31 @@ func CreateConsensusEngine(stack *node.Node, chainConfig *params.ChainConfig, et noverify := ethConfig.Miner.Noverify // If proof-of-authority is requested, set it up + var engine consensus.Engine if chainConfig.Clique != nil { - return clique.New(chainConfig.Clique, db) + engine = clique.New(chainConfig.Clique, db) + } else { + switch config.PowMode { + case ethash.ModeFake: + log.Warn("Ethash used in fake mode") + case ethash.ModeTest: + log.Warn("Ethash used in test mode") + case ethash.ModeShared: + log.Warn("Ethash used in shared mode") + } + engine = ethash.New(ethash.Config{ + PowMode: config.PowMode, + CacheDir: stack.ResolvePath(config.CacheDir), + CachesInMem: config.CachesInMem, + CachesOnDisk: config.CachesOnDisk, + CachesLockMmap: config.CachesLockMmap, + DatasetDir: config.DatasetDir, + DatasetsInMem: config.DatasetsInMem, + DatasetsOnDisk: config.DatasetsOnDisk, + DatasetsLockMmap: config.DatasetsLockMmap, + NotifyFull: config.NotifyFull, + }, notify, noverify) + engine.(*ethash.Ethash).SetThreads(-1) // Disable CPU mining } // If Matic bor consensus is requested, set it up if chainConfig.Bor != nil { @@ -241,7 +266,7 @@ func CreateConsensusEngine(stack *node.Node, chainConfig *params.ChainConfig, et case ethash.ModeShared: log.Warn("Ethash used in shared mode") } - engine := ethash.New(ethash.Config{ + engine = ethash.New(ethash.Config{ PowMode: config.PowMode, CacheDir: stack.ResolvePath(config.CacheDir), CachesInMem: config.CachesInMem, @@ -253,6 +278,7 @@ func CreateConsensusEngine(stack *node.Node, chainConfig *params.ChainConfig, et DatasetsLockMmap: config.DatasetsLockMmap, NotifyFull: config.NotifyFull, }, notify, noverify) - engine.SetThreads(-1) // Disable CPU mining + // TODO - Check this + // engine.SetThreads(-1) // Disable CPU mining return engine } diff --git a/eth/ethconfig/gen_config.go b/eth/ethconfig/gen_config.go index ed4c928508..70a9649bff 100644 --- a/eth/ethconfig/gen_config.go +++ b/eth/ethconfig/gen_config.go @@ -18,48 +18,49 @@ import ( // MarshalTOML marshals as TOML. func (c Config) MarshalTOML() (interface{}, error) { type Config struct { - Genesis *core.Genesis `toml:",omitempty"` - NetworkId uint64 - SyncMode downloader.SyncMode - EthDiscoveryURLs []string - SnapDiscoveryURLs []string - NoPruning bool - NoPrefetch bool - TxLookupLimit uint64 `toml:",omitempty"` - Whitelist map[uint64]common.Hash `toml:"-"` - LightServ int `toml:",omitempty"` - LightIngress int `toml:",omitempty"` - LightEgress int `toml:",omitempty"` - LightPeers int `toml:",omitempty"` - LightNoPrune bool `toml:",omitempty"` - LightNoSyncServe bool `toml:",omitempty"` - SyncFromCheckpoint bool `toml:",omitempty"` - UltraLightServers []string `toml:",omitempty"` - UltraLightFraction int `toml:",omitempty"` - UltraLightOnlyAnnounce bool `toml:",omitempty"` - SkipBcVersionCheck bool `toml:"-"` - DatabaseHandles int `toml:"-"` - DatabaseCache int - DatabaseFreezer string - TrieCleanCache int - TrieCleanCacheJournal string `toml:",omitempty"` - TrieCleanCacheRejournal time.Duration `toml:",omitempty"` - TrieDirtyCache int - TrieTimeout time.Duration - SnapshotCache int - Preimages bool - Miner miner.Config - Ethash ethash.Config - TxPool core.TxPoolConfig - GPO gasprice.Config - EnablePreimageRecording bool - DocRoot string `toml:"-"` - RPCGasCap uint64 - RPCEVMTimeout time.Duration - RPCTxFeeCap float64 - Checkpoint *params.TrustedCheckpoint `toml:",omitempty"` - CheckpointOracle *params.CheckpointOracleConfig `toml:",omitempty"` - OverrideLondon *big.Int `toml:",omitempty"` + Genesis *core.Genesis `toml:",omitempty"` + NetworkId uint64 + SyncMode downloader.SyncMode + EthDiscoveryURLs []string + SnapDiscoveryURLs []string + NoPruning bool + NoPrefetch bool + TxLookupLimit uint64 `toml:",omitempty"` + Whitelist map[uint64]common.Hash `toml:"-"` + LightServ int `toml:",omitempty"` + LightIngress int `toml:",omitempty"` + LightEgress int `toml:",omitempty"` + LightPeers int `toml:",omitempty"` + LightNoPrune bool `toml:",omitempty"` + LightNoSyncServe bool `toml:",omitempty"` + SyncFromCheckpoint bool `toml:",omitempty"` + UltraLightServers []string `toml:",omitempty"` + UltraLightFraction int `toml:",omitempty"` + UltraLightOnlyAnnounce bool `toml:",omitempty"` + SkipBcVersionCheck bool `toml:"-"` + DatabaseHandles int `toml:"-"` + DatabaseCache int + DatabaseFreezer string + TrieCleanCache int + TrieCleanCacheJournal string `toml:",omitempty"` + TrieCleanCacheRejournal time.Duration `toml:",omitempty"` + TrieDirtyCache int + TrieTimeout time.Duration + SnapshotCache int + Preimages bool + Miner miner.Config + Ethash ethash.Config + TxPool core.TxPoolConfig + GPO gasprice.Config + EnablePreimageRecording bool + DocRoot string `toml:"-"` + RPCGasCap uint64 + RPCEVMTimeout time.Duration + RPCTxFeeCap float64 + Checkpoint *params.TrustedCheckpoint `toml:",omitempty"` + CheckpointOracle *params.CheckpointOracleConfig `toml:",omitempty"` + OverrideArrowGlacier *big.Int `toml:",omitempty"` + OverrideTerminalTotalDifficulty *big.Int `toml:",omitempty"` } var enc Config enc.Genesis = c.Genesis @@ -103,55 +104,57 @@ func (c Config) MarshalTOML() (interface{}, error) { enc.RPCTxFeeCap = c.RPCTxFeeCap enc.Checkpoint = c.Checkpoint enc.CheckpointOracle = c.CheckpointOracle - enc.OverrideLondon = c.OverrideLondon + enc.OverrideArrowGlacier = c.OverrideArrowGlacier + enc.OverrideTerminalTotalDifficulty = c.OverrideTerminalTotalDifficulty return &enc, nil } // UnmarshalTOML unmarshals from TOML. func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error { type Config struct { - Genesis *core.Genesis `toml:",omitempty"` - NetworkId *uint64 - SyncMode *downloader.SyncMode - EthDiscoveryURLs []string - SnapDiscoveryURLs []string - NoPruning *bool - NoPrefetch *bool - TxLookupLimit *uint64 `toml:",omitempty"` - Whitelist map[uint64]common.Hash `toml:"-"` - LightServ *int `toml:",omitempty"` - LightIngress *int `toml:",omitempty"` - LightEgress *int `toml:",omitempty"` - LightPeers *int `toml:",omitempty"` - LightNoPrune *bool `toml:",omitempty"` - LightNoSyncServe *bool `toml:",omitempty"` - SyncFromCheckpoint *bool `toml:",omitempty"` - UltraLightServers []string `toml:",omitempty"` - UltraLightFraction *int `toml:",omitempty"` - UltraLightOnlyAnnounce *bool `toml:",omitempty"` - SkipBcVersionCheck *bool `toml:"-"` - DatabaseHandles *int `toml:"-"` - DatabaseCache *int - DatabaseFreezer *string - TrieCleanCache *int - TrieCleanCacheJournal *string `toml:",omitempty"` - TrieCleanCacheRejournal *time.Duration `toml:",omitempty"` - TrieDirtyCache *int - TrieTimeout *time.Duration - SnapshotCache *int - Preimages *bool - Miner *miner.Config - Ethash *ethash.Config - TxPool *core.TxPoolConfig - GPO *gasprice.Config - EnablePreimageRecording *bool - DocRoot *string `toml:"-"` - RPCGasCap *uint64 - RPCEVMTimeout *time.Duration - RPCTxFeeCap *float64 - Checkpoint *params.TrustedCheckpoint `toml:",omitempty"` - CheckpointOracle *params.CheckpointOracleConfig `toml:",omitempty"` - OverrideLondon *big.Int `toml:",omitempty"` + Genesis *core.Genesis `toml:",omitempty"` + NetworkId *uint64 + SyncMode *downloader.SyncMode + EthDiscoveryURLs []string + SnapDiscoveryURLs []string + NoPruning *bool + NoPrefetch *bool + TxLookupLimit *uint64 `toml:",omitempty"` + Whitelist map[uint64]common.Hash `toml:"-"` + LightServ *int `toml:",omitempty"` + LightIngress *int `toml:",omitempty"` + LightEgress *int `toml:",omitempty"` + LightPeers *int `toml:",omitempty"` + LightNoPrune *bool `toml:",omitempty"` + LightNoSyncServe *bool `toml:",omitempty"` + SyncFromCheckpoint *bool `toml:",omitempty"` + UltraLightServers []string `toml:",omitempty"` + UltraLightFraction *int `toml:",omitempty"` + UltraLightOnlyAnnounce *bool `toml:",omitempty"` + SkipBcVersionCheck *bool `toml:"-"` + DatabaseHandles *int `toml:"-"` + DatabaseCache *int + DatabaseFreezer *string + TrieCleanCache *int + TrieCleanCacheJournal *string `toml:",omitempty"` + TrieCleanCacheRejournal *time.Duration `toml:",omitempty"` + TrieDirtyCache *int + TrieTimeout *time.Duration + SnapshotCache *int + Preimages *bool + Miner *miner.Config + Ethash *ethash.Config + TxPool *core.TxPoolConfig + GPO *gasprice.Config + EnablePreimageRecording *bool + DocRoot *string `toml:"-"` + RPCGasCap *uint64 + RPCEVMTimeout *time.Duration + RPCTxFeeCap *float64 + Checkpoint *params.TrustedCheckpoint `toml:",omitempty"` + CheckpointOracle *params.CheckpointOracleConfig `toml:",omitempty"` + OverrideArrowGlacier *big.Int `toml:",omitempty"` + OverrideTerminalTotalDifficulty *big.Int `toml:",omitempty"` } var dec Config if err := unmarshal(&dec); err != nil { @@ -280,8 +283,11 @@ func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error { if dec.CheckpointOracle != nil { c.CheckpointOracle = dec.CheckpointOracle } - if dec.OverrideLondon != nil { - c.OverrideLondon = dec.OverrideLondon + if dec.OverrideArrowGlacier != nil { + c.OverrideArrowGlacier = dec.OverrideArrowGlacier + } + if dec.OverrideTerminalTotalDifficulty != nil { + c.OverrideTerminalTotalDifficulty = dec.OverrideTerminalTotalDifficulty } return nil } diff --git a/eth/fetcher/block_fetcher.go b/eth/fetcher/block_fetcher.go index 45983c97ce..247d0eac67 100644 --- a/eth/fetcher/block_fetcher.go +++ b/eth/fetcher/block_fetcher.go @@ -26,6 +26,7 @@ import ( "github.com/ethereum/go-ethereum/common/prque" "github.com/ethereum/go-ethereum/consensus" "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/eth/protocols/eth" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/metrics" "github.com/ethereum/go-ethereum/trie" @@ -74,10 +75,10 @@ type HeaderRetrievalFn func(common.Hash) *types.Header type blockRetrievalFn func(common.Hash) *types.Block // headerRequesterFn is a callback type for sending a header retrieval request. -type headerRequesterFn func(common.Hash) error +type headerRequesterFn func(common.Hash, chan *eth.Response) (*eth.Request, error) // bodyRequesterFn is a callback type for sending a body retrieval request. -type bodyRequesterFn func([]common.Hash) error +type bodyRequesterFn func([]common.Hash, chan *eth.Response) (*eth.Request, error) // headerVerifierFn is a callback type to verify a block's header for fast propagation. type headerVerifierFn func(header *types.Header) error @@ -391,13 +392,14 @@ func (f *BlockFetcher) loop() { blockAnnounceDOSMeter.Mark(1) break } + if notification.number == 0 { + break + } // If we have a valid block number, check that it's potentially useful - if notification.number > 0 { - if dist := int64(notification.number) - int64(f.chainHeight()); dist < -maxUncleDist || dist > maxQueueDist { - log.Debug("Peer discarded announcement", "peer", notification.origin, "number", notification.number, "hash", notification.hash, "distance", dist) - blockAnnounceDropMeter.Mark(1) - break - } + if dist := int64(notification.number) - int64(f.chainHeight()); dist < -maxUncleDist || dist > maxQueueDist { + log.Debug("Peer discarded announcement", "peer", notification.origin, "number", notification.number, "hash", notification.hash, "distance", dist) + blockAnnounceDropMeter.Mark(1) + break } // All is well, schedule the announce if block's not yet downloading if _, ok := f.fetching[notification.hash]; ok { @@ -460,15 +462,28 @@ func (f *BlockFetcher) loop() { // Create a closure of the fetch and schedule in on a new thread fetchHeader, hashes := f.fetching[hashes[0]].fetchHeader, hashes - go func() { + go func(peer string) { if f.fetchingHook != nil { f.fetchingHook(hashes) } for _, hash := range hashes { headerFetchMeter.Mark(1) - fetchHeader(hash) // Suboptimal, but protocol doesn't allow batch header retrievals + go func(hash common.Hash) { + resCh := make(chan *eth.Response) + + req, err := fetchHeader(hash, resCh) + if err != nil { + return // Legacy code, yolo + } + defer req.Close() + + res := <-resCh + res.Done <- nil + + f.FilterHeaders(peer, *res.Res.(*eth.BlockHeadersPacket), time.Now().Add(res.Time)) + }(hash) } - }() + }(peer) } // Schedule the next fetch if blocks are still pending f.rescheduleFetch(fetchTimer) @@ -496,8 +511,24 @@ func (f *BlockFetcher) loop() { if f.completingHook != nil { f.completingHook(hashes) } + fetchBodies := f.completing[hashes[0]].fetchBodies bodyFetchMeter.Mark(int64(len(hashes))) - go f.completing[hashes[0]].fetchBodies(hashes) + + go func(peer string, hashes []common.Hash) { + resCh := make(chan *eth.Response) + + req, err := fetchBodies(hashes, resCh) + if err != nil { + return // Legacy code, yolo + } + defer req.Close() + + res := <-resCh + res.Done <- nil + + txs, uncles := res.Res.(*eth.BlockBodiesPacket).Unpack() + f.FilterBodies(peer, txs, uncles, time.Now()) + }(peer, hashes) } // Schedule the next fetch if blocks are still pending f.rescheduleComplete(completeTimer) diff --git a/eth/fetcher/block_fetcher_test.go b/eth/fetcher/block_fetcher_test.go index b6d1125b56..628a565042 100644 --- a/eth/fetcher/block_fetcher_test.go +++ b/eth/fetcher/block_fetcher_test.go @@ -30,6 +30,7 @@ import ( "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/eth/protocols/eth" "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/trie" ) @@ -60,8 +61,8 @@ func makeChain(n int, seed byte, parent *types.Block) ([]common.Hash, map[common block.AddTx(tx) } // If the block number is a multiple of 5, add a bonus uncle to the block - if i%5 == 0 { - block.AddUncle(&types.Header{ParentHash: block.PrevBlock(i - 1).Hash(), Number: big.NewInt(int64(i - 1))}) + if i > 0 && i%5 == 0 { + block.AddUncle(&types.Header{ParentHash: block.PrevBlock(i - 2).Hash(), Number: big.NewInt(int64(i - 1))}) } }) hashes := make([]common.Hash, n+1) @@ -195,16 +196,26 @@ func (f *fetcherTester) makeHeaderFetcher(peer string, blocks map[common.Hash]*t closure[hash] = block } // Create a function that return a header from the closure - return func(hash common.Hash) error { + return func(hash common.Hash, sink chan *eth.Response) (*eth.Request, error) { // Gather the blocks to return headers := make([]*types.Header, 0, 1) if block, ok := closure[hash]; ok { headers = append(headers, block.Header()) } // Return on a new thread - go f.fetcher.FilterHeaders(peer, headers, time.Now().Add(drift)) - - return nil + req := ð.Request{ + Peer: peer, + } + res := ð.Response{ + Req: req, + Res: (*eth.BlockHeadersPacket)(&headers), + Time: drift, + Done: make(chan error, 1), // Ignore the returned status + } + go func() { + sink <- res + }() + return req, nil } } @@ -215,7 +226,7 @@ func (f *fetcherTester) makeBodyFetcher(peer string, blocks map[common.Hash]*typ closure[hash] = block } // Create a function that returns blocks from the closure - return func(hashes []common.Hash) error { + return func(hashes []common.Hash, sink chan *eth.Response) (*eth.Request, error) { // Gather the block bodies to return transactions := make([][]*types.Transaction, 0, len(hashes)) uncles := make([][]*types.Header, 0, len(hashes)) @@ -227,14 +238,33 @@ func (f *fetcherTester) makeBodyFetcher(peer string, blocks map[common.Hash]*typ } } // Return on a new thread - go f.fetcher.FilterBodies(peer, transactions, uncles, time.Now().Add(drift)) - - return nil + bodies := make([]*eth.BlockBody, len(transactions)) + for i, txs := range transactions { + bodies[i] = ð.BlockBody{ + Transactions: txs, + Uncles: uncles[i], + } + } + req := ð.Request{ + Peer: peer, + } + res := ð.Response{ + Req: req, + Res: (*eth.BlockBodiesPacket)(&bodies), + Time: drift, + Done: make(chan error, 1), // Ignore the returned status + } + go func() { + sink <- res + }() + return req, nil } } // verifyFetchingEvent verifies that one single event arrive on a fetching channel. func verifyFetchingEvent(t *testing.T, fetching chan []common.Hash, arrive bool) { + t.Helper() + if arrive { select { case <-fetching: @@ -252,6 +282,8 @@ func verifyFetchingEvent(t *testing.T, fetching chan []common.Hash, arrive bool) // verifyCompletingEvent verifies that one single event arrive on an completing channel. func verifyCompletingEvent(t *testing.T, completing chan []common.Hash, arrive bool) { + t.Helper() + if arrive { select { case <-completing: @@ -269,6 +301,8 @@ func verifyCompletingEvent(t *testing.T, completing chan []common.Hash, arrive b // verifyImportEvent verifies that one single event arrive on an import channel. func verifyImportEvent(t *testing.T, imported chan interface{}, arrive bool) { + t.Helper() + if arrive { select { case <-imported: @@ -287,6 +321,8 @@ func verifyImportEvent(t *testing.T, imported chan interface{}, arrive bool) { // verifyImportCount verifies that exactly count number of events arrive on an // import hook channel. func verifyImportCount(t *testing.T, imported chan interface{}, count int) { + t.Helper() + for i := 0; i < count; i++ { select { case <-imported: @@ -299,6 +335,8 @@ func verifyImportCount(t *testing.T, imported chan interface{}, count int) { // verifyImportDone verifies that no more events are arriving on an import channel. func verifyImportDone(t *testing.T, imported chan interface{}) { + t.Helper() + select { case <-imported: t.Fatalf("extra block imported") @@ -308,6 +346,8 @@ func verifyImportDone(t *testing.T, imported chan interface{}) { // verifyChainHeight verifies the chain height is as expected. func verifyChainHeight(t *testing.T, fetcher *fetcherTester, height uint64) { + t.Helper() + if fetcher.chainHeight() != height { t.Fatalf("chain height mismatch, got %d, want %d", fetcher.chainHeight(), height) } @@ -368,13 +408,13 @@ func testConcurrentAnnouncements(t *testing.T, light bool) { secondBodyFetcher := tester.makeBodyFetcher("second", blocks, 0) counter := uint32(0) - firstHeaderWrapper := func(hash common.Hash) error { + firstHeaderWrapper := func(hash common.Hash, sink chan *eth.Response) (*eth.Request, error) { atomic.AddUint32(&counter, 1) - return firstHeaderFetcher(hash) + return firstHeaderFetcher(hash, sink) } - secondHeaderWrapper := func(hash common.Hash) error { + secondHeaderWrapper := func(hash common.Hash, sink chan *eth.Response) (*eth.Request, error) { atomic.AddUint32(&counter, 1) - return secondHeaderFetcher(hash) + return secondHeaderFetcher(hash, sink) } // Iteratively announce blocks until all are imported imported := make(chan interface{}) @@ -468,15 +508,20 @@ func testPendingDeduplication(t *testing.T, light bool) { delay := 50 * time.Millisecond counter := uint32(0) - headerWrapper := func(hash common.Hash) error { + headerWrapper := func(hash common.Hash, sink chan *eth.Response) (*eth.Request, error) { atomic.AddUint32(&counter, 1) // Simulate a long running fetch - go func() { - time.Sleep(delay) - headerFetcher(hash) - }() - return nil + resink := make(chan *eth.Response) + req, err := headerFetcher(hash, resink) + if err == nil { + go func() { + res := <-resink + time.Sleep(delay) + sink <- res + }() + } + return req, err } checkNonExist := func() bool { return tester.getBlock(hashes[0]) == nil diff --git a/eth/fetcher/tx_fetcher.go b/eth/fetcher/tx_fetcher.go index 3ba7753916..b10c0db9ee 100644 --- a/eth/fetcher/tx_fetcher.go +++ b/eth/fetcher/tx_fetcher.go @@ -18,6 +18,7 @@ package fetcher import ( "bytes" + "errors" "fmt" mrand "math/rand" "sort" @@ -277,29 +278,27 @@ func (f *TxFetcher) Enqueue(peer string, txs []*types.Transaction, direct bool) ) errs := f.addTxs(txs) for i, err := range errs { - if err != nil { - // Track the transaction hash if the price is too low for us. - // Avoid re-request this transaction when we receive another - // announcement. - if err == core.ErrUnderpriced || err == core.ErrReplaceUnderpriced { - for f.underpriced.Cardinality() >= maxTxUnderpricedSetSize { - f.underpriced.Pop() - } - f.underpriced.Add(txs[i].Hash()) + // Track the transaction hash if the price is too low for us. + // Avoid re-request this transaction when we receive another + // announcement. + if errors.Is(err, core.ErrUnderpriced) || errors.Is(err, core.ErrReplaceUnderpriced) { + for f.underpriced.Cardinality() >= maxTxUnderpricedSetSize { + f.underpriced.Pop() } - // Track a few interesting failure types - switch err { - case nil: // Noop, but need to handle to not count these + f.underpriced.Add(txs[i].Hash()) + } + // Track a few interesting failure types + switch { + case err == nil: // Noop, but need to handle to not count these - case core.ErrAlreadyKnown: - duplicate++ + case errors.Is(err, core.ErrAlreadyKnown): + duplicate++ - case core.ErrUnderpriced, core.ErrReplaceUnderpriced: - underpriced++ + case errors.Is(err, core.ErrUnderpriced) || errors.Is(err, core.ErrReplaceUnderpriced): + underpriced++ - default: - otherreject++ - } + default: + otherreject++ } added = append(added, txs[i].Hash()) } diff --git a/eth/filters/api.go b/eth/filters/api.go index 63e7f98e55..ce454ed265 100644 --- a/eth/filters/api.go +++ b/eth/filters/api.go @@ -29,7 +29,6 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/event" "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rpc" @@ -52,7 +51,6 @@ type PublicFilterAPI struct { backend Backend mux *event.TypeMux quit chan struct{} - chainDb ethdb.Database events *EventSystem filtersMu sync.Mutex filters map[rpc.ID]*filter @@ -66,7 +64,6 @@ type PublicFilterAPI struct { func NewPublicFilterAPI(backend Backend, lightMode bool, timeout time.Duration, borLogs bool) *PublicFilterAPI { api := &PublicFilterAPI{ backend: backend, - chainDb: backend.ChainDb(), events: NewEventSystem(backend, lightMode), filters: make(map[rpc.ID]*filter), timeout: timeout, diff --git a/eth/filters/bench_test.go b/eth/filters/bench_test.go index 020db070e5..9632f4195f 100644 --- a/eth/filters/bench_test.go +++ b/eth/filters/bench_test.go @@ -62,6 +62,7 @@ func BenchmarkBloomBits32k(b *testing.B) { const benchFilterCnt = 2000 func benchmarkBloomBits(b *testing.B, sectionSize uint64) { + b.Skip("test disabled: this tests presume (and modify) an existing datadir.") benchDataDir := node.DefaultDataDir() + "/geth/chaindata" b.Log("Running bloombits benchmark section size:", sectionSize) @@ -155,6 +156,7 @@ func clearBloomBits(db ethdb.Database) { } func BenchmarkNoBloomBits(b *testing.B) { + b.Skip("test disabled: this tests presume (and modify) an existing datadir.") benchDataDir := node.DefaultDataDir() + "/geth/chaindata" b.Log("Running benchmark without bloombits") db, err := rawdb.NewLevelDBDatabase(benchDataDir, 128, 1024, "", false) diff --git a/eth/filters/filter_test.go b/eth/filters/filter_test.go index fd25013cc6..63a48f762d 100644 --- a/eth/filters/filter_test.go +++ b/eth/filters/filter_test.go @@ -65,15 +65,19 @@ func BenchmarkFilters(b *testing.B) { case 2403: receipt := makeReceipt(addr1) gen.AddUncheckedReceipt(receipt) + gen.AddUncheckedTx(types.NewTransaction(999, common.HexToAddress("0x999"), big.NewInt(999), 999, gen.BaseFee(), nil)) case 1034: receipt := makeReceipt(addr2) gen.AddUncheckedReceipt(receipt) + gen.AddUncheckedTx(types.NewTransaction(999, common.HexToAddress("0x999"), big.NewInt(999), 999, gen.BaseFee(), nil)) case 34: receipt := makeReceipt(addr3) gen.AddUncheckedReceipt(receipt) + gen.AddUncheckedTx(types.NewTransaction(999, common.HexToAddress("0x999"), big.NewInt(999), 999, gen.BaseFee(), nil)) case 99999: receipt := makeReceipt(addr4) gen.AddUncheckedReceipt(receipt) + gen.AddUncheckedTx(types.NewTransaction(999, common.HexToAddress("0x999"), big.NewInt(999), 999, gen.BaseFee(), nil)) } }) diff --git a/eth/gasprice/gasprice.go b/eth/gasprice/gasprice.go index 0fa6c29591..798ffd1841 100644 --- a/eth/gasprice/gasprice.go +++ b/eth/gasprice/gasprice.go @@ -87,8 +87,7 @@ func NewOracle(backend OracleBackend, params Config) *Oracle { if percent < 0 { percent = 0 log.Warn("Sanitizing invalid gasprice oracle sample percentile", "provided", params.Percentile, "updated", percent) - } - if percent > 100 { + } else if percent > 100 { percent = 100 log.Warn("Sanitizing invalid gasprice oracle sample percentile", "provided", params.Percentile, "updated", percent) } @@ -104,6 +103,16 @@ func NewOracle(backend OracleBackend, params Config) *Oracle { } else if ignorePrice.Int64() > 0 { log.Info("Gasprice oracle is ignoring threshold set", "threshold", ignorePrice) } + maxHeaderHistory := params.MaxHeaderHistory + if maxHeaderHistory < 1 { + maxHeaderHistory = 1 + log.Warn("Sanitizing invalid gasprice oracle max header history", "provided", params.MaxHeaderHistory, "updated", maxHeaderHistory) + } + maxBlockHistory := params.MaxBlockHistory + if maxBlockHistory < 1 { + maxBlockHistory = 1 + log.Warn("Sanitizing invalid gasprice oracle max block history", "provided", params.MaxBlockHistory, "updated", maxBlockHistory) + } cache, _ := lru.New(2048) @@ -114,8 +123,8 @@ func NewOracle(backend OracleBackend, params Config) *Oracle { ignorePrice: ignorePrice, checkBlocks: blocks, percentile: percent, - maxHeaderHistory: params.MaxHeaderHistory, - maxBlockHistory: params.MaxBlockHistory, + maxHeaderHistory: maxHeaderHistory, + maxBlockHistory: maxBlockHistory, historyCache: cache, } } diff --git a/eth/gasprice/gasprice_test.go b/eth/gasprice/gasprice_test.go index 1e249ae14b..c0d3c6b603 100644 --- a/eth/gasprice/gasprice_test.go +++ b/eth/gasprice/gasprice_test.go @@ -107,10 +107,13 @@ func newTestBackend(t *testing.T, londonBlock *big.Int, pending bool) *testBacke signer = types.LatestSigner(gspec.Config) ) config.LondonBlock = londonBlock + config.ArrowGlacierBlock = londonBlock engine := ethash.NewFaker() db := rawdb.NewMemoryDatabase() - genesis, _ := gspec.Commit(db) - + genesis, err := gspec.Commit(db) + if err != nil { + t.Fatal(err) + } // Generate testing blocks blocks, _ := core.GenerateChain(gspec.Config, genesis, engine, db, testHead+1, func(i int, b *core.BlockGen) { b.SetCoinbase(common.Address{1}) @@ -141,7 +144,7 @@ func newTestBackend(t *testing.T, londonBlock *big.Int, pending bool) *testBacke // Construct testing chain diskdb := rawdb.NewMemoryDatabase() gspec.Commit(diskdb) - chain, err := core.NewBlockChain(diskdb, &core.CacheConfig{TrieCleanNoPrefetch: true}, &config, engine, vm.Config{}, nil, nil) + chain, err := core.NewBlockChain(diskdb, &core.CacheConfig{TrieCleanNoPrefetch: true}, gspec.Config, engine, vm.Config{}, nil, nil) if err != nil { t.Fatalf("Failed to create local chain, %v", err) } diff --git a/eth/handler.go b/eth/handler.go index 41d89c5fb0..55ca869c77 100644 --- a/eth/handler.go +++ b/eth/handler.go @@ -25,6 +25,8 @@ import ( "time" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/consensus" + "github.com/ethereum/go-ethereum/consensus/beacon" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/forkid" "github.com/ethereum/go-ethereum/core/types" @@ -37,7 +39,6 @@ import ( "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/p2p" "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/trie" ) const ( @@ -79,9 +80,10 @@ type handlerConfig struct { Database ethdb.Database // Database for direct sync insertions Chain *core.BlockChain // Blockchain to serve data from TxPool txPool // Transaction pool to propagate from + Merger *consensus.Merger // The manager for eth1/2 transition Network uint64 // Network identifier to adfvertise - Sync downloader.SyncMode // Whether to fast or full sync - BloomCache uint64 // Megabytes to alloc for fast sync bloom + Sync downloader.SyncMode // Whether to snap or full sync + BloomCache uint64 // Megabytes to alloc for snap sync bloom EventMux *event.TypeMux // Legacy event mux, deprecate for `feed` Checkpoint *params.TrustedCheckpoint // Hard coded checkpoint for sync challenges Whitelist map[uint64]common.Hash // Hard coded whitelist for sync challenged @@ -91,8 +93,7 @@ type handler struct { networkID uint64 forkFilter forkid.Filter // Fork ID filter, constant across the lifetime of the node - fastSync uint32 // Flag whether fast sync is enabled (gets disabled if we already have blocks) - snapSync uint32 // Flag whether fast sync should operate on top of the snap protocol + snapSync uint32 // Flag whether snap sync is enabled (gets disabled if we already have blocks) acceptTxs uint32 // Flag whether we're considered synchronised (enables transaction processing) checkpointNumber uint64 // Block number for the sync progress validator to cross reference @@ -104,10 +105,10 @@ type handler struct { maxPeers int downloader *downloader.Downloader - stateBloom *trie.SyncBloom blockFetcher *fetcher.BlockFetcher txFetcher *fetcher.TxFetcher peers *peerSet + merger *consensus.Merger eventMux *event.TypeMux txsCh chan core.NewTxsEvent @@ -138,33 +139,31 @@ func newHandler(config *handlerConfig) (*handler, error) { txpool: config.TxPool, chain: config.Chain, peers: newPeerSet(), + merger: config.Merger, whitelist: config.Whitelist, quitSync: make(chan struct{}), } if config.Sync == downloader.FullSync { - // The database seems empty as the current block is the genesis. Yet the fast - // block is ahead, so fast sync was enabled for this node at a certain point. + // The database seems empty as the current block is the genesis. Yet the snap + // block is ahead, so snap sync was enabled for this node at a certain point. // The scenarios where this can happen is - // * if the user manually (or via a bad block) rolled back a fast sync node + // * if the user manually (or via a bad block) rolled back a snap sync node // below the sync point. - // * the last fast sync is not finished while user specifies a full sync this + // * the last snap sync is not finished while user specifies a full sync this // time. But we don't have any recent state for full sync. - // In these cases however it's safe to reenable fast sync. + // In these cases however it's safe to reenable snap sync. fullBlock, fastBlock := h.chain.CurrentBlock(), h.chain.CurrentFastBlock() if fullBlock.NumberU64() == 0 && fastBlock.NumberU64() > 0 { - h.fastSync = uint32(1) - log.Warn("Switch sync mode from full sync to fast sync") + h.snapSync = uint32(1) + log.Warn("Switch sync mode from full sync to snap sync") } } else { if h.chain.CurrentBlock().NumberU64() > 0 { - // Print warning log if database is not empty to run fast sync. - log.Warn("Switch sync mode from fast sync to full sync") + // Print warning log if database is not empty to run snap sync. + log.Warn("Switch sync mode from snap sync to full sync") } else { - // If fast sync was requested and our database is empty, grant it - h.fastSync = uint32(1) - if config.Sync == downloader.SnapSync { - h.snapSync = uint32(1) - } + // If snap sync was requested and our database is empty, grant it + h.snapSync = uint32(1) } } // If we have trusted checkpoints, enforce them on the chain @@ -172,26 +171,48 @@ func newHandler(config *handlerConfig) (*handler, error) { h.checkpointNumber = (config.Checkpoint.SectionIndex+1)*params.CHTFrequency - 1 h.checkpointHash = config.Checkpoint.SectionHead } - // Construct the downloader (long sync) and its backing state bloom if fast + // Construct the downloader (long sync) and its backing state bloom if snap // sync is requested. The downloader is responsible for deallocating the state // bloom when it's done. - // Note: we don't enable it if snap-sync is performed, since it's very heavy - // and the heal-portion of the snap sync is much lighter than fast. What we particularly - // want to avoid, is a 90%-finished (but restarted) snap-sync to begin - // indexing the entire trie - if atomic.LoadUint32(&h.fastSync) == 1 && atomic.LoadUint32(&h.snapSync) == 0 { - h.stateBloom = trie.NewSyncBloom(config.BloomCache, config.Database) - } - h.downloader = downloader.New(h.checkpointNumber, config.Database, h.stateBloom, h.eventMux, h.chain, nil, h.removePeer) + h.downloader = downloader.New(h.checkpointNumber, config.Database, h.eventMux, h.chain, nil, h.removePeer) // Construct the fetcher (short sync) validator := func(header *types.Header) error { + // All the block fetcher activities should be disabled + // after the transition. Print the warning log. + if h.merger.PoSFinalized() { + log.Warn("Unexpected validation activity", "hash", header.Hash(), "number", header.Number) + return errors.New("unexpected behavior after transition") + } + // Reject all the PoS style headers in the first place. No matter + // the chain has finished the transition or not, the PoS headers + // should only come from the trusted consensus layer instead of + // p2p network. + if beacon, ok := h.chain.Engine().(*beacon.Beacon); ok { + if beacon.IsPoSHeader(header) { + return errors.New("unexpected post-merge header") + } + } return h.chain.Engine().VerifyHeader(h.chain, header, true) } heighter := func() uint64 { return h.chain.CurrentBlock().NumberU64() } inserter := func(blocks types.Blocks) (int, error) { + // All the block fetcher activities should be disabled + // after the transition. Print the warning log. + if h.merger.PoSFinalized() { + var ctx []interface{} + ctx = append(ctx, "blocks", len(blocks)) + if len(blocks) > 0 { + ctx = append(ctx, "firsthash", blocks[0].Hash()) + ctx = append(ctx, "firstnumber", blocks[0].Number()) + ctx = append(ctx, "lasthash", blocks[len(blocks)-1].Hash()) + ctx = append(ctx, "lastnumber", blocks[len(blocks)-1].Number()) + } + log.Warn("Unexpected insertion activity", ctx...) + return 0, errors.New("unexpected behavior after transition") + } // If sync hasn't reached the checkpoint yet, deny importing weird blocks. // // Ideally we would also compare the head block's timestamp and similarly reject @@ -202,15 +223,38 @@ func newHandler(config *handlerConfig) (*handler, error) { log.Warn("Unsynced yet, discarded propagated block", "number", blocks[0].Number(), "hash", blocks[0].Hash()) return 0, nil } - // If fast sync is running, deny importing weird blocks. This is a problematic - // clause when starting up a new network, because fast-syncing miners might not + // If snap sync is running, deny importing weird blocks. This is a problematic + // clause when starting up a new network, because snap-syncing miners might not // accept each others' blocks until a restart. Unfortunately we haven't figured // out a way yet where nodes can decide unilaterally whether the network is new // or not. This should be fixed if we figure out a solution. - if atomic.LoadUint32(&h.fastSync) == 1 { + if atomic.LoadUint32(&h.snapSync) == 1 { log.Warn("Fast syncing, discarded propagated block", "number", blocks[0].Number(), "hash", blocks[0].Hash()) return 0, nil } + if h.merger.TDDReached() { + // The blocks from the p2p network is regarded as untrusted + // after the transition. In theory block gossip should be disabled + // entirely whenever the transition is started. But in order to + // handle the transition boundary reorg in the consensus-layer, + // the legacy blocks are still accepted, but only for the terminal + // pow blocks. Spec: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-3675.md#halt-the-importing-of-pow-blocks + for i, block := range blocks { + ptd := h.chain.GetTd(block.ParentHash(), block.NumberU64()-1) + if ptd == nil { + return 0, nil + } + td := new(big.Int).Add(ptd, block.Difficulty()) + if !h.chain.Config().IsTerminalPoWBlock(ptd, td) { + log.Info("Filtered out non-termimal pow block", "number", block.NumberU64(), "hash", block.Hash()) + return 0, nil + } + if err := h.chain.InsertBlockWithoutSetHead(block); err != nil { + return i, err + } + } + return 0, nil + } n, err := h.chain.InsertChain(blocks) if err == nil { atomic.StoreUint32(&h.acceptTxs, 1) // Mark initial sync done on any fetcher import @@ -308,30 +352,93 @@ func (h *handler) runEthPeer(peer *eth.Peer, handler eth.Handler) error { // after this will be sent via broadcasts. h.syncTransactions(peer) + // Create a notification channel for pending requests if the peer goes down + dead := make(chan struct{}) + defer close(dead) + // If we have a trusted CHT, reject all peers below that (avoid fast sync eclipse) if h.checkpointHash != (common.Hash{}) { // Request the peer's checkpoint header for chain height/weight validation - if err := peer.RequestHeadersByNumber(h.checkpointNumber, 1, 0, false); err != nil { + resCh := make(chan *eth.Response) + if _, err := peer.RequestHeadersByNumber(h.checkpointNumber, 1, 0, false, resCh); err != nil { return err } // Start a timer to disconnect if the peer doesn't reply in time - p.syncDrop = time.AfterFunc(syncChallengeTimeout, func() { - peer.Log().Warn("Checkpoint challenge timed out, dropping", "addr", peer.RemoteAddr(), "type", peer.Name()) - h.removePeer(peer.ID()) - }) - // Make sure it's cleaned up if the peer dies off - defer func() { - if p.syncDrop != nil { - p.syncDrop.Stop() - p.syncDrop = nil + go func() { + timeout := time.NewTimer(syncChallengeTimeout) + defer timeout.Stop() + + select { + case res := <-resCh: + headers := ([]*types.Header)(*res.Res.(*eth.BlockHeadersPacket)) + if len(headers) == 0 { + // If we're doing a snap sync, we must enforce the checkpoint + // block to avoid eclipse attacks. Unsynced nodes are welcome + // to connect after we're done joining the network. + if atomic.LoadUint32(&h.snapSync) == 1 { + peer.Log().Warn("Dropping unsynced node during sync", "addr", peer.RemoteAddr(), "type", peer.Name()) + res.Done <- errors.New("unsynced node cannot serve sync") + return + } + res.Done <- nil + return + } + // Validate the header and either drop the peer or continue + if len(headers) > 1 { + res.Done <- errors.New("too many headers in checkpoint response") + return + } + if headers[0].Hash() != h.checkpointHash { + res.Done <- errors.New("checkpoint hash mismatch") + return + } + res.Done <- nil + + case <-timeout.C: + peer.Log().Warn("Checkpoint challenge timed out, dropping", "addr", peer.RemoteAddr(), "type", peer.Name()) + h.removePeer(peer.ID()) + + case <-dead: + // Peer handler terminated, abort all goroutines } }() } // If we have any explicit whitelist block hashes, request them - for number := range h.whitelist { - if err := peer.RequestHeadersByNumber(number, 1, 0, false); err != nil { + for number, hash := range h.whitelist { + resCh := make(chan *eth.Response) + if _, err := peer.RequestHeadersByNumber(number, 1, 0, false, resCh); err != nil { return err } + go func(number uint64, hash common.Hash) { + timeout := time.NewTimer(syncChallengeTimeout) + defer timeout.Stop() + + select { + case res := <-resCh: + headers := ([]*types.Header)(*res.Res.(*eth.BlockHeadersPacket)) + if len(headers) == 0 { + // Whitelisted blocks are allowed to be missing if the remote + // node is not yet synced + res.Done <- nil + return + } + // Validate the header and either drop the peer or continue + if len(headers) > 1 { + res.Done <- errors.New("too many headers in whitelist response") + return + } + if headers[0].Number.Uint64() != number || headers[0].Hash() != hash { + peer.Log().Info("Whitelist mismatch, dropping peer", "number", number, "hash", headers[0].Hash(), "want", hash) + res.Done <- errors.New("whitelist block mismatch") + return + } + peer.Log().Debug("Whitelist block verified", "number", number, "hash", hash) + + case <-timeout.C: + peer.Log().Warn("Whitelist challenge timed out, dropping", "addr", peer.RemoteAddr(), "type", peer.Name()) + h.removePeer(peer.ID()) + } + }(number, hash) } // Handle incoming messages until the connection is torn down return handler(peer) @@ -432,6 +539,17 @@ func (h *handler) Stop() { // BroadcastBlock will either propagate a block to a subset of its peers, or // will only announce its availability (depending what's requested). func (h *handler) BroadcastBlock(block *types.Block, propagate bool) { + // Disable the block propagation if the chain has already entered the PoS + // stage. The block propagation is delegated to the consensus layer. + if h.merger.PoSFinalized() { + return + } + // Disable the block propagation if it's the post-merge block. + if beacon, ok := h.chain.Engine().(*beacon.Beacon); ok { + if beacon.IsPoSHeader(block.Header()) { + return + } + } hash := block.Hash() peers := h.peers.peersWithoutBlock(hash) diff --git a/eth/handler_eth.go b/eth/handler_eth.go index 3ff9f2245b..bfe95e8c4d 100644 --- a/eth/handler_eth.go +++ b/eth/handler_eth.go @@ -17,7 +17,6 @@ package eth import ( - "errors" "fmt" "math/big" "sync/atomic" @@ -27,18 +26,15 @@ import ( "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/eth/protocols/eth" - "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/trie" ) // ethHandler implements the eth.Backend interface to handle the various network // packets that are sent as replies or broadcasts. type ethHandler handler -func (h *ethHandler) Chain() *core.BlockChain { return h.chain } -func (h *ethHandler) StateBloom() *trie.SyncBloom { return h.stateBloom } -func (h *ethHandler) TxPool() eth.TxPool { return h.txpool } +func (h *ethHandler) Chain() *core.BlockChain { return h.chain } +func (h *ethHandler) TxPool() eth.TxPool { return h.txpool } // RunPeer is invoked when a peer joins on the `eth` protocol. func (h *ethHandler) RunPeer(peer *eth.Peer, hand eth.Handler) error { @@ -64,25 +60,6 @@ func (h *ethHandler) AcceptTxs() bool { func (h *ethHandler) Handle(peer *eth.Peer, packet eth.Packet) error { // Consume any broadcasts and announces, forwarding the rest to the downloader switch packet := packet.(type) { - case *eth.BlockHeadersPacket: - return h.handleHeaders(peer, *packet) - - case *eth.BlockBodiesPacket: - txset, uncleset := packet.Unpack() - return h.handleBodies(peer, txset, uncleset) - - case *eth.NodeDataPacket: - if err := h.downloader.DeliverNodeData(peer.ID(), *packet); err != nil { - log.Debug("Failed to deliver node state data", "err", err) - } - return nil - - case *eth.ReceiptsPacket: - if err := h.downloader.DeliverReceipts(peer.ID(), *packet); err != nil { - log.Debug("Failed to deliver receipts", "err", err) - } - return nil - case *eth.NewBlockHashesPacket: hashes, numbers := packet.Unpack() return h.handleBlockAnnounces(peer, hashes, numbers) @@ -104,82 +81,17 @@ func (h *ethHandler) Handle(peer *eth.Peer, packet eth.Packet) error { } } -// handleHeaders is invoked from a peer's message handler when it transmits a batch -// of headers for the local node to process. -func (h *ethHandler) handleHeaders(peer *eth.Peer, headers []*types.Header) error { - p := h.peers.peer(peer.ID()) - if p == nil { - return errors.New("unregistered during callback") - } - // If no headers were received, but we're expencting a checkpoint header, consider it that - if len(headers) == 0 && p.syncDrop != nil { - // Stop the timer either way, decide later to drop or not - p.syncDrop.Stop() - p.syncDrop = nil - - // If we're doing a fast (or snap) sync, we must enforce the checkpoint block to avoid - // eclipse attacks. Unsynced nodes are welcome to connect after we're done - // joining the network - if atomic.LoadUint32(&h.fastSync) == 1 { - peer.Log().Warn("Dropping unsynced node during sync", "addr", peer.RemoteAddr(), "type", peer.Name()) - return errors.New("unsynced node cannot serve sync") - } - } - // Filter out any explicitly requested headers, deliver the rest to the downloader - filter := len(headers) == 1 - if filter { - // If it's a potential sync progress check, validate the content and advertised chain weight - if p.syncDrop != nil && headers[0].Number.Uint64() == h.checkpointNumber { - // Disable the sync drop timer - p.syncDrop.Stop() - p.syncDrop = nil - - // Validate the header and either drop the peer or continue - if headers[0].Hash() != h.checkpointHash { - return errors.New("checkpoint hash mismatch") - } - return nil - } - // Otherwise if it's a whitelisted block, validate against the set - if want, ok := h.whitelist[headers[0].Number.Uint64()]; ok { - if hash := headers[0].Hash(); want != hash { - peer.Log().Info("Whitelist mismatch, dropping peer", "number", headers[0].Number.Uint64(), "hash", hash, "want", want) - return errors.New("whitelist block mismatch") - } - peer.Log().Debug("Whitelist block verified", "number", headers[0].Number.Uint64(), "hash", want) - } - // Irrelevant of the fork checks, send the header to the fetcher just in case - headers = h.blockFetcher.FilterHeaders(peer.ID(), headers, time.Now()) - } - if len(headers) > 0 || !filter { - err := h.downloader.DeliverHeaders(peer.ID(), headers) - if err != nil { - log.Debug("Failed to deliver headers", "err", err) - } - } - return nil -} - -// handleBodies is invoked from a peer's message handler when it transmits a batch -// of block bodies for the local node to process. -func (h *ethHandler) handleBodies(peer *eth.Peer, txs [][]*types.Transaction, uncles [][]*types.Header) error { - // Filter out any explicitly requested bodies, deliver the rest to the downloader - filter := len(txs) > 0 || len(uncles) > 0 - if filter { - txs, uncles = h.blockFetcher.FilterBodies(peer.ID(), txs, uncles, time.Now()) - } - if len(txs) > 0 || len(uncles) > 0 || !filter { - err := h.downloader.DeliverBodies(peer.ID(), txs, uncles) - if err != nil { - log.Debug("Failed to deliver bodies", "err", err) - } - } - return nil -} - // handleBlockAnnounces is invoked from a peer's message handler when it transmits a // batch of block announcements for the local node to process. func (h *ethHandler) handleBlockAnnounces(peer *eth.Peer, hashes []common.Hash, numbers []uint64) error { + // Drop all incoming block announces from the p2p network if + // the chain already entered the pos stage and disconnect the + // remote peer. + if h.merger.PoSFinalized() { + // TODO (MariusVanDerWijden) drop non-updated peers after the merge + return nil + // return errors.New("unexpected block announces") + } // Schedule all the unknown hashes for retrieval var ( unknownHashes = make([]common.Hash, 0, len(hashes)) @@ -200,6 +112,14 @@ func (h *ethHandler) handleBlockAnnounces(peer *eth.Peer, hashes []common.Hash, // handleBlockBroadcast is invoked from a peer's message handler when it transmits a // block broadcast for the local node to process. func (h *ethHandler) handleBlockBroadcast(peer *eth.Peer, block *types.Block, td *big.Int) error { + // Drop all incoming block announces from the p2p network if + // the chain already entered the pos stage and disconnect the + // remote peer. + if h.merger.PoSFinalized() { + // TODO (MariusVanDerWijden) drop non-updated peers after the merge + return nil + // return errors.New("unexpected block announces") + } // Schedule the block for import h.blockFetcher.Enqueue(peer.ID(), block) diff --git a/eth/handler_eth_test.go b/eth/handler_eth_test.go index b8db5039c9..6e1c57cb6c 100644 --- a/eth/handler_eth_test.go +++ b/eth/handler_eth_test.go @@ -25,6 +25,7 @@ import ( "time" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/consensus" "github.com/ethereum/go-ethereum/consensus/ethash" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/forkid" @@ -37,7 +38,7 @@ import ( "github.com/ethereum/go-ethereum/p2p" "github.com/ethereum/go-ethereum/p2p/enode" "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/trie" + "github.com/ethereum/go-ethereum/rlp" ) // testEthHandler is a mock event handler to listen for inbound network requests @@ -49,7 +50,6 @@ type testEthHandler struct { } func (h *testEthHandler) Chain() *core.BlockChain { panic("no backing chain") } -func (h *testEthHandler) StateBloom() *trie.SyncBloom { panic("no backing state bloom") } func (h *testEthHandler) TxPool() eth.TxPool { panic("no backing tx pool") } func (h *testEthHandler) AcceptTxs() bool { return true } func (h *testEthHandler) RunPeer(*eth.Peer, eth.Handler) error { panic("not used in tests") } @@ -115,6 +115,7 @@ func testForkIDSplit(t *testing.T, protocol uint) { Database: dbNoFork, Chain: chainNoFork, TxPool: newTestTxPool(), + Merger: consensus.NewMerger(rawdb.NewMemoryDatabase()), Network: 1, Sync: downloader.FullSync, BloomCache: 1, @@ -123,6 +124,7 @@ func testForkIDSplit(t *testing.T, protocol uint) { Database: dbProFork, Chain: chainProFork, TxPool: newTestTxPool(), + Merger: consensus.NewMerger(rawdb.NewMemoryDatabase()), Network: 1, Sync: downloader.FullSync, BloomCache: 1, @@ -351,7 +353,7 @@ func testSendTransactions(t *testing.T, protocol uint) { seen := make(map[common.Hash]struct{}) for len(seen) < len(insert) { switch protocol { - case 65, 66: + case 66: select { case hashes := <-anns: for _, hash := range hashes { @@ -361,7 +363,7 @@ func testSendTransactions(t *testing.T, protocol uint) { seen[hash] = struct{}{} } case <-bcasts: - t.Errorf("initial tx broadcast received on post eth/65") + t.Errorf("initial tx broadcast received on post eth/66") } default: @@ -386,6 +388,7 @@ func testTransactionPropagation(t *testing.T, protocol uint) { // to receive them. We need multiple sinks since a one-to-one peering would // broadcast all transactions without announcement. source := newTestHandler() + source.handler.snapSync = 0 // Avoid requiring snap, otherwise some will be dropped below defer source.close() sinks := make([]*testHandler, 10) @@ -403,7 +406,7 @@ func testTransactionPropagation(t *testing.T, protocol uint) { defer sourcePipe.Close() defer sinkPipe.Close() - sourcePeer := eth.NewPeer(protocol, p2p.NewPeerPipe(enode.ID{byte(i)}, "", nil, sourcePipe), sourcePipe, source.txpool) + sourcePeer := eth.NewPeer(protocol, p2p.NewPeerPipe(enode.ID{byte(i + 1)}, "", nil, sourcePipe), sourcePipe, source.txpool) sinkPeer := eth.NewPeer(protocol, p2p.NewPeerPipe(enode.ID{0}, "", nil, sinkPipe), sinkPipe, sink.txpool) defer sourcePeer.Close() defer sinkPeer.Close() @@ -435,12 +438,13 @@ func testTransactionPropagation(t *testing.T, protocol uint) { // Iterate through all the sinks and ensure they all got the transactions for i := range sinks { - for arrived := 0; arrived < len(txs); { + for arrived, timeout := 0, false; arrived < len(txs) && !timeout; { select { case event := <-txChs[i]: arrived += len(event.Txs) - case <-time.NewTimer(time.Second).C: + case <-time.After(time.Second): t.Errorf("sink %d: transaction propagation timed out: have %d, want %d", i, arrived, len(txs)) + timeout = true } } } @@ -460,23 +464,23 @@ func TestCheckpointChallenge(t *testing.T) { }{ // If checkpointing is not enabled locally, don't challenge and don't drop {downloader.FullSync, false, false, false, false, false}, - {downloader.FastSync, false, false, false, false, false}, + {downloader.SnapSync, false, false, false, false, false}, // If checkpointing is enabled locally and remote response is empty, only drop during fast sync {downloader.FullSync, true, false, true, false, false}, - {downloader.FastSync, true, false, true, false, true}, // Special case, fast sync, unsynced peer + {downloader.SnapSync, true, false, true, false, true}, // Special case, fast sync, unsynced peer // If checkpointing is enabled locally and remote response mismatches, always drop {downloader.FullSync, true, false, false, false, true}, - {downloader.FastSync, true, false, false, false, true}, + {downloader.SnapSync, true, false, false, false, true}, // If checkpointing is enabled locally and remote response matches, never drop {downloader.FullSync, true, false, false, true, false}, - {downloader.FastSync, true, false, false, true, false}, + {downloader.SnapSync, true, false, false, true, false}, // If checkpointing is enabled locally and remote times out, always drop {downloader.FullSync, true, true, false, true, true}, - {downloader.FastSync, true, true, false, true, true}, + {downloader.SnapSync, true, true, false, true, true}, } for _, tt := range tests { t.Run(fmt.Sprintf("sync %v checkpoint %v timeout %v empty %v match %v", tt.syncmode, tt.checkpoint, tt.timeout, tt.empty, tt.match), func(t *testing.T) { @@ -497,10 +501,10 @@ func testCheckpointChallenge(t *testing.T, syncmode downloader.SyncMode, checkpo handler := newTestHandler() defer handler.close() - if syncmode == downloader.FastSync { - atomic.StoreUint32(&handler.handler.fastSync, 1) + if syncmode == downloader.SnapSync { + atomic.StoreUint32(&handler.handler.snapSync, 1) } else { - atomic.StoreUint32(&handler.handler.fastSync, 0) + atomic.StoreUint32(&handler.handler.snapSync, 0) } var response *types.Header if checkpoint { @@ -557,15 +561,17 @@ func testCheckpointChallenge(t *testing.T, syncmode downloader.SyncMode, checkpo // Create a block to reply to the challenge if no timeout is simulated. if !timeout { if empty { - if err := remote.ReplyBlockHeaders(request.RequestId, []*types.Header{}); err != nil { + if err := remote.ReplyBlockHeadersRLP(request.RequestId, []rlp.RawValue{}); err != nil { t.Fatalf("failed to answer challenge: %v", err) } } else if match { - if err := remote.ReplyBlockHeaders(request.RequestId, []*types.Header{response}); err != nil { + responseRlp, _ := rlp.EncodeToBytes(response) + if err := remote.ReplyBlockHeadersRLP(request.RequestId, []rlp.RawValue{responseRlp}); err != nil { t.Fatalf("failed to answer challenge: %v", err) } } else { - if err := remote.ReplyBlockHeaders(request.RequestId, []*types.Header{{Number: response.Number}}); err != nil { + responseRlp, _ := rlp.EncodeToBytes(types.Header{Number: response.Number}) + if err := remote.ReplyBlockHeadersRLP(request.RequestId, []rlp.RawValue{responseRlp}); err != nil { t.Fatalf("failed to answer challenge: %v", err) } } diff --git a/eth/handler_test.go b/eth/handler_test.go index b2f00b7977..d967b6df93 100644 --- a/eth/handler_test.go +++ b/eth/handler_test.go @@ -22,6 +22,7 @@ import ( "sync" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/consensus" "github.com/ethereum/go-ethereum/consensus/ethash" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/rawdb" @@ -149,8 +150,9 @@ func newTestHandlerWithBlocks(blocks int) *testHandler { Database: db, Chain: chain, TxPool: txpool, + Merger: consensus.NewMerger(rawdb.NewMemoryDatabase()), Network: 1, - Sync: downloader.FastSync, + Sync: downloader.SnapSync, BloomCache: 1, }) handler.Start(1000) diff --git a/eth/peer.go b/eth/peer.go index 1cea9c640e..024a6e6193 100644 --- a/eth/peer.go +++ b/eth/peer.go @@ -18,8 +18,6 @@ package eth import ( "math/big" - "sync" - "time" "github.com/ethereum/go-ethereum/eth/protocols/eth" "github.com/ethereum/go-ethereum/eth/protocols/snap" @@ -36,11 +34,8 @@ type ethPeerInfo struct { // ethPeer is a wrapper around eth.Peer to maintain a few extra metadata. type ethPeer struct { *eth.Peer - snapExt *snapPeer // Satellite `snap` connection - - syncDrop *time.Timer // Connection dropper if `eth` sync progress isn't validated in time + snapExt *snapPeer // Satellite `snap` connection snapWait chan struct{} // Notification channel for snap connections - lock sync.RWMutex // Mutex protecting the internal fields } // info gathers and returns some `eth` protocol metadata known about a peer. diff --git a/eth/protocols/eth/dispatcher.go b/eth/protocols/eth/dispatcher.go new file mode 100644 index 0000000000..bf88d400d4 --- /dev/null +++ b/eth/protocols/eth/dispatcher.go @@ -0,0 +1,253 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package eth + +import ( + "errors" + "fmt" + "time" + + "github.com/ethereum/go-ethereum/p2p" +) + +var ( + // errDisconnected is returned if a request is attempted to be made to a peer + // that was already closed. + errDisconnected = errors.New("disconnected") + + // errDanglingResponse is returned if a response arrives with a request id + // which does not match to any existing pending requests. + errDanglingResponse = errors.New("response to non-existent request") + + // errMismatchingResponseType is returned if the remote peer sent a different + // packet type as a response to a request than what the local node expected. + errMismatchingResponseType = errors.New("mismatching response type") +) + +// Request is a pending request to allow tracking it and delivering a response +// back to the requester on their chosen channel. +type Request struct { + peer *Peer // Peer to which this request belogs for untracking + id uint64 // Request ID to match up replies to + + sink chan *Response // Channel to deliver the response on + cancel chan struct{} // Channel to cancel requests ahead of time + + code uint64 // Message code of the request packet + want uint64 // Message code of the response packet + data interface{} // Data content of the request packet + + Peer string // Demultiplexer if cross-peer requests are batched together + Sent time.Time // Timestamp when the request was sent +} + +// Close aborts an in-flight request. Although there's no way to notify the +// remote peer about the cancellation, this method notifies the dispatcher to +// discard any late responses. +func (r *Request) Close() error { + if r.peer == nil { // Tests mock out the dispatcher, skip internal cancellation + return nil + } + cancelOp := &cancel{ + id: r.id, + fail: make(chan error), + } + select { + case r.peer.reqCancel <- cancelOp: + if err := <-cancelOp.fail; err != nil { + return err + } + close(r.cancel) + return nil + case <-r.peer.term: + return errDisconnected + } +} + +// request is a wrapper around a client Request that has an error channel to +// signal on if sending the request already failed on a network level. +type request struct { + req *Request + fail chan error +} + +// cancel is a maintenance type on the dispatcher to stop tracking a pending +// request. +type cancel struct { + id uint64 // Request ID to stop tracking + fail chan error +} + +// Response is a reply packet to a previously created request. It is delivered +// on the channel assigned by the requester subsystem and contains the original +// request embedded to allow uniquely matching it caller side. +type Response struct { + id uint64 // Request ID to match up this reply to + recv time.Time // Timestamp when the request was received + code uint64 // Response packet type to cross validate with request + + Req *Request // Original request to cross-reference with + Res interface{} // Remote response for the request query + Meta interface{} // Metadata generated locally on the receiver thread + Time time.Duration // Time it took for the request to be served + Done chan error // Channel to signal message handling to the reader +} + +// response is a wrapper around a remote Response that has an error channel to +// signal on if processing the response failed. +type response struct { + res *Response + fail chan error +} + +// dispatchRequest schedules the request to the dispatcher for tracking and +// network serialization, blocking until it's successfully sent. +// +// The returned Request must either be closed before discarding it, or the reply +// must be waited for and the Response's Done channel signalled. +func (p *Peer) dispatchRequest(req *Request) error { + reqOp := &request{ + req: req, + fail: make(chan error), + } + req.cancel = make(chan struct{}) + req.peer = p + req.Peer = p.id + + select { + case p.reqDispatch <- reqOp: + return <-reqOp.fail + case <-p.term: + return errDisconnected + } +} + +// dispatchRequest fulfils a pending request and delivers it to the requested +// sink. +func (p *Peer) dispatchResponse(res *Response, metadata func() interface{}) error { + resOp := &response{ + res: res, + fail: make(chan error), + } + res.recv = time.Now() + res.Done = make(chan error) + + select { + case p.resDispatch <- resOp: + // Ensure the response is accepted by the dispatcher + if err := <-resOp.fail; err != nil { + return nil + } + // Request was accepted, run any postprocessing step to generate metadata + // on the receiver thread, not the sink thread + if metadata != nil { + res.Meta = metadata() + } + // Deliver the filled out response and wait until it's handled. This + // path is a bit funky as Go's select has no order, so if a response + // arrives to an already cancelled request, there's a 50-50% changes + // of picking on channel or the other. To avoid such cases delivering + // the packet upstream, check for cancellation first and only after + // block on delivery. + select { + case <-res.Req.cancel: + return nil // Request cancelled, silently discard response + default: + // Request not yet cancelled, attempt to deliver it, but do watch + // for fresh cancellations too + select { + case res.Req.sink <- res: + return <-res.Done // Response delivered, return any errors + case <-res.Req.cancel: + return nil // Request cancelled, silently discard response + } + } + + case <-p.term: + return errDisconnected + } +} + +// dispatcher is a loop that accepts requests from higher layer packages, pushes +// it to the network and tracks and dispatches the responses back to the original +// requester. +func (p *Peer) dispatcher() { + pending := make(map[uint64]*Request) + + for { + select { + case reqOp := <-p.reqDispatch: + req := reqOp.req + req.Sent = time.Now() + + requestTracker.Track(p.id, p.version, req.code, req.want, req.id) + err := p2p.Send(p.rw, req.code, req.data) + reqOp.fail <- err + + if err == nil { + pending[req.id] = req + } + + case cancelOp := <-p.reqCancel: + // Retrieve the pendign request to cancel and short circuit if it + // has already been serviced and is not available anymore + req := pending[cancelOp.id] + if req == nil { + cancelOp.fail <- nil + continue + } + // Stop tracking the request + delete(pending, cancelOp.id) + cancelOp.fail <- nil + + case resOp := <-p.resDispatch: + res := resOp.res + res.Req = pending[res.id] + + // Independent if the request exists or not, track this packet + requestTracker.Fulfil(p.id, p.version, res.code, res.id) + + switch { + case res.Req == nil: + // Response arrived with an untracked ID. Since even cancelled + // requests are tracked until fulfilment, a dangling repsponse + // means the remote peer implements the protocol badly. + resOp.fail <- errDanglingResponse + + case res.Req.want != res.code: + // Response arrived, but it's a different packet type than the + // one expected by the requester. Either the local code is bad, + // or the remote peer send junk. In neither cases can we handle + // the packet. + resOp.fail <- fmt.Errorf("%w: have %d, want %d", errMismatchingResponseType, res.code, res.Req.want) + + default: + // All dispatcher checks passed and the response was initialized + // with the matching request. Signal to the delivery routine that + // it can wait for a handler response and dispatch the data. + res.Time = res.recv.Sub(res.Req.Sent) + resOp.fail <- nil + + // Stop tracking the request, the response dispatcher will deliver + delete(pending, res.id) + } + + case <-p.term: + return + } + } +} diff --git a/eth/protocols/eth/handler.go b/eth/protocols/eth/handler.go index 8289300141..81d45d8b8f 100644 --- a/eth/protocols/eth/handler.go +++ b/eth/protocols/eth/handler.go @@ -29,16 +29,12 @@ import ( "github.com/ethereum/go-ethereum/p2p/enode" "github.com/ethereum/go-ethereum/p2p/enr" "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/trie" ) const ( // softResponseLimit is the target maximum size of replies to data retrievals. softResponseLimit = 2 * 1024 * 1024 - // estHeaderSize is the approximate size of an RLP encoded block header. - estHeaderSize = 500 - // maxHeadersServe is the maximum number of block headers to serve. This number // is there to limit the number of disk lookups. maxHeadersServe = 1024 @@ -69,9 +65,6 @@ type Backend interface { // Chain retrieves the blockchain object to serve data. Chain() *core.BlockChain - // StateBloom retrieves the bloom filter - if any - for state trie nodes. - StateBloom() *trie.SyncBloom - // TxPool retrieves the transaction pool object to serve data. TxPool() TxPool @@ -96,7 +89,7 @@ type Backend interface { // TxPool defines the methods needed by the protocol handler to serve transactions. type TxPool interface { - // Get retrieves the the transaction from the local txpool with the given hash. + // Get retrieves the transaction from the local txpool with the given hash. Get(hash common.Hash) *types.Transaction } diff --git a/eth/protocols/eth/handler_test.go b/eth/protocols/eth/handler_test.go index 66f0134096..7d9b378839 100644 --- a/eth/protocols/eth/handler_test.go +++ b/eth/protocols/eth/handler_test.go @@ -34,7 +34,6 @@ import ( "github.com/ethereum/go-ethereum/p2p" "github.com/ethereum/go-ethereum/p2p/enode" "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/trie" ) var ( @@ -91,9 +90,8 @@ func (b *testBackend) close() { b.chain.Stop() } -func (b *testBackend) Chain() *core.BlockChain { return b.chain } -func (b *testBackend) StateBloom() *trie.SyncBloom { return nil } -func (b *testBackend) TxPool() TxPool { return b.txpool } +func (b *testBackend) Chain() *core.BlockChain { return b.chain } +func (b *testBackend) TxPool() TxPool { return b.txpool } func (b *testBackend) RunPeer(peer *Peer, handler Handler) error { // Normally the backend would do peer mainentance and handshakes. All that @@ -138,11 +136,13 @@ func testGetBlockHeaders(t *testing.T, protocol uint) { query *GetBlockHeadersPacket // The query to execute for header retrieval expect []common.Hash // The hashes of the block whose headers are expected }{ - // A single random block should be retrievable by hash and number too + // A single random block should be retrievable by hash { &GetBlockHeadersPacket{Origin: HashOrNumber{Hash: backend.chain.GetBlockByNumber(limit / 2).Hash()}, Amount: 1}, []common.Hash{backend.chain.GetBlockByNumber(limit / 2).Hash()}, - }, { + }, + // A single random block should be retrievable by number + { &GetBlockHeadersPacket{Origin: HashOrNumber{Number: limit / 2}, Amount: 1}, []common.Hash{backend.chain.GetBlockByNumber(limit / 2).Hash()}, }, @@ -182,10 +182,15 @@ func testGetBlockHeaders(t *testing.T, protocol uint) { { &GetBlockHeadersPacket{Origin: HashOrNumber{Number: 0}, Amount: 1}, []common.Hash{backend.chain.GetBlockByNumber(0).Hash()}, - }, { + }, + { &GetBlockHeadersPacket{Origin: HashOrNumber{Number: backend.chain.CurrentBlock().NumberU64()}, Amount: 1}, []common.Hash{backend.chain.CurrentBlock().Hash()}, }, + { // If the peer requests a bit into the future, we deliver what we have + &GetBlockHeadersPacket{Origin: HashOrNumber{Number: backend.chain.CurrentBlock().NumberU64()}, Amount: 10}, + []common.Hash{backend.chain.CurrentBlock().Hash()}, + }, // Ensure protocol limits are honored { &GetBlockHeadersPacket{Origin: HashOrNumber{Number: backend.chain.CurrentBlock().NumberU64() - 1}, Amount: limit + 10, Reverse: true}, @@ -282,7 +287,7 @@ func testGetBlockHeaders(t *testing.T, protocol uint) { RequestId: 456, BlockHeadersPacket: headers, }); err != nil { - t.Errorf("test %d: headers mismatch: %v", i, err) + t.Errorf("test %d by hash: headers mismatch: %v", i, err) } } } diff --git a/eth/protocols/eth/handlers.go b/eth/protocols/eth/handlers.go index e54838cbc5..8fc966e7ae 100644 --- a/eth/protocols/eth/handlers.go +++ b/eth/protocols/eth/handlers.go @@ -21,6 +21,7 @@ import ( "fmt" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/rlp" @@ -34,11 +35,22 @@ func handleGetBlockHeaders66(backend Backend, msg Decoder, peer *Peer) error { if err := msg.Decode(&query); err != nil { return fmt.Errorf("%w: message %v: %v", errDecode, msg, err) } - response := answerGetBlockHeadersQuery(backend, query.GetBlockHeadersPacket, peer) - return peer.ReplyBlockHeaders(query.RequestId, response) + response := ServiceGetBlockHeadersQuery(backend.Chain(), query.GetBlockHeadersPacket, peer) + return peer.ReplyBlockHeadersRLP(query.RequestId, response) } -func answerGetBlockHeadersQuery(backend Backend, query *GetBlockHeadersPacket, peer *Peer) []*types.Header { +// ServiceGetBlockHeadersQuery assembles the response to a header query. It is +// exposed to allow external packages to test protocol behavior. +func ServiceGetBlockHeadersQuery(chain *core.BlockChain, query *GetBlockHeadersPacket, peer *Peer) []rlp.RawValue { + if query.Skip == 0 { + // The fast path: when the request is for a contiguous segment of headers. + return serviceContiguousBlockHeaderQuery(chain, query) + } else { + return serviceNonContiguousBlockHeaderQuery(chain, query, peer) + } +} + +func serviceNonContiguousBlockHeaderQuery(chain *core.BlockChain, query *GetBlockHeadersPacket, peer *Peer) []rlp.RawValue { hashMode := query.Origin.Hash != (common.Hash{}) first := true maxNonCanonical := uint64(100) @@ -46,7 +58,7 @@ func answerGetBlockHeadersQuery(backend Backend, query *GetBlockHeadersPacket, p // Gather headers until the fetch or network limits is reached var ( bytes common.StorageSize - headers []*types.Header + headers []rlp.RawValue unknown bool lookups int ) @@ -58,22 +70,25 @@ func answerGetBlockHeadersQuery(backend Backend, query *GetBlockHeadersPacket, p if hashMode { if first { first = false - origin = backend.Chain().GetHeaderByHash(query.Origin.Hash) + origin = chain.GetHeaderByHash(query.Origin.Hash) if origin != nil { query.Origin.Number = origin.Number.Uint64() } } else { - origin = backend.Chain().GetHeader(query.Origin.Hash, query.Origin.Number) + origin = chain.GetHeader(query.Origin.Hash, query.Origin.Number) } } else { - origin = backend.Chain().GetHeaderByNumber(query.Origin.Number) + origin = chain.GetHeaderByNumber(query.Origin.Number) } if origin == nil { break } - headers = append(headers, origin) - bytes += estHeaderSize - + if rlpData, err := rlp.EncodeToBytes(origin); err != nil { + log.Crit("Unable to decode our own headers", "err", err) + } else { + headers = append(headers, rlp.RawValue(rlpData)) + bytes += common.StorageSize(len(rlpData)) + } // Advance to the next header of the query switch { case hashMode && query.Reverse: @@ -82,7 +97,7 @@ func answerGetBlockHeadersQuery(backend Backend, query *GetBlockHeadersPacket, p if ancestor == 0 { unknown = true } else { - query.Origin.Hash, query.Origin.Number = backend.Chain().GetAncestor(query.Origin.Hash, query.Origin.Number, ancestor, &maxNonCanonical) + query.Origin.Hash, query.Origin.Number = chain.GetAncestor(query.Origin.Hash, query.Origin.Number, ancestor, &maxNonCanonical) unknown = (query.Origin.Hash == common.Hash{}) } case hashMode && !query.Reverse: @@ -96,9 +111,9 @@ func answerGetBlockHeadersQuery(backend Backend, query *GetBlockHeadersPacket, p peer.Log().Warn("GetBlockHeaders skip overflow attack", "current", current, "skip", query.Skip, "next", next, "attacker", infos) unknown = true } else { - if header := backend.Chain().GetHeaderByNumber(next); header != nil { + if header := chain.GetHeaderByNumber(next); header != nil { nextHash := header.Hash() - expOldHash, _ := backend.Chain().GetAncestor(nextHash, next, query.Skip+1, &maxNonCanonical) + expOldHash, _ := chain.GetAncestor(nextHash, next, query.Skip+1, &maxNonCanonical) if expOldHash == query.Origin.Hash { query.Origin.Hash, query.Origin.Number = nextHash, next } else { @@ -124,17 +139,82 @@ func answerGetBlockHeadersQuery(backend Backend, query *GetBlockHeadersPacket, p return headers } +func serviceContiguousBlockHeaderQuery(chain *core.BlockChain, query *GetBlockHeadersPacket) []rlp.RawValue { + count := query.Amount + if count > maxHeadersServe { + count = maxHeadersServe + } + if query.Origin.Hash == (common.Hash{}) { + // Number mode, just return the canon chain segment. The backend + // delivers in [N, N-1, N-2..] descending order, so we need to + // accommodate for that. + from := query.Origin.Number + if !query.Reverse { + from = from + count - 1 + } + headers := chain.GetHeadersFrom(from, count) + if !query.Reverse { + for i, j := 0, len(headers)-1; i < j; i, j = i+1, j-1 { + headers[i], headers[j] = headers[j], headers[i] + } + } + return headers + } + // Hash mode. + var ( + headers []rlp.RawValue + hash = query.Origin.Hash + header = chain.GetHeaderByHash(hash) + ) + if header != nil { + rlpData, _ := rlp.EncodeToBytes(header) + headers = append(headers, rlpData) + } else { + // We don't even have the origin header + return headers + } + num := header.Number.Uint64() + if !query.Reverse { + // Theoretically, we are tasked to deliver header by hash H, and onwards. + // However, if H is not canon, we will be unable to deliver any descendants of + // H. + if canonHash := chain.GetCanonicalHash(num); canonHash != hash { + // Not canon, we can't deliver descendants + return headers + } + descendants := chain.GetHeadersFrom(num+count-1, count-1) + for i, j := 0, len(descendants)-1; i < j; i, j = i+1, j-1 { + descendants[i], descendants[j] = descendants[j], descendants[i] + } + headers = append(headers, descendants...) + return headers + } + { // Last mode: deliver ancestors of H + for i := uint64(1); header != nil && i < count; i++ { + header = chain.GetHeaderByHash(header.ParentHash) + if header == nil { + break + } + rlpData, _ := rlp.EncodeToBytes(header) + headers = append(headers, rlpData) + } + return headers + } +} + func handleGetBlockBodies66(backend Backend, msg Decoder, peer *Peer) error { // Decode the block body retrieval message var query GetBlockBodiesPacket66 if err := msg.Decode(&query); err != nil { return fmt.Errorf("%w: message %v: %v", errDecode, msg, err) } - response := answerGetBlockBodiesQuery(backend, query.GetBlockBodiesPacket, peer) + response := ServiceGetBlockBodiesQuery(backend.Chain(), query.GetBlockBodiesPacket) return peer.ReplyBlockBodiesRLP(query.RequestId, response) } -func answerGetBlockBodiesQuery(backend Backend, query GetBlockBodiesPacket, peer *Peer) []rlp.RawValue { +// ServiceGetBlockBodiesQuery assembles the response to a body query. It is +// exposed to allow external packages to test protocol behavior. +func ServiceGetBlockBodiesQuery(chain *core.BlockChain, query GetBlockBodiesPacket) []rlp.RawValue { // Gather blocks until the fetch or network limits is reached var ( bytes int @@ -145,7 +225,7 @@ func answerGetBlockBodiesQuery(backend Backend, query GetBlockBodiesPacket, peer lookups >= 2*maxBodiesServe { break } - if data := backend.Chain().GetBodyRLP(hash); len(data) != 0 { + if data := chain.GetBodyRLP(hash); len(data) != 0 { bodies = append(bodies, data) bytes += len(data) } @@ -159,11 +239,13 @@ func handleGetNodeData66(backend Backend, msg Decoder, peer *Peer) error { if err := msg.Decode(&query); err != nil { return fmt.Errorf("%w: message %v: %v", errDecode, msg, err) } - response := answerGetNodeDataQuery(backend, query.GetNodeDataPacket, peer) + response := ServiceGetNodeDataQuery(backend.Chain(), query.GetNodeDataPacket) return peer.ReplyNodeData(query.RequestId, response) } -func answerGetNodeDataQuery(backend Backend, query GetNodeDataPacket, peer *Peer) [][]byte { +// ServiceGetNodeDataQuery assembles the response to a node data query. It is +// exposed to allow external packages to test protocol behavior. +func ServiceGetNodeDataQuery(chain *core.BlockChain, query GetNodeDataPacket) [][]byte { // Gather state data until the fetch or network limits is reached var ( bytes int @@ -175,14 +257,10 @@ func answerGetNodeDataQuery(backend Backend, query GetNodeDataPacket, peer *Peer break } // Retrieve the requested state entry - if bloom := backend.StateBloom(); bloom != nil && !bloom.Contains(hash[:]) { - // Only lookup the trie node if there's chance that we actually have it - continue - } - entry, err := backend.Chain().TrieNode(hash) + entry, err := chain.TrieNode(hash) if len(entry) == 0 || err != nil { // Read the contract code with prefix only to save unnecessary lookups. - entry, err = backend.Chain().ContractCodeWithPrefix(hash) + entry, err = chain.ContractCodeWithPrefix(hash) } if err == nil && len(entry) > 0 { nodes = append(nodes, entry) @@ -198,11 +276,13 @@ func handleGetReceipts66(backend Backend, msg Decoder, peer *Peer) error { if err := msg.Decode(&query); err != nil { return fmt.Errorf("%w: message %v: %v", errDecode, msg, err) } - response := answerGetReceiptsQuery(backend, query.GetReceiptsPacket, peer) + response := ServiceGetReceiptsQuery(backend.Chain(), query.GetReceiptsPacket) return peer.ReplyReceiptsRLP(query.RequestId, response) } -func answerGetReceiptsQuery(backend Backend, query GetReceiptsPacket, peer *Peer) []rlp.RawValue { +// ServiceGetReceiptsQuery assembles the response to a receipt query. It is +// exposed to allow external packages to test protocol behavior. +func ServiceGetReceiptsQuery(chain *core.BlockChain, query GetReceiptsPacket) []rlp.RawValue { // Gather state data until the fetch or network limits is reached var ( bytes int @@ -214,9 +294,9 @@ func answerGetReceiptsQuery(backend Backend, query GetReceiptsPacket, peer *Peer break } // Retrieve the requested block's receipts - results := backend.Chain().GetReceiptsByHash(hash) + results := chain.GetReceiptsByHash(hash) if results == nil { - if header := backend.Chain().GetHeaderByHash(hash); header == nil || header.ReceiptHash != types.EmptyRootHash { + if header := chain.GetHeaderByHash(hash); header == nil || header.ReceiptHash != types.EmptyRootHash { continue } } @@ -277,9 +357,18 @@ func handleBlockHeaders66(backend Backend, msg Decoder, peer *Peer) error { if err := msg.Decode(res); err != nil { return fmt.Errorf("%w: message %v: %v", errDecode, msg, err) } - requestTracker.Fulfil(peer.id, peer.version, BlockHeadersMsg, res.RequestId) - - return backend.Handle(peer, &res.BlockHeadersPacket) + metadata := func() interface{} { + hashes := make([]common.Hash, len(res.BlockHeadersPacket)) + for i, header := range res.BlockHeadersPacket { + hashes[i] = header.Hash() + } + return hashes + } + return peer.dispatchResponse(&Response{ + id: res.RequestId, + code: BlockHeadersMsg, + Res: &res.BlockHeadersPacket, + }, metadata) } func handleBlockBodies66(backend Backend, msg Decoder, peer *Peer) error { @@ -288,9 +377,23 @@ func handleBlockBodies66(backend Backend, msg Decoder, peer *Peer) error { if err := msg.Decode(res); err != nil { return fmt.Errorf("%w: message %v: %v", errDecode, msg, err) } - requestTracker.Fulfil(peer.id, peer.version, BlockBodiesMsg, res.RequestId) - - return backend.Handle(peer, &res.BlockBodiesPacket) + metadata := func() interface{} { + var ( + txsHashes = make([]common.Hash, len(res.BlockBodiesPacket)) + uncleHashes = make([]common.Hash, len(res.BlockBodiesPacket)) + ) + hasher := trie.NewStackTrie(nil) + for i, body := range res.BlockBodiesPacket { + txsHashes[i] = types.DeriveSha(types.Transactions(body.Transactions), hasher) + uncleHashes[i] = types.CalcUncleHash(body.Uncles) + } + return [][]common.Hash{txsHashes, uncleHashes} + } + return peer.dispatchResponse(&Response{ + id: res.RequestId, + code: BlockBodiesMsg, + Res: &res.BlockBodiesPacket, + }, metadata) } func handleNodeData66(backend Backend, msg Decoder, peer *Peer) error { @@ -299,9 +402,11 @@ func handleNodeData66(backend Backend, msg Decoder, peer *Peer) error { if err := msg.Decode(res); err != nil { return fmt.Errorf("%w: message %v: %v", errDecode, msg, err) } - requestTracker.Fulfil(peer.id, peer.version, NodeDataMsg, res.RequestId) - - return backend.Handle(peer, &res.NodeDataPacket) + return peer.dispatchResponse(&Response{ + id: res.RequestId, + code: NodeDataMsg, + Res: &res.NodeDataPacket, + }, nil) // No post-processing, we're not using this packet anymore } func handleReceipts66(backend Backend, msg Decoder, peer *Peer) error { @@ -310,9 +415,19 @@ func handleReceipts66(backend Backend, msg Decoder, peer *Peer) error { if err := msg.Decode(res); err != nil { return fmt.Errorf("%w: message %v: %v", errDecode, msg, err) } - requestTracker.Fulfil(peer.id, peer.version, ReceiptsMsg, res.RequestId) - - return backend.Handle(peer, &res.ReceiptsPacket) + metadata := func() interface{} { + hasher := trie.NewStackTrie(nil) + hashes := make([]common.Hash, len(res.ReceiptsPacket)) + for i, receipt := range res.ReceiptsPacket { + hashes[i] = types.DeriveSha(types.Receipts(receipt), hasher) + } + return hashes + } + return peer.dispatchResponse(&Response{ + id: res.RequestId, + code: ReceiptsMsg, + Res: &res.ReceiptsPacket, + }, metadata) } func handleNewPooledTransactionHashes(backend Backend, msg Decoder, peer *Peer) error { diff --git a/eth/protocols/eth/peer.go b/eth/protocols/eth/peer.go index 1b4cfeb3da..4161420f3a 100644 --- a/eth/protocols/eth/peer.go +++ b/eth/protocols/eth/peer.go @@ -84,6 +84,10 @@ type Peer struct { txBroadcast chan []common.Hash // Channel used to queue transaction propagation requests txAnnounce chan []common.Hash // Channel used to queue transaction announcement requests + reqDispatch chan *request // Dispatch channel to send requests and track then until fulfilment + reqCancel chan *cancel // Dispatch channel to cancel pending requests and untrack them + resDispatch chan *response // Dispatch channel to fulfil pending requests and untrack them + term chan struct{} // Termination channel to stop the broadcasters lock sync.RWMutex // Mutex protecting the internal fields } @@ -102,6 +106,9 @@ func NewPeer(version uint, p *p2p.Peer, rw p2p.MsgReadWriter, txpool TxPool) *Pe queuedBlockAnns: make(chan *types.Block, maxQueuedBlockAnns), txBroadcast: make(chan []common.Hash), txAnnounce: make(chan []common.Hash), + reqDispatch: make(chan *request), + reqCancel: make(chan *cancel), + resDispatch: make(chan *response), txpool: txpool, term: make(chan struct{}), } @@ -109,6 +116,7 @@ func NewPeer(version uint, p *p2p.Peer, rw p2p.MsgReadWriter, txpool TxPool) *Pe go peer.broadcastBlocks() go peer.broadcastTransactions() go peer.announceTransactions() + go peer.dispatcher() return peer } @@ -289,10 +297,10 @@ func (p *Peer) AsyncSendNewBlock(block *types.Block, td *big.Int) { } // ReplyBlockHeaders is the eth/66 version of SendBlockHeaders. -func (p *Peer) ReplyBlockHeaders(id uint64, headers []*types.Header) error { - return p2p.Send(p.rw, BlockHeadersMsg, BlockHeadersPacket66{ - RequestId: id, - BlockHeadersPacket: headers, +func (p *Peer) ReplyBlockHeadersRLP(id uint64, headers []rlp.RawValue) error { + return p2p.Send(p.rw, BlockHeadersMsg, BlockHeadersRLPPacket66{ + RequestId: id, + BlockHeadersRLPPacket: headers, }) } @@ -323,94 +331,148 @@ func (p *Peer) ReplyReceiptsRLP(id uint64, receipts []rlp.RawValue) error { // RequestOneHeader is a wrapper around the header query functions to fetch a // single header. It is used solely by the fetcher. -func (p *Peer) RequestOneHeader(hash common.Hash) error { +func (p *Peer) RequestOneHeader(hash common.Hash, sink chan *Response) (*Request, error) { p.Log().Debug("Fetching single header", "hash", hash) id := rand.Uint64() - requestTracker.Track(p.id, p.version, GetBlockHeadersMsg, BlockHeadersMsg, id) - return p2p.Send(p.rw, GetBlockHeadersMsg, &GetBlockHeadersPacket66{ - RequestId: id, - GetBlockHeadersPacket: &GetBlockHeadersPacket{ - Origin: HashOrNumber{Hash: hash}, - Amount: uint64(1), - Skip: uint64(0), - Reverse: false, + req := &Request{ + id: id, + sink: sink, + code: GetBlockHeadersMsg, + want: BlockHeadersMsg, + data: &GetBlockHeadersPacket66{ + RequestId: id, + GetBlockHeadersPacket: &GetBlockHeadersPacket{ + Origin: HashOrNumber{Hash: hash}, + Amount: uint64(1), + Skip: uint64(0), + Reverse: false, + }, }, - }) + } + if err := p.dispatchRequest(req); err != nil { + return nil, err + } + return req, nil } // RequestHeadersByHash fetches a batch of blocks' headers corresponding to the // specified header query, based on the hash of an origin block. -func (p *Peer) RequestHeadersByHash(origin common.Hash, amount int, skip int, reverse bool) error { +func (p *Peer) RequestHeadersByHash(origin common.Hash, amount int, skip int, reverse bool, sink chan *Response) (*Request, error) { p.Log().Debug("Fetching batch of headers", "count", amount, "fromhash", origin, "skip", skip, "reverse", reverse) id := rand.Uint64() - requestTracker.Track(p.id, p.version, GetBlockHeadersMsg, BlockHeadersMsg, id) - return p2p.Send(p.rw, GetBlockHeadersMsg, &GetBlockHeadersPacket66{ - RequestId: id, - GetBlockHeadersPacket: &GetBlockHeadersPacket{ - Origin: HashOrNumber{Hash: origin}, - Amount: uint64(amount), - Skip: uint64(skip), - Reverse: reverse, + req := &Request{ + id: id, + sink: sink, + code: GetBlockHeadersMsg, + want: BlockHeadersMsg, + data: &GetBlockHeadersPacket66{ + RequestId: id, + GetBlockHeadersPacket: &GetBlockHeadersPacket{ + Origin: HashOrNumber{Hash: origin}, + Amount: uint64(amount), + Skip: uint64(skip), + Reverse: reverse, + }, }, - }) + } + if err := p.dispatchRequest(req); err != nil { + return nil, err + } + return req, nil } // RequestHeadersByNumber fetches a batch of blocks' headers corresponding to the // specified header query, based on the number of an origin block. -func (p *Peer) RequestHeadersByNumber(origin uint64, amount int, skip int, reverse bool) error { +func (p *Peer) RequestHeadersByNumber(origin uint64, amount int, skip int, reverse bool, sink chan *Response) (*Request, error) { p.Log().Debug("Fetching batch of headers", "count", amount, "fromnum", origin, "skip", skip, "reverse", reverse) id := rand.Uint64() - requestTracker.Track(p.id, p.version, GetBlockHeadersMsg, BlockHeadersMsg, id) - return p2p.Send(p.rw, GetBlockHeadersMsg, &GetBlockHeadersPacket66{ - RequestId: id, - GetBlockHeadersPacket: &GetBlockHeadersPacket{ - Origin: HashOrNumber{Number: origin}, - Amount: uint64(amount), - Skip: uint64(skip), - Reverse: reverse, + req := &Request{ + id: id, + sink: sink, + code: GetBlockHeadersMsg, + want: BlockHeadersMsg, + data: &GetBlockHeadersPacket66{ + RequestId: id, + GetBlockHeadersPacket: &GetBlockHeadersPacket{ + Origin: HashOrNumber{Number: origin}, + Amount: uint64(amount), + Skip: uint64(skip), + Reverse: reverse, + }, }, - }) + } + if err := p.dispatchRequest(req); err != nil { + return nil, err + } + return req, nil } // RequestBodies fetches a batch of blocks' bodies corresponding to the hashes // specified. -func (p *Peer) RequestBodies(hashes []common.Hash) error { +func (p *Peer) RequestBodies(hashes []common.Hash, sink chan *Response) (*Request, error) { p.Log().Debug("Fetching batch of block bodies", "count", len(hashes)) id := rand.Uint64() - requestTracker.Track(p.id, p.version, GetBlockBodiesMsg, BlockBodiesMsg, id) - return p2p.Send(p.rw, GetBlockBodiesMsg, &GetBlockBodiesPacket66{ - RequestId: id, - GetBlockBodiesPacket: hashes, - }) + req := &Request{ + id: id, + sink: sink, + code: GetBlockBodiesMsg, + want: BlockBodiesMsg, + data: &GetBlockBodiesPacket66{ + RequestId: id, + GetBlockBodiesPacket: hashes, + }, + } + if err := p.dispatchRequest(req); err != nil { + return nil, err + } + return req, nil } // RequestNodeData fetches a batch of arbitrary data from a node's known state // data, corresponding to the specified hashes. -func (p *Peer) RequestNodeData(hashes []common.Hash) error { +func (p *Peer) RequestNodeData(hashes []common.Hash, sink chan *Response) (*Request, error) { p.Log().Debug("Fetching batch of state data", "count", len(hashes)) id := rand.Uint64() - requestTracker.Track(p.id, p.version, GetNodeDataMsg, NodeDataMsg, id) - return p2p.Send(p.rw, GetNodeDataMsg, &GetNodeDataPacket66{ - RequestId: id, - GetNodeDataPacket: hashes, - }) + req := &Request{ + id: id, + sink: sink, + code: GetNodeDataMsg, + want: NodeDataMsg, + data: &GetNodeDataPacket66{ + RequestId: id, + GetNodeDataPacket: hashes, + }, + } + if err := p.dispatchRequest(req); err != nil { + return nil, err + } + return req, nil } // RequestReceipts fetches a batch of transaction receipts from a remote node. -func (p *Peer) RequestReceipts(hashes []common.Hash) error { +func (p *Peer) RequestReceipts(hashes []common.Hash, sink chan *Response) (*Request, error) { p.Log().Debug("Fetching batch of receipts", "count", len(hashes)) id := rand.Uint64() - requestTracker.Track(p.id, p.version, GetReceiptsMsg, ReceiptsMsg, id) - return p2p.Send(p.rw, GetReceiptsMsg, &GetReceiptsPacket66{ - RequestId: id, - GetReceiptsPacket: hashes, - }) + req := &Request{ + id: id, + sink: sink, + code: GetReceiptsMsg, + want: ReceiptsMsg, + data: &GetReceiptsPacket66{ + RequestId: id, + GetReceiptsPacket: hashes, + }, + } + if err := p.dispatchRequest(req); err != nil { + return nil, err + } + return req, nil } // RequestTxs fetches a batch of transactions from a remote node. diff --git a/eth/protocols/eth/protocol.go b/eth/protocols/eth/protocol.go index 3c3da30fa5..a8420ad68c 100644 --- a/eth/protocols/eth/protocol.go +++ b/eth/protocols/eth/protocol.go @@ -175,6 +175,16 @@ type BlockHeadersPacket66 struct { BlockHeadersPacket } +// BlockHeadersRLPPacket represents a block header response, to use when we already +// have the headers rlp encoded. +type BlockHeadersRLPPacket []rlp.RawValue + +// BlockHeadersPacket represents a block header response over eth/66. +type BlockHeadersRLPPacket66 struct { + RequestId uint64 + BlockHeadersRLPPacket +} + // NewBlockPacket is the network packet for the block propagation message. type NewBlockPacket struct { Block *types.Block diff --git a/eth/protocols/snap/handler.go b/eth/protocols/snap/handler.go index c62f9cfca5..0a1ee2637f 100644 --- a/eth/protocols/snap/handler.go +++ b/eth/protocols/snap/handler.go @@ -99,8 +99,8 @@ func MakeProtocols(backend Backend, dnsdisc enode.Iterator) []p2p.Protocol { Version: version, Length: protocolLengths[version], Run: func(p *p2p.Peer, rw p2p.MsgReadWriter) error { - return backend.RunPeer(newPeer(version, p, rw), func(peer *Peer) error { - return handle(backend, peer) + return backend.RunPeer(NewPeer(version, p, rw), func(peer *Peer) error { + return Handle(backend, peer) }) }, NodeInfo: func() interface{} { @@ -116,21 +116,21 @@ func MakeProtocols(backend Backend, dnsdisc enode.Iterator) []p2p.Protocol { return protocols } -// handle is the callback invoked to manage the life cycle of a `snap` peer. +// Handle is the callback invoked to manage the life cycle of a `snap` peer. // When this function terminates, the peer is disconnected. -func handle(backend Backend, peer *Peer) error { +func Handle(backend Backend, peer *Peer) error { for { - if err := handleMessage(backend, peer); err != nil { + if err := HandleMessage(backend, peer); err != nil { peer.Log().Debug("Message handling failed in `snap`", "err", err) return err } } } -// handleMessage is invoked whenever an inbound message is received from a +// HandleMessage is invoked whenever an inbound message is received from a // remote peer on the `snap` protocol. The remote connection is torn down upon // returning any error. -func handleMessage(backend Backend, peer *Peer) error { +func HandleMessage(backend Backend, peer *Peer) error { // Read the next message from the remote peer, and ensure it's fully consumed msg, err := peer.rw.ReadMsg() if err != nil { @@ -161,60 +161,10 @@ func handleMessage(backend Backend, peer *Peer) error { if err := msg.Decode(&req); err != nil { return fmt.Errorf("%w: message %v: %v", errDecode, msg, err) } - if req.Bytes > softResponseLimit { - req.Bytes = softResponseLimit - } - // Retrieve the requested state and bail out if non existent - tr, err := trie.New(req.Root, backend.Chain().StateCache().TrieDB()) - if err != nil { - return p2p.Send(peer.rw, AccountRangeMsg, &AccountRangePacket{ID: req.ID}) - } - it, err := backend.Chain().Snapshots().AccountIterator(req.Root, req.Origin) - if err != nil { - return p2p.Send(peer.rw, AccountRangeMsg, &AccountRangePacket{ID: req.ID}) - } - // Iterate over the requested range and pile accounts up - var ( - accounts []*AccountData - size uint64 - last common.Hash - ) - for it.Next() && size < req.Bytes { - hash, account := it.Hash(), common.CopyBytes(it.Account()) + // Service the request, potentially returning nothing in case of errors + accounts, proofs := ServiceGetAccountRangeQuery(backend.Chain(), &req) - // Track the returned interval for the Merkle proofs - last = hash - - // Assemble the reply item - size += uint64(common.HashLength + len(account)) - accounts = append(accounts, &AccountData{ - Hash: hash, - Body: account, - }) - // If we've exceeded the request threshold, abort - if bytes.Compare(hash[:], req.Limit[:]) >= 0 { - break - } - } - it.Release() - - // Generate the Merkle proofs for the first and last account - proof := light.NewNodeSet() - if err := tr.Prove(req.Origin[:], 0, proof); err != nil { - log.Warn("Failed to prove account range", "origin", req.Origin, "err", err) - return p2p.Send(peer.rw, AccountRangeMsg, &AccountRangePacket{ID: req.ID}) - } - if last != (common.Hash{}) { - if err := tr.Prove(last[:], 0, proof); err != nil { - log.Warn("Failed to prove account range", "last", last, "err", err) - return p2p.Send(peer.rw, AccountRangeMsg, &AccountRangePacket{ID: req.ID}) - } - } - var proofs [][]byte - for _, blob := range proof.NodeList() { - proofs = append(proofs, blob) - } - // Send back anything accumulated + // Send back anything accumulated (or empty in case of errors) return p2p.Send(peer.rw, AccountRangeMsg, &AccountRangePacket{ ID: req.ID, Accounts: accounts, @@ -243,111 +193,10 @@ func handleMessage(backend Backend, peer *Peer) error { if err := msg.Decode(&req); err != nil { return fmt.Errorf("%w: message %v: %v", errDecode, msg, err) } - if req.Bytes > softResponseLimit { - req.Bytes = softResponseLimit - } - // TODO(karalabe): Do we want to enforce > 0 accounts and 1 account if origin is set? - // TODO(karalabe): - Logging locally is not ideal as remote faulst annoy the local user - // TODO(karalabe): - Dropping the remote peer is less flexible wrt client bugs (slow is better than non-functional) + // Service the request, potentially returning nothing in case of errors + slots, proofs := ServiceGetStorageRangesQuery(backend.Chain(), &req) - // Calculate the hard limit at which to abort, even if mid storage trie - hardLimit := uint64(float64(req.Bytes) * (1 + stateLookupSlack)) - - // Retrieve storage ranges until the packet limit is reached - var ( - slots [][]*StorageData - proofs [][]byte - size uint64 - ) - for _, account := range req.Accounts { - // If we've exceeded the requested data limit, abort without opening - // a new storage range (that we'd need to prove due to exceeded size) - if size >= req.Bytes { - break - } - // The first account might start from a different origin and end sooner - var origin common.Hash - if len(req.Origin) > 0 { - origin, req.Origin = common.BytesToHash(req.Origin), nil - } - var limit = common.HexToHash("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff") - if len(req.Limit) > 0 { - limit, req.Limit = common.BytesToHash(req.Limit), nil - } - // Retrieve the requested state and bail out if non existent - it, err := backend.Chain().Snapshots().StorageIterator(req.Root, account, origin) - if err != nil { - return p2p.Send(peer.rw, StorageRangesMsg, &StorageRangesPacket{ID: req.ID}) - } - // Iterate over the requested range and pile slots up - var ( - storage []*StorageData - last common.Hash - abort bool - ) - for it.Next() { - if size >= hardLimit { - abort = true - break - } - hash, slot := it.Hash(), common.CopyBytes(it.Slot()) - - // Track the returned interval for the Merkle proofs - last = hash - - // Assemble the reply item - size += uint64(common.HashLength + len(slot)) - storage = append(storage, &StorageData{ - Hash: hash, - Body: slot, - }) - // If we've exceeded the request threshold, abort - if bytes.Compare(hash[:], limit[:]) >= 0 { - break - } - } - slots = append(slots, storage) - it.Release() - - // Generate the Merkle proofs for the first and last storage slot, but - // only if the response was capped. If the entire storage trie included - // in the response, no need for any proofs. - if origin != (common.Hash{}) || abort { - // Request started at a non-zero hash or was capped prematurely, add - // the endpoint Merkle proofs - accTrie, err := trie.New(req.Root, backend.Chain().StateCache().TrieDB()) - if err != nil { - return p2p.Send(peer.rw, StorageRangesMsg, &StorageRangesPacket{ID: req.ID}) - } - var acc types.StateAccount - if err := rlp.DecodeBytes(accTrie.Get(account[:]), &acc); err != nil { - return p2p.Send(peer.rw, StorageRangesMsg, &StorageRangesPacket{ID: req.ID}) - } - stTrie, err := trie.New(acc.Root, backend.Chain().StateCache().TrieDB()) - if err != nil { - return p2p.Send(peer.rw, StorageRangesMsg, &StorageRangesPacket{ID: req.ID}) - } - proof := light.NewNodeSet() - if err := stTrie.Prove(origin[:], 0, proof); err != nil { - log.Warn("Failed to prove storage range", "origin", req.Origin, "err", err) - return p2p.Send(peer.rw, StorageRangesMsg, &StorageRangesPacket{ID: req.ID}) - } - if last != (common.Hash{}) { - if err := stTrie.Prove(last[:], 0, proof); err != nil { - log.Warn("Failed to prove storage range", "last", last, "err", err) - return p2p.Send(peer.rw, StorageRangesMsg, &StorageRangesPacket{ID: req.ID}) - } - } - for _, blob := range proof.NodeList() { - proofs = append(proofs, blob) - } - // Proof terminates the reply as proofs are only added if a node - // refuses to serve more data (exception when a contract fetch is - // finishing, but that's that). - break - } - } - // Send back anything accumulated + // Send back anything accumulated (or empty in case of errors) return p2p.Send(peer.rw, StorageRangesMsg, &StorageRangesPacket{ ID: req.ID, Slots: slots, @@ -378,31 +227,10 @@ func handleMessage(backend Backend, peer *Peer) error { if err := msg.Decode(&req); err != nil { return fmt.Errorf("%w: message %v: %v", errDecode, msg, err) } - if req.Bytes > softResponseLimit { - req.Bytes = softResponseLimit - } - if len(req.Hashes) > maxCodeLookups { - req.Hashes = req.Hashes[:maxCodeLookups] - } - // Retrieve bytecodes until the packet size limit is reached - var ( - codes [][]byte - bytes uint64 - ) - for _, hash := range req.Hashes { - if hash == emptyCode { - // Peers should not request the empty code, but if they do, at - // least sent them back a correct response without db lookups - codes = append(codes, []byte{}) - } else if blob, err := backend.Chain().ContractCode(hash); err == nil { - codes = append(codes, blob) - bytes += uint64(len(blob)) - } - if bytes > req.Bytes { - break - } - } - // Send back anything accumulated + // Service the request, potentially returning nothing in case of errors + codes := ServiceGetByteCodesQuery(backend.Chain(), &req) + + // Send back anything accumulated (or empty in case of errors) return p2p.Send(peer.rw, ByteCodesMsg, &ByteCodesPacket{ ID: req.ID, Codes: codes, @@ -424,80 +252,12 @@ func handleMessage(backend Backend, peer *Peer) error { if err := msg.Decode(&req); err != nil { return fmt.Errorf("%w: message %v: %v", errDecode, msg, err) } - if req.Bytes > softResponseLimit { - req.Bytes = softResponseLimit - } - // Make sure we have the state associated with the request - triedb := backend.Chain().StateCache().TrieDB() - - accTrie, err := trie.NewSecure(req.Root, triedb) + // Service the request, potentially returning nothing in case of errors + nodes, err := ServiceGetTrieNodesQuery(backend.Chain(), &req, start) if err != nil { - // We don't have the requested state available, bail out - return p2p.Send(peer.rw, TrieNodesMsg, &TrieNodesPacket{ID: req.ID}) + return err } - snap := backend.Chain().Snapshots().Snapshot(req.Root) - if snap == nil { - // We don't have the requested state snapshotted yet, bail out. - // In reality we could still serve using the account and storage - // tries only, but let's protect the node a bit while it's doing - // snapshot generation. - return p2p.Send(peer.rw, TrieNodesMsg, &TrieNodesPacket{ID: req.ID}) - } - // Retrieve trie nodes until the packet size limit is reached - var ( - nodes [][]byte - bytes uint64 - loads int // Trie hash expansions to cound database reads - ) - for _, pathset := range req.Paths { - switch len(pathset) { - case 0: - // Ensure we penalize invalid requests - return fmt.Errorf("%w: zero-item pathset requested", errBadRequest) - - case 1: - // If we're only retrieving an account trie node, fetch it directly - blob, resolved, err := accTrie.TryGetNode(pathset[0]) - loads += resolved // always account database reads, even for failures - if err != nil { - break - } - nodes = append(nodes, blob) - bytes += uint64(len(blob)) - - default: - // Storage slots requested, open the storage trie and retrieve from there - account, err := snap.Account(common.BytesToHash(pathset[0])) - loads++ // always account database reads, even for failures - if err != nil || account == nil { - break - } - stTrie, err := trie.NewSecure(common.BytesToHash(account.Root), triedb) - loads++ // always account database reads, even for failures - if err != nil { - break - } - for _, path := range pathset[1:] { - blob, resolved, err := stTrie.TryGetNode(path) - loads += resolved // always account database reads, even for failures - if err != nil { - break - } - nodes = append(nodes, blob) - bytes += uint64(len(blob)) - - // Sanity check limits to avoid DoS on the store trie loads - if bytes > req.Bytes || loads > maxTrieNodeLookups || time.Since(start) > maxTrieNodeTimeSpent { - break - } - } - } - // Abort request processing if we've exceeded our limits - if bytes > req.Bytes || loads > maxTrieNodeLookups || time.Since(start) > maxTrieNodeTimeSpent { - break - } - } - // Send back anything accumulated + // Send back anything accumulated (or empty in case of errors) return p2p.Send(peer.rw, TrieNodesMsg, &TrieNodesPacket{ ID: req.ID, Nodes: nodes, @@ -518,6 +278,282 @@ func handleMessage(backend Backend, peer *Peer) error { } } +// ServiceGetAccountRangeQuery assembles the response to an account range query. +// It is exposed to allow external packages to test protocol behavior. +func ServiceGetAccountRangeQuery(chain *core.BlockChain, req *GetAccountRangePacket) ([]*AccountData, [][]byte) { + if req.Bytes > softResponseLimit { + req.Bytes = softResponseLimit + } + // Retrieve the requested state and bail out if non existent + tr, err := trie.New(req.Root, chain.StateCache().TrieDB()) + if err != nil { + return nil, nil + } + it, err := chain.Snapshots().AccountIterator(req.Root, req.Origin) + if err != nil { + return nil, nil + } + // Iterate over the requested range and pile accounts up + var ( + accounts []*AccountData + size uint64 + last common.Hash + ) + for it.Next() && size < req.Bytes { + hash, account := it.Hash(), common.CopyBytes(it.Account()) + + // Track the returned interval for the Merkle proofs + last = hash + + // Assemble the reply item + size += uint64(common.HashLength + len(account)) + accounts = append(accounts, &AccountData{ + Hash: hash, + Body: account, + }) + // If we've exceeded the request threshold, abort + if bytes.Compare(hash[:], req.Limit[:]) >= 0 { + break + } + } + it.Release() + + // Generate the Merkle proofs for the first and last account + proof := light.NewNodeSet() + if err := tr.Prove(req.Origin[:], 0, proof); err != nil { + log.Warn("Failed to prove account range", "origin", req.Origin, "err", err) + return nil, nil + } + if last != (common.Hash{}) { + if err := tr.Prove(last[:], 0, proof); err != nil { + log.Warn("Failed to prove account range", "last", last, "err", err) + return nil, nil + } + } + var proofs [][]byte + for _, blob := range proof.NodeList() { + proofs = append(proofs, blob) + } + return accounts, proofs +} + +func ServiceGetStorageRangesQuery(chain *core.BlockChain, req *GetStorageRangesPacket) ([][]*StorageData, [][]byte) { + if req.Bytes > softResponseLimit { + req.Bytes = softResponseLimit + } + // TODO(karalabe): Do we want to enforce > 0 accounts and 1 account if origin is set? + // TODO(karalabe): - Logging locally is not ideal as remote faulst annoy the local user + // TODO(karalabe): - Dropping the remote peer is less flexible wrt client bugs (slow is better than non-functional) + + // Calculate the hard limit at which to abort, even if mid storage trie + hardLimit := uint64(float64(req.Bytes) * (1 + stateLookupSlack)) + + // Retrieve storage ranges until the packet limit is reached + var ( + slots [][]*StorageData + proofs [][]byte + size uint64 + ) + for _, account := range req.Accounts { + // If we've exceeded the requested data limit, abort without opening + // a new storage range (that we'd need to prove due to exceeded size) + if size >= req.Bytes { + break + } + // The first account might start from a different origin and end sooner + var origin common.Hash + if len(req.Origin) > 0 { + origin, req.Origin = common.BytesToHash(req.Origin), nil + } + var limit = common.HexToHash("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff") + if len(req.Limit) > 0 { + limit, req.Limit = common.BytesToHash(req.Limit), nil + } + // Retrieve the requested state and bail out if non existent + it, err := chain.Snapshots().StorageIterator(req.Root, account, origin) + if err != nil { + return nil, nil + } + // Iterate over the requested range and pile slots up + var ( + storage []*StorageData + last common.Hash + abort bool + ) + for it.Next() { + if size >= hardLimit { + abort = true + break + } + hash, slot := it.Hash(), common.CopyBytes(it.Slot()) + + // Track the returned interval for the Merkle proofs + last = hash + + // Assemble the reply item + size += uint64(common.HashLength + len(slot)) + storage = append(storage, &StorageData{ + Hash: hash, + Body: slot, + }) + // If we've exceeded the request threshold, abort + if bytes.Compare(hash[:], limit[:]) >= 0 { + break + } + } + slots = append(slots, storage) + it.Release() + + // Generate the Merkle proofs for the first and last storage slot, but + // only if the response was capped. If the entire storage trie included + // in the response, no need for any proofs. + if origin != (common.Hash{}) || abort { + // Request started at a non-zero hash or was capped prematurely, add + // the endpoint Merkle proofs + accTrie, err := trie.New(req.Root, chain.StateCache().TrieDB()) + if err != nil { + return nil, nil + } + var acc types.StateAccount + if err := rlp.DecodeBytes(accTrie.Get(account[:]), &acc); err != nil { + return nil, nil + } + stTrie, err := trie.New(acc.Root, chain.StateCache().TrieDB()) + if err != nil { + return nil, nil + } + proof := light.NewNodeSet() + if err := stTrie.Prove(origin[:], 0, proof); err != nil { + log.Warn("Failed to prove storage range", "origin", req.Origin, "err", err) + return nil, nil + } + if last != (common.Hash{}) { + if err := stTrie.Prove(last[:], 0, proof); err != nil { + log.Warn("Failed to prove storage range", "last", last, "err", err) + return nil, nil + } + } + for _, blob := range proof.NodeList() { + proofs = append(proofs, blob) + } + // Proof terminates the reply as proofs are only added if a node + // refuses to serve more data (exception when a contract fetch is + // finishing, but that's that). + break + } + } + return slots, proofs +} + +// ServiceGetByteCodesQuery assembles the response to a byte codes query. +// It is exposed to allow external packages to test protocol behavior. +func ServiceGetByteCodesQuery(chain *core.BlockChain, req *GetByteCodesPacket) [][]byte { + if req.Bytes > softResponseLimit { + req.Bytes = softResponseLimit + } + if len(req.Hashes) > maxCodeLookups { + req.Hashes = req.Hashes[:maxCodeLookups] + } + // Retrieve bytecodes until the packet size limit is reached + var ( + codes [][]byte + bytes uint64 + ) + for _, hash := range req.Hashes { + if hash == emptyCode { + // Peers should not request the empty code, but if they do, at + // least sent them back a correct response without db lookups + codes = append(codes, []byte{}) + } else if blob, err := chain.ContractCode(hash); err == nil { + codes = append(codes, blob) + bytes += uint64(len(blob)) + } + if bytes > req.Bytes { + break + } + } + return codes +} + +// ServiceGetTrieNodesQuery assembles the response to a trie nodes query. +// It is exposed to allow external packages to test protocol behavior. +func ServiceGetTrieNodesQuery(chain *core.BlockChain, req *GetTrieNodesPacket, start time.Time) ([][]byte, error) { + if req.Bytes > softResponseLimit { + req.Bytes = softResponseLimit + } + // Make sure we have the state associated with the request + triedb := chain.StateCache().TrieDB() + + accTrie, err := trie.NewSecure(req.Root, triedb) + if err != nil { + // We don't have the requested state available, bail out + return nil, nil + } + snap := chain.Snapshots().Snapshot(req.Root) + if snap == nil { + // We don't have the requested state snapshotted yet, bail out. + // In reality we could still serve using the account and storage + // tries only, but let's protect the node a bit while it's doing + // snapshot generation. + return nil, nil + } + // Retrieve trie nodes until the packet size limit is reached + var ( + nodes [][]byte + bytes uint64 + loads int // Trie hash expansions to cound database reads + ) + for _, pathset := range req.Paths { + switch len(pathset) { + case 0: + // Ensure we penalize invalid requests + return nil, fmt.Errorf("%w: zero-item pathset requested", errBadRequest) + + case 1: + // If we're only retrieving an account trie node, fetch it directly + blob, resolved, err := accTrie.TryGetNode(pathset[0]) + loads += resolved // always account database reads, even for failures + if err != nil { + break + } + nodes = append(nodes, blob) + bytes += uint64(len(blob)) + + default: + // Storage slots requested, open the storage trie and retrieve from there + account, err := snap.Account(common.BytesToHash(pathset[0])) + loads++ // always account database reads, even for failures + if err != nil || account == nil { + break + } + stTrie, err := trie.NewSecure(common.BytesToHash(account.Root), triedb) + loads++ // always account database reads, even for failures + if err != nil { + break + } + for _, path := range pathset[1:] { + blob, resolved, err := stTrie.TryGetNode(path) + loads += resolved // always account database reads, even for failures + if err != nil { + break + } + nodes = append(nodes, blob) + bytes += uint64(len(blob)) + + // Sanity check limits to avoid DoS on the store trie loads + if bytes > req.Bytes || loads > maxTrieNodeLookups || time.Since(start) > maxTrieNodeTimeSpent { + break + } + } + } + // Abort request processing if we've exceeded our limits + if bytes > req.Bytes || loads > maxTrieNodeLookups || time.Since(start) > maxTrieNodeTimeSpent { + break + } + } + return nodes, nil +} + // NodeInfo represents a short summary of the `snap` sub-protocol metadata // known about the host peer. type NodeInfo struct{} diff --git a/eth/protocols/snap/peer.go b/eth/protocols/snap/peer.go index cf0ce65bd7..87a62d2f8a 100644 --- a/eth/protocols/snap/peer.go +++ b/eth/protocols/snap/peer.go @@ -33,9 +33,9 @@ type Peer struct { logger log.Logger // Contextual logger with the peer id injected } -// newPeer create a wrapper for a network connection and negotiated protocol +// NewPeer create a wrapper for a network connection and negotiated protocol // version. -func newPeer(version uint, p *p2p.Peer, rw p2p.MsgReadWriter) *Peer { +func NewPeer(version uint, p *p2p.Peer, rw p2p.MsgReadWriter) *Peer { id := p.ID().String() return &Peer{ id: id, @@ -46,6 +46,16 @@ func newPeer(version uint, p *p2p.Peer, rw p2p.MsgReadWriter) *Peer { } } +// NewFakePeer create a fake snap peer without a backing p2p peer, for testing purposes. +func NewFakePeer(version uint, id string, rw p2p.MsgReadWriter) *Peer { + return &Peer{ + id: id, + rw: rw, + version: version, + logger: log.New("peer", id[:8]), + } +} + // ID retrieves the peer's unique identifier. func (p *Peer) ID() string { return p.id diff --git a/eth/protocols/snap/protocol.go b/eth/protocols/snap/protocol.go index 5528e9212e..60a254f396 100644 --- a/eth/protocols/snap/protocol.go +++ b/eth/protocols/snap/protocol.go @@ -27,7 +27,7 @@ import ( // Constants to match up protocol versions and messages const ( - snap1 = 1 + SNAP1 = 1 ) // ProtocolName is the official short name of the `snap` protocol used during @@ -36,11 +36,11 @@ const ProtocolName = "snap" // ProtocolVersions are the supported versions of the `snap` protocol (first // is primary). -var ProtocolVersions = []uint{snap1} +var ProtocolVersions = []uint{SNAP1} // protocolLengths are the number of implemented message corresponding to // different protocol versions. -var protocolLengths = map[uint]uint64{snap1: 8} +var protocolLengths = map[uint]uint64{SNAP1: 8} // maxMessageSize is the maximum cap on the size of a protocol message. const maxMessageSize = 10 * 1024 * 1024 diff --git a/eth/protocols/snap/sync.go b/eth/protocols/snap/sync.go index 9ef9d75711..be8644a5a4 100644 --- a/eth/protocols/snap/sync.go +++ b/eth/protocols/snap/sync.go @@ -325,10 +325,10 @@ type healTask struct { codeTasks map[common.Hash]struct{} // Set of byte code tasks currently queued for retrieval } -// syncProgress is a database entry to allow suspending and resuming a snapshot state +// SyncProgress is a database entry to allow suspending and resuming a snapshot state // sync. Opposed to full and fast sync, there is no way to restart a suspended // snap sync without prior knowledge of the suspension point. -type syncProgress struct { +type SyncProgress struct { Tasks []*accountTask // The suspended account tasks (contract tasks within) // Status report during syncing phase @@ -342,12 +342,15 @@ type syncProgress struct { // Status report during healing phase TrienodeHealSynced uint64 // Number of state trie nodes downloaded TrienodeHealBytes common.StorageSize // Number of state trie bytes persisted to disk - TrienodeHealDups uint64 // Number of state trie nodes already processed - TrienodeHealNops uint64 // Number of state trie nodes not requested BytecodeHealSynced uint64 // Number of bytecodes downloaded BytecodeHealBytes common.StorageSize // Number of bytecodes persisted to disk - BytecodeHealDups uint64 // Number of bytecodes already processed - BytecodeHealNops uint64 // Number of bytecodes not requested +} + +// SyncPending is analogous to SyncProgress, but it's used to report on pending +// ephemeral sync progress that doesn't get persisted into the database. +type SyncPending struct { + TrienodeHeal uint64 // Number of state trie nodes pending + BytecodeHeal uint64 // Number of bytecodes pending } // SyncPeer abstracts out the methods required for a peer to be synced against @@ -543,7 +546,7 @@ func (s *Syncer) Sync(root common.Hash, cancel chan struct{}) error { s.lock.Lock() s.root = root s.healer = &healTask{ - scheduler: state.NewStateSync(root, s.db, nil, s.onHealState), + scheduler: state.NewStateSync(root, s.db, s.onHealState), trieTasks: make(map[common.Hash]trie.SyncPath), codeTasks: make(map[common.Hash]struct{}), } @@ -671,7 +674,7 @@ func (s *Syncer) Sync(root common.Hash, cancel chan struct{}) error { // loadSyncStatus retrieves a previously aborted sync status from the database, // or generates a fresh one if none is available. func (s *Syncer) loadSyncStatus() { - var progress syncProgress + var progress SyncProgress if status := rawdb.ReadSnapshotSyncStatus(s.db); status != nil { if err := json.Unmarshal(status, &progress); err != nil { @@ -775,7 +778,7 @@ func (s *Syncer) saveSyncStatus() { } } // Store the actual progress markers - progress := &syncProgress{ + progress := &SyncProgress{ Tasks: s.tasks, AccountSynced: s.accountSynced, AccountBytes: s.accountBytes, @@ -795,6 +798,31 @@ func (s *Syncer) saveSyncStatus() { rawdb.WriteSnapshotSyncStatus(s.db, status) } +// Progress returns the snap sync status statistics. +func (s *Syncer) Progress() (*SyncProgress, *SyncPending) { + s.lock.Lock() + defer s.lock.Unlock() + + progress := &SyncProgress{ + AccountSynced: s.accountSynced, + AccountBytes: s.accountBytes, + BytecodeSynced: s.bytecodeSynced, + BytecodeBytes: s.bytecodeBytes, + StorageSynced: s.storageSynced, + StorageBytes: s.storageBytes, + TrienodeHealSynced: s.trienodeHealSynced, + TrienodeHealBytes: s.trienodeHealBytes, + BytecodeHealSynced: s.bytecodeHealSynced, + BytecodeHealBytes: s.bytecodeHealBytes, + } + pending := new(SyncPending) + if s.healer != nil { + pending.TrienodeHeal = uint64(len(s.healer.trieTasks)) + pending.BytecodeHeal = uint64(len(s.healer.codeTasks)) + } + return progress, pending +} + // cleanAccountTasks removes account range retrieval tasks that have already been // completed. func (s *Syncer) cleanAccountTasks() { diff --git a/eth/state_accessor.go b/eth/state_accessor.go index ca2002b60d..f01db93a67 100644 --- a/eth/state_accessor.go +++ b/eth/state_accessor.go @@ -30,12 +30,22 @@ import ( "github.com/ethereum/go-ethereum/trie" ) -// stateAtBlock retrieves the state database associated with a certain block. +// StateAtBlock retrieves the state database associated with a certain block. // If no state is locally available for the given block, a number of blocks // are attempted to be reexecuted to generate the desired state. The optional // base layer statedb can be passed then it's regarded as the statedb of the // parent block. -func (eth *Ethereum) stateAtBlock(block *types.Block, reexec uint64, base *state.StateDB, checkLive bool) (statedb *state.StateDB, err error) { +// Parameters: +// - block: The block for which we want the state (== state at the stateRoot of the parent) +// - reexec: The maximum number of blocks to reprocess trying to obtain the desired state +// - base: If the caller is tracing multiple blocks, the caller can provide the parent state +// continuously from the callsite. +// - checklive: if true, then the live 'blockchain' state database is used. If the caller want to +// perform Commit or other 'save-to-disk' changes, this should be set to false to avoid +// storing trash persistently +// - preferDisk: this arg can be used by the caller to signal that even though the 'base' is provided, +// it would be preferrable to start from a fresh state, if we have it on disk. +func (eth *Ethereum) StateAtBlock(block *types.Block, reexec uint64, base *state.StateDB, checkLive bool, preferDisk bool) (statedb *state.StateDB, err error) { var ( current *types.Block database state.Database @@ -50,6 +60,15 @@ func (eth *Ethereum) stateAtBlock(block *types.Block, reexec uint64, base *state } } if base != nil { + if preferDisk { + // Create an ephemeral trie.Database for isolating the live one. Otherwise + // the internal junks created by tracing will be persisted into the disk. + database = state.NewDatabaseWithConfig(eth.chainDb, &trie.Config{Cache: 16}) + if statedb, err = state.New(block.Root(), database, nil); err == nil { + log.Info("Found disk backend for state trie", "root", block.Root(), "number", block.Number()) + return statedb, nil + } + } // The optional base statedb is given, mark the start point as parent block statedb, database, report = base, base.Database(), false current = eth.blockchain.GetBlock(block.ParentHash(), block.NumberU64()-1) @@ -152,7 +171,7 @@ func (eth *Ethereum) stateAtTransaction(block *types.Block, txIndex int, reexec } // Lookup the statedb of parent block from the live database, // otherwise regenerate it on the flight. - statedb, err := eth.stateAtBlock(parent, reexec, nil, true) + statedb, err := eth.StateAtBlock(parent, reexec, nil, true, false) if err != nil { return nil, vm.BlockContext{}, nil, err } diff --git a/eth/sync.go b/eth/sync.go index aaac6bef90..b8ac67d3b2 100644 --- a/eth/sync.go +++ b/eth/sync.go @@ -145,7 +145,10 @@ func (cs *chainSyncer) nextSyncOp() *chainSyncOp { if cs.doneCh != nil { return nil // Sync already running. } - + // Disable the td based sync trigger after the transition + if cs.handler.merger.TDDReached() { + return nil + } // Ensure we're at minimum peer count. minPeers := defaultMinSyncPeers if cs.forced { @@ -162,10 +165,7 @@ func (cs *chainSyncer) nextSyncOp() *chainSyncOp { return nil } mode, ourTD := cs.modeAndLocalHead() - if mode == downloader.FastSync && atomic.LoadUint32(&cs.handler.snapSync) == 1 { - // Fast sync via the snap protocol - mode = downloader.SnapSync - } + op := peerToSyncOp(mode, peer) if op.td.Cmp(ourTD) <= 0 { return nil // We're in sync. @@ -179,19 +179,19 @@ func peerToSyncOp(mode downloader.SyncMode, p *eth.Peer) *chainSyncOp { } func (cs *chainSyncer) modeAndLocalHead() (downloader.SyncMode, *big.Int) { - // If we're in fast sync mode, return that directly - if atomic.LoadUint32(&cs.handler.fastSync) == 1 { + // If we're in snap sync mode, return that directly + if atomic.LoadUint32(&cs.handler.snapSync) == 1 { block := cs.handler.chain.CurrentFastBlock() td := cs.handler.chain.GetTd(block.Hash(), block.NumberU64()) - return downloader.FastSync, td + return downloader.SnapSync, td } // We are probably in full sync, but we might have rewound to before the - // fast sync pivot, check if we should reenable + // snap sync pivot, check if we should reenable if pivot := rawdb.ReadLastPivotNumber(cs.handler.database); pivot != nil { if head := cs.handler.chain.CurrentBlock(); head.NumberU64() < *pivot { block := cs.handler.chain.CurrentFastBlock() td := cs.handler.chain.GetTd(block.Hash(), block.NumberU64()) - return downloader.FastSync, td + return downloader.SnapSync, td } } // Nope, we're really full syncing @@ -208,15 +208,15 @@ func (cs *chainSyncer) startSync(op *chainSyncOp) { // doSync synchronizes the local blockchain with a remote peer. func (h *handler) doSync(op *chainSyncOp) error { - if op.mode == downloader.FastSync || op.mode == downloader.SnapSync { - // Before launch the fast sync, we have to ensure user uses the same + if op.mode == downloader.SnapSync { + // Before launch the snap sync, we have to ensure user uses the same // txlookup limit. - // The main concern here is: during the fast sync Geth won't index the + // The main concern here is: during the snap sync Geth won't index the // block(generate tx indices) before the HEAD-limit. But if user changes - // the limit in the next fast sync(e.g. user kill Geth manually and + // the limit in the next snap sync(e.g. user kill Geth manually and // restart) then it will be hard for Geth to figure out the oldest block // has been indexed. So here for the user-experience wise, it's non-optimal - // that user can't change limit during the fast sync. If changed, Geth + // that user can't change limit during the snap sync. If changed, Geth // will just blindly use the original one. limit := h.chain.TxLookupLimit() if stored := rawdb.ReadFastTxLookupLimit(h.database); stored == nil { @@ -226,15 +226,11 @@ func (h *handler) doSync(op *chainSyncOp) error { log.Warn("Update txLookup limit", "provided", limit, "updated", *stored) } } - // Run the sync cycle, and disable fast sync if we're past the pivot block + // Run the sync cycle, and disable snap sync if we're past the pivot block err := h.downloader.Synchronise(op.peer.ID(), op.head, op.td, op.mode) if err != nil { return err } - if atomic.LoadUint32(&h.fastSync) == 1 { - log.Info("Fast sync complete, auto disabling") - atomic.StoreUint32(&h.fastSync, 0) - } if atomic.LoadUint32(&h.snapSync) == 1 { log.Info("Snap sync complete, auto disabling") atomic.StoreUint32(&h.snapSync, 0) diff --git a/eth/sync_test.go b/eth/sync_test.go index e96b9ee81f..929a2a9d18 100644 --- a/eth/sync_test.go +++ b/eth/sync_test.go @@ -23,57 +23,74 @@ import ( "github.com/ethereum/go-ethereum/eth/downloader" "github.com/ethereum/go-ethereum/eth/protocols/eth" + "github.com/ethereum/go-ethereum/eth/protocols/snap" "github.com/ethereum/go-ethereum/p2p" "github.com/ethereum/go-ethereum/p2p/enode" ) -// Tests that fast sync is disabled after a successful sync cycle. -func TestFastSyncDisabling66(t *testing.T) { testFastSyncDisabling(t, eth.ETH66) } +// Tests that snap sync is disabled after a successful sync cycle. +func TestSnapSyncDisabling66(t *testing.T) { testSnapSyncDisabling(t, eth.ETH66, snap.SNAP1) } -// Tests that fast sync gets disabled as soon as a real block is successfully +// Tests that snap sync gets disabled as soon as a real block is successfully // imported into the blockchain. -func testFastSyncDisabling(t *testing.T, protocol uint) { +func testSnapSyncDisabling(t *testing.T, ethVer uint, snapVer uint) { t.Parallel() - // Create an empty handler and ensure it's in fast sync mode + // Create an empty handler and ensure it's in snap sync mode empty := newTestHandler() - if atomic.LoadUint32(&empty.handler.fastSync) == 0 { - t.Fatalf("fast sync disabled on pristine blockchain") + if atomic.LoadUint32(&empty.handler.snapSync) == 0 { + t.Fatalf("snap sync disabled on pristine blockchain") } defer empty.close() - // Create a full handler and ensure fast sync ends up disabled + // Create a full handler and ensure snap sync ends up disabled full := newTestHandlerWithBlocks(1024) - if atomic.LoadUint32(&full.handler.fastSync) == 1 { - t.Fatalf("fast sync not disabled on non-empty blockchain") + if atomic.LoadUint32(&full.handler.snapSync) == 1 { + t.Fatalf("snap sync not disabled on non-empty blockchain") } defer full.close() - // Sync up the two handlers - emptyPipe, fullPipe := p2p.MsgPipe() - defer emptyPipe.Close() - defer fullPipe.Close() + // Sync up the two handlers via both `eth` and `snap` + caps := []p2p.Cap{{Name: "eth", Version: ethVer}, {Name: "snap", Version: snapVer}} - emptyPeer := eth.NewPeer(protocol, p2p.NewPeer(enode.ID{1}, "", nil), emptyPipe, empty.txpool) - fullPeer := eth.NewPeer(protocol, p2p.NewPeer(enode.ID{2}, "", nil), fullPipe, full.txpool) - defer emptyPeer.Close() - defer fullPeer.Close() + emptyPipeEth, fullPipeEth := p2p.MsgPipe() + defer emptyPipeEth.Close() + defer fullPipeEth.Close() - go empty.handler.runEthPeer(emptyPeer, func(peer *eth.Peer) error { + emptyPeerEth := eth.NewPeer(ethVer, p2p.NewPeer(enode.ID{1}, "", caps), emptyPipeEth, empty.txpool) + fullPeerEth := eth.NewPeer(ethVer, p2p.NewPeer(enode.ID{2}, "", caps), fullPipeEth, full.txpool) + defer emptyPeerEth.Close() + defer fullPeerEth.Close() + + go empty.handler.runEthPeer(emptyPeerEth, func(peer *eth.Peer) error { return eth.Handle((*ethHandler)(empty.handler), peer) }) - go full.handler.runEthPeer(fullPeer, func(peer *eth.Peer) error { + go full.handler.runEthPeer(fullPeerEth, func(peer *eth.Peer) error { return eth.Handle((*ethHandler)(full.handler), peer) }) + + emptyPipeSnap, fullPipeSnap := p2p.MsgPipe() + defer emptyPipeSnap.Close() + defer fullPipeSnap.Close() + + emptyPeerSnap := snap.NewPeer(snapVer, p2p.NewPeer(enode.ID{1}, "", caps), emptyPipeSnap) + fullPeerSnap := snap.NewPeer(snapVer, p2p.NewPeer(enode.ID{2}, "", caps), fullPipeSnap) + + go empty.handler.runSnapExtension(emptyPeerSnap, func(peer *snap.Peer) error { + return snap.Handle((*snapHandler)(empty.handler), peer) + }) + go full.handler.runSnapExtension(fullPeerSnap, func(peer *snap.Peer) error { + return snap.Handle((*snapHandler)(full.handler), peer) + }) // Wait a bit for the above handlers to start time.Sleep(250 * time.Millisecond) - // Check that fast sync was disabled - op := peerToSyncOp(downloader.FastSync, empty.handler.peers.peerWithHighestTD()) + // Check that snap sync was disabled + op := peerToSyncOp(downloader.SnapSync, empty.handler.peers.peerWithHighestTD()) if err := empty.handler.doSync(op); err != nil { t.Fatal("sync failed:", err) } - if atomic.LoadUint32(&empty.handler.fastSync) == 1 { - t.Fatalf("fast sync not disabled after successful synchronisation") + if atomic.LoadUint32(&empty.handler.snapSync) == 1 { + t.Fatalf("snap sync not disabled after successful synchronisation") } } diff --git a/eth/tracers/api.go b/eth/tracers/api.go index aee3f68280..5f88629a70 100644 --- a/eth/tracers/api.go +++ b/eth/tracers/api.go @@ -36,6 +36,7 @@ import ( "github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" + "github.com/ethereum/go-ethereum/eth/tracers/logger" "github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/internal/ethapi" "github.com/ethereum/go-ethereum/log" @@ -53,6 +54,13 @@ const ( // and reexecute to produce missing historical state necessary to run a specific // trace. defaultTraceReexec = uint64(128) + + // defaultTracechainMemLimit is the size of the triedb, at which traceChain + // switches over and tries to use a disk-backed database instead of building + // on top of memory. + // For non-archive nodes, this limit _will_ be overblown, as disk-backed tries + // will only be found every ~15K blocks or so. + defaultTracechainMemLimit = common.StorageSize(500 * 1024 * 1024) ) // Backend interface provides the common API services (that are provided by @@ -67,7 +75,10 @@ type Backend interface { ChainConfig() *params.ChainConfig Engine() consensus.Engine ChainDb() ethdb.Database - StateAtBlock(ctx context.Context, block *types.Block, reexec uint64, base *state.StateDB, checkLive bool) (*state.StateDB, error) + // StateAtBlock returns the state corresponding to the stateroot of the block. + // N.B: For executing transactions on block N, the required stateRoot is block N-1, + // so this method should be called with the parent. + StateAtBlock(ctx context.Context, block *types.Block, reexec uint64, base *state.StateDB, checkLive, preferDisk bool) (*state.StateDB, error) StateAtTransaction(ctx context.Context, block *types.Block, txIndex int, reexec uint64) (core.Message, vm.BlockContext, *state.StateDB, error) } @@ -155,7 +166,7 @@ func (api *API) blockByNumberAndHash(ctx context.Context, number rpc.BlockNumber // TraceConfig holds extra parameters to trace functions. type TraceConfig struct { - *vm.LogConfig + *logger.Config Tracer *string Timeout *string Reexec *uint64 @@ -164,7 +175,7 @@ type TraceConfig struct { // TraceCallConfig is the config for traceCall API. It holds one more // field to override the state for tracing. type TraceCallConfig struct { - *vm.LogConfig + *logger.Config Tracer *string Timeout *string Reexec *uint64 @@ -173,7 +184,7 @@ type TraceCallConfig struct { // StdTraceConfig holds extra parameters to standard-json trace functions. type StdTraceConfig struct { - vm.LogConfig + logger.Config Reexec *uint64 TxHash common.Hash } @@ -320,6 +331,7 @@ func (api *API) traceChain(ctx context.Context, start, end *types.Block, config } close(results) }() + var preferDisk bool // Feed all the blocks both into the tracer, as well as fast process concurrently for number = start.NumberU64(); number < end.NumberU64(); number++ { // Stop tracing if interruption was requested @@ -349,18 +361,24 @@ func (api *API) traceChain(ctx context.Context, start, end *types.Block, config } // Prepare the statedb for tracing. Don't use the live database for // tracing to avoid persisting state junks into the database. - statedb, err = api.backend.StateAtBlock(localctx, block, reexec, statedb, false) + statedb, err = api.backend.StateAtBlock(localctx, block, reexec, statedb, false, preferDisk) if err != nil { failed = err break } - if statedb.Database().TrieDB() != nil { + if trieDb := statedb.Database().TrieDB(); trieDb != nil { // Hold the reference for tracer, will be released at the final stage - statedb.Database().TrieDB().Reference(block.Root(), common.Hash{}) + trieDb.Reference(block.Root(), common.Hash{}) // Release the parent state because it's already held by the tracer if parent != (common.Hash{}) { - statedb.Database().TrieDB().Dereference(parent) + trieDb.Dereference(parent) + } + // Prefer disk if the trie db memory grows too much + s1, s2 := trieDb.Size() + if !preferDisk && (s1+s2) > defaultTracechainMemLimit { + log.Info("Switching to prefer-disk mode for tracing", "size", s1+s2) + preferDisk = true } } parent = block.Root() @@ -496,7 +514,7 @@ func (api *API) IntermediateRoots(ctx context.Context, hash common.Hash, config if config != nil && config.Reexec != nil { reexec = *config.Reexec } - statedb, err := api.backend.StateAtBlock(ctx, parent, reexec, nil, true) + statedb, err := api.backend.StateAtBlock(ctx, parent, reexec, nil, true, false) if err != nil { return nil, err } @@ -557,7 +575,7 @@ func (api *API) traceBlock(ctx context.Context, block *types.Block, config *Trac if config != nil && config.Reexec != nil { reexec = *config.Reexec } - statedb, err := api.backend.StateAtBlock(ctx, parent, reexec, nil, true) + statedb, err := api.backend.StateAtBlock(ctx, parent, reexec, nil, true, false) if err != nil { return nil, err } @@ -646,17 +664,17 @@ func (api *API) standardTraceBlockToFile(ctx context.Context, block *types.Block if config != nil && config.Reexec != nil { reexec = *config.Reexec } - statedb, err := api.backend.StateAtBlock(ctx, parent, reexec, nil, true) + statedb, err := api.backend.StateAtBlock(ctx, parent, reexec, nil, true, false) if err != nil { return nil, err } // Retrieve the tracing configurations, or use default values var ( - logConfig vm.LogConfig + logConfig logger.Config txHash common.Hash ) if config != nil { - logConfig = config.LogConfig + logConfig = config.Config txHash = config.TxHash } logConfig.Debug = true @@ -681,7 +699,7 @@ func (api *API) standardTraceBlockToFile(ctx context.Context, block *types.Block chainConfigCopy := new(params.ChainConfig) *chainConfigCopy = *chainConfig chainConfig = chainConfigCopy - if berlin := config.LogConfig.Overrides.BerlinBlock; berlin != nil { + if berlin := config.Config.Overrides.BerlinBlock; berlin != nil { chainConfig.BerlinBlock = berlin canon = false } @@ -713,7 +731,7 @@ func (api *API) standardTraceBlockToFile(ctx context.Context, block *types.Block writer = bufio.NewWriter(dump) vmConf = vm.Config{ Debug: true, - Tracer: vm.NewJSONLogger(&logConfig, writer), + Tracer: logger.NewJSONLogger(&logConfig, writer), EnablePreimageRecording: true, } } @@ -820,7 +838,7 @@ func (api *API) TraceCall(ctx context.Context, args ethapi.TransactionArgs, bloc if config != nil && config.Reexec != nil { reexec = *config.Reexec } - statedb, err := api.backend.StateAtBlock(ctx, block, reexec, nil, true) + statedb, err := api.backend.StateAtBlock(ctx, block, reexec, nil, true, false) if err != nil { return nil, err } @@ -840,10 +858,10 @@ func (api *API) TraceCall(ctx context.Context, args ethapi.TransactionArgs, bloc var traceConfig *TraceConfig if config != nil { traceConfig = &TraceConfig{ - LogConfig: config.LogConfig, - Tracer: config.Tracer, - Timeout: config.Timeout, - Reexec: config.Reexec, + Config: config.Config, + Tracer: config.Tracer, + Timeout: config.Timeout, + Reexec: config.Reexec, } } return api.traceTx(ctx, msg, new(Context), vmctx, statedb, traceConfig) @@ -855,12 +873,14 @@ func (api *API) TraceCall(ctx context.Context, args ethapi.TransactionArgs, bloc func (api *API) traceTx(ctx context.Context, message core.Message, txctx *Context, vmctx vm.BlockContext, statedb *state.StateDB, config *TraceConfig) (interface{}, error) { // Assemble the structured logger or the JavaScript tracer var ( - tracer vm.Tracer + tracer vm.EVMLogger err error txContext = core.NewEVMTxContext(message) ) switch { - case config != nil && config.Tracer != nil: + case config == nil: + tracer = logger.NewStructLogger(nil) + case config.Tracer != nil: // Define a meaningful timeout of a single transaction trace timeout := defaultTraceTimeout if config.Timeout != nil { @@ -868,25 +888,21 @@ func (api *API) traceTx(ctx context.Context, message core.Message, txctx *Contex return nil, err } } - // Construct the JavaScript tracer to execute with - if tracer, err = New(*config.Tracer, txctx); err != nil { + if t, err := New(*config.Tracer, txctx); err != nil { return nil, err + } else { + deadlineCtx, cancel := context.WithTimeout(ctx, timeout) + go func() { + <-deadlineCtx.Done() + if errors.Is(deadlineCtx.Err(), context.DeadlineExceeded) { + t.Stop(errors.New("execution timeout")) + } + }() + defer cancel() + tracer = t } - // Handle timeouts and RPC cancellations - deadlineCtx, cancel := context.WithTimeout(ctx, timeout) - go func() { - <-deadlineCtx.Done() - if deadlineCtx.Err() == context.DeadlineExceeded { - tracer.(*Tracer).Stop(errors.New("execution timeout")) - } - }() - defer cancel() - - case config == nil: - tracer = vm.NewStructLogger(nil) - default: - tracer = vm.NewStructLogger(config.LogConfig) + tracer = logger.NewStructLogger(config.Config) } // Run the transaction with tracing enabled. vmenv := vm.NewEVM(vmctx, txContext, statedb, api.backend.ChainConfig(), vm.Config{Debug: true, Tracer: tracer, NoBaseFee: true}) @@ -901,7 +917,7 @@ func (api *API) traceTx(ctx context.Context, message core.Message, txctx *Contex // Depending on the tracer type, format and return the output. switch tracer := tracer.(type) { - case *vm.StructLogger: + case *logger.StructLogger: // If the result contains a revert reason, return it. returnVal := fmt.Sprintf("%x", result.Return()) if len(result.Revert()) > 0 { @@ -914,7 +930,7 @@ func (api *API) traceTx(ctx context.Context, message core.Message, txctx *Contex StructLogs: ethapi.FormatLogs(tracer.StructLogs()), }, nil - case *Tracer: + case Tracer: return tracer.GetResult() default: diff --git a/eth/tracers/api_test.go b/eth/tracers/api_test.go index 9afd59d596..a3c0a72494 100644 --- a/eth/tracers/api_test.go +++ b/eth/tracers/api_test.go @@ -138,7 +138,7 @@ func (b *testBackend) ChainDb() ethdb.Database { return b.chaindb } -func (b *testBackend) StateAtBlock(ctx context.Context, block *types.Block, reexec uint64, base *state.StateDB, checkLive bool) (*state.StateDB, error) { +func (b *testBackend) StateAtBlock(ctx context.Context, block *types.Block, reexec uint64, base *state.StateDB, checkLive bool, preferDisk bool) (*state.StateDB, error) { statedb, err := b.chain.StateAt(block.Root()) if err != nil { return nil, errStateNotFound @@ -306,147 +306,6 @@ func TestTraceCall(t *testing.T) { } } -func TestOverriddenTraceCall(t *testing.T) { - t.Parallel() - - // Initialize test accounts - accounts := newAccounts(3) - genesis := &core.Genesis{Alloc: core.GenesisAlloc{ - accounts[0].addr: {Balance: big.NewInt(params.Ether)}, - accounts[1].addr: {Balance: big.NewInt(params.Ether)}, - accounts[2].addr: {Balance: big.NewInt(params.Ether)}, - }} - genBlocks := 10 - signer := types.HomesteadSigner{} - api := NewAPI(newTestBackend(t, genBlocks, genesis, func(i int, b *core.BlockGen) { - // Transfer from account[0] to account[1] - // value: 1000 wei - // fee: 0 wei - tx, _ := types.SignTx(types.NewTransaction(uint64(i), accounts[1].addr, big.NewInt(1000), params.TxGas, b.BaseFee(), nil), signer, accounts[0].key) - b.AddTx(tx) - })) - randomAccounts, tracer := newAccounts(3), "callTracer" - - var testSuite = []struct { - blockNumber rpc.BlockNumber - call ethapi.TransactionArgs - config *TraceCallConfig - expectErr error - expect *callTrace - }{ - // Succcessful call with state overriding - { - blockNumber: rpc.PendingBlockNumber, - call: ethapi.TransactionArgs{ - From: &randomAccounts[0].addr, - To: &randomAccounts[1].addr, - Value: (*hexutil.Big)(big.NewInt(1000)), - }, - config: &TraceCallConfig{ - Tracer: &tracer, - StateOverrides: ðapi.StateOverride{ - randomAccounts[0].addr: ethapi.OverrideAccount{Balance: newRPCBalance(new(big.Int).Mul(big.NewInt(1), big.NewInt(params.Ether)))}, - }, - }, - expectErr: nil, - expect: &callTrace{ - Type: "CALL", - From: randomAccounts[0].addr, - To: randomAccounts[1].addr, - Gas: newRPCUint64(24979000), - GasUsed: newRPCUint64(0), - Value: (*hexutil.Big)(big.NewInt(1000)), - }, - }, - // Invalid call without state overriding - { - blockNumber: rpc.PendingBlockNumber, - call: ethapi.TransactionArgs{ - From: &randomAccounts[0].addr, - To: &randomAccounts[1].addr, - Value: (*hexutil.Big)(big.NewInt(1000)), - }, - config: &TraceCallConfig{ - Tracer: &tracer, - }, - expectErr: core.ErrInsufficientFunds, - expect: nil, - }, - // Successful simple contract call - // - // // SPDX-License-Identifier: GPL-3.0 - // - // pragma solidity >=0.7.0 <0.8.0; - // - // /** - // * @title Storage - // * @dev Store & retrieve value in a variable - // */ - // contract Storage { - // uint256 public number; - // constructor() { - // number = block.number; - // } - // } - { - blockNumber: rpc.PendingBlockNumber, - call: ethapi.TransactionArgs{ - From: &randomAccounts[0].addr, - To: &randomAccounts[2].addr, - Data: newRPCBytes(common.Hex2Bytes("8381f58a")), // call number() - }, - config: &TraceCallConfig{ - Tracer: &tracer, - StateOverrides: ðapi.StateOverride{ - randomAccounts[2].addr: ethapi.OverrideAccount{ - Code: newRPCBytes(common.Hex2Bytes("6080604052348015600f57600080fd5b506004361060285760003560e01c80638381f58a14602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000548156fea2646970667358221220eab35ffa6ab2adfe380772a48b8ba78e82a1b820a18fcb6f59aa4efb20a5f60064736f6c63430007040033")), - StateDiff: newStates([]common.Hash{{}}, []common.Hash{common.BigToHash(big.NewInt(123))}), - }, - }, - }, - expectErr: nil, - expect: &callTrace{ - Type: "CALL", - From: randomAccounts[0].addr, - To: randomAccounts[2].addr, - Input: hexutil.Bytes(common.Hex2Bytes("8381f58a")), - Output: hexutil.Bytes(common.BigToHash(big.NewInt(123)).Bytes()), - Gas: newRPCUint64(24978936), - GasUsed: newRPCUint64(2283), - Value: (*hexutil.Big)(big.NewInt(0)), - }, - }, - } - for i, testspec := range testSuite { - result, err := api.TraceCall(context.Background(), testspec.call, rpc.BlockNumberOrHash{BlockNumber: &testspec.blockNumber}, testspec.config) - if testspec.expectErr != nil { - if err == nil { - t.Errorf("test %d: want error %v, have nothing", i, testspec.expectErr) - continue - } - if !errors.Is(err, testspec.expectErr) { - t.Errorf("test %d: error mismatch, want %v, have %v", i, testspec.expectErr, err) - } - } else { - if err != nil { - t.Errorf("test %d: want no error, have %v", i, err) - continue - } - ret := new(callTrace) - if err := json.Unmarshal(result.(json.RawMessage), ret); err != nil { - t.Fatalf("test %d: failed to unmarshal trace result: %v", i, err) - } - if !jsonEqual(ret, testspec.expect) { - // uncomment this for easier debugging - //have, _ := json.MarshalIndent(ret, "", " ") - //want, _ := json.MarshalIndent(testspec.expect, "", " ") - //t.Fatalf("trace mismatch: \nhave %+v\nwant %+v", string(have), string(want)) - t.Fatalf("trace mismatch: \nhave %+v\nwant %+v", ret, testspec.expect) - } - } - } -} - func TestTraceTransaction(t *testing.T) { t.Parallel() @@ -503,90 +362,177 @@ func TestTraceBlock(t *testing.T) { var testSuite = []struct { blockNumber rpc.BlockNumber config *TraceConfig - expect interface{} + want string expectErr error }{ // Trace genesis block, expect error { blockNumber: rpc.BlockNumber(0), - config: nil, - expect: nil, expectErr: errors.New("genesis is not traceable"), }, // Trace head block { blockNumber: rpc.BlockNumber(genBlocks), - config: nil, - expectErr: nil, - expect: []*txTraceResult{ - { - Result: ðapi.ExecutionResult{ - Gas: params.TxGas, - Failed: false, - ReturnValue: "", - StructLogs: []ethapi.StructLogRes{}, - }, - }, - }, + want: `[{"result":{"gas":21000,"failed":false,"returnValue":"","structLogs":[]}}]`, }, // Trace non-existent block { blockNumber: rpc.BlockNumber(genBlocks + 1), - config: nil, expectErr: fmt.Errorf("block #%d not found", genBlocks+1), - expect: nil, }, // Trace latest block { blockNumber: rpc.LatestBlockNumber, - config: nil, - expectErr: nil, - expect: []*txTraceResult{ - { - Result: ðapi.ExecutionResult{ - Gas: params.TxGas, - Failed: false, - ReturnValue: "", - StructLogs: []ethapi.StructLogRes{}, - }, - }, - }, + want: `[{"result":{"gas":21000,"failed":false,"returnValue":"","structLogs":[]}}]`, }, // Trace pending block { blockNumber: rpc.PendingBlockNumber, - config: nil, - expectErr: nil, - expect: []*txTraceResult{ - { - Result: ðapi.ExecutionResult{ - Gas: params.TxGas, - Failed: false, - ReturnValue: "", - StructLogs: []ethapi.StructLogRes{}, + want: `[{"result":{"gas":21000,"failed":false,"returnValue":"","structLogs":[]}}]`, + }, + } + for i, tc := range testSuite { + result, err := api.TraceBlockByNumber(context.Background(), tc.blockNumber, tc.config) + if tc.expectErr != nil { + if err == nil { + t.Errorf("test %d, want error %v", i, tc.expectErr) + continue + } + if !reflect.DeepEqual(err, tc.expectErr) { + t.Errorf("test %d: error mismatch, want %v, get %v", i, tc.expectErr, err) + } + continue + } + if err != nil { + t.Errorf("test %d, want no error, have %v", i, err) + continue + } + have, _ := json.Marshal(result) + want := tc.want + if string(have) != want { + t.Errorf("test %d, result mismatch, have\n%v\n, want\n%v\n", i, string(have), want) + } + } +} + +func TestTracingWithOverrides(t *testing.T) { + t.Parallel() + // Initialize test accounts + accounts := newAccounts(3) + genesis := &core.Genesis{Alloc: core.GenesisAlloc{ + accounts[0].addr: {Balance: big.NewInt(params.Ether)}, + accounts[1].addr: {Balance: big.NewInt(params.Ether)}, + accounts[2].addr: {Balance: big.NewInt(params.Ether)}, + }} + genBlocks := 10 + signer := types.HomesteadSigner{} + api := NewAPI(newTestBackend(t, genBlocks, genesis, func(i int, b *core.BlockGen) { + // Transfer from account[0] to account[1] + // value: 1000 wei + // fee: 0 wei + tx, _ := types.SignTx(types.NewTransaction(uint64(i), accounts[1].addr, big.NewInt(1000), params.TxGas, b.BaseFee(), nil), signer, accounts[0].key) + b.AddTx(tx) + })) + randomAccounts := newAccounts(3) + type res struct { + Gas int + Failed bool + returnValue string + } + var testSuite = []struct { + blockNumber rpc.BlockNumber + call ethapi.TransactionArgs + config *TraceCallConfig + expectErr error + want string + }{ + // Call which can only succeed if state is state overridden + { + blockNumber: rpc.PendingBlockNumber, + call: ethapi.TransactionArgs{ + From: &randomAccounts[0].addr, + To: &randomAccounts[1].addr, + Value: (*hexutil.Big)(big.NewInt(1000)), + }, + config: &TraceCallConfig{ + StateOverrides: ðapi.StateOverride{ + randomAccounts[0].addr: ethapi.OverrideAccount{Balance: newRPCBalance(new(big.Int).Mul(big.NewInt(1), big.NewInt(params.Ether)))}, + }, + }, + want: `{"gas":21000,"failed":false,"returnValue":""}`, + }, + // Invalid call without state overriding + { + blockNumber: rpc.PendingBlockNumber, + call: ethapi.TransactionArgs{ + From: &randomAccounts[0].addr, + To: &randomAccounts[1].addr, + Value: (*hexutil.Big)(big.NewInt(1000)), + }, + config: &TraceCallConfig{}, + expectErr: core.ErrInsufficientFunds, + }, + // Successful simple contract call + // + // // SPDX-License-Identifier: GPL-3.0 + // + // pragma solidity >=0.7.0 <0.8.0; + // + // /** + // * @title Storage + // * @dev Store & retrieve value in a variable + // */ + // contract Storage { + // uint256 public number; + // constructor() { + // number = block.number; + // } + // } + { + blockNumber: rpc.PendingBlockNumber, + call: ethapi.TransactionArgs{ + From: &randomAccounts[0].addr, + To: &randomAccounts[2].addr, + Data: newRPCBytes(common.Hex2Bytes("8381f58a")), // call number() + }, + config: &TraceCallConfig{ + //Tracer: &tracer, + StateOverrides: ðapi.StateOverride{ + randomAccounts[2].addr: ethapi.OverrideAccount{ + Code: newRPCBytes(common.Hex2Bytes("6080604052348015600f57600080fd5b506004361060285760003560e01c80638381f58a14602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000548156fea2646970667358221220eab35ffa6ab2adfe380772a48b8ba78e82a1b820a18fcb6f59aa4efb20a5f60064736f6c63430007040033")), + StateDiff: newStates([]common.Hash{{}}, []common.Hash{common.BigToHash(big.NewInt(123))}), }, }, }, + want: `{"gas":23347,"failed":false,"returnValue":"000000000000000000000000000000000000000000000000000000000000007b"}`, }, } - for _, testspec := range testSuite { - result, err := api.TraceBlockByNumber(context.Background(), testspec.blockNumber, testspec.config) - if testspec.expectErr != nil { + for i, tc := range testSuite { + result, err := api.TraceCall(context.Background(), tc.call, rpc.BlockNumberOrHash{BlockNumber: &tc.blockNumber}, tc.config) + if tc.expectErr != nil { if err == nil { - t.Errorf("Expect error %v, get nothing", testspec.expectErr) + t.Errorf("test %d: want error %v, have nothing", i, tc.expectErr) continue } - if !reflect.DeepEqual(err, testspec.expectErr) { - t.Errorf("Error mismatch, want %v, get %v", testspec.expectErr, err) - } - } else { - if err != nil { - t.Errorf("Expect no error, get %v", err) - continue - } - if !reflect.DeepEqual(result, testspec.expect) { - t.Errorf("Result mismatch, want %v, get %v", testspec.expect, result) + if !errors.Is(err, tc.expectErr) { + t.Errorf("test %d: error mismatch, want %v, have %v", i, tc.expectErr, err) } + continue + } + if err != nil { + t.Errorf("test %d: want no error, have %v", i, err) + continue + } + // Turn result into res-struct + var ( + have res + want res + ) + resBytes, _ := json.Marshal(result) + json.Unmarshal(resBytes, &have) + json.Unmarshal([]byte(tc.want), &want) + if !reflect.DeepEqual(have, want) { + t.Errorf("test %d, result mismatch, have\n%v\n, want\n%v\n", i, string(resBytes), want) } } } @@ -617,11 +563,6 @@ func newRPCBalance(balance *big.Int) **hexutil.Big { return &rpcBalance } -func newRPCUint64(number uint64) *hexutil.Uint64 { - rpcUint64 := hexutil.Uint64(number) - return &rpcUint64 -} - func newRPCBytes(bytes []byte) *hexutil.Bytes { rpcBytes := hexutil.Bytes(bytes) return &rpcBytes diff --git a/eth/tracers/internal/tracers/4byte_tracer.js b/eth/tracers/internal/tracers/4byte_tracer.js deleted file mode 100644 index 9ec3209f8b..0000000000 --- a/eth/tracers/internal/tracers/4byte_tracer.js +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2017 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -// 4byteTracer searches for 4byte-identifiers, and collects them for post-processing. -// It collects the methods identifiers along with the size of the supplied data, so -// a reversed signature can be matched against the size of the data. -// -// Example: -// > debug.traceTransaction( "0x214e597e35da083692f5386141e69f47e973b2c56e7a8073b1ea08fd7571e9de", {tracer: "4byteTracer"}) -// { -// 0x27dc297e-128: 1, -// 0x38cc4831-0: 2, -// 0x524f3889-96: 1, -// 0xadf59f99-288: 1, -// 0xc281d19e-0: 1 -// } -{ - // ids aggregates the 4byte ids found. - ids : {}, - - // store save the given indentifier and datasize. - store: function(id, size){ - var key = "" + toHex(id) + "-" + size; - this.ids[key] = this.ids[key] + 1 || 1; - }, - - enter: function(frame) { - // Skip any pre-compile invocations, those are just fancy opcodes - if (isPrecompiled(frame.getTo())) { - return; - } - var input = frame.getInput() - if (input.length >= 4) { - this.store(slice(input, 0, 4), input.length - 4); - } - }, - - exit: function(frameResult) {}, - - // fault is invoked when the actual execution of an opcode fails. - fault: function(log, db) {}, - - // result is invoked when all the opcodes have been iterated over and returns - // the final result of the tracing. - result: function(ctx) { - // Save the outer calldata also - if (ctx.input.length >= 4) { - this.store(slice(ctx.input, 0, 4), ctx.input.length-4) - } - return this.ids; - }, -} diff --git a/eth/tracers/internal/tracetest/calltrace_test.go b/eth/tracers/internal/tracetest/calltrace_test.go new file mode 100644 index 0000000000..7521a98f24 --- /dev/null +++ b/eth/tracers/internal/tracetest/calltrace_test.go @@ -0,0 +1,394 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package tracetest + +import ( + "encoding/json" + "io/ioutil" + "math/big" + "path/filepath" + "reflect" + "strings" + "testing" + "unicode" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/common/math" + "github.com/ethereum/go-ethereum/core" + "github.com/ethereum/go-ethereum/core/rawdb" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/core/vm" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/eth/tracers" + "github.com/ethereum/go-ethereum/params" + "github.com/ethereum/go-ethereum/rlp" + "github.com/ethereum/go-ethereum/tests" + + // Force-load native and js pacakges, to trigger registration + _ "github.com/ethereum/go-ethereum/eth/tracers/js" + _ "github.com/ethereum/go-ethereum/eth/tracers/native" +) + +// To generate a new callTracer test, copy paste the makeTest method below into +// a Geth console and call it with a transaction hash you which to export. + +/* +// makeTest generates a callTracer test by running a prestate reassembled and a +// call trace run, assembling all the gathered information into a test case. +var makeTest = function(tx, rewind) { + // Generate the genesis block from the block, transaction and prestate data + var block = eth.getBlock(eth.getTransaction(tx).blockHash); + var genesis = eth.getBlock(block.parentHash); + + delete genesis.gasUsed; + delete genesis.logsBloom; + delete genesis.parentHash; + delete genesis.receiptsRoot; + delete genesis.sha3Uncles; + delete genesis.size; + delete genesis.transactions; + delete genesis.transactionsRoot; + delete genesis.uncles; + + genesis.gasLimit = genesis.gasLimit.toString(); + genesis.number = genesis.number.toString(); + genesis.timestamp = genesis.timestamp.toString(); + + genesis.alloc = debug.traceTransaction(tx, {tracer: "prestateTracer", rewind: rewind}); + for (var key in genesis.alloc) { + genesis.alloc[key].nonce = genesis.alloc[key].nonce.toString(); + } + genesis.config = admin.nodeInfo.protocols.eth.config; + + // Generate the call trace and produce the test input + var result = debug.traceTransaction(tx, {tracer: "callTracer", rewind: rewind}); + delete result.time; + + console.log(JSON.stringify({ + genesis: genesis, + context: { + number: block.number.toString(), + difficulty: block.difficulty, + timestamp: block.timestamp.toString(), + gasLimit: block.gasLimit.toString(), + miner: block.miner, + }, + input: eth.getRawTransaction(tx), + result: result, + }, null, 2)); +} +*/ + +type callContext struct { + Number math.HexOrDecimal64 `json:"number"` + Difficulty *math.HexOrDecimal256 `json:"difficulty"` + Time math.HexOrDecimal64 `json:"timestamp"` + GasLimit math.HexOrDecimal64 `json:"gasLimit"` + Miner common.Address `json:"miner"` +} + +// callTrace is the result of a callTracer run. +type callTrace struct { + Type string `json:"type"` + From common.Address `json:"from"` + To common.Address `json:"to"` + Input hexutil.Bytes `json:"input"` + Output hexutil.Bytes `json:"output"` + Gas *hexutil.Uint64 `json:"gas,omitempty"` + GasUsed *hexutil.Uint64 `json:"gasUsed,omitempty"` + Value *hexutil.Big `json:"value,omitempty"` + Error string `json:"error,omitempty"` + Calls []callTrace `json:"calls,omitempty"` +} + +// callTracerTest defines a single test to check the call tracer against. +type callTracerTest struct { + Genesis *core.Genesis `json:"genesis"` + Context *callContext `json:"context"` + Input string `json:"input"` + Result *callTrace `json:"result"` +} + +// Iterates over all the input-output datasets in the tracer test harness and +// runs the JavaScript tracers against them. +func TestCallTracerLegacy(t *testing.T) { + testCallTracer("callTracerLegacy", "call_tracer_legacy", t) +} + +func TestCallTracerJs(t *testing.T) { + testCallTracer("callTracerJs", "call_tracer", t) +} + +func TestCallTracerNative(t *testing.T) { + testCallTracer("callTracer", "call_tracer", t) +} + +func testCallTracer(tracerName string, dirPath string, t *testing.T) { + files, err := ioutil.ReadDir(filepath.Join("testdata", dirPath)) + if err != nil { + t.Fatalf("failed to retrieve tracer test suite: %v", err) + } + for _, file := range files { + if !strings.HasSuffix(file.Name(), ".json") { + continue + } + file := file // capture range variable + t.Run(camel(strings.TrimSuffix(file.Name(), ".json")), func(t *testing.T) { + t.Parallel() + + var ( + test = new(callTracerTest) + tx = new(types.Transaction) + ) + // Call tracer test found, read if from disk + if blob, err := ioutil.ReadFile(filepath.Join("testdata", dirPath, file.Name())); err != nil { + t.Fatalf("failed to read testcase: %v", err) + } else if err := json.Unmarshal(blob, test); err != nil { + t.Fatalf("failed to parse testcase: %v", err) + } + if err := rlp.DecodeBytes(common.FromHex(test.Input), tx); err != nil { + t.Fatalf("failed to parse testcase input: %v", err) + } + // Configure a blockchain with the given prestate + var ( + signer = types.MakeSigner(test.Genesis.Config, new(big.Int).SetUint64(uint64(test.Context.Number))) + origin, _ = signer.Sender(tx) + txContext = vm.TxContext{ + Origin: origin, + GasPrice: tx.GasPrice(), + } + context = vm.BlockContext{ + CanTransfer: core.CanTransfer, + Transfer: core.Transfer, + Coinbase: test.Context.Miner, + BlockNumber: new(big.Int).SetUint64(uint64(test.Context.Number)), + Time: new(big.Int).SetUint64(uint64(test.Context.Time)), + Difficulty: (*big.Int)(test.Context.Difficulty), + GasLimit: uint64(test.Context.GasLimit), + } + _, statedb = tests.MakePreState(rawdb.NewMemoryDatabase(), test.Genesis.Alloc, false) + ) + tracer, err := tracers.New(tracerName, new(tracers.Context)) + if err != nil { + t.Fatalf("failed to create call tracer: %v", err) + } + evm := vm.NewEVM(context, txContext, statedb, test.Genesis.Config, vm.Config{Debug: true, Tracer: tracer}) + msg, err := tx.AsMessage(signer, nil) + if err != nil { + t.Fatalf("failed to prepare transaction for tracing: %v", err) + } + st := core.NewStateTransition(evm, msg, new(core.GasPool).AddGas(tx.Gas())) + if _, err = st.TransitionDb(); err != nil { + t.Fatalf("failed to execute transaction: %v", err) + } + // Retrieve the trace result and compare against the etalon + res, err := tracer.GetResult() + if err != nil { + t.Fatalf("failed to retrieve trace result: %v", err) + } + ret := new(callTrace) + if err := json.Unmarshal(res, ret); err != nil { + t.Fatalf("failed to unmarshal trace result: %v", err) + } + + if !jsonEqual(ret, test.Result) { + // uncomment this for easier debugging + //have, _ := json.MarshalIndent(ret, "", " ") + //want, _ := json.MarshalIndent(test.Result, "", " ") + //t.Fatalf("trace mismatch: \nhave %+v\nwant %+v", string(have), string(want)) + t.Fatalf("trace mismatch: \nhave %+v\nwant %+v", ret, test.Result) + } + }) + } +} + +// jsonEqual is similar to reflect.DeepEqual, but does a 'bounce' via json prior to +// comparison +func jsonEqual(x, y interface{}) bool { + xTrace := new(callTrace) + yTrace := new(callTrace) + if xj, err := json.Marshal(x); err == nil { + json.Unmarshal(xj, xTrace) + } else { + return false + } + if yj, err := json.Marshal(y); err == nil { + json.Unmarshal(yj, yTrace) + } else { + return false + } + return reflect.DeepEqual(xTrace, yTrace) +} + +// camel converts a snake cased input string into a camel cased output. +func camel(str string) string { + pieces := strings.Split(str, "_") + for i := 1; i < len(pieces); i++ { + pieces[i] = string(unicode.ToUpper(rune(pieces[i][0]))) + pieces[i][1:] + } + return strings.Join(pieces, "") +} +func BenchmarkTracers(b *testing.B) { + files, err := ioutil.ReadDir(filepath.Join("testdata", "call_tracer")) + if err != nil { + b.Fatalf("failed to retrieve tracer test suite: %v", err) + } + for _, file := range files { + if !strings.HasSuffix(file.Name(), ".json") { + continue + } + file := file // capture range variable + b.Run(camel(strings.TrimSuffix(file.Name(), ".json")), func(b *testing.B) { + blob, err := ioutil.ReadFile(filepath.Join("testdata", "call_tracer", file.Name())) + if err != nil { + b.Fatalf("failed to read testcase: %v", err) + } + test := new(callTracerTest) + if err := json.Unmarshal(blob, test); err != nil { + b.Fatalf("failed to parse testcase: %v", err) + } + benchTracer("callTracerNative", test, b) + }) + } +} + +func benchTracer(tracerName string, test *callTracerTest, b *testing.B) { + // Configure a blockchain with the given prestate + tx := new(types.Transaction) + if err := rlp.DecodeBytes(common.FromHex(test.Input), tx); err != nil { + b.Fatalf("failed to parse testcase input: %v", err) + } + signer := types.MakeSigner(test.Genesis.Config, new(big.Int).SetUint64(uint64(test.Context.Number))) + msg, err := tx.AsMessage(signer, nil) + if err != nil { + b.Fatalf("failed to prepare transaction for tracing: %v", err) + } + origin, _ := signer.Sender(tx) + txContext := vm.TxContext{ + Origin: origin, + GasPrice: tx.GasPrice(), + } + context := vm.BlockContext{ + CanTransfer: core.CanTransfer, + Transfer: core.Transfer, + Coinbase: test.Context.Miner, + BlockNumber: new(big.Int).SetUint64(uint64(test.Context.Number)), + Time: new(big.Int).SetUint64(uint64(test.Context.Time)), + Difficulty: (*big.Int)(test.Context.Difficulty), + GasLimit: uint64(test.Context.GasLimit), + } + _, statedb := tests.MakePreState(rawdb.NewMemoryDatabase(), test.Genesis.Alloc, false) + + b.ReportAllocs() + b.ResetTimer() + for i := 0; i < b.N; i++ { + tracer, err := tracers.New(tracerName, new(tracers.Context)) + if err != nil { + b.Fatalf("failed to create call tracer: %v", err) + } + evm := vm.NewEVM(context, txContext, statedb, test.Genesis.Config, vm.Config{Debug: true, Tracer: tracer}) + snap := statedb.Snapshot() + st := core.NewStateTransition(evm, msg, new(core.GasPool).AddGas(tx.Gas())) + if _, err = st.TransitionDb(); err != nil { + b.Fatalf("failed to execute transaction: %v", err) + } + if _, err = tracer.GetResult(); err != nil { + b.Fatal(err) + } + statedb.RevertToSnapshot(snap) + } +} + +// TestZeroValueToNotExitCall tests the calltracer(s) on the following: +// Tx to A, A calls B with zero value. B does not already exist. +// Expected: that enter/exit is invoked and the inner call is shown in the result +func TestZeroValueToNotExitCall(t *testing.T) { + var to = common.HexToAddress("0x00000000000000000000000000000000deadbeef") + privkey, err := crypto.HexToECDSA("0000000000000000deadbeef00000000000000000000000000000000deadbeef") + if err != nil { + t.Fatalf("err %v", err) + } + signer := types.NewEIP155Signer(big.NewInt(1)) + tx, err := types.SignNewTx(privkey, signer, &types.LegacyTx{ + GasPrice: big.NewInt(0), + Gas: 50000, + To: &to, + }) + if err != nil { + t.Fatalf("err %v", err) + } + origin, _ := signer.Sender(tx) + txContext := vm.TxContext{ + Origin: origin, + GasPrice: big.NewInt(1), + } + context := vm.BlockContext{ + CanTransfer: core.CanTransfer, + Transfer: core.Transfer, + Coinbase: common.Address{}, + BlockNumber: new(big.Int).SetUint64(8000000), + Time: new(big.Int).SetUint64(5), + Difficulty: big.NewInt(0x30000), + GasLimit: uint64(6000000), + } + var code = []byte{ + byte(vm.PUSH1), 0x0, byte(vm.DUP1), byte(vm.DUP1), byte(vm.DUP1), // in and outs zero + byte(vm.DUP1), byte(vm.PUSH1), 0xff, byte(vm.GAS), // value=0,address=0xff, gas=GAS + byte(vm.CALL), + } + var alloc = core.GenesisAlloc{ + to: core.GenesisAccount{ + Nonce: 1, + Code: code, + }, + origin: core.GenesisAccount{ + Nonce: 0, + Balance: big.NewInt(500000000000000), + }, + } + _, statedb := tests.MakePreState(rawdb.NewMemoryDatabase(), alloc, false) + // Create the tracer, the EVM environment and run it + tracer, err := tracers.New("callTracer", nil) + if err != nil { + t.Fatalf("failed to create call tracer: %v", err) + } + evm := vm.NewEVM(context, txContext, statedb, params.MainnetChainConfig, vm.Config{Debug: true, Tracer: tracer}) + msg, err := tx.AsMessage(signer, nil) + if err != nil { + t.Fatalf("failed to prepare transaction for tracing: %v", err) + } + st := core.NewStateTransition(evm, msg, new(core.GasPool).AddGas(tx.Gas())) + if _, err = st.TransitionDb(); err != nil { + t.Fatalf("failed to execute transaction: %v", err) + } + // Retrieve the trace result and compare against the etalon + res, err := tracer.GetResult() + if err != nil { + t.Fatalf("failed to retrieve trace result: %v", err) + } + have := new(callTrace) + if err := json.Unmarshal(res, have); err != nil { + t.Fatalf("failed to unmarshal trace result: %v", err) + } + wantStr := `{"type":"CALL","from":"0x682a80a6f560eec50d54e63cbeda1c324c5f8d1b","to":"0x00000000000000000000000000000000deadbeef","value":"0x0","gas":"0x7148","gasUsed":"0x2d0","input":"0x","output":"0x","calls":[{"type":"CALL","from":"0x00000000000000000000000000000000deadbeef","to":"0x00000000000000000000000000000000000000ff","value":"0x0","gas":"0x6cbf","gasUsed":"0x0","input":"0x","output":"0x"}]}` + want := new(callTrace) + json.Unmarshal([]byte(wantStr), want) + if !jsonEqual(have, want) { + t.Error("have != want") + } +} diff --git a/eth/tracers/testdata/call_tracer/create.json b/eth/tracers/internal/tracetest/testdata/call_tracer/create.json similarity index 100% rename from eth/tracers/testdata/call_tracer/create.json rename to eth/tracers/internal/tracetest/testdata/call_tracer/create.json diff --git a/eth/tracers/testdata/call_tracer/deep_calls.json b/eth/tracers/internal/tracetest/testdata/call_tracer/deep_calls.json similarity index 100% rename from eth/tracers/testdata/call_tracer/deep_calls.json rename to eth/tracers/internal/tracetest/testdata/call_tracer/deep_calls.json diff --git a/eth/tracers/testdata/call_tracer/delegatecall.json b/eth/tracers/internal/tracetest/testdata/call_tracer/delegatecall.json similarity index 100% rename from eth/tracers/testdata/call_tracer/delegatecall.json rename to eth/tracers/internal/tracetest/testdata/call_tracer/delegatecall.json diff --git a/eth/tracers/testdata/call_tracer/inner_create_oog_outer_throw.json b/eth/tracers/internal/tracetest/testdata/call_tracer/inner_create_oog_outer_throw.json similarity index 100% rename from eth/tracers/testdata/call_tracer/inner_create_oog_outer_throw.json rename to eth/tracers/internal/tracetest/testdata/call_tracer/inner_create_oog_outer_throw.json diff --git a/eth/tracers/testdata/call_tracer/inner_instafail.json b/eth/tracers/internal/tracetest/testdata/call_tracer/inner_instafail.json similarity index 100% rename from eth/tracers/testdata/call_tracer/inner_instafail.json rename to eth/tracers/internal/tracetest/testdata/call_tracer/inner_instafail.json diff --git a/eth/tracers/testdata/call_tracer/inner_throw_outer_revert.json b/eth/tracers/internal/tracetest/testdata/call_tracer/inner_throw_outer_revert.json similarity index 99% rename from eth/tracers/testdata/call_tracer/inner_throw_outer_revert.json rename to eth/tracers/internal/tracetest/testdata/call_tracer/inner_throw_outer_revert.json index 7627c8c23d..ec2ceb426f 100644 --- a/eth/tracers/testdata/call_tracer/inner_throw_outer_revert.json +++ b/eth/tracers/internal/tracetest/testdata/call_tracer/inner_throw_outer_revert.json @@ -59,7 +59,7 @@ "result": { "calls": [ { - "error": "invalid opcode: opcode 0xfe not defined", + "error": "invalid opcode: INVALID", "from": "0x33056b5dcac09a9b4becad0e1dcf92c19bd0af76", "gas": "0x75fe3", "gasUsed": "0x75fe3", diff --git a/eth/tracers/testdata/call_tracer/oog.json b/eth/tracers/internal/tracetest/testdata/call_tracer/oog.json similarity index 100% rename from eth/tracers/testdata/call_tracer/oog.json rename to eth/tracers/internal/tracetest/testdata/call_tracer/oog.json diff --git a/eth/tracers/testdata/call_tracer/revert.json b/eth/tracers/internal/tracetest/testdata/call_tracer/revert.json similarity index 100% rename from eth/tracers/testdata/call_tracer/revert.json rename to eth/tracers/internal/tracetest/testdata/call_tracer/revert.json diff --git a/eth/tracers/testdata/call_tracer/revert_reason.json b/eth/tracers/internal/tracetest/testdata/call_tracer/revert_reason.json similarity index 100% rename from eth/tracers/testdata/call_tracer/revert_reason.json rename to eth/tracers/internal/tracetest/testdata/call_tracer/revert_reason.json diff --git a/eth/tracers/testdata/call_tracer/selfdestruct.json b/eth/tracers/internal/tracetest/testdata/call_tracer/selfdestruct.json similarity index 100% rename from eth/tracers/testdata/call_tracer/selfdestruct.json rename to eth/tracers/internal/tracetest/testdata/call_tracer/selfdestruct.json diff --git a/eth/tracers/testdata/call_tracer/simple.json b/eth/tracers/internal/tracetest/testdata/call_tracer/simple.json similarity index 100% rename from eth/tracers/testdata/call_tracer/simple.json rename to eth/tracers/internal/tracetest/testdata/call_tracer/simple.json diff --git a/eth/tracers/testdata/call_tracer/throw.json b/eth/tracers/internal/tracetest/testdata/call_tracer/throw.json similarity index 100% rename from eth/tracers/testdata/call_tracer/throw.json rename to eth/tracers/internal/tracetest/testdata/call_tracer/throw.json diff --git a/eth/tracers/testdata/call_tracer_legacy/create.json b/eth/tracers/internal/tracetest/testdata/call_tracer_legacy/create.json similarity index 100% rename from eth/tracers/testdata/call_tracer_legacy/create.json rename to eth/tracers/internal/tracetest/testdata/call_tracer_legacy/create.json diff --git a/eth/tracers/testdata/call_tracer_legacy/deep_calls.json b/eth/tracers/internal/tracetest/testdata/call_tracer_legacy/deep_calls.json similarity index 100% rename from eth/tracers/testdata/call_tracer_legacy/deep_calls.json rename to eth/tracers/internal/tracetest/testdata/call_tracer_legacy/deep_calls.json diff --git a/eth/tracers/testdata/call_tracer_legacy/delegatecall.json b/eth/tracers/internal/tracetest/testdata/call_tracer_legacy/delegatecall.json similarity index 100% rename from eth/tracers/testdata/call_tracer_legacy/delegatecall.json rename to eth/tracers/internal/tracetest/testdata/call_tracer_legacy/delegatecall.json diff --git a/eth/tracers/testdata/call_tracer_legacy/inner_create_oog_outer_throw.json b/eth/tracers/internal/tracetest/testdata/call_tracer_legacy/inner_create_oog_outer_throw.json similarity index 100% rename from eth/tracers/testdata/call_tracer_legacy/inner_create_oog_outer_throw.json rename to eth/tracers/internal/tracetest/testdata/call_tracer_legacy/inner_create_oog_outer_throw.json diff --git a/eth/tracers/testdata/call_tracer_legacy/inner_instafail.json b/eth/tracers/internal/tracetest/testdata/call_tracer_legacy/inner_instafail.json similarity index 100% rename from eth/tracers/testdata/call_tracer_legacy/inner_instafail.json rename to eth/tracers/internal/tracetest/testdata/call_tracer_legacy/inner_instafail.json diff --git a/eth/tracers/testdata/call_tracer_legacy/inner_throw_outer_revert.json b/eth/tracers/internal/tracetest/testdata/call_tracer_legacy/inner_throw_outer_revert.json similarity index 99% rename from eth/tracers/testdata/call_tracer_legacy/inner_throw_outer_revert.json rename to eth/tracers/internal/tracetest/testdata/call_tracer_legacy/inner_throw_outer_revert.json index 7627c8c23d..ec2ceb426f 100644 --- a/eth/tracers/testdata/call_tracer_legacy/inner_throw_outer_revert.json +++ b/eth/tracers/internal/tracetest/testdata/call_tracer_legacy/inner_throw_outer_revert.json @@ -59,7 +59,7 @@ "result": { "calls": [ { - "error": "invalid opcode: opcode 0xfe not defined", + "error": "invalid opcode: INVALID", "from": "0x33056b5dcac09a9b4becad0e1dcf92c19bd0af76", "gas": "0x75fe3", "gasUsed": "0x75fe3", diff --git a/eth/tracers/testdata/call_tracer_legacy/oog.json b/eth/tracers/internal/tracetest/testdata/call_tracer_legacy/oog.json similarity index 100% rename from eth/tracers/testdata/call_tracer_legacy/oog.json rename to eth/tracers/internal/tracetest/testdata/call_tracer_legacy/oog.json diff --git a/eth/tracers/testdata/call_tracer_legacy/revert.json b/eth/tracers/internal/tracetest/testdata/call_tracer_legacy/revert.json similarity index 100% rename from eth/tracers/testdata/call_tracer_legacy/revert.json rename to eth/tracers/internal/tracetest/testdata/call_tracer_legacy/revert.json diff --git a/eth/tracers/testdata/call_tracer_legacy/revert_reason.json b/eth/tracers/internal/tracetest/testdata/call_tracer_legacy/revert_reason.json similarity index 100% rename from eth/tracers/testdata/call_tracer_legacy/revert_reason.json rename to eth/tracers/internal/tracetest/testdata/call_tracer_legacy/revert_reason.json diff --git a/eth/tracers/testdata/call_tracer_legacy/selfdestruct.json b/eth/tracers/internal/tracetest/testdata/call_tracer_legacy/selfdestruct.json similarity index 100% rename from eth/tracers/testdata/call_tracer_legacy/selfdestruct.json rename to eth/tracers/internal/tracetest/testdata/call_tracer_legacy/selfdestruct.json diff --git a/eth/tracers/testdata/call_tracer_legacy/simple.json b/eth/tracers/internal/tracetest/testdata/call_tracer_legacy/simple.json similarity index 100% rename from eth/tracers/testdata/call_tracer_legacy/simple.json rename to eth/tracers/internal/tracetest/testdata/call_tracer_legacy/simple.json diff --git a/eth/tracers/testdata/call_tracer_legacy/throw.json b/eth/tracers/internal/tracetest/testdata/call_tracer_legacy/throw.json similarity index 100% rename from eth/tracers/testdata/call_tracer_legacy/throw.json rename to eth/tracers/internal/tracetest/testdata/call_tracer_legacy/throw.json diff --git a/eth/tracers/tracer.go b/eth/tracers/js/bigint.go similarity index 50% rename from eth/tracers/tracer.go rename to eth/tracers/js/bigint.go index ed56004533..9aeb330420 100644 --- a/eth/tracers/tracer.go +++ b/eth/tracers/js/bigint.go @@ -1,4 +1,4 @@ -// Copyright 2017 The go-ethereum Authors +// Copyright 2021 The go-ethereum Authors // This file is part of the go-ethereum library. // // The go-ethereum library is free software: you can redistribute it and/or modify @@ -14,856 +14,7 @@ // You should have received a copy of the GNU Lesser General Public License // along with the go-ethereum library. If not, see . -package tracers - -import ( - "encoding/json" - "errors" - "fmt" - "math/big" - "sync/atomic" - "time" - "unsafe" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/hexutil" - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/vm" - "github.com/ethereum/go-ethereum/crypto" - "github.com/ethereum/go-ethereum/log" - "gopkg.in/olebedev/go-duktape.v3" -) +package js // bigIntegerJS is the minified version of https://github.com/peterolson/BigInteger.js. const bigIntegerJS = `var bigInt=function(undefined){"use strict";var BASE=1e7,LOG_BASE=7,MAX_INT=9007199254740992,MAX_INT_ARR=smallToArray(MAX_INT),LOG_MAX_INT=Math.log(MAX_INT);function Integer(v,radix){if(typeof v==="undefined")return Integer[0];if(typeof radix!=="undefined")return+radix===10?parseValue(v):parseBase(v,radix);return parseValue(v)}function BigInteger(value,sign){this.value=value;this.sign=sign;this.isSmall=false}BigInteger.prototype=Object.create(Integer.prototype);function SmallInteger(value){this.value=value;this.sign=value<0;this.isSmall=true}SmallInteger.prototype=Object.create(Integer.prototype);function isPrecise(n){return-MAX_INT0)return Math.floor(n);return Math.ceil(n)}function add(a,b){var l_a=a.length,l_b=b.length,r=new Array(l_a),carry=0,base=BASE,sum,i;for(i=0;i=base?1:0;r[i]=sum-carry*base}while(i0)r.push(carry);return r}function addAny(a,b){if(a.length>=b.length)return add(a,b);return add(b,a)}function addSmall(a,carry){var l=a.length,r=new Array(l),base=BASE,sum,i;for(i=0;i0){r[i++]=carry%base;carry=Math.floor(carry/base)}return r}BigInteger.prototype.add=function(v){var n=parseValue(v);if(this.sign!==n.sign){return this.subtract(n.negate())}var a=this.value,b=n.value;if(n.isSmall){return new BigInteger(addSmall(a,Math.abs(b)),this.sign)}return new BigInteger(addAny(a,b),this.sign)};BigInteger.prototype.plus=BigInteger.prototype.add;SmallInteger.prototype.add=function(v){var n=parseValue(v);var a=this.value;if(a<0!==n.sign){return this.subtract(n.negate())}var b=n.value;if(n.isSmall){if(isPrecise(a+b))return new SmallInteger(a+b);b=smallToArray(Math.abs(b))}return new BigInteger(addSmall(b,Math.abs(a)),a<0)};SmallInteger.prototype.plus=SmallInteger.prototype.add;function subtract(a,b){var a_l=a.length,b_l=b.length,r=new Array(a_l),borrow=0,base=BASE,i,difference;for(i=0;i=0){value=subtract(a,b)}else{value=subtract(b,a);sign=!sign}value=arrayToSmall(value);if(typeof value==="number"){if(sign)value=-value;return new SmallInteger(value)}return new BigInteger(value,sign)}function subtractSmall(a,b,sign){var l=a.length,r=new Array(l),carry=-b,base=BASE,i,difference;for(i=0;i=0)};SmallInteger.prototype.minus=SmallInteger.prototype.subtract;BigInteger.prototype.negate=function(){return new BigInteger(this.value,!this.sign)};SmallInteger.prototype.negate=function(){var sign=this.sign;var small=new SmallInteger(-this.value);small.sign=!sign;return small};BigInteger.prototype.abs=function(){return new BigInteger(this.value,false)};SmallInteger.prototype.abs=function(){return new SmallInteger(Math.abs(this.value))};function multiplyLong(a,b){var a_l=a.length,b_l=b.length,l=a_l+b_l,r=createArray(l),base=BASE,product,carry,i,a_i,b_j;for(i=0;i0){r[i++]=carry%base;carry=Math.floor(carry/base)}return r}function shiftLeft(x,n){var r=[];while(n-- >0)r.push(0);return r.concat(x)}function multiplyKaratsuba(x,y){var n=Math.max(x.length,y.length);if(n<=30)return multiplyLong(x,y);n=Math.ceil(n/2);var b=x.slice(n),a=x.slice(0,n),d=y.slice(n),c=y.slice(0,n);var ac=multiplyKaratsuba(a,c),bd=multiplyKaratsuba(b,d),abcd=multiplyKaratsuba(addAny(a,b),addAny(c,d));var product=addAny(addAny(ac,shiftLeft(subtract(subtract(abcd,ac),bd),n)),shiftLeft(bd,2*n));trim(product);return product}function useKaratsuba(l1,l2){return-.012*l1-.012*l2+15e-6*l1*l2>0}BigInteger.prototype.multiply=function(v){var n=parseValue(v),a=this.value,b=n.value,sign=this.sign!==n.sign,abs;if(n.isSmall){if(b===0)return Integer[0];if(b===1)return this;if(b===-1)return this.negate();abs=Math.abs(b);if(abs=0;shift--){quotientDigit=base-1;if(remainder[shift+b_l]!==divisorMostSignificantDigit){quotientDigit=Math.floor((remainder[shift+b_l]*base+remainder[shift+b_l-1])/divisorMostSignificantDigit)}carry=0;borrow=0;l=divisor.length;for(i=0;ib_l){highx=(highx+1)*base}guess=Math.ceil(highx/highy);do{check=multiplySmall(b,guess);if(compareAbs(check,part)<=0)break;guess--}while(guess);result.push(guess);part=subtract(part,check)}result.reverse();return[arrayToSmall(result),arrayToSmall(part)]}function divModSmall(value,lambda){var length=value.length,quotient=createArray(length),base=BASE,i,q,remainder,divisor;remainder=0;for(i=length-1;i>=0;--i){divisor=remainder*base+value[i];q=truncate(divisor/lambda);remainder=divisor-q*lambda;quotient[i]=q|0}return[quotient,remainder|0]}function divModAny(self,v){var value,n=parseValue(v);var a=self.value,b=n.value;var quotient;if(b===0)throw new Error("Cannot divide by zero");if(self.isSmall){if(n.isSmall){return[new SmallInteger(truncate(a/b)),new SmallInteger(a%b)]}return[Integer[0],self]}if(n.isSmall){if(b===1)return[self,Integer[0]];if(b==-1)return[self.negate(),Integer[0]];var abs=Math.abs(b);if(absb.length?1:-1}for(var i=a.length-1;i>=0;i--){if(a[i]!==b[i])return a[i]>b[i]?1:-1}return 0}BigInteger.prototype.compareAbs=function(v){var n=parseValue(v),a=this.value,b=n.value;if(n.isSmall)return 1;return compareAbs(a,b)};SmallInteger.prototype.compareAbs=function(v){var n=parseValue(v),a=Math.abs(this.value),b=n.value;if(n.isSmall){b=Math.abs(b);return a===b?0:a>b?1:-1}return-1};BigInteger.prototype.compare=function(v){if(v===Infinity){return-1}if(v===-Infinity){return 1}var n=parseValue(v),a=this.value,b=n.value;if(this.sign!==n.sign){return n.sign?1:-1}if(n.isSmall){return this.sign?-1:1}return compareAbs(a,b)*(this.sign?-1:1)};BigInteger.prototype.compareTo=BigInteger.prototype.compare;SmallInteger.prototype.compare=function(v){if(v===Infinity){return-1}if(v===-Infinity){return 1}var n=parseValue(v),a=this.value,b=n.value;if(n.isSmall){return a==b?0:a>b?1:-1}if(a<0!==n.sign){return a<0?-1:1}return a<0?1:-1};SmallInteger.prototype.compareTo=SmallInteger.prototype.compare;BigInteger.prototype.equals=function(v){return this.compare(v)===0};SmallInteger.prototype.eq=SmallInteger.prototype.equals=BigInteger.prototype.eq=BigInteger.prototype.equals;BigInteger.prototype.notEquals=function(v){return this.compare(v)!==0};SmallInteger.prototype.neq=SmallInteger.prototype.notEquals=BigInteger.prototype.neq=BigInteger.prototype.notEquals;BigInteger.prototype.greater=function(v){return this.compare(v)>0};SmallInteger.prototype.gt=SmallInteger.prototype.greater=BigInteger.prototype.gt=BigInteger.prototype.greater;BigInteger.prototype.lesser=function(v){return this.compare(v)<0};SmallInteger.prototype.lt=SmallInteger.prototype.lesser=BigInteger.prototype.lt=BigInteger.prototype.lesser;BigInteger.prototype.greaterOrEquals=function(v){return this.compare(v)>=0};SmallInteger.prototype.geq=SmallInteger.prototype.greaterOrEquals=BigInteger.prototype.geq=BigInteger.prototype.greaterOrEquals;BigInteger.prototype.lesserOrEquals=function(v){return this.compare(v)<=0};SmallInteger.prototype.leq=SmallInteger.prototype.lesserOrEquals=BigInteger.prototype.leq=BigInteger.prototype.lesserOrEquals;BigInteger.prototype.isEven=function(){return(this.value[0]&1)===0};SmallInteger.prototype.isEven=function(){return(this.value&1)===0};BigInteger.prototype.isOdd=function(){return(this.value[0]&1)===1};SmallInteger.prototype.isOdd=function(){return(this.value&1)===1};BigInteger.prototype.isPositive=function(){return!this.sign};SmallInteger.prototype.isPositive=function(){return this.value>0};BigInteger.prototype.isNegative=function(){return this.sign};SmallInteger.prototype.isNegative=function(){return this.value<0};BigInteger.prototype.isUnit=function(){return false};SmallInteger.prototype.isUnit=function(){return Math.abs(this.value)===1};BigInteger.prototype.isZero=function(){return false};SmallInteger.prototype.isZero=function(){return this.value===0};BigInteger.prototype.isDivisibleBy=function(v){var n=parseValue(v);var value=n.value;if(value===0)return false;if(value===1)return true;if(value===2)return this.isEven();return this.mod(n).equals(Integer[0])};SmallInteger.prototype.isDivisibleBy=BigInteger.prototype.isDivisibleBy;function isBasicPrime(v){var n=v.abs();if(n.isUnit())return false;if(n.equals(2)||n.equals(3)||n.equals(5))return true;if(n.isEven()||n.isDivisibleBy(3)||n.isDivisibleBy(5))return false;if(n.lesser(25))return true}BigInteger.prototype.isPrime=function(){var isPrime=isBasicPrime(this);if(isPrime!==undefined)return isPrime;var n=this.abs(),nPrev=n.prev();var a=[2,3,5,7,11,13,17,19],b=nPrev,d,t,i,x;while(b.isEven())b=b.divide(2);for(i=0;i-MAX_INT)return new SmallInteger(value-1);return new BigInteger(MAX_INT_ARR,true)};var powersOfTwo=[1];while(2*powersOfTwo[powersOfTwo.length-1]<=BASE)powersOfTwo.push(2*powersOfTwo[powersOfTwo.length-1]);var powers2Length=powersOfTwo.length,highestPower2=powersOfTwo[powers2Length-1];function shift_isSmall(n){return(typeof n==="number"||typeof n==="string")&&+Math.abs(n)<=BASE||n instanceof BigInteger&&n.value.length<=1}BigInteger.prototype.shiftLeft=function(n){if(!shift_isSmall(n)){throw new Error(String(n)+" is too large for shifting.")}n=+n;if(n<0)return this.shiftRight(-n);var result=this;while(n>=powers2Length){result=result.multiply(highestPower2);n-=powers2Length-1}return result.multiply(powersOfTwo[n])};SmallInteger.prototype.shiftLeft=BigInteger.prototype.shiftLeft;BigInteger.prototype.shiftRight=function(n){var remQuo;if(!shift_isSmall(n)){throw new Error(String(n)+" is too large for shifting.")}n=+n;if(n<0)return this.shiftLeft(-n);var result=this;while(n>=powers2Length){if(result.isZero())return result;remQuo=divModAny(result,highestPower2);result=remQuo[1].isNegative()?remQuo[0].prev():remQuo[0];n-=powers2Length-1}remQuo=divModAny(result,powersOfTwo[n]);return remQuo[1].isNegative()?remQuo[0].prev():remQuo[0]};SmallInteger.prototype.shiftRight=BigInteger.prototype.shiftRight;function bitwise(x,y,fn){y=parseValue(y);var xSign=x.isNegative(),ySign=y.isNegative();var xRem=xSign?x.not():x,yRem=ySign?y.not():y;var xDigit=0,yDigit=0;var xDivMod=null,yDivMod=null;var result=[];while(!xRem.isZero()||!yRem.isZero()){xDivMod=divModAny(xRem,highestPower2);xDigit=xDivMod[1].toJSNumber();if(xSign){xDigit=highestPower2-1-xDigit}yDivMod=divModAny(yRem,highestPower2);yDigit=yDivMod[1].toJSNumber();if(ySign){yDigit=highestPower2-1-yDigit}xRem=xDivMod[0];yRem=yDivMod[0];result.push(fn(xDigit,yDigit))}var sum=fn(xSign?1:0,ySign?1:0)!==0?bigInt(-1):bigInt(0);for(var i=result.length-1;i>=0;i-=1){sum=sum.multiply(highestPower2).add(bigInt(result[i]))}return sum}BigInteger.prototype.not=function(){return this.negate().prev()};SmallInteger.prototype.not=BigInteger.prototype.not;BigInteger.prototype.and=function(n){return bitwise(this,n,function(a,b){return a&b})};SmallInteger.prototype.and=BigInteger.prototype.and;BigInteger.prototype.or=function(n){return bitwise(this,n,function(a,b){return a|b})};SmallInteger.prototype.or=BigInteger.prototype.or;BigInteger.prototype.xor=function(n){return bitwise(this,n,function(a,b){return a^b})};SmallInteger.prototype.xor=BigInteger.prototype.xor;var LOBMASK_I=1<<30,LOBMASK_BI=(BASE&-BASE)*(BASE&-BASE)|LOBMASK_I;function roughLOB(n){var v=n.value,x=typeof v==="number"?v|LOBMASK_I:v[0]+v[1]*BASE|LOBMASK_BI;return x&-x}function max(a,b){a=parseValue(a);b=parseValue(b);return a.greater(b)?a:b}function min(a,b){a=parseValue(a);b=parseValue(b);return a.lesser(b)?a:b}function gcd(a,b){a=parseValue(a).abs();b=parseValue(b).abs();if(a.equals(b))return a;if(a.isZero())return b;if(b.isZero())return a;var c=Integer[1],d,t;while(a.isEven()&&b.isEven()){d=Math.min(roughLOB(a),roughLOB(b));a=a.divide(d);b=b.divide(d);c=c.multiply(d)}while(a.isEven()){a=a.divide(roughLOB(a))}do{while(b.isEven()){b=b.divide(roughLOB(b))}if(a.greater(b)){t=b;b=a;a=t}b=b.subtract(a)}while(!b.isZero());return c.isUnit()?a:a.multiply(c)}function lcm(a,b){a=parseValue(a).abs();b=parseValue(b).abs();return a.divide(gcd(a,b)).multiply(b)}function randBetween(a,b){a=parseValue(a);b=parseValue(b);var low=min(a,b),high=max(a,b);var range=high.subtract(low).add(1);if(range.isSmall)return low.add(Math.floor(Math.random()*range));var length=range.value.length-1;var result=[],restricted=true;for(var i=length;i>=0;i--){var top=restricted?range.value[i]:BASE;var digit=truncate(Math.random()*top);result.unshift(digit);if(digit=absBase){if(c==="1"&&absBase===1)continue;throw new Error(c+" is not a valid digit in base "+base+".")}else if(c.charCodeAt(0)-87>=absBase){throw new Error(c+" is not a valid digit in base "+base+".")}}}if(2<=base&&base<=36){if(length<=LOG_MAX_INT/Math.log(base)){var result=parseInt(text,base);if(isNaN(result)){throw new Error(c+" is not a valid digit in base "+base+".")}return new SmallInteger(parseInt(text,base))}}base=parseValue(base);var digits=[];var isNegative=text[0]==="-";for(i=isNegative?1:0;i");digits.push(parseValue(text.slice(start+1,i)))}else throw new Error(c+" is not a valid character")}return parseBaseFromArray(digits,base,isNegative)};function parseBaseFromArray(digits,base,isNegative){var val=Integer[0],pow=Integer[1],i;for(i=digits.length-1;i>=0;i--){val=val.add(digits[i].times(pow));pow=pow.times(base)}return isNegative?val.negate():val}function stringify(digit){var v=digit.value;if(typeof v==="number")v=[v];if(v.length===1&&v[0]<=35){return"0123456789abcdefghijklmnopqrstuvwxyz".charAt(v[0])}return"<"+v+">"}function toBase(n,base){base=bigInt(base);if(base.isZero()){if(n.isZero())return"0";throw new Error("Cannot convert nonzero numbers to base 0.")}if(base.equals(-1)){if(n.isZero())return"0";if(n.isNegative())return new Array(1-n).join("10");return"1"+new Array(+n).join("01")}var minusSign="";if(n.isNegative()&&base.isPositive()){minusSign="-";n=n.abs()}if(base.equals(1)){if(n.isZero())return"0";return minusSign+new Array(+n+1).join(1)}var out=[];var left=n,divmod;while(left.isNegative()||left.compareAbs(base)>=0){divmod=left.divmod(base);left=divmod.quotient;var digit=divmod.remainder;if(digit.isNegative()){digit=base.minus(digit).abs();left=left.next()}out.push(stringify(digit))}out.push(stringify(left));return minusSign+out.reverse().join("")}BigInteger.prototype.toString=function(radix){if(radix===undefined)radix=10;if(radix!==10)return toBase(this,radix);var v=this.value,l=v.length,str=String(v[--l]),zeros="0000000",digit;while(--l>=0){digit=String(v[l]);str+=zeros.slice(digit.length)+digit}var sign=this.sign?"-":"";return sign+str};SmallInteger.prototype.toString=function(radix){if(radix===undefined)radix=10;if(radix!=10)return toBase(this,radix);return String(this.value)};BigInteger.prototype.toJSON=SmallInteger.prototype.toJSON=function(){return this.toString()};BigInteger.prototype.valueOf=function(){return+this.toString()};BigInteger.prototype.toJSNumber=BigInteger.prototype.valueOf;SmallInteger.prototype.valueOf=function(){return this.value};SmallInteger.prototype.toJSNumber=SmallInteger.prototype.valueOf;function parseStringValue(v){if(isPrecise(+v)){var x=+v;if(x===truncate(x))return new SmallInteger(x);throw"Invalid integer: "+v}var sign=v[0]==="-";if(sign)v=v.slice(1);var split=v.split(/e/i);if(split.length>2)throw new Error("Invalid integer: "+split.join("e"));if(split.length===2){var exp=split[1];if(exp[0]==="+")exp=exp.slice(1);exp=+exp;if(exp!==truncate(exp)||!isPrecise(exp))throw new Error("Invalid integer: "+exp+" is not a valid exponent.");var text=split[0];var decimalPlace=text.indexOf(".");if(decimalPlace>=0){exp-=text.length-decimalPlace-1;text=text.slice(0,decimalPlace)+text.slice(decimalPlace+1)}if(exp<0)throw new Error("Cannot include negative exponent part for integers");text+=new Array(exp+1).join("0");v=text}var isValid=/^([0-9][0-9]*)$/.test(v);if(!isValid)throw new Error("Invalid integer: "+v);var r=[],max=v.length,l=LOG_BASE,min=max-l;while(max>0){r.push(+v.slice(min,max));min-=l;if(min<0)min=0;max-=l}trim(r);return new BigInteger(r,sign)}function parseNumberValue(v){if(isPrecise(v)){if(v!==truncate(v))throw new Error(v+" is not an integer.");return new SmallInteger(v)}return parseStringValue(v.toString())}function parseValue(v){if(typeof v==="number"){return parseNumberValue(v)}if(typeof v==="string"){return parseStringValue(v)}return v}for(var i=0;i<1e3;i++){Integer[i]=new SmallInteger(i);if(i>0)Integer[-i]=new SmallInteger(-i)}Integer.one=Integer[1];Integer.zero=Integer[0];Integer.minusOne=Integer[-1];Integer.max=max;Integer.min=min;Integer.gcd=gcd;Integer.lcm=lcm;Integer.isInstance=function(x){return x instanceof BigInteger||x instanceof SmallInteger};Integer.randBetween=randBetween;Integer.fromArray=function(digits,base,isNegative){return parseBaseFromArray(digits.map(parseValue),parseValue(base||10),isNegative)};return Integer}();if(typeof module!=="undefined"&&module.hasOwnProperty("exports")){module.exports=bigInt}if(typeof define==="function"&&define.amd){define("big-integer",[],function(){return bigInt})}; bigInt` - -// makeSlice convert an unsafe memory pointer with the given type into a Go byte -// slice. -// -// Note, the returned slice uses the same memory area as the input arguments. -// If those are duktape stack items, popping them off **will** make the slice -// contents change. -func makeSlice(ptr unsafe.Pointer, size uint) []byte { - var sl = struct { - addr uintptr - len int - cap int - }{uintptr(ptr), int(size), int(size)} - - return *(*[]byte)(unsafe.Pointer(&sl)) -} - -// popSlice pops a buffer off the JavaScript stack and returns it as a slice. -func popSlice(ctx *duktape.Context) []byte { - blob := common.CopyBytes(makeSlice(ctx.GetBuffer(-1))) - ctx.Pop() - return blob -} - -// pushBigInt create a JavaScript BigInteger in the VM. -func pushBigInt(n *big.Int, ctx *duktape.Context) { - ctx.GetGlobalString("bigInt") - ctx.PushString(n.String()) - ctx.Call(1) -} - -// opWrapper provides a JavaScript wrapper around OpCode. -type opWrapper struct { - op vm.OpCode -} - -// pushObject assembles a JSVM object wrapping a swappable opcode and pushes it -// onto the VM stack. -func (ow *opWrapper) pushObject(vm *duktape.Context) { - obj := vm.PushObject() - - vm.PushGoFunction(func(ctx *duktape.Context) int { ctx.PushInt(int(ow.op)); return 1 }) - vm.PutPropString(obj, "toNumber") - - vm.PushGoFunction(func(ctx *duktape.Context) int { ctx.PushString(ow.op.String()); return 1 }) - vm.PutPropString(obj, "toString") - - vm.PushGoFunction(func(ctx *duktape.Context) int { ctx.PushBoolean(ow.op.IsPush()); return 1 }) - vm.PutPropString(obj, "isPush") -} - -// memoryWrapper provides a JavaScript wrapper around vm.Memory. -type memoryWrapper struct { - memory *vm.Memory -} - -// slice returns the requested range of memory as a byte slice. -func (mw *memoryWrapper) slice(begin, end int64) []byte { - if end == begin { - return []byte{} - } - if end < begin || begin < 0 { - // TODO(karalabe): We can't js-throw from Go inside duktape inside Go. The Go - // runtime goes belly up https://github.com/golang/go/issues/15639. - log.Warn("Tracer accessed out of bound memory", "offset", begin, "end", end) - return nil - } - if mw.memory.Len() < int(end) { - // TODO(karalabe): We can't js-throw from Go inside duktape inside Go. The Go - // runtime goes belly up https://github.com/golang/go/issues/15639. - log.Warn("Tracer accessed out of bound memory", "available", mw.memory.Len(), "offset", begin, "size", end-begin) - return nil - } - return mw.memory.GetCopy(begin, end-begin) -} - -// getUint returns the 32 bytes at the specified address interpreted as a uint. -func (mw *memoryWrapper) getUint(addr int64) *big.Int { - if mw.memory.Len() < int(addr)+32 || addr < 0 { - // TODO(karalabe): We can't js-throw from Go inside duktape inside Go. The Go - // runtime goes belly up https://github.com/golang/go/issues/15639. - log.Warn("Tracer accessed out of bound memory", "available", mw.memory.Len(), "offset", addr, "size", 32) - return new(big.Int) - } - return new(big.Int).SetBytes(mw.memory.GetPtr(addr, 32)) -} - -// pushObject assembles a JSVM object wrapping a swappable memory and pushes it -// onto the VM stack. -func (mw *memoryWrapper) pushObject(vm *duktape.Context) { - obj := vm.PushObject() - - // Generate the `slice` method which takes two ints and returns a buffer - vm.PushGoFunction(func(ctx *duktape.Context) int { - blob := mw.slice(int64(ctx.GetInt(-2)), int64(ctx.GetInt(-1))) - ctx.Pop2() - - ptr := ctx.PushFixedBuffer(len(blob)) - copy(makeSlice(ptr, uint(len(blob))), blob) - return 1 - }) - vm.PutPropString(obj, "slice") - - // Generate the `getUint` method which takes an int and returns a bigint - vm.PushGoFunction(func(ctx *duktape.Context) int { - offset := int64(ctx.GetInt(-1)) - ctx.Pop() - - pushBigInt(mw.getUint(offset), ctx) - return 1 - }) - vm.PutPropString(obj, "getUint") -} - -// stackWrapper provides a JavaScript wrapper around vm.Stack. -type stackWrapper struct { - stack *vm.Stack -} - -// peek returns the nth-from-the-top element of the stack. -func (sw *stackWrapper) peek(idx int) *big.Int { - if len(sw.stack.Data()) <= idx || idx < 0 { - // TODO(karalabe): We can't js-throw from Go inside duktape inside Go. The Go - // runtime goes belly up https://github.com/golang/go/issues/15639. - log.Warn("Tracer accessed out of bound stack", "size", len(sw.stack.Data()), "index", idx) - return new(big.Int) - } - return sw.stack.Back(idx).ToBig() -} - -// pushObject assembles a JSVM object wrapping a swappable stack and pushes it -// onto the VM stack. -func (sw *stackWrapper) pushObject(vm *duktape.Context) { - obj := vm.PushObject() - - vm.PushGoFunction(func(ctx *duktape.Context) int { ctx.PushInt(len(sw.stack.Data())); return 1 }) - vm.PutPropString(obj, "length") - - // Generate the `peek` method which takes an int and returns a bigint - vm.PushGoFunction(func(ctx *duktape.Context) int { - offset := ctx.GetInt(-1) - ctx.Pop() - - pushBigInt(sw.peek(offset), ctx) - return 1 - }) - vm.PutPropString(obj, "peek") -} - -// dbWrapper provides a JavaScript wrapper around vm.Database. -type dbWrapper struct { - db vm.StateDB -} - -// pushObject assembles a JSVM object wrapping a swappable database and pushes it -// onto the VM stack. -func (dw *dbWrapper) pushObject(vm *duktape.Context) { - obj := vm.PushObject() - - // Push the wrapper for statedb.GetBalance - vm.PushGoFunction(func(ctx *duktape.Context) int { - pushBigInt(dw.db.GetBalance(common.BytesToAddress(popSlice(ctx))), ctx) - return 1 - }) - vm.PutPropString(obj, "getBalance") - - // Push the wrapper for statedb.GetNonce - vm.PushGoFunction(func(ctx *duktape.Context) int { - ctx.PushInt(int(dw.db.GetNonce(common.BytesToAddress(popSlice(ctx))))) - return 1 - }) - vm.PutPropString(obj, "getNonce") - - // Push the wrapper for statedb.GetCode - vm.PushGoFunction(func(ctx *duktape.Context) int { - code := dw.db.GetCode(common.BytesToAddress(popSlice(ctx))) - - ptr := ctx.PushFixedBuffer(len(code)) - copy(makeSlice(ptr, uint(len(code))), code) - return 1 - }) - vm.PutPropString(obj, "getCode") - - // Push the wrapper for statedb.GetState - vm.PushGoFunction(func(ctx *duktape.Context) int { - hash := popSlice(ctx) - addr := popSlice(ctx) - - state := dw.db.GetState(common.BytesToAddress(addr), common.BytesToHash(hash)) - - ptr := ctx.PushFixedBuffer(len(state)) - copy(makeSlice(ptr, uint(len(state))), state[:]) - return 1 - }) - vm.PutPropString(obj, "getState") - - // Push the wrapper for statedb.Exists - vm.PushGoFunction(func(ctx *duktape.Context) int { - ctx.PushBoolean(dw.db.Exist(common.BytesToAddress(popSlice(ctx)))) - return 1 - }) - vm.PutPropString(obj, "exists") -} - -// contractWrapper provides a JavaScript wrapper around vm.Contract -type contractWrapper struct { - contract *vm.Contract -} - -// pushObject assembles a JSVM object wrapping a swappable contract and pushes it -// onto the VM stack. -func (cw *contractWrapper) pushObject(vm *duktape.Context) { - obj := vm.PushObject() - - // Push the wrapper for contract.Caller - vm.PushGoFunction(func(ctx *duktape.Context) int { - ptr := ctx.PushFixedBuffer(20) - copy(makeSlice(ptr, 20), cw.contract.Caller().Bytes()) - return 1 - }) - vm.PutPropString(obj, "getCaller") - - // Push the wrapper for contract.Address - vm.PushGoFunction(func(ctx *duktape.Context) int { - ptr := ctx.PushFixedBuffer(20) - copy(makeSlice(ptr, 20), cw.contract.Address().Bytes()) - return 1 - }) - vm.PutPropString(obj, "getAddress") - - // Push the wrapper for contract.Value - vm.PushGoFunction(func(ctx *duktape.Context) int { - pushBigInt(cw.contract.Value(), ctx) - return 1 - }) - vm.PutPropString(obj, "getValue") - - // Push the wrapper for contract.Input - vm.PushGoFunction(func(ctx *duktape.Context) int { - blob := cw.contract.Input - - ptr := ctx.PushFixedBuffer(len(blob)) - copy(makeSlice(ptr, uint(len(blob))), blob) - return 1 - }) - vm.PutPropString(obj, "getInput") -} - -type frame struct { - typ *string - from *common.Address - to *common.Address - input []byte - gas *uint - value *big.Int -} - -func newFrame() *frame { - return &frame{ - typ: new(string), - from: new(common.Address), - to: new(common.Address), - gas: new(uint), - } -} - -func (f *frame) pushObject(vm *duktape.Context) { - obj := vm.PushObject() - - vm.PushGoFunction(func(ctx *duktape.Context) int { pushValue(ctx, *f.typ); return 1 }) - vm.PutPropString(obj, "getType") - - vm.PushGoFunction(func(ctx *duktape.Context) int { pushValue(ctx, *f.from); return 1 }) - vm.PutPropString(obj, "getFrom") - - vm.PushGoFunction(func(ctx *duktape.Context) int { pushValue(ctx, *f.to); return 1 }) - vm.PutPropString(obj, "getTo") - - vm.PushGoFunction(func(ctx *duktape.Context) int { pushValue(ctx, f.input); return 1 }) - vm.PutPropString(obj, "getInput") - - vm.PushGoFunction(func(ctx *duktape.Context) int { pushValue(ctx, *f.gas); return 1 }) - vm.PutPropString(obj, "getGas") - - vm.PushGoFunction(func(ctx *duktape.Context) int { - if f.value != nil { - pushValue(ctx, f.value) - } else { - ctx.PushUndefined() - } - return 1 - }) - vm.PutPropString(obj, "getValue") -} - -type frameResult struct { - gasUsed *uint - output []byte - errorValue *string -} - -func newFrameResult() *frameResult { - return &frameResult{ - gasUsed: new(uint), - } -} - -func (r *frameResult) pushObject(vm *duktape.Context) { - obj := vm.PushObject() - - vm.PushGoFunction(func(ctx *duktape.Context) int { pushValue(ctx, *r.gasUsed); return 1 }) - vm.PutPropString(obj, "getGasUsed") - - vm.PushGoFunction(func(ctx *duktape.Context) int { pushValue(ctx, r.output); return 1 }) - vm.PutPropString(obj, "getOutput") - - vm.PushGoFunction(func(ctx *duktape.Context) int { - if r.errorValue != nil { - pushValue(ctx, *r.errorValue) - } else { - ctx.PushUndefined() - } - return 1 - }) - vm.PutPropString(obj, "getError") -} - -// Tracer provides an implementation of Tracer that evaluates a Javascript -// function for each VM execution step. -type Tracer struct { - vm *duktape.Context // Javascript VM instance - - tracerObject int // Stack index of the tracer JavaScript object - stateObject int // Stack index of the global state to pull arguments from - - opWrapper *opWrapper // Wrapper around the VM opcode - stackWrapper *stackWrapper // Wrapper around the VM stack - memoryWrapper *memoryWrapper // Wrapper around the VM memory - contractWrapper *contractWrapper // Wrapper around the contract object - dbWrapper *dbWrapper // Wrapper around the VM environment - - pcValue *uint // Swappable pc value wrapped by a log accessor - gasValue *uint // Swappable gas value wrapped by a log accessor - costValue *uint // Swappable cost value wrapped by a log accessor - depthValue *uint // Swappable depth value wrapped by a log accessor - errorValue *string // Swappable error value wrapped by a log accessor - refundValue *uint // Swappable refund value wrapped by a log accessor - - frame *frame // Represents entry into call frame. Fields are swappable - frameResult *frameResult // Represents exit from a call frame. Fields are swappable - - ctx map[string]interface{} // Transaction context gathered throughout execution - err error // Error, if one has occurred - - interrupt uint32 // Atomic flag to signal execution interruption - reason error // Textual reason for the interruption - - activePrecompiles []common.Address // Updated on CaptureStart based on given rules - traceSteps bool // When true, will invoke step() on each opcode - traceCallFrames bool // When true, will invoke enter() and exit() js funcs -} - -// Context contains some contextual infos for a transaction execution that is not -// available from within the EVM object. -type Context struct { - BlockHash common.Hash // Hash of the block the tx is contained within (zero if dangling tx or call) - TxIndex int // Index of the transaction within a block (zero if dangling tx or call) - TxHash common.Hash // Hash of the transaction being traced (zero if dangling call) -} - -// New instantiates a new tracer instance. code specifies a Javascript snippet, -// which must evaluate to an expression returning an object with 'step', 'fault' -// and 'result' functions. -func New(code string, ctx *Context) (*Tracer, error) { - // Resolve any tracers by name and assemble the tracer object - if tracer, ok := tracer(code); ok { - code = tracer - } - tracer := &Tracer{ - vm: duktape.New(), - ctx: make(map[string]interface{}), - opWrapper: new(opWrapper), - stackWrapper: new(stackWrapper), - memoryWrapper: new(memoryWrapper), - contractWrapper: new(contractWrapper), - dbWrapper: new(dbWrapper), - pcValue: new(uint), - gasValue: new(uint), - costValue: new(uint), - depthValue: new(uint), - refundValue: new(uint), - frame: newFrame(), - frameResult: newFrameResult(), - } - if ctx.BlockHash != (common.Hash{}) { - tracer.ctx["blockHash"] = ctx.BlockHash - - if ctx.TxHash != (common.Hash{}) { - tracer.ctx["txIndex"] = ctx.TxIndex - tracer.ctx["txHash"] = ctx.TxHash - } - } - // Set up builtins for this environment - tracer.vm.PushGlobalGoFunction("toHex", func(ctx *duktape.Context) int { - ctx.PushString(hexutil.Encode(popSlice(ctx))) - return 1 - }) - tracer.vm.PushGlobalGoFunction("toWord", func(ctx *duktape.Context) int { - var word common.Hash - if ptr, size := ctx.GetBuffer(-1); ptr != nil { - word = common.BytesToHash(makeSlice(ptr, size)) - } else { - word = common.HexToHash(ctx.GetString(-1)) - } - ctx.Pop() - copy(makeSlice(ctx.PushFixedBuffer(32), 32), word[:]) - return 1 - }) - tracer.vm.PushGlobalGoFunction("toAddress", func(ctx *duktape.Context) int { - var addr common.Address - if ptr, size := ctx.GetBuffer(-1); ptr != nil { - addr = common.BytesToAddress(makeSlice(ptr, size)) - } else { - addr = common.HexToAddress(ctx.GetString(-1)) - } - ctx.Pop() - copy(makeSlice(ctx.PushFixedBuffer(20), 20), addr[:]) - return 1 - }) - tracer.vm.PushGlobalGoFunction("toContract", func(ctx *duktape.Context) int { - var from common.Address - if ptr, size := ctx.GetBuffer(-2); ptr != nil { - from = common.BytesToAddress(makeSlice(ptr, size)) - } else { - from = common.HexToAddress(ctx.GetString(-2)) - } - nonce := uint64(ctx.GetInt(-1)) - ctx.Pop2() - - contract := crypto.CreateAddress(from, nonce) - copy(makeSlice(ctx.PushFixedBuffer(20), 20), contract[:]) - return 1 - }) - tracer.vm.PushGlobalGoFunction("toContract2", func(ctx *duktape.Context) int { - var from common.Address - if ptr, size := ctx.GetBuffer(-3); ptr != nil { - from = common.BytesToAddress(makeSlice(ptr, size)) - } else { - from = common.HexToAddress(ctx.GetString(-3)) - } - // Retrieve salt hex string from js stack - salt := common.HexToHash(ctx.GetString(-2)) - // Retrieve code slice from js stack - var code []byte - if ptr, size := ctx.GetBuffer(-1); ptr != nil { - code = common.CopyBytes(makeSlice(ptr, size)) - } else { - code = common.FromHex(ctx.GetString(-1)) - } - codeHash := crypto.Keccak256(code) - ctx.Pop3() - contract := crypto.CreateAddress2(from, salt, codeHash) - copy(makeSlice(ctx.PushFixedBuffer(20), 20), contract[:]) - return 1 - }) - tracer.vm.PushGlobalGoFunction("isPrecompiled", func(ctx *duktape.Context) int { - addr := common.BytesToAddress(popSlice(ctx)) - for _, p := range tracer.activePrecompiles { - if p == addr { - ctx.PushBoolean(true) - return 1 - } - } - ctx.PushBoolean(false) - return 1 - }) - tracer.vm.PushGlobalGoFunction("slice", func(ctx *duktape.Context) int { - start, end := ctx.GetInt(-2), ctx.GetInt(-1) - ctx.Pop2() - - blob := popSlice(ctx) - size := end - start - - if start < 0 || start > end || end > len(blob) { - // TODO(karalabe): We can't js-throw from Go inside duktape inside Go. The Go - // runtime goes belly up https://github.com/golang/go/issues/15639. - log.Warn("Tracer accessed out of bound memory", "available", len(blob), "offset", start, "size", size) - ctx.PushFixedBuffer(0) - return 1 - } - copy(makeSlice(ctx.PushFixedBuffer(size), uint(size)), blob[start:end]) - return 1 - }) - // Push the JavaScript tracer as object #0 onto the JSVM stack and validate it - if err := tracer.vm.PevalString("(" + code + ")"); err != nil { - log.Warn("Failed to compile tracer", "err", err) - return nil, err - } - tracer.tracerObject = 0 // yeah, nice, eval can't return the index itself - - hasStep := tracer.vm.GetPropString(tracer.tracerObject, "step") - tracer.vm.Pop() - - if !tracer.vm.GetPropString(tracer.tracerObject, "fault") { - return nil, fmt.Errorf("trace object must expose a function fault()") - } - tracer.vm.Pop() - - if !tracer.vm.GetPropString(tracer.tracerObject, "result") { - return nil, fmt.Errorf("trace object must expose a function result()") - } - tracer.vm.Pop() - - hasEnter := tracer.vm.GetPropString(tracer.tracerObject, "enter") - tracer.vm.Pop() - hasExit := tracer.vm.GetPropString(tracer.tracerObject, "exit") - tracer.vm.Pop() - - if hasEnter != hasExit { - return nil, fmt.Errorf("trace object must expose either both or none of enter() and exit()") - } - if !hasStep { - // If there's no step function, the enter and exit must be present - if !hasEnter { - return nil, fmt.Errorf("trace object must expose either step() or both enter() and exit()") - } - } - tracer.traceCallFrames = hasEnter - tracer.traceSteps = hasStep - - // Tracer is valid, inject the big int library to access large numbers - tracer.vm.EvalString(bigIntegerJS) - tracer.vm.PutGlobalString("bigInt") - - // Push the global environment state as object #1 into the JSVM stack - tracer.stateObject = tracer.vm.PushObject() - - logObject := tracer.vm.PushObject() - - tracer.opWrapper.pushObject(tracer.vm) - tracer.vm.PutPropString(logObject, "op") - - tracer.stackWrapper.pushObject(tracer.vm) - tracer.vm.PutPropString(logObject, "stack") - - tracer.memoryWrapper.pushObject(tracer.vm) - tracer.vm.PutPropString(logObject, "memory") - - tracer.contractWrapper.pushObject(tracer.vm) - tracer.vm.PutPropString(logObject, "contract") - - tracer.vm.PushGoFunction(func(ctx *duktape.Context) int { ctx.PushUint(*tracer.pcValue); return 1 }) - tracer.vm.PutPropString(logObject, "getPC") - - tracer.vm.PushGoFunction(func(ctx *duktape.Context) int { ctx.PushUint(*tracer.gasValue); return 1 }) - tracer.vm.PutPropString(logObject, "getGas") - - tracer.vm.PushGoFunction(func(ctx *duktape.Context) int { ctx.PushUint(*tracer.costValue); return 1 }) - tracer.vm.PutPropString(logObject, "getCost") - - tracer.vm.PushGoFunction(func(ctx *duktape.Context) int { ctx.PushUint(*tracer.depthValue); return 1 }) - tracer.vm.PutPropString(logObject, "getDepth") - - tracer.vm.PushGoFunction(func(ctx *duktape.Context) int { ctx.PushUint(*tracer.refundValue); return 1 }) - tracer.vm.PutPropString(logObject, "getRefund") - - tracer.vm.PushGoFunction(func(ctx *duktape.Context) int { - if tracer.errorValue != nil { - ctx.PushString(*tracer.errorValue) - } else { - ctx.PushUndefined() - } - return 1 - }) - tracer.vm.PutPropString(logObject, "getError") - - tracer.vm.PutPropString(tracer.stateObject, "log") - - tracer.frame.pushObject(tracer.vm) - tracer.vm.PutPropString(tracer.stateObject, "frame") - - tracer.frameResult.pushObject(tracer.vm) - tracer.vm.PutPropString(tracer.stateObject, "frameResult") - - tracer.dbWrapper.pushObject(tracer.vm) - tracer.vm.PutPropString(tracer.stateObject, "db") - - return tracer, nil -} - -// Stop terminates execution of the tracer at the first opportune moment. -func (jst *Tracer) Stop(err error) { - jst.reason = err - atomic.StoreUint32(&jst.interrupt, 1) -} - -// call executes a method on a JS object, catching any errors, formatting and -// returning them as error objects. -func (jst *Tracer) call(noret bool, method string, args ...string) (json.RawMessage, error) { - // Execute the JavaScript call and return any error - jst.vm.PushString(method) - for _, arg := range args { - jst.vm.GetPropString(jst.stateObject, arg) - } - code := jst.vm.PcallProp(jst.tracerObject, len(args)) - defer jst.vm.Pop() - - if code != 0 { - err := jst.vm.SafeToString(-1) - return nil, errors.New(err) - } - // No error occurred, extract return value and return - if noret { - return nil, nil - } - // Push a JSON marshaller onto the stack. We can't marshal from the out- - // side because duktape can crash on large nestings and we can't catch - // C++ exceptions ourselves from Go. TODO(karalabe): Yuck, why wrap?! - jst.vm.PushString("(JSON.stringify)") - jst.vm.Eval() - - jst.vm.Swap(-1, -2) - if code = jst.vm.Pcall(1); code != 0 { - err := jst.vm.SafeToString(-1) - return nil, errors.New(err) - } - return json.RawMessage(jst.vm.SafeToString(-1)), nil -} - -func wrapError(context string, err error) error { - return fmt.Errorf("%v in server-side tracer function '%v'", err, context) -} - -// CaptureStart implements the Tracer interface to initialize the tracing operation. -func (jst *Tracer) CaptureStart(env *vm.EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) { - jst.ctx["type"] = "CALL" - if create { - jst.ctx["type"] = "CREATE" - } - jst.ctx["from"] = from - jst.ctx["to"] = to - jst.ctx["input"] = input - jst.ctx["gas"] = gas - jst.ctx["gasPrice"] = env.TxContext.GasPrice - jst.ctx["value"] = value - - // Initialize the context - jst.ctx["block"] = env.Context.BlockNumber.Uint64() - jst.dbWrapper.db = env.StateDB - // Update list of precompiles based on current block - rules := env.ChainConfig().Rules(env.Context.BlockNumber) - jst.activePrecompiles = vm.ActivePrecompiles(rules) - - // Compute intrinsic gas - isHomestead := env.ChainConfig().IsHomestead(env.Context.BlockNumber) - isIstanbul := env.ChainConfig().IsIstanbul(env.Context.BlockNumber) - intrinsicGas, err := core.IntrinsicGas(input, nil, jst.ctx["type"] == "CREATE", isHomestead, isIstanbul) - if err != nil { - return - } - jst.ctx["intrinsicGas"] = intrinsicGas -} - -// CaptureState implements the Tracer interface to trace a single step of VM execution. -func (jst *Tracer) CaptureState(env *vm.EVM, pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, rData []byte, depth int, err error) { - if !jst.traceSteps { - return - } - if jst.err != nil { - return - } - // If tracing was interrupted, set the error and stop - if atomic.LoadUint32(&jst.interrupt) > 0 { - jst.err = jst.reason - env.Cancel() - return - } - jst.opWrapper.op = op - jst.stackWrapper.stack = scope.Stack - jst.memoryWrapper.memory = scope.Memory - jst.contractWrapper.contract = scope.Contract - - *jst.pcValue = uint(pc) - *jst.gasValue = uint(gas) - *jst.costValue = uint(cost) - *jst.depthValue = uint(depth) - *jst.refundValue = uint(env.StateDB.GetRefund()) - - jst.errorValue = nil - if err != nil { - jst.errorValue = new(string) - *jst.errorValue = err.Error() - } - - if _, err := jst.call(true, "step", "log", "db"); err != nil { - jst.err = wrapError("step", err) - } -} - -// CaptureFault implements the Tracer interface to trace an execution fault -func (jst *Tracer) CaptureFault(env *vm.EVM, pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, depth int, err error) { - if jst.err != nil { - return - } - // Apart from the error, everything matches the previous invocation - jst.errorValue = new(string) - *jst.errorValue = err.Error() - - if _, err := jst.call(true, "fault", "log", "db"); err != nil { - jst.err = wrapError("fault", err) - } -} - -// CaptureEnd is called after the call finishes to finalize the tracing. -func (jst *Tracer) CaptureEnd(output []byte, gasUsed uint64, t time.Duration, err error) { - jst.ctx["output"] = output - jst.ctx["time"] = t.String() - jst.ctx["gasUsed"] = gasUsed - - if err != nil { - jst.ctx["error"] = err.Error() - } -} - -// CaptureEnter is called when EVM enters a new scope (via call, create or selfdestruct). -func (jst *Tracer) CaptureEnter(typ vm.OpCode, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) { - if !jst.traceCallFrames { - return - } - if jst.err != nil { - return - } - // If tracing was interrupted, set the error and stop - if atomic.LoadUint32(&jst.interrupt) > 0 { - jst.err = jst.reason - return - } - - *jst.frame.typ = typ.String() - *jst.frame.from = from - *jst.frame.to = to - jst.frame.input = common.CopyBytes(input) - *jst.frame.gas = uint(gas) - jst.frame.value = nil - if value != nil { - jst.frame.value = new(big.Int).SetBytes(value.Bytes()) - } - - if _, err := jst.call(true, "enter", "frame"); err != nil { - jst.err = wrapError("enter", err) - } -} - -// CaptureExit is called when EVM exits a scope, even if the scope didn't -// execute any code. -func (jst *Tracer) CaptureExit(output []byte, gasUsed uint64, err error) { - if !jst.traceCallFrames { - return - } - // If tracing was interrupted, set the error and stop - if atomic.LoadUint32(&jst.interrupt) > 0 { - jst.err = jst.reason - return - } - - jst.frameResult.output = common.CopyBytes(output) - *jst.frameResult.gasUsed = uint(gasUsed) - jst.frameResult.errorValue = nil - if err != nil { - jst.frameResult.errorValue = new(string) - *jst.frameResult.errorValue = err.Error() - } - - if _, err := jst.call(true, "exit", "frameResult"); err != nil { - jst.err = wrapError("exit", err) - } -} - -// GetResult calls the Javascript 'result' function and returns its value, or any accumulated error -func (jst *Tracer) GetResult() (json.RawMessage, error) { - // Transform the context into a JavaScript object and inject into the state - obj := jst.vm.PushObject() - - for key, val := range jst.ctx { - jst.addToObj(obj, key, val) - } - jst.vm.PutPropString(jst.stateObject, "ctx") - - // Finalize the trace and return the results - result, err := jst.call(false, "result", "ctx", "db") - if err != nil { - jst.err = wrapError("result", err) - } - // Clean up the JavaScript environment - jst.vm.DestroyHeap() - jst.vm.Destroy() - - return result, jst.err -} - -// addToObj pushes a field to a JS object. -func (jst *Tracer) addToObj(obj int, key string, val interface{}) { - pushValue(jst.vm, val) - jst.vm.PutPropString(obj, key) -} - -func pushValue(ctx *duktape.Context, val interface{}) { - switch val := val.(type) { - case uint64: - ctx.PushUint(uint(val)) - case string: - ctx.PushString(val) - case []byte: - ptr := ctx.PushFixedBuffer(len(val)) - copy(makeSlice(ptr, uint(len(val))), val) - case common.Address: - ptr := ctx.PushFixedBuffer(20) - copy(makeSlice(ptr, 20), val[:]) - case *big.Int: - pushBigInt(val, ctx) - case int: - ctx.PushInt(val) - case uint: - ctx.PushUint(val) - case common.Hash: - ptr := ctx.PushFixedBuffer(32) - copy(makeSlice(ptr, 32), val[:]) - default: - panic(fmt.Sprintf("unsupported type: %T", val)) - } -} diff --git a/eth/tracers/internal/tracers/4byte_tracer_legacy.js b/eth/tracers/js/internal/tracers/4byte_tracer_legacy.js similarity index 100% rename from eth/tracers/internal/tracers/4byte_tracer_legacy.js rename to eth/tracers/js/internal/tracers/4byte_tracer_legacy.js diff --git a/eth/tracers/internal/tracers/assets.go b/eth/tracers/js/internal/tracers/assets.go similarity index 74% rename from eth/tracers/internal/tracers/assets.go rename to eth/tracers/js/internal/tracers/assets.go index 185967bdb6..a2bb69dee4 100644 --- a/eth/tracers/internal/tracers/assets.go +++ b/eth/tracers/js/internal/tracers/assets.go @@ -1,11 +1,10 @@ // Code generated by go-bindata. DO NOT EDIT. // sources: -// 4byte_tracer.js (2.224kB) // 4byte_tracer_legacy.js (2.933kB) // bigram_tracer.js (1.712kB) -// call_tracer.js (3.497kB) +// call_tracer_js.js (3.497kB) // call_tracer_legacy.js (8.956kB) -// evmdis_tracer.js (4.195kB) +// evmdis_tracer.js (4.215kB) // noop_tracer.js (1.271kB) // opcount_tracer.js (1.372kB) // prestate_tracer.js (4.287kB) @@ -79,26 +78,6 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var __4byte_tracerJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x55\x5b\x6f\x22\x39\x13\x7d\x86\x5f\x71\xc4\x13\x68\x9a\x4b\x73\x09\x97\xf9\x32\x12\xdf\x28\x99\x41\xca\x66\x22\x42\x34\x8a\x56\xfb\x60\xda\xd5\xdd\xde\x18\xbb\x65\xbb\xb9\x6c\x26\xff\x7d\x65\x37\xe4\x36\xbb\xda\x79\x02\xec\xaa\x73\xaa\x4e\x1d\x17\xdd\x2e\x3e\xeb\xe2\x60\x44\x96\x3b\xf4\x7b\xf1\x18\xab\x9c\x90\xe9\x36\xb9\x9c\x0c\x95\x1b\xcc\x4b\x97\x6b\x63\xeb\xdd\x2e\x56\xb9\xb0\x48\x85\x24\x08\x8b\x82\x19\x07\x9d\xc2\xbd\x8b\x97\x62\x6d\x98\x39\x74\xea\xdd\x6e\x95\xf3\x8f\xd7\x1e\x21\x35\x44\xb0\x3a\x75\x3b\x66\x68\x86\x83\x2e\x91\x30\x05\x43\x5c\x58\x67\xc4\xba\x74\x04\xe1\xc0\x14\xef\x6a\x83\x8d\xe6\x22\x3d\x78\x48\xe1\x50\x2a\x4e\x26\x50\x3b\x32\x1b\x7b\xaa\xe3\xcb\xf5\x1d\xae\xc8\x5a\x32\xf8\x42\x8a\x0c\x93\xb8\x29\xd7\x52\x24\xb8\x12\x09\x29\x4b\x60\x16\x85\x3f\xb1\x39\x71\xac\x03\x9c\x4f\xbc\xf4\xa5\xdc\x1e\x4b\xc1\xa5\x2e\x15\x67\x4e\x68\x15\x81\x84\xaf\x1c\x5b\x32\x56\x68\x85\xc1\x89\xea\x08\x18\x41\x1b\x0f\xd2\x64\xce\x37\x60\xa0\x0b\x9f\xd7\x02\x53\x07\x48\xe6\x5e\x52\x7f\x41\x90\x97\xbe\x39\x84\x0a\x34\xb9\x2e\x08\x2e\x67\xce\x77\xbd\x13\x52\x62\x4d\x28\x2d\xa5\xa5\x8c\x3c\xda\xba\x74\xf8\xbe\x58\x7d\xfd\x76\xb7\xc2\xfc\xfa\x1e\xdf\xe7\xcb\xe5\xfc\x7a\x75\xff\x11\x3b\xe1\x72\x5d\x3a\xd0\x96\x2a\x28\xb1\x29\xa4\x20\x8e\x1d\x33\x86\x29\x77\x80\x4e\x3d\xc2\x6f\x17\xcb\xcf\x5f\xe7\xd7\xab\xf9\xff\x17\x57\x8b\xd5\x3d\xb4\xc1\xe5\x62\x75\x7d\x71\x7b\x8b\xcb\x6f\x4b\xcc\x71\x33\x5f\xae\x16\x9f\xef\xae\xe6\x4b\xdc\xdc\x2d\x6f\xbe\xdd\x5e\x74\x70\x4b\xbe\x2a\xf2\xf9\xff\xad\x79\x1a\xa6\x67\x08\x9c\x1c\x13\xd2\x9e\x94\xb8\xd7\x25\x6c\xae\x4b\xc9\x91\xb3\x2d\xc1\x50\x42\x62\x4b\x1c\x0c\x89\x2e\x0e\xbf\x3c\x54\x8f\xc5\xa4\x56\x59\xe8\xf9\x5f\x0d\x89\x45\x0a\xa5\x5d\x04\x4b\x84\xff\xe5\xce\x15\xb3\x6e\x77\xb7\xdb\x75\x32\x55\x76\xb4\xc9\xba\xb2\x82\xb3\xdd\x4f\x9d\xba\xc7\x1c\xae\x0f\x8e\x56\x86\x25\x64\x60\x89\x99\x24\x27\x1b\x9a\x09\x17\x6d\xc1\x49\x39\x91\x0a\x32\x36\xf2\x26\x45\xa2\xa5\xa4\xc4\x59\x5f\xc1\x26\x04\x16\xda\xba\x76\x61\x74\x42\xd6\x0a\x95\xf9\xc6\xb1\x70\x6f\x02\xb1\x21\x97\x6b\x6e\xf1\x0a\xee\x7d\x37\x56\xfc\x45\x27\x35\x6c\x59\x54\x63\xe4\xcc\xb1\x08\x56\x87\xee\x61\xc8\xdb\x8c\x38\xac\xc8\x14\x73\xa5\xa1\xf0\x96\xd6\x84\x0d\x73\x89\x37\x3b\xcb\x98\x50\xd6\xfd\x04\xe8\x71\x4e\x13\xb9\xd8\xb3\x4d\x21\x69\xe6\xbf\x03\x9f\xc0\x69\x5d\x66\x1d\xe7\x25\x58\x19\xa6\x2c\x4b\xbc\xb9\x9b\x68\xf4\xf6\xfd\x78\x48\xa3\xe9\x98\x06\x23\xce\x7a\x93\xc1\xd9\xb4\x9f\x8e\x06\x93\xb3\x78\x18\xd3\xd9\x34\x1d\x8e\x69\x3a\x1e\xac\xfb\xc9\xe8\x8c\xc6\x6c\xd2\x1b\x0f\xd6\x31\xb1\xde\x24\xe5\xe3\xd1\x38\xa6\x29\xa7\x46\x84\xc7\x00\x6c\x66\x68\xbc\x52\xba\xf1\xd4\xaa\xd8\x1f\xab\x0f\xa0\xb7\xef\x8f\x79\xd2\x9f\x8e\xa9\x1d\xf7\x27\x33\xc4\xd1\xcb\xcd\x60\x92\x24\xc3\xc9\x20\x6e\xf7\x66\xe8\xbf\x3a\x1f\xf5\x87\xe9\x60\x32\x99\xb6\xa7\x67\x6f\x13\x18\x4f\x47\xd3\x74\x3a\x6d\xf7\x27\xef\xa0\x92\xfe\x24\xe6\xf1\x94\x3c\x54\x5c\x1d\x3f\xd5\x1f\xeb\x35\xbf\x70\xb8\x05\xcb\x32\x43\x19\x73\x54\x4d\x2d\x54\x1c\x2e\x52\xbf\x2c\x3a\xf5\x9a\xff\x3e\xc3\xe3\x53\x54\x0f\x39\xd6\x79\xc7\x5b\xef\xeb\x60\x48\xe1\x9f\xa1\x50\xcf\x43\x0e\x8e\xf1\xda\xfb\x59\x74\xea\xb5\x10\x3f\x43\x5a\xaa\x4a\x63\xc1\xa3\x30\xa6\xd6\x63\xbd\x56\xdb\x32\x83\x07\x3a\xe0\x1c\x8d\x06\x3e\xc0\xe9\xaf\xb4\x6f\x0a\xde\xc2\x07\x34\xda\xfe\xc4\x47\x7e\xac\xd7\x6a\x2e\x17\xb6\x23\xb8\xfd\xfd\x81\x0e\x7f\xe0\x1c\x6f\x7f\x7f\x40\x8c\x1f\x3f\x10\x7f\xac\xd7\x42\x99\xa4\x9c\x97\xff\x99\x33\x35\x6c\x43\x2d\x78\xc6\x6e\x17\xb7\x0f\xa2\x08\x6b\xac\x30\xd4\x4e\xf4\xa6\x08\x8b\x5f\x6d\x75\x12\x56\xa3\x8d\xe0\x72\xed\x57\xaa\x21\xfc\x59\x5a\x87\x94\xa9\xe4\x00\x5d\x24\x9a\x93\xad\xd7\x6a\x22\x45\x53\xd8\x1b\x43\xc7\x64\x5e\x11\x74\x32\x72\x2b\xdd\x6c\xb5\x2a\xa6\x9a\x21\x57\x1a\xe5\xab\x7f\x3a\xb6\x2a\x54\x51\x3a\x9c\xe3\x39\x7c\xe1\x0f\x9a\xad\x13\xa6\xff\xd5\x91\xa4\x32\x97\xe3\xd3\x39\x86\x47\xa0\xd0\x6c\xd0\xb1\x69\xfd\x5b\xae\x02\x23\xf4\x22\x0c\x5b\x11\xde\xa4\xb5\x31\x6c\x1d\x29\x2b\x29\xf6\xc2\xbd\x57\x62\x49\xb6\x94\xae\xf5\x32\xd3\x94\x95\xd2\xf9\x45\xed\x55\x78\xf0\xab\x34\x3f\xee\x56\x96\xb8\x92\x49\xd0\x9e\x92\xd2\x03\xf8\xc7\xc5\xd4\x51\x0b\xa4\xd5\xd6\xab\x85\xfc\x57\x2c\x52\x67\x11\xf8\xfa\x15\x83\x09\x94\x3f\x51\x30\x29\x03\xcd\x51\xdb\x6a\x5d\xae\xc9\x3b\xca\x91\x61\xfe\xff\x42\x6f\x8f\x9e\xaa\xe4\xb4\x01\xce\xe7\xa4\x42\x31\x79\x02\x3e\xbe\x79\xff\xf0\xc2\x3e\xaa\x55\xe7\xaf\x6a\x4a\xdc\xfe\xc5\x01\x27\xf7\xea\xd2\xff\x91\x25\x4c\x4a\xef\x58\x30\x69\xf5\x71\x16\x89\xdb\x77\x7e\x79\x1e\xcf\xc1\xcf\x33\x79\x9f\xde\x1e\xb6\x8e\x3e\xa8\xda\x78\x36\x70\x65\xd9\xa7\xfa\xdf\x01\x00\x00\xff\xff\xf6\xa8\xa1\xb9\xb0\x08\x00\x00") - -func _4byte_tracerJsBytes() ([]byte, error) { - return bindataRead( - __4byte_tracerJs, - "4byte_tracer.js", - ) -} - -func _4byte_tracerJs() (*asset, error) { - bytes, err := _4byte_tracerJsBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "4byte_tracer.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6b, 0xa8, 0x46, 0xa2, 0x3a, 0x2b, 0xaa, 0xb9, 0xb9, 0xba, 0xe2, 0x22, 0x10, 0xe, 0xe7, 0x4c, 0x24, 0xfc, 0x4c, 0x85, 0xeb, 0x96, 0x48, 0xe8, 0x7f, 0xc8, 0xe0, 0xd0, 0xd, 0x26, 0xa1, 0xb2}} - return a, nil -} - var __4byte_tracer_legacyJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x56\x5b\x6f\xdb\x4a\x0e\x7e\xb6\x7f\x05\xd7\x2f\xb5\x51\x59\x8e\x2f\x89\x2f\xd9\x16\xf0\xe6\xa4\x6d\x80\x9c\x24\x88\xdd\x3d\x28\x16\xfb\x30\x9e\xa1\xac\xd9\xc8\x33\xc2\x0c\xe5\x4b\x73\xf2\xdf\x17\x1c\x49\x89\x93\xd3\x62\xbb\x4f\x96\x47\xc3\x8f\x1f\xc9\x8f\xa4\x7a\x3d\xb8\xb0\xf9\xc1\xe9\x75\x4a\x30\x38\xe9\x8f\x61\x99\x22\xac\x6d\x17\x29\x45\x87\xc5\x06\xe6\x05\xa5\xd6\xf9\x66\xaf\x07\xcb\x54\x7b\x48\x74\x86\xa0\x3d\xe4\xc2\x11\xd8\x04\xe8\xcd\xfd\x4c\xaf\x9c\x70\x87\xb8\xd9\xeb\x95\x36\x3f\x7c\xcd\x08\x89\x43\x04\x6f\x13\xda\x09\x87\x33\x38\xd8\x02\xa4\x30\xe0\x50\x69\x4f\x4e\xaf\x0a\x42\xd0\x04\xc2\xa8\x9e\x75\xb0\xb1\x4a\x27\x07\x86\xd4\x04\x85\x51\xe8\x82\x6b\x42\xb7\xf1\x35\x8f\xcf\x37\x5f\xe1\x1a\xbd\x47\x07\x9f\xd1\xa0\x13\x19\xdc\x15\xab\x4c\x4b\xb8\xd6\x12\x8d\x47\x10\x1e\x72\x3e\xf1\x29\x2a\x58\x05\x38\x36\xfc\xc4\x54\x16\x15\x15\xf8\x64\x0b\xa3\x04\x69\x6b\x22\x40\xcd\xcc\x61\x8b\xce\x6b\x6b\x60\x58\xbb\xaa\x00\x23\xb0\x8e\x41\xda\x82\x38\x00\x07\x36\x67\xbb\x0e\x08\x73\x80\x4c\xd0\x8b\xe9\x2f\x24\xe4\x25\x6e\x05\xda\x04\x37\xa9\xcd\x11\x28\x15\xc4\x51\xef\x74\x96\xc1\x0a\xa1\xf0\x98\x14\x59\xc4\x68\xab\x82\xe0\x8f\xab\xe5\x97\xdb\xaf\x4b\x98\xdf\x7c\x83\x3f\xe6\xf7\xf7\xf3\x9b\xe5\xb7\x73\xd8\x69\x4a\x6d\x41\x80\x5b\x2c\xa1\xf4\x26\xcf\x34\x2a\xd8\x09\xe7\x84\xa1\x03\xd8\x84\x11\x7e\xbf\xbc\xbf\xf8\x32\xbf\x59\xce\xff\x71\x75\x7d\xb5\xfc\x06\xd6\xc1\xa7\xab\xe5\xcd\xe5\x62\x01\x9f\x6e\xef\x61\x0e\x77\xf3\xfb\xe5\xd5\xc5\xd7\xeb\xf9\x3d\xdc\x7d\xbd\xbf\xbb\x5d\x5c\xc6\xb0\x40\x66\x85\x6c\xff\xbf\x73\x9e\x84\xea\x39\x04\x85\x24\x74\xe6\xeb\x4c\x7c\xb3\x05\xf8\xd4\x16\x99\x82\x54\x6c\x11\x1c\x4a\xd4\x5b\x54\x20\x40\xda\xfc\xf0\xcb\x45\x65\x2c\x91\x59\xb3\x0e\x31\xff\x54\x90\x70\x95\x80\xb1\x14\x81\x47\x84\xbf\xa7\x44\xf9\xac\xd7\xdb\xed\x76\xf1\xda\x14\xb1\x75\xeb\x5e\x56\xc2\xf9\xde\xc7\xb8\xc9\x98\xa3\xd5\x81\x70\xe9\x84\x44\x07\x1e\x85\x93\x29\xfa\x10\x4c\x78\xd1\xd5\x0a\x0d\xe9\x44\xa3\xf3\x11\x8b\x14\xa4\xcd\x32\x94\xe4\x99\xc1\x26\x5c\xcc\xad\xa7\x6e\xee\xac\x44\xef\xb5\x59\x73\xe0\x70\x45\xaf\x2e\xc2\x06\x29\xb5\xca\xc3\x11\xdc\xdb\x68\xbc\xfe\x8e\x75\x36\x7c\x91\x97\x65\x54\x82\x44\x04\xde\x86\xe8\xc1\x21\xcb\x0c\x15\x78\xbd\x36\x82\x0a\x87\xa1\x97\x56\x08\x1b\x41\x92\xc5\x2e\xd6\x42\x1b\x4f\x7f\x01\x64\x9c\xba\x22\x97\x7b\xb1\xc9\x33\x9c\xf1\x33\xc0\x47\x50\xb8\x2a\xd6\x31\x71\x0a\x96\x4e\x18\x2f\x24\x8b\xbb\x0d\xad\x93\xfd\xa0\x3f\xc2\xd3\xe9\x18\x87\xa7\x4a\x9c\x4c\x86\x67\xd3\x41\x72\x3a\x9c\x9c\xf5\x47\x7d\x3c\x9b\x26\xa3\x31\x4e\xc7\xc3\xd5\x40\x9e\x9e\xe1\x58\x4c\x4e\xc6\xc3\x55\x1f\xc5\xc9\x24\x51\xe3\xd3\x71\x1f\xa7\x0a\x5b\x11\x3c\x06\x60\x37\x83\xd6\x51\xa6\x5b\x4f\x9d\xd2\xfb\x63\xf9\x03\x70\xb2\x1f\x8c\x95\x1c\x4c\xc7\xd8\xed\x0f\x26\x33\xe8\x47\x2f\x6f\x86\x13\x29\x47\x93\x61\xbf\x7b\x32\x83\xc1\xd1\xf9\xe9\x60\x94\x0c\x27\x93\x69\x77\x7a\xf6\xda\x40\xa8\xe4\x74\x9a\x4c\xa7\xdd\xc1\xe4\x0d\x94\x1c\x4c\xfa\xaa\x3f\x45\x86\xea\x97\xc7\x4f\xcd\xc7\x66\x83\x07\x8e\xf2\x20\xd6\x6b\x87\x6b\x41\x58\x56\x2d\x30\x0e\x2f\x12\x1e\x16\x71\xb3\xc1\xcf\x33\x78\x7c\x8a\x9a\xc1\x46\x8a\x2c\x5b\x1e\x72\x56\x35\x15\xce\x78\x78\x97\x88\xcc\xe3\xbb\xa0\x0b\x63\x4d\x97\x2f\x78\x1e\x1f\x01\x2f\x47\x7c\xe8\x6a\xa3\x70\x1f\x2e\xf0\x51\xa2\x9d\x27\x1e\xb3\x62\x13\x10\x45\xc2\xd3\xe4\xdd\x56\x64\x05\xbe\x8b\x40\xc7\x18\xc3\x06\x37\x5c\x54\xe1\x28\x6e\x36\x6a\x97\x33\x48\x0a\x53\x56\xca\xe6\x9e\x5c\xe7\xb1\xd9\x68\xf8\x9d\x26\x99\x1e\x1d\x48\xe1\x11\x5a\x17\xf3\xeb\xeb\xd6\x0c\x5e\xfe\x5c\xdc\xfe\x76\xd9\x9a\x35\x1b\x0d\x76\xb9\x16\x2c\x6d\xa5\x5c\x04\x5b\x91\x45\xa5\xbb\xea\xc7\x7f\x0f\x0f\xb6\xa0\xfa\xd7\x7f\x67\xb3\x32\x5e\x18\x9e\x43\xaf\x07\x9e\x84\x7c\x80\x9c\x1c\x90\x2d\xcd\x9a\xcf\xae\x7f\xbb\xbc\xbe\xfc\x3c\x5f\x5e\xbe\xa2\xb0\x58\xce\x97\x57\x17\xe5\xd1\x5f\x49\xfc\x1f\xfe\x07\x3f\xf3\xdf\x68\x3c\x35\x9f\x6f\x85\x9a\x9c\x37\x1b\x75\xd5\x3c\xf1\x9c\xf2\x3c\x8d\xc2\x18\xd1\x3c\x3c\xb9\x2c\x55\x6b\x86\x3e\xe7\x8e\xe1\x0e\x8a\x9b\x8d\x70\xff\x28\xdf\x5a\x45\xa1\xb9\x42\x86\xb7\xc2\xc1\x03\x1e\xe0\x03\xb4\x5a\xf0\x1e\xc8\x7e\xc1\x7d\x5b\xab\x0e\xbc\x87\x56\x97\x4f\xf8\xe6\x79\xb3\xd1\xa0\x54\xfb\x58\x2b\xff\xaf\x07\x3c\xfc\x1b\x3e\xc0\xeb\xff\xef\xa1\x0f\x7f\xfe\x09\xfd\x57\x34\x31\xe7\x85\xa1\xcd\xd6\x3e\xa0\x0a\x92\xe1\x01\x70\x00\x9b\x4b\xab\xaa\x8d\xc1\x11\xfc\xf3\x77\xc0\x3d\xca\x82\xd0\x07\xba\x98\x1f\xb1\xcd\xec\x3a\x02\xb5\xea\x00\xb3\xed\xf5\x60\xf1\xa0\xf3\xb0\xb8\x4a\x14\x5f\xc2\xf0\x46\x34\x96\x40\x1b\x42\x67\x44\x16\xa4\xed\xab\xf8\x24\xd5\x7c\x6b\xf5\x31\x6a\x6c\xf3\x98\xec\x82\x9c\x36\xeb\x76\xa7\xc3\x31\xea\x04\xda\x7f\x93\x54\xfa\xaa\xd2\x7f\x5e\x15\xe3\xd8\x75\xee\xb0\x2b\xed\x26\x0f\x5f\x19\x66\x6b\x65\xd8\xc3\x3e\x02\x4a\x2d\xef\x6f\x87\xf0\x9f\xc2\x13\x24\xc2\xc8\x67\xa2\x15\xbe\xf6\x77\x0e\x2b\x63\xd5\x26\x3b\x57\xca\xa1\xf7\x81\x51\x50\x42\xcc\x6d\xd6\xee\x77\x5e\xc8\xf5\xcf\x3a\x9d\xce\xcf\x48\x7d\x16\x61\xf7\xbf\x0a\xbc\x5e\x62\x55\xfc\xda\x2c\xbe\xc3\x07\x78\xe3\x41\x12\x57\xad\x13\x87\x5e\xbd\x4d\xda\xcf\x19\x08\xd7\x3f\x7e\x80\x51\xe5\xb2\x84\xb8\x4d\x92\x1f\x61\xbc\xb1\x2f\x65\x12\x14\x17\x22\x62\xd1\xbb\x43\xec\x79\x6d\xb5\x03\x48\x54\x61\xbd\x87\x51\x27\x0a\xd4\xba\xa3\x4e\x15\x4f\x2d\x9d\x44\x14\x19\x1d\x6b\x67\x97\x56\xdf\x07\x42\x52\x21\xb2\x4a\x2e\xfc\xad\x63\x13\x10\xa6\x56\x54\x52\x6e\xee\x46\xb0\xff\xa1\x86\xa0\x76\xe1\xd0\xff\xc8\x07\x27\x8f\xfd\xd4\xe2\x0a\x3b\x7f\x85\xdc\x60\x84\x4e\xf0\x47\x8f\xdd\x56\x2d\x56\x0d\xcd\x00\x57\xce\x42\xce\x7f\x05\x5c\x2d\x2e\xde\x1e\x61\xa9\x36\xca\xf3\x23\x52\x92\xf6\x2f\xa2\xae\x9b\xd9\x16\x3c\x3f\xb9\x86\xdc\xc0\x20\x32\x6f\xab\xaa\x48\xda\xc7\xda\xe4\x05\xc5\x19\x9a\x35\xa5\xc7\x15\x3a\x4a\x7a\x99\xe9\xe7\xcb\x11\x9c\x44\x21\xd1\x6f\xcd\xbb\xa3\xce\xeb\x29\x53\xf7\x73\xd9\xc1\x4f\xcd\xff\x06\x00\x00\xff\xff\x8e\xc8\x27\x72\x75\x0b\x00\x00") func _4byte_tracer_legacyJsBytes() ([]byte, error) { @@ -139,22 +118,22 @@ func bigram_tracerJs() (*asset, error) { return a, nil } -var _call_tracerJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x56\x5f\x6f\xdb\x38\x0c\x7f\x8e\x3f\x05\xaf\x0f\x4b\x82\x65\x71\xbb\x03\xf6\xd0\x2d\x03\x72\x45\xbb\x05\xe8\xb5\x45\x9a\xde\x50\x14\x7d\x50\x6c\xda\xd6\xa6\x48\x86\x44\x37\xcd\x6d\xfd\xee\x07\x4a\x76\x6a\x67\x59\x6f\x2f\x06\x2c\x92\x3f\xfe\xfb\x51\x54\x1c\xc3\x89\x29\x37\x56\xe6\x05\xc1\xdb\xc3\xb7\x47\xb0\x28\x10\x72\xf3\x06\xa9\x40\x8b\xd5\x0a\xa6\x15\x15\xc6\xba\x28\x8e\x61\x51\x48\x07\x99\x54\x08\xd2\x41\x29\x2c\x81\xc9\x80\x76\xf4\x95\x5c\x5a\x61\x37\xe3\x28\x8e\x83\xcd\x5e\x31\x23\x64\x16\x11\x9c\xc9\x68\x2d\x2c\x1e\xc3\xc6\x54\x90\x08\x0d\x16\x53\xe9\xc8\xca\x65\x45\x08\x92\x40\xe8\x34\x36\x16\x56\x26\x95\xd9\x86\x21\x25\x41\xa5\x53\xb4\xde\x35\xa1\x5d\xb9\x26\x8e\x4f\x17\x37\x70\x8e\xce\xa1\x85\x4f\xa8\xd1\x0a\x05\x57\xd5\x52\xc9\x04\xce\x65\x82\xda\x21\x08\x07\x25\x9f\xb8\x02\x53\x58\x7a\x38\x36\x3c\xe3\x50\xae\xeb\x50\xe0\xcc\x54\x3a\x15\x24\x8d\x1e\x01\x4a\x8e\x1c\x1e\xd0\x3a\x69\x34\xfc\xd9\xb8\xaa\x01\x47\x60\x2c\x83\x0c\x04\x71\x02\x16\x4c\xc9\x76\x43\x10\x7a\x03\x4a\xd0\xb3\xe9\x6f\x14\xe4\x39\xef\x14\xa4\xf6\x6e\x0a\x53\x22\x50\x21\x88\xb3\x5e\x4b\xa5\x60\x89\x50\x39\xcc\x2a\x35\x62\xb4\x65\x45\xf0\x65\xb6\xf8\x7c\x79\xb3\x80\xe9\xc5\x2d\x7c\x99\xce\xe7\xd3\x8b\xc5\xed\x7b\x58\x4b\x2a\x4c\x45\x80\x0f\x18\xa0\xe4\xaa\x54\x12\x53\x58\x0b\x6b\x85\xa6\x0d\x98\x8c\x11\xfe\x3e\x9d\x9f\x7c\x9e\x5e\x2c\xa6\x7f\xcd\xce\x67\x8b\x5b\x30\x16\xce\x66\x8b\x8b\xd3\xeb\x6b\x38\xbb\x9c\xc3\x14\xae\xa6\xf3\xc5\xec\xe4\xe6\x7c\x3a\x87\xab\x9b\xf9\xd5\xe5\xf5\xe9\x18\xae\x91\xa3\x42\xb6\xff\xff\x9a\x67\xbe\x7b\x16\x21\x45\x12\x52\xb9\xa6\x12\xb7\xa6\x02\x57\x98\x4a\xa5\x50\x88\x07\x04\x8b\x09\xca\x07\x4c\x41\x40\x62\xca\xcd\x6f\x37\x95\xb1\x84\x32\x3a\xf7\x39\xff\x92\x90\x30\xcb\x40\x1b\x1a\x81\x43\x84\x0f\x05\x51\x79\x1c\xc7\xeb\xf5\x7a\x9c\xeb\x6a\x6c\x6c\x1e\xab\x00\xe7\xe2\x8f\xe3\x28\x62\xd0\x44\x28\x75\x66\xc5\x0a\x17\x56\x24\x68\xb9\xee\xce\xc3\x6b\x5c\x7b\x21\x64\x2c\x05\xb2\x22\x91\x3a\x87\x15\x52\x61\x52\x07\x64\xc0\x62\x69\x2c\xd5\x9d\x02\xa9\x33\x63\x57\x9e\x51\x3e\xd8\x25\x37\x46\x6a\x42\xab\x85\x82\x15\x3a\x27\x72\xf4\x2c\x16\x0c\xa6\x9d\x48\xc8\x53\xe6\x7b\xd4\x63\x3f\x8e\x44\xf2\xed\x18\xee\xbe\x3f\xdd\x8f\xa2\x5e\x26\x2a\x45\xc7\x90\x55\xda\x6b\x0d\x94\xc9\x47\x90\x2e\x87\xf0\xfd\x69\x14\xf5\x2c\xba\xae\x38\xa1\xc7\x5a\x1c\xf5\x7a\x71\x0c\x57\x16\x4b\x66\xb9\xa9\x98\x9d\xb5\x73\x1f\x62\xd4\xeb\x3d\x08\x0b\x01\x01\x26\xde\xa0\x47\x9b\x12\x8f\x01\x00\x12\x7a\x1c\xf3\xcf\x88\x4f\x33\x6b\x56\xfe\x94\xcc\x67\x7c\x64\x1f\x63\x3e\x1a\x7a\x21\x19\x2f\x6a\x0b\xc9\x04\xd1\x83\x50\x95\x87\xeb\x1f\x3e\xf6\xe1\xb5\x07\xf5\x67\x63\x32\xd7\x64\xa5\xce\x07\x47\xef\x82\x6a\x2e\x5c\x80\xa9\x55\x97\x32\x9f\x69\xf2\x68\xb9\x70\xc3\xbd\x06\x37\x0e\xd3\xe3\xfd\x06\x2c\xda\x63\x24\x75\x59\xd1\x71\x27\x56\x7f\x14\xa4\xa6\xa2\x20\x7e\x96\x86\x23\x2f\x7e\x8a\x7a\x3d\x99\xc1\x80\x0a\xe9\xc6\xdb\x3e\xdd\x1d\xde\x87\x1f\xf8\x63\x32\xf1\x37\x55\x26\x35\xa6\xa1\xfe\x75\x7b\x6a\x85\x09\xfc\xc2\xf4\x45\x70\xb4\xd6\xd8\x97\xc0\x83\xc2\x3e\x70\x2f\x61\x70\x40\xe5\x10\x18\x9f\x73\xfa\x6d\xc4\xad\x72\x2b\xc0\x8e\x4a\x07\x03\x5e\xbd\xda\x23\x3e\xc0\x47\x4c\x2a\xa6\x26\x58\x7c\x40\x4b\x98\x1e\xc0\x8f\x1f\x35\xed\xea\xfa\xc2\x64\x32\x39\x38\x7c\x3c\x18\xd6\x71\xa4\xa8\x90\xb0\xab\xe3\x63\x88\x38\x46\xaa\xac\x0e\xd9\x66\x52\x0b\x25\xff\xc5\xda\xed\x30\xea\xf1\x4c\x20\x8f\x5a\x6b\x24\xfc\xd8\x06\x64\x26\xbc\x1f\xe5\x0e\xdd\xbd\xc2\x38\x47\x5a\x6c\x4a\x1c\x0c\x5b\x94\x0f\x44\xd8\xca\xcf\xac\x59\x0d\x86\xcf\xb4\xdf\x11\x2f\x4c\x23\xac\x79\xb6\x23\x9f\xf1\x69\xa3\xe2\x09\xdf\xe5\xee\x56\xf1\x93\x70\x83\x61\x8b\xbe\xfd\xa3\x77\xfd\x0e\x07\xb7\x9a\xff\xf0\x34\x0d\x86\x3b\xdd\xf4\xb9\x71\x9e\x61\xda\x26\xbf\x70\x53\x1b\x77\xe7\xa4\xf6\xd2\x65\xd3\xb8\xac\x5c\x31\xe0\xdf\xa6\xc6\x8f\x92\x76\x4b\x3c\x0f\x4d\xd8\x16\x5a\xa1\xfe\x89\x96\x63\x85\x3a\xa7\xa2\x4e\x83\x35\x3e\xc2\x51\xdd\xf5\x56\x73\x76\xbd\x9b\x72\x30\xdc\xe6\x54\x8f\x37\x4c\xf6\x95\x2f\x04\x51\x17\x91\xd5\x7e\x2e\x64\xe3\xab\xa1\xf9\x8e\xdd\x29\x1f\x07\x77\x1c\x63\xad\xb5\x67\x5a\x42\x34\x0d\x83\xdb\xcd\x7e\x06\xbb\xf4\xd2\xc1\xd0\xc3\xd5\x73\xd8\x32\x6e\x42\x68\xa6\x2c\xb8\xf4\x22\xa6\xa6\x77\xdb\x3f\x99\x9f\x4e\x17\xa7\x7d\x9e\x9a\xbd\x92\xb7\xfd\x26\xa0\x66\x70\x82\x9a\xf1\x67\x4f\x51\xf3\xe1\x6a\xbf\x99\xc0\x51\x93\xd9\xce\x85\xa1\x50\xbf\x39\x6a\x2e\xb3\xbd\xf9\xbe\x68\x00\x77\xf7\x5b\x4f\x2f\x28\x76\x98\xc4\xda\xcc\xa6\x38\x86\x66\x94\xf9\x5d\x60\x51\x10\x3a\x7e\x18\x30\x1b\xcc\xf2\x2b\x26\xbc\x5c\x79\xe9\xf2\x3e\xf6\xaa\x90\xa2\x93\x16\x53\xc8\x24\xaa\x14\x0c\xbf\x10\xf9\xe9\xf1\xd5\x19\xed\x01\x1d\x5a\xc9\x88\x7e\x0f\x8f\xc3\x6b\x56\x32\xa8\x96\x09\xd2\x06\x32\x14\x54\x59\xe4\xf5\x5d\x0a\xe7\x60\x85\x42\x4b\x9d\x67\x95\x52\x1b\x30\x36\x45\x06\x0f\xf7\x8a\xf3\x80\x64\x78\xc1\x5b\x07\xeb\xc2\x40\x6a\x74\xbf\x5e\xea\xa5\x45\x7e\xaf\x8d\xe0\x6b\xe5\x88\x5f\x75\xa5\x12\x1b\x90\x34\x8e\x7a\x4d\x52\xed\xfd\xcc\x99\x6f\x47\xc4\x19\xbe\x10\x7f\x5e\xbe\x4d\x9b\xbb\xdb\xd7\x1f\xf3\x5f\x77\xef\xd6\xdd\xee\x6e\xdc\xe7\xe9\xef\xae\xd7\x66\x82\xba\x3b\xb4\x3d\x57\xdd\x45\xe9\x25\xfe\xaf\xbb\x22\x5b\xdc\xf7\x02\xcf\xe0\xad\x81\xff\x0b\x51\xca\x55\x3b\x27\xb9\x0a\xf1\x78\x2e\x6c\xd5\xfd\x5f\x73\xbf\x71\x17\x07\x5c\x9c\x6f\xb8\xe1\x87\x71\xa8\x51\xcd\x41\xe6\x6d\x38\xb8\xfb\x86\x9b\xfb\xfd\x3c\xad\xa7\xa0\xa5\xd7\x30\xb3\xb9\x3f\x83\xe8\x85\xc5\xbd\x0d\x42\x4e\x0e\xdf\x83\xfc\xd0\x36\xa8\xef\xb0\xf7\x20\x5f\xbf\x6e\x5c\xb6\xe5\x77\xf2\xbe\xb9\xc2\xb6\x0b\x6a\x47\x3e\x6c\x07\x54\x6f\xb4\xa0\x12\xf5\x9e\xa2\xa7\xe8\xbf\x00\x00\x00\xff\xff\x2a\xac\x9f\xff\xa9\x0d\x00\x00") +var _call_tracer_jsJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x56\x5f\x6f\xdb\x38\x0c\x7f\x8e\x3f\x05\xaf\x0f\x4b\x82\x65\x71\xbb\x03\xf6\xd0\x2d\x03\x72\x45\xbb\x05\xe8\xb5\x45\x9a\xde\x50\x14\x7d\x50\x6c\xda\xd6\xa6\x48\x86\x44\x37\xcd\x6d\xfd\xee\x07\x4a\x76\x6a\x67\x59\x6f\x2f\x06\x2c\x92\x3f\xfe\xfb\x51\x54\x1c\xc3\x89\x29\x37\x56\xe6\x05\xc1\xdb\xc3\xb7\x47\xb0\x28\x10\x72\xf3\x06\xa9\x40\x8b\xd5\x0a\xa6\x15\x15\xc6\xba\x28\x8e\x61\x51\x48\x07\x99\x54\x08\xd2\x41\x29\x2c\x81\xc9\x80\x76\xf4\x95\x5c\x5a\x61\x37\xe3\x28\x8e\x83\xcd\x5e\x31\x23\x64\x16\x11\x9c\xc9\x68\x2d\x2c\x1e\xc3\xc6\x54\x90\x08\x0d\x16\x53\xe9\xc8\xca\x65\x45\x08\x92\x40\xe8\x34\x36\x16\x56\x26\x95\xd9\x86\x21\x25\x41\xa5\x53\xb4\xde\x35\xa1\x5d\xb9\x26\x8e\x4f\x17\x37\x70\x8e\xce\xa1\x85\x4f\xa8\xd1\x0a\x05\x57\xd5\x52\xc9\x04\xce\x65\x82\xda\x21\x08\x07\x25\x9f\xb8\x02\x53\x58\x7a\x38\x36\x3c\xe3\x50\xae\xeb\x50\xe0\xcc\x54\x3a\x15\x24\x8d\x1e\x01\x4a\x8e\x1c\x1e\xd0\x3a\x69\x34\xfc\xd9\xb8\xaa\x01\x47\x60\x2c\x83\x0c\x04\x71\x02\x16\x4c\xc9\x76\x43\x10\x7a\x03\x4a\xd0\xb3\xe9\x6f\x14\xe4\x39\xef\x14\xa4\xf6\x6e\x0a\x53\x22\x50\x21\x88\xb3\x5e\x4b\xa5\x60\x89\x50\x39\xcc\x2a\x35\x62\xb4\x65\x45\xf0\x65\xb6\xf8\x7c\x79\xb3\x80\xe9\xc5\x2d\x7c\x99\xce\xe7\xd3\x8b\xc5\xed\x7b\x58\x4b\x2a\x4c\x45\x80\x0f\x18\xa0\xe4\xaa\x54\x12\x53\x58\x0b\x6b\x85\xa6\x0d\x98\x8c\x11\xfe\x3e\x9d\x9f\x7c\x9e\x5e\x2c\xa6\x7f\xcd\xce\x67\x8b\x5b\x30\x16\xce\x66\x8b\x8b\xd3\xeb\x6b\x38\xbb\x9c\xc3\x14\xae\xa6\xf3\xc5\xec\xe4\xe6\x7c\x3a\x87\xab\x9b\xf9\xd5\xe5\xf5\xe9\x18\xae\x91\xa3\x42\xb6\xff\xff\x9a\x67\xbe\x7b\x16\x21\x45\x12\x52\xb9\xa6\x12\xb7\xa6\x02\x57\x98\x4a\xa5\x50\x88\x07\x04\x8b\x09\xca\x07\x4c\x41\x40\x62\xca\xcd\x6f\x37\x95\xb1\x84\x32\x3a\xf7\x39\xff\x92\x90\x30\xcb\x40\x1b\x1a\x81\x43\x84\x0f\x05\x51\x79\x1c\xc7\xeb\xf5\x7a\x9c\xeb\x6a\x6c\x6c\x1e\xab\x00\xe7\xe2\x8f\xe3\x28\x62\xd0\x44\x28\x75\x66\xc5\x0a\x17\x56\x24\x68\xb9\xee\xce\xc3\x6b\x5c\x7b\x21\x64\x2c\x05\xb2\x22\x91\x3a\x87\x15\x52\x61\x52\x07\x64\xc0\x62\x69\x2c\xd5\x9d\x02\xa9\x33\x63\x57\x9e\x51\x3e\xd8\x25\x37\x46\x6a\x42\xab\x85\x82\x15\x3a\x27\x72\xf4\x2c\x16\x0c\xa6\x9d\x48\xc8\x53\xe6\x7b\xd4\x63\x3f\x8e\x44\xf2\xed\x18\xee\xbe\x3f\xdd\x8f\xa2\x5e\x26\x2a\x45\xc7\x90\x55\xda\x6b\x0d\x94\xc9\x47\x90\x2e\x87\xf0\xfd\x69\x14\xf5\x2c\xba\xae\x38\xa1\xc7\x5a\x1c\xf5\x7a\x71\x0c\x57\x16\x4b\x66\xb9\xa9\x98\x9d\xb5\x73\x1f\x62\xd4\xeb\x3d\x08\x0b\x01\x01\x26\xde\xa0\x47\x9b\x12\x8f\x01\x00\x12\x7a\x1c\xf3\xcf\x88\x4f\x33\x6b\x56\xfe\x94\xcc\x67\x7c\x64\x1f\x63\x3e\x1a\x7a\x21\x19\x2f\x6a\x0b\xc9\x04\xd1\x83\x50\x95\x87\xeb\x1f\x3e\xf6\xe1\xb5\x07\xf5\x67\x63\x32\xd7\x64\xa5\xce\x07\x47\xef\x82\x6a\x2e\x5c\x80\xa9\x55\x97\x32\x9f\x69\xf2\x68\xb9\x70\xc3\xbd\x06\x37\x0e\xd3\xe3\xfd\x06\x2c\xda\x63\x24\x75\x59\xd1\x71\x27\x56\x7f\x14\xa4\xa6\xa2\x20\x7e\x96\x86\x23\x2f\x7e\x8a\x7a\x3d\x99\xc1\x80\x0a\xe9\xc6\xdb\x3e\xdd\x1d\xde\x87\x1f\xf8\x63\x32\xf1\x37\x55\x26\x35\xa6\xa1\xfe\x75\x7b\x6a\x85\x09\xfc\xc2\xf4\x45\x70\xb4\xd6\xd8\x97\xc0\x83\xc2\x3e\x70\x2f\x61\x70\x40\xe5\x10\x18\x9f\x73\xfa\x6d\xc4\xad\x72\x2b\xc0\x8e\x4a\x07\x03\x5e\xbd\xda\x23\x3e\xc0\x47\x4c\x2a\xa6\x26\x58\x7c\x40\x4b\x98\x1e\xc0\x8f\x1f\x35\xed\xea\xfa\xc2\x64\x32\x39\x38\x7c\x3c\x18\xd6\x71\xa4\xa8\x90\xb0\xab\xe3\x63\x88\x38\x46\xaa\xac\x0e\xd9\x66\x52\x0b\x25\xff\xc5\xda\xed\x30\xea\xf1\x4c\x20\x8f\x5a\x6b\x24\xfc\xd8\x06\x64\x26\xbc\x1f\xe5\x0e\xdd\xbd\xc2\x38\x47\x5a\x6c\x4a\x1c\x0c\x5b\x94\x0f\x44\xd8\xca\xcf\xac\x59\x0d\x86\xcf\xb4\xdf\x11\x2f\x4c\x23\xac\x79\xb6\x23\x9f\xf1\x69\xa3\xe2\x09\xdf\xe5\xee\x56\xf1\x93\x70\x83\x61\x8b\xbe\xfd\xa3\x77\xfd\x0e\x07\xb7\x9a\xff\xf0\x34\x0d\x86\x3b\xdd\xf4\xb9\x71\x9e\x61\xda\x26\xbf\x70\x53\x1b\x77\xe7\xa4\xf6\xd2\x65\xd3\xb8\xac\x5c\x31\xe0\xdf\xa6\xc6\x8f\x92\x76\x4b\x3c\x0f\x4d\xd8\x16\x5a\xa1\xfe\x89\x96\x63\x85\x3a\xa7\xa2\x4e\x83\x35\x3e\xc2\x51\xdd\xf5\x56\x73\x76\xbd\x9b\x72\x30\xdc\xe6\x54\x8f\x37\x4c\xf6\x95\x2f\x04\x51\x17\x91\xd5\x7e\x2e\x64\xe3\xab\xa1\xf9\x8e\xdd\x29\x1f\x07\x77\x1c\x63\xad\xb5\x67\x5a\x42\x34\x0d\x83\xdb\xcd\x7e\x06\xbb\xf4\xd2\xc1\xd0\xc3\xd5\x73\xd8\x32\x6e\x42\x68\xa6\x2c\xb8\xf4\x22\xa6\xa6\x77\xdb\x3f\x99\x9f\x4e\x17\xa7\x7d\x9e\x9a\xbd\x92\xb7\xfd\x26\xa0\x66\x70\x82\x9a\xf1\x67\x4f\x51\xf3\xe1\x6a\xbf\x99\xc0\x51\x93\xd9\xce\x85\xa1\x50\xbf\x39\x6a\x2e\xb3\xbd\xf9\xbe\x68\x00\x77\xf7\x5b\x4f\x2f\x28\x76\x98\xc4\xda\xcc\xa6\x38\x86\x66\x94\xf9\x5d\x60\x51\x10\x3a\x7e\x18\x30\x1b\xcc\xf2\x2b\x26\xbc\x5c\x79\xe9\xf2\x3e\xf6\xaa\x90\xa2\x93\x16\x53\xc8\x24\xaa\x14\x0c\xbf\x10\xf9\xe9\xf1\xd5\x19\xed\x01\x1d\x5a\xc9\x88\x7e\x0f\x8f\xc3\x6b\x56\x32\xa8\x96\x09\xd2\x06\x32\x14\x54\x59\xe4\xf5\x5d\x0a\xe7\x60\x85\x42\x4b\x9d\x67\x95\x52\x1b\x30\x36\x45\x06\x0f\xf7\x8a\xf3\x80\x64\x78\xc1\x5b\x07\xeb\xc2\x40\x6a\x74\xbf\x5e\xea\xa5\x45\x7e\xaf\x8d\xe0\x6b\xe5\x88\x5f\x75\xa5\x12\x1b\x90\x34\x8e\x7a\x4d\x52\xed\xfd\xcc\x99\x6f\x47\xc4\x19\xbe\x10\x7f\x5e\xbe\x4d\x9b\xbb\xdb\xd7\x1f\xf3\x5f\x77\xef\xd6\xdd\xee\x6e\xdc\xe7\xe9\xef\xae\xd7\x66\x82\xba\x3b\xb4\x3d\x57\xdd\x45\xe9\x25\xfe\xaf\xbb\x22\x5b\xdc\xf7\x02\xcf\xe0\xad\x81\xff\x0b\x51\xca\x55\x3b\x27\xb9\x0a\xf1\x78\x2e\x6c\xd5\xfd\x5f\x73\xbf\x71\x17\x07\x5c\x9c\x6f\xb8\xe1\x87\x71\xa8\x51\xcd\x41\xe6\x6d\x38\xb8\xfb\x86\x9b\xfb\xfd\x3c\xad\xa7\xa0\xa5\xd7\x30\xb3\xb9\x3f\x83\xe8\x85\xc5\xbd\x0d\x42\x4e\x0e\xdf\x83\xfc\xd0\x36\xa8\xef\xb0\xf7\x20\x5f\xbf\x6e\x5c\xb6\xe5\x77\xf2\xbe\xb9\xc2\xb6\x0b\x6a\x47\x3e\x6c\x07\x54\x6f\xb4\xa0\x12\xf5\x9e\xa2\xa7\xe8\xbf\x00\x00\x00\xff\xff\x2a\xac\x9f\xff\xa9\x0d\x00\x00") -func call_tracerJsBytes() ([]byte, error) { +func call_tracer_jsJsBytes() ([]byte, error) { return bindataRead( - _call_tracerJs, - "call_tracer.js", + _call_tracer_jsJs, + "call_tracer_js.js", ) } -func call_tracerJs() (*asset, error) { - bytes, err := call_tracerJsBytes() +func call_tracer_jsJs() (*asset, error) { + bytes, err := call_tracer_jsJsBytes() if err != nil { return nil, err } - info := bindataFileInfo{name: "call_tracer.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + info := bindataFileInfo{name: "call_tracer_js.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x42, 0x13, 0x7a, 0x14, 0xbf, 0xa7, 0x49, 0x4f, 0xb4, 0x4f, 0x45, 0x1, 0xbc, 0x9e, 0xd1, 0x8e, 0xc7, 0xee, 0x61, 0xfa, 0x82, 0x52, 0xa4, 0x78, 0xfe, 0xff, 0xb1, 0x68, 0x1d, 0xcc, 0x1d, 0x8e}} return a, nil } @@ -179,7 +158,7 @@ func call_tracer_legacyJs() (*asset, error) { return a, nil } -var _evmdis_tracerJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x57\xdf\x6f\xda\xca\x12\x7e\x86\xbf\x62\x94\x27\x50\x29\x60\x63\x08\x38\x27\x47\xe2\xa6\xf4\x1c\xae\xd2\x24\x02\x72\x8f\x2a\x94\x87\x05\xc6\xb0\xaa\xf1\x5a\xbb\x6b\x72\xb8\x55\xfe\xf7\xab\xd9\x59\x03\xf9\x75\xdb\x4a\xa7\x0f\x3b\xb5\x77\xbe\x6f\xbe\x9d\x19\xcf\x92\x56\x0b\xae\x54\xbe\xd7\x72\xbd\xb1\x10\xb6\x83\x73\x98\x6d\x10\xd6\xea\x23\xda\x0d\x6a\x2c\xb6\x30\x2c\xec\x46\x69\x53\x6d\xb5\x60\xb6\x91\x06\x12\x99\x22\x48\x03\xb9\xd0\x16\x54\x02\xf6\x85\x7f\x2a\x17\x5a\xe8\x7d\xb3\xda\x6a\x31\xe6\xcd\x6d\x62\x48\x34\x22\x18\x95\xd8\x47\xa1\x31\x86\xbd\x2a\x60\x29\x32\xd0\xb8\x92\xc6\x6a\xb9\x28\x2c\x82\xb4\x20\xb2\x55\x4b\x69\xd8\xaa\x95\x4c\xf6\x44\x29\x2d\x14\xd9\x0a\xb5\x0b\x6d\x51\x6f\x4d\xa9\xe3\x8f\x9b\x7b\xb8\x46\x63\x50\xc3\x1f\x98\xa1\x16\x29\xdc\x15\x8b\x54\x2e\xe1\x5a\x2e\x31\x33\x08\xc2\x40\x4e\x6f\xcc\x06\x57\xb0\x70\x74\x04\xfc\x4c\x52\xa6\x5e\x0a\x7c\x56\x45\xb6\x12\x56\xaa\xac\x01\x28\x49\x39\xec\x50\x1b\xa9\x32\xe8\x94\xa1\x3c\x61\x03\x94\x26\x92\x9a\xb0\x74\x00\x0d\x2a\x27\x5c\x1d\x44\xb6\x87\x54\xd8\x23\xf4\x27\x12\x72\x3c\xf7\x0a\x64\xe6\xc2\x6c\x54\x8e\x60\x37\xc2\xd2\xa9\x1f\x65\x9a\xc2\x02\xa1\x30\x98\x14\x69\x83\xd8\x16\x85\x85\xbf\xc6\xb3\x3f\x6f\xef\x67\x30\xbc\xf9\x0a\x7f\x0d\x27\x93\xe1\xcd\xec\xeb\x05\x3c\x4a\xbb\x51\x85\x05\xdc\x21\x53\xc9\x6d\x9e\x4a\x5c\xc1\xa3\xd0\x5a\x64\x76\x0f\x2a\x21\x86\x2f\xa3\xc9\xd5\x9f\xc3\x9b\xd9\xf0\x5f\xe3\xeb\xf1\xec\x2b\x28\x0d\x9f\xc7\xb3\x9b\xd1\x74\x0a\x9f\x6f\x27\x30\x84\xbb\xe1\x64\x36\xbe\xba\xbf\x1e\x4e\xe0\xee\x7e\x72\x77\x3b\x1d\x35\x61\x8a\xa4\x0a\x09\xff\xe3\x9c\x27\xae\x7a\x1a\x61\x85\x56\xc8\xd4\x94\x99\xf8\xaa\x0a\x30\x1b\x55\xa4\x2b\xd8\x88\x1d\x82\xc6\x25\xca\x1d\xae\x40\xc0\x52\xe5\xfb\x9f\x2e\x2a\x71\x89\x54\x65\x6b\x77\xe6\x77\x1b\x12\xc6\x09\x64\xca\x36\xc0\x20\xc2\x6f\x1b\x6b\xf3\xb8\xd5\x7a\x7c\x7c\x6c\xae\xb3\xa2\xa9\xf4\xba\x95\x32\x9d\x69\xfd\xde\xac\x12\x27\xee\xb6\x2b\x69\x66\x5a\x2c\x51\x83\x46\x5b\xe8\xcc\x80\x29\x92\x44\x2e\x25\x66\x16\x64\x96\x28\xbd\x75\x7d\x02\x89\x56\x5b\x10\x60\xc9\x19\xac\x82\x1c\x35\x6d\x7a\x8e\x8f\xc6\xee\x53\xa7\x73\x25\x8d\x30\x06\xb7\x8b\x74\xdf\xac\x7e\xaf\x56\x8c\x15\xcb\x6f\x31\xcc\xbf\xab\xdc\xc4\x30\x7f\x78\x7a\x68\x54\xab\x95\x2c\x2f\xcc\x06\x4d\x0c\xdf\xdb\x31\xb4\x1b\x10\xc4\x10\x34\x20\x74\x6b\xc7\xad\x91\x5b\xbb\x6e\xed\xb9\xf5\xdc\xad\x7d\xb7\x0e\xdc\x1a\xb4\xd9\x30\x3a\x60\xb7\x80\xfd\x02\x76\x0c\xd8\x33\x64\xcf\xd0\xc7\xe1\x40\x21\x47\x0a\x39\x54\xc8\xb1\x42\x66\xe9\xb0\x4b\xc4\x2c\x11\xb3\x74\x99\xa5\xcb\x2c\x5d\x76\xe9\x32\x4b\xd7\x0b\xee\xba\xf3\x74\x99\xa5\x7b\xce\x4f\xcc\xd2\x65\x96\x1e\x1f\xb9\xc7\x80\x9e\x3f\x22\x03\x7a\x2c\xbe\xc7\x80\x1e\x03\xfa\x0c\xe8\x73\xd8\x7e\xc8\x4f\x1d\x36\xcc\xd2\xe7\xb0\xfd\x1e\x1b\x0e\xdb\x67\x96\x3e\xb3\x0c\x58\xfc\x20\x70\x7b\x03\x8e\x37\xe0\x78\x03\x9f\xd5\x32\xad\x3e\xaf\x6d\x9f\xd8\x76\xe8\x6d\xc7\xdb\xc8\xdb\xae\xb7\x3e\xf3\x6d\x9f\xfa\xb6\xcf\x7d\xdb\xf3\x1d\xea\xe4\xf9\x02\xcf\x17\x78\xbe\xc0\xf3\x05\x9e\xaf\xac\x64\x59\xca\xb2\x96\xbe\x98\x81\xaf\x66\xe0\xcb\x19\xf8\x7a\x06\xbe\xa0\x81\xaf\x68\xe0\x4b\x1a\xf8\x9a\x06\xa1\xe7\x0b\xfb\x31\x84\x64\x07\x31\x74\x1a\x10\x74\xda\x31\x44\x64\x83\x18\xba\x64\xc3\x18\x7a\x64\x3b\x31\x9c\x93\x8d\x62\xe8\x93\xed\xc6\x30\x20\x4b\x7c\xd4\xb5\x1d\x22\x24\xc6\x0e\x29\x24\xca\x0e\x49\x24\xce\x88\x34\x12\x69\x44\x22\x89\x35\x22\x95\x44\x1b\x91\x4c\xe2\x8d\x22\xd6\x11\x75\x59\x47\xd4\x63\x1d\xd1\x39\xeb\xa0\xee\x73\x80\x01\xeb\xa0\xfe\x23\x1d\xd4\x80\xa4\xc3\x75\x20\xe9\x70\x3d\x48\x3a\x5c\x17\x12\x25\xf5\xa1\xd3\xe1\x3a\x91\x48\xa9\x17\x9d\x0e\xd7\x8d\x44\xeb\xfa\x91\x78\x7d\x47\x06\xbd\xc0\xdb\xd0\xdb\x8e\xb7\x91\xb3\x61\xe4\xbf\xa2\xc8\x7f\x46\x91\xff\x8e\xa2\x8e\xdf\xf7\x7e\xee\x23\x78\xa2\xef\xbc\xd5\x02\x8d\xa6\x48\x2d\x4d\x7f\x99\xed\xd4\x37\x9a\xcf\x1b\xcc\x40\xa4\xa9\x1b\x64\x2a\x5f\xaa\x15\x1a\x1e\x90\x0b\xc4\x0c\xa4\x45\x2d\xe8\x86\x50\x3b\xd4\x74\x39\x96\xa3\xc9\xd1\x11\x26\x91\x99\x48\x4b\x62\x3f\x44\x69\x30\xc9\x6c\xdd\xac\x56\xf8\x7d\x0c\x49\x91\x2d\x69\x74\xd5\xea\xf0\xdd\x53\x80\xdd\x48\xd3\x74\x23\x69\xde\x7e\x68\xaa\xdc\x5c\x40\xa9\x33\x11\x6f\xc9\x24\x6a\xb1\xb4\x85\x48\x01\xff\xc6\x65\xe1\x66\xa1\x4a\x40\x64\x5e\x39\x24\x3c\xf1\x2b\x0e\x7f\x12\x35\x55\xeb\x06\xac\x16\x14\xbc\x0c\x61\x2c\xe6\xa7\x11\xe8\xde\xc0\x1d\xea\x7d\xc9\xe5\xee\x41\x0a\xf9\x9f\x2f\x3e\x1c\x12\x35\xe1\xde\x64\xae\x56\x2a\x3b\xa1\x21\xd1\x62\x8b\x70\x79\x7a\xba\xe3\x7f\x9b\x29\x66\x6b\xbb\x81\x8f\x10\x3c\x5c\x54\x3d\x02\xb5\x56\x1a\x2e\x21\x55\xeb\xe6\x1a\xed\x88\x1e\x6b\xf5\x8b\x6a\xa5\x22\x13\xa8\xb9\x5d\xa6\xaf\x38\xee\xf9\x99\x7b\x75\xf6\x00\x97\x0c\x25\xcf\x27\xc0\xd4\x20\x10\xc0\xd3\x7c\xc2\xdc\x6e\x6a\x75\xb8\x3c\x95\xe2\xe3\x7b\x3a\x95\xd3\xa5\x02\x97\xfc\x54\x51\x79\x0c\xf4\x8f\x08\x54\xde\xb4\xea\xa6\xd8\x2e\x50\xd7\xea\x0d\xb7\xbd\x22\x42\x88\xe1\x39\x3f\xef\x95\x65\x9e\x3f\xb8\xe7\x27\x92\xe4\xd4\x3b\xc5\x54\xdb\xf2\xe4\xbf\x43\xdb\x47\x77\x67\xcf\x35\xee\x54\x0e\x97\x70\x70\x9c\xbf\x82\x70\xb2\x08\x91\x28\x5d\x23\x94\x84\x4b\x68\x5f\x80\x84\xdf\xf8\x6c\xfe\x06\x9b\x33\x5b\x53\xe5\x0f\x17\x20\x3f\x7c\xa8\x3b\x50\xc5\xbf\x65\x8d\x4d\x72\x75\x39\xe2\x84\xe4\x88\xdf\x6a\xb2\xde\xb4\x6a\x6a\xb5\xcc\xd6\xb5\xa0\x57\x77\xb9\xaf\x3c\xd1\x62\x1e\xa5\x5d\xb2\xbf\x4b\x89\x77\xaa\xfb\x33\x2c\x85\x41\x38\xbb\x1a\x5e\x5f\x9f\xc5\x70\x7c\xb8\xba\xfd\x34\x3a\x8b\x0f\x87\x94\x99\xb1\xf4\xfb\x95\x4b\x7c\x12\xb7\x53\x6f\xee\x44\x5a\xe0\x6d\xc2\xf5\x3e\xb8\xcb\xff\xe2\x6b\xef\xe8\x95\x37\x17\x70\x7e\xb6\x16\xc6\xb5\xc3\x0b\x40\xfb\x5d\x80\x55\x6f\xf9\x07\xcf\xd3\xf0\x1c\xe2\x98\xde\x42\x85\x27\xa8\x17\x18\x99\xe5\x85\x3d\x60\xb6\xb8\x55\x7a\xdf\x34\xf4\xcb\xa7\xe6\x73\xd2\x38\x24\xe7\x83\x3f\xf7\x0b\x8a\x63\xaf\x67\x45\x9a\x3e\xdf\xe3\x39\xf2\xce\xa6\xca\x39\x27\x73\xdf\x3b\x27\x1f\x81\x6b\x01\xf6\xf3\xd1\x16\x1a\xc5\xb7\x8b\x63\x45\x3f\x8d\xae\x47\x7f\x0c\x67\xa3\x67\x95\x9d\xce\x86\xb3\xf1\x15\xbf\xfa\x71\x6d\xc3\x5f\xaa\xed\xeb\x4e\x38\x9e\xc3\x1d\x03\x5e\xb5\xe0\xdb\x2d\xf0\xcb\x3d\xf0\x4b\x4d\x70\x2c\xe8\x3f\x51\xd1\xff\x5f\xd2\x7f\xba\xa6\x93\xd1\xec\x7e\x72\x73\x52\x3a\xfa\x7b\xe5\x27\xbe\x19\xef\xfa\x76\xdd\x82\x57\xee\x3c\xbe\xfc\x15\xf7\x46\xe3\xab\xc2\x36\x5c\xe8\x0f\x25\xeb\x3b\x7a\xa7\xb3\xdb\xbb\x63\xef\xdd\x8f\xaf\xc6\x87\xa1\xf2\xa3\x18\xed\x06\xb4\xdf\x61\xfd\xf7\xfd\x97\xbb\x4f\xa3\xe9\xcc\x33\x95\x99\xcd\x97\x87\xcf\x74\x8d\xf6\xee\xaa\x76\x32\x03\x65\x52\xce\x3f\x69\xee\x28\xcd\xe5\xf4\x3b\xa0\x53\xcc\x0e\xf0\x67\x37\x07\x7c\x84\xf6\xdf\x5d\x3c\x72\x1d\x87\xfb\xcb\x82\xf9\x1b\xcc\x11\x1f\xeb\xfa\xec\x22\x3d\x9e\xee\xf9\x1d\xc4\xf8\x6a\xe5\xa9\xfa\x54\xfd\x5f\x00\x00\x00\xff\xff\xdf\x2f\xd9\xfa\x63\x10\x00\x00") +var _evmdis_tracerJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x97\x6f\x6f\xda\x48\x13\xc0\x5f\xc3\xa7\x18\xe5\x15\xa8\x14\xb0\x31\x04\x9c\xcb\x49\x3c\x29\xe9\xe5\x51\x9a\x44\x40\xee\x54\xa1\xbc\x58\x60\x0c\xab\x1a\xaf\xb5\xbb\x26\xc7\x53\xe5\xbb\x3f\x9a\x9d\x35\x90\x7f\xd7\x56\xba\xbe\xf0\xd4\xde\x99\xdf\xfc\xdd\x5d\xd2\x6a\xc1\x85\xca\x77\x5a\xae\xd6\x16\xc2\x76\x70\x0a\xd3\x35\xc2\x4a\x7d\x44\xbb\x46\x8d\xc5\x06\x86\x85\x5d\x2b\x6d\xaa\xad\x16\x4c\xd7\xd2\x40\x22\x53\x04\x69\x20\x17\xda\x82\x4a\xc0\xbe\xd0\x4f\xe5\x5c\x0b\xbd\x6b\x56\x5b\x2d\xb6\x79\x73\x99\x08\x89\x46\x04\xa3\x12\xfb\x28\x34\xc6\xb0\x53\x05\x2c\x44\x06\x1a\x97\xd2\x58\x2d\xe7\x85\x45\x90\x16\x44\xb6\x6c\x29\x0d\x1b\xb5\x94\xc9\x8e\x90\xd2\x42\x91\x2d\x51\x3b\xd7\x16\xf5\xc6\x94\x71\x7c\xbe\xb9\x87\x6b\x34\x06\x35\x7c\xc6\x0c\xb5\x48\xe1\xae\x98\xa7\x72\x01\xd7\x72\x81\x99\x41\x10\x06\x72\xfa\x62\xd6\xb8\x84\xb9\xc3\x91\xe1\x25\x85\x32\xf1\xa1\xc0\xa5\x2a\xb2\xa5\xb0\x52\x65\x0d\x40\x49\x91\xc3\x16\xb5\x91\x2a\x83\x4e\xe9\xca\x03\x1b\xa0\x34\x41\x6a\xc2\x52\x02\x1a\x54\x4e\x76\x75\x10\xd9\x0e\x52\x61\x0f\xa6\x3f\x51\x90\x43\xde\x4b\x90\x99\x73\xb3\x56\x39\x82\x5d\x0b\x4b\x59\x3f\xca\x34\x85\x39\x42\x61\x30\x29\xd2\x06\xd1\xe6\x85\x85\xbf\xae\xa6\x7f\xdc\xde\x4f\x61\x78\xf3\x15\xfe\x1a\x8e\xc7\xc3\x9b\xe9\xd7\x33\x78\x94\x76\xad\x0a\x0b\xb8\x45\x46\xc9\x4d\x9e\x4a\x5c\xc2\xa3\xd0\x5a\x64\x76\x07\x2a\x21\xc2\x97\xd1\xf8\xe2\x8f\xe1\xcd\x74\xf8\x9f\xab\xeb\xab\xe9\x57\x50\x1a\x2e\xaf\xa6\x37\xa3\xc9\x04\x2e\x6f\xc7\x30\x84\xbb\xe1\x78\x7a\x75\x71\x7f\x3d\x1c\xc3\xdd\xfd\xf8\xee\x76\x32\x6a\xc2\x04\x29\x2a\x24\xfb\x1f\xd7\x3c\x71\xdd\xd3\x08\x4b\xb4\x42\xa6\xa6\xac\xc4\x57\x55\x80\x59\xab\x22\x5d\xc2\x5a\x6c\x11\x34\x2e\x50\x6e\x71\x09\x02\x16\x2a\xdf\xfd\x74\x53\x89\x25\x52\x95\xad\x5c\xce\xef\x0e\x24\x5c\x25\x90\x29\xdb\x00\x83\x08\xbf\xad\xad\xcd\xe3\x56\xeb\xf1\xf1\xb1\xb9\xca\x8a\xa6\xd2\xab\x56\xca\x38\xd3\xfa\xbd\x59\x25\x26\x6e\x37\x4b\x69\xa6\x5a\x2c\x50\x83\x46\x5b\xe8\xcc\x80\x29\x92\x44\x2e\x24\x66\x16\x64\x96\x28\xbd\x71\x73\x02\x89\x56\x1b\x10\x60\x49\x19\xac\x82\x1c\x35\x2d\x7a\xc6\x47\x63\x77\xa9\x8b\x73\x29\x8d\x30\x06\x37\xf3\x74\xd7\xac\x7e\xaf\x56\x8c\x15\x8b\x6f\x31\xcc\xbe\xab\xdc\xc4\x30\x7b\x78\x7a\x68\x54\xab\x95\x2c\x2f\xcc\x1a\x4d\x0c\xdf\xdb\x31\xb4\x1b\x10\xc4\x10\x34\x20\x74\xcf\x8e\x7b\x46\xee\xd9\x75\xcf\x9e\x7b\x9e\xba\x67\xdf\x3d\x07\xee\x19\xb4\x59\xb0\x75\xc0\x6a\x01\xeb\x05\xac\x18\xb0\x66\xc8\x9a\xa1\xf7\xc3\x8e\x42\xf6\x14\xb2\xab\x90\x7d\x85\x4c\xe9\xb0\x4a\xc4\x94\x88\x29\x5d\xa6\x74\x99\xd2\x65\x95\x2e\x53\xba\x3e\xe0\xae\xcb\xa7\xcb\x94\xee\x29\xbf\x31\xa5\xcb\x94\x1e\xa7\xdc\x63\x83\x9e\x4f\x91\x0d\x7a\x1c\x7c\x8f\x0d\x7a\x6c\xd0\x67\x83\x3e\xbb\xed\x87\xfc\xd6\x61\xc1\x94\x3e\xbb\xed\xf7\x58\xb0\xdb\x3e\x53\xfa\x4c\x19\x70\xf0\x83\xc0\xad\x0d\xd8\xdf\x80\xfd\x0d\x7c\x55\xcb\xb2\xfa\xba\xb6\x7d\x61\xdb\xa1\x97\x1d\x2f\x23\x2f\xbb\x5e\xfa\xca\xb7\x7d\xe9\xdb\xbe\xf6\x6d\xcf\xdb\xf7\xc9\xf3\x02\xcf\x0b\x3c\x2f\xf0\xbc\xc0\xf3\xca\x4e\x96\xad\x2c\x7b\xe9\x9b\x19\xf8\x6e\x06\xbe\x9d\x81\xef\x67\xe0\x1b\x1a\xf8\x8e\x06\xbe\xa5\x81\xef\x69\x10\x7a\x5e\xd8\x8f\x21\x24\x39\x88\xa1\xd3\x80\xa0\xd3\x8e\x21\x22\x19\xc4\xd0\x25\x19\xc6\xd0\x23\xd9\x89\xe1\x94\x64\x14\x43\x9f\x64\x37\x86\x01\x49\xe2\xd1\xd4\x76\x08\x48\xc4\x0e\x45\x48\xc8\x0e\x85\x48\xcc\x88\x62\x24\x68\x44\x41\x12\x35\xa2\x28\x09\x1b\x51\x98\xc4\x8d\x22\x8e\x23\xea\x72\x1c\x51\x8f\xe3\x88\x4e\x39\x0e\x9a\x3e\x67\x30\xe0\x38\x68\xfe\x28\x0e\x1a\x40\x8a\xc3\x4d\x20\xc5\xe1\x66\x90\xe2\x70\x53\x48\x48\x9a\x43\x17\x87\x9b\x44\x82\xd2\x2c\xba\x38\xdc\x34\x12\xd6\xcd\x23\x71\xfd\x44\x06\xbd\xc0\xcb\xd0\xcb\x8e\x97\x91\x93\x61\xe4\x77\x51\xe4\xb7\x51\xe4\xf7\x51\xd4\xf1\xeb\x5e\xcf\x6d\x82\x27\xda\xe7\xad\x16\x68\x34\x45\x6a\xe9\xf4\x97\xd9\x56\x7d\xa3\xf3\x79\x8d\x19\x88\x34\x75\x07\x99\xca\x17\x6a\x89\x86\x0f\xc8\x39\x62\x06\xd2\xa2\x16\x74\x43\xa8\x2d\x6a\xba\x1c\xcb\xa3\xc9\xe1\xc8\x26\x91\x99\x48\x4b\xb0\x3f\x44\xe9\x60\x92\xd9\xaa\x59\xad\xf0\xf7\x18\x92\x22\x5b\xd0\xd1\x55\xab\xc3\x77\x8f\x00\xbb\x96\xa6\xe9\x8e\xa4\x59\xfb\xa1\xa9\x72\x73\x06\x65\x9c\x89\x78\x2b\x4c\x42\x8b\x85\x2d\x44\x0a\xf8\x37\x2e\x0a\x77\x16\xaa\x04\x44\xe6\x23\x87\x84\x4f\xfc\x8a\xb3\x3f\xf2\x9a\xaa\x55\x03\x96\x73\x72\x5e\xba\x30\x16\xf3\x63\x0f\x74\x6f\xe0\x16\xf5\xae\x64\xb9\x7b\x90\x5c\xfe\xf9\xc5\xbb\x43\x42\x93\xdd\x9b\xe4\x6a\xa5\xb2\x15\x1a\x12\x2d\x36\x08\xe7\xc7\xd9\x1d\xfe\xdb\x4c\x31\x5b\xd9\x35\x7c\x84\xe0\xe1\xac\xea\x2d\x50\x6b\xa5\xe1\x1c\x52\xb5\x6a\xae\xd0\x8e\xe8\xb5\x56\x3f\xab\x56\x2a\x32\x81\x9a\x5b\x65\x7c\xc5\xb1\x67\x27\xee\xd3\xc9\x03\x9c\xb3\x29\x69\x3e\x01\xa6\x06\x81\x0c\x3c\xe6\x13\xe6\x76\x5d\xab\xc3\xf9\x71\x28\xde\xbf\xc7\xa9\x9c\x2e\x15\x38\xe7\xb7\x8a\xca\x63\xa0\x7f\x04\x50\x79\xd3\xaa\x9b\x62\x33\x47\x5d\xab\x37\xdc\xf2\x92\x80\x10\xc3\x73\x3e\xaf\x95\x6d\x9e\x3d\xb8\xf7\x27\x0a\xc9\x45\xef\x22\xa6\xde\x96\x99\xff\x0e\x6d\xef\xdd\xe5\x9e\x6b\xdc\xaa\x1c\xce\x61\xaf\x38\x7b\x65\xc2\xc5\x22\x8b\x44\xe9\x1a\x59\x49\x38\x87\xf6\x19\x48\xf8\x8d\x73\xf3\x37\xd8\x8c\x69\x4d\x95\x3f\x9c\x81\xfc\xf0\xa1\xee\x8c\x2a\xfe\x2b\xc7\xd8\x24\x55\x57\x23\x2e\x48\x8e\xf8\xad\x26\xeb\x4d\xab\x26\x56\xcb\x6c\x55\x0b\x7a\x75\x57\xfb\xca\x13\x3d\xcc\xa3\xb4\x0b\xd6\x77\x25\xf1\x4a\x75\x9f\xc3\x42\x18\x84\x93\x8b\xe1\xf5\xf5\x49\x0c\x87\x97\x8b\xdb\x4f\xa3\x93\x78\x9f\xa4\xcc\x8c\xa5\xdf\xaf\xdc\xe2\x23\xbf\x9d\x7a\x73\x2b\xd2\x02\x6f\x13\xee\xf7\x5e\x5d\xfe\x0f\x5f\x6b\x47\xaf\xb4\xb9\x81\xb3\x93\x95\x30\x6e\x1c\x5e\x18\xb4\xdf\x35\xb0\xea\x2d\xfd\xe0\x79\x19\x9e\x9b\x38\xd2\x5b\x56\xe1\x91\xd5\x0b\x1b\x99\xe5\x85\xdd\xdb\x6c\x70\xa3\xf4\xae\x69\xe8\x97\x4f\xcd\xd7\xa4\xb1\x2f\xce\x07\x9f\xf7\x0b\xc4\x61\xd6\xb3\x22\x4d\x9f\xaf\xf1\x39\xf2\xce\xa2\xca\xb9\x26\x33\x3f\x3b\x47\x9b\xc0\x8d\x00\xeb\x79\x6f\x73\x8d\xe2\xdb\xd9\xa1\xa3\x9f\x46\xd7\xa3\xcf\xc3\xe9\xe8\x59\x67\x27\xd3\xe1\xf4\xea\x82\x3f\xfd\xb8\xb7\xe1\x2f\xf5\xf6\xf5\x24\x1c\xf2\x70\x69\xc0\xab\x11\x7c\x7b\x04\x7e\x79\x06\x7e\x69\x08\x0e\x0d\xfd\x37\x3a\xfa\xcf\x2d\xfd\xb7\x7b\x3a\x1e\x4d\xef\xc7\x37\xfb\x6e\x8e\x47\x7f\x8e\xc6\xd3\xa3\x4e\xd2\x9f\x2f\x3f\xb1\x85\xbc\xea\xdb\x6d\x0c\x5e\xa9\xf3\x69\xe6\x6f\xbc\x37\xf6\x81\x2a\x6c\xc3\xb9\xfe\x50\x52\xdf\x09\x7f\x32\xbd\xbd\x3b\x8c\xe2\xe8\xfa\xf2\xd3\x68\x32\x1d\xdf\x5f\x94\x29\xfc\xc8\x51\xbb\x01\xed\x77\xd0\xff\xbd\xff\x72\x47\x34\x4f\x2a\xab\x9d\x2f\xf6\x5b\x77\x85\xf6\xee\xa2\x76\x74\x2e\xca\xa4\x3c\x13\xa5\xb9\xa3\xd2\x97\x27\xe2\xde\x3a\xc5\x6c\x6f\xfe\xec\x36\x81\x8f\xd0\xfe\xbb\x8b\x07\xd6\xe1\xc0\x7f\xd9\x44\x7f\xab\x39\xf0\xa1\xd7\xcf\x2e\xd7\x43\x76\xcf\xef\x25\xb6\xaf\x56\x9e\xaa\x4f\xd5\xff\x07\x00\x00\xff\xff\xa5\x5b\x87\x4a\x77\x10\x00\x00") func evmdis_tracerJsBytes() ([]byte, error) { return bindataRead( @@ -195,7 +174,7 @@ func evmdis_tracerJs() (*asset, error) { } info := bindataFileInfo{name: "evmdis_tracer.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb5, 0xc8, 0x73, 0x8e, 0xfb, 0x1f, 0x84, 0x7d, 0x37, 0xd9, 0x26, 0x24, 0x37, 0xb8, 0x65, 0xb1, 0xed, 0xa0, 0x76, 0x9a, 0xf0, 0x8e, 0x3a, 0x9b, 0x20, 0x93, 0x27, 0x26, 0x2e, 0xc9, 0x9b, 0xde}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x13, 0xeb, 0xca, 0x1f, 0x5f, 0xd3, 0x29, 0x81, 0xbb, 0xd8, 0xc8, 0x4a, 0x3a, 0x38, 0x10, 0xe2, 0xe7, 0xa4, 0xcd, 0xde, 0x78, 0x85, 0xc2, 0xed, 0xee, 0xb, 0xd6, 0xdb, 0x5e, 0x44, 0x28, 0x16}} return a, nil } @@ -390,10 +369,9 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ - "4byte_tracer.js": _4byte_tracerJs, "4byte_tracer_legacy.js": _4byte_tracer_legacyJs, "bigram_tracer.js": bigram_tracerJs, - "call_tracer.js": call_tracerJs, + "call_tracer_js.js": call_tracer_jsJs, "call_tracer_legacy.js": call_tracer_legacyJs, "evmdis_tracer.js": evmdis_tracerJs, "noop_tracer.js": noop_tracerJs, @@ -447,10 +425,9 @@ type bintree struct { } var _bintree = &bintree{nil, map[string]*bintree{ - "4byte_tracer.js": {_4byte_tracerJs, map[string]*bintree{}}, "4byte_tracer_legacy.js": {_4byte_tracer_legacyJs, map[string]*bintree{}}, "bigram_tracer.js": {bigram_tracerJs, map[string]*bintree{}}, - "call_tracer.js": {call_tracerJs, map[string]*bintree{}}, + "call_tracer_js.js": {call_tracer_jsJs, map[string]*bintree{}}, "call_tracer_legacy.js": {call_tracer_legacyJs, map[string]*bintree{}}, "evmdis_tracer.js": {evmdis_tracerJs, map[string]*bintree{}}, "noop_tracer.js": {noop_tracerJs, map[string]*bintree{}}, diff --git a/eth/tracers/internal/tracers/bigram_tracer.js b/eth/tracers/js/internal/tracers/bigram_tracer.js similarity index 100% rename from eth/tracers/internal/tracers/bigram_tracer.js rename to eth/tracers/js/internal/tracers/bigram_tracer.js diff --git a/eth/tracers/internal/tracers/call_tracer.js b/eth/tracers/js/internal/tracers/call_tracer_js.js similarity index 100% rename from eth/tracers/internal/tracers/call_tracer.js rename to eth/tracers/js/internal/tracers/call_tracer_js.js diff --git a/eth/tracers/internal/tracers/call_tracer_legacy.js b/eth/tracers/js/internal/tracers/call_tracer_legacy.js similarity index 100% rename from eth/tracers/internal/tracers/call_tracer_legacy.js rename to eth/tracers/js/internal/tracers/call_tracer_legacy.js diff --git a/eth/tracers/internal/tracers/evmdis_tracer.js b/eth/tracers/js/internal/tracers/evmdis_tracer.js similarity index 98% rename from eth/tracers/internal/tracers/evmdis_tracer.js rename to eth/tracers/js/internal/tracers/evmdis_tracer.js index bb19777aba..c841c57f14 100644 --- a/eth/tracers/internal/tracers/evmdis_tracer.js +++ b/eth/tracers/js/internal/tracers/evmdis_tracer.js @@ -71,12 +71,12 @@ opinfo["ops"] = []; this.stack.push(opinfo); break; - case "RETURN": + case "RETURN": case "REVERT": var out = log.stack.peek(0).valueOf(); var outsize = log.stack.peek(1).valueOf(); frame.return = log.memory.slice(out, out + outsize); break; - case "STOP": case "SUICIDE": + case "STOP": case "SELFDESTRUCT": frame.return = log.memory.slice(0, 0); break; case "JUMPDEST": diff --git a/eth/tracers/internal/tracers/noop_tracer.js b/eth/tracers/js/internal/tracers/noop_tracer.js similarity index 100% rename from eth/tracers/internal/tracers/noop_tracer.js rename to eth/tracers/js/internal/tracers/noop_tracer.js diff --git a/eth/tracers/internal/tracers/opcount_tracer.js b/eth/tracers/js/internal/tracers/opcount_tracer.js similarity index 100% rename from eth/tracers/internal/tracers/opcount_tracer.js rename to eth/tracers/js/internal/tracers/opcount_tracer.js diff --git a/eth/tracers/internal/tracers/prestate_tracer.js b/eth/tracers/js/internal/tracers/prestate_tracer.js similarity index 100% rename from eth/tracers/internal/tracers/prestate_tracer.js rename to eth/tracers/js/internal/tracers/prestate_tracer.js diff --git a/eth/tracers/internal/tracers/tracers.go b/eth/tracers/js/internal/tracers/tracers.go similarity index 100% rename from eth/tracers/internal/tracers/tracers.go rename to eth/tracers/js/internal/tracers/tracers.go diff --git a/eth/tracers/internal/tracers/trigram_tracer.js b/eth/tracers/js/internal/tracers/trigram_tracer.js similarity index 100% rename from eth/tracers/internal/tracers/trigram_tracer.js rename to eth/tracers/js/internal/tracers/trigram_tracer.js diff --git a/eth/tracers/internal/tracers/unigram_tracer.js b/eth/tracers/js/internal/tracers/unigram_tracer.js similarity index 100% rename from eth/tracers/internal/tracers/unigram_tracer.js rename to eth/tracers/js/internal/tracers/unigram_tracer.js diff --git a/eth/tracers/js/tracer.go b/eth/tracers/js/tracer.go new file mode 100644 index 0000000000..b8e035e6f3 --- /dev/null +++ b/eth/tracers/js/tracer.go @@ -0,0 +1,880 @@ +// Copyright 2017 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +// package js is a collection of tracers written in javascript. +package js + +import ( + "encoding/json" + "errors" + "fmt" + "math/big" + "strings" + "sync/atomic" + "time" + "unicode" + "unsafe" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/core" + "github.com/ethereum/go-ethereum/core/vm" + "github.com/ethereum/go-ethereum/crypto" + tracers2 "github.com/ethereum/go-ethereum/eth/tracers" + "github.com/ethereum/go-ethereum/eth/tracers/js/internal/tracers" + "github.com/ethereum/go-ethereum/log" + "gopkg.in/olebedev/go-duktape.v3" +) + +// camel converts a snake cased input string into a camel cased output. +func camel(str string) string { + pieces := strings.Split(str, "_") + for i := 1; i < len(pieces); i++ { + pieces[i] = string(unicode.ToUpper(rune(pieces[i][0]))) + pieces[i][1:] + } + return strings.Join(pieces, "") +} + +var assetTracers = make(map[string]string) + +// init retrieves the JavaScript transaction tracers included in go-ethereum. +func init() { + for _, file := range tracers.AssetNames() { + name := camel(strings.TrimSuffix(file, ".js")) + assetTracers[name] = string(tracers.MustAsset(file)) + } + tracers2.RegisterLookup(true, newJsTracer) +} + +// makeSlice convert an unsafe memory pointer with the given type into a Go byte +// slice. +// +// Note, the returned slice uses the same memory area as the input arguments. +// If those are duktape stack items, popping them off **will** make the slice +// contents change. +func makeSlice(ptr unsafe.Pointer, size uint) []byte { + var sl = struct { + addr uintptr + len int + cap int + }{uintptr(ptr), int(size), int(size)} + + return *(*[]byte)(unsafe.Pointer(&sl)) +} + +// popSlice pops a buffer off the JavaScript stack and returns it as a slice. +func popSlice(ctx *duktape.Context) []byte { + blob := common.CopyBytes(makeSlice(ctx.GetBuffer(-1))) + ctx.Pop() + return blob +} + +// pushBigInt create a JavaScript BigInteger in the VM. +func pushBigInt(n *big.Int, ctx *duktape.Context) { + ctx.GetGlobalString("bigInt") + ctx.PushString(n.String()) + ctx.Call(1) +} + +// opWrapper provides a JavaScript wrapper around OpCode. +type opWrapper struct { + op vm.OpCode +} + +// pushObject assembles a JSVM object wrapping a swappable opcode and pushes it +// onto the VM stack. +func (ow *opWrapper) pushObject(vm *duktape.Context) { + obj := vm.PushObject() + + vm.PushGoFunction(func(ctx *duktape.Context) int { ctx.PushInt(int(ow.op)); return 1 }) + vm.PutPropString(obj, "toNumber") + + vm.PushGoFunction(func(ctx *duktape.Context) int { ctx.PushString(ow.op.String()); return 1 }) + vm.PutPropString(obj, "toString") + + vm.PushGoFunction(func(ctx *duktape.Context) int { ctx.PushBoolean(ow.op.IsPush()); return 1 }) + vm.PutPropString(obj, "isPush") +} + +// memoryWrapper provides a JavaScript wrapper around vm.Memory. +type memoryWrapper struct { + memory *vm.Memory +} + +// slice returns the requested range of memory as a byte slice. +func (mw *memoryWrapper) slice(begin, end int64) []byte { + if end == begin { + return []byte{} + } + if end < begin || begin < 0 { + // TODO(karalabe): We can't js-throw from Go inside duktape inside Go. The Go + // runtime goes belly up https://github.com/golang/go/issues/15639. + log.Warn("Tracer accessed out of bound memory", "offset", begin, "end", end) + return nil + } + if mw.memory.Len() < int(end) { + // TODO(karalabe): We can't js-throw from Go inside duktape inside Go. The Go + // runtime goes belly up https://github.com/golang/go/issues/15639. + log.Warn("Tracer accessed out of bound memory", "available", mw.memory.Len(), "offset", begin, "size", end-begin) + return nil + } + return mw.memory.GetCopy(begin, end-begin) +} + +// getUint returns the 32 bytes at the specified address interpreted as a uint. +func (mw *memoryWrapper) getUint(addr int64) *big.Int { + if mw.memory.Len() < int(addr)+32 || addr < 0 { + // TODO(karalabe): We can't js-throw from Go inside duktape inside Go. The Go + // runtime goes belly up https://github.com/golang/go/issues/15639. + log.Warn("Tracer accessed out of bound memory", "available", mw.memory.Len(), "offset", addr, "size", 32) + return new(big.Int) + } + return new(big.Int).SetBytes(mw.memory.GetPtr(addr, 32)) +} + +// pushObject assembles a JSVM object wrapping a swappable memory and pushes it +// onto the VM stack. +func (mw *memoryWrapper) pushObject(vm *duktape.Context) { + obj := vm.PushObject() + + // Generate the `slice` method which takes two ints and returns a buffer + vm.PushGoFunction(func(ctx *duktape.Context) int { + blob := mw.slice(int64(ctx.GetInt(-2)), int64(ctx.GetInt(-1))) + ctx.Pop2() + + ptr := ctx.PushFixedBuffer(len(blob)) + copy(makeSlice(ptr, uint(len(blob))), blob) + return 1 + }) + vm.PutPropString(obj, "slice") + + // Generate the `getUint` method which takes an int and returns a bigint + vm.PushGoFunction(func(ctx *duktape.Context) int { + offset := int64(ctx.GetInt(-1)) + ctx.Pop() + + pushBigInt(mw.getUint(offset), ctx) + return 1 + }) + vm.PutPropString(obj, "getUint") +} + +// stackWrapper provides a JavaScript wrapper around vm.Stack. +type stackWrapper struct { + stack *vm.Stack +} + +// peek returns the nth-from-the-top element of the stack. +func (sw *stackWrapper) peek(idx int) *big.Int { + if len(sw.stack.Data()) <= idx || idx < 0 { + // TODO(karalabe): We can't js-throw from Go inside duktape inside Go. The Go + // runtime goes belly up https://github.com/golang/go/issues/15639. + log.Warn("Tracer accessed out of bound stack", "size", len(sw.stack.Data()), "index", idx) + return new(big.Int) + } + return sw.stack.Back(idx).ToBig() +} + +// pushObject assembles a JSVM object wrapping a swappable stack and pushes it +// onto the VM stack. +func (sw *stackWrapper) pushObject(vm *duktape.Context) { + obj := vm.PushObject() + + vm.PushGoFunction(func(ctx *duktape.Context) int { ctx.PushInt(len(sw.stack.Data())); return 1 }) + vm.PutPropString(obj, "length") + + // Generate the `peek` method which takes an int and returns a bigint + vm.PushGoFunction(func(ctx *duktape.Context) int { + offset := ctx.GetInt(-1) + ctx.Pop() + + pushBigInt(sw.peek(offset), ctx) + return 1 + }) + vm.PutPropString(obj, "peek") +} + +// dbWrapper provides a JavaScript wrapper around vm.Database. +type dbWrapper struct { + db vm.StateDB +} + +// pushObject assembles a JSVM object wrapping a swappable database and pushes it +// onto the VM stack. +func (dw *dbWrapper) pushObject(vm *duktape.Context) { + obj := vm.PushObject() + + // Push the wrapper for statedb.GetBalance + vm.PushGoFunction(func(ctx *duktape.Context) int { + pushBigInt(dw.db.GetBalance(common.BytesToAddress(popSlice(ctx))), ctx) + return 1 + }) + vm.PutPropString(obj, "getBalance") + + // Push the wrapper for statedb.GetNonce + vm.PushGoFunction(func(ctx *duktape.Context) int { + ctx.PushInt(int(dw.db.GetNonce(common.BytesToAddress(popSlice(ctx))))) + return 1 + }) + vm.PutPropString(obj, "getNonce") + + // Push the wrapper for statedb.GetCode + vm.PushGoFunction(func(ctx *duktape.Context) int { + code := dw.db.GetCode(common.BytesToAddress(popSlice(ctx))) + + ptr := ctx.PushFixedBuffer(len(code)) + copy(makeSlice(ptr, uint(len(code))), code) + return 1 + }) + vm.PutPropString(obj, "getCode") + + // Push the wrapper for statedb.GetState + vm.PushGoFunction(func(ctx *duktape.Context) int { + hash := popSlice(ctx) + addr := popSlice(ctx) + + state := dw.db.GetState(common.BytesToAddress(addr), common.BytesToHash(hash)) + + ptr := ctx.PushFixedBuffer(len(state)) + copy(makeSlice(ptr, uint(len(state))), state[:]) + return 1 + }) + vm.PutPropString(obj, "getState") + + // Push the wrapper for statedb.Exists + vm.PushGoFunction(func(ctx *duktape.Context) int { + ctx.PushBoolean(dw.db.Exist(common.BytesToAddress(popSlice(ctx)))) + return 1 + }) + vm.PutPropString(obj, "exists") +} + +// contractWrapper provides a JavaScript wrapper around vm.Contract +type contractWrapper struct { + contract *vm.Contract +} + +// pushObject assembles a JSVM object wrapping a swappable contract and pushes it +// onto the VM stack. +func (cw *contractWrapper) pushObject(vm *duktape.Context) { + obj := vm.PushObject() + + // Push the wrapper for contract.Caller + vm.PushGoFunction(func(ctx *duktape.Context) int { + ptr := ctx.PushFixedBuffer(20) + copy(makeSlice(ptr, 20), cw.contract.Caller().Bytes()) + return 1 + }) + vm.PutPropString(obj, "getCaller") + + // Push the wrapper for contract.Address + vm.PushGoFunction(func(ctx *duktape.Context) int { + ptr := ctx.PushFixedBuffer(20) + copy(makeSlice(ptr, 20), cw.contract.Address().Bytes()) + return 1 + }) + vm.PutPropString(obj, "getAddress") + + // Push the wrapper for contract.Value + vm.PushGoFunction(func(ctx *duktape.Context) int { + pushBigInt(cw.contract.Value(), ctx) + return 1 + }) + vm.PutPropString(obj, "getValue") + + // Push the wrapper for contract.Input + vm.PushGoFunction(func(ctx *duktape.Context) int { + blob := cw.contract.Input + + ptr := ctx.PushFixedBuffer(len(blob)) + copy(makeSlice(ptr, uint(len(blob))), blob) + return 1 + }) + vm.PutPropString(obj, "getInput") +} + +type frame struct { + typ *string + from *common.Address + to *common.Address + input []byte + gas *uint + value *big.Int +} + +func newFrame() *frame { + return &frame{ + typ: new(string), + from: new(common.Address), + to: new(common.Address), + gas: new(uint), + } +} + +func (f *frame) pushObject(vm *duktape.Context) { + obj := vm.PushObject() + + vm.PushGoFunction(func(ctx *duktape.Context) int { pushValue(ctx, *f.typ); return 1 }) + vm.PutPropString(obj, "getType") + + vm.PushGoFunction(func(ctx *duktape.Context) int { pushValue(ctx, *f.from); return 1 }) + vm.PutPropString(obj, "getFrom") + + vm.PushGoFunction(func(ctx *duktape.Context) int { pushValue(ctx, *f.to); return 1 }) + vm.PutPropString(obj, "getTo") + + vm.PushGoFunction(func(ctx *duktape.Context) int { pushValue(ctx, f.input); return 1 }) + vm.PutPropString(obj, "getInput") + + vm.PushGoFunction(func(ctx *duktape.Context) int { pushValue(ctx, *f.gas); return 1 }) + vm.PutPropString(obj, "getGas") + + vm.PushGoFunction(func(ctx *duktape.Context) int { + if f.value != nil { + pushValue(ctx, f.value) + } else { + ctx.PushUndefined() + } + return 1 + }) + vm.PutPropString(obj, "getValue") +} + +type frameResult struct { + gasUsed *uint + output []byte + errorValue *string +} + +func newFrameResult() *frameResult { + return &frameResult{ + gasUsed: new(uint), + } +} + +func (r *frameResult) pushObject(vm *duktape.Context) { + obj := vm.PushObject() + + vm.PushGoFunction(func(ctx *duktape.Context) int { pushValue(ctx, *r.gasUsed); return 1 }) + vm.PutPropString(obj, "getGasUsed") + + vm.PushGoFunction(func(ctx *duktape.Context) int { pushValue(ctx, r.output); return 1 }) + vm.PutPropString(obj, "getOutput") + + vm.PushGoFunction(func(ctx *duktape.Context) int { + if r.errorValue != nil { + pushValue(ctx, *r.errorValue) + } else { + ctx.PushUndefined() + } + return 1 + }) + vm.PutPropString(obj, "getError") +} + +// jsTracer provides an implementation of Tracer that evaluates a Javascript +// function for each VM execution step. +type jsTracer struct { + vm *duktape.Context // Javascript VM instance + env *vm.EVM // EVM instance executing the code being traced + + tracerObject int // Stack index of the tracer JavaScript object + stateObject int // Stack index of the global state to pull arguments from + + opWrapper *opWrapper // Wrapper around the VM opcode + stackWrapper *stackWrapper // Wrapper around the VM stack + memoryWrapper *memoryWrapper // Wrapper around the VM memory + contractWrapper *contractWrapper // Wrapper around the contract object + dbWrapper *dbWrapper // Wrapper around the VM environment + + pcValue *uint // Swappable pc value wrapped by a log accessor + gasValue *uint // Swappable gas value wrapped by a log accessor + costValue *uint // Swappable cost value wrapped by a log accessor + depthValue *uint // Swappable depth value wrapped by a log accessor + errorValue *string // Swappable error value wrapped by a log accessor + refundValue *uint // Swappable refund value wrapped by a log accessor + + frame *frame // Represents entry into call frame. Fields are swappable + frameResult *frameResult // Represents exit from a call frame. Fields are swappable + + ctx map[string]interface{} // Transaction context gathered throughout execution + err error // Error, if one has occurred + + interrupt uint32 // Atomic flag to signal execution interruption + reason error // Textual reason for the interruption + + activePrecompiles []common.Address // Updated on CaptureStart based on given rules + traceSteps bool // When true, will invoke step() on each opcode + traceCallFrames bool // When true, will invoke enter() and exit() js funcs +} + +// New instantiates a new tracer instance. code specifies a Javascript snippet, +// which must evaluate to an expression returning an object with 'step', 'fault' +// and 'result' functions. +func newJsTracer(code string, ctx *tracers2.Context) (tracers2.Tracer, error) { + if c, ok := assetTracers[code]; ok { + code = c + } + if ctx == nil { + ctx = new(tracers2.Context) + } + tracer := &jsTracer{ + vm: duktape.New(), + ctx: make(map[string]interface{}), + opWrapper: new(opWrapper), + stackWrapper: new(stackWrapper), + memoryWrapper: new(memoryWrapper), + contractWrapper: new(contractWrapper), + dbWrapper: new(dbWrapper), + pcValue: new(uint), + gasValue: new(uint), + costValue: new(uint), + depthValue: new(uint), + refundValue: new(uint), + frame: newFrame(), + frameResult: newFrameResult(), + } + if ctx.BlockHash != (common.Hash{}) { + tracer.ctx["blockHash"] = ctx.BlockHash + + if ctx.TxHash != (common.Hash{}) { + tracer.ctx["txIndex"] = ctx.TxIndex + tracer.ctx["txHash"] = ctx.TxHash + } + } + // Set up builtins for this environment + tracer.vm.PushGlobalGoFunction("toHex", func(ctx *duktape.Context) int { + ctx.PushString(hexutil.Encode(popSlice(ctx))) + return 1 + }) + tracer.vm.PushGlobalGoFunction("toWord", func(ctx *duktape.Context) int { + var word common.Hash + if ptr, size := ctx.GetBuffer(-1); ptr != nil { + word = common.BytesToHash(makeSlice(ptr, size)) + } else { + word = common.HexToHash(ctx.GetString(-1)) + } + ctx.Pop() + copy(makeSlice(ctx.PushFixedBuffer(32), 32), word[:]) + return 1 + }) + tracer.vm.PushGlobalGoFunction("toAddress", func(ctx *duktape.Context) int { + var addr common.Address + if ptr, size := ctx.GetBuffer(-1); ptr != nil { + addr = common.BytesToAddress(makeSlice(ptr, size)) + } else { + addr = common.HexToAddress(ctx.GetString(-1)) + } + ctx.Pop() + copy(makeSlice(ctx.PushFixedBuffer(20), 20), addr[:]) + return 1 + }) + tracer.vm.PushGlobalGoFunction("toContract", func(ctx *duktape.Context) int { + var from common.Address + if ptr, size := ctx.GetBuffer(-2); ptr != nil { + from = common.BytesToAddress(makeSlice(ptr, size)) + } else { + from = common.HexToAddress(ctx.GetString(-2)) + } + nonce := uint64(ctx.GetInt(-1)) + ctx.Pop2() + + contract := crypto.CreateAddress(from, nonce) + copy(makeSlice(ctx.PushFixedBuffer(20), 20), contract[:]) + return 1 + }) + tracer.vm.PushGlobalGoFunction("toContract2", func(ctx *duktape.Context) int { + var from common.Address + if ptr, size := ctx.GetBuffer(-3); ptr != nil { + from = common.BytesToAddress(makeSlice(ptr, size)) + } else { + from = common.HexToAddress(ctx.GetString(-3)) + } + // Retrieve salt hex string from js stack + salt := common.HexToHash(ctx.GetString(-2)) + // Retrieve code slice from js stack + var code []byte + if ptr, size := ctx.GetBuffer(-1); ptr != nil { + code = common.CopyBytes(makeSlice(ptr, size)) + } else { + code = common.FromHex(ctx.GetString(-1)) + } + codeHash := crypto.Keccak256(code) + ctx.Pop3() + contract := crypto.CreateAddress2(from, salt, codeHash) + copy(makeSlice(ctx.PushFixedBuffer(20), 20), contract[:]) + return 1 + }) + tracer.vm.PushGlobalGoFunction("isPrecompiled", func(ctx *duktape.Context) int { + addr := common.BytesToAddress(popSlice(ctx)) + for _, p := range tracer.activePrecompiles { + if p == addr { + ctx.PushBoolean(true) + return 1 + } + } + ctx.PushBoolean(false) + return 1 + }) + tracer.vm.PushGlobalGoFunction("slice", func(ctx *duktape.Context) int { + start, end := ctx.GetInt(-2), ctx.GetInt(-1) + ctx.Pop2() + + blob := popSlice(ctx) + size := end - start + + if start < 0 || start > end || end > len(blob) { + // TODO(karalabe): We can't js-throw from Go inside duktape inside Go. The Go + // runtime goes belly up https://github.com/golang/go/issues/15639. + log.Warn("Tracer accessed out of bound memory", "available", len(blob), "offset", start, "size", size) + ctx.PushFixedBuffer(0) + return 1 + } + copy(makeSlice(ctx.PushFixedBuffer(size), uint(size)), blob[start:end]) + return 1 + }) + // Push the JavaScript tracer as object #0 onto the JSVM stack and validate it + if err := tracer.vm.PevalString("(" + code + ")"); err != nil { + log.Warn("Failed to compile tracer", "err", err) + return nil, err + } + tracer.tracerObject = 0 // yeah, nice, eval can't return the index itself + + hasStep := tracer.vm.GetPropString(tracer.tracerObject, "step") + tracer.vm.Pop() + + if !tracer.vm.GetPropString(tracer.tracerObject, "fault") { + return nil, fmt.Errorf("trace object must expose a function fault()") + } + tracer.vm.Pop() + + if !tracer.vm.GetPropString(tracer.tracerObject, "result") { + return nil, fmt.Errorf("trace object must expose a function result()") + } + tracer.vm.Pop() + + hasEnter := tracer.vm.GetPropString(tracer.tracerObject, "enter") + tracer.vm.Pop() + hasExit := tracer.vm.GetPropString(tracer.tracerObject, "exit") + tracer.vm.Pop() + if hasEnter != hasExit { + return nil, fmt.Errorf("trace object must expose either both or none of enter() and exit()") + } + tracer.traceCallFrames = hasEnter && hasExit + tracer.traceSteps = hasStep + + // Tracer is valid, inject the big int library to access large numbers + tracer.vm.EvalString(bigIntegerJS) + tracer.vm.PutGlobalString("bigInt") + + // Push the global environment state as object #1 into the JSVM stack + tracer.stateObject = tracer.vm.PushObject() + + logObject := tracer.vm.PushObject() + + tracer.opWrapper.pushObject(tracer.vm) + tracer.vm.PutPropString(logObject, "op") + + tracer.stackWrapper.pushObject(tracer.vm) + tracer.vm.PutPropString(logObject, "stack") + + tracer.memoryWrapper.pushObject(tracer.vm) + tracer.vm.PutPropString(logObject, "memory") + + tracer.contractWrapper.pushObject(tracer.vm) + tracer.vm.PutPropString(logObject, "contract") + + tracer.vm.PushGoFunction(func(ctx *duktape.Context) int { ctx.PushUint(*tracer.pcValue); return 1 }) + tracer.vm.PutPropString(logObject, "getPC") + + tracer.vm.PushGoFunction(func(ctx *duktape.Context) int { ctx.PushUint(*tracer.gasValue); return 1 }) + tracer.vm.PutPropString(logObject, "getGas") + + tracer.vm.PushGoFunction(func(ctx *duktape.Context) int { ctx.PushUint(*tracer.costValue); return 1 }) + tracer.vm.PutPropString(logObject, "getCost") + + tracer.vm.PushGoFunction(func(ctx *duktape.Context) int { ctx.PushUint(*tracer.depthValue); return 1 }) + tracer.vm.PutPropString(logObject, "getDepth") + + tracer.vm.PushGoFunction(func(ctx *duktape.Context) int { ctx.PushUint(*tracer.refundValue); return 1 }) + tracer.vm.PutPropString(logObject, "getRefund") + + tracer.vm.PushGoFunction(func(ctx *duktape.Context) int { + if tracer.errorValue != nil { + ctx.PushString(*tracer.errorValue) + } else { + ctx.PushUndefined() + } + return 1 + }) + tracer.vm.PutPropString(logObject, "getError") + + tracer.vm.PutPropString(tracer.stateObject, "log") + + tracer.frame.pushObject(tracer.vm) + tracer.vm.PutPropString(tracer.stateObject, "frame") + + tracer.frameResult.pushObject(tracer.vm) + tracer.vm.PutPropString(tracer.stateObject, "frameResult") + + tracer.dbWrapper.pushObject(tracer.vm) + tracer.vm.PutPropString(tracer.stateObject, "db") + + return tracer, nil +} + +// Stop terminates execution of the tracer at the first opportune moment. +func (jst *jsTracer) Stop(err error) { + jst.reason = err + atomic.StoreUint32(&jst.interrupt, 1) +} + +// call executes a method on a JS object, catching any errors, formatting and +// returning them as error objects. +func (jst *jsTracer) call(noret bool, method string, args ...string) (json.RawMessage, error) { + // Execute the JavaScript call and return any error + jst.vm.PushString(method) + for _, arg := range args { + jst.vm.GetPropString(jst.stateObject, arg) + } + code := jst.vm.PcallProp(jst.tracerObject, len(args)) + defer jst.vm.Pop() + + if code != 0 { + err := jst.vm.SafeToString(-1) + return nil, errors.New(err) + } + // No error occurred, extract return value and return + if noret { + return nil, nil + } + // Push a JSON marshaller onto the stack. We can't marshal from the out- + // side because duktape can crash on large nestings and we can't catch + // C++ exceptions ourselves from Go. TODO(karalabe): Yuck, why wrap?! + jst.vm.PushString("(JSON.stringify)") + jst.vm.Eval() + + jst.vm.Swap(-1, -2) + if code = jst.vm.Pcall(1); code != 0 { + err := jst.vm.SafeToString(-1) + return nil, errors.New(err) + } + return json.RawMessage(jst.vm.SafeToString(-1)), nil +} + +func wrapError(context string, err error) error { + return fmt.Errorf("%v in server-side tracer function '%v'", err, context) +} + +// CaptureStart implements the Tracer interface to initialize the tracing operation. +func (jst *jsTracer) CaptureStart(env *vm.EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) { + jst.env = env + jst.ctx["type"] = "CALL" + if create { + jst.ctx["type"] = "CREATE" + } + jst.ctx["from"] = from + jst.ctx["to"] = to + jst.ctx["input"] = input + jst.ctx["gas"] = gas + jst.ctx["gasPrice"] = env.TxContext.GasPrice + jst.ctx["value"] = value + + // Initialize the context + jst.ctx["block"] = env.Context.BlockNumber.Uint64() + jst.dbWrapper.db = env.StateDB + // Update list of precompiles based on current block + rules := env.ChainConfig().Rules(env.Context.BlockNumber) + jst.activePrecompiles = vm.ActivePrecompiles(rules) + + // Compute intrinsic gas + isHomestead := env.ChainConfig().IsHomestead(env.Context.BlockNumber) + isIstanbul := env.ChainConfig().IsIstanbul(env.Context.BlockNumber) + intrinsicGas, err := core.IntrinsicGas(input, nil, jst.ctx["type"] == "CREATE", isHomestead, isIstanbul) + if err != nil { + return + } + jst.ctx["intrinsicGas"] = intrinsicGas +} + +// CaptureState implements the Tracer interface to trace a single step of VM execution. +func (jst *jsTracer) CaptureState(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, rData []byte, depth int, err error) { + if !jst.traceSteps { + return + } + if jst.err != nil { + return + } + // If tracing was interrupted, set the error and stop + if atomic.LoadUint32(&jst.interrupt) > 0 { + jst.err = jst.reason + jst.env.Cancel() + return + } + jst.opWrapper.op = op + jst.stackWrapper.stack = scope.Stack + jst.memoryWrapper.memory = scope.Memory + jst.contractWrapper.contract = scope.Contract + + *jst.pcValue = uint(pc) + *jst.gasValue = uint(gas) + *jst.costValue = uint(cost) + *jst.depthValue = uint(depth) + *jst.refundValue = uint(jst.env.StateDB.GetRefund()) + + jst.errorValue = nil + if err != nil { + jst.errorValue = new(string) + *jst.errorValue = err.Error() + } + + if _, err := jst.call(true, "step", "log", "db"); err != nil { + jst.err = wrapError("step", err) + } +} + +// CaptureFault implements the Tracer interface to trace an execution fault +func (jst *jsTracer) CaptureFault(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, depth int, err error) { + if jst.err != nil { + return + } + // Apart from the error, everything matches the previous invocation + jst.errorValue = new(string) + *jst.errorValue = err.Error() + + if _, err := jst.call(true, "fault", "log", "db"); err != nil { + jst.err = wrapError("fault", err) + } +} + +// CaptureEnd is called after the call finishes to finalize the tracing. +func (jst *jsTracer) CaptureEnd(output []byte, gasUsed uint64, t time.Duration, err error) { + jst.ctx["output"] = output + jst.ctx["time"] = t.String() + jst.ctx["gasUsed"] = gasUsed + + if err != nil { + jst.ctx["error"] = err.Error() + } +} + +// CaptureEnter is called when EVM enters a new scope (via call, create or selfdestruct). +func (jst *jsTracer) CaptureEnter(typ vm.OpCode, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) { + if !jst.traceCallFrames { + return + } + if jst.err != nil { + return + } + // If tracing was interrupted, set the error and stop + if atomic.LoadUint32(&jst.interrupt) > 0 { + jst.err = jst.reason + return + } + + *jst.frame.typ = typ.String() + *jst.frame.from = from + *jst.frame.to = to + jst.frame.input = common.CopyBytes(input) + *jst.frame.gas = uint(gas) + jst.frame.value = nil + if value != nil { + jst.frame.value = new(big.Int).SetBytes(value.Bytes()) + } + + if _, err := jst.call(true, "enter", "frame"); err != nil { + jst.err = wrapError("enter", err) + } +} + +// CaptureExit is called when EVM exits a scope, even if the scope didn't +// execute any code. +func (jst *jsTracer) CaptureExit(output []byte, gasUsed uint64, err error) { + if !jst.traceCallFrames { + return + } + // If tracing was interrupted, set the error and stop + if atomic.LoadUint32(&jst.interrupt) > 0 { + jst.err = jst.reason + return + } + + jst.frameResult.output = common.CopyBytes(output) + *jst.frameResult.gasUsed = uint(gasUsed) + jst.frameResult.errorValue = nil + if err != nil { + jst.frameResult.errorValue = new(string) + *jst.frameResult.errorValue = err.Error() + } + + if _, err := jst.call(true, "exit", "frameResult"); err != nil { + jst.err = wrapError("exit", err) + } +} + +// GetResult calls the Javascript 'result' function and returns its value, or any accumulated error +func (jst *jsTracer) GetResult() (json.RawMessage, error) { + // Transform the context into a JavaScript object and inject into the state + obj := jst.vm.PushObject() + + for key, val := range jst.ctx { + jst.addToObj(obj, key, val) + } + jst.vm.PutPropString(jst.stateObject, "ctx") + + // Finalize the trace and return the results + result, err := jst.call(false, "result", "ctx", "db") + if err != nil { + jst.err = wrapError("result", err) + } + // Clean up the JavaScript environment + jst.vm.DestroyHeap() + jst.vm.Destroy() + + return result, jst.err +} + +// addToObj pushes a field to a JS object. +func (jst *jsTracer) addToObj(obj int, key string, val interface{}) { + pushValue(jst.vm, val) + jst.vm.PutPropString(obj, key) +} + +func pushValue(ctx *duktape.Context, val interface{}) { + switch val := val.(type) { + case uint64: + ctx.PushUint(uint(val)) + case string: + ctx.PushString(val) + case []byte: + ptr := ctx.PushFixedBuffer(len(val)) + copy(makeSlice(ptr, uint(len(val))), val) + case common.Address: + ptr := ctx.PushFixedBuffer(20) + copy(makeSlice(ptr, 20), val[:]) + case *big.Int: + pushBigInt(val, ctx) + case int: + ctx.PushInt(val) + case uint: + ctx.PushUint(val) + case common.Hash: + ptr := ctx.PushFixedBuffer(32) + copy(makeSlice(ptr, 32), val[:]) + default: + panic(fmt.Sprintf("unsupported type: %T", val)) + } +} diff --git a/eth/tracers/tracer_test.go b/eth/tracers/js/tracer_test.go similarity index 75% rename from eth/tracers/tracer_test.go rename to eth/tracers/js/tracer_test.go index 63b09bdc6f..cf0a4aa828 100644 --- a/eth/tracers/tracer_test.go +++ b/eth/tracers/js/tracer_test.go @@ -14,7 +14,7 @@ // You should have received a copy of the GNU Lesser General Public License // along with the go-ethereum library. If not, see . -package tracers +package js import ( "encoding/json" @@ -26,6 +26,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/vm" + "github.com/ethereum/go-ethereum/eth/tracers" "github.com/ethereum/go-ethereum/params" ) @@ -58,13 +59,13 @@ func testCtx() *vmContext { return &vmContext{blockCtx: vm.BlockContext{BlockNumber: big.NewInt(1)}, txCtx: vm.TxContext{GasPrice: big.NewInt(100000)}} } -func runTrace(tracer *Tracer, vmctx *vmContext, chaincfg *params.ChainConfig) (json.RawMessage, error) { - env := vm.NewEVM(vmctx.blockCtx, vmctx.txCtx, &dummyStatedb{}, chaincfg, vm.Config{Debug: true, Tracer: tracer}) +func runTrace(tracer tracers.Tracer, vmctx *vmContext, chaincfg *params.ChainConfig) (json.RawMessage, error) { var ( + env = vm.NewEVM(vmctx.blockCtx, vmctx.txCtx, &dummyStatedb{}, chaincfg, vm.Config{Debug: true, Tracer: tracer}) startGas uint64 = 10000 value = big.NewInt(0) + contract = vm.NewContract(account{}, account{}, value, startGas) ) - contract := vm.NewContract(account{}, account{}, value, startGas) contract.Code = []byte{byte(vm.PUSH1), 0x1, byte(vm.PUSH1), 0x1, 0x0} tracer.CaptureStart(env, contract.Caller(), contract.Address(), false, []byte{}, startGas, value) @@ -79,14 +80,11 @@ func runTrace(tracer *Tracer, vmctx *vmContext, chaincfg *params.ChainConfig) (j func TestTracer(t *testing.T) { execTracer := func(code string) ([]byte, string) { t.Helper() - tracer, err := New(code, new(Context)) + tracer, err := newJsTracer(code, nil) if err != nil { t.Fatal(err) } - ret, err := runTrace(tracer, &vmContext{ - blockCtx: vm.BlockContext{BlockNumber: big.NewInt(1)}, - txCtx: vm.TxContext{GasPrice: big.NewInt(100000)}, - }, params.TestChainConfig) + ret, err := runTrace(tracer, testCtx(), params.TestChainConfig) if err != nil { return nil, err.Error() // Stringify to allow comparison without nil checks } @@ -131,9 +129,8 @@ func TestTracer(t *testing.T) { func TestHalt(t *testing.T) { t.Skip("duktape doesn't support abortion") - timeout := errors.New("stahp") - tracer, err := New("{step: function() { while(1); }, result: function() { return null; }}", new(Context)) + tracer, err := newJsTracer("{step: function() { while(1); }, result: function() { return null; }, fault: function(){}}", nil) if err != nil { t.Fatal(err) } @@ -147,18 +144,19 @@ func TestHalt(t *testing.T) { } func TestHaltBetweenSteps(t *testing.T) { - tracer, err := New("{step: function() {}, fault: function() {}, result: function() { return null; }}", new(Context)) + tracer, err := newJsTracer("{step: function() {}, fault: function() {}, result: function() { return null; }}", nil) if err != nil { t.Fatal(err) } - env := vm.NewEVM(vm.BlockContext{BlockNumber: big.NewInt(1)}, vm.TxContext{}, &dummyStatedb{}, params.TestChainConfig, vm.Config{Debug: true, Tracer: tracer}) + env := vm.NewEVM(vm.BlockContext{BlockNumber: big.NewInt(1)}, vm.TxContext{GasPrice: big.NewInt(1)}, &dummyStatedb{}, params.TestChainConfig, vm.Config{Debug: true, Tracer: tracer}) scope := &vm.ScopeContext{ Contract: vm.NewContract(&account{}, &account{}, big.NewInt(0), 0), } - tracer.CaptureState(env, 0, 0, 0, 0, scope, nil, 0, nil) + tracer.CaptureStart(env, common.Address{}, common.Address{}, false, []byte{}, 0, big.NewInt(0)) + tracer.CaptureState(0, 0, 0, 0, scope, nil, 0, nil) timeout := errors.New("stahp") tracer.Stop(timeout) - tracer.CaptureState(env, 0, 0, 0, 0, scope, nil, 0, nil) + tracer.CaptureState(0, 0, 0, 0, scope, nil, 0, nil) if _, err := tracer.GetResult(); err.Error() != timeout.Error() { t.Errorf("Expected timeout error, got %v", err) @@ -168,24 +166,16 @@ func TestHaltBetweenSteps(t *testing.T) { // TestNoStepExec tests a regular value transfer (no exec), and accessing the statedb // in 'result' func TestNoStepExec(t *testing.T) { - runEmptyTrace := func(tracer *Tracer, vmctx *vmContext) (json.RawMessage, error) { - env := vm.NewEVM(vmctx.blockCtx, vmctx.txCtx, &dummyStatedb{}, params.TestChainConfig, vm.Config{Debug: true, Tracer: tracer}) - startGas := uint64(10000) - contract := vm.NewContract(account{}, account{}, big.NewInt(0), startGas) - tracer.CaptureStart(env, contract.Caller(), contract.Address(), false, []byte{}, startGas, big.NewInt(0)) - tracer.CaptureEnd(nil, startGas-contract.Gas, 1, nil) - return tracer.GetResult() - } execTracer := func(code string) []byte { t.Helper() - tracer, err := New(code, new(Context)) + tracer, err := newJsTracer(code, nil) if err != nil { t.Fatal(err) } - ret, err := runEmptyTrace(tracer, &vmContext{ - blockCtx: vm.BlockContext{BlockNumber: big.NewInt(1)}, - txCtx: vm.TxContext{GasPrice: big.NewInt(100000)}, - }) + env := vm.NewEVM(vm.BlockContext{BlockNumber: big.NewInt(1)}, vm.TxContext{GasPrice: big.NewInt(100)}, &dummyStatedb{}, params.TestChainConfig, vm.Config{Debug: true, Tracer: tracer}) + tracer.CaptureStart(env, common.Address{}, common.Address{}, false, []byte{}, 1000, big.NewInt(0)) + tracer.CaptureEnd(nil, 0, 1, nil) + ret, err := tracer.GetResult() if err != nil { t.Fatal(err) } @@ -212,7 +202,7 @@ func TestIsPrecompile(t *testing.T) { chaincfg.IstanbulBlock = big.NewInt(200) chaincfg.BerlinBlock = big.NewInt(300) txCtx := vm.TxContext{GasPrice: big.NewInt(100000)} - tracer, err := New("{addr: toAddress('0000000000000000000000000000000000000009'), res: null, step: function() { this.res = isPrecompiled(this.addr); }, fault: function() {}, result: function() { return this.res; }}", new(Context)) + tracer, err := newJsTracer("{addr: toAddress('0000000000000000000000000000000000000009'), res: null, step: function() { this.res = isPrecompiled(this.addr); }, fault: function() {}, result: function() { return this.res; }}", nil) if err != nil { t.Fatal(err) } @@ -226,7 +216,7 @@ func TestIsPrecompile(t *testing.T) { t.Errorf("Tracer should not consider blake2f as precompile in byzantium") } - tracer, _ = New("{addr: toAddress('0000000000000000000000000000000000000009'), res: null, step: function() { this.res = isPrecompiled(this.addr); }, fault: function() {}, result: function() { return this.res; }}", new(Context)) + tracer, _ = newJsTracer("{addr: toAddress('0000000000000000000000000000000000000009'), res: null, step: function() { this.res = isPrecompiled(this.addr); }, fault: function() {}, result: function() { return this.res; }}", nil) blockCtx = vm.BlockContext{BlockNumber: big.NewInt(250)} res, err = runTrace(tracer, &vmContext{blockCtx, txCtx}, chaincfg) if err != nil { @@ -239,23 +229,20 @@ func TestIsPrecompile(t *testing.T) { func TestEnterExit(t *testing.T) { // test that either both or none of enter() and exit() are defined - if _, err := New("{step: function() {}, fault: function() {}, result: function() { return null; }, enter: function() {}}", new(Context)); err == nil { + if _, err := newJsTracer("{step: function() {}, fault: function() {}, result: function() { return null; }, enter: function() {}}", new(tracers.Context)); err == nil { t.Fatal("tracer creation should've failed without exit() definition") } - if _, err := New("{step: function() {}, fault: function() {}, result: function() { return null; }, enter: function() {}, exit: function() {}}", new(Context)); err != nil { + if _, err := newJsTracer("{step: function() {}, fault: function() {}, result: function() { return null; }, enter: function() {}, exit: function() {}}", new(tracers.Context)); err != nil { t.Fatal(err) } - // test that the enter and exit method are correctly invoked and the values passed - tracer, err := New("{enters: 0, exits: 0, enterGas: 0, gasUsed: 0, step: function() {}, fault: function() {}, result: function() { return {enters: this.enters, exits: this.exits, enterGas: this.enterGas, gasUsed: this.gasUsed} }, enter: function(frame) { this.enters++; this.enterGas = frame.getGas(); }, exit: function(res) { this.exits++; this.gasUsed = res.getGasUsed(); }}", new(Context)) + tracer, err := newJsTracer("{enters: 0, exits: 0, enterGas: 0, gasUsed: 0, step: function() {}, fault: function() {}, result: function() { return {enters: this.enters, exits: this.exits, enterGas: this.enterGas, gasUsed: this.gasUsed} }, enter: function(frame) { this.enters++; this.enterGas = frame.getGas(); }, exit: function(res) { this.exits++; this.gasUsed = res.getGasUsed(); }}", new(tracers.Context)) if err != nil { t.Fatal(err) } - scope := &vm.ScopeContext{ Contract: vm.NewContract(&account{}, &account{}, big.NewInt(0), 0), } - tracer.CaptureEnter(vm.CALL, scope.Contract.Caller(), scope.Contract.Address(), []byte{}, 1000, new(big.Int)) tracer.CaptureExit([]byte{}, 400, nil) diff --git a/core/vm/access_list_tracer.go b/eth/tracers/logger/access_list_tracer.go similarity index 81% rename from core/vm/access_list_tracer.go rename to eth/tracers/logger/access_list_tracer.go index 11b4e29426..181fc47acb 100644 --- a/core/vm/access_list_tracer.go +++ b/eth/tracers/logger/access_list_tracer.go @@ -14,7 +14,7 @@ // You should have received a copy of the GNU Lesser General Public License // along with the go-ethereum library. If not, see . -package vm +package logger import ( "math/big" @@ -22,6 +22,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/core/vm" ) // accessList is an accumulator for the set of accounts and storage slots an EVM @@ -137,36 +138,38 @@ func NewAccessListTracer(acl types.AccessList, from, to common.Address, precompi } } -func (a *AccessListTracer) CaptureStart(env *EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) { +func (a *AccessListTracer) CaptureStart(env *vm.EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) { } // CaptureState captures all opcodes that touch storage or addresses and adds them to the accesslist. -func (a *AccessListTracer) CaptureState(env *EVM, pc uint64, op OpCode, gas, cost uint64, scope *ScopeContext, rData []byte, depth int, err error) { +func (a *AccessListTracer) CaptureState(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, rData []byte, depth int, err error) { stack := scope.Stack - if (op == SLOAD || op == SSTORE) && stack.len() >= 1 { - slot := common.Hash(stack.data[stack.len()-1].Bytes32()) + stackData := stack.Data() + stackLen := len(stackData) + if (op == vm.SLOAD || op == vm.SSTORE) && stackLen >= 1 { + slot := common.Hash(stackData[stackLen-1].Bytes32()) a.list.addSlot(scope.Contract.Address(), slot) } - if (op == EXTCODECOPY || op == EXTCODEHASH || op == EXTCODESIZE || op == BALANCE || op == SELFDESTRUCT) && stack.len() >= 1 { - addr := common.Address(stack.data[stack.len()-1].Bytes20()) + if (op == vm.EXTCODECOPY || op == vm.EXTCODEHASH || op == vm.EXTCODESIZE || op == vm.BALANCE || op == vm.SELFDESTRUCT) && stackLen >= 1 { + addr := common.Address(stackData[stackLen-1].Bytes20()) if _, ok := a.excl[addr]; !ok { a.list.addAddress(addr) } } - if (op == DELEGATECALL || op == CALL || op == STATICCALL || op == CALLCODE) && stack.len() >= 5 { - addr := common.Address(stack.data[stack.len()-2].Bytes20()) + if (op == vm.DELEGATECALL || op == vm.CALL || op == vm.STATICCALL || op == vm.CALLCODE) && stackLen >= 5 { + addr := common.Address(stackData[stackLen-2].Bytes20()) if _, ok := a.excl[addr]; !ok { a.list.addAddress(addr) } } } -func (*AccessListTracer) CaptureFault(env *EVM, pc uint64, op OpCode, gas, cost uint64, scope *ScopeContext, depth int, err error) { +func (*AccessListTracer) CaptureFault(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, depth int, err error) { } func (*AccessListTracer) CaptureEnd(output []byte, gasUsed uint64, t time.Duration, err error) {} -func (*AccessListTracer) CaptureEnter(typ OpCode, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) { +func (*AccessListTracer) CaptureEnter(typ vm.OpCode, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) { } func (*AccessListTracer) CaptureExit(output []byte, gasUsed uint64, err error) {} diff --git a/core/vm/gen_structlog.go b/eth/tracers/logger/gen_structlog.go similarity index 94% rename from core/vm/gen_structlog.go rename to eth/tracers/logger/gen_structlog.go index 365f3b7914..9e71b555cb 100644 --- a/core/vm/gen_structlog.go +++ b/eth/tracers/logger/gen_structlog.go @@ -1,6 +1,6 @@ // Code generated by github.com/fjl/gencodec. DO NOT EDIT. -package vm +package logger import ( "encoding/json" @@ -8,6 +8,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/common/math" + "github.com/ethereum/go-ethereum/core/vm" "github.com/holiman/uint256" ) @@ -17,7 +18,7 @@ var _ = (*structLogMarshaling)(nil) func (s StructLog) MarshalJSON() ([]byte, error) { type StructLog struct { Pc uint64 `json:"pc"` - Op OpCode `json:"op"` + Op vm.OpCode `json:"op"` Gas math.HexOrDecimal64 `json:"gas"` GasCost math.HexOrDecimal64 `json:"gasCost"` Memory hexutil.Bytes `json:"memory"` @@ -53,7 +54,7 @@ func (s StructLog) MarshalJSON() ([]byte, error) { func (s *StructLog) UnmarshalJSON(input []byte) error { type StructLog struct { Pc *uint64 `json:"pc"` - Op *OpCode `json:"op"` + Op *vm.OpCode `json:"op"` Gas *math.HexOrDecimal64 `json:"gas"` GasCost *math.HexOrDecimal64 `json:"gasCost"` Memory *hexutil.Bytes `json:"memory"` diff --git a/eth/tracers/logger/logger.go b/eth/tracers/logger/logger.go new file mode 100644 index 0000000000..8461935822 --- /dev/null +++ b/eth/tracers/logger/logger.go @@ -0,0 +1,349 @@ +// Copyright 2015 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package logger + +import ( + "encoding/hex" + "fmt" + "io" + "math/big" + "strings" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/common/math" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/core/vm" + "github.com/ethereum/go-ethereum/params" + "github.com/holiman/uint256" +) + +// Storage represents a contract's storage. +type Storage map[common.Hash]common.Hash + +// Copy duplicates the current storage. +func (s Storage) Copy() Storage { + cpy := make(Storage) + for key, value := range s { + cpy[key] = value + } + return cpy +} + +// Config are the configuration options for structured logger the EVM +type Config struct { + EnableMemory bool // enable memory capture + DisableStack bool // disable stack capture + DisableStorage bool // disable storage capture + EnableReturnData bool // enable return data capture + Debug bool // print output during capture end + Limit int // maximum length of output, but zero means unlimited + // Chain overrides, can be used to execute a trace using future fork rules + Overrides *params.ChainConfig `json:"overrides,omitempty"` +} + +//go:generate gencodec -type StructLog -field-override structLogMarshaling -out gen_structlog.go + +// StructLog is emitted to the EVM each cycle and lists information about the current internal state +// prior to the execution of the statement. +type StructLog struct { + Pc uint64 `json:"pc"` + Op vm.OpCode `json:"op"` + Gas uint64 `json:"gas"` + GasCost uint64 `json:"gasCost"` + Memory []byte `json:"memory"` + MemorySize int `json:"memSize"` + Stack []uint256.Int `json:"stack"` + ReturnData []byte `json:"returnData"` + Storage map[common.Hash]common.Hash `json:"-"` + Depth int `json:"depth"` + RefundCounter uint64 `json:"refund"` + Err error `json:"-"` +} + +// overrides for gencodec +type structLogMarshaling struct { + Gas math.HexOrDecimal64 + GasCost math.HexOrDecimal64 + Memory hexutil.Bytes + ReturnData hexutil.Bytes + OpName string `json:"opName"` // adds call to OpName() in MarshalJSON + ErrorString string `json:"error"` // adds call to ErrorString() in MarshalJSON +} + +// OpName formats the operand name in a human-readable format. +func (s *StructLog) OpName() string { + return s.Op.String() +} + +// ErrorString formats the log's error as a string. +func (s *StructLog) ErrorString() string { + if s.Err != nil { + return s.Err.Error() + } + return "" +} + +// StructLogger is an EVM state logger and implements EVMLogger. +// +// StructLogger can capture state based on the given Log configuration and also keeps +// a track record of modified storage which is used in reporting snapshots of the +// contract their storage. +type StructLogger struct { + cfg Config + env *vm.EVM + + storage map[common.Address]Storage + logs []StructLog + output []byte + err error +} + +// NewStructLogger returns a new logger +func NewStructLogger(cfg *Config) *StructLogger { + logger := &StructLogger{ + storage: make(map[common.Address]Storage), + } + if cfg != nil { + logger.cfg = *cfg + } + return logger +} + +// Reset clears the data held by the logger. +func (l *StructLogger) Reset() { + l.storage = make(map[common.Address]Storage) + l.output = make([]byte, 0) + l.logs = l.logs[:0] + l.err = nil +} + +// CaptureStart implements the EVMLogger interface to initialize the tracing operation. +func (l *StructLogger) CaptureStart(env *vm.EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) { + l.env = env +} + +// CaptureState logs a new structured log message and pushes it out to the environment +// +// CaptureState also tracks SLOAD/SSTORE ops to track storage change. +func (l *StructLogger) CaptureState(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, rData []byte, depth int, err error) { + memory := scope.Memory + stack := scope.Stack + contract := scope.Contract + // check if already accumulated the specified number of logs + if l.cfg.Limit != 0 && l.cfg.Limit <= len(l.logs) { + return + } + // Copy a snapshot of the current memory state to a new buffer + var mem []byte + if l.cfg.EnableMemory { + mem = make([]byte, len(memory.Data())) + copy(mem, memory.Data()) + } + // Copy a snapshot of the current stack state to a new buffer + var stck []uint256.Int + if !l.cfg.DisableStack { + stck = make([]uint256.Int, len(stack.Data())) + for i, item := range stack.Data() { + stck[i] = item + } + } + stackData := stack.Data() + stackLen := len(stackData) + // Copy a snapshot of the current storage to a new container + var storage Storage + if !l.cfg.DisableStorage && (op == vm.SLOAD || op == vm.SSTORE) { + // initialise new changed values storage container for this contract + // if not present. + if l.storage[contract.Address()] == nil { + l.storage[contract.Address()] = make(Storage) + } + // capture SLOAD opcodes and record the read entry in the local storage + if op == vm.SLOAD && stackLen >= 1 { + var ( + address = common.Hash(stackData[stackLen-1].Bytes32()) + value = l.env.StateDB.GetState(contract.Address(), address) + ) + l.storage[contract.Address()][address] = value + storage = l.storage[contract.Address()].Copy() + } else if op == vm.SSTORE && stackLen >= 2 { + // capture SSTORE opcodes and record the written entry in the local storage. + var ( + value = common.Hash(stackData[stackLen-2].Bytes32()) + address = common.Hash(stackData[stackLen-1].Bytes32()) + ) + l.storage[contract.Address()][address] = value + storage = l.storage[contract.Address()].Copy() + } + } + var rdata []byte + if l.cfg.EnableReturnData { + rdata = make([]byte, len(rData)) + copy(rdata, rData) + } + // create a new snapshot of the EVM. + log := StructLog{pc, op, gas, cost, mem, memory.Len(), stck, rdata, storage, depth, l.env.StateDB.GetRefund(), err} + l.logs = append(l.logs, log) +} + +// CaptureFault implements the EVMLogger interface to trace an execution fault +// while running an opcode. +func (l *StructLogger) CaptureFault(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, depth int, err error) { +} + +// CaptureEnd is called after the call finishes to finalize the tracing. +func (l *StructLogger) CaptureEnd(output []byte, gasUsed uint64, t time.Duration, err error) { + l.output = output + l.err = err + if l.cfg.Debug { + fmt.Printf("0x%x\n", output) + if err != nil { + fmt.Printf(" error: %v\n", err) + } + } +} + +func (l *StructLogger) CaptureEnter(typ vm.OpCode, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) { +} + +func (l *StructLogger) CaptureExit(output []byte, gasUsed uint64, err error) {} + +// StructLogs returns the captured log entries. +func (l *StructLogger) StructLogs() []StructLog { return l.logs } + +// Error returns the VM error captured by the trace. +func (l *StructLogger) Error() error { return l.err } + +// Output returns the VM return value captured by the trace. +func (l *StructLogger) Output() []byte { return l.output } + +// WriteTrace writes a formatted trace to the given writer +func WriteTrace(writer io.Writer, logs []StructLog) { + for _, log := range logs { + fmt.Fprintf(writer, "%-16spc=%08d gas=%v cost=%v", log.Op, log.Pc, log.Gas, log.GasCost) + if log.Err != nil { + fmt.Fprintf(writer, " ERROR: %v", log.Err) + } + fmt.Fprintln(writer) + + if len(log.Stack) > 0 { + fmt.Fprintln(writer, "Stack:") + for i := len(log.Stack) - 1; i >= 0; i-- { + fmt.Fprintf(writer, "%08d %s\n", len(log.Stack)-i-1, log.Stack[i].Hex()) + } + } + if len(log.Memory) > 0 { + fmt.Fprintln(writer, "Memory:") + fmt.Fprint(writer, hex.Dump(log.Memory)) + } + if len(log.Storage) > 0 { + fmt.Fprintln(writer, "Storage:") + for h, item := range log.Storage { + fmt.Fprintf(writer, "%x: %x\n", h, item) + } + } + if len(log.ReturnData) > 0 { + fmt.Fprintln(writer, "ReturnData:") + fmt.Fprint(writer, hex.Dump(log.ReturnData)) + } + fmt.Fprintln(writer) + } +} + +// WriteLogs writes vm logs in a readable format to the given writer +func WriteLogs(writer io.Writer, logs []*types.Log) { + for _, log := range logs { + fmt.Fprintf(writer, "LOG%d: %x bn=%d txi=%x\n", len(log.Topics), log.Address, log.BlockNumber, log.TxIndex) + + for i, topic := range log.Topics { + fmt.Fprintf(writer, "%08d %x\n", i, topic) + } + + fmt.Fprint(writer, hex.Dump(log.Data)) + fmt.Fprintln(writer) + } +} + +type mdLogger struct { + out io.Writer + cfg *Config + env *vm.EVM +} + +// NewMarkdownLogger creates a logger which outputs information in a format adapted +// for human readability, and is also a valid markdown table +func NewMarkdownLogger(cfg *Config, writer io.Writer) *mdLogger { + l := &mdLogger{out: writer, cfg: cfg} + if l.cfg == nil { + l.cfg = &Config{} + } + return l +} + +func (t *mdLogger) CaptureStart(env *vm.EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) { + t.env = env + if !create { + fmt.Fprintf(t.out, "From: `%v`\nTo: `%v`\nData: `0x%x`\nGas: `%d`\nValue `%v` wei\n", + from.String(), to.String(), + input, gas, value) + } else { + fmt.Fprintf(t.out, "From: `%v`\nCreate at: `%v`\nData: `0x%x`\nGas: `%d`\nValue `%v` wei\n", + from.String(), to.String(), + input, gas, value) + } + + fmt.Fprintf(t.out, ` +| Pc | Op | Cost | Stack | RStack | Refund | +|-------|-------------|------|-----------|-----------|---------| +`) +} + +// CaptureState also tracks SLOAD/SSTORE ops to track storage change. +func (t *mdLogger) CaptureState(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, rData []byte, depth int, err error) { + stack := scope.Stack + fmt.Fprintf(t.out, "| %4d | %10v | %3d |", pc, op, cost) + + if !t.cfg.DisableStack { + // format stack + var a []string + for _, elem := range stack.Data() { + a = append(a, elem.Hex()) + } + b := fmt.Sprintf("[%v]", strings.Join(a, ",")) + fmt.Fprintf(t.out, "%10v |", b) + } + fmt.Fprintf(t.out, "%10v |", t.env.StateDB.GetRefund()) + fmt.Fprintln(t.out, "") + if err != nil { + fmt.Fprintf(t.out, "Error: %v\n", err) + } +} + +func (t *mdLogger) CaptureFault(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, depth int, err error) { + fmt.Fprintf(t.out, "\nError: at pc=%d, op=%v: %v\n", pc, op, err) +} + +func (t *mdLogger) CaptureEnd(output []byte, gasUsed uint64, tm time.Duration, err error) { + fmt.Fprintf(t.out, "\nOutput: `0x%x`\nConsumed gas: `%d`\nError: `%v`\n", + output, gasUsed, err) +} + +func (t *mdLogger) CaptureEnter(typ vm.OpCode, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) { +} + +func (t *mdLogger) CaptureExit(output []byte, gasUsed uint64, err error) {} diff --git a/core/vm/logger_json.go b/eth/tracers/logger/logger_json.go similarity index 69% rename from core/vm/logger_json.go rename to eth/tracers/logger/logger_json.go index 479a00c0ac..4a7abacba2 100644 --- a/core/vm/logger_json.go +++ b/eth/tracers/logger/logger_json.go @@ -14,7 +14,7 @@ // You should have received a copy of the GNU Lesser General Public License // along with the go-ethereum library. If not, see . -package vm +package logger import ( "encoding/json" @@ -24,30 +24,36 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/math" + "github.com/ethereum/go-ethereum/core/vm" ) type JSONLogger struct { encoder *json.Encoder - cfg *LogConfig + cfg *Config + env *vm.EVM } // NewJSONLogger creates a new EVM tracer that prints execution steps as JSON objects // into the provided stream. -func NewJSONLogger(cfg *LogConfig, writer io.Writer) *JSONLogger { - l := &JSONLogger{json.NewEncoder(writer), cfg} +func NewJSONLogger(cfg *Config, writer io.Writer) *JSONLogger { + l := &JSONLogger{encoder: json.NewEncoder(writer), cfg: cfg} if l.cfg == nil { - l.cfg = &LogConfig{} + l.cfg = &Config{} } return l } -func (l *JSONLogger) CaptureStart(env *EVM, from, to common.Address, create bool, input []byte, gas uint64, value *big.Int) { +func (l *JSONLogger) CaptureStart(env *vm.EVM, from, to common.Address, create bool, input []byte, gas uint64, value *big.Int) { + l.env = env } -func (l *JSONLogger) CaptureFault(*EVM, uint64, OpCode, uint64, uint64, *ScopeContext, int, error) {} +func (l *JSONLogger) CaptureFault(pc uint64, op vm.OpCode, gas uint64, cost uint64, scope *vm.ScopeContext, depth int, err error) { + // TODO: Add rData to this interface as well + l.CaptureState(pc, op, gas, cost, scope, nil, depth, err) +} // CaptureState outputs state information on the logger. -func (l *JSONLogger) CaptureState(env *EVM, pc uint64, op OpCode, gas, cost uint64, scope *ScopeContext, rData []byte, depth int, err error) { +func (l *JSONLogger) CaptureState(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, rData []byte, depth int, err error) { memory := scope.Memory stack := scope.Stack @@ -58,14 +64,14 @@ func (l *JSONLogger) CaptureState(env *EVM, pc uint64, op OpCode, gas, cost uint GasCost: cost, MemorySize: memory.Len(), Depth: depth, - RefundCounter: env.StateDB.GetRefund(), + RefundCounter: l.env.StateDB.GetRefund(), Err: err, } if l.cfg.EnableMemory { log.Memory = memory.Data() } if !l.cfg.DisableStack { - log.Stack = stack.data + log.Stack = stack.Data() } if l.cfg.EnableReturnData { log.ReturnData = rData @@ -88,7 +94,7 @@ func (l *JSONLogger) CaptureEnd(output []byte, gasUsed uint64, t time.Duration, l.encoder.Encode(endLog{common.Bytes2Hex(output), math.HexOrDecimal64(gasUsed), t, errMsg}) } -func (l *JSONLogger) CaptureEnter(typ OpCode, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) { +func (l *JSONLogger) CaptureEnter(typ vm.OpCode, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) { } func (l *JSONLogger) CaptureExit(output []byte, gasUsed uint64, err error) {} diff --git a/core/vm/logger_test.go b/eth/tracers/logger/logger_test.go similarity index 72% rename from core/vm/logger_test.go rename to eth/tracers/logger/logger_test.go index 730d8374bb..205ee31120 100644 --- a/core/vm/logger_test.go +++ b/eth/tracers/logger/logger_test.go @@ -14,7 +14,7 @@ // You should have received a copy of the GNU Lesser General Public License // along with the go-ethereum library. If not, see . -package vm +package logger import ( "math/big" @@ -22,8 +22,8 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/state" + "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/params" - "github.com/holiman/uint256" ) type dummyContractRef struct { @@ -46,23 +46,23 @@ type dummyStatedb struct { state.StateDB } -func (*dummyStatedb) GetRefund() uint64 { return 1337 } +func (*dummyStatedb) GetRefund() uint64 { return 1337 } +func (*dummyStatedb) GetState(_ common.Address, _ common.Hash) common.Hash { return common.Hash{} } +func (*dummyStatedb) SetState(_ common.Address, _ common.Hash, _ common.Hash) {} func TestStoreCapture(t *testing.T) { var ( - env = NewEVM(BlockContext{}, TxContext{}, &dummyStatedb{}, params.TestChainConfig, Config{}) logger = NewStructLogger(nil) - contract = NewContract(&dummyContractRef{}, &dummyContractRef{}, new(big.Int), 0) - scope = &ScopeContext{ - Memory: NewMemory(), - Stack: newstack(), - Contract: contract, - } + env = vm.NewEVM(vm.BlockContext{}, vm.TxContext{}, &dummyStatedb{}, params.TestChainConfig, vm.Config{Debug: true, Tracer: logger}) + contract = vm.NewContract(&dummyContractRef{}, &dummyContractRef{}, new(big.Int), 100000) ) - scope.Stack.push(uint256.NewInt(1)) - scope.Stack.push(new(uint256.Int)) + contract.Code = []byte{byte(vm.PUSH1), 0x1, byte(vm.PUSH1), 0x0, byte(vm.SSTORE)} var index common.Hash - logger.CaptureState(env, 0, SSTORE, 0, 0, scope, nil, 0, nil) + logger.CaptureStart(env, common.Address{}, contract.Address(), false, nil, 0, nil) + _, err := env.Interpreter().Run(contract, []byte{}, false) + if err != nil { + t.Fatal(err) + } if len(logger.storage[contract.Address()]) == 0 { t.Fatalf("expected exactly 1 changed value on address %x, got %d", contract.Address(), len(logger.storage[contract.Address()])) diff --git a/eth/tracers/native/4byte.go b/eth/tracers/native/4byte.go new file mode 100644 index 0000000000..e60e82de47 --- /dev/null +++ b/eth/tracers/native/4byte.go @@ -0,0 +1,148 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package native + +import ( + "encoding/json" + "math/big" + "strconv" + "sync/atomic" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/vm" + "github.com/ethereum/go-ethereum/eth/tracers" +) + +func init() { + register("4byteTracer", newFourByteTracer) +} + +// fourByteTracer searches for 4byte-identifiers, and collects them for post-processing. +// It collects the methods identifiers along with the size of the supplied data, so +// a reversed signature can be matched against the size of the data. +// +// Example: +// > debug.traceTransaction( "0x214e597e35da083692f5386141e69f47e973b2c56e7a8073b1ea08fd7571e9de", {tracer: "4byteTracer"}) +// { +// 0x27dc297e-128: 1, +// 0x38cc4831-0: 2, +// 0x524f3889-96: 1, +// 0xadf59f99-288: 1, +// 0xc281d19e-0: 1 +// } +type fourByteTracer struct { + env *vm.EVM + ids map[string]int // ids aggregates the 4byte ids found + interrupt uint32 // Atomic flag to signal execution interruption + reason error // Textual reason for the interruption + activePrecompiles []common.Address // Updated on CaptureStart based on given rules +} + +// newFourByteTracer returns a native go tracer which collects +// 4 byte-identifiers of a tx, and implements vm.EVMLogger. +func newFourByteTracer() tracers.Tracer { + t := &fourByteTracer{ + ids: make(map[string]int), + } + return t +} + +// isPrecompiled returns whether the addr is a precompile. Logic borrowed from newJsTracer in eth/tracers/js/tracer.go +func (t *fourByteTracer) isPrecompiled(addr common.Address) bool { + for _, p := range t.activePrecompiles { + if p == addr { + return true + } + } + return false +} + +// store saves the given identifier and datasize. +func (t *fourByteTracer) store(id []byte, size int) { + key := bytesToHex(id) + "-" + strconv.Itoa(size) + t.ids[key] += 1 +} + +// CaptureStart implements the EVMLogger interface to initialize the tracing operation. +func (t *fourByteTracer) CaptureStart(env *vm.EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) { + t.env = env + + // Update list of precompiles based on current block + rules := env.ChainConfig().Rules(env.Context.BlockNumber) + t.activePrecompiles = vm.ActivePrecompiles(rules) + + // Save the outer calldata also + if len(input) >= 4 { + t.store(input[0:4], len(input)-4) + } +} + +// CaptureState implements the EVMLogger interface to trace a single step of VM execution. +func (t *fourByteTracer) CaptureState(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, rData []byte, depth int, err error) { +} + +// CaptureEnter is called when EVM enters a new scope (via call, create or selfdestruct). +func (t *fourByteTracer) CaptureEnter(op vm.OpCode, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) { + // Skip if tracing was interrupted + if atomic.LoadUint32(&t.interrupt) > 0 { + t.env.Cancel() + return + } + if len(input) < 4 { + return + } + // primarily we want to avoid CREATE/CREATE2/SELFDESTRUCT + if op != vm.DELEGATECALL && op != vm.STATICCALL && + op != vm.CALL && op != vm.CALLCODE { + return + } + // Skip any pre-compile invocations, those are just fancy opcodes + if t.isPrecompiled(to) { + return + } + t.store(input[0:4], len(input)-4) +} + +// CaptureExit is called when EVM exits a scope, even if the scope didn't +// execute any code. +func (t *fourByteTracer) CaptureExit(output []byte, gasUsed uint64, err error) { +} + +// CaptureFault implements the EVMLogger interface to trace an execution fault. +func (t *fourByteTracer) CaptureFault(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, depth int, err error) { +} + +// CaptureEnd is called after the call finishes to finalize the tracing. +func (t *fourByteTracer) CaptureEnd(output []byte, gasUsed uint64, _ time.Duration, err error) { +} + +// GetResult returns the json-encoded nested list of call traces, and any +// error arising from the encoding or forceful termination (via `Stop`). +func (t *fourByteTracer) GetResult() (json.RawMessage, error) { + res, err := json.Marshal(t.ids) + if err != nil { + return nil, err + } + return res, t.reason +} + +// Stop terminates execution of the tracer at the first opportune moment. +func (t *fourByteTracer) Stop(err error) { + t.reason = err + atomic.StoreUint32(&t.interrupt, 1) +} diff --git a/eth/tracers/native/call.go b/eth/tracers/native/call.go new file mode 100644 index 0000000000..16ea75aa4a --- /dev/null +++ b/eth/tracers/native/call.go @@ -0,0 +1,182 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package native + +import ( + "encoding/json" + "errors" + "math/big" + "strconv" + "strings" + "sync/atomic" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/vm" + "github.com/ethereum/go-ethereum/eth/tracers" +) + +func init() { + register("callTracer", newCallTracer) +} + +type callFrame struct { + Type string `json:"type"` + From string `json:"from"` + To string `json:"to,omitempty"` + Value string `json:"value,omitempty"` + Gas string `json:"gas"` + GasUsed string `json:"gasUsed"` + Input string `json:"input"` + Output string `json:"output,omitempty"` + Error string `json:"error,omitempty"` + Calls []callFrame `json:"calls,omitempty"` +} + +type callTracer struct { + env *vm.EVM + callstack []callFrame + interrupt uint32 // Atomic flag to signal execution interruption + reason error // Textual reason for the interruption +} + +// newCallTracer returns a native go tracer which tracks +// call frames of a tx, and implements vm.EVMLogger. +func newCallTracer() tracers.Tracer { + // First callframe contains tx context info + // and is populated on start and end. + t := &callTracer{callstack: make([]callFrame, 1)} + return t +} + +// CaptureStart implements the EVMLogger interface to initialize the tracing operation. +func (t *callTracer) CaptureStart(env *vm.EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) { + t.env = env + t.callstack[0] = callFrame{ + Type: "CALL", + From: addrToHex(from), + To: addrToHex(to), + Input: bytesToHex(input), + Gas: uintToHex(gas), + Value: bigToHex(value), + } + if create { + t.callstack[0].Type = "CREATE" + } +} + +// CaptureEnd is called after the call finishes to finalize the tracing. +func (t *callTracer) CaptureEnd(output []byte, gasUsed uint64, _ time.Duration, err error) { + t.callstack[0].GasUsed = uintToHex(gasUsed) + if err != nil { + t.callstack[0].Error = err.Error() + if err.Error() == "execution reverted" && len(output) > 0 { + t.callstack[0].Output = bytesToHex(output) + } + } else { + t.callstack[0].Output = bytesToHex(output) + } +} + +// CaptureState implements the EVMLogger interface to trace a single step of VM execution. +func (t *callTracer) CaptureState(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, rData []byte, depth int, err error) { +} + +// CaptureFault implements the EVMLogger interface to trace an execution fault. +func (t *callTracer) CaptureFault(pc uint64, op vm.OpCode, gas, cost uint64, _ *vm.ScopeContext, depth int, err error) { +} + +// CaptureEnter is called when EVM enters a new scope (via call, create or selfdestruct). +func (t *callTracer) CaptureEnter(typ vm.OpCode, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) { + // Skip if tracing was interrupted + if atomic.LoadUint32(&t.interrupt) > 0 { + t.env.Cancel() + return + } + + call := callFrame{ + Type: typ.String(), + From: addrToHex(from), + To: addrToHex(to), + Input: bytesToHex(input), + Gas: uintToHex(gas), + Value: bigToHex(value), + } + t.callstack = append(t.callstack, call) +} + +// CaptureExit is called when EVM exits a scope, even if the scope didn't +// execute any code. +func (t *callTracer) CaptureExit(output []byte, gasUsed uint64, err error) { + size := len(t.callstack) + if size <= 1 { + return + } + // pop call + call := t.callstack[size-1] + t.callstack = t.callstack[:size-1] + size -= 1 + + call.GasUsed = uintToHex(gasUsed) + if err == nil { + call.Output = bytesToHex(output) + } else { + call.Error = err.Error() + if call.Type == "CREATE" || call.Type == "CREATE2" { + call.To = "" + } + } + t.callstack[size-1].Calls = append(t.callstack[size-1].Calls, call) +} + +// GetResult returns the json-encoded nested list of call traces, and any +// error arising from the encoding or forceful termination (via `Stop`). +func (t *callTracer) GetResult() (json.RawMessage, error) { + if len(t.callstack) != 1 { + return nil, errors.New("incorrect number of top-level calls") + } + res, err := json.Marshal(t.callstack[0]) + if err != nil { + return nil, err + } + return json.RawMessage(res), t.reason +} + +// Stop terminates execution of the tracer at the first opportune moment. +func (t *callTracer) Stop(err error) { + t.reason = err + atomic.StoreUint32(&t.interrupt, 1) +} + +func bytesToHex(s []byte) string { + return "0x" + common.Bytes2Hex(s) +} + +func bigToHex(n *big.Int) string { + if n == nil { + return "" + } + return "0x" + n.Text(16) +} + +func uintToHex(n uint64) string { + return "0x" + strconv.FormatUint(n, 16) +} + +func addrToHex(a common.Address) string { + return strings.ToLower(a.Hex()) +} diff --git a/eth/tracers/native/noop.go b/eth/tracers/native/noop.go new file mode 100644 index 0000000000..ee110ef7df --- /dev/null +++ b/eth/tracers/native/noop.go @@ -0,0 +1,74 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package native + +import ( + "encoding/json" + "math/big" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/vm" + "github.com/ethereum/go-ethereum/eth/tracers" +) + +func init() { + register("noopTracerNative", newNoopTracer) +} + +// noopTracer is a go implementation of the Tracer interface which +// performs no action. It's mostly useful for testing purposes. +type noopTracer struct{} + +// newNoopTracer returns a new noop tracer. +func newNoopTracer() tracers.Tracer { + return &noopTracer{} +} + +// CaptureStart implements the EVMLogger interface to initialize the tracing operation. +func (t *noopTracer) CaptureStart(env *vm.EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) { +} + +// CaptureEnd is called after the call finishes to finalize the tracing. +func (t *noopTracer) CaptureEnd(output []byte, gasUsed uint64, _ time.Duration, err error) { +} + +// CaptureState implements the EVMLogger interface to trace a single step of VM execution. +func (t *noopTracer) CaptureState(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, rData []byte, depth int, err error) { +} + +// CaptureFault implements the EVMLogger interface to trace an execution fault. +func (t *noopTracer) CaptureFault(pc uint64, op vm.OpCode, gas, cost uint64, _ *vm.ScopeContext, depth int, err error) { +} + +// CaptureEnter is called when EVM enters a new scope (via call, create or selfdestruct). +func (t *noopTracer) CaptureEnter(typ vm.OpCode, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) { +} + +// CaptureExit is called when EVM exits a scope, even if the scope didn't +// execute any code. +func (t *noopTracer) CaptureExit(output []byte, gasUsed uint64, err error) { +} + +// GetResult returns an empty json object. +func (t *noopTracer) GetResult() (json.RawMessage, error) { + return json.RawMessage(`{}`), nil +} + +// Stop terminates execution of the tracer at the first opportune moment. +func (t *noopTracer) Stop(err error) { +} diff --git a/eth/tracers/native/tracer.go b/eth/tracers/native/tracer.go new file mode 100644 index 0000000000..3158654f33 --- /dev/null +++ b/eth/tracers/native/tracer.go @@ -0,0 +1,79 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +/* +Package native is a collection of tracers written in go. + +In order to add a native tracer and have it compiled into the binary, a new +file needs to be added to this folder, containing an implementation of the +`eth.tracers.Tracer` interface. + +Aside from implementing the tracer, it also needs to register itself, using the +`register` method -- and this needs to be done in the package initialization. + +Example: + +```golang +func init() { + register("noopTracerNative", newNoopTracer) +} +``` +*/ +package native + +import ( + "errors" + + "github.com/ethereum/go-ethereum/eth/tracers" +) + +// init registers itself this packages as a lookup for tracers. +func init() { + tracers.RegisterLookup(false, lookup) +} + +/* +ctors is a map of package-local tracer constructors. + +We cannot be certain about the order of init-functions within a package, +The go spec (https://golang.org/ref/spec#Package_initialization) says + +> To ensure reproducible initialization behavior, build systems +> are encouraged to present multiple files belonging to the same +> package in lexical file name order to a compiler. + +Hence, we cannot make the map in init, but must make it upon first use. +*/ +var ctors map[string]func() tracers.Tracer + +// register is used by native tracers to register their presence. +func register(name string, ctor func() tracers.Tracer) { + if ctors == nil { + ctors = make(map[string]func() tracers.Tracer) + } + ctors[name] = ctor +} + +// lookup returns a tracer, if one can be matched to the given name. +func lookup(name string, ctx *tracers.Context) (tracers.Tracer, error) { + if ctors == nil { + ctors = make(map[string]func() tracers.Tracer) + } + if ctor, ok := ctors[name]; ok { + return ctor(), nil + } + return nil, errors.New("no tracer found") +} diff --git a/eth/tracers/tracers.go b/eth/tracers/tracers.go index 4e1ef23ad2..e7073e7d2e 100644 --- a/eth/tracers/tracers.go +++ b/eth/tracers/tracers.go @@ -14,40 +14,59 @@ // You should have received a copy of the GNU Lesser General Public License // along with the go-ethereum library. If not, see . -// Package tracers is a collection of JavaScript transaction tracers. +// Package tracers is a manager for transaction tracing engines. package tracers import ( - "strings" - "unicode" + "encoding/json" + "errors" - "github.com/ethereum/go-ethereum/eth/tracers/internal/tracers" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/vm" ) -// all contains all the built in JavaScript tracers by name. -var all = make(map[string]string) - -// camel converts a snake cased input string into a camel cased output. -func camel(str string) string { - pieces := strings.Split(str, "_") - for i := 1; i < len(pieces); i++ { - pieces[i] = string(unicode.ToUpper(rune(pieces[i][0]))) + pieces[i][1:] - } - return strings.Join(pieces, "") +// Context contains some contextual infos for a transaction execution that is not +// available from within the EVM object. +type Context struct { + BlockHash common.Hash // Hash of the block the tx is contained within (zero if dangling tx or call) + TxIndex int // Index of the transaction within a block (zero if dangling tx or call) + TxHash common.Hash // Hash of the transaction being traced (zero if dangling call) } -// init retrieves the JavaScript transaction tracers included in go-ethereum. -func init() { - for _, file := range tracers.AssetNames() { - name := camel(strings.TrimSuffix(file, ".js")) - all[name] = string(tracers.MustAsset(file)) +// Tracer interface extends vm.EVMLogger and additionally +// allows collecting the tracing result. +type Tracer interface { + vm.EVMLogger + GetResult() (json.RawMessage, error) + // Stop terminates execution of the tracer at the first opportune moment. + Stop(err error) +} + +type lookupFunc func(string, *Context) (Tracer, error) + +var ( + lookups []lookupFunc +) + +// RegisterLookup registers a method as a lookup for tracers, meaning that +// users can invoke a named tracer through that lookup. If 'wildcard' is true, +// then the lookup will be placed last. This is typically meant for interpreted +// engines (js) which can evaluate dynamic user-supplied code. +func RegisterLookup(wildcard bool, lookup lookupFunc) { + if wildcard { + lookups = append(lookups, lookup) + } else { + lookups = append([]lookupFunc{lookup}, lookups...) } } -// tracer retrieves a specific JavaScript tracer by name. -func tracer(name string) (string, bool) { - if tracer, ok := all[name]; ok { - return tracer, true +// New returns a new instance of a tracer, by iterating through the +// registered lookups. +func New(code string, ctx *Context) (Tracer, error) { + for _, lookup := range lookups { + if tracer, err := lookup(code, ctx); err == nil { + return tracer, nil + } } - return "", false + return nil, errors.New("tracer not found") } diff --git a/eth/tracers/tracers_test.go b/eth/tracers/tracers_test.go index fb817fbc56..ce9289dd75 100644 --- a/eth/tracers/tracers_test.go +++ b/eth/tracers/tracers_test.go @@ -17,79 +17,21 @@ package tracers import ( - "crypto/ecdsa" - "crypto/rand" - "encoding/json" - "io/ioutil" "math/big" - "path/filepath" - "reflect" - "strings" "testing" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" - "github.com/ethereum/go-ethereum/common/math" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/eth/tracers/logger" "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/rlp" "github.com/ethereum/go-ethereum/tests" ) -// To generate a new callTracer test, copy paste the makeTest method below into -// a Geth console and call it with a transaction hash you which to export. - -/* -// makeTest generates a callTracer test by running a prestate reassembled and a -// call trace run, assembling all the gathered information into a test case. -var makeTest = function(tx, rewind) { - // Generate the genesis block from the block, transaction and prestate data - var block = eth.getBlock(eth.getTransaction(tx).blockHash); - var genesis = eth.getBlock(block.parentHash); - - delete genesis.gasUsed; - delete genesis.logsBloom; - delete genesis.parentHash; - delete genesis.receiptsRoot; - delete genesis.sha3Uncles; - delete genesis.size; - delete genesis.transactions; - delete genesis.transactionsRoot; - delete genesis.uncles; - - genesis.gasLimit = genesis.gasLimit.toString(); - genesis.number = genesis.number.toString(); - genesis.timestamp = genesis.timestamp.toString(); - - genesis.alloc = debug.traceTransaction(tx, {tracer: "prestateTracer", rewind: rewind}); - for (var key in genesis.alloc) { - genesis.alloc[key].nonce = genesis.alloc[key].nonce.toString(); - } - genesis.config = admin.nodeInfo.protocols.eth.config; - - // Generate the call trace and produce the test input - var result = debug.traceTransaction(tx, {tracer: "callTracer", rewind: rewind}); - delete result.time; - - console.log(JSON.stringify({ - genesis: genesis, - context: { - number: block.number.toString(), - difficulty: block.difficulty, - timestamp: block.timestamp.toString(), - gasLimit: block.gasLimit.toString(), - miner: block.miner, - }, - input: eth.getRawTransaction(tx), - result: result, - }, null, 2)); -} -*/ - // callTrace is the result of a callTracer run. type callTrace struct { Type string `json:"type"` @@ -104,211 +46,6 @@ type callTrace struct { Calls []callTrace `json:"calls,omitempty"` } -type callContext struct { - Number math.HexOrDecimal64 `json:"number"` - Difficulty *math.HexOrDecimal256 `json:"difficulty"` - Time math.HexOrDecimal64 `json:"timestamp"` - GasLimit math.HexOrDecimal64 `json:"gasLimit"` - Miner common.Address `json:"miner"` -} - -// callTracerTest defines a single test to check the call tracer against. -type callTracerTest struct { - Genesis *core.Genesis `json:"genesis"` - Context *callContext `json:"context"` - Input string `json:"input"` - Result *callTrace `json:"result"` -} - -func TestPrestateTracerCreate2(t *testing.T) { - unsignedTx := types.NewTransaction(1, common.HexToAddress("0x00000000000000000000000000000000deadbeef"), - new(big.Int), 5000000, big.NewInt(1), []byte{}) - - privateKeyECDSA, err := ecdsa.GenerateKey(crypto.S256(), rand.Reader) - if err != nil { - t.Fatalf("err %v", err) - } - signer := types.NewEIP155Signer(big.NewInt(1)) - tx, err := types.SignTx(unsignedTx, signer, privateKeyECDSA) - if err != nil { - t.Fatalf("err %v", err) - } - /** - This comes from one of the test-vectors on the Skinny Create2 - EIP - - address 0x00000000000000000000000000000000deadbeef - salt 0x00000000000000000000000000000000000000000000000000000000cafebabe - init_code 0xdeadbeef - gas (assuming no mem expansion): 32006 - result: 0x60f3f640a8508fC6a86d45DF051962668E1e8AC7 - */ - origin, _ := signer.Sender(tx) - txContext := vm.TxContext{ - Origin: origin, - GasPrice: big.NewInt(1), - } - context := vm.BlockContext{ - CanTransfer: core.CanTransfer, - Transfer: core.Transfer, - Coinbase: common.Address{}, - BlockNumber: new(big.Int).SetUint64(8000000), - Time: new(big.Int).SetUint64(5), - Difficulty: big.NewInt(0x30000), - GasLimit: uint64(6000000), - } - alloc := core.GenesisAlloc{} - - // The code pushes 'deadbeef' into memory, then the other params, and calls CREATE2, then returns - // the address - alloc[common.HexToAddress("0x00000000000000000000000000000000deadbeef")] = core.GenesisAccount{ - Nonce: 1, - Code: hexutil.MustDecode("0x63deadbeef60005263cafebabe6004601c6000F560005260206000F3"), - Balance: big.NewInt(1), - } - alloc[origin] = core.GenesisAccount{ - Nonce: 1, - Code: []byte{}, - Balance: big.NewInt(500000000000000), - } - _, statedb := tests.MakePreState(rawdb.NewMemoryDatabase(), alloc, false) - - // Create the tracer, the EVM environment and run it - tracer, err := New("prestateTracer", new(Context)) - if err != nil { - t.Fatalf("failed to create call tracer: %v", err) - } - evm := vm.NewEVM(context, txContext, statedb, params.MainnetChainConfig, vm.Config{Debug: true, Tracer: tracer}) - - msg, err := tx.AsMessage(signer, nil) - if err != nil { - t.Fatalf("failed to prepare transaction for tracing: %v", err) - } - st := core.NewStateTransition(evm, msg, new(core.GasPool).AddGas(tx.Gas())) - if _, err = st.TransitionDb(); err != nil { - t.Fatalf("failed to execute transaction: %v", err) - } - // Retrieve the trace result and compare against the etalon - res, err := tracer.GetResult() - if err != nil { - t.Fatalf("failed to retrieve trace result: %v", err) - } - ret := make(map[string]interface{}) - if err := json.Unmarshal(res, &ret); err != nil { - t.Fatalf("failed to unmarshal trace result: %v", err) - } - if _, has := ret["0x60f3f640a8508fc6a86d45df051962668e1e8ac7"]; !has { - t.Fatalf("Expected 0x60f3f640a8508fc6a86d45df051962668e1e8ac7 in result") - } -} - -// Iterates over all the input-output datasets in the tracer test harness and -// runs the JavaScript tracers against them. -func TestCallTracerLegacy(t *testing.T) { - testCallTracer("callTracerLegacy", "call_tracer_legacy", t) -} - -func testCallTracer(tracer string, dirPath string, t *testing.T) { - files, err := ioutil.ReadDir(filepath.Join("testdata", dirPath)) - if err != nil { - t.Fatalf("failed to retrieve tracer test suite: %v", err) - } - for _, file := range files { - if !strings.HasSuffix(file.Name(), ".json") { - continue - } - file := file // capture range variable - t.Run(camel(strings.TrimSuffix(file.Name(), ".json")), func(t *testing.T) { - t.Parallel() - - // Call tracer test found, read if from disk - blob, err := ioutil.ReadFile(filepath.Join("testdata", dirPath, file.Name())) - if err != nil { - t.Fatalf("failed to read testcase: %v", err) - } - test := new(callTracerTest) - if err := json.Unmarshal(blob, test); err != nil { - t.Fatalf("failed to parse testcase: %v", err) - } - // Configure a blockchain with the given prestate - tx := new(types.Transaction) - if err := rlp.DecodeBytes(common.FromHex(test.Input), tx); err != nil { - t.Fatalf("failed to parse testcase input: %v", err) - } - signer := types.MakeSigner(test.Genesis.Config, new(big.Int).SetUint64(uint64(test.Context.Number))) - origin, _ := signer.Sender(tx) - txContext := vm.TxContext{ - Origin: origin, - GasPrice: tx.GasPrice(), - } - context := vm.BlockContext{ - CanTransfer: core.CanTransfer, - Transfer: core.Transfer, - Coinbase: test.Context.Miner, - BlockNumber: new(big.Int).SetUint64(uint64(test.Context.Number)), - Time: new(big.Int).SetUint64(uint64(test.Context.Time)), - Difficulty: (*big.Int)(test.Context.Difficulty), - GasLimit: uint64(test.Context.GasLimit), - } - _, statedb := tests.MakePreState(rawdb.NewMemoryDatabase(), test.Genesis.Alloc, false) - - // Create the tracer, the EVM environment and run it - tracer, err := New(tracer, new(Context)) - if err != nil { - t.Fatalf("failed to create call tracer: %v", err) - } - evm := vm.NewEVM(context, txContext, statedb, test.Genesis.Config, vm.Config{Debug: true, Tracer: tracer}) - - msg, err := tx.AsMessage(signer, nil) - if err != nil { - t.Fatalf("failed to prepare transaction for tracing: %v", err) - } - st := core.NewStateTransition(evm, msg, new(core.GasPool).AddGas(tx.Gas())) - if _, err = st.TransitionDb(); err != nil { - t.Fatalf("failed to execute transaction: %v", err) - } - // Retrieve the trace result and compare against the etalon - res, err := tracer.GetResult() - if err != nil { - t.Fatalf("failed to retrieve trace result: %v", err) - } - ret := new(callTrace) - if err := json.Unmarshal(res, ret); err != nil { - t.Fatalf("failed to unmarshal trace result: %v", err) - } - - if !jsonEqual(ret, test.Result) { - // uncomment this for easier debugging - //have, _ := json.MarshalIndent(ret, "", " ") - //want, _ := json.MarshalIndent(test.Result, "", " ") - //t.Fatalf("trace mismatch: \nhave %+v\nwant %+v", string(have), string(want)) - t.Fatalf("trace mismatch: \nhave %+v\nwant %+v", ret, test.Result) - } - }) - } -} - -func TestCallTracer(t *testing.T) { - testCallTracer("callTracer", "call_tracer", t) -} - -// jsonEqual is similar to reflect.DeepEqual, but does a 'bounce' via json prior to -// comparison -func jsonEqual(x, y interface{}) bool { - xTrace := new(callTrace) - yTrace := new(callTrace) - if xj, err := json.Marshal(x); err == nil { - json.Unmarshal(xj, xTrace) - } else { - return false - } - if yj, err := json.Marshal(y); err == nil { - json.Unmarshal(yj, yTrace) - } else { - return false - } - return reflect.DeepEqual(xTrace, yTrace) -} - func BenchmarkTransactionTrace(b *testing.B) { key, _ := crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291") from := crypto.PubkeyToAddress(key.PublicKey) @@ -337,6 +74,7 @@ func BenchmarkTransactionTrace(b *testing.B) { Time: new(big.Int).SetUint64(uint64(5)), Difficulty: big.NewInt(0xffffffff), GasLimit: gas, + BaseFee: big.NewInt(8), } alloc := core.GenesisAlloc{} // The code pushes 'deadbeef' into memory, then the other params, and calls CREATE2, then returns @@ -358,7 +96,7 @@ func BenchmarkTransactionTrace(b *testing.B) { } _, statedb := tests.MakePreState(rawdb.NewMemoryDatabase(), alloc, false) // Create the tracer, the EVM environment and run it - tracer := vm.NewStructLogger(&vm.LogConfig{ + tracer := logger.NewStructLogger(&logger.Config{ Debug: false, //DisableStorage: true, //EnableMemory: false, @@ -386,73 +124,3 @@ func BenchmarkTransactionTrace(b *testing.B) { tracer.Reset() } } - -func BenchmarkTracers(b *testing.B) { - files, err := ioutil.ReadDir(filepath.Join("testdata", "call_tracer")) - if err != nil { - b.Fatalf("failed to retrieve tracer test suite: %v", err) - } - for _, file := range files { - if !strings.HasSuffix(file.Name(), ".json") { - continue - } - file := file // capture range variable - b.Run(camel(strings.TrimSuffix(file.Name(), ".json")), func(b *testing.B) { - blob, err := ioutil.ReadFile(filepath.Join("testdata", "call_tracer", file.Name())) - if err != nil { - b.Fatalf("failed to read testcase: %v", err) - } - test := new(callTracerTest) - if err := json.Unmarshal(blob, test); err != nil { - b.Fatalf("failed to parse testcase: %v", err) - } - benchTracer("callTracer", test, b) - }) - } -} - -func benchTracer(tracerName string, test *callTracerTest, b *testing.B) { - // Configure a blockchain with the given prestate - tx := new(types.Transaction) - if err := rlp.DecodeBytes(common.FromHex(test.Input), tx); err != nil { - b.Fatalf("failed to parse testcase input: %v", err) - } - signer := types.MakeSigner(test.Genesis.Config, new(big.Int).SetUint64(uint64(test.Context.Number))) - msg, err := tx.AsMessage(signer, nil) - if err != nil { - b.Fatalf("failed to prepare transaction for tracing: %v", err) - } - origin, _ := signer.Sender(tx) - txContext := vm.TxContext{ - Origin: origin, - GasPrice: tx.GasPrice(), - } - context := vm.BlockContext{ - CanTransfer: core.CanTransfer, - Transfer: core.Transfer, - Coinbase: test.Context.Miner, - BlockNumber: new(big.Int).SetUint64(uint64(test.Context.Number)), - Time: new(big.Int).SetUint64(uint64(test.Context.Time)), - Difficulty: (*big.Int)(test.Context.Difficulty), - GasLimit: uint64(test.Context.GasLimit), - } - _, statedb := tests.MakePreState(rawdb.NewMemoryDatabase(), test.Genesis.Alloc, false) - - // Create the tracer, the EVM environment and run it - tracer, err := New(tracerName, new(Context)) - if err != nil { - b.Fatalf("failed to create call tracer: %v", err) - } - evm := vm.NewEVM(context, txContext, statedb, test.Genesis.Config, vm.Config{Debug: true, Tracer: tracer}) - - b.ReportAllocs() - b.ResetTimer() - for i := 0; i < b.N; i++ { - snap := statedb.Snapshot() - st := core.NewStateTransition(evm, msg, new(core.GasPool).AddGas(tx.Gas())) - if _, err = st.TransitionDb(); err != nil { - b.Fatalf("failed to execute transaction: %v", err) - } - statedb.RevertToSnapshot(snap) - } -} diff --git a/ethclient/ethclient.go b/ethclient/ethclient.go index 8d904a7725..c6fa6b4c85 100644 --- a/ethclient/ethclient.go +++ b/ethclient/ethclient.go @@ -60,7 +60,7 @@ func (ec *Client) Close() { // Blockchain Access -// ChainId retrieves the current chain ID for transaction replay protection. +// ChainID retrieves the current chain ID for transaction replay protection. func (ec *Client) ChainID(ctx context.Context) (*big.Int, error) { var result hexutil.Big err := ec.c.CallContext(ctx, &result, "eth_chainId") @@ -242,6 +242,8 @@ func (ec *Client) TransactionSender(ctx context.Context, tx *types.Transaction, if err == nil { return sender, nil } + + // It was not found in cache, ask the server. var meta struct { Hash common.Hash From common.Address @@ -293,14 +295,6 @@ func (ec *Client) TransactionReceipt(ctx context.Context, txHash common.Hash) (* return r, err } -type rpcProgress struct { - StartingBlock hexutil.Uint64 - CurrentBlock hexutil.Uint64 - HighestBlock hexutil.Uint64 - PulledStates hexutil.Uint64 - KnownStates hexutil.Uint64 -} - // SyncProgress retrieves the current progress of the sync algorithm. If there's // no sync currently running, it returns nil. func (ec *Client) SyncProgress(ctx context.Context) (*ethereum.SyncProgress, error) { @@ -313,17 +307,11 @@ func (ec *Client) SyncProgress(ctx context.Context) (*ethereum.SyncProgress, err if err := json.Unmarshal(raw, &syncing); err == nil { return nil, nil // Not syncing (always false) } - var progress *rpcProgress - if err := json.Unmarshal(raw, &progress); err != nil { + var p *rpcProgress + if err := json.Unmarshal(raw, &p); err != nil { return nil, err } - return ðereum.SyncProgress{ - StartingBlock: uint64(progress.StartingBlock), - CurrentBlock: uint64(progress.CurrentBlock), - HighestBlock: uint64(progress.HighestBlock), - PulledStates: uint64(progress.PulledStates), - KnownStates: uint64(progress.KnownStates), - }, nil + return p.toSyncProgress(), nil } // SubscribeNewHead subscribes to notifications about the current blockchain head @@ -563,3 +551,51 @@ func toCallArg(msg ethereum.CallMsg) interface{} { } return arg } + +// rpcProgress is a copy of SyncProgress with hex-encoded fields. +type rpcProgress struct { + StartingBlock hexutil.Uint64 + CurrentBlock hexutil.Uint64 + HighestBlock hexutil.Uint64 + + PulledStates hexutil.Uint64 + KnownStates hexutil.Uint64 + + SyncedAccounts hexutil.Uint64 + SyncedAccountBytes hexutil.Uint64 + SyncedBytecodes hexutil.Uint64 + SyncedBytecodeBytes hexutil.Uint64 + SyncedStorage hexutil.Uint64 + SyncedStorageBytes hexutil.Uint64 + HealedTrienodes hexutil.Uint64 + HealedTrienodeBytes hexutil.Uint64 + HealedBytecodes hexutil.Uint64 + HealedBytecodeBytes hexutil.Uint64 + HealingTrienodes hexutil.Uint64 + HealingBytecode hexutil.Uint64 +} + +func (p *rpcProgress) toSyncProgress() *ethereum.SyncProgress { + if p == nil { + return nil + } + return ðereum.SyncProgress{ + StartingBlock: uint64(p.StartingBlock), + CurrentBlock: uint64(p.CurrentBlock), + HighestBlock: uint64(p.HighestBlock), + PulledStates: uint64(p.PulledStates), + KnownStates: uint64(p.KnownStates), + SyncedAccounts: uint64(p.SyncedAccounts), + SyncedAccountBytes: uint64(p.SyncedAccountBytes), + SyncedBytecodes: uint64(p.SyncedBytecodes), + SyncedBytecodeBytes: uint64(p.SyncedBytecodeBytes), + SyncedStorage: uint64(p.SyncedStorage), + SyncedStorageBytes: uint64(p.SyncedStorageBytes), + HealedTrienodes: uint64(p.HealedTrienodes), + HealedTrienodeBytes: uint64(p.HealedTrienodeBytes), + HealedBytecodes: uint64(p.HealedBytecodes), + HealedBytecodeBytes: uint64(p.HealedBytecodeBytes), + HealingTrienodes: uint64(p.HealingTrienodes), + HealingBytecode: uint64(p.HealingBytecode), + } +} diff --git a/ethclient/ethclient_test.go b/ethclient/ethclient_test.go index a958c1e32a..d56febc91d 100644 --- a/ethclient/ethclient_test.go +++ b/ethclient/ethclient_test.go @@ -187,9 +187,34 @@ var ( testBalance = big.NewInt(2e15) ) +var genesis = &core.Genesis{ + Config: params.AllEthashProtocolChanges, + Alloc: core.GenesisAlloc{testAddr: {Balance: testBalance}}, + ExtraData: []byte("test genesis"), + Timestamp: 9000, + BaseFee: big.NewInt(params.InitialBaseFee), +} + +var testTx1 = types.MustSignNewTx(testKey, types.LatestSigner(genesis.Config), &types.LegacyTx{ + Nonce: 0, + Value: big.NewInt(12), + GasPrice: big.NewInt(params.InitialBaseFee), + Gas: params.TxGas, + To: &common.Address{2}, +}) + +var testTx2 = types.MustSignNewTx(testKey, types.LatestSigner(genesis.Config), &types.LegacyTx{ + Nonce: 1, + Value: big.NewInt(8), + GasPrice: big.NewInt(params.InitialBaseFee), + Gas: params.TxGas, + To: &common.Address{2}, +}) + func newTestBackend(t *testing.T) (*node.Node, []*types.Block) { // Generate test chain. - genesis, blocks := generateTestChain() + blocks := generateTestChain() + // Create node n, err := node.New(&node.Config{}) if err != nil { @@ -212,25 +237,22 @@ func newTestBackend(t *testing.T) (*node.Node, []*types.Block) { return n, blocks } -func generateTestChain() (*core.Genesis, []*types.Block) { +func generateTestChain() []*types.Block { db := rawdb.NewMemoryDatabase() - config := params.AllEthashProtocolChanges - genesis := &core.Genesis{ - Config: config, - Alloc: core.GenesisAlloc{testAddr: {Balance: testBalance}}, - ExtraData: []byte("test genesis"), - Timestamp: 9000, - BaseFee: big.NewInt(params.InitialBaseFee), - } generate := func(i int, g *core.BlockGen) { g.OffsetTime(5) g.SetExtra([]byte("test")) + if i == 1 { + // Test transactions are included in block #2. + g.AddTx(testTx1) + g.AddTx(testTx2) + } } gblock := genesis.ToBlock(db) engine := ethash.NewFaker() - blocks, _ := core.GenerateChain(config, gblock, engine, db, 1, generate) + blocks, _ := core.GenerateChain(genesis.Config, gblock, engine, db, 2, generate) blocks = append([]*types.Block{gblock}, blocks...) - return genesis, blocks + return blocks } func TestEthClient(t *testing.T) { @@ -242,30 +264,33 @@ func TestEthClient(t *testing.T) { tests := map[string]struct { test func(t *testing.T) }{ - "TestHeader": { + "Header": { func(t *testing.T) { testHeader(t, chain, client) }, }, - "TestBalanceAt": { + "BalanceAt": { func(t *testing.T) { testBalanceAt(t, client) }, }, - "TestTxInBlockInterrupted": { + "TxInBlockInterrupted": { func(t *testing.T) { testTransactionInBlockInterrupted(t, client) }, }, - "TestChainID": { + "ChainID": { func(t *testing.T) { testChainID(t, client) }, }, - "TestGetBlock": { + "GetBlock": { func(t *testing.T) { testGetBlock(t, client) }, }, - "TestStatusFunctions": { + "StatusFunctions": { func(t *testing.T) { testStatusFunctions(t, client) }, }, - "TestCallContract": { + "CallContract": { func(t *testing.T) { testCallContract(t, client) }, }, - "TestAtFunctions": { + "AtFunctions": { func(t *testing.T) { testAtFunctions(t, client) }, }, + "TransactionSender": { + func(t *testing.T) { testTransactionSender(t, client) }, + }, } t.Parallel() @@ -321,6 +346,11 @@ func testBalanceAt(t *testing.T, client *rpc.Client) { want *big.Int wantErr error }{ + "valid_account_genesis": { + account: testAddr, + block: big.NewInt(0), + want: testBalance, + }, "valid_account": { account: testAddr, block: big.NewInt(1), @@ -358,23 +388,25 @@ func testBalanceAt(t *testing.T, client *rpc.Client) { func testTransactionInBlockInterrupted(t *testing.T, client *rpc.Client) { ec := NewClient(client) - // Get current block by number + // Get current block by number. block, err := ec.BlockByNumber(context.Background(), nil) if err != nil { t.Fatalf("unexpected error: %v", err) } - // Test tx in block interupted + + // Test tx in block interupted. ctx, cancel := context.WithCancel(context.Background()) cancel() - tx, err := ec.TransactionInBlock(ctx, block.Hash(), 1) + tx, err := ec.TransactionInBlock(ctx, block.Hash(), 0) if tx != nil { t.Fatal("transaction should be nil") } if err == nil || err == ethereum.NotFound { t.Fatal("error should not be nil/notfound") } - // Test tx in block not found - if _, err := ec.TransactionInBlock(context.Background(), block.Hash(), 1); err != ethereum.NotFound { + + // Test tx in block not found. + if _, err := ec.TransactionInBlock(context.Background(), block.Hash(), 20); err != ethereum.NotFound { t.Fatal("error should be ethereum.NotFound") } } @@ -392,12 +424,13 @@ func testChainID(t *testing.T, client *rpc.Client) { func testGetBlock(t *testing.T, client *rpc.Client) { ec := NewClient(client) + // Get current block number blockNumber, err := ec.BlockNumber(context.Background()) if err != nil { t.Fatalf("unexpected error: %v", err) } - if blockNumber != 1 { + if blockNumber != 2 { t.Fatalf("BlockNumber returned wrong number: %d", blockNumber) } // Get current block by number @@ -445,6 +478,7 @@ func testStatusFunctions(t *testing.T, client *rpc.Client) { if progress != nil { t.Fatalf("unexpected progress: %v", progress) } + // NetworkID networkID, err := ec.NetworkID(context.Background()) if err != nil { @@ -453,20 +487,22 @@ func testStatusFunctions(t *testing.T, client *rpc.Client) { if networkID.Cmp(big.NewInt(0)) != 0 { t.Fatalf("unexpected networkID: %v", networkID) } - // SuggestGasPrice (should suggest 1 Gwei) + + // SuggestGasPrice gasPrice, err := ec.SuggestGasPrice(context.Background()) if err != nil { t.Fatalf("unexpected error: %v", err) } - if gasPrice.Cmp(big.NewInt(1875000000)) != 0 { // 1 gwei tip + 0.875 basefee after a 1 gwei fee empty block + if gasPrice.Cmp(big.NewInt(1000000000)) != 0 { t.Fatalf("unexpected gas price: %v", gasPrice) } - // SuggestGasTipCap (should suggest 1 Gwei) + + // SuggestGasTipCap gasTipCap, err := ec.SuggestGasTipCap(context.Background()) if err != nil { t.Fatalf("unexpected error: %v", err) } - if gasTipCap.Cmp(big.NewInt(1000000000)) != 0 { + if gasTipCap.Cmp(big.NewInt(234375000)) != 0 { t.Fatalf("unexpected gas tip cap: %v", gasTipCap) } } @@ -500,9 +536,11 @@ func testCallContract(t *testing.T, client *rpc.Client) { func testAtFunctions(t *testing.T, client *rpc.Client) { ec := NewClient(client) + // send a transaction for some interesting pending status sendTransaction(ec) time.Sleep(100 * time.Millisecond) + // Check pending transaction count pending, err := ec.PendingTransactionCount(context.Background()) if err != nil { @@ -561,23 +599,66 @@ func testAtFunctions(t *testing.T, client *rpc.Client) { } } +func testTransactionSender(t *testing.T, client *rpc.Client) { + ec := NewClient(client) + ctx := context.Background() + + // Retrieve testTx1 via RPC. + block2, err := ec.HeaderByNumber(ctx, big.NewInt(2)) + if err != nil { + t.Fatal("can't get block 1:", err) + } + tx1, err := ec.TransactionInBlock(ctx, block2.Hash(), 0) + if err != nil { + t.Fatal("can't get tx:", err) + } + if tx1.Hash() != testTx1.Hash() { + t.Fatalf("wrong tx hash %v, want %v", tx1.Hash(), testTx1.Hash()) + } + + // The sender address is cached in tx1, so no additional RPC should be required in + // TransactionSender. Ensure the server is not asked by canceling the context here. + canceledCtx, cancel := context.WithCancel(context.Background()) + cancel() + sender1, err := ec.TransactionSender(canceledCtx, tx1, block2.Hash(), 0) + if err != nil { + t.Fatal(err) + } + if sender1 != testAddr { + t.Fatal("wrong sender:", sender1) + } + + // Now try to get the sender of testTx2, which was not fetched through RPC. + // TransactionSender should query the server here. + sender2, err := ec.TransactionSender(ctx, testTx2, block2.Hash(), 1) + if err != nil { + t.Fatal(err) + } + if sender2 != testAddr { + t.Fatal("wrong sender:", sender2) + } +} + func sendTransaction(ec *Client) error { - // Retrieve chainID chainID, err := ec.ChainID(context.Background()) if err != nil { return err } - // Create transaction - tx := types.NewTransaction(0, common.Address{1}, big.NewInt(1), 22000, big.NewInt(params.InitialBaseFee), nil) + nonce, err := ec.PendingNonceAt(context.Background(), testAddr) + if err != nil { + return err + } + signer := types.LatestSignerForChainID(chainID) - signature, err := crypto.Sign(signer.Hash(tx).Bytes(), testKey) + tx, err := types.SignNewTx(testKey, signer, &types.LegacyTx{ + Nonce: nonce, + To: &common.Address{2}, + Value: big.NewInt(1), + Gas: 22000, + GasPrice: big.NewInt(params.InitialBaseFee), + }) if err != nil { return err } - signedTx, err := tx.WithSignature(signer, signature) - if err != nil { - return err - } - // Send transaction - return ec.SendTransaction(context.Background(), signedTx) + return ec.SendTransaction(context.Background(), tx) } diff --git a/ethclient/signer.go b/ethclient/signer.go index 9de020b352..f827d4eb56 100644 --- a/ethclient/signer.go +++ b/ethclient/signer.go @@ -45,7 +45,7 @@ func (s *senderFromServer) Equal(other types.Signer) bool { } func (s *senderFromServer) Sender(tx *types.Transaction) (common.Address, error) { - if s.blockhash == (common.Hash{}) { + if s.addr == (common.Address{}) { return common.Address{}, errNotCached } return s.addr, nil diff --git a/ethdb/database.go b/ethdb/database.go index 3c6500d1dc..0a5729c6c1 100644 --- a/ethdb/database.go +++ b/ethdb/database.go @@ -76,12 +76,12 @@ type AncientReader interface { // Ancient retrieves an ancient binary blob from the append-only immutable files. Ancient(kind string, number uint64) ([]byte, error) - // ReadAncients retrieves multiple items in sequence, starting from the index 'start'. + // AncientRange retrieves multiple items in sequence, starting from the index 'start'. // It will return // - at most 'count' items, // - at least 1 item (even if exceeding the maxBytes), but will otherwise // return as many items as fit into maxBytes. - ReadAncients(kind string, start, count, maxBytes uint64) ([][]byte, error) + AncientRange(kind string, start, count, maxBytes uint64) ([][]byte, error) // Ancients returns the ancient item numbers in the ancient store. Ancients() (uint64, error) @@ -90,6 +90,15 @@ type AncientReader interface { AncientSize(kind string) (uint64, error) } +// AncientBatchReader is the interface for 'batched' or 'atomic' reading. +type AncientBatchReader interface { + AncientReader + + // ReadAncients runs the given read operation while ensuring that no writes take place + // on the underlying freezer. + ReadAncients(fn func(AncientReader) error) (err error) +} + // AncientWriter contains the methods required to write to immutable ancient data. type AncientWriter interface { // ModifyAncients runs a write operation on the ancient store. @@ -117,7 +126,7 @@ type AncientWriteOp interface { // immutable ancient data. type Reader interface { KeyValueReader - AncientReader + AncientBatchReader } // Writer contains the methods required to write data to both key-value as well as @@ -130,7 +139,7 @@ type Writer interface { // AncientStore contains all the methods required to allow handling different // ancient data stores backing immutable chain data store. type AncientStore interface { - AncientReader + AncientBatchReader AncientWriter io.Closer } diff --git a/ethdb/leveldb/leveldb.go b/ethdb/leveldb/leveldb.go index 9ff1a2ce1d..9a782dedbe 100644 --- a/ethdb/leveldb/leveldb.go +++ b/ethdb/leveldb/leveldb.go @@ -455,7 +455,7 @@ type batch struct { // Put inserts the given value into the batch for later committing. func (b *batch) Put(key, value []byte) error { b.b.Put(key, value) - b.size += len(value) + b.size += len(key) + len(value) return nil } diff --git a/ethdb/memorydb/memorydb.go b/ethdb/memorydb/memorydb.go index fedc9e326c..78181e860c 100644 --- a/ethdb/memorydb/memorydb.go +++ b/ethdb/memorydb/memorydb.go @@ -204,7 +204,7 @@ type batch struct { // Put inserts the given value into the batch for later committing. func (b *batch) Put(key, value []byte) error { b.writes = append(b.writes, keyvalue{common.CopyBytes(key), common.CopyBytes(value), false}) - b.size += len(value) + b.size += len(key) + len(value) return nil } diff --git a/graphql/graphql.go b/graphql/graphql.go index af6b7dc317..16e0eb654d 100644 --- a/graphql/graphql.go +++ b/graphql/graphql.go @@ -372,6 +372,9 @@ func (t *Transaction) Status(ctx context.Context) (*Long, error) { if err != nil || receipt == nil { return nil, err } + if len(receipt.PostState) != 0 { + return nil, nil + } ret := Long(receipt.Status) return &ret, nil } @@ -596,21 +599,18 @@ func (b *Block) BaseFeePerGas(ctx context.Context) (*hexutil.Big, error) { } func (b *Block) Parent(ctx context.Context) (*Block, error) { - // If the block header hasn't been fetched, and we'll need it, fetch it. - if b.numberOrHash == nil && b.header == nil { - if _, err := b.resolveHeader(ctx); err != nil { - return nil, err - } + if _, err := b.resolveHeader(ctx); err != nil { + return nil, err } - if b.header != nil && b.header.Number.Uint64() > 0 { - num := rpc.BlockNumberOrHashWithNumber(rpc.BlockNumber(b.header.Number.Uint64() - 1)) - return &Block{ - backend: b.backend, - numberOrHash: &num, - hash: b.header.ParentHash, - }, nil + if b.header == nil || b.header.Number.Uint64() < 1 { + return nil, nil } - return nil, nil + num := rpc.BlockNumberOrHashWithNumber(rpc.BlockNumber(b.header.Number.Uint64() - 1)) + return &Block{ + backend: b.backend, + numberOrHash: &num, + hash: b.header.ParentHash, + }, nil } func (b *Block) Difficulty(ctx context.Context) (hexutil.Big, error) { @@ -1110,10 +1110,21 @@ func (r *Resolver) Blocks(ctx context.Context, args struct { ret := make([]*Block, 0, to-from+1) for i := from; i <= to; i++ { numberOrHash := rpc.BlockNumberOrHashWithNumber(i) - ret = append(ret, &Block{ + block := &Block{ backend: r.backend, numberOrHash: &numberOrHash, - }) + } + // Resolve the header to check for existence. + // Note we don't resolve block directly here since it will require an + // additional network request for light client. + h, err := block.resolveHeader(ctx) + if err != nil { + return nil, err + } else if h == nil { + // Blocks after must be non-existent too, break. + break + } + ret = append(ret, block) } return ret, nil } @@ -1220,32 +1231,66 @@ type SyncState struct { func (s *SyncState) StartingBlock() hexutil.Uint64 { return hexutil.Uint64(s.progress.StartingBlock) } - func (s *SyncState) CurrentBlock() hexutil.Uint64 { return hexutil.Uint64(s.progress.CurrentBlock) } - func (s *SyncState) HighestBlock() hexutil.Uint64 { return hexutil.Uint64(s.progress.HighestBlock) } - -func (s *SyncState) PulledStates() *hexutil.Uint64 { - ret := hexutil.Uint64(s.progress.PulledStates) - return &ret +func (s *SyncState) SyncedAccounts() hexutil.Uint64 { + return hexutil.Uint64(s.progress.SyncedAccounts) } - -func (s *SyncState) KnownStates() *hexutil.Uint64 { - ret := hexutil.Uint64(s.progress.KnownStates) - return &ret +func (s *SyncState) SyncedAccountBytes() hexutil.Uint64 { + return hexutil.Uint64(s.progress.SyncedAccountBytes) +} +func (s *SyncState) SyncedBytecodes() hexutil.Uint64 { + return hexutil.Uint64(s.progress.SyncedBytecodes) +} +func (s *SyncState) SyncedBytecodeBytes() hexutil.Uint64 { + return hexutil.Uint64(s.progress.SyncedBytecodeBytes) +} +func (s *SyncState) SyncedStorage() hexutil.Uint64 { + return hexutil.Uint64(s.progress.SyncedStorage) +} +func (s *SyncState) SyncedStorageBytes() hexutil.Uint64 { + return hexutil.Uint64(s.progress.SyncedStorageBytes) +} +func (s *SyncState) HealedTrienodes() hexutil.Uint64 { + return hexutil.Uint64(s.progress.HealedTrienodes) +} +func (s *SyncState) HealedTrienodeBytes() hexutil.Uint64 { + return hexutil.Uint64(s.progress.HealedTrienodeBytes) +} +func (s *SyncState) HealedBytecodes() hexutil.Uint64 { + return hexutil.Uint64(s.progress.HealedBytecodes) +} +func (s *SyncState) HealedBytecodeBytes() hexutil.Uint64 { + return hexutil.Uint64(s.progress.HealedBytecodeBytes) +} +func (s *SyncState) HealingTrienodes() hexutil.Uint64 { + return hexutil.Uint64(s.progress.HealingTrienodes) +} +func (s *SyncState) HealingBytecode() hexutil.Uint64 { + return hexutil.Uint64(s.progress.HealingBytecode) } // Syncing returns false in case the node is currently not syncing with the network. It can be up to date or has not // yet received the latest block headers from its pears. In case it is synchronizing: -// - startingBlock: block number this node started to synchronise from -// - currentBlock: block number this node is currently importing -// - highestBlock: block number of the highest block header this node has received from peers -// - pulledStates: number of state entries processed until now -// - knownStates: number of known state entries that still need to be pulled +// - startingBlock: block number this node started to synchronise from +// - currentBlock: block number this node is currently importing +// - highestBlock: block number of the highest block header this node has received from peers +// - syncedAccounts: number of accounts downloaded +// - syncedAccountBytes: number of account trie bytes persisted to disk +// - syncedBytecodes: number of bytecodes downloaded +// - syncedBytecodeBytes: number of bytecode bytes downloaded +// - syncedStorage: number of storage slots downloaded +// - syncedStorageBytes: number of storage trie bytes persisted to disk +// - healedTrienodes: number of state trie nodes downloaded +// - healedTrienodeBytes: number of state trie bytes persisted to disk +// - healedBytecodes: number of bytecodes downloaded +// - healedBytecodeBytes: number of bytecodes persisted to disk +// - healingTrienodes: number of state trie nodes pending +// - healingBytecode: number of bytecodes pending func (r *Resolver) Syncing() (*SyncState, error) { progress := r.backend.SyncProgress() diff --git a/graphql/schema.go b/graphql/schema.go index dfd094a420..86060cd238 100644 --- a/graphql/schema.go +++ b/graphql/schema.go @@ -297,12 +297,6 @@ const schema string = ` currentBlock: Long! # HighestBlock is the latest known block number. highestBlock: Long! - # PulledStates is the number of state entries fetched so far, or null - # if this is not known or not relevant. - pulledStates: Long - # KnownStates is the number of states the node knows of so far, or null - # if this is not known or not relevant. - knownStates: Long } # Pending represents the current pending state. diff --git a/interfaces.go b/interfaces.go index 87c5ca0b7d..94a2492ae1 100644 --- a/interfaces.go +++ b/interfaces.go @@ -101,8 +101,27 @@ type SyncProgress struct { StartingBlock uint64 // Block number where sync began CurrentBlock uint64 // Current block number where sync is at HighestBlock uint64 // Highest alleged block number in the chain - PulledStates uint64 // Number of state trie entries already downloaded - KnownStates uint64 // Total number of state trie entries known about + + // "fast sync" fields. These used to be sent by geth, but are no longer used + // since version v1.10. + PulledStates uint64 // Number of state trie entries already downloaded + KnownStates uint64 // Total number of state trie entries known about + + // "snap sync" fields. + SyncedAccounts uint64 // Number of accounts downloaded + SyncedAccountBytes uint64 // Number of account trie bytes persisted to disk + SyncedBytecodes uint64 // Number of bytecodes downloaded + SyncedBytecodeBytes uint64 // Number of bytecode bytes downloaded + SyncedStorage uint64 // Number of storage slots downloaded + SyncedStorageBytes uint64 // Number of storage trie bytes persisted to disk + + HealedTrienodes uint64 // Number of state trie nodes downloaded + HealedTrienodeBytes uint64 // Number of state trie bytes persisted to disk + HealedBytecodes uint64 // Number of bytecodes downloaded + HealedBytecodeBytes uint64 // Number of bytecodes persisted to disk + + HealingTrienodes uint64 // Number of state trie nodes pending + HealingBytecode uint64 // Number of bytecodes pending } // ChainSyncReader wraps access to the node's current sync status. If there's no diff --git a/internal/ethapi/api.go b/internal/ethapi/api.go index 999e2256cc..c50fcd7741 100644 --- a/internal/ethapi/api.go +++ b/internal/ethapi/api.go @@ -41,6 +41,7 @@ import ( "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/eth/tracers/logger" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/p2p" "github.com/ethereum/go-ethereum/params" @@ -131,11 +132,21 @@ func (s *PublicEthereumAPI) Syncing() (interface{}, error) { } // Otherwise gather the block sync stats return map[string]interface{}{ - "startingBlock": hexutil.Uint64(progress.StartingBlock), - "currentBlock": hexutil.Uint64(progress.CurrentBlock), - "highestBlock": hexutil.Uint64(progress.HighestBlock), - "pulledStates": hexutil.Uint64(progress.PulledStates), - "knownStates": hexutil.Uint64(progress.KnownStates), + "startingBlock": hexutil.Uint64(progress.StartingBlock), + "currentBlock": hexutil.Uint64(progress.CurrentBlock), + "highestBlock": hexutil.Uint64(progress.HighestBlock), + "syncedAccounts": hexutil.Uint64(progress.SyncedAccounts), + "syncedAccountBytes": hexutil.Uint64(progress.SyncedAccountBytes), + "syncedBytecodes": hexutil.Uint64(progress.SyncedBytecodes), + "syncedBytecodeBytes": hexutil.Uint64(progress.SyncedBytecodeBytes), + "syncedStorage": hexutil.Uint64(progress.SyncedStorage), + "syncedStorageBytes": hexutil.Uint64(progress.SyncedStorageBytes), + "healedTrienodes": hexutil.Uint64(progress.HealedTrienodes), + "healedTrienodeBytes": hexutil.Uint64(progress.HealedTrienodeBytes), + "healedBytecodes": hexutil.Uint64(progress.HealedBytecodes), + "healedBytecodeBytes": hexutil.Uint64(progress.HealedBytecodeBytes), + "healingTrienodes": hexutil.Uint64(progress.HealingTrienodes), + "healingBytecode": hexutil.Uint64(progress.HealingBytecode), }, nil } @@ -1226,7 +1237,7 @@ type StructLogRes struct { } // FormatLogs formats EVM returned structured logs for json output -func FormatLogs(logs []vm.StructLog) []StructLogRes { +func FormatLogs(logs []logger.StructLog) []StructLogRes { formatted := make([]StructLogRes, len(logs)) for index, trace := range logs { formatted[index] = StructLogRes{ @@ -1422,10 +1433,12 @@ func newRPCTransaction(tx *types.Transaction, blockHash common.Hash, blockNumber // newRPCPendingTransaction returns a pending transaction that will serialize to the RPC representation func newRPCPendingTransaction(tx *types.Transaction, current *types.Header, config *params.ChainConfig) *RPCTransaction { var baseFee *big.Int + blockNumber := uint64(0) if current != nil { baseFee = misc.CalcBaseFee(config, current) + blockNumber = current.Number.Uint64() } - return newRPCTransaction(tx, common.Hash{}, 0, 0, baseFee, config) + return newRPCTransaction(tx, common.Hash{}, blockNumber, 0, baseFee, config) } // newRPCTransactionFromBlockIndex returns a transaction that will serialize to the RPC representation. @@ -1511,9 +1524,9 @@ func AccessList(ctx context.Context, b Backend, blockNrOrHash rpc.BlockNumberOrH precompiles := vm.ActivePrecompiles(b.ChainConfig().Rules(header.Number)) // Create an initial tracer - prevTracer := vm.NewAccessListTracer(nil, args.from(), to, precompiles) + prevTracer := logger.NewAccessListTracer(nil, args.from(), to, precompiles) if args.AccessList != nil { - prevTracer = vm.NewAccessListTracer(*args.AccessList, args.from(), to, precompiles) + prevTracer = logger.NewAccessListTracer(*args.AccessList, args.from(), to, precompiles) } for { // Retrieve the current access list to expand @@ -1539,7 +1552,7 @@ func AccessList(ctx context.Context, b Backend, blockNrOrHash rpc.BlockNumberOrH } // Apply the transaction with the access list tracer - tracer := vm.NewAccessListTracer(accessList, args.from(), to, precompiles) + tracer := logger.NewAccessListTracer(accessList, args.from(), to, precompiles) config := vm.Config{Tracer: tracer, Debug: true, NoBaseFee: true} vmenv, _, err := b.GetEVM(ctx, msg, statedb, header, &config) if err != nil { diff --git a/internal/jsre/deps/bindata.go b/internal/jsre/deps/bindata.go index 6f079c2ba5..3e7d3a1367 100644 --- a/internal/jsre/deps/bindata.go +++ b/internal/jsre/deps/bindata.go @@ -1,7 +1,7 @@ // Code generated by go-bindata. DO NOT EDIT. // sources: // bignumber.js (17.273kB) -// web3.js (401.764kB) +// web3.js (402.466kB) package deps @@ -90,7 +90,7 @@ func bignumberJs() (*asset, error) { return a, nil } -var _web3Js = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x6b\x7b\x13\x39\xd2\x38\x0e\xbf\xcf\xa7\x50\xfc\xdc\x0f\xb6\x89\xb1\x73\x60\x18\xc6\x99\x0c\x1b\x02\x33\x64\x6f\x20\x5c\x40\x76\x76\xef\x6c\x96\xab\xed\x96\xed\x1e\xda\xdd\xfe\x75\xb7\x73\x18\x92\xef\xfe\xbf\x54\x3a\x95\x0e\x7d\x70\x12\xe6\xb4\xc9\x0b\x70\x4b\xa5\x53\xa9\x54\x2a\x95\x4a\x55\x19\xfd\x7f\xcb\x28\xa3\x7b\x9d\xc9\x32\x19\x17\x51\x9a\x10\xda\x29\x7a\x49\x2f\xeb\x7e\x51\x29\x79\x27\xed\x2d\xbb\x5f\xa2\x49\x67\x3d\x39\x49\x4f\xf9\xaf\x02\x7e\x9d\x05\x19\x09\xf6\x8a\xcb\x05\x4d\x27\x44\xd6\xb5\xd7\x92\x45\x5b\x0f\x1e\x88\xc4\x5d\x56\x66\xf9\xe0\x41\xd0\xcd\x68\xb1\xcc\x12\x12\x74\xd2\xde\xfa\x66\x97\xa5\x47\x32\x2d\x12\x69\xac\xd6\xc9\x5e\x42\xcf\xc9\xcb\x2c\x4b\xb3\x4e\xeb\x20\x48\x92\xb4\x20\x93\x28\x09\xc9\x3c\x0d\x97\x31\x25\xed\xd6\x46\xba\xd1\x6a\xb7\xba\xbb\xc5\x2c\x4b\xcf\xc9\xa4\x3f\x4e\x43\xba\xd7\x7a\x73\xf4\xe2\xf8\xf5\xcb\x4f\x6f\x8f\x3e\x7e\xfa\xf1\xe8\xf8\xed\x8b\x56\x6f\x72\xcd\xea\x8b\xf7\x58\xdf\xf7\xbe\xd0\x8b\x45\x9a\x15\xf9\xf0\xcb\xf5\xf5\x2e\x1b\xc3\xc9\xe6\x69\x7f\x1c\xc4\x71\x27\xee\x8b\xac\x9e\xec\x7d\x87\xf2\x01\x26\x7b\x00\xb8\x75\x7a\x42\x4f\x77\x45\x57\xf3\x4e\xf2\x2c\x19\xd2\xee\x75\x2f\xee\xe9\x92\xb4\xc7\x71\x77\x2d\xa0\x58\x93\x32\x13\x7a\x11\x35\xc2\xd5\x24\xcd\x3a\x0c\x3a\xdd\xdb\xdc\x4d\xbf\xcf\xfa\x31\x4d\xa6\xc5\x6c\x37\xdd\xd8\xe8\xe6\x9d\x8c\x21\x5e\x75\xe3\xba\xdb\xf9\xb2\x35\x3c\x51\x5d\x16\x55\xf4\x38\x96\x7a\xa2\xed\xee\x97\x35\x9e\x20\x3b\xb3\x77\xb2\x46\xc8\x97\x35\x42\x08\x69\x8d\xd3\x24\x2f\x82\xa4\x68\x0d\x49\x91\x2d\x69\x8f\xa7\x46\xc9\x62\x59\xe4\xad\x21\x39\x81\x6f\x09\x0d\x79\x49\x30\xa7\xad\x21\x69\x7d\x4a\xcf\x13\x9a\xb5\x7a\x3a\x87\x8d\x8e\xe5\x04\x61\x98\xd1\x3c\x6f\x89\x9c\x6b\xf8\xff\x54\x54\x2d\x8b\xc3\xff\x22\x2d\x5d\x16\xf5\xed\xa5\x9f\x50\x11\xa3\xbd\xd1\x65\x41\xf3\x9d\x6d\x7f\x7b\x12\x48\x61\x7a\x8d\x90\xeb\xde\x9d\x20\xe0\x46\xfd\x51\xc3\x41\xd8\x6b\x86\x80\x95\x51\xfd\x47\x1d\xfa\x38\x4d\x0a\x9a\x14\xb7\x1e\xfc\x9f\x72\xde\xd9\x8c\xfd\x61\xa6\x7d\x12\xc4\xf9\x6f\x37\xf4\x8c\xe6\x34\x3b\xf3\xad\xfa\x3f\xfa\xa4\xe5\xcb\xd1\x7b\x3a\x8d\xf2\x22\x0b\xfe\x0b\x26\xaf\x57\x55\x07\x3d\x3f\xba\x15\xdf\x2f\xb2\x20\xc9\x27\x5e\xd6\xf7\x67\xc1\x41\x66\x91\xc2\xea\x48\xc8\x69\xf1\xa1\x9a\xa4\xee\x0c\x17\x76\xd3\xbf\x49\xa3\x5f\x79\x02\x82\x26\x88\xaf\xaa\x60\x91\x45\xf3\x20\xbb\xf4\xf6\x23\x4d\xe3\xda\xc9\xdb\x17\x6d\xfd\x79\x51\x68\xee\xc1\x95\xd5\x94\x21\xe1\xa0\x74\x1b\xff\x23\x21\xc1\xdb\xfb\x30\xca\xd3\xf3\xe4\x16\x3d\x0f\x92\x34\xb9\x9c\xa7\xcb\x7c\x85\xae\x47\x49\x48\x2f\x68\x68\xec\x5d\x77\x36\xb1\xba\x72\xd4\x1d\xb3\xf6\xf3\x28\xb9\x0d\xe3\xde\x5f\x02\x26\x5e\x26\x21\x0d\x5b\x16\x9a\xe8\x19\x23\x84\xbf\x00\x8e\x46\x51\x18\x36\xc3\xd1\xcd\xea\x3f\x0b\xe2\xa5\xb7\xfb\xcb\x28\x29\xb6\xbf\x79\x52\x3d\x05\x6f\xe9\xf9\xf3\xe8\x77\x44\xfe\xad\xd6\xdc\xc1\x2c\x48\xa6\xbf\x27\xe9\xdc\x09\xe5\x94\xd4\x8d\xa4\xfa\x4a\xaa\xf1\x62\xe6\x1d\xdf\x8d\x6a\x11\xb4\x76\xba\xb6\x76\xdd\xfb\x72\x7d\xda\xdb\xfe\xdd\x0e\xfd\x7f\xa1\x33\xef\xef\x24\x3b\x4e\x96\x49\x78\x63\x52\xb9\xf5\xc6\x75\x7f\xec\xfd\x73\x1f\x7b\xef\x0f\x7d\x7f\xe4\x33\x87\x77\xf0\xe2\xbc\xf0\x47\x93\x36\xbf\xee\x66\xae\xf7\xaa\x9d\x3b\xdb\xab\x56\x9d\xf7\x49\x96\xce\x6f\x39\xed\x45\x7a\xcb\xa3\xe6\xed\x04\xbe\xdf\x77\xdd\xfc\x11\xf0\x17\x25\x61\x94\xd1\x71\x71\xe8\xdd\x33\x57\xe8\xc9\xed\x26\x22\x1a\x07\x8b\x8f\xbf\xeb\x64\xf8\x31\xd9\xec\xb4\x4b\x17\x69\x1e\x55\x1d\xd4\x17\xc1\x65\x30\x8a\xa9\x29\x14\xfc\x2e\x5c\xa9\x8c\xe6\xee\xe4\xf8\x75\x3b\x1a\xd8\x97\xe3\x7d\x61\xe2\xf3\xb7\x3f\xc9\xdc\x09\x92\x4a\xea\x6e\x46\x67\xbf\x03\xfa\xff\xb0\x58\xbf\x8b\xf3\xe3\x8d\xf9\xe4\xd7\xc6\xba\xcd\xf4\xee\xd1\xde\x10\xed\xb7\xde\xb8\xbe\xf6\xcc\x1e\x7a\xb6\xb4\x2a\x39\xee\x71\x13\x39\x0e\x8c\x37\xc8\x9e\xb4\x70\xe8\xb4\xfb\x83\x49\x9a\xcd\x83\xa2\xa0\x59\xde\xee\xee\x02\xc0\x87\x34\x8e\xc2\xa8\xb8\xfc\x78\xb9\xa0\x26\x2c\x6b\x9f\x41\xad\x0d\x1e\x3e\x5c\x23\x0f\x0d\x48\xa1\x73\x27\x51\x4e\x02\xb2\xc8\xd2\x94\x01\x93\x62\x16\x14\x24\xa3\x0b\x76\xc8\x4a\x8a\x9c\x88\xb9\x23\x2c\x93\xd5\x70\x58\x90\x79\x50\x8c\x67\x34\x1f\xb2\x4f\x91\x8d\x7e\x9e\x9c\xe2\x8f\xc7\xc6\xd7\xa9\x99\xb9\x63\x7d\x9f\x9e\x3c\x39\x3d\x39\xed\x91\x7e\xbf\xbf\x46\x1e\x0e\x9c\xb1\xc9\x1e\xef\x11\x65\x4d\xd3\xe9\x8a\x29\x2e\x66\x51\xde\xff\x04\x0b\xe3\x47\x89\x20\x06\xd8\xe7\xe8\x3a\x64\x19\x87\x49\xb1\x8b\x80\xf9\xbe\xed\x83\x3e\x82\x1c\xd1\xdc\xee\xda\xf5\xee\xda\x9a\xa7\x1f\xfd\x45\x96\x16\x1c\x6b\x7b\x24\xa1\xe7\x46\x5f\x3b\x5f\xae\xbb\xbb\xd5\xa5\xfa\x20\xbd\x64\xcb\x71\x91\xb2\xc6\x3d\xb0\x75\xed\xf6\xa3\x5c\xcc\xb9\x46\x08\x23\x47\x89\x14\x61\xd7\xb2\xbe\xce\x12\xfb\x30\x6f\x9d\x81\xc0\x76\xe7\xdf\x27\x9d\x93\xcd\x47\xdf\x9d\x3e\xec\xfe\xfb\xb4\xfb\x6c\xd0\xe5\xe3\x34\x0f\x0e\xa5\xdd\xba\xee\x7d\x69\x61\x52\x6c\x0d\xbf\xeb\xb5\x38\xbd\xb5\x86\x5b\x8f\xaf\x4f\x7b\xdf\xfc\xce\xe4\xfd\x3c\x4d\xe3\x1a\xda\x1e\x31\x90\x12\xc2\x66\x79\xf2\x7f\x4e\xa5\xf0\xeb\xb1\xfe\x79\x8a\x92\x77\xf0\x47\x1d\x19\x43\xcf\x6e\x4a\xc3\xac\xf0\x2a\x44\xcc\xe1\x6d\x0a\x66\xa9\x2b\x92\xaf\x59\xa4\x82\x76\x79\x8b\x55\x65\x6f\x42\xb5\xff\x61\xa8\x35\x69\xf6\xe1\xff\x34\x22\x5a\xd1\x9f\x7a\x8a\x7d\xf2\x7b\x53\x2c\xdb\xc3\x14\xc9\x16\x7e\x9a\x2d\x66\x94\xc0\x66\x07\x84\xdb\xf7\x51\x2e\xcb\x55\x3f\x04\x5d\xc2\xcf\xc7\xe8\xf7\x29\xce\xd8\x31\xbe\x4c\xfa\x25\x62\x6b\x55\x3f\x9f\x1a\xf5\x88\xa2\x1e\x2a\x87\x4e\xde\x98\xcc\x59\xe9\x95\xe8\x9c\x17\x70\x08\x9d\x25\xaf\x4a\xe9\x66\x99\x2a\x52\xe7\x8d\x56\x96\xbe\x19\xb1\xb3\x4a\x38\xa9\x7f\xd9\xea\x5d\x77\x6f\x46\xf8\xa2\x77\xf5\x94\xff\x6d\x13\xca\x1f\x3c\x84\x0e\x7f\x9c\x45\x39\x99\x44\x31\x65\x94\xba\x08\xb2\x82\xa4\x13\x72\x4e\x47\x3b\xfd\x5f\xf2\xfe\x1a\x80\x88\x2f\x06\x30\xc9\x28\x25\x79\x3a\x29\xce\x83\x8c\x0e\xc9\x65\xba\x24\xe3\x20\x21\x19\x0d\xa3\xbc\xc8\xa2\xd1\xb2\xa0\x24\x2a\x48\x90\x84\x83\x34\x23\xf3\x34\x8c\x26\x97\x50\x47\x54\x90\x65\x12\xd2\x0c\x08\xbe\xa0\xd9\x3c\x67\xed\xb0\x8f\x9f\xde\x1e\x93\xd7\x34\xcf\x69\x46\x7e\xa2\x09\xcd\x82\x98\xbc\x5b\x8e\xe2\x68\x4c\x5e\x47\x63\x9a\xe4\x94\x04\x39\x59\xb0\x94\x7c\x46\x43\x32\xba\x14\x54\x44\xc9\x8f\xac\x33\x1f\x44\x67\xc8\x8f\xe9\x32\x09\x03\x36\xe6\x1e\xa1\x51\x31\xa3\x19\x39\xa3\x59\xce\x66\x68\x47\xb6\x25\x6a\xec\x91\x34\x83\x5a\x3a\x41\xc1\xc6\x90\x91\x74\xc1\x0a\x76\x49\x90\x5c\x92\x38\x28\x74\x59\x17\x05\x7a\xa4\x21\x89\x12\xa8\x76\x96\xca\x95\x1d\x15\xe4\x3c\x8a\x63\x32\xa2\x64\x99\xd3\xc9\x32\xe6\x82\xe3\x68\x59\x90\x9f\x0f\x3f\xbe\x3a\x3a\xfe\x48\xf6\xdf\xfe\x8b\xfc\xbc\xff\xfe\xfd\xfe\xdb\x8f\xff\xda\x25\xe7\x51\x31\x4b\x97\x05\x61\x12\x25\xd4\x15\xcd\x17\x71\x44\x43\x72\x1e\x64\x59\x90\x14\x97\x24\x9d\x40\x15\x6f\x5e\xbe\x3f\x78\xb5\xff\xf6\xe3\xfe\xf3\xc3\xd7\x87\x1f\xff\x45\xd2\x8c\xfc\x78\xf8\xf1\xed\xcb\x0f\x1f\xc8\x8f\x47\xef\xc9\x3e\x79\xb7\xff\xfe\xe3\xe1\xc1\xf1\xeb\xfd\xf7\xe4\xdd\xf1\xfb\x77\x47\x1f\x5e\xf6\x09\xf9\x40\x59\xc7\x28\xd4\x50\x8f\xe8\x09\xcc\x59\x46\x49\x48\x8b\x20\x8a\xe5\xfc\xff\x2b\x5d\x92\x7c\x96\x2e\xe3\x90\xcc\x82\x33\x4a\x32\x3a\xa6\xd1\x19\x0d\x49\x40\xc6\xe9\xe2\xb2\xf1\x44\x42\x65\x41\x9c\x26\x53\x18\xb6\xa2\x32\x42\x0e\x27\x24\x49\x8b\x1e\xc9\x29\x25\xdf\xcf\x8a\x62\x31\x1c\x0c\xce\xcf\xcf\xfb\xd3\x64\xd9\x4f\xb3\xe9\x20\xe6\x15\xe4\x83\x1f\xfa\x6b\x0f\x07\x92\xd9\xfe\x0d\xc8\x76\x9c\x86\x34\xeb\xff\x02\x2c\xf2\x6f\xc1\xb2\x98\xa5\x19\x79\x13\x64\xf4\x33\xf9\xdf\xb4\xa0\xe7\xd1\xf8\x57\xf2\xfd\x9c\x7d\xff\x8d\x16\xb3\x90\x9e\xf5\xc7\xe9\xfc\x07\x00\x0e\x83\x82\x92\xed\xcd\xad\x6f\x80\xe1\xd5\x6f\x05\x15\x02\x2c\x2a\x23\xe4\x31\xdf\xde\x21\x24\x05\x04\xcc\x76\x41\x1f\xe4\x61\x52\x98\x80\x51\x52\xf8\xe0\x8e\x1d\xc0\x65\x09\xe4\x8b\xcb\x24\x98\x47\x63\xc9\xc6\x51\x89\x90\xe7\x00\x8f\xf2\x95\xfc\x50\x64\x51\x32\x35\xcb\xe4\x90\xe6\x83\x7e\x4f\x03\x6b\x8c\x19\x0d\xbc\x63\x3c\x76\x41\x97\x65\xb0\x9e\x6e\xab\xfe\x02\x70\x94\x8b\x01\x1a\x9c\x39\x47\x55\xf4\x60\x87\x15\x7c\x5a\x5a\x88\xa3\xfc\xbe\xaa\x02\xb6\x11\x0e\x7c\x75\xa5\x4e\x8f\xa4\x04\x7a\x3f\xcb\x82\x4b\x0e\xce\x99\xb8\x25\x0a\x1c\x30\xfa\x44\x12\x80\x58\x49\x9c\x43\x84\xa4\x48\x09\x4d\x18\x0d\x0f\x42\xca\xfe\x53\xad\x30\x66\x1c\x70\x36\xc9\xb8\x92\x90\x6b\xcd\x8d\x99\xd7\x8d\x47\xcc\xc0\x72\x73\x67\x86\x24\xb2\x07\x35\xe4\x46\x17\x81\xf7\xcf\x69\x31\x4b\x43\x4f\xb7\xb8\x72\x3d\xcd\xe6\x84\x4b\x2e\xa9\x31\x23\x6b\x84\xaf\x41\x51\xfc\x93\x98\x19\x91\x45\xfe\x06\xbd\x27\x5f\x38\xf1\x5c\x2b\xb1\xfc\x6f\x1c\xf3\x39\xf9\x82\x2b\xbb\x86\x2c\x78\xab\x90\x93\x2f\xf0\xae\xe1\x9a\x88\xcf\x88\xf1\x06\x2e\x11\x31\x32\x84\xbe\xb0\x9d\x88\xb1\x7b\x40\x88\x81\x0c\xb4\x53\xe3\x2e\x39\x38\x92\x28\x62\xd8\xcc\x4d\xf1\x0e\x61\xad\x3f\x89\xe2\x82\x66\x1d\x54\xb6\x8b\x74\x10\x82\x8a\x0a\x21\x14\x48\x22\x00\x9d\x42\xf7\x64\xf3\x74\x97\xf3\xcf\x68\x42\x3a\xeb\xb8\x11\x5c\x07\x7f\xa0\xc1\x9f\x72\xb4\xa3\xe4\x2c\x88\xa3\x50\xd3\x00\xab\x71\x7d\x48\xda\x64\x83\xe0\xca\xd7\xb0\xac\x81\x6b\x36\x29\xb0\x84\xd2\xc8\x22\x0e\xa2\x84\xd3\x97\x35\x8d\x1c\xe0\x9d\xc8\x29\x9f\x45\x91\x7e\x34\xfa\x85\x8e\x8b\x6b\xab\x42\x39\xc9\xba\x1c\xaf\x36\xb4\xe0\xca\xa7\x0e\x75\xc3\x99\xb9\x1e\x2f\x6f\x09\x5c\x30\x69\xa8\x58\xde\x39\x61\xc0\xa7\x3d\x72\x02\xe0\xa7\xdd\x66\xa8\x89\xa3\x1c\x24\x20\xbe\xf8\xca\xb1\x93\x63\x34\x00\x0b\xe0\xd8\xf1\xa5\x2f\x74\x81\x32\xc4\x38\xcd\x36\xc2\x4d\xee\x2e\x7d\x81\x9d\xbc\x8c\xbe\x73\x49\xe0\x53\x5a\xe0\x15\x98\x0b\xce\x21\x48\x96\x15\x13\x7d\x63\x25\x8c\x1a\xfa\xf3\x60\xd1\x29\xe3\xb1\xa0\x95\xf3\xac\x11\x83\x77\xf2\x9a\x3b\xbc\xa7\x27\x50\xe4\x94\xb3\x67\xf9\xa5\x56\x11\xea\x8f\xd8\xa7\x8e\x26\x93\x9c\x16\x4e\xa7\x32\x1a\x2e\xc7\x14\xf5\x2b\x18\x8f\x7b\xa4\xa6\x73\x80\x9d\x22\x28\xa2\xf1\xbb\x20\x2b\x5e\xc3\x4b\x22\xab\xe6\xbe\x9d\xdf\xf1\xf4\x53\xd6\x95\x31\xa6\x44\xc3\x0f\x6e\x95\x6f\x82\x62\xd6\x9f\xc4\x69\x9a\x75\x3a\x4e\x8b\x1b\x64\x67\xab\x4b\x06\x64\x67\xbb\x4b\x1e\x92\x9d\x6d\x31\x68\x84\xbe\x60\x3c\x26\x1b\xa4\xa3\x36\x1d\x03\xeb\x25\x28\x24\xcf\xd0\xde\x45\xc8\xce\x36\x19\x1a\x09\x25\x9d\x95\xa8\xef\x91\x4d\x8c\xfd\x8c\xe6\xcb\xb8\x90\xd4\xc3\x67\xf0\xcd\x32\x2e\xa2\x9f\xa3\x62\xc6\xe7\x44\x52\xa0\xd1\xb7\x9e\xa2\xa3\x9e\x39\x83\xb2\x72\x31\x42\x5e\xbf\x79\xe2\xf3\x93\xbe\xd5\xaa\x6f\x0d\x34\xec\x01\x5a\x23\x6a\x78\xad\xd6\xae\x5e\x38\x34\x9e\x88\x11\x8b\xce\x8a\x5d\x21\xcd\x5e\x06\xe3\x59\xc7\x66\x4c\x11\xa6\x2d\xc6\xf5\x4b\xe7\x4b\xcf\xd5\x69\x17\x17\xe2\x08\x81\xae\x6c\xb8\xda\xce\x8e\xd9\x7d\xb9\x8e\x10\x11\xaa\xb5\xcb\xa8\x98\xc6\x13\x01\x62\xcf\x11\x74\xc0\xed\x92\xc4\x13\x7c\xd8\x93\x85\x9b\x30\x97\xe2\xc6\x1e\xa1\xe2\x19\x1e\x19\x90\x6d\x0d\x7a\x4d\x68\x9c\x53\x6b\x78\x83\x01\x09\xd3\xa4\x5d\x90\x20\x0c\x89\x28\x55\xa4\x66\x95\x7d\x12\x15\xed\x9c\x04\x71\x46\x83\xf0\x92\x8c\xd3\x65\x52\xd0\xb0\x04\x4b\x5f\x69\x9c\xd7\x7a\x11\x0e\x06\xe4\xe3\xd1\x8b\xa3\x21\x99\x44\xd3\x65\x46\x09\x3b\xb0\x25\x34\x67\x27\x40\x76\x4a\xbb\xcc\x4d\x66\xf5\x5b\x10\xc9\x1f\x67\x92\xcd\xc9\xa0\x18\x81\x12\x2b\x25\xcb\x5c\xa1\x35\xa3\x93\x00\xd4\x31\xe7\xb3\x34\xa6\xbc\x87\x51\x32\x5d\xaf\x61\x04\x15\x3c\xc0\xe6\xfc\x62\xd0\x3d\x92\x3a\x2b\xdf\x58\xe4\x72\x4e\x6a\x45\x7d\xcf\x16\xd7\x71\x55\x63\x88\x80\x78\xc3\xe4\x3c\xd0\x64\x9d\xd3\xc2\x99\x53\x4e\x56\x6f\x83\x39\xb5\xf7\x21\x9d\x83\xe5\x4c\xb7\xac\x67\xf3\xa9\xde\xcf\x74\xc5\x9e\x3a\x15\x5f\x14\x18\xd4\x52\xad\xfc\xab\x18\xb6\xac\x64\x91\xd1\xb3\x28\x5d\xe6\xaa\x43\xdb\xbb\x0c\x25\x51\x42\xa2\xa4\x70\x4a\xd4\xe1\x1f\xf5\xd7\xd7\x20\xfb\x9b\xa4\x19\x81\x47\xc2\x11\xd9\x23\x5b\xbb\x24\x22\xdf\xcb\x01\xc8\xf7\xc2\x24\xda\xd8\x28\x2b\xce\xfe\xac\x3e\x6f\xec\x91\x8d\x8e\xc4\x41\x44\x1e\x91\xad\x53\x26\xe1\x93\xab\x2b\xb2\xb9\x5b\x5a\x49\x05\x2b\x17\xf4\xb0\x41\x22\xf2\xb0\x6c\xe6\x36\xec\x5e\x30\xe1\xa0\x8c\xed\xcb\xbf\x6b\x27\xd5\x4c\xb9\xee\x76\xba\xd6\x14\x0e\x06\x64\x12\x65\x79\x41\x68\x4c\xe7\x34\x29\xd8\xf9\x8a\xa3\xa9\x47\xf2\xcf\xd1\x82\x44\xc5\x2a\x53\x6e\x60\x7f\xd3\x87\x7d\x86\xbf\xca\x19\x80\xa7\xf3\x61\x18\xb1\x46\x82\x58\x2d\x72\x81\x4f\x87\xff\xb8\xf8\xf6\xf3\x45\x4d\x3a\x25\x0c\xe2\x24\x22\x1b\x64\xeb\x54\xf2\x09\xb2\x41\x9c\x6e\x78\xd0\x5e\x8b\x60\x8b\xf9\x79\x20\xc5\x56\xe9\xa1\x7d\x4e\x15\x37\x66\x3d\x7f\x68\xa6\xc2\x84\x2d\x13\x53\xb7\x5c\xfc\x35\x94\x49\xca\x18\xd2\x66\x15\x43\x22\x8d\x68\xba\x96\xa3\x0c\x06\x64\x1c\xc4\xe3\x65\x1c\x14\x54\x0a\x3e\xec\xc8\x27\xfa\x42\xa2\x82\xce\x6f\xc1\x8e\x18\x2b\x3a\xf9\x13\x31\xa5\xae\x0d\x7b\xbd\xd2\xbe\x72\xcb\x09\xf9\xfd\x18\x0c\x66\x2e\x5f\x9d\xb7\x10\x47\x5b\x24\xfa\x51\xa3\x0d\x11\xba\x48\x71\x33\x99\x56\x68\x8c\x38\x64\x63\x8d\x91\x4c\x57\xb7\x9a\x4a\x25\xe2\xd7\x25\x95\xeb\x41\x50\xc3\x1e\xf1\x0f\xea\xf7\xe9\x88\x50\x31\xad\x23\xe2\xd0\x20\xdb\x34\x41\x4b\xa5\x92\xa8\x04\x21\x65\x3a\xa2\x72\x84\x88\x12\x70\xc2\x80\xd6\x34\x62\xaa\x35\x44\x78\x88\xbe\xd3\xb1\x81\x9b\xd5\x15\x44\xb2\x14\xa7\x62\x0c\xcf\x89\x38\xf7\x9e\xc2\xad\xe3\xfe\x1d\x6b\x94\xf8\x90\x3b\x30\x32\xb9\xbe\xb4\x5a\xc4\xd0\x8b\xc8\x1a\xb5\x86\xa9\x4a\xe5\xa0\x47\x55\xab\x67\xc0\x18\xe5\x1c\x88\x95\xb9\xeb\x91\x36\x51\x47\xa9\x93\xa8\x4f\x0e\x16\x5d\x2b\x65\x92\x83\x01\xc9\x97\x73\x7e\x43\xe7\xd9\xa5\x84\x88\xa8\xe0\x45\x75\x27\xd1\x29\xe3\x8a\xea\x0b\xb6\x24\x1f\xff\x91\xcd\x9b\x88\x90\xd2\xa6\x83\x82\xc1\x80\x64\x74\x9e\x9e\xc1\x35\x26\x19\x2f\xb3\x8c\xc9\xa7\x4a\x38\x4d\x21\x59\x74\x33\xca\xa1\xe7\x9e\xde\xe6\xab\x68\xfc\x24\x32\x1b\x6b\xfe\x8c\x91\x91\x47\x4e\xfd\x8d\x29\xed\x83\xb5\x0e\x4b\xae\x75\xbc\xa7\x56\xc9\xe3\x3c\x54\x56\x58\x57\x0e\x92\xac\xd8\x0e\x86\x2f\x49\xcc\xfb\x0b\xde\x5b\xd6\xd6\x58\xdc\x32\x61\x53\x0b\xe8\x7d\x87\xdb\xab\xda\x26\x18\xe2\x5a\xb4\xd3\xed\x79\xb3\x9f\xa7\x69\x5c\x96\xc7\x84\x90\x92\xac\xe3\x8a\x3c\x7c\xb9\x59\xda\x6c\x55\x26\xe7\xc2\x65\xb9\xef\x69\x50\xda\xe3\x63\x9e\xb9\xc6\x08\xc2\xb5\xdf\x00\xd4\x29\x9b\x0d\x69\x38\x3b\x7c\xdc\x6b\xf1\xbb\xdf\xd6\xf0\x1b\xf8\xc9\xfa\xd6\x1a\x3e\x61\xbf\xf1\x75\x6c\x6b\xf8\xb4\xe7\xb3\xf5\x88\x92\xa2\x35\xdc\xda\x64\x3f\x33\x1a\xc4\xad\xe1\xd6\x36\xfb\xcd\x6f\x65\x5b\xc3\xad\x1d\xf6\xb5\xe4\x50\xd0\xc0\x52\x80\x3d\xb9\x3e\xed\x3d\xfd\x2d\xed\xa2\x6a\xae\xa1\x6f\x66\x4d\x84\x2b\x59\xc5\xa8\xc8\x2c\x67\xdb\x16\xe1\xdc\x15\x4d\x8c\xfc\x45\x2b\x2c\x8d\xcc\x9e\x34\xa9\xeb\x16\x76\x47\x25\xc6\x46\x8d\x1a\x45\x57\xe2\xde\xe9\x92\x6c\x27\x5b\xd2\x06\x26\x4c\xd6\xb0\xeb\x2d\x99\xbe\xbb\xb7\x64\xba\xb7\x64\xfa\x6f\xb1\x64\xd2\x0b\xe1\xae\xcc\x99\x9e\x47\xd3\xb7\xcb\xf9\x08\x58\xa1\xe2\xce\xa3\x68\x9a\x40\x62\xff\x17\xc5\xc9\x97\x45\x14\x9b\xf6\x35\xfd\x01\xa4\xf1\x7f\x25\xd8\xd8\x0b\x32\x4e\x93\x49\xe4\x18\x03\xc9\x93\x19\xda\x15\xe0\xec\x02\xdb\x82\x1c\x38\xe7\xd5\x39\x01\x7e\x4f\xe0\xc1\x06\x3b\x67\x31\xbe\xa5\xad\x64\x61\x29\xb0\xb9\x01\xe5\xcc\x43\x86\x63\x0e\x19\xe5\x24\xa1\xd3\xa0\x88\xce\x68\x4f\x72\x22\xb8\x38\x2a\xce\xd3\x76\x4e\xc6\xe9\x7c\x21\xa5\x55\x28\xc5\xe6\x56\x95\x9c\xc4\x69\x50\x44\xc9\x94\x2c\xd2\x28\x29\x7a\xfc\x3a\x94\x91\x7d\x98\x9e\x27\xd6\x99\xce\x54\x93\xb8\xc7\xb7\x2b\x8e\xe5\x2b\x85\xef\x6b\x39\x16\xb6\x94\x12\x4a\x43\x38\x45\x8f\xf4\x1c\x87\x7e\x63\x18\x40\xda\xb5\xb2\xf3\x31\xdb\x35\x18\x30\xd4\x2f\xb9\xb0\x6a\xb7\xcf\xe7\xa2\x33\xee\xbf\xfc\xf8\xea\xd3\xf3\xc3\x9f\xde\x1e\xbf\x79\xfe\xf2\xfd\xa7\xf7\x47\xc7\x6f\x5f\x1c\xbe\xfd\xe9\xd3\x9b\xa3\x17\x2f\xd1\x19\x4e\x69\xe2\x60\x26\xfb\x8b\x20\x7c\x4d\x27\x45\x87\x7f\x15\xe9\xc7\xf3\x34\x3f\x50\x58\x14\x6d\xf6\x8b\x54\x88\x4b\x5b\x4f\xba\x3d\xf2\xe4\xb1\x79\xc3\x83\x77\x4b\x18\x4e\x87\x37\x62\x1a\x60\x98\x13\x2f\x0f\xbf\x25\x38\x7f\xae\xce\xc6\xe6\xa1\x79\x55\x1c\xba\x52\x87\x81\x45\x0f\x42\x8a\xf4\x15\xbd\x90\xe3\xce\x97\xa3\xbc\xc8\x3a\xdb\x08\x7f\xb1\x75\xb5\xcf\x8b\x4b\x2d\xf7\x06\x79\xb2\xd3\x25\x03\x8c\x22\x1b\xdd\xef\xa3\xe9\xac\x10\xc5\x7a\x24\x26\x0f\xbf\x32\x3e\xc5\x0e\x7c\xa7\x68\x2d\x95\xe9\x6e\x8d\x5d\x79\x3c\x33\xd1\xaa\xb4\x73\xbf\xdb\x0c\x58\x6a\x53\xde\x58\xb7\xcf\xd7\xfc\x06\xa9\x9f\xa0\x3a\x4e\xc7\x25\xf9\xf2\x15\xf1\x41\xe6\xdf\x76\xee\x94\x71\x67\xf3\x59\x9b\x64\xe9\xfc\xb8\x98\x3c\xbd\x9f\x38\xcf\xc4\x89\x77\x46\x65\x8c\x4c\xbc\x42\x92\x93\xc6\xbe\x69\x90\xac\xce\xc8\xec\x27\x47\xe5\x73\xd6\xde\xbc\xdd\x5f\x9b\x6c\x88\xea\xc9\x33\x42\xda\x5b\x6d\x32\x24\xed\xcd\xf6\xed\x79\x54\x1d\x26\xd9\x89\x95\x95\xfa\x07\x83\xcb\x09\x13\x8c\xe7\xcb\xb8\x88\xb8\x50\x39\xba\x24\xdb\xff\x99\x33\xf1\x5c\xd9\xd0\x05\xac\xe6\x82\x4e\x69\x56\xb1\x95\xbc\x17\xb5\xd6\xed\xdf\xab\xce\x88\xb0\x65\x2e\x99\x11\x81\x26\x8b\xfa\x18\xd6\x54\x8b\x6a\x73\x8d\xe6\x34\xb7\xb2\xb6\xbb\xfd\x45\x7a\xde\xd9\xda\x7e\xda\xed\x9a\x28\x3d\x98\xd1\xf1\x67\x12\x4d\x0c\x9c\x22\xb1\xc8\x42\x44\x1e\x4d\x13\x1a\x1e\xe6\x6f\x75\xb6\xa3\x88\x56\x75\xcc\xe8\x85\xe8\xb1\x89\x0c\x49\xb4\x70\xe8\x83\xb6\x0b\x53\x12\x4b\xd9\x91\xe5\x3c\x62\x62\x78\x10\xe7\xda\x6a\xd9\x6e\xbd\x16\x5f\x3e\x0c\x49\x76\xb3\xd9\x23\x5b\xdd\x1e\xd9\x7a\x82\xe4\x91\xed\xae\x91\xdb\x25\x7b\x7b\x7b\x8c\x64\xbd\x54\x98\x31\xf6\xf1\x28\x88\xa1\x53\x84\xab\x0e\xf4\x85\x07\x17\x35\x5d\x22\xe2\x8a\x04\x5b\x08\x34\xc8\xc3\xb1\x83\x65\x38\xd3\x82\x61\x45\xbb\x4a\x38\x84\x65\x11\x4d\x09\x97\xd3\x2d\x7a\x53\x5d\x30\xf0\x67\x18\xc5\x32\x60\x3e\x8f\x7b\xbc\x37\x48\x97\xd9\xe9\x92\xab\x2b\xd2\xda\x6c\x09\x1d\xf1\x60\x40\xc6\x8a\x8a\x98\xf0\x2c\x27\x52\xb5\xce\x81\x60\x96\x95\x98\xed\x4a\xd8\xf2\xf2\xd6\x9a\x64\x31\xb1\x1e\xfd\xa3\x67\x72\xf9\x7c\xce\xa3\x64\x69\x2f\x81\xf6\xe4\x96\x7f\x6d\xa8\x5b\x56\xbe\xa5\xee\xc6\x1a\x74\xe8\x06\xe4\xb3\xac\xa6\x9f\xe3\x4a\x02\xf2\x91\x0e\x5d\x89\x76\x44\xf3\x2e\xd5\x1c\xdf\x05\xd9\x7c\x1d\x94\x09\x7e\x5f\x86\x32\x87\x71\xd7\xa2\x0c\x30\x86\xe4\x61\x13\x45\xa2\x39\x17\x45\x0e\x27\xf7\x99\x9b\x5b\x2b\x51\xc0\xf4\xc3\xe8\x2c\x0a\x69\xf8\xfc\xb2\x82\x81\xdf\x84\x9a\x6a\x70\x73\x7c\xd7\xc8\x59\x96\x62\xe7\x78\x65\xf4\x1c\xdf\x06\x3f\xee\x15\x2c\xaf\x5a\xa1\xa8\x4c\xdc\xd2\xaf\xa5\x1b\xe3\x45\x6e\x6b\xe6\x5c\x94\xe2\x48\x34\xed\xa2\xc8\x11\xce\x7c\x18\xf2\x2c\x2f\xd8\xac\x6e\x29\xad\x6d\xb5\xc9\x33\xbe\x2f\x0b\xb7\x18\xab\x61\xb3\xf4\xd8\x88\x1e\xe5\x56\x6c\x7c\x31\x9d\x68\xc4\x31\xf1\xa1\xe2\x60\xe3\xc8\x1d\x49\x30\xa7\xfc\x75\x0f\xfb\x65\xc9\x5f\x02\x86\xd5\xa9\x6a\xf0\x60\xde\x39\x81\x42\x1b\x3d\x82\x35\xe5\xac\x90\x78\x5f\x4d\xf6\x48\xd9\x33\xdd\x87\xdd\x01\x3a\xcf\xe4\xd1\xaf\x82\x27\xe6\x70\x45\x25\xca\x9f\x6c\x9d\x9a\x72\x70\x7b\xf3\x82\xc9\xcb\xee\xe4\xf6\xf3\x38\x1a\x53\x26\x96\x6c\x93\x87\x50\xdd\x8a\x74\x5e\x33\x33\xf8\x08\x7e\x67\x13\xb4\x2a\xfa\x4b\xf5\x00\xce\x26\xa3\xce\x87\x16\x1f\xe0\x88\x13\x37\x60\x36\xe6\x9e\x3c\xee\x8a\x3d\xbc\x48\x05\x7c\x97\x3c\x94\x47\x4a\xdf\x0c\x58\x15\x71\xd1\xf0\xc9\xe3\x9e\x68\x7f\xb5\x29\xa8\x38\x92\xf3\xe1\x7b\xce\xe4\x77\x8a\xfd\x20\x1f\x47\x51\x15\xfe\x3d\x67\xf9\xdf\x10\xf3\x52\xa5\x03\xaa\x81\x66\xf8\x5f\x6d\x02\xb4\x6f\x9a\xb2\x19\xd8\xd7\xde\x6b\x4a\xa6\xa0\x94\xb7\x97\xa0\x5c\x55\xe8\x62\xdb\xe7\xbd\x66\x05\x69\xca\xc0\x5d\x6b\xf3\xa2\x45\x36\x88\x38\xe0\x00\xda\xf9\x6f\x65\x53\xf0\x78\xb3\x47\x70\x52\x99\xc3\x80\x2f\xd2\xee\x03\x1d\x34\x87\xd6\x77\xcf\x86\x81\x15\x3b\x74\x52\x1c\x38\xbc\xc0\x87\x65\x19\x4e\x29\x8e\xcc\xa1\x9b\xe4\xf6\x23\x4d\xe3\xa1\x9d\xe0\x40\x31\x09\x64\x68\x27\x60\x28\x25\x96\x0d\xed\x04\x17\xea\xd8\x01\x3b\xf6\xc2\xe1\x46\x75\x8a\xa7\x3e\x17\xf0\xd8\x0f\x89\x07\xab\x53\x3c\x70\x18\xdb\x28\xc9\x85\xf4\x4d\x8f\x9b\xe3\x96\x33\x27\x08\xa7\xb9\xb0\x82\xea\x87\xde\x75\x77\x2d\xef\x74\xcd\x9b\xa1\xd6\x70\xeb\x69\xaf\x65\xde\x28\xb5\x86\xdb\x60\xbe\x00\x0b\xa3\x35\xdc\xda\xea\xb5\xf0\xbd\x54\x6b\x68\x7e\x5e\x9f\xf6\xb6\x36\x7f\x67\x7f\x2e\x87\xdc\x30\xbe\xc2\x01\x51\x94\x14\x65\xfe\x87\xc4\xd5\x55\x94\x14\xdc\x35\x0b\xfb\xf1\x58\xfd\x3a\xd5\x89\x3b\xe8\xb7\xe5\xb9\x25\x4a\x0a\xee\xb7\x25\x4a\x8a\x27\x8f\x15\xd8\x53\x5d\xd1\xf6\x37\x4f\x4a\xea\x62\xf0\x35\x7e\x8c\xec\xa3\xe1\x57\x74\xc5\x05\xe0\xb6\x0d\xc2\x61\x52\xac\x68\x76\x61\x94\xa8\xb0\xb6\x80\xe6\x2a\x4a\xde\xc8\xb6\x22\x4a\x0a\x29\x2a\x3e\xbb\x91\x3f\x17\xde\xab\x7a\x1b\x88\xad\x46\x21\xec\xee\x8d\x20\xee\x8d\x20\xfe\xbc\x46\x10\x44\x5b\x41\x70\x51\xe9\x8e\x0c\x20\x1a\xd8\x35\xd8\xac\x9e\xdb\x2d\xa4\x60\x8d\xae\xdd\x76\xf4\x3d\x12\xea\xf9\x8c\x26\xea\xb1\x62\x8f\x1b\x7e\x33\x01\x5c\x79\x6f\x90\x92\xe5\xc0\x6b\x18\x61\xe9\xbe\xed\xb7\x89\xc0\x49\xa5\xfc\xc8\xff\xbf\xba\x22\xed\x36\xe2\xb3\xa9\x7c\xb6\xc0\x7f\xec\xa2\x77\x86\x51\x22\x5a\x6f\xec\xee\x63\x4a\x0b\x6c\xef\x0b\xd6\xe3\xed\x5c\xbe\x02\x05\x5e\xc2\x2a\x31\x4c\xdd\xb5\x7c\xcf\x2d\x5d\x4d\x29\x5a\xaa\x99\x74\xad\xb8\x32\xd2\x91\x7d\xec\x1a\xd6\xec\x80\x1e\x6c\xcd\x6e\x37\x52\x69\x87\x06\x26\xfe\xc6\xb1\x03\xdf\x3d\x36\x46\xc6\x38\xa3\x8c\x98\xe4\x7a\x30\x7d\xb2\x70\x72\x0f\xa3\xc9\x84\x82\x35\x32\x47\xb9\x75\x2e\x39\x57\x8f\x42\xf0\x71\x44\xa2\x44\xcc\x92\x34\x5c\x4e\xbc\x87\x10\xf3\xe8\xc2\xb6\x43\x5f\x3f\x82\x05\xe7\x30\xaa\x17\xe5\xa8\x3c\xf7\x3f\x98\x35\xe9\xae\xf4\x4a\x4f\x13\xa4\x22\xd5\x55\x30\x9a\xce\x47\x51\xe2\xba\xb7\x29\xd2\x29\x65\xdc\x9d\xd5\x40\xa7\x7d\xbe\xa8\x82\xc5\x82\x26\xb0\x96\x82\x84\x3f\x80\xb0\xb0\x2b\x6a\xab\xbb\x84\x11\x8c\x69\x16\x8d\x19\x7b\x92\xbd\xaa\x2f\x2c\x6e\x4f\xd3\x89\x80\x85\x7d\xa8\x12\xb5\x72\x78\x75\x7a\xbf\x2a\xb4\x2a\xbd\x05\xbf\x32\xd9\x25\xf5\xd8\x1d\x07\x71\x2c\xf0\x2b\xef\x70\xf8\x88\x66\x81\x5e\xba\x79\xf4\xab\xf0\x2c\x08\x77\x75\xb3\x20\xef\xb1\xff\x25\xa1\x81\xef\x5f\xcf\xa5\x1d\xc6\xb7\x32\x04\xf5\xeb\x4c\x2b\x51\xe3\x77\xcd\xe4\x5b\xb8\x62\x55\xac\xef\xed\x81\x74\x31\x89\x12\xeb\xa1\x52\x1d\x12\xb4\xcb\x22\x51\x95\xb8\x5e\xb6\x95\x06\x3c\x77\x3f\x7f\x5e\x7e\xf4\xe7\x1a\x5f\x57\x43\xd3\x60\x99\x19\xb5\x57\x0d\x7a\x1d\x46\xad\xdf\xff\x77\xc9\x33\xd2\x6e\x93\x61\x33\x6b\x2c\x84\x32\xaf\x4d\xd6\x0a\x78\x63\xbc\x9f\x2b\x27\x94\xcc\xe8\x7b\xeb\xa5\xf5\x17\x7e\x9c\xc9\xbd\x47\x5e\x09\x07\x98\xe1\x07\x73\x4c\x64\x40\xe2\x95\x58\xd4\x8d\x79\x51\x08\x4e\x95\x6c\xfc\xf9\x9c\x33\xa9\xe5\xb5\x4b\xf8\x95\x1f\x29\xa1\x3b\x31\x61\x9d\xd5\x51\x67\x6c\x6b\x25\xb8\x43\x9b\x92\x1f\x79\x32\x21\x90\x37\xf0\x0d\xb0\x48\xe7\x8b\xe2\x12\xab\x04\x1b\x6c\xa2\xb5\xab\xd0\xa4\x47\xc4\x9e\x86\x20\x7d\xac\x80\x1b\xe9\x6e\xaa\xd4\xd1\x94\x17\x13\x95\x03\x11\x55\xd6\x8d\xc1\xb8\x58\xd9\xf0\x88\x05\x37\x19\x87\x7e\x89\x57\xee\x1c\xea\x75\x94\x17\xce\xb3\xbf\x13\x63\x34\xa7\x1e\x8f\x50\x95\xa3\xd7\x35\xbb\xdb\x8b\x7a\x14\x24\xaf\xe9\x97\x8b\x90\x9b\xb5\x8a\x47\x70\x4a\x15\x59\xa4\x05\x7a\xe8\xca\x0b\x4b\xe1\x88\x3b\x1d\x22\xc6\xc3\x3e\xf5\x7e\x50\x80\x9a\x6f\x8a\x8c\xbd\x4d\xad\x47\xbe\x7d\x95\x2c\x48\xfb\xf6\xcb\xf6\x14\x62\x36\x4f\xf6\x70\x8f\x35\x2c\x1e\xc6\xc6\x9e\xab\xe8\x17\x4f\xb5\xdc\xe7\x59\x1c\x52\x8b\x40\x9d\x14\x3f\xb9\x55\x4f\xe6\x06\x03\x39\xdd\xf4\x8c\x66\x97\xc5\x0c\x1c\x91\xa0\x7a\x30\x76\x5c\xaf\x53\xd2\x1c\xcd\xc1\x8f\xf1\x4c\xd7\x7f\x43\xa1\x1c\x2f\xdd\x69\x13\xae\xd2\xf9\xba\x47\xda\x6d\xa9\x7c\xaf\x50\x52\xbc\xe3\xb3\x64\xe9\xf4\x94\xfa\xee\xfa\xb4\xb7\xd5\x28\xd0\xde\x57\xd4\xc9\xc1\x6d\x74\xb5\x52\x2e\x63\x20\x25\x5a\x39\x69\x63\xc6\xfe\xe7\xaa\x32\xf8\xf5\x58\xff\x3c\x45\xc9\x3b\xf8\xc3\xd2\xcd\xb1\x34\xae\x9c\x63\xbf\xa4\x76\x8e\xfd\x7e\x8a\xaa\x43\xfa\x39\xa7\xc6\x06\x1a\x3a\xe7\xee\x7d\x15\x15\x1d\x2b\xbc\x8a\x8e\x8e\xc3\xdb\x4a\x3a\x96\xba\xa2\x96\xce\x2c\x52\xa1\xa6\xe3\x2d\x56\x95\xbd\x89\xa2\x8e\xe1\xb6\x44\x51\xd7\xcc\x4b\xbe\xe8\x56\x03\x45\x5d\xa3\x50\x5e\x5f\xeb\x65\x9d\xe7\xf6\x6f\x15\xf2\xe0\xc5\x57\x21\x10\x59\xc2\x26\x11\x9e\xbe\x22\x91\xd8\x85\x2a\xc8\x44\xb6\x5b\x5d\xfe\x46\x3a\x5d\x2e\x49\x35\x79\x30\xe7\x69\xef\x6e\x9f\xca\xa9\x51\x36\xa0\xbb\xbb\x0f\x3d\x52\xf9\x78\xc7\xc3\x87\x91\x7f\xdb\x28\x6f\xee\xd8\x76\x4c\xb3\x22\x88\x12\xbf\x73\x5b\x07\x91\xfc\x36\xa9\x86\xa8\x39\x50\xdf\x4c\xaf\x26\x6b\x51\xc4\xca\xa8\x75\x05\x51\xd0\x6c\xce\x8e\xfc\xd1\x04\x6a\x36\xfb\x1d\x0a\x97\xb5\x64\x1a\x9d\xd1\x44\x9a\xb4\x98\x47\xea\x32\x5f\xb9\x96\xfd\x0b\x3f\x66\x6b\x73\x5b\xc0\x32\xaf\xdc\x69\xd7\x6f\x7c\x8b\x21\x9a\x2f\x11\xee\x99\xb6\x55\x78\x85\xe3\xf4\x8c\x66\xd9\x79\x16\x15\x05\x05\x73\x2f\xde\xab\x16\xd9\x80\xde\x37\xc6\xdd\x39\x68\xd9\x73\xfc\x8a\x1f\xac\x20\xf4\x51\x34\x4a\x04\x0a\x0b\xd7\xe9\xb0\xfd\xd0\xbe\x11\x32\x5d\xad\xa4\xd5\x9c\xd6\xda\x96\xe0\xcd\xe3\x3f\xc0\x8f\xc1\xc1\x00\x54\xe1\xc1\x9c\xad\x0a\x70\x79\x28\xb4\x59\x6c\xbc\x8c\x13\x50\x7e\xc7\x10\x47\x9f\x29\x09\x48\x1e\x25\xd3\x98\x2a\x27\x5c\x00\xd9\x37\xec\xa1\x81\x82\xb9\x8f\x19\xee\x93\x83\xb7\x76\x75\x45\x4e\xda\x27\x5b\xa7\xed\xd3\xae\x12\x06\x6b\x7c\x00\x88\xee\x99\x78\x67\x5f\xd8\xaf\x61\x89\xe8\xce\x6d\xa0\x38\x2a\xc0\x56\x61\xab\x47\x1e\x81\x31\xf6\x26\xf4\x65\x0b\x7b\xa1\xd1\x1d\x72\x04\x59\xe9\xa5\xa1\x27\xfd\x3a\x94\x9d\x16\xa4\x37\x87\x87\x12\x50\x37\x30\x18\x90\x20\x8e\xc9\x28\xc8\xa3\x31\x77\x7e\x00\x2f\x05\x76\xb6\x85\x02\x27\x4e\xd9\xc9\x58\xf6\xa6\x47\x76\xb6\xeb\x8c\x4e\xcc\x85\x2d\x38\x9a\x3c\x81\x4b\x5d\x24\xa1\x53\x10\x20\x21\x22\xd4\xc9\x69\x8b\xec\xfd\x00\xeb\x53\xa7\x3d\xe6\x89\x95\xca\xb4\x7d\x59\xdb\xaa\x1c\x60\x46\x4b\x7b\x56\xb1\xda\x71\xab\xa5\x34\xab\x7d\x7e\x19\xde\x60\x1c\xa2\xdb\xb5\xb6\x51\x54\xe4\xc1\x03\x82\xbf\x4f\xd0\x6f\xe4\xff\xed\x54\xee\xba\x2a\x2c\xc6\x60\x7a\xa3\xb9\x11\xcb\xb7\x6a\x6a\xe4\x2c\x98\x73\x23\x26\xcc\x9c\x1a\xe4\x6e\xed\x96\x33\x63\xf5\xab\x62\x62\x50\x9b\x5f\x7b\x5e\xee\x72\x62\x4c\xbf\x27\x9a\x91\xa2\x99\x80\xb3\x51\x0b\x6c\x11\xb6\x39\xd2\xf9\x21\xa9\x25\x8c\x15\xb6\xc4\x54\x6c\x3d\x56\x80\xdb\xa7\x27\x3b\x02\x54\xa6\x71\x10\x05\xb1\x75\x6a\x25\xe8\x6f\x77\x77\x00\xac\xde\x60\x7b\xc0\x63\x11\x43\xac\xdf\x13\x50\x63\x77\x34\x91\xd1\x84\x74\x50\x16\xe2\x90\x36\x3f\xbe\xe1\xc4\x02\xc3\xf6\xbd\x86\xd8\xaa\x98\x72\xb1\x49\xc8\x53\xb5\x6f\x9e\x61\xde\x7c\x53\xdd\x52\xc1\xf7\x9c\x09\x17\x9f\x2d\x63\xde\x8d\x8a\x4e\xcc\xca\xf1\x74\x6b\xd7\x6b\x8d\xe6\x59\x65\xf0\xa1\x88\xfc\xd2\xf9\x35\x5c\x28\x96\xee\xf6\xc2\x55\x51\x1c\xe4\x05\x39\x39\x65\xc2\x04\xaf\xf7\x46\xd3\xbe\xee\x9f\x77\x35\x07\x20\x67\x11\xc7\xc1\x12\x1c\x68\xf4\x33\x28\xf8\x54\x34\xd0\x84\x48\x2a\x8c\x63\xd1\x11\x46\x71\x60\xfb\xa6\x89\x8c\x2e\x49\x48\x27\xc1\x32\x06\x45\x68\xbe\x64\x72\xaa\xda\x98\x5b\xc2\x47\x4d\x4f\xc4\x78\xb4\x67\xd1\x38\x46\xdd\x80\x01\xeb\x1d\x71\x45\x51\xb8\xe1\xe9\xad\xd4\xa8\x5e\x3a\x6a\x97\x3a\x62\xb4\x44\x72\x7b\x8d\x00\xc5\x0b\x52\x3e\x69\x31\x8a\xef\x91\x16\x5b\x04\xec\xbf\xd3\xd6\xa9\xa6\x76\x01\x81\xd2\xa0\x50\xb2\x8c\xed\x67\x0f\x68\x36\x1b\xa1\xcd\xf6\x2e\x67\xf5\xb7\x66\x21\xb8\x1e\xaa\x9c\x95\xc0\xf7\x06\xe1\x29\x8f\xcf\x7a\x0e\x37\xbc\x6c\x38\xc6\x78\xd9\xbf\xb0\xea\x2d\x22\x16\xdc\xaa\xf3\xef\x13\x7e\x1a\xff\xf7\x69\xb7\x5e\x44\x10\xca\x5b\xe5\xea\xa1\xfc\xde\xc1\x8a\x61\x21\xa1\x9b\xb3\x0e\xf9\xf0\xd4\xbd\xcb\xb2\x70\xe6\xb9\xb4\x10\xf7\xe8\xf6\xc6\xe0\x75\x46\x6d\xde\xca\x08\x3f\xa8\xd2\x03\xaa\xcd\x16\x6a\x5c\xc1\x2a\xfb\x6f\x6c\x4c\xbc\x4b\x4a\xff\xfc\x5e\x51\x5d\xa7\xb2\x34\x9e\x60\x67\xb2\x82\x95\x39\x85\xd4\xb3\xe4\x93\x53\x9f\x07\xf1\xfe\x62\x99\xcf\x3a\x8e\x5b\x52\xf9\x4c\x5b\xfa\x18\x75\x6b\x66\x63\x71\x1d\xae\x9f\xf9\xbc\x7f\xe2\x96\x90\x13\xcf\xce\x59\x8f\x60\xe7\xb2\x96\x6f\xd2\x5b\x79\xf4\x15\x13\x88\x3d\xf9\xde\x7a\xfe\xa0\xeb\x8e\xd4\x21\x10\xff\xdb\xcf\x9f\xcf\x1d\x6b\x8d\x1b\xd6\xd2\x89\x60\xb3\x09\x7e\x52\x2b\xe6\x63\xe5\xd9\x58\x73\xee\x08\x2d\xdd\x91\xb1\x24\x91\x3b\xdb\x26\x0e\x41\xf9\xfd\xe8\x24\x4b\xe7\x5e\x73\x03\x0e\xe5\xe3\x2d\x23\xfb\xc1\x8e\x65\x20\x64\x58\x06\xad\xf0\x60\x4a\x32\x35\xde\x72\x03\x16\x25\x06\x82\x59\x94\xe1\x4c\xb3\x86\x55\x7d\x15\x5e\x05\x7b\x13\xbe\xb1\xe4\x82\xae\x78\xe2\x03\xdd\x93\x82\x8e\x40\xd7\x43\xb2\x0d\xc6\x0f\x5d\xe9\xce\x59\x20\xaf\x6c\x11\x55\xd6\x89\x9b\x77\x2a\xf6\xad\x28\x28\xf0\xa1\xe0\x77\xec\xb8\xf4\x06\xd9\xe1\x1e\xef\xf9\x6e\x9b\x33\x90\x9c\x04\x93\x82\x66\x6a\x91\xe0\xfe\xde\x68\xad\xfa\xcb\xf8\x1c\x77\x6b\xce\x51\xe2\xb0\x9b\x54\x62\x4f\xc4\x8d\x79\x5b\x56\x3f\x76\xea\x51\xea\x43\xda\x0e\x78\x53\xc9\x68\x1a\x72\x1a\xf2\xb0\xba\x6f\x0c\x76\x63\xaf\x1a\xa6\x11\xa3\x32\xbd\xcd\xa2\x69\xdf\x20\xd1\xdd\x72\xad\x3f\xc4\x1e\x82\xff\x1a\x52\xbf\x34\x48\x6d\xf8\xf7\x87\x22\xfe\x7b\xda\x47\x7f\xbf\x0b\xed\x13\x2f\xe9\xe3\xe8\x8c\x37\x25\x7d\x3b\x86\xd8\x8a\x9b\x8a\x43\xac\x76\xfd\xcd\x76\x16\xb3\x17\xab\xd4\x2f\xe6\xcf\x4b\x6f\xb1\x43\x5f\xfe\xf5\x57\xbe\x84\x17\xe2\xd6\xcf\x35\x52\xad\xeb\x7e\x87\x6c\x91\x0d\xb3\x77\x5d\xee\x90\x89\x87\x11\xf3\x4c\x3d\x77\x3f\x6c\x5d\xba\x19\x0f\xb6\x2b\x9c\xd9\x1b\xb8\xb6\x2c\xbe\x0c\x2e\xb6\xb6\xe2\xd8\xf0\x9c\xab\x95\xb5\xdd\x35\xd5\xaa\xde\x8b\x44\xab\xeb\xb5\x17\xbc\xe5\x57\xbb\xea\x4d\xdc\xf5\x69\x6f\xeb\xf7\x8e\xbb\x7f\x5c\xff\xec\x6d\x59\xf1\xee\x4d\x78\x22\x81\xff\xb9\xad\xcb\x52\x3f\x7d\x5b\xa2\xb7\x6f\x4b\xfc\x60\x6d\xe9\x79\xfd\xb6\x54\xcf\xdf\x96\xe8\xfd\xdb\x12\x3d\x80\x5b\x9a\x2f\xe0\x9c\x1a\x1b\x58\xd8\x38\xfe\x51\xbe\xe2\x23\xb8\x63\xef\x2b\xb8\xe3\xd5\x9f\xc1\x1d\x37\x7d\x07\x77\xec\x3e\x84\x3b\xbe\x83\x97\x70\xcb\x5b\x3f\x85\x3b\x6e\xfc\x16\xee\xf7\x0e\xea\x7f\xdc\xc0\xe2\x6c\x59\x65\x72\x26\x5d\xab\xf0\x1f\x82\x38\x91\xd5\xd9\x12\x9b\x9d\x2d\x0d\x2b\xb1\xa5\xcf\xf0\x6c\xa9\x2d\xcf\x96\xd8\xf4\x6c\x89\x6d\xcf\x96\x96\xf1\x99\xa7\xde\x26\x8b\xe3\x37\xb5\x3f\x3b\xf6\x1b\xa0\x1d\xdf\xc0\x02\xed\xb8\xb1\x09\xda\xb1\xc7\x06\xcd\x2e\x7d\xb3\x35\x52\x61\x86\xd6\x74\x91\x34\x37\x44\xfb\xb6\xc9\x2a\x69\x2f\x73\x0a\x8a\xd9\x71\xd1\xe6\xd1\xf8\xa6\x29\xa1\xc9\x19\x09\x53\x0a\xd6\x0a\xf0\x3a\x30\x48\x42\x70\x60\x4b\xfe\xf9\xe6\xf5\xab\xa2\x58\xbc\xa7\xff\x6f\x49\xf3\x62\x0d\x04\xb3\xcb\x05\x4d\x27\x56\x0e\xf7\x63\xa3\xde\x6f\xb4\x25\x5e\x44\xc3\x7d\x1b\x9a\x7c\xb9\xde\x5d\x33\x22\x45\x96\x42\x9a\x09\x20\xa9\xff\x92\xcf\xd8\xee\x13\x4d\x93\x34\xa3\xc3\x38\x4a\xe8\xda\x35\xb7\x58\x65\x78\x68\xe4\xea\xfe\xfe\xe5\xec\xfd\xcb\xd9\x3f\xf1\xcb\x59\xfe\x6a\x56\xd8\xb0\x19\xcf\x66\xf9\x86\x43\x6e\xf6\x7a\x56\xec\x7d\xc7\x45\x14\x43\x9d\x5c\x9f\x09\x6b\x87\x3f\x4f\x72\xc0\xa2\xe2\x52\xb1\x44\x5d\x64\x1c\x07\x79\x4e\x4e\xa0\xc8\xa9\xe8\x26\xcf\xd0\x4c\x98\x57\xb5\x36\x80\x7b\x23\x58\xa5\x42\xb9\xca\x38\x08\xa9\xf0\x64\xdd\xdc\xc9\x39\x40\xb2\x9a\x8e\xdf\x1e\x7e\xfc\xc0\xce\xd6\x30\x09\xed\x73\x1a\xb5\x39\x69\xb6\x3f\xa3\xdf\x6f\xd0\xef\x9f\xd0\xef\xfc\xd7\x60\x94\xca\x8f\x49\x94\x24\xf4\x52\x7d\xd1\x79\x91\xc2\x53\x46\x99\xb2\x88\xc6\x66\x42\x12\x24\x66\xc2\x3c\x1a\x67\x76\x4a\x1c\x47\x4e\x21\x03\xde\x00\x95\x1f\x46\x91\x69\x16\x24\xa1\x1a\x8a\x91\xf5\x93\xf1\xf5\xd1\xf8\x7a\x67\x7c\xbd\x34\xbe\xfe\xcf\xf8\xfa\x97\xf1\xf5\xd6\xf8\x7a\x61\x7c\xfd\xc3\xf8\x3a\xe6\x5f\x6b\xa7\xe5\xae\x6b\xd8\x1c\xbd\xdb\x7f\xc1\xa6\x78\x48\x76\xb6\x7b\x2a\xf1\xc3\xe1\x4f\x6f\xf7\x3f\x1e\xbf\x7f\xf9\xe9\xf5\xcb\xb7\x3f\x7d\x7c\x35\x24\x8f\x75\x26\xcc\xea\x50\xff\xd4\x39\x25\x94\x33\x24\x5f\x88\x95\xa0\x9d\xa8\x43\xc6\xa7\x17\x47\x3f\xbf\x25\xd7\xba\xa6\x77\x47\xaf\x5f\x33\xe8\x8f\x87\x6f\x5e\x1e\x1d\x7f\x1c\x92\xad\xcd\xcd\xcd\x81\xe8\xa1\xb8\xf1\x7e\x1e\xa7\xe3\xcf\x43\xd2\x66\xac\x33\x2f\xda\x46\xde\xfe\x18\xe2\x18\x0f\xf5\xdb\x46\xfe\x00\x83\xed\xe7\x75\xbe\x4f\xee\xe3\x60\xdc\x6f\x64\x7f\xf5\x8d\x6c\x4d\xb9\x80\xc8\x67\xc1\xce\x5d\x79\x80\x38\xc8\x2e\x17\x45\xfa\xf7\x0f\x78\x73\x18\x43\xda\x23\x1d\xfe\x82\x35\xe8\x05\x18\xb0\x9c\xb6\x37\xb4\x93\xeb\xbe\x01\x28\x2e\xc7\x0f\x54\x45\x12\x79\xf0\x40\xe6\xf6\xa5\xbf\x08\x2e\x26\xcf\xe8\x45\xdb\x7e\x45\x67\x78\xfe\xfa\x81\x6c\xb3\xd2\xb6\xeb\xe3\x6d\xe9\x2e\xd2\x2c\x4e\xe4\x65\xb8\xba\xe0\xb7\x9c\xb3\x13\xeb\xb5\x1d\x07\x95\x38\x62\x9d\xeb\xbf\xa2\x17\x7d\xd0\x5e\x0a\xcf\xbd\x3e\x1b\x23\x86\x15\x39\x6c\xdd\x3a\x3f\xd1\x71\xf5\xdb\x90\x6c\x7f\xf3\x84\x97\x44\x8f\x93\xe5\x9b\x33\xc6\xf2\x14\x8e\x5b\xc3\x6f\xbe\xeb\xb5\x4c\x94\xb7\x86\x4f\x37\xaf\x4f\x7b\xdb\x8d\x7c\x3e\xdd\xf3\xbd\x7b\xbe\xf7\xe7\xe5\x7b\x9a\xed\xf1\x77\xfe\x77\xc0\xf7\x2c\xd9\x7d\x75\xd1\xdd\x23\xb9\xcb\x82\x3e\xc1\x7d\xa5\x50\x43\x36\xaf\xed\x0f\x04\xbb\xd7\xb1\x88\x26\x4f\x31\x00\xfb\x56\x22\xfc\x32\x89\x8a\x37\xc1\x42\x89\x8b\x6d\x29\x51\x0f\x39\x0f\x6a\x6f\x4a\x59\x93\x49\xed\x43\xcd\x16\xdb\x5b\x86\x9c\x3f\x44\x19\x9b\x9b\xaa\xd0\xff\x56\xe4\x8d\x82\xd1\x28\x98\x52\xd5\x12\xce\x43\xc2\xff\xd0\xce\x9b\x7b\xea\x44\xd9\x6f\xaa\xb3\xe3\xf4\x8c\xc6\xc1\x58\x36\x6b\x67\xeb\x33\xc6\xd0\x97\x3d\xf5\x57\x8e\x20\x7e\xaa\x85\xc8\x67\x41\x92\xa4\x89\x31\x6e\x13\x42\x9f\x6b\x86\x15\x10\x35\xad\xc0\xc9\x6a\xe8\x81\xc0\xa8\xd4\xe7\xa5\x61\x35\x50\x5d\x4d\xe2\xec\x36\xf4\x02\x19\x95\xa9\xf3\x98\x3d\x36\x0f\xa0\x7f\x88\x26\xa0\x41\xae\x1e\x38\x04\xfa\xd9\x84\xf5\x81\xe2\xb9\x86\x53\x5f\x65\xc5\xb8\xbf\x8d\xea\xc6\xd5\x37\x2d\x80\xca\x14\x2b\x94\x61\xc5\xfc\xc6\x56\xda\x11\xc3\x22\x08\x85\x29\x29\x98\x7a\x5e\x2c\xe8\x98\x6d\x5e\xca\x3c\x1f\x1b\x5d\x09\xef\x29\x3e\xcb\x29\x5d\xc5\x88\x32\xb8\x50\x84\xe3\xb2\x6c\xb0\xc6\xb3\x20\x0b\xc6\x05\xcd\x72\xa9\xe2\x87\x7b\x79\x51\x1a\xed\x23\xde\x36\xa2\x69\xd2\x43\xb6\xd0\x64\x73\xcd\xef\xf6\x23\x9a\xce\x0a\x22\x3d\xd2\x5a\xde\x7d\xc5\x18\x0c\x69\x93\x83\xf4\xa0\x77\x79\x0f\xda\xf1\xf8\x18\xe2\x16\x22\x00\x03\x11\x69\xe1\xb5\xaa\xba\x21\xde\xea\xf6\x7f\x49\xa3\x04\x82\x35\x90\x67\x50\x07\x19\x92\xd6\x66\xab\x4b\x36\x04\x70\x89\xe1\xdb\x8d\xe7\x02\xa2\xf5\xfc\xd9\x27\x03\x06\xb1\xe2\x6c\x88\x1e\x6e\x70\x8f\xcb\x37\x9d\x97\x32\x43\x44\xd3\x11\x0d\x6c\x9d\x60\x86\x08\x91\x3c\x5c\x1f\xd3\xd6\xbc\x70\x6f\xcd\x15\xb3\x12\x25\xac\x12\x3f\xb2\xb0\x3f\x6a\x8f\xa3\x24\xd6\xb8\x36\x3b\xe4\x1e\x48\x8e\xf9\xd6\xae\x44\xfa\x19\x0f\xf6\x3c\x18\x90\x1f\xa3\x24\x24\xfc\x71\x97\xe8\xa8\x0a\xd6\xcc\x24\x8a\x56\x4b\xdf\xe4\x83\xed\x4b\x0f\xe2\x47\xcd\xe8\x85\x34\x61\x56\x67\x2e\x96\xc6\x4f\x3d\xec\xc4\x51\x7e\x56\x62\xd5\x6c\xe3\x77\x2f\x60\x5c\x23\x6c\x6a\x76\x49\xb4\xb1\xb7\x8d\xc1\x65\x20\x64\x6c\xdb\xa1\x9b\xea\x44\xac\x1d\x11\xfa\x42\xb5\x30\x21\x1d\x5e\x64\x6f\x8f\x6c\x76\x8d\x53\xda\x28\xa3\xc1\x67\x0d\xca\x46\xb9\xb1\x47\xc4\xab\x72\x36\x83\x07\xb3\x20\x3b\x48\x43\x0a\x35\x78\x0f\x61\x6c\xb2\xa5\x39\x4e\x5e\x64\xcd\x28\x84\x4f\xda\x4a\x24\xb2\xcf\x8a\xfc\x76\x34\x02\xcd\xfd\xf7\x10\xc9\x4d\x66\x3e\x2f\xca\x5e\xa7\x9b\x93\xed\xf1\x31\xdf\x59\x64\x74\x12\x5d\xf0\x08\x5a\x9b\x17\x5d\x36\x0b\xc0\x35\xfc\xee\xed\x45\xa8\xb7\xf2\xd9\xf7\xda\x2e\xc3\x11\x34\x88\x81\x9b\x57\x06\x13\xf0\x85\xf8\x34\x7c\xed\x0b\xb7\xeb\xa2\x1b\x98\x2a\x18\xc5\x0b\xcc\xf3\xd9\x87\xe5\x20\xcc\xb6\xf9\x72\x90\x33\xc2\x5a\xd2\xd4\x31\x49\x33\xdb\x84\x2e\x2f\xb2\xb2\x70\xf8\x68\x46\x19\xd4\x58\xcc\xcd\x7e\xd1\x89\x6e\xb6\xd2\xc1\x3a\x51\x44\x06\x37\xbc\xb6\x69\x10\xd6\xdf\x8d\x3d\x92\xc8\x7d\xe1\x7b\xb2\x4d\x9e\xb1\x93\x0d\xd9\x20\x6c\x3f\x48\x7c\x34\x21\x5c\xc8\xcf\xe8\xc5\x5d\x92\x86\x15\x73\xc0\xa6\x8d\x1a\xd6\xf0\x9b\x11\x87\xc3\x33\x10\x75\xfc\x36\x14\xf0\xbb\x4d\xab\xe5\xb1\x74\xb2\x8c\x63\x85\x86\x01\x3d\xa3\x49\xc1\x1f\x0a\x00\xcb\xff\x25\x4f\x13\x12\x8c\x22\x9b\xc7\x4b\xb7\x89\x1f\xd3\x1f\x97\x71\x6c\xbf\xa1\x94\x8f\x09\x58\xe9\x47\xbc\xb4\xfb\x18\x8a\x37\xec\xb4\xab\x19\xbb\xdb\x86\x21\x48\xb1\xca\xb1\xea\x94\x7d\xf7\xc1\x84\x22\x4a\x42\x7a\x71\x34\xe9\xb4\x3b\xed\x2e\xf8\x86\x7c\xb4\xe5\x79\x0e\xa9\xe0\x1d\x3b\xc1\xe2\x72\x41\x45\x73\x00\x04\x54\x64\xfa\x33\xeb\x44\xdd\x2f\x32\x7e\x70\x9f\xc1\xef\x92\x6b\x21\x8a\x99\x96\x7f\xaa\x15\xb2\x41\xda\x1d\x36\x73\xaa\xf6\x0d\xd2\xee\xb6\x1b\xad\xbd\x30\xca\x17\x71\x70\xc9\xe7\x05\x7c\x8c\x26\x05\x93\x6d\x15\x36\xec\x37\x6b\x17\x90\xfd\x82\x17\xab\x7a\xe1\xca\x6a\x33\x27\xdf\xbf\xbc\x8c\x1e\xb0\x2d\xcd\xa2\x18\x3a\xed\xcb\x60\x8b\x97\x1d\x61\x56\xd7\x25\x8f\x7e\x50\x89\x6a\x5a\xdd\xbe\x55\x3e\x7c\x56\x36\x9b\xce\xcc\x1a\x68\x16\x60\x7c\xb2\xc9\x33\xfb\x4d\xab\x78\x0f\xc6\xd6\x8c\x76\x36\x32\x18\xe8\x81\xa6\x67\x34\x8b\xd3\x20\xa4\xa1\x52\x04\x7b\xd6\x04\x1e\xc0\x47\x4d\x24\x65\x6f\x1a\x07\xe4\xe3\xd1\x8b\xa3\x21\x99\x07\x9f\x41\x35\x1c\x25\x67\xcb\x38\xa1\x59\x30\x8a\xe9\x5d\x0e\x50\x9f\x06\xec\xd7\xbb\x5b\xe4\x11\x41\xd9\xdd\x6e\x3f\xa3\x8b\x38\x18\xd3\x4e\x9b\xb4\xc1\xa9\x1b\x3b\x2d\xb4\xcc\x08\x91\x69\x72\x46\xb3\x22\xd7\xf1\x36\x41\xee\x0b\xe9\x38\x9a\x07\xb1\xcd\x64\xa3\xc4\xcf\xec\x8b\xf4\x05\x2f\xe0\x52\x5e\x65\xec\x4c\xd3\xad\x21\x17\xf0\x44\x4d\xb5\xd1\x1f\x8b\xd4\x0d\x8e\xa9\xc2\xcf\x34\x19\x63\xad\x6c\xcb\x78\xe2\x5d\x8d\x0b\xd5\x55\x1d\x99\x35\x91\x5a\x52\x77\x7c\x9e\xb8\xdc\x42\x7d\x6a\xee\x28\xc6\x61\x9f\x03\xc4\x34\xcf\x3f\xce\x82\xa4\xb3\x09\x4e\x64\x1f\x71\xab\x73\x61\xbd\x2f\x08\x6b\xab\x0b\xb1\x5b\x51\x8e\x81\xc5\xfd\x25\xb8\x69\x16\xa8\x0c\x92\x4b\xe1\x78\x47\xb8\x23\x4d\xca\xd1\xda\x17\x78\xdd\x4f\x42\xae\xfe\xe7\x34\x14\x4d\x2e\x73\xe1\x48\x3d\x27\x23\x3a\x49\x33\xda\x77\xe8\xea\x95\x38\x3a\x54\xe3\xfe\x4a\xec\x41\x35\xa4\xf5\x0a\xf6\x79\x03\xf9\x6a\xfd\x3e\x14\xa6\x62\xf3\xe0\x82\x87\xad\xbc\x88\x8a\xcb\x21\x79\x0a\x2a\x6c\xb9\xeb\x44\xb9\x70\x69\x0c\x45\xbb\xf6\x26\x83\x26\xb9\xb3\xc1\x20\x76\x8d\xa2\x78\x3a\xab\x0b\x5b\x65\x85\x21\xdd\x19\xa3\x1d\x76\x0a\xe1\x48\x6b\x7b\xab\x80\xf8\x4a\x7f\xff\x70\xf4\xb6\xaf\xb0\xcc\xdb\xd3\x0e\x2c\xc1\x75\x6c\x4e\x02\x3b\x94\x67\x8f\x2c\x82\x3c\x67\xbc\xab\x98\x65\xe9\x72\x3a\x33\x57\x80\x1a\x88\xa0\x35\xa8\xd5\xbd\x9c\xd4\x5c\xed\x11\x9c\x96\x3c\x32\x6f\xe9\x88\x25\x80\x78\xdb\x61\x56\x57\x53\xdb\x99\xb4\x1f\x45\x15\x90\xce\x7a\x94\xff\x18\x25\x51\x41\x2d\xa4\x5b\xdd\x00\x09\x11\x75\xc2\x94\xb2\xdc\x8e\xa2\x75\xf1\x5e\x6c\x2a\x7c\x1d\xb0\xf3\x52\x02\xdc\x9f\xfc\x4c\x6d\x41\x6a\x4a\x0b\x08\x57\x7c\x34\x39\x4e\x22\xaf\xb6\x0b\xca\x16\x33\x2a\x7e\xa8\x05\x47\x8a\xb4\xa7\xb4\x53\xca\x21\xba\x37\x6a\xa3\xea\x87\xaa\xa6\xc3\x3b\xd3\x85\x22\xe0\xb6\x2b\x27\x34\xcb\xd2\x4c\xba\xa4\xe1\x3d\xce\x49\x92\x16\x64\x9c\x66\x19\x1d\x17\xc3\x73\xb5\x6e\xcc\x5e\x1b\x0b\x88\x15\x94\x24\xb0\xe4\x99\xf0\xdf\x33\xf8\xaf\x5f\xa4\xaf\xd3\x73\x9a\x1d\x04\x39\xed\x00\x73\xe1\xfa\x5e\xcd\xc7\x18\xd4\x3f\xc4\x2d\xb3\xb8\xba\x39\x61\xff\x9f\xea\xa3\x38\x02\xc1\x7e\xbf\x31\xe1\x71\x4f\x64\x09\x3d\x27\x2f\xd9\xa8\x3a\x6d\xb8\xea\x85\x8e\x80\xad\xea\xbf\xdb\x05\xa1\x17\x51\x5e\xe4\x3d\xb2\x88\x69\x90\x83\x58\x0c\x23\x4f\x13\x85\xaa\x49\x1a\xc7\xe9\x79\x94\x4c\xa1\x64\xce\xb8\xa0\xb5\x8c\x44\x0f\x7b\xe0\x5f\xa1\xa7\x9f\x7d\x54\x44\x89\x55\xbd\x07\xef\x57\xa6\x57\xe1\xe0\x33\x85\x45\xc8\x19\x3e\x5c\x46\x47\x60\x4f\xab\x98\x2c\x27\x01\xc6\x6a\xc1\x57\x05\x9f\x78\x8e\x5a\x41\x59\xef\xd2\x3c\x8f\x46\x31\x9f\x42\x70\xa1\x21\x8c\xfa\x3e\x1c\x32\xf9\x32\x2b\xf8\x4f\x26\x52\x4b\x6c\xbd\x9c\x4c\xa2\xe9\xa5\xf8\x38\x92\xa4\xf4\x88\x7c\x66\xcd\xf3\x3f\x7d\x5d\x05\x9f\xe2\x66\x8b\x83\xcd\x35\x98\xba\x5c\xe2\x9f\xf2\x2a\x8a\xc3\x4d\x35\x9c\xba\xff\xe1\x9f\xe2\xc2\x48\xe7\xf1\x02\x8f\x1e\xa9\x85\xa9\xef\x71\x78\x81\x5f\x83\x51\x6a\xe4\x79\x4a\xc8\x7b\x18\x3e\x00\xb8\xbe\xc1\x79\xbc\x04\xea\x05\x2a\xcc\x3f\x05\x16\x10\x08\xb1\x20\xd0\x07\x5c\xa6\x08\x84\x50\x8d\xc3\x29\xfa\x5d\xc8\xdf\xb6\x48\xc1\xf9\x82\x75\xf2\xbd\x52\x72\x3a\x27\x87\x71\x90\xb0\x93\x41\xa0\x58\xb3\x48\x17\xba\xb2\x34\x23\x01\x79\xf5\xf2\x9f\x70\x08\x97\xd2\xda\x9d\x31\x14\xb5\xcf\xca\xa3\xdd\xcf\x33\x2a\xfd\xec\x05\xe8\x2a\x57\x44\x41\x41\xc1\x02\xd8\x7a\x0a\x72\x72\x4e\xd9\x02\xd1\x0e\x56\xe4\x30\xd6\x90\x34\xf4\x33\x35\x8e\xe4\x72\x9c\x98\xa5\x70\x51\x87\xd5\x2c\x99\x04\x16\x8a\x78\x09\x1c\x35\xd6\xe4\x54\x9c\x3b\x59\xf2\x10\xde\x86\x45\x05\xe4\x99\xd1\xc8\x10\x7f\x21\xc9\xaa\x76\xf9\x06\x1c\xc7\x9e\x15\x7c\x4e\xa3\xfb\x05\xfb\xdf\xb2\xc4\x8b\xb4\x6a\x81\xa3\xf3\xc2\x6f\xb6\xd4\xd9\x6a\xfb\x1d\x17\x3b\x20\xe4\x6e\x96\x7a\x11\xcd\x69\xfe\x7b\x2c\xf3\x44\x28\x17\xd9\xe2\x56\xaa\xaa\x9c\x1f\xf3\xd9\x16\x4d\x94\x29\x8b\x43\x0d\xaa\x23\x8d\x68\x42\x53\x81\xbc\x3a\x64\x53\xaf\x49\xc1\xac\x4d\x39\xb9\xd2\x15\x68\x00\x85\x7e\x6c\x7b\x63\x4d\x42\xcd\xf1\xe7\x1b\x26\x03\xc2\xaa\x97\xe5\xc5\x8f\xab\x2b\xb2\xb9\xeb\x3d\xdb\x88\x7a\x9d\xb3\x09\x4f\x37\x0e\x44\x02\xe5\xb2\x27\x0f\x1e\x10\xf1\xdb\x27\xf3\xb3\x26\xed\x5c\x7c\xc0\xf0\xb9\x40\x33\x44\x31\x51\x58\xa9\x44\x36\x2f\xda\xbd\x76\x1b\xdf\xb7\x58\x8e\xd2\x7c\xa5\x31\x9d\x94\x8a\x74\x89\x0c\x1d\xeb\xa1\x14\x45\x27\x1c\x4c\x06\xf1\x50\x27\x31\x61\x35\x09\xb0\xc5\x79\xda\xce\xc9\x58\x85\x74\x71\x48\xcb\x8c\xf8\xd2\x84\xbe\x4a\xa8\x06\x9d\x91\xcd\x3a\x4d\x7d\x97\x41\x32\x0c\x7c\x84\x28\xcb\xb7\x5e\xe1\xc5\x77\x07\x39\xad\x53\x05\xb0\x46\xa2\x76\xea\x5a\x93\x5b\xfe\xb5\x60\x96\xfb\x8b\x78\x99\xeb\x2e\x88\x6f\xaf\x77\x43\x05\x64\x2a\x92\x66\x74\xfc\x39\x97\xa7\x26\xce\x22\xe5\x2d\x67\x2e\xde\xca\xc5\x97\xe0\xc6\xd7\x1b\x8c\x98\x93\xfc\xd8\x1b\x88\xd8\x0c\x29\x8c\x1a\x60\xeb\x3f\x40\x05\xb0\x63\x3b\x08\xae\x24\xa6\xce\xaa\xdc\x98\x39\x51\xde\xd2\xa0\x0d\xfe\xb3\x79\x71\xb2\xf9\xe8\xbb\xe0\xd1\xe4\xf4\xcb\xe3\xcd\xeb\xff\x19\x44\xfd\x82\xe6\x85\x02\x5f\x61\xf0\x15\x63\xfe\x4a\xa3\x6d\x30\x4e\x50\x00\x0c\xfe\xd3\xd9\xbc\xe8\x3e\xab\x1c\x28\xa6\xc0\xc1\x40\x07\xcb\xe2\xe1\xb0\xa0\x7b\xdc\x85\xb0\xb0\x3a\x9c\xc3\x43\x5e\xb6\x21\xa3\x61\x9b\x14\x2c\x3c\x01\x12\xd3\x57\x85\xb7\x33\x66\x5f\x18\xa3\x43\x60\xfb\x8f\x7e\xf4\x82\x59\x5d\x86\xd8\x5d\xed\x1c\xbc\x1d\xe7\x73\xf6\xef\x38\x58\xe4\x20\x3c\x88\xdf\x3d\xec\x9e\xd1\xee\x2d\xf7\x3a\x8f\x3a\x6b\x54\x7e\xa4\xf6\x76\x8e\x19\x1a\x8c\x67\x64\x1c\xe4\x4e\x35\x51\xce\xa9\x64\x39\x17\xb3\x83\x48\x89\xaf\xb1\xe6\x04\xc5\xdb\xca\x97\xf3\x39\x0d\x4b\x69\xcb\x6a\xee\xae\x69\xcc\xaa\xbe\x8a\xd6\x06\x03\x3e\x20\x0b\x39\x81\x2a\x29\x7e\x39\x1b\x90\xd6\x86\x08\x88\x57\x41\x0e\xae\x68\x66\xc1\x8e\x6c\xc4\xd4\xa4\x48\x59\xc7\xe7\xee\xe5\xf1\x26\xdc\x50\x12\x8b\x3c\xc0\x75\x77\x31\x23\x31\x85\xc7\xd4\x28\xfe\xde\x62\x41\x33\xd6\x5b\x39\x0f\x09\xc4\x2e\x9c\x46\x3c\xbc\x5d\x90\xd3\x79\xb0\x60\xf3\xb1\x65\xe8\xf9\x3a\xca\x7e\x01\x75\x1a\x9c\xb2\x6d\x3d\xe9\x92\x1f\xc8\xb7\x6c\x37\x17\x59\x27\xd1\x69\xbf\x48\x8f\x59\x43\x42\x13\xb4\xbe\xb7\x87\x32\x81\xe2\xab\x2b\xfc\x7e\xcf\x53\x23\xd6\x2d\x59\x35\x96\x78\x0a\x47\x6b\x52\x73\x7c\x83\xef\xeb\xe8\x0b\x8a\x4c\xdf\x88\x83\x9e\x24\xc7\x12\x5a\x2c\xd2\x3b\xa5\x45\xa9\xbc\x56\xfb\xf2\x0a\xa4\x88\x54\xc6\x8a\xfc\xec\x47\xd7\xa2\x9d\x76\x5b\xd0\x92\x4b\xa7\x06\x82\x6f\x44\xb5\x08\x68\xec\xf4\x9e\x55\x54\x41\xc7\xb2\x17\xe8\xd6\xdd\xa6\x69\x60\x79\x33\x6d\xf9\xc7\xa8\xf4\x3b\x76\xee\x99\x70\xff\xf9\xf2\x22\x4e\x91\xb8\x41\xc1\x75\x04\x6c\x92\x90\xdd\xff\x8d\xbd\x52\xea\x46\xf4\x65\xb3\xd2\xda\x9a\x2a\x69\xd3\x2a\x69\x4a\x9e\x5a\xd2\x34\x18\x69\x91\x32\x89\x32\x0a\xc9\xf6\x26\x77\x19\xf4\x48\xdc\x0f\xf2\x36\xf9\xf3\x84\xcd\x0b\xc2\x6d\x3b\x5c\xdb\xae\x5a\x52\xf6\x5f\xf6\x0b\xe7\x03\x98\x6f\x2b\xfb\xad\x66\xf4\x6b\x49\x33\xde\x6d\x4f\xfa\xd4\x95\xf8\x40\x32\x3c\xdf\x6b\xab\xb6\x59\x4f\x45\xe2\xee\xcb\x57\x9f\x09\x21\x23\x2f\xc2\x8d\x92\xaa\x51\x3f\xa6\xea\x91\xc7\x9b\xfe\x4b\x02\xe9\x87\x58\x1e\xa6\x73\x2d\xe5\xd6\xc7\xd8\xf4\x9e\x24\x7d\x37\x5f\x46\xdc\x4d\xbe\x93\xf9\xce\x80\xa4\xc3\xbb\x61\x89\x85\xb2\x6f\x49\x5e\x04\xc9\x98\x71\x11\x5d\xf8\xea\x4a\x21\x4d\x14\x86\xc7\x6b\xf0\xcb\xf0\x9b\xe1\x4d\xe5\xa6\x11\xc0\x8b\x54\x95\xed\xa6\x88\x92\xe7\xe1\x3a\x2c\x7d\x70\x6c\x8b\x1a\xa2\xc8\x13\x21\xc9\x8b\x1f\xc1\x5a\x45\xcf\x60\x34\xbc\x6f\xed\xbb\x43\x0f\xef\x4b\x63\xdc\xc8\x1e\xd7\x63\xe7\x47\x6d\x43\xb2\x2a\x7e\x64\xd1\x1b\x61\x48\x96\x68\x37\x1c\x11\xeb\x53\x51\x3f\x1c\xde\xf5\x1b\x0c\xe6\x48\xf4\xad\xe1\x62\x60\xf2\x45\xb2\x8c\x63\x08\x92\xd0\x71\x57\x08\xd8\x6d\x83\x0a\xc3\x33\x76\x71\x5d\xdb\x70\xe4\x23\xde\xd9\x06\xec\x80\x03\xde\x84\x19\xf0\xa4\x1b\x4d\xa4\xe8\x5e\xd3\xd1\x80\x07\xc0\xfa\xb1\x38\x01\x35\x1a\x8e\xc4\x0d\x8a\xd1\x90\xa5\x41\xc1\xca\x31\xd8\x07\x12\xbe\x8f\x82\x89\x5c\x2a\xa9\xce\x1c\xc4\xdf\x73\x73\x5d\x69\x03\x84\xca\x31\xb0\x62\xf6\xa3\x01\xe5\x39\x29\xbb\x74\xf7\xa9\xf5\x75\xb8\x98\xe4\xaf\x70\xb5\x2d\xeb\x35\x19\x43\xd4\xa7\x0e\xf5\xec\x6d\xf8\x38\xba\xca\xa8\x03\x31\xee\x97\x6c\x02\xe9\x72\x4e\x46\x71\x3a\xfe\x4c\x66\x34\x08\x69\xc6\x3e\xd2\xb9\x6d\xb4\x11\xe5\xcf\x59\xb2\x4f\x68\x98\xd1\x0b\xe5\x16\x1d\xca\x92\x49\x14\x17\xb6\x32\xd3\x43\xb0\x00\x6b\x78\x1f\x66\x29\x95\xe7\xfc\x6f\xb6\xb6\xf5\x41\x9f\x83\xd7\xe0\xa5\xfc\x98\xce\xeb\xc2\x55\xf9\x4e\xe9\x2e\x94\x2f\xe0\xb0\x3e\x69\xaf\xb9\xfd\xb8\xc1\xcc\xc4\x29\x13\xf3\x16\xd1\xd8\x9d\x87\x8f\x2c\xb9\x6e\x1e\x0a\x05\x54\x31\x01\x50\x93\x31\x01\x50\xac\x72\x02\x9e\x3c\xd6\xf8\xe7\xd0\x37\xc6\x3f\x54\x85\x6b\xf2\xa1\xdf\x01\xba\x11\xf6\x4b\xfc\x8e\x08\x91\x6f\x28\x7f\xf4\x64\x2a\xbc\xf9\x19\xaa\x5f\x3c\x1d\x04\xc3\x21\xff\x4f\xa6\x08\x03\x92\xa1\xfe\xc9\x73\x90\x71\xc9\x10\x7f\xc8\x72\xc7\xc5\xe4\xe9\x50\xfc\x2f\xd3\xc0\x5c\x65\x28\x7f\xe8\x7a\x38\xac\xfc\xa5\xd3\x05\xbc\xfa\x29\xea\x71\x6d\x6e\x87\xbe\x44\x0e\xed\x9a\x72\x0e\x3d\x69\x06\xac\xb4\x9a\x1c\xda\x09\x72\x1c\x3f\x53\x18\xc5\xcf\x14\x8d\x01\xd2\xc4\x0f\x09\xa7\xa4\xc5\x21\xfe\x90\xb9\xa6\xca\x7a\xe8\xa4\x28\xac\x71\x41\x7d\xa8\x7f\xf2\x1c\x24\x1d\x0f\xf1\x87\xcc\x35\x4e\x22\x43\x3b\x41\x42\xa1\x7c\x2b\xc7\x3a\xba\x0f\xdd\x24\xd9\x43\x07\xd2\x49\x92\x75\x4a\x61\x6c\x88\x7e\xe3\xfe\x26\xd3\xa1\xfa\x25\xd3\xf9\x9e\x3a\x54\xbf\xd4\xe8\xf9\x7a\x1f\xea\x9f\x6a\x4c\x6c\x97\x1c\xca\x1f\x32\x95\x6d\x58\x43\xf1\xbf\xaa\x83\xf1\xbb\xa1\xfc\x21\x53\x81\x6d\x0c\xe5\x8f\x1e\x2c\x30\xee\x9f\x4e\x3c\xea\x6e\x0d\xb7\xbe\xeb\x55\xba\xb7\xe9\xb5\x96\xc5\xe4\x69\x6b\xf8\xf4\x9b\xeb\xd3\xde\xf6\x56\x13\x87\x0f\xe6\x12\xde\xe3\x0b\xb8\x25\xfc\x1c\xb4\x86\xa4\xb5\xd9\xdf\xde\xec\x6f\xb5\xd6\xae\xa5\x27\xb8\xed\x46\x81\x8a\xef\x1d\x49\xdc\x3b\x92\xf8\x2b\x38\x92\x10\xb5\xac\xb9\xae\xe0\xfe\x4e\x27\x93\x8c\x5e\x92\x9f\xa3\x78\xfc\x99\x92\xef\x7f\xa1\x93\x89\xed\x4d\xa2\xa1\xc3\x38\x00\x8b\x82\x84\x1c\x31\x89\x3b\x00\xa8\x28\x48\x5c\xb0\x1f\x83\x11\x03\xfb\x47\x3a\xa5\x71\x5e\xd0\x38\xa6\x19\xf9\x7e\x02\x89\x2e\xf0\x4f\xc1\x19\xf9\x39\x4d\x43\xf2\xfd\xb4\xd4\xcb\xc5\x63\xed\xdd\x47\xb8\x82\x7c\x13\x24\xc1\xd4\x74\x3d\xd1\x1f\x30\x2c\x0c\x32\x0e\x30\xe7\x00\xd2\xc5\xc4\xe1\x08\x0e\x47\x36\x70\x34\x0a\x12\x09\xf2\x12\xac\xf8\x6d\x08\x2e\x79\xe5\x03\x5a\xcc\x24\xe0\x8b\xe7\x15\x70\xe1\x48\xb9\x9b\x9d\x55\xd5\x97\xcf\x54\x7d\x6f\xc1\x31\x79\x19\x60\x42\x0b\x09\xf8\x8e\x66\x39\xbc\xa4\x2a\x87\x5e\x08\x10\xd5\x89\xf3\x20\x9b\x57\x75\x83\xe5\x2b\x60\x5a\x14\x10\xb4\xc9\x85\xcf\x45\x96\x04\x95\x5c\xc5\x80\x94\xec\x82\x9d\xa8\xb4\x6f\x8f\x28\xb6\x2a\x44\x51\xe5\xcb\x5d\x84\x70\x20\xe9\x8c\x49\xbc\xdb\xa0\x49\xe8\xe9\x1b\xcf\x90\x60\xcf\xe1\xc4\xe4\x42\x8d\x58\xba\xc2\x64\x96\x2e\x68\x56\x5c\x7a\xe0\x16\x22\x4b\x82\xbe\x2a\x8a\xc5\xbb\x2c\x3d\x8b\x42\x2f\xb9\xb1\x85\xba\x10\xd9\x8a\xd8\x16\xe3\x8a\x12\xd1\x62\x6c\x17\x68\xe6\xd0\x70\x6d\x4d\xc9\xea\x3f\xd3\xd1\x0e\xe9\xc8\x6a\x4c\xa7\xbc\x99\xbd\x42\x12\x7a\x6e\x2d\x1b\x5d\x12\xf9\xe7\x15\x91\x56\x51\xcf\x25\x14\x02\xa2\xfc\xa9\x0b\x3d\x67\xcb\x05\xfc\xf4\xe3\x2a\xc2\x91\xc8\x7c\xf1\xdc\xc9\xcb\x67\xb2\xe4\x87\x99\x5b\x32\x81\x35\xc0\x72\xdf\xd2\xc2\xc9\x5d\x68\xc2\x67\x20\x72\x1d\x38\x70\xa3\x5f\x7f\x95\x6d\x30\xba\x76\xfb\xa0\x09\x1c\x80\xc4\x67\x07\xc3\x68\xca\xd6\x47\x8d\x60\x11\x0d\xd5\x66\x28\xfe\xe7\x47\x0e\xdc\x49\x81\xad\xdc\x28\x8a\xc9\x67\x68\x7c\xf5\x14\x0c\xa2\x97\x21\xfe\x70\x9a\xf8\xa4\xd6\x00\xff\xe1\x0c\x50\x00\x74\x74\xfb\x82\x9c\x23\x9a\x0f\xd1\xef\x0e\x37\xe6\xb9\xee\xee\x32\x89\x69\x30\x00\x0f\xbc\x39\x25\x7a\x0c\x29\xdf\x89\xc1\x25\xd0\x1a\x23\x37\xcf\xf8\xea\xc6\x56\x3a\x2e\x26\x34\xca\x3a\x65\x38\x4d\x8a\x29\x0f\x87\x0c\xae\xa7\x71\x5c\x78\x65\xd2\xf6\xf4\x25\xa3\x3c\x56\x84\xee\xc5\x67\x4a\x17\x87\xf9\x87\xcb\x64\x1c\x25\xd3\xca\xae\x40\x59\x0b\xbe\x19\x05\x7a\x3a\x82\xf9\xc2\x73\x6d\xbf\x62\x41\xc9\x57\x30\xdc\x9b\x14\x7c\x79\x60\xe4\x8b\x59\x09\x05\xdf\x1e\x38\xf1\xec\x5a\x82\xb1\x4f\x07\x0a\xbf\xc0\xe5\x80\x2a\xc5\x0b\x6b\xd4\x29\x13\x3c\x6d\xeb\xe7\x54\xb2\x79\x91\xe2\xad\xd5\x86\x46\x69\x9e\xba\x31\x2e\x65\xed\x55\x38\xe5\x16\x8e\x12\xf2\x67\xea\x1f\x19\x86\x12\xdf\x0e\x1c\x36\x6c\xe1\x90\x2a\xc5\x03\xeb\xde\x0a\xcb\x32\x07\xf6\x6d\xa1\xd3\xe7\xb2\xb2\x4e\x8e\xa7\xdd\xc3\xe7\xfb\x6f\x51\x63\xec\xd3\x81\xd2\xde\x69\x38\x98\xf8\xf6\xc1\x49\xc7\x29\x0a\x10\x12\xd8\x2e\x66\x2f\x7c\xbe\xf5\xe3\x87\xdc\xfc\x52\xc8\x74\xae\x68\x5e\xd7\xc1\x9d\xb4\x0d\x59\x76\x7d\x1a\x46\x19\xa8\x8a\xc7\xc1\x02\x1e\x5f\xa0\x0b\x4c\xcf\x8c\x1e\x1e\xec\xbf\x33\xd6\x3e\x2b\x87\x2d\xe4\x22\x2e\x4a\xb2\xe5\xcb\xa4\x4a\x9e\x6f\xbc\xf5\x64\x10\x7d\xd1\x8c\x5c\xd9\xe0\x4f\x46\xf1\xdf\xaa\x80\xa3\x27\x8a\x77\xc3\x5e\x27\xc4\x91\x8e\x79\xe7\x9c\x80\x0e\xa6\x2d\xf7\xa4\x24\x0d\x69\xbb\x67\x40\x4c\xc1\x2e\x64\x48\xda\x4c\xe8\xf8\x34\x8e\x23\x9a\x14\xff\xe0\xe0\x6d\x7d\x27\xdd\xed\xdd\xa4\x35\x5a\x9c\xa7\xd9\xe7\xb2\x06\x13\x5a\x7c\x12\xa0\x16\x88\x19\x2f\x60\x68\xaf\xf2\x5b\x76\x8b\x0a\x85\x76\x59\xbf\x68\x31\xfb\x04\x73\x3d\x4e\xe3\x7f\xfc\x0e\xfd\x3b\x9f\x45\xf9\x42\xb9\x46\x76\xba\x97\xcf\x66\xb7\x46\x1b\xfc\x3c\xf5\xee\x25\x51\x7e\x90\x26\x09\x77\xd9\x84\x96\x5b\xd7\xa0\xbd\x8e\x77\xbb\x7c\xf0\xc0\xbb\x8d\xe2\x2a\x3b\x5d\xff\x0e\xc6\x9d\x14\x48\x99\xbc\x94\xe6\xc1\x38\x14\x02\x27\x08\x89\xc6\xab\xb7\x65\x75\x4b\x67\xa2\xf8\x84\xc0\x55\x4e\xc6\xc1\xa2\x35\xdc\xde\x64\x49\xf8\x48\xd2\x1a\x6e\x6f\xb1\x34\x7d\x1c\x68\x0d\xb7\x1f\xab\x14\x2e\x3a\xb5\x86\xdb\x4f\x55\x12\x16\xee\x5b\xc3\x9d\x6d\x95\xc1\x56\x78\x6b\xb8\xb3\xa3\x13\xb4\x50\xdf\x1a\xee\xe8\x4a\xf5\xb1\xb0\x35\xdc\xf9\xd6\x49\xa6\xc5\xac\x35\xdc\x79\xea\xa4\x27\xb4\x68\x0d\x77\xbe\x73\xd2\xa5\x20\xdc\x1a\x3e\xde\x74\x32\xf3\xd9\xac\x35\x7c\xbc\xe5\xa6\x33\x59\xb8\x35\x7c\xac\xbb\x2f\xcf\x38\xad\xe1\xe3\x6f\x54\xa2\x79\x70\x6e\x0d\x1f\x3f\x51\x59\x52\x6a\x69\x0d\x1f\x7f\x5b\xad\xdb\xbb\x3e\xed\x6d\xef\xdc\x6b\xde\xee\x35\x6f\xff\x2d\x9a\xb7\x20\x8e\xc1\xbf\xc4\xed\xdc\xb8\x22\x05\x97\xa3\x0a\xf1\xe9\x42\x64\x94\x98\x97\x67\xdc\xa2\x1f\xe9\x18\xa0\x37\x12\x4e\xc7\x8c\xa9\x0b\x8e\xe4\xea\x69\xbc\x8a\x9a\x1f\xe1\x72\xd7\xaa\x0c\xd2\x24\xc4\x39\x0f\x7d\x64\x82\x48\x56\x24\x32\x95\x73\xd7\xfd\x38\x36\x86\x62\x0a\x46\xe6\xd1\xaa\x07\x37\xf5\x3d\x62\x99\x96\x95\x28\x3d\xcc\x04\x7c\x44\xfe\x85\x5f\xce\xb3\xff\x70\xb2\x63\x2e\xc9\x37\x21\xa7\x87\xd5\x51\xbe\x2d\xa9\x55\xba\x03\xdf\x53\xbf\xae\xae\x20\xfc\x0d\xb1\xdd\x3e\xb0\x44\x48\x3d\x69\x33\x29\x14\xc2\x0a\xb4\x7b\xa4\x5d\xa4\xfc\xe7\x69\x9f\xa3\x19\x85\x3b\x9c\x78\x6e\x43\x45\x33\x27\x93\x53\x30\x70\x51\xf6\xa1\xe2\x86\xb4\xeb\x89\x99\x6d\x55\xc3\xfa\xc3\x8a\xef\x21\xe2\xe1\x1e\x74\xa0\x23\xfc\xbc\xa4\x63\xe0\xe9\x06\xa5\xcd\x82\x7e\xb7\x05\xae\x28\x34\x5e\x0d\x3c\x9b\x8f\xbb\xb0\x73\x8a\x2a\x8c\x7b\x82\x16\x87\x41\x11\xc8\x11\xb0\xdf\x7d\xf6\x0f\xd9\x43\xbf\xaf\xae\xc0\x28\x56\x01\xc0\x55\x72\x2e\x41\xc4\xd7\xd5\x95\x0e\xbe\x09\xda\x46\xd6\xb4\xbc\x23\x47\x80\x27\x9b\xa7\xfd\x9c\x31\x04\xe5\x61\x9d\x41\xcf\x85\x80\xa3\x29\xcc\x9d\xae\x5f\x3c\xd3\x85\x5b\xd9\x13\xa6\xb6\x42\xba\x73\x2f\x6d\x3b\xbf\xa8\xe7\xe9\xdd\x93\xcd\x53\xf4\xf0\x6a\x1d\xda\xef\x92\x2f\xf0\xd4\x21\x48\x92\xb4\x20\x93\x28\x09\x79\xbf\xa2\x64\xca\x1b\x7a\xa6\x9a\x1f\xa7\x49\x9e\xc6\xb4\x7f\x1e\x64\x49\xa7\x8d\x4b\x70\x67\x39\x8c\x15\xc7\xe9\xb4\x8d\x4c\x5f\x45\x8f\x19\x2a\x1c\x87\x4b\x54\xb0\x21\x1c\x98\x0b\xe6\xae\xe3\x5b\x9d\x3d\xde\xad\x9e\x49\x10\xe6\x11\x0a\x6a\x94\xbe\x0e\x61\x8a\x1b\x2c\xc7\x0b\x3a\x66\x12\x80\x67\x3d\xf6\xc0\x21\xd3\x28\x18\x7f\x56\x21\x44\xc1\x13\x81\x38\xec\xca\xeb\xd6\x4e\x90\x4d\x97\xf0\x12\xe4\x44\xfd\x42\xce\x78\x4c\x2b\x74\x59\x23\x84\x7e\xae\x2c\x86\xdd\xc6\x75\x1c\x08\x36\xf1\x5b\xa6\x1b\x0b\xcd\x36\x92\x65\x1c\x3b\xe8\x4e\x25\xa5\x09\xe7\x77\xfa\x00\x2c\x21\x26\x28\xc8\x1a\xd7\xcc\x02\x26\xfb\xa3\xc8\x54\x1a\x22\xf1\x9b\x73\xf6\x4e\xda\x83\x83\x52\xbb\xe7\x65\xac\x3d\xc9\xde\xd9\x61\xab\xd3\xed\xe9\x86\x10\x86\xeb\x67\x2a\x28\x8a\x60\x3c\xfb\x98\x1e\x48\x3f\x58\x78\xca\xa4\x73\x2c\x7c\xe6\xd6\x53\xcb\xc7\xcd\x3f\x9d\xe1\xc8\xa2\xfd\x20\x8e\xd5\x7e\x22\x80\x4b\xce\x14\x4e\x37\xd5\x01\xc3\x73\xc2\xf0\x1e\x31\x80\x54\x5b\xc3\x6d\x90\xee\xf9\xaa\x6f\x0d\xb7\x41\x76\xc7\x21\xdb\x76\x00\xd8\xda\x08\x5b\xc3\xc7\x3b\x4c\x64\x7e\x7c\x2f\x32\xdf\x8b\xcc\x7f\x6d\x91\x19\x45\x7b\x81\xb3\xf7\x5d\x85\x7b\xf9\x7b\x9e\x26\xd9\x62\x6c\xca\x9b\xbf\xf0\x44\x75\x75\x98\x65\xa9\x2d\x02\xf3\x34\x25\x89\xba\x2a\x0a\x36\x58\x43\xc8\x74\x64\x4c\x40\xc7\xa7\x52\x49\x53\x64\xe4\x22\xae\x77\x8d\x9f\xc0\x20\x0c\xa5\x4b\x47\xc6\x8e\x45\x61\xf0\x92\x0d\x5d\x13\x09\x96\x45\x60\x10\x86\x1e\x1b\x5b\x22\xc6\xcf\x0b\x15\xda\xba\x75\xb0\x06\xe3\xc4\xac\x38\x0c\x7d\x32\xb7\x6f\xe0\x39\x0f\x0a\x2e\x21\x6a\x47\x24\x99\x76\x55\xff\x05\x8c\xb7\x6b\xbe\xfd\xdc\x74\x2e\xa0\xf0\x6b\x74\xd3\x9d\x02\x7d\x4f\x94\x84\x5c\xcd\x24\x61\x7b\xa8\x6e\x9a\x65\x3d\x21\x89\xe6\xae\x4c\xcc\xc9\x87\xff\x12\xc2\xa2\x06\x10\xf8\xc1\x1e\x26\x15\x2a\x7b\x04\x5e\xb7\x97\x3c\x60\x13\x55\x9e\x00\xcc\x29\x3e\x1e\x94\x0a\xec\xbc\x48\x49\xb5\x4c\xac\x91\xfd\x11\x95\xf6\x1d\xd9\xc7\x2e\xb0\x2e\x16\x51\x3f\xca\xff\x11\xc4\x51\xf8\x9e\xe6\x8b\x34\xc9\xa9\x68\xca\x79\x7c\xe7\x8c\xc1\xdf\x5e\x87\xaf\xb1\xfe\x61\x72\xe6\xad\x75\xd7\xa9\xf4\xda\xed\x5f\x69\xe5\xdc\x65\x93\x33\x58\xbe\xe7\x82\x6b\x08\x5f\x86\x68\xbc\x2f\xfa\x00\x4e\x23\x70\x82\x13\xc4\x5e\x4f\x85\x3a\xdf\x10\xbf\x28\x01\x94\xa5\xf5\x93\x7c\xf0\xad\xe1\x36\xe8\xd1\xc4\x8a\x6c\x0d\x77\xc0\xea\xad\x51\x90\xef\xfb\x0d\xff\x7e\xc3\xff\xf3\x6e\xf8\x7a\xbf\x57\x62\xf9\x1d\xa9\xc8\x1a\xea\xaa\xd8\x89\x27\xb3\xc0\x72\x21\xeb\x0f\x20\x73\x55\x75\x9a\x84\x43\xef\xa6\xb0\x1e\x4c\x3e\x88\x12\xd0\xfb\xe8\x10\x82\xc0\x94\xc6\xd0\x88\x38\xee\xdb\x3f\xb9\x7a\x09\x3f\x32\x83\x6d\xde\x7e\xa7\xcc\xe1\x0e\x34\xd8\x3b\x09\xa5\xe4\x02\x30\xf6\xbd\x26\xd2\x95\xb3\x99\xea\x6d\x40\x38\xfb\xf5\x57\x6d\x3e\xf5\x1c\x45\x3d\x51\xce\xba\xd5\x09\x46\x91\x47\x0d\x82\xdc\x3e\x13\xcb\xcf\x32\x8f\xef\xbd\xb7\x47\xda\xa8\x4f\x6d\xf2\xe0\x81\xe1\xc7\x19\x9d\x9b\x79\xb3\x86\xb3\xff\xeb\xae\xb5\x0d\x57\x35\xe8\xf1\x0c\x4d\x3a\x90\x58\xb2\x5d\x43\x1e\x77\x18\xed\xd9\x19\xac\x8a\x18\x58\xee\x69\x1a\x68\x4f\x1c\xde\x39\x42\x39\xa8\x42\x23\xd2\xf2\x48\xed\x55\x03\xe9\x51\xc5\xf3\x12\x9e\xa2\xf8\xd1\xda\xfb\xb2\x29\x08\x43\x49\xc3\xb9\x3e\x86\x63\xda\x90\x69\xd7\xaa\xa6\x52\x7a\xe2\xa4\xe2\xaf\xb2\xf2\x64\xaf\x8f\xeb\x37\x27\x14\xf4\x0a\x71\x95\xd9\xc7\x9a\x2a\xa5\xfd\x51\xfd\xf9\x44\x8b\x99\x54\x37\xeb\x4e\x9a\x7e\x2f\x6a\x55\xa9\x13\x47\xcd\xa1\x11\xa0\x55\xa5\x0d\xe6\x95\x73\x8b\x46\x93\xca\xf9\xcd\xdd\xcd\xa8\x5d\x5f\xbd\xa2\x46\x32\xbc\xbb\x98\x5b\xce\x7b\x2d\xb5\xb2\xe0\xac\x42\xdb\xa8\x78\xac\x39\x79\xae\xde\x8a\x77\xac\x74\x3a\xf7\xe3\xb8\x72\xba\x00\x48\x5c\xf4\xac\x4c\x60\x5c\x15\x5a\xd3\xc1\xd5\xa9\xcd\x78\x14\xe8\x2a\xd5\xca\xa8\xad\x8a\xdc\x94\x9b\x1c\xb0\xfd\x93\x93\x3e\xa5\x45\x2e\x8c\x57\xe2\x4b\x12\xd2\x45\x9c\x5e\xd2\x50\x9a\x08\xc2\xf3\xc1\xf1\x2c\x88\x12\xfb\xb9\x1a\xd4\xf6\x63\x9a\xc9\x1e\x79\x7c\x0f\xc8\x03\xab\x8f\x24\xe5\xba\xbc\x56\xaa\xc5\x35\xc3\x43\xee\xb1\xbc\xdc\xd0\xcf\xda\x4a\x5a\xc4\x06\x0f\xb2\x25\xa4\xb0\xd4\xe4\x0b\xf1\x9a\x21\x90\x8c\xa3\xe6\xfd\x11\x82\x94\xef\xc9\x87\x65\x90\x3f\x18\x90\xf3\x20\xe2\xea\x72\x10\xb9\x16\x85\x56\xc1\xca\x9b\x32\x73\xde\xc5\x52\x50\xf1\xa2\x75\xc7\x68\xd7\x74\xbc\xbc\x4e\xe1\x69\xb2\xd1\xbe\xbd\x2b\x41\x7f\x37\x36\x76\xcd\x63\xd3\x60\x40\xf2\x22\x5d\x70\x5d\x6d\x94\x4c\x49\x30\x61\x5d\xf9\x66\x93\xcf\x55\x4e\x3a\x45\x34\xa7\xe9\xb2\xe8\x3a\x47\x47\x8e\x80\x1f\xc8\x37\x9b\xde\xc3\x22\xef\x7d\x9f\xd5\xfe\xb3\xa8\x5c\x87\x54\xe8\x92\x2f\xd7\x9e\x33\x9d\x8d\x40\xfe\x60\xcf\x7b\x0e\x55\x33\xe2\x3d\x6d\xea\x93\x9f\xf6\x0b\xac\x18\x13\xdc\x97\x04\x7c\x65\x8c\x19\x61\x83\x8f\xe0\x11\x93\x98\x97\x49\x68\x63\xa0\xed\x3b\x7c\xd2\x18\x39\x14\xc1\x7f\x8e\x37\xe2\x1b\xb7\xca\x96\x1f\xae\x59\xf9\x13\x71\xb1\x66\x50\xcd\x94\x16\x1f\x75\x53\xef\x39\xa9\x69\x8e\x82\xba\xf1\x2a\xc8\x67\x98\xa8\x7a\x92\x30\xbb\xfe\x23\x7c\x34\xe9\x08\x00\x3f\xb5\x79\x0b\x79\x3b\x08\x11\x8c\x44\x5d\xfd\xb1\xb9\x00\xcd\x1e\x41\x98\x23\x7f\x77\xe4\x5f\x99\xf3\xf6\x27\xca\x79\x7b\xd9\x5f\x34\xe9\x98\x14\x77\x75\x45\xd6\xa1\xc5\xca\x62\x44\xb1\x6e\x0f\x6d\xe2\xbf\x9b\x2c\x01\xfc\xd7\x70\x39\xd8\x43\x4a\x43\x14\x21\x7a\xa7\x72\x66\xe4\xdf\x60\xa0\xee\xf9\xe2\x74\x8a\xa8\x16\x8e\x15\x92\x8d\xaf\xb7\xbb\x35\xcd\x13\x43\x54\x53\x1c\xb5\x64\xaa\x1b\x54\x36\x18\x10\xbe\x59\x49\x71\x21\x48\x42\x22\x6e\x46\x48\x30\x0d\xa2\x44\xac\x9c\x73\x2a\x02\xfc\xd5\xfc\xf9\x65\x4f\x7b\x03\xac\xa9\xc1\x96\x75\x9c\xed\xbf\x66\x48\x63\xee\x96\x4d\x5c\x0a\xb2\x2d\x81\xed\x8e\x39\x1d\xa7\x49\x48\x18\xc3\xad\xad\x04\x91\x6e\x3d\xb1\x12\x83\x23\x82\x2e\xac\x69\x87\xbd\x5e\x8c\xee\xb8\x43\xd8\x75\x3b\x12\x25\xc4\x89\x16\x71\xca\xbc\x48\x33\x1a\x2a\x37\xee\x5c\x02\x01\x8d\xcf\x34\xc8\x49\x30\x67\x1b\x52\xdf\xcb\xaf\xed\xbf\x52\xfe\x6d\xff\x79\xbc\xcb\xdf\x45\x17\xab\x7b\x78\x5d\x9a\x5b\xc6\x31\xdc\x12\x36\x24\xd2\x4e\x36\x3d\x50\xa0\x2b\x06\x49\xe8\x3f\x06\xec\x98\x7d\xa9\x7c\x69\x58\x52\x9c\x05\x56\x73\x68\xb0\x2b\xc5\x07\x06\x38\x55\x05\xa3\xc8\xb8\x5c\xe0\x2f\x8a\xa8\x3c\xbe\x43\x5a\x30\x8a\xc8\x1e\x83\x94\x72\xd6\x43\xae\x09\xad\x1f\x93\x3e\x21\x25\x24\x40\xa2\xa9\x28\x2e\x6b\x91\x63\x4b\xe8\xb9\x4a\x92\x63\x4a\x2e\xaf\x31\x31\x58\xba\x91\x2d\x69\x53\x10\xc4\xdd\x15\x8b\x6e\x57\x14\xb5\xe5\x60\x43\xb2\x10\xbe\x4e\xa4\xa2\x38\x74\x4a\xfb\x24\x65\x01\xa1\xa4\x65\x7d\xfc\x93\x49\xaa\x2d\x3d\xf1\x50\x68\xa0\x27\x82\xa1\xd4\x77\xfd\x42\x2a\xb6\xe8\x6f\x65\x0d\xec\x4f\xfd\xe0\xd2\xb5\x3a\x45\x62\xfa\xeb\x48\x3a\xe8\xa9\xd9\xc7\x1c\x6c\x30\xe0\xa1\x15\xb5\x95\x85\x51\xa9\xb6\x95\xf8\x72\xbd\xcb\x80\x25\x96\xd6\xcd\xb6\x05\x62\x50\xc5\x70\xc6\xcd\xe0\x2d\x0e\x10\x32\x7e\x94\x10\x47\x63\x0a\x57\x0d\xda\x5e\xc3\x8a\xfe\xe7\xb3\x1d\x01\xfb\x8f\x72\x8b\x11\xe2\x58\x8d\xe4\xfd\x45\xba\x30\x1c\xcc\x99\xdd\x8b\x83\xbc\x10\x90\x4e\xd5\xfe\xee\x70\x42\xea\xb0\x82\xe0\xbc\x68\x5d\xbd\x38\x81\x38\xb4\x90\x6e\xf7\x49\xa3\xb0\xa6\x4b\xac\x21\x01\xdc\xe7\x41\x49\x7e\x20\x9b\x76\x6d\x62\xa6\x25\xed\xef\xcb\xb5\x5c\xaf\x05\x90\x7f\xb7\x52\x09\x22\x34\x59\xcc\x52\xaa\xd3\x94\xa9\x1d\x1e\xd6\xba\xd9\xe5\xfe\x22\xb8\x0c\x46\x31\xf5\x75\xcf\x3d\x0e\x70\xfb\xa9\x9c\x26\xa1\x0e\x48\x95\xa4\xc9\x23\x51\x09\x46\x87\xbd\x4d\x5c\x97\x4d\x3d\xf8\xf6\x63\x9c\xd1\xaf\x82\xed\xc8\xa5\xd2\x83\x11\xa3\x5a\xe5\x04\x81\xed\xdb\xc6\x1e\xaf\x68\xd7\x9c\xc4\xd2\x1b\x41\x7c\xa2\x35\x74\x00\x52\xee\x83\x58\x08\xa6\x96\x20\xa4\xe4\x3c\xc8\x95\x40\xb9\x66\xe2\x8a\x2f\x6d\xb8\x7a\x45\x47\x18\x6d\x98\x65\xdd\xbf\xce\x82\x7c\xe6\x43\x3a\xeb\x35\xcd\xb2\xb2\x9b\x48\x7c\xe5\xe8\xbb\x57\xac\x92\x78\x98\x38\x1a\x86\xfc\xda\x0b\x71\x5d\xd6\x13\x7f\x5b\x25\xc7\x2e\xb2\x07\x65\x4a\x84\xaf\x52\x09\x71\x12\x65\x79\x51\x2e\x20\xae\x28\xe3\x95\x68\x40\x7c\x6a\x0f\xdf\xf5\xab\xf1\x55\xe7\xf8\x12\x02\x6d\xf2\x81\xd7\xcd\xb3\xd5\x58\x53\x94\xd7\xa2\x7a\x95\xa1\xfb\x79\x9a\xd2\xc9\x73\x20\xa1\x2b\x13\xd8\x95\x9b\x20\x3b\xdf\xbe\xe0\x76\xa5\x90\x24\x3e\x0d\x03\xb4\x1b\x0b\x5e\xb6\xd6\xac\x4e\x3b\xeb\xd9\xd4\x45\x4d\xd7\xa6\x0c\x34\x51\xf5\x0f\xd6\x06\x03\x6b\x07\x36\x2e\x70\xb4\xcb\x63\xa4\xbe\xb4\x2a\xef\xf0\x7d\x79\x30\x30\x7c\xe9\x96\x86\x9d\x1e\x8f\xc1\x2d\x6e\xca\xe3\x34\x45\xc9\xb4\x42\x36\x33\xd5\xd8\xe6\xc8\xf9\x24\x5e\xbb\x9c\x08\x8b\x43\x55\xa2\x10\xf9\x82\xa4\xae\xa6\x12\xd1\x84\x24\xa9\xae\x81\xb1\xb7\x45\x90\xe7\x34\xec\xb1\x2a\xb4\xeb\x3b\x06\x91\xa3\x25\x6d\xf2\x32\x45\x78\x30\x03\x16\x3a\x0d\x73\x48\x9f\xef\x54\xd3\x66\x95\xac\x2c\x43\x69\x4b\x79\xad\xad\x2c\x66\xc8\xb5\x24\xc4\xaa\x81\x08\x61\xd2\xa8\x40\x75\xa9\x27\x0b\x8c\xe8\x38\x58\xe6\x94\x9d\xc4\xc3\x34\x69\x17\xe4\x3c\x48\xc0\x28\x29\x5f\xa4\x51\xcc\xaf\xc3\x93\x82\x66\x93\x60\xac\xbc\x63\x37\x38\x8a\x37\x39\x6e\xdb\xfb\x54\x3d\x43\x24\x8e\x7f\x5d\xb5\xa8\xd1\xe2\xfc\x89\x16\xdc\x5d\x33\xdb\x20\x7b\xe4\x7c\x16\x8d\x67\x60\x35\xc0\xd6\x77\x91\x8a\x7d\x8c\x2c\xe2\x65\x5e\x7f\xf7\x2a\x18\x41\xcd\x04\x6b\xee\xe1\xb7\x64\xaa\x91\x61\x57\x17\x54\x55\xb1\x7a\x01\xf2\x36\xc2\x63\xb9\xe0\x88\xac\x95\x6f\x24\xc8\x54\x09\x31\xe6\x53\x87\x3e\xb7\x48\x6f\xce\x7d\x3d\xc7\x1e\xef\x79\xb7\xc1\xfd\x79\x19\x6f\x72\x4e\xc3\xde\x63\x70\xc9\x53\x16\xdf\x81\xd8\xdd\xfe\xb4\x61\x38\xc7\x9f\xfb\x7a\x85\x78\x4e\xd3\x5e\xbb\x25\x8b\x6e\x77\x95\xfd\xb3\x69\x2c\xd1\x1a\x7e\x5b\x66\x02\xad\x4c\x1a\x5a\xc3\xed\x1d\xd7\x26\x5a\x8c\xbc\x35\xdc\xd9\xba\x3e\xed\x6d\x3f\xb9\xb7\x7d\xba\xb7\x7d\xfa\x6b\xdb\x3e\x21\x63\x67\x61\x03\x79\x07\xd6\xce\x25\x7e\x2c\x85\x75\x25\x7f\x98\x75\x34\x91\x97\xce\xfb\xd9\x34\x1f\x96\xa8\x6e\x90\x90\x27\x8e\xb0\xa2\x12\x1c\xfb\x4e\x6e\x27\x8c\x7d\xca\x4a\x09\xb6\x71\x02\x3e\xdf\xf3\xf5\xe1\xfd\xbb\x03\xce\xdc\x6f\xd3\x01\x1e\x70\x09\x58\x2d\x85\x17\x8c\x45\x4a\xde\xbf\x3b\x10\x17\x05\xfe\x0e\x88\xf7\xe8\xe0\x45\x51\xb7\x3c\x4b\x73\x7c\xfd\xe5\x36\x7e\x70\xf4\xf6\xed\xcb\x83\x8f\x87\x47\x6f\xc9\xcb\xf7\xef\x8f\xde\x0f\xc9\x81\xd2\xff\x8e\x79\x95\xfc\x48\x1f\x52\xd2\xde\x20\xac\x3e\xb2\xd1\xee\xfb\xfb\xa0\x5d\xde\x34\x1d\xbb\x7a\x68\xcf\xb5\x08\x05\x5b\x3d\x11\xaf\xcc\xdf\x84\xb4\xa4\x1d\x12\xdb\x2a\x18\x0d\x13\xde\xa5\xd1\x3c\x0f\xa6\x94\xec\x91\xf5\x75\xf1\xd4\x90\x6d\xeb\xe2\x77\x9f\x87\x8c\x75\x52\xfa\xb2\xd8\x33\xe2\x4d\x1e\x12\x35\x5d\x7f\xff\x70\xf4\x16\x66\x25\x53\x5d\xf2\x84\x59\x15\x7d\x73\x1e\x93\x69\x1c\x88\xaa\xcd\xd1\xea\xd9\xfc\xc8\xef\xab\xf1\x78\xe7\x79\xd3\x29\xfd\x78\xf8\xe6\xe5\xd1\xf1\xc7\x21\x11\xb7\xde\x8c\xb8\x58\x27\xe7\x39\xd9\x20\x6d\xf6\x5f\x30\x9e\x31\x8e\xd1\x36\x62\xda\x08\x3f\x92\xdf\xde\xef\x56\xf7\xbb\xd5\x5f\x7b\xb7\x42\x9b\x15\x3c\xbb\xfc\xa3\x9a\xe9\x36\x7f\xcd\xde\xe8\x11\xfd\x1d\xbe\x65\x97\x4e\x87\xd8\xfa\x57\x87\x33\x1c\x93\x29\x37\x8e\x21\xe2\x91\x2d\xb4\xa5\x0f\x0b\xb6\x15\xf2\xd7\x7e\x08\xbf\x90\xb6\xbc\x48\x93\x8e\xf3\x79\xec\x0a\x52\xf1\x1e\x39\x4f\x93\x6e\xcd\x1b\x7a\x94\x99\xa4\xc9\xe5\x3c\x5d\xaa\x16\x55\x42\xc9\xe9\x4d\x22\x6d\x4a\x25\xae\x68\xc8\xe5\x01\x88\x62\xe0\x84\x6b\x12\x69\xea\x78\xf6\x3c\x4d\xe3\x6b\x08\xaf\x1a\x82\x0f\x72\xbe\x49\x50\x0e\x19\xa2\xd9\x81\x07\x22\x34\x34\x3c\xa6\xcb\x13\x1f\x44\x23\x60\x8b\x52\xd4\x3e\x58\x33\xa6\x09\xbb\xdf\x62\x10\xa6\xe7\x28\x5e\xaf\x1d\x81\x01\x21\xdf\xbd\x13\x89\x3c\xa2\x42\xd4\x17\x35\xc1\x05\x87\xf8\x5d\x62\xef\xea\x2f\xaf\x0d\x96\x4b\xaf\x88\x31\xb6\x39\x7d\x86\xdc\x07\x38\xb8\x31\xb2\x70\x1d\x6a\xf7\xe0\xde\x70\x41\xde\x0a\xca\x51\x87\xaa\xab\xf2\x12\xc4\x29\xd1\xf5\x50\xde\xd1\xf4\xda\x7c\x74\xb0\x42\x3d\x43\x2b\x84\x43\xf3\x8a\x71\xe1\xa2\xd5\xf4\xb0\xd2\x88\xa4\x2b\xf5\x1b\x0d\x27\x8f\xa6\x49\x50\x2c\x33\x7b\x38\x38\xbd\x6c\x3c\x18\xa6\x7c\x3c\x0a\xaa\x6a\x40\xe0\xc1\xa0\x79\xff\xc5\x13\x07\x49\xde\x82\x23\x05\x49\xa8\x54\x4b\x45\x0a\x41\x89\x27\x51\x12\xc4\x7e\xb3\x67\x5e\x87\xcf\xa8\x14\xaf\x6b\x2b\x4b\x54\x6f\x20\x45\xe6\xd1\x33\x9a\x5d\x16\x33\xae\xb2\x9e\x8f\x22\x60\x19\x29\x8f\x12\x0d\x7d\x13\x71\x16\x2a\xb1\xe5\xf1\x0d\x22\xba\xe3\xb8\xb6\x53\x8b\x5b\xfd\x42\xaf\x00\xef\x3d\x88\x68\x7f\x1d\xca\x41\x47\x9d\x6b\x11\xa9\xd7\x5c\xb7\x76\x1e\xb7\x9f\xa2\x72\xfe\xb2\x55\x38\x17\xe4\x8e\x3a\x25\xb5\x77\xba\xae\x4a\x53\xcc\xd3\x47\xd9\xb1\xdb\xb2\x74\x14\xc3\xa2\x92\x9f\x83\xe7\x65\x11\x4c\x5b\x94\x3f\x89\x20\xc6\x94\x65\x0d\x20\x80\xf0\xfc\x31\xba\xd1\xc9\xc9\x32\x8e\x4b\x9e\xb8\x68\xcd\x22\x71\x6f\xff\x4d\x85\x30\xd4\x57\x16\x9a\x11\x32\xad\xd1\x9c\x55\x5c\xf7\x0b\xec\x3b\x8f\x63\x3a\x7c\xfb\xea\x91\x33\xfb\xea\xbc\x6b\x07\xd7\x5b\xa9\x36\xe8\x7b\x0d\xc5\x99\x44\x32\x4e\x93\x71\x50\x74\x8c\xd9\xef\x96\x3b\xb2\x29\xe5\x7a\xc2\x8b\x4d\x39\xd7\xb3\x77\x5b\x5a\xc6\xe1\x42\x7e\xf7\xe0\xf2\x30\xc1\x15\x84\xe5\x10\x9c\x10\x78\x2d\xa1\x6a\xf6\xc1\x03\xd0\x37\x98\xbd\xa8\xde\xa6\xcb\xbd\xef\x00\x0e\xee\xd0\xfd\x4e\x90\x4d\xad\xd5\xa5\xc5\xc7\x67\x46\xc9\x21\xfe\x12\xae\x79\xb6\x90\x2b\x14\x31\x3e\x71\xff\xa2\xea\xb5\x9f\x6a\xf1\xc9\x24\x5f\x94\x94\x86\xeb\xdb\xee\xee\xb2\x95\xf9\x4b\x1a\x25\x9d\x56\xcb\xad\x5c\xbd\x8a\xe3\xe4\xc6\xf1\x84\xaf\x37\x40\x36\xec\xb0\x65\xde\xed\xe1\x1e\xe1\xab\x9a\x24\x2d\x0e\x8d\xbe\x2a\x14\x7a\x1c\x0e\x69\xe0\x86\x6d\xc3\xb3\x85\x6e\xcf\x6a\x05\xb7\xaf\x36\x12\xc4\xb5\xd3\x65\xb1\x58\x16\xaf\xd3\xa9\x66\xd7\xc2\x19\x0f\x5a\x2d\xd2\xfb\x0f\x77\x34\x83\xc4\x32\x13\x4c\x73\x6b\x18\x93\xed\x07\x8a\xc3\xf0\x5b\x2e\x83\x9f\x66\x34\x5c\x8e\x29\x9a\xab\x60\x3c\xee\x11\xe1\x8b\x12\xf3\x93\x60\x3c\x3e\x11\xc9\x9c\x27\x32\xa4\x88\x6f\x49\xe5\xcf\xcc\x29\xeb\xe7\xb3\x68\x52\x74\xba\x64\xe8\x60\x54\x66\x39\x4a\xab\x60\x3c\x96\x5a\x2a\x6e\xed\xcd\x49\x9b\xc6\xb4\xa0\x72\x1c\xda\x4b\x92\x99\xce\xa9\xea\x06\x2c\x03\xdd\x5f\x89\x87\x25\x62\x69\xb3\xad\x9e\x8b\x71\xa5\x9e\x15\xee\x4a\x2e\x32\x1a\xae\x16\x7e\x3c\x9e\x1b\x6c\xe9\xe7\x8f\xee\x92\x69\xbb\xde\x25\x53\x55\xf1\xad\x72\x23\x3b\xb3\x02\x62\x48\x80\x86\xf3\x07\x5b\xec\xb0\xfd\x3e\x39\x02\xe5\x1f\xca\x01\x54\x29\x2d\x63\xdb\xff\x06\xaf\x1a\xad\x67\x6d\xde\x27\x8d\x95\xd4\xf8\xb5\xbc\x4d\x31\x50\xf3\xe4\x5a\xc6\x01\xa5\x81\x21\xb4\x74\x82\x00\x4e\x0d\xea\xf5\x01\x60\x07\x56\x9a\x28\xbc\xa0\x27\x8a\xdd\xf3\xb6\x4f\x4b\x07\x60\x58\x4d\x78\xef\x84\x0d\x5c\x22\x97\x58\x55\x57\xc2\x75\x8e\xb2\x6e\xe8\x1b\xeb\x69\x13\x05\xfc\x6d\x9d\x5d\x0e\xfc\xba\xc9\x37\x9c\x06\x3d\xfa\xbf\xea\x48\x22\x38\x88\xc8\xda\x60\x40\x3e\x1e\xbd\x38\x1a\x92\x8c\x72\x8b\xac\x1e\xc9\x53\x61\x3a\xa3\xae\xb8\xb4\x31\x4e\xc0\x35\x5d\x7d\x56\x2e\x2a\xda\x39\x49\xe8\x98\xe6\x79\x90\x5d\xb2\xc5\x02\x21\xb0\x73\x46\x6e\x6d\x70\x58\x0c\xee\xa2\xc9\x79\x9a\x7d\xe6\x52\xde\x7c\x19\x17\xd1\x22\x46\xa1\x1c\xcc\xe0\x29\x7e\xff\x46\x83\x87\xc4\x6b\xcc\xfd\x8d\xb4\xe5\xe6\x75\x98\x66\x0c\xb2\x79\xc3\x88\x54\x37\x46\x43\xbe\x71\x98\x27\x13\x55\xaa\x2f\x71\xe4\xf3\x60\xb3\xce\x3a\x77\xe2\xc2\x9e\xfa\xce\x0f\x65\xb0\x16\x3b\x25\x8e\x81\xa3\xd9\x4f\xe1\xd0\xc9\x57\x53\x8d\x1d\xa4\xb7\x9e\xd2\x23\x94\xae\x5f\x10\xbc\x3d\x26\x07\xc0\x73\xe4\xe6\x39\x3e\x6c\xf0\x1c\xc5\xf4\x84\x49\x8f\xd9\x45\x8f\xe9\xa7\x28\x96\xd3\xc2\x0a\x15\xe3\x73\x72\x55\x79\x10\xab\x9e\xee\x88\x56\x8c\x57\xc3\x78\x86\x5c\x46\x2f\x44\x47\x39\xb9\x5c\x79\xd8\xaa\xe0\x1d\x0c\x9c\x20\xc3\x51\x7a\xd1\x37\xd8\x91\xfe\xd8\x25\x12\x40\x72\x21\xf8\x7f\x57\xa6\x2a\x96\xc3\x7f\xa8\x74\xc4\x68\xe4\x4f\x53\x8e\xa4\x17\xe2\x7d\xb7\xcb\xcd\x39\x1a\xb4\x6b\xa2\x12\xfe\x5c\xc2\x91\x5b\xc3\x1d\x70\x61\x84\xbd\x86\x33\xc6\xfc\xdd\xfd\xcd\xe8\xfd\xcd\xe8\x5f\xfb\x66\x54\x5c\x8b\x8a\x37\xbf\xff\x15\x01\xf6\xee\xd4\x65\x38\x1c\x02\x1e\x92\x83\x34\x39\xa3\x8c\x15\x05\x22\xe6\x31\x9c\x83\xe1\x2c\x00\x81\x8b\x65\x24\x17\x46\xc0\x41\x9c\xa7\x24\x88\xe3\xf4\x3c\xe7\xf1\xd9\x41\x51\x97\xf7\xd7\x58\x45\x52\xf0\x7f\x13\x5d\xd0\xf0\x9a\x67\xad\xb9\xf7\x1a\x6b\xe2\x46\xb5\x48\xed\x28\xc7\x42\x65\xa9\x0e\x9c\x1d\x53\x25\x4a\xae\xae\x64\x84\x74\x9d\xd1\x56\x3a\xd4\x76\xd7\x56\x06\xf0\xb3\x9c\x10\x91\xb8\x62\x96\xf7\xa1\x23\xf5\x8b\x46\x43\x5c\x0f\x71\x34\x01\x55\x73\x17\x6a\xdf\x74\xea\x04\x48\xc1\xf7\xf1\x93\x56\xe3\xce\x48\x46\x51\x52\xed\xc0\x91\x8b\x89\x9a\x8c\xd3\xca\xcb\x1f\xdb\x12\x36\x55\xfa\x7d\x71\xd8\xea\xb1\x49\x38\xa3\x59\x34\x01\xc7\x1e\x19\x1d\x07\x8c\xe3\xa0\x48\x35\x0f\x1e\x90\x38\xf8\xf5\x92\xc4\x69\x10\x92\xf0\x32\x09\xe6\xd1\x98\xa4\x09\xcd\xa1\x35\x31\x21\xba\x21\x11\xcd\x3a\x55\x7a\x02\x80\x92\x06\xf6\xb2\x71\x07\x8a\xcd\xd6\x94\x16\x47\xea\x90\xec\x71\xe1\xcc\x26\x46\x0b\xac\x75\xfe\x01\xb0\x32\x41\x4c\x89\x3c\x26\x97\xdf\x7a\x18\x9a\xfe\xd2\xab\x17\x9e\x9d\x9f\x47\x10\xb0\x04\xf5\x8a\x80\x0e\x22\xa7\xfc\x04\x3d\x74\x9e\x56\x71\xe1\x7d\x99\x51\xa1\x5e\xec\xc1\x05\xde\x98\xaf\x0e\x7e\x38\x9e\xd1\x0b\x9f\xda\x40\x6b\x4d\xad\x04\xcb\x15\x65\x83\x22\x86\xe6\x53\xc4\xd5\x2e\x55\xca\x5b\x0a\x7f\x19\x85\xfb\x99\x88\x4f\xce\xaa\x12\x8b\xac\x4b\x86\x72\xbd\x09\x30\x57\x56\xf2\x5d\x13\x78\xde\xd7\x41\x37\x87\x56\xb7\x7b\x0e\x1c\x5b\x02\x1a\x8a\x7d\xb9\x30\x45\x8a\xeb\x71\xf3\x03\x19\x96\x59\x02\x05\x38\x28\xb3\xdd\x1a\xdc\x5f\x0d\x57\xba\xd6\xea\xab\x72\x5d\x5f\xef\x6e\x52\xa3\x28\x65\xea\xa7\xd0\x41\x87\x53\x60\x3e\x63\x14\xe8\x41\xb8\x45\xea\x52\x55\xb3\x1f\x86\xfc\x59\x84\x52\xa2\x05\x49\x48\x72\x5a\xe4\x64\xb9\x80\x0c\x71\x1a\x01\x96\x11\x15\x34\x63\x7b\x47\x7a\x26\x84\x2d\xe1\xc7\xb4\xbf\xb6\x86\x9e\x46\xbc\x4e\xa7\xf9\x7e\xf1\xa1\x08\xb2\x62\xcd\xd6\x34\xe6\x34\x9e\xa8\xc4\x89\xfb\x80\x59\xb0\x70\xb3\x16\x23\x50\x18\x8d\x27\x8e\x13\x1f\xf9\xca\x6e\x4a\x0b\xae\xcf\x62\x85\xad\xa7\x76\xa0\x5f\xd0\xc3\xcc\xa1\x7b\x44\x9e\x3c\x2d\x9e\xc1\x5a\xe9\xfb\x18\x07\x64\x4c\x69\xd1\xb1\x1e\xfd\x08\x4b\x46\xe7\x94\x33\x18\x88\x17\x34\xf0\x4c\x94\xf5\x51\xa0\x0d\xcc\x26\xe1\xa2\x5b\x26\x4a\xb3\x23\x70\x85\xd1\xef\xf7\xc9\x2f\x4b\xee\x09\x98\xb5\xc9\x78\xaf\x73\x5e\x2e\x79\x19\x59\xf1\x2a\xf2\xda\x7e\x02\x6b\xad\x74\x35\x0c\xff\x19\x93\x67\x7a\x0f\xa6\xdc\x90\xb3\xee\x9d\x26\x7f\xbc\x63\x9a\x7d\x1a\xfd\xab\x77\xc4\xfa\xf5\x48\x77\x91\xc6\x31\x27\x1f\x3f\xd9\x0a\xda\xd4\x60\x36\x5d\x2a\x95\x08\xa8\x6d\x93\x37\xca\x0c\xd7\x20\x96\xb4\x84\x5c\xc4\x8c\xa6\xce\x9c\x4a\x23\x0b\x46\x7a\x72\xac\xbe\x49\xf0\x3d\x9b\xf2\xd1\x44\xda\xf8\x24\xdf\x94\x3a\x6e\x46\x19\xda\x4c\x19\x86\xa6\x95\xd7\xcf\xac\x04\x5d\xc9\x50\x16\x72\x49\xe7\x56\xe8\xb9\x1d\x91\x96\xea\x03\xa0\x4f\xb6\x37\x6a\xc6\x78\xde\xa5\x71\xcc\xf8\x8c\xee\x09\xa7\xc1\x21\x2f\xc2\xce\x69\x74\x4e\x93\x02\x8e\x9c\x7d\x46\x71\x30\x34\xbd\x97\x2c\x84\xa1\xfd\x09\xc7\x14\x90\xe3\x61\x78\xda\x93\x57\x54\x46\x72\x4f\x13\xa3\xc8\xc1\x7e\x8c\xb8\x82\x18\xe8\x97\x6d\xd6\x32\x6c\xa1\x43\xe2\x96\x4c\xd6\x23\x4e\x7c\x0f\xb9\xdc\x3c\xb7\x03\x3d\x71\x9a\x3a\xc8\x28\x8c\x09\xec\xb5\x0f\x3c\x2f\x1d\x81\xd9\x71\x0d\x36\xba\x70\x35\xf0\x81\x34\x7c\xab\xa8\xca\x4a\x75\x5d\xa5\xca\x1e\xbf\x52\xcd\xec\x0c\xb2\x25\x20\xa5\x2e\xe3\x4b\xad\x31\xb5\xb0\xa9\xc5\x60\x4b\xf4\x45\xd0\x0e\x1a\xcc\x04\x04\x29\x67\xde\x7d\x32\xa6\x56\x88\xb0\xac\x51\x19\x62\xcb\x3d\x28\xcb\xd7\x6c\xcf\xc9\xc2\xd7\x4e\xea\x77\x69\xbf\xfb\x09\x3d\x17\xb7\x4e\x18\x07\xd8\x59\x18\x67\x92\x51\x68\xf8\xc6\xf3\x33\xc7\x9a\x65\xdf\x19\x8f\x3c\x62\xee\x78\x54\xcb\x07\x89\xe0\xc8\xe2\x5c\x58\x41\xbd\x96\x47\x52\x97\xbd\x54\x94\xf5\x77\xa3\x5a\xef\x6c\x2c\x6d\x46\x04\xa1\xeb\x08\x10\xfb\x6a\xc8\x28\x5c\x32\xb0\x33\xc7\x82\x26\x21\x18\xb8\xa9\x49\x0e\x72\x50\xb4\x24\x39\xa3\x50\xe5\x0c\x46\x57\x94\x4e\x00\x98\x15\x62\x52\x4f\x97\x2b\x57\x54\xeb\xcb\x24\xc8\xf3\x68\x9a\xd0\xb0\xef\xf6\xd1\xa6\x28\x1f\x4f\xf6\xcd\x8e\x92\xb1\xc6\xa3\x9a\x09\xf2\x36\x83\x4d\xc6\xd0\x48\xb4\x3d\x31\x89\xb1\x74\x18\xc4\x19\x0d\xc2\x4b\xfd\x60\x5d\x0b\x8a\xf9\xed\x29\xcd\x14\x64\xa5\xf4\x5a\x37\xae\x68\xd2\xb1\x5a\x53\x4e\xe0\x36\x5d\x97\x5c\x7a\x65\x72\x2e\xee\xf3\x0b\xc9\xa4\xe8\x22\x15\x63\x8b\xe6\x73\x1a\x46\x41\x41\xe3\x4b\xbb\x59\x41\xee\xe3\xa6\xb4\x6d\x4a\x27\x50\x7d\xa7\xc4\xd5\x84\xcf\x6d\x15\xd6\x64\x73\x96\xcf\xb6\x1f\x3e\x18\x74\x97\x7b\xee\x84\xe9\xb0\x37\x73\x93\xb7\x71\xc3\x3e\xd4\x0f\xa9\x8e\x31\x98\x23\x1e\x8d\x35\x4f\xe2\xba\xd4\x1d\x08\xc2\x35\xba\x13\xbe\x6e\x3a\x10\xbc\xef\xd6\x8f\xc7\x91\x1c\xd2\x85\x14\x1c\xcc\x81\xd4\xf0\x77\x78\x5a\x3e\x4f\xcf\xa4\x4a\x93\x04\xf9\x65\x32\x56\x87\x1f\x9f\x60\xe4\xe3\xdb\xcb\x04\xde\x4e\x1b\x08\x40\x32\x86\x85\x2d\x87\x77\x61\x43\xf8\x55\x6a\x36\x04\x7f\x07\xa3\x53\x2b\x66\xbb\xcf\x7b\x82\x23\x53\x78\x4d\x4e\x54\x49\x5b\x28\xb7\x76\xd4\x12\x3b\xca\xc1\x80\x1c\x4e\x34\x67\x8c\x72\xf5\xae\xef\x92\x0a\xff\x2b\x24\x2a\x88\x76\xd3\xa5\xcb\x9d\xcf\x28\x18\x63\x88\xd1\x77\x09\x67\xaa\x39\x89\x0a\x93\xad\x7a\x37\x6a\x87\xd8\xd5\x32\xf3\xed\x1e\x3e\xf4\x8b\x1a\xed\x09\xc5\xfb\x31\x84\x48\xf1\xf0\xb7\xaf\xe8\xa0\xc7\x92\xc7\x33\x6a\x5b\xef\xc5\xe9\xb4\xac\x5d\x62\x31\xa6\x8a\xb3\x05\xd4\x32\x64\x7b\x42\x89\x3f\x3e\x7f\xc4\x12\x13\xc4\x39\x00\xd8\x03\x6b\x4e\x47\x8e\x9f\x29\x21\x88\x1f\xbe\xe0\x09\x43\x41\x63\x9d\x6e\x9f\xef\xc8\xe3\x40\x7a\x2c\x04\xbf\x2a\x34\x24\x6c\x75\xcf\xb2\x34\x49\x97\xb9\x72\x5f\x28\x0c\x03\xd8\x6e\x6f\xbb\x22\xe2\xd5\x08\x61\xb7\xed\x35\xaf\x05\xa7\x12\xa9\xb6\xd2\x6b\x42\x40\xae\x0d\x1d\xab\xa1\x7e\x0e\x6f\x31\x6f\xd7\x35\xfc\xd8\xb9\x22\xe5\xb8\x75\x82\xbf\x55\x5c\x90\x5e\x9f\xf6\x76\x36\x9b\x5c\x81\xb6\x97\x39\xd7\x8b\x8f\x8b\xf6\xda\xfd\x85\xe8\xfd\x85\xe8\x9f\xf8\x42\x54\x3f\x15\x45\x2a\xeb\x9b\xbc\x17\x15\xc0\x2b\xdc\x64\xfa\x82\xbf\x35\x7e\x62\x9a\x4c\xa2\xa9\x17\x8e\x67\x49\xc0\xc3\x51\x60\x05\x75\x89\x46\x41\xe2\x09\xd4\x02\xda\x64\x1e\x69\x8a\xdb\x48\xf3\xcb\xcc\x51\x34\x15\x1e\x0c\x2c\x2b\x46\x0e\xf4\x3c\x9a\x5a\x4a\x7d\x6c\xcd\xc8\x35\xce\x57\x1c\xe2\x4a\xc1\x5e\x9b\x5e\xab\x74\x3a\xb6\xc4\x05\x3d\x63\x49\x1b\x86\x54\xc4\x7b\xe7\x7d\x86\x56\xa4\xaa\xac\x04\xdb\x55\x4a\xa0\x28\x7f\x97\x51\x71\x0d\x8a\x6e\x27\x8c\xba\x47\x3a\xdd\x6a\x60\x84\x4b\xb0\x83\x84\x70\x7f\x4f\xae\xae\xdc\x3c\x71\x36\xf5\x67\xd2\x20\x8b\x23\x56\x14\x75\x2d\x59\x2c\x8b\x17\x74\x12\x2c\x63\xef\xc5\x49\x5d\x1f\xd9\x8e\x6c\xb7\xa3\xae\x7c\xbd\xe1\x5b\x18\xc9\xf4\x43\xd4\xa2\xc7\xf7\x54\xf9\x3d\x0e\xee\x82\x35\x8a\xdf\xa2\xfb\xf6\x8b\x2e\x2e\xa0\xb0\x5a\x4a\xe6\xd8\x68\xd4\x53\x21\xca\xf6\xe0\x41\xd2\xd6\x2b\x7a\xe1\x19\xb9\x58\x55\x7c\xb0\x39\x32\x8a\x4c\x27\x24\x30\x7c\x03\x82\xe3\x49\x65\x47\xa0\xec\x02\xd8\xba\x7b\xf5\xf2\x9f\xd6\x72\x83\x3a\x98\x5c\xec\x5d\x68\x52\x97\x6f\xf8\xd8\x75\x0c\xdf\xe5\x15\xb9\xd4\xf6\xbb\x75\x7a\x23\x7f\x7f\x31\x2e\x8f\xe1\xfa\x0f\x5d\xc1\xc2\xe7\xd5\x95\x45\x43\xfb\x63\x88\xbb\x80\x1c\x9f\x61\x78\x8f\xc7\x2d\x59\x2d\xf4\x49\xb8\xa1\xf2\x5f\x3d\x9a\x72\x10\xae\xba\x48\x45\xc0\xe8\xa8\x20\xf3\x68\x3a\xe3\x82\xa3\xf2\x5e\x2c\x94\x54\x4e\xcb\x45\x5a\xdb\x6e\x91\x9a\xad\x9e\xb4\xe7\xc1\xc5\x8f\x94\xbe\xa3\xd9\x4f\x41\xde\xee\x11\xf6\xfd\x2e\x8b\xd2\x2c\x2a\x2e\x8d\xf4\x69\x90\xbf\xcb\xa2\x31\x15\xbf\xd9\x7f\x30\xcd\xec\x47\x92\x26\x63\xea\x7b\xc5\xf8\x99\x5e\x56\xbc\x63\xfc\x4c\x2f\x9b\xbe\x64\x84\x9a\x1c\x5c\xf3\x1a\xf6\x90\xdd\xc5\x0b\x3a\x8e\xe6\x41\xdc\xc1\x00\xee\x4b\x32\xf3\xb2\xf5\x6b\x13\x3b\xf2\xb9\x79\xd7\x34\xef\xab\xfa\xee\x49\xff\xa6\xd4\x7d\x4f\xd7\x7f\x44\xba\x16\x42\x91\x43\xd8\x70\xff\x2a\x83\x09\x09\xaa\xf6\x8a\x4a\x8d\xe9\xf9\xc2\x14\x8f\x44\xfa\x9a\x21\x13\xd5\x52\x70\x71\xd1\xfd\xa2\x34\x83\x17\x7d\xbc\x9d\xae\xcb\xd3\xb9\xd6\x88\x99\x00\xca\x43\x46\x2a\xf1\x67\x02\xa8\x37\x20\x2c\x1d\xe1\x02\x5e\x9b\xf9\xab\x77\xa0\xbc\x6d\xd8\x50\x52\xf9\x77\xd1\x07\x92\xf2\x17\x82\x2c\x0d\x39\x0d\x72\x3f\xdc\x34\xc8\x0d\x28\x20\x5f\x04\xaa\x45\x45\x94\x6f\x0c\x15\xaf\x0d\x93\x50\x35\x55\xdb\x60\x25\xf5\x63\x18\xc3\xcf\xa7\x6a\xc9\x59\x75\xd5\x2d\xba\xe0\xe5\x2d\x3b\xb0\x46\x0f\x8a\x8b\xbe\x34\xfc\xf3\x56\x80\x9f\x19\x4b\x2d\xc4\xc5\xca\xcb\x46\x86\xe8\xb9\xc9\xf2\x11\xd1\x82\x2a\x57\x91\x0a\x5e\xb5\xca\x52\xb2\x2b\xb6\x5c\xd6\xe0\xa8\x43\x3a\xca\x50\xcd\xda\xf2\x41\xb9\xf4\xe9\x81\xd2\xa4\x27\x33\x1b\x2c\xb5\x52\xd0\xf2\x26\x4b\x16\x9d\x0a\x86\xb3\x9c\x2f\xe3\xa0\x88\xce\xe8\x4f\x41\x7e\x9c\xc3\x9b\xbe\xb2\xaa\x1c\x58\xab\xae\x69\x6d\x0d\x53\xa3\x1c\x1a\x3b\x9d\x4c\xe8\x58\xd4\xcc\x57\x6e\xc9\x72\x28\x2f\xe0\xa3\xe7\x52\x68\x7b\x51\x9a\xd6\x22\xb2\x58\x9c\x4e\x6d\xe3\x4b\x9d\x81\x22\x0a\x39\xda\x41\x50\xf1\x79\x75\x83\x9e\x07\xca\x0c\xb6\x4e\x11\x28\x5a\x6a\xb4\x0e\x81\xc8\x9a\xaf\x3c\x38\x38\x55\x2e\x36\xa8\xb0\xc1\x52\x33\x6b\xc2\x26\x46\x50\x83\xf6\xd9\x4d\x94\x73\x26\xf0\x52\x28\xf4\x0f\xf8\x68\xd8\x1f\x05\x39\xad\xe5\x8d\x3e\x50\x1f\x19\x78\xe0\x0c\x02\xe0\xf9\xd3\x20\x7f\x1d\xcd\xa3\xc2\x43\xbf\x26\x80\x28\xab\x12\x4b\x88\xde\xc8\x37\xca\xe4\xd1\xaf\xbe\xdd\x4e\x67\x1a\xd0\x45\x34\xa7\x79\x11\xcc\x17\xa5\x45\x14\x84\x5e\x58\x3c\x23\x29\x63\x5b\x46\x76\x59\xb5\x4a\xa7\x82\x3a\x13\x46\x93\x49\x34\x5e\xc6\xf0\xae\xa7\x0c\xd3\x1a\xc8\x1c\x48\x5a\x04\xf1\x8b\x26\x15\x58\x90\x58\x6a\x36\x57\xaa\x00\xd7\x3c\xce\x5c\xaf\x6e\xb6\x2b\x6b\x46\x05\x9d\x77\xed\x17\x7d\x8e\x59\x25\x40\xb9\x17\xd8\xc6\xaa\xf6\x49\x6d\xbc\x60\xdd\xf2\x1e\x71\x9d\x4c\x83\xc5\x1d\xa7\x53\xef\x2a\xc6\x1c\xc5\xb7\x86\xe3\x74\xaa\xd5\x6f\xee\x42\x86\x7a\x8d\xc5\x8c\x2b\xc4\x4b\x19\x5d\x7b\x44\x13\xf6\x65\x6c\x6a\x6a\x9c\x56\x86\x87\xc6\xec\xa2\xbb\xb8\x4e\x67\xd7\x32\x2a\x6e\xb0\xfd\x79\x2b\x31\x9a\x88\xd3\xa9\xa7\x6a\x99\x5a\x52\xa5\x2a\x64\x9e\x2e\xe0\x2a\xa7\xfe\xc4\x7c\x3e\x8b\x72\xc6\x8d\x17\x69\x5e\xdc\xe0\xc8\xfc\x2e\xcd\xab\xa5\x22\x37\x06\x53\x25\xd7\x76\x2b\xc5\x13\xcd\x3a\xa9\xcc\x42\x07\x03\xe8\x74\x7f\x11\x5c\xc2\xbb\x8a\x3d\x43\x4d\x86\xb3\x04\x92\x21\xa9\x28\x62\xef\x79\x4d\x66\x62\xd8\xf3\x34\xfb\xfc\x31\x7d\x97\xa5\x67\xb4\xbc\x0c\x02\xc2\x65\x17\x42\xe2\x2d\x2f\x28\x21\x50\x68\x81\x09\x8e\x3c\x65\x58\x52\x73\xd6\xc2\x3b\xc9\xdd\xac\x60\x9e\x82\xd2\xc9\x9e\xf1\xf5\x8c\x9c\xa0\xcf\x53\x32\x54\x66\x0c\xd7\xba\x55\xae\x83\xe7\xea\xf8\x38\x4e\xcf\xe1\x59\x89\xd4\x6b\x54\x55\x5f\xfd\x0c\x82\xc7\x4e\x64\xc4\x44\xd2\x24\xbe\xe4\x01\x21\x0a\xe3\x75\x86\x7c\x21\xc1\x5f\x42\xf8\x1e\xf6\xc8\x67\x12\x64\x68\x3f\xda\xc1\x0f\x24\xec\xa3\x35\xeb\x63\x23\xde\xa5\xee\x83\x80\xfe\x85\x95\xaa\x97\x9b\xd5\x51\xba\x9f\xac\xcd\x7b\x85\x6a\xc2\x16\x74\x0d\xf8\xa5\x17\x8b\x28\xbb\xf4\xac\x78\x94\x8b\xc9\x2d\xe7\xee\x63\xbc\xd0\x2c\xaf\x6c\x09\x58\xa0\x9e\x05\x00\x94\xed\x93\x25\x2c\x88\xee\xae\x6f\x55\xbe\x0f\xce\x25\xc9\x88\x14\x2f\x18\xaa\x7e\x3f\x1f\x47\x91\xbd\x7c\x65\x19\xbc\xdb\xfe\x3d\x17\x88\x53\x70\x48\x9a\xd3\xeb\x50\x35\x00\xfe\x94\x21\x0a\x9a\x8f\x39\x0c\x06\xab\xac\x08\x58\x9b\x78\x35\x96\x2e\x46\xbd\xdc\x6e\xb1\x92\xac\x6b\x00\x8e\xa2\x66\xf4\xaf\x98\xaa\xad\x91\xf3\x85\x4b\xc1\x66\x3e\x11\xbf\xc6\x4b\xe8\x39\xdc\xe8\x75\xcc\x60\xda\x70\xd5\x31\x0a\x92\x7e\x94\xff\x23\x88\xa3\xb0\x03\xb1\x2e\x44\xca\x8b\x28\xa3\xe3\xa2\xe3\xbb\xe7\x10\x2e\xc5\x00\x50\xd4\xd8\xe9\x3a\x97\x28\x58\xd0\xd1\x31\x88\x64\x0f\x3c\xd5\x1a\x5e\xeb\x3c\x15\x35\xa8\x42\xf4\xcc\xac\x89\xab\x27\x6c\x1b\x12\xe1\x57\x5c\xc2\xb6\x65\x50\x70\xbd\xd0\x3f\x5c\x26\xe3\x28\xf1\x4b\x2b\xc2\x91\x37\xba\x79\x5a\x37\x93\x88\xeb\xd7\xc8\x10\xcf\xc0\x0b\x12\x18\x21\x46\xc9\x14\x0e\x38\xde\xe3\xad\x0b\x66\xfa\x92\x12\x6e\x9d\x6a\x2a\xc0\x50\x66\xf9\x59\x34\x9d\xd1\xbc\xae\x3c\x86\x42\xb4\x23\x72\x3f\x27\xe9\x79\xf2\xa1\x08\x0a\xea\xf3\x2b\x88\x72\xcb\x1b\xc0\x55\xec\xda\x35\x2c\x96\x71\x4c\xc3\xba\x2a\x30\x54\xc9\x51\x57\xbb\x97\x2a\x89\x20\x50\x77\x81\x3a\xac\x85\xe8\xe9\x7a\x2a\x2a\xa8\x29\x69\xdc\xad\x0d\x3d\x69\x08\xd6\x77\x36\x18\x96\x67\xa1\x92\x36\x2f\x19\xfa\x93\x51\x09\x63\xe7\x1b\x7a\xd2\x38\x6c\xd9\xf5\xfb\xb0\x34\x07\x97\xf3\x0f\xa8\x3c\xaf\xa4\xac\xad\x93\xf3\x54\x61\x83\x18\xbd\x37\x54\x0e\x43\x6f\x2a\x86\xc7\xa7\x9a\xa1\x27\x0d\xc3\x5a\x68\xf4\x24\x62\x68\x9b\x0b\x0d\x4b\xd2\x39\xf7\x32\x6c\xb6\xf8\x05\x53\x6b\xb8\xf5\xb4\xcc\x13\x11\x63\xe1\xad\xe1\xce\xce\xf5\x69\x6f\x67\xeb\xde\x8b\xc5\xbd\xd1\xd6\x7f\x8d\xd1\x96\xa0\xf4\xbb\x08\x47\xb3\x9a\xef\xfe\x86\x96\x5a\x3c\x5a\x8e\x69\x82\xc5\xd3\xbe\x42\x10\x80\xe6\x6e\xfb\x83\x38\x1e\x58\x91\x2d\xe1\x3d\xae\x1d\x16\xc7\x75\xe6\x2f\x8d\xca\xdd\x08\x60\x15\x4e\xfc\x7d\x21\xc0\x3e\xf1\xcd\x4d\x38\x99\xc7\xc1\x6f\x57\x77\x00\xaf\x2b\x15\xbb\x03\xae\x95\x27\xdd\xae\x5a\x88\x9b\x17\xc0\xb1\x0e\xea\x94\xdf\x18\x46\x06\xc7\x15\x20\xe2\x13\x43\xdc\x49\x00\x02\xb6\x3f\xd8\x93\x61\xb8\xaa\x04\xbb\x00\xfd\x84\x0b\x9f\x2c\xb2\x69\x8e\x65\xdd\x1b\x84\x7c\x96\x32\xbe\x0e\x8f\x07\x7e\x20\x80\xd7\xf3\x47\x47\xd9\x34\xe7\x51\x06\xd6\x85\xf0\xd6\xac\xc3\x58\x18\xab\xec\x34\xee\xde\x0f\x0e\x29\xc9\x1c\x1c\xec\x4f\xbc\x6e\x74\x07\xe7\x1f\x9b\xed\xbb\xa0\x42\x4c\xec\x68\x3c\x34\x44\x44\x55\x48\x3f\x1c\x85\xd8\x17\xb7\x2a\xca\xc9\x38\xcd\x32\xd7\xa5\x24\x9c\x80\x82\x82\xee\x67\xd3\xdc\x17\xe5\x4f\xc7\x19\x7f\x48\xfe\x06\x27\xa8\x9c\x7c\x81\xf3\xd3\x35\x6b\x2f\x2a\xc4\x9b\x0e\xc3\xeb\xa4\x67\xaa\x70\x3b\xa5\x73\xa4\x0f\xb9\x1c\x0a\x50\xe4\xd8\x82\x04\x1a\xf1\xec\x8c\xcf\x1f\x02\x80\x42\xc8\x70\xe7\x02\x9b\x27\x38\x11\xd4\xd1\xbb\xd8\x56\x1b\xc0\xd3\xbf\x2c\xb8\xcc\xd7\x8c\xb9\x5b\xef\x38\xc1\x1f\x83\xae\x72\x49\xce\xce\xc5\x8e\x8a\xde\xba\x31\x10\xe0\xdc\xbd\x70\x25\xbc\xbe\x94\x30\xca\x58\x05\xac\x57\xb4\x70\x56\x97\xd8\x91\x84\xb8\xbe\xb7\x57\x46\xc8\xe6\xcb\x25\x76\xf6\x15\xf1\xd7\x2a\xa2\xa4\x75\x1c\x87\x02\x55\x2e\x78\xa5\x52\x06\x6c\x94\x30\xa9\x18\x41\x24\xd2\x77\x1c\xcc\x43\x5e\xce\xa6\xa1\x5d\x6f\x97\xb8\xe3\x0d\x62\xd5\xaa\x36\xd9\xaa\xa4\x3c\xd5\x7e\x25\xd9\x19\x61\x47\x57\x67\x18\xab\xf2\x0b\x33\x5a\x68\x49\x38\xd2\x6b\xcd\xcd\xf1\xf2\xe9\x78\x62\x83\x16\xa9\xdf\xf3\xbf\x11\x3b\x74\x8f\x94\x78\xf5\xf7\x39\x87\x17\xef\x56\xd0\x70\x8d\xa0\xa4\x15\xb6\x4f\x25\x51\x6b\x24\xea\x6f\x16\x9d\xc3\x5b\xbc\x72\xde\x6f\x14\xa3\x43\xb8\x17\xdf\xec\x91\xa7\x52\x1b\x54\xd1\xc4\x32\x59\x04\xe3\xcf\x47\x5c\x0f\x6d\x58\x01\x42\x92\xa1\x1b\x32\x93\x74\x17\x4c\x37\x4b\xb2\x2a\xfe\x43\x91\xde\x1e\xd9\x26\xcf\x64\xa2\xf4\x80\x4e\xe4\x39\x50\xbb\x04\x50\x7e\xcb\xcb\x1c\xa0\x63\x21\xa7\x27\x8a\x9b\x33\x2a\x74\x29\xd8\x7d\xb3\x8a\x7d\x77\xb2\x79\x4a\x86\x3e\x27\xdd\x07\x10\xfb\x39\x40\xe1\xb6\x25\xb2\xec\x80\xde\x41\x1c\xe3\xc5\xdd\xef\xf7\xe5\xfa\x3e\xb0\xcb\x5a\x9b\x8f\xe3\x1e\xe7\x90\x6f\x77\x10\xd6\x57\x82\xb2\xdd\x28\x50\x35\xf4\xcc\xb8\xfd\x32\x99\xfb\x82\x83\xb7\x87\xf2\xd0\x15\x18\xaf\xc3\x82\x24\x34\x7d\xa8\x48\x30\x1e\xf8\x9a\x9f\x8c\x58\x1d\x3c\x68\x20\x03\x17\x68\xf3\xd2\xae\x98\x55\x88\xdb\x5b\x47\xb5\xd0\xab\xb2\xd8\xc8\xab\x04\x3e\xf6\xef\x9b\x52\x06\xb3\xac\x25\xd5\x1e\x03\x07\x19\x2d\xff\x09\x97\xc9\x86\x58\x88\xd9\x0f\xb8\x7d\x36\xa5\x2f\x5c\x04\x8b\x3f\x76\x31\xad\xd0\xe7\xae\x9a\x25\x97\x96\x70\xfa\x5a\x7e\xdd\xf7\x14\x57\xeb\x68\x15\xe3\xa3\xc5\x8c\x23\x41\x54\xdd\x33\xba\xe6\x3e\xbc\x83\x52\x78\x09\x77\x8c\xf5\x80\x9c\x8d\x3b\x4f\x65\x9b\x34\xd8\x73\x1d\xdc\xb8\x3c\x00\xb9\xb7\x91\x2f\x2a\x0c\x27\x08\x3d\x6e\x5c\xb1\x6b\x3a\x15\xe6\x9d\xa6\xa1\xe3\x40\xbd\xc8\x2e\xad\x77\x83\x08\x14\x9e\x0a\x96\x8f\x97\x18\x6f\x1b\xc7\xf0\xb8\xbc\xe3\xb8\xa8\xe1\x14\xbf\x47\xa8\xd7\x39\x8e\xdd\x79\xd9\x3a\x92\x64\x2a\x37\x8a\x26\xe7\x4a\x7b\xdb\x30\x8b\xd4\xee\x0a\x56\x0b\x7f\xaa\xa5\x56\xbb\x66\x24\x49\x09\x40\x61\x8e\xf9\x03\xd9\x84\x43\x8d\x71\xd6\x74\xa5\x43\x1c\x31\x34\x48\xf8\x3b\xed\x24\x14\xbe\x1c\x21\xe4\x6b\xf2\x48\x1e\x54\x9d\xd8\xb7\x35\xcb\xd5\x88\xf7\xc6\xd6\x8d\x35\x0f\x1d\xf3\x16\x4f\x54\x57\x0b\xde\xdc\xd1\x3e\xcd\x8b\x68\x1e\x14\xf4\xa7\x00\x14\x88\x75\x54\x85\xc0\xeb\x28\x0a\xd7\x7c\x17\xd4\xf4\xf5\xa9\xa3\xd9\x0c\xa1\x71\xd5\xcd\x8e\x07\xb4\x6c\x66\xde\xcb\x66\xa8\x0c\x1d\x06\x21\x50\xa4\x2e\x50\xc8\x07\x78\x2a\xa6\xb4\x78\x61\x87\xf6\x91\x3b\xab\x5d\x4d\xdd\x5c\x89\xba\xee\x78\x9e\x1a\x21\x5e\xde\xe8\x8a\x95\x59\x11\xa9\xdf\x2b\x35\xdf\x22\x00\x21\x2e\x2a\xf1\x8c\xc8\xbe\x12\x61\xbf\x6d\x34\x42\x55\xff\x8d\x02\x12\xaa\x42\xab\x0e\xf2\x6b\x46\x27\xd4\x3a\x1a\x36\xc0\x6c\x31\x96\x6e\xaf\x72\x7e\x6a\xae\x63\x44\x02\xba\xdc\x2a\xa5\x62\x5c\xa2\xec\x1f\x9b\x2b\x11\x23\x4a\x8b\x04\xc3\x62\x8a\x11\x6c\x04\xcf\x89\xeb\x27\xce\xd2\xb8\x3e\x03\xe7\xb3\x9f\x58\x8f\xdb\x64\xc8\x3f\xac\x9d\xa4\xdd\x73\x84\x97\xa1\xf6\xcf\xa6\xf2\x94\x67\x39\x31\x9c\x53\x9d\xc5\x3b\x2e\xfd\x96\x72\x06\x59\x4b\x0c\x32\xac\x4a\xd9\xf6\xa3\x02\x16\x55\x6f\x3d\x9e\xd8\x42\x78\x82\x0b\x43\xd0\x59\x37\xb1\xa3\xad\x71\x60\x9b\x2f\xb0\x0c\x25\x7d\x73\xe8\xb4\xb2\xad\xc2\x42\x67\x3f\x58\x2c\xe2\x4b\xe1\x29\xa8\x11\x61\x75\x6d\x33\x36\xbe\x05\x58\xcd\xb0\xc4\x1b\xd5\x5d\x33\x0f\x22\xfe\x8e\x66\x3c\x3a\x04\xcf\xad\x63\xef\x78\x26\xec\x6b\x85\xdf\x91\xe9\x7a\xc5\x63\x57\x49\xa5\xe0\xe2\xb0\xa9\x31\x5c\x06\xe8\x4a\xcd\xde\xc9\x2f\x2b\x6e\x8a\x48\x7c\x24\x3a\xa9\xb4\x98\xde\xad\xa5\x8b\x1f\xf6\xf9\xa7\x8c\x3d\x24\xcb\x02\x81\x47\xd9\x78\x19\x07\xd9\xfa\xfa\xfa\x7a\x75\xc4\x21\x49\x41\xbb\x77\x12\x73\x88\x6b\x7f\x5b\xc3\xed\x27\x7e\x07\x2e\xdb\xf7\xb7\xff\xf7\xb7\xff\x7f\xed\xdb\x7f\x71\xf5\xcf\x60\x65\x4c\x28\x7f\x24\x8b\xdf\x2d\x46\x85\xcf\xb2\xa0\xda\x10\x60\x6d\x30\x80\x98\x57\x41\xc6\x48\x99\xed\x60\xcb\xdc\x1c\x22\x23\xb8\x30\x9a\x4c\x68\x46\x93\x82\xd0\xe4\x2c\x87\x42\xa3\x2c\x3d\xcf\x69\xb6\x86\x1c\x7a\x9e\x47\x49\x98\x9e\x83\xc6\x02\x45\x7a\x20\x0f\x1e\x88\x9c\xfe\x3f\xdf\xbc\x7e\x55\x14\x0b\xe1\x2b\x96\x73\x4d\x33\x8d\xec\xf9\x61\x81\xf5\x89\x40\x05\xd1\x34\x49\x19\x23\x88\xa3\x84\xb2\x9e\x24\x69\x48\xd7\x90\x77\x30\xa7\x46\x35\xf0\x8b\x79\xcc\x46\x26\x36\xb6\x76\xb7\x69\x23\xd7\x1c\x93\xff\x7c\xf5\x7e\xdb\xa8\x6e\x96\x6d\xb7\xbb\xa5\xa5\xa4\xe4\xc0\x5a\x78\x27\x91\xe9\x9a\x44\x80\xfc\xc4\x44\x7b\x70\x8f\xc9\x9d\x69\xb3\x5e\x2a\x03\x08\xa3\x3c\xde\xf2\x67\x69\x5e\xf4\x48\x11\xcd\x69\xba\x2c\x7a\xac\xc2\xac\x07\x4a\xe6\xf3\x34\x13\x8f\xd1\x60\x33\x61\x70\x64\x8f\xc0\x7f\x57\x57\xa4\x2d\x88\x3d\x4e\xc7\x41\xcc\x12\x87\x4f\xbf\x79\xfc\x0d\x04\x96\xe5\x7b\x0f\xaf\x90\xed\x84\xe2\xd7\xd5\x15\xd9\x54\xd9\xac\x19\xb2\x07\xad\xa9\x34\xd9\x28\xd9\x53\xed\xd7\x0a\x4f\x8b\x8c\x2e\x20\x52\x1b\x3d\xb7\xa6\xcc\x92\x9d\x04\xe0\x7b\x74\x96\x11\x92\xd3\xf3\x34\x8d\x69\x90\x5c\xc3\x1d\x2b\xdb\x9f\xa5\x04\xa3\xb1\x2c\xdc\x32\xa2\x03\x9f\xd9\x96\xe1\xfb\x07\x63\x1a\xc9\x5d\x66\x07\xcc\x8b\x40\x56\x3d\x47\x35\xbf\x41\xe1\x84\xc4\x78\x18\xdc\x00\xea\x6c\x42\xb4\x78\x05\x43\x7e\xf5\x7e\x5b\xc7\x75\xe5\x92\x16\xc2\x3c\x9a\x08\x06\x63\x38\xbf\xb3\x2a\x32\xc6\xc3\xab\x04\x79\x58\xd6\x9a\x2e\x68\xd2\x69\xbf\x3b\xfa\xf0\x51\x86\xa2\xe4\x84\xc3\x3b\xb7\xbb\x86\x3c\xe9\xc1\xdc\x3e\x78\x60\x4e\xaa\x71\xe8\x5b\x82\x41\x4d\xfb\x79\x90\x47\x63\xd2\x26\x1b\xd0\x85\xe7\x4b\xc6\x1e\x50\x15\x1b\xa4\x3d\x54\x57\x85\xaa\x9e\x7e\x91\x8a\x47\x6b\xed\x51\x90\xd3\x27\x8f\xdb\xd6\xf8\xb5\x1f\xe9\x57\x34\x08\x69\xd6\x69\xef\x03\x5f\x8d\x7e\x0d\xf8\x69\x0b\xda\xe7\x23\xac\x28\xc4\xe4\x63\x9a\x14\x8f\xd8\x41\xbb\xdd\x23\x6d\x26\xf9\x47\x63\xa8\x62\xf0\x4b\x2e\xd5\x8e\xea\xc6\x4a\x4c\x59\x0d\xb9\xf2\x88\x23\x97\xc9\x18\x1d\xaa\x6d\x4d\xb2\xef\xe2\x79\x81\xae\xaf\xfd\xb1\xa5\xab\x48\x2f\xb7\x63\x0d\x4a\x5d\x9a\x4d\x72\x92\x66\x4c\x5a\x15\xc1\x8a\x81\x1e\xb5\x76\x5f\x63\x2e\x09\x3b\xf0\x20\x82\x47\x91\x89\x26\x97\xaa\x7e\x81\x64\xa9\xc8\xc7\x6e\xa2\x7d\xd6\x00\x07\x69\x92\x50\xf1\x6c\x41\x52\x98\xa6\x44\xe3\x72\x51\xb6\x2e\x03\x36\x7c\xa4\x17\x85\xd3\x41\x01\x8b\x5e\x6b\x08\xeb\x78\xb3\x5b\x55\x5d\x7a\x2f\xea\xef\xf8\x1a\xc4\xab\xa4\x79\xec\x60\xa0\x81\xa0\x86\x08\xf6\x15\xc7\xa9\xa0\x04\x91\xf5\xa3\x13\xad\x83\x14\x59\x34\x9d\xd2\x8c\x87\x18\x62\xb3\x0f\x62\x8b\xf2\x17\xca\x70\x50\x47\x30\xd0\x03\x1f\xd5\x98\x91\x82\x9b\xd0\x0f\x18\xaf\xec\x1a\xdc\x24\x01\xdf\xce\x79\x11\x14\x74\x3c\x0b\x92\xa9\x5f\x81\xc0\xcd\xfb\x25\xe2\x83\xf0\x12\x0c\xeb\xe1\x46\xf8\x31\xe3\x30\x36\xcb\x5b\x37\x23\xfd\x36\xa0\x18\x0d\x28\x6f\x95\x50\x08\x29\xfb\x32\xab\x86\xa2\xe0\x4c\xe6\xbd\xb5\x52\x37\x56\x2b\xd2\x16\xc1\x57\x5b\xf6\xc5\x96\xd1\x32\x3b\x0b\x5e\x5b\x28\xd6\x1b\x81\x8b\x59\xb3\xb2\xbc\xaf\x97\xde\x47\x5e\xaa\x83\x37\x0f\xb1\x90\xef\x96\x03\xd8\x5d\xa8\x62\x02\x62\xa5\xe1\x75\xa5\x2f\xcb\xe3\x4b\x46\xef\xfc\x6d\x29\x2c\x2e\x46\xd5\x25\x6b\x2b\xca\x45\xfd\xd4\x64\xa6\x4a\x08\x90\x0a\x4e\x5b\x18\x60\xe7\x87\xa4\x5d\x90\x49\x10\xc5\x34\xec\x93\x23\x76\x4e\x3b\x8f\xd8\xd9\x23\x80\xa8\x60\xe5\xab\x09\xb5\xe9\x99\x0b\x8d\x4f\xa5\xcf\x50\xd1\x27\xa2\x70\x48\xbe\x53\x7f\x52\xdf\xc7\x76\x9f\x6c\x31\x1e\x92\xf6\x76\x7f\x53\x29\x0f\xa5\xfe\xb1\x9d\xd0\xe2\x53\x1c\xe5\x05\x4d\xa2\x64\xaa\xb2\x95\xf6\xf0\xd4\x30\xe8\x92\x0a\xae\x8c\x87\x38\x73\xc9\x57\x5a\x15\xb2\x41\xea\x49\x70\xd4\x05\x78\xe8\x52\x55\x60\x9c\xf6\x99\x98\xdb\x1a\x3e\x65\xbf\x0c\xf9\xb9\x35\xdc\xfa\x96\x9d\xfc\x77\xee\x4f\xfe\xf7\x27\xff\xbf\xf8\xc9\x5f\x1b\xfe\xc3\xa3\xc5\x3b\x32\xfa\x57\x86\x9c\xf8\x54\x39\x8a\xa6\xdc\x06\xb7\xff\x0b\x3f\xa1\xf3\x7b\x90\xf0\x35\x9d\x98\x1b\x82\x8a\xf5\x78\x89\x1e\xce\x19\x1b\x27\x87\xe0\xec\xe2\x7c\xc6\x7a\xdf\x31\x0d\xb4\xbe\xe7\x85\xc9\x43\xb2\xed\xbe\xbc\x03\x8b\x3f\x26\xc5\x9b\xef\x0f\x89\xff\x45\x9c\x60\xee\xef\xc4\xa9\x2e\x48\xc8\xe1\xf3\xfd\xb7\x62\x92\x43\xf2\xdd\xb7\x64\x9c\xce\x17\x4b\x11\x67\x65\x74\x49\xe6\xe9\x59\x94\x4c\x51\x34\xb1\xc7\x64\x3c\x0b\x32\xd8\x0b\xf8\xcd\x6c\xc8\x4d\xa9\xa4\xb9\xba\x84\x8e\x29\x7f\xb4\x50\xa4\xac\x41\x8e\xab\x9c\x74\xf6\xc9\x1e\xd9\xda\xec\x91\xe7\xec\xff\xad\x1e\xe9\xf7\xfb\x3d\xf2\x7f\x64\x8f\xec\x7c\xd3\x65\x87\x1d\x92\x2f\xe8\x38\x9a\x44\x7c\x21\x1d\x7e\x38\xda\xda\x79\xb2\xf5\xc4\x36\x31\x8b\xf2\x14\xd2\xc5\x38\x5c\xaf\xb2\xd7\xfc\x4d\x2c\xeb\x08\x1b\xa0\x79\xb5\x86\x6f\x96\x85\x24\x15\x4a\x30\xe1\xda\xc0\xac\xdf\x98\x50\x56\x31\x9e\x47\x36\xa2\xf6\x7e\xbb\xcf\xd0\x72\x90\x86\x74\xbf\xe8\x6c\x22\xad\x35\x1b\x5b\xfb\xff\x9c\x6c\xce\x00\xf9\xbb\x5d\x20\xd6\x22\x3d\x5e\x2c\x68\x76\x10\xe4\x5a\x95\x8d\xb2\xf3\xe5\x28\x2f\xb2\xce\xe3\xae\x7c\x91\x2b\x12\x36\x7b\x8f\xad\x1b\x33\x9e\xbb\x88\xa3\xa2\xd3\x6e\x77\xcd\xc7\xca\x49\xd7\xb4\xae\x1a\xa7\x21\x1b\x5c\xe2\xeb\xbc\x94\x0f\x01\xe6\x87\x3d\xb2\xcf\x04\x42\xf8\xf8\x7e\x8f\xfc\x5f\xd7\x89\x01\xe0\x99\x59\x31\xb1\x06\xa4\x72\x2a\x1b\x52\xf2\x88\xec\x93\x0d\xb2\xb5\x89\xec\x8c\x7c\x7e\xf1\x65\xec\x51\xdb\x86\xe9\xba\xdb\xff\x25\x8d\x12\x36\x4c\xdb\x52\x71\xbc\x04\x8f\xbb\x30\xc5\x6f\x8e\x5e\x30\xc2\xde\xda\x94\x4c\x49\x58\xf8\x01\xe5\x7b\x28\xee\xdb\xcd\x27\x8f\x6d\x82\x9b\xa7\xe1\x77\xdf\x6e\x6d\x96\x11\x9a\x49\x5f\xda\x8f\x31\xa7\x26\x51\xb8\x92\x8a\x32\x3a\x0f\xa2\x84\xeb\x8e\x58\x9e\xbe\x7b\x14\xce\x5d\x4c\xf6\x20\x80\xb5\xdd\xf2\x76\xd7\x72\x5b\x03\xcc\x4a\x82\x29\x8b\xd7\xef\x0c\x13\x39\xdd\x24\xc8\xda\x87\x49\xc1\x3d\xe2\xf4\xc8\xd6\x66\x97\xfc\xff\x19\xd6\x36\x9c\x5a\xb8\x53\x1c\x61\x7e\xee\x7b\x81\xab\xea\x52\x25\x75\x7d\xc6\x3c\xd5\xbf\x43\xe2\x26\xe8\xb0\x0e\x84\xc1\x3f\x5c\xa8\x43\x82\x78\xeb\x20\xd8\xa7\x9c\x2f\xff\xe4\x0c\xb0\xb7\x6b\xff\x24\x08\x4b\x68\xbd\xe4\xdc\xae\x3a\x51\x66\xeb\xfa\x49\x21\x08\xd1\x72\x2e\x5f\xe7\x58\x44\xc5\x60\xf6\x55\x8e\xd3\xf7\x00\x65\x49\x31\x9a\x0d\xe1\x5a\xb1\x35\xac\x15\x63\x39\x7d\x54\x63\x9d\xcf\x80\x20\x7f\x2e\x7d\x06\xa0\x97\x0a\x22\x1a\x28\xd9\x7a\x82\x58\xd8\x28\xc8\xe9\xce\x13\xb2\x07\x65\xb4\x7a\x68\xe7\x89\x61\x02\x10\x86\x94\x6b\x16\x61\x0f\xec\xf0\x42\x3d\xb2\xf5\x8d\x29\x09\xab\x7e\x3e\x1f\x05\x49\x87\x17\x33\x99\x9f\xb5\x98\x85\x5b\x12\xb4\x70\x9f\xb3\xa1\x17\xa9\xb1\x7b\xb1\xe9\x23\xe0\x5a\x35\xbb\x94\x2b\x9a\x2b\x93\xc0\x5e\xf7\x1d\x8f\x05\x91\xa4\x85\x10\xca\xbe\x8f\x7e\x68\x4d\x41\x22\xe1\xee\x6e\x26\x1a\xa9\xf9\x2c\xe0\xd2\x1a\xec\x6f\x17\xe3\x78\x99\x47\x67\x2a\x74\x65\x34\x8a\xe2\xa8\x50\x02\xce\x28\x48\x3e\x0f\x46\x59\x90\x8c\x67\x24\xa7\xd9\x59\x34\x96\x1b\x60\xc0\x3d\xbd\xb6\xbe\x1f\x44\x3f\xf4\x6d\x1a\x52\x61\x24\x72\xb9\x0b\x4d\x68\xc6\xb6\xa1\x20\x9e\xa6\x59\x54\xcc\xe6\x24\xa4\xf9\x38\x8b\x46\x9c\x2d\x09\xf9\x87\x26\xfd\xf3\xe8\x73\xb4\xa0\x61\x14\x80\x10\xc4\xbe\x06\x87\x49\x41\xb3\x24\xe0\x4f\x27\x3e\x3d\x0f\x92\xcf\x9f\x84\x9b\xd9\x4f\x7c\x5e\xff\x7f\x3f\x89\x91\x26\xd3\x4f\x6c\x88\x9f\xe0\x2d\xd1\xa7\x30\x9a\x46\xce\x53\x0e\x39\x35\x3e\x8a\x1c\xc9\x3d\x55\xce\x80\xf4\x19\x53\xa4\x9e\x6d\xb6\x01\xad\x3e\xb7\x57\xe4\xc8\x62\x8b\x62\x46\x0f\xf8\x3e\xd5\xfe\xe7\xcb\xf6\xee\x9a\x97\x67\x0a\x1e\xdb\xb1\x76\xee\x0e\xae\x60\x83\xb4\x37\x41\x54\x82\x56\xb0\xb9\x0b\x43\xc7\x0b\x86\x0d\xb2\x47\x3a\x5c\x9c\xea\x7c\xf7\x94\x3c\xd2\x4d\x74\xe5\xb3\x81\x47\xdb\xd6\x7e\xab\xbc\x6e\x98\x4d\xa1\x3a\x45\x83\x35\x6a\x2b\xc1\x44\x10\xae\x80\xb0\x79\x00\xf1\x28\xc9\x8b\xa8\x58\x16\xd2\x59\x72\x14\xd2\xa4\x60\x9b\x96\xed\x78\x9f\xd7\x72\x98\x84\x51\x46\x4d\x03\x06\xf3\x8d\x4d\xde\x93\xb2\xac\x7a\x64\x03\xaf\xa6\x5a\xa8\xa5\x16\x34\xd5\xd2\x6d\xb5\x56\xe1\x45\x66\x4f\xbc\x0e\x94\xcd\x23\xb0\xc9\x19\xda\x2f\x3f\xbe\x62\xf3\x20\x5f\xb7\x60\x0c\xa0\x54\xd5\xb7\xae\xc5\xaf\xd3\x2a\x7e\x2d\x9f\xd2\x71\xe4\x8a\xe8\xdc\x51\xce\x5f\xca\x61\x3e\xee\xc8\x9d\xe0\x41\xa5\x54\xde\x54\x7b\x91\x47\xf1\x21\x15\x1e\xfc\x39\x1d\x6f\x49\x09\x9d\x87\xc8\x3f\x4b\xa5\x9c\x10\x61\x3f\x2f\x11\x27\x2b\x2c\xfc\x69\x27\x2f\xb5\xba\x72\x85\x05\xe8\x7a\xe9\xeb\x41\x3c\x66\x1d\x95\xc1\x3b\xaa\x1e\x49\x3d\x5a\x1b\x18\x1b\xd6\xd6\xb8\xa3\xb4\x28\x61\xf0\x9f\x7f\xbe\x3c\xd9\x7c\xf4\xdd\xe9\x97\xed\xeb\xce\xcb\x8f\xaf\xd8\xef\xfd\x47\xff\x77\xfa\x65\x6b\xe7\xfa\x4a\x7d\xec\x6c\xf6\x76\xb6\xae\xbb\xff\x33\xe8\x17\xa0\x04\x55\x1b\xb8\xf1\x2e\xaf\x8c\x31\x20\x70\xfe\x3c\x6f\x6b\x45\x84\x89\x27\x98\x70\xfa\xf7\xa2\xed\x85\x5e\x82\x77\x83\xb7\x17\xee\x4a\xb2\x10\xa7\x07\x85\x1f\xf7\xec\x3c\x86\x38\xff\xfe\xbc\x6f\x6e\x38\xec\x09\x89\x92\x92\x81\x1b\xdc\xe7\x6e\x86\xee\x65\x23\x8d\x06\xbf\xbd\xd9\xc8\x6a\x93\x8b\x94\x6c\xa4\xf9\x72\xce\x00\x8f\x73\x71\x7c\x98\xa7\xe1\xa3\xef\xbe\x7d\xb4\xb5\xa9\xb2\xe1\x8c\x0b\xbd\x1b\xa7\x31\xe9\x1c\x7e\x38\x1a\x1c\xbe\x3c\x20\xec\xdc\x30\xdc\xde\xdc\xdc\xe9\xda\x3c\x19\x55\xeb\x9e\x42\x51\xae\x33\x70\x99\xd7\x70\xd8\xe2\x4c\xb8\xdd\x23\xdb\xcd\x6c\x55\x31\x53\x35\xb6\x14\x42\xa7\x7d\xf2\xcf\xf7\x2f\x7f\x72\x1c\x09\xaa\x02\xfe\xd1\x94\xd6\xe8\x4e\x2a\x82\xac\x1b\x9e\x26\x80\x0e\x78\x99\x73\x86\xfc\x6d\x8f\x3c\xee\x92\x21\x69\xb7\x1b\x8d\x7b\x1c\x47\xf0\x90\x4c\x75\x10\x94\x4f\x51\x62\x8f\x8f\x61\xe1\xa7\xfd\x7f\x1c\xfd\xf8\xaf\xa3\xf7\xff\x6b\xcf\x2a\xd4\x51\x32\xa7\x76\xfd\xde\xc9\xe5\x40\xb7\x1e\xfb\xd6\xd6\xea\x23\x17\xab\xc9\x7f\x2e\x71\x0f\x1e\xee\xd0\x9c\x0a\x9c\xe1\x05\x9e\x73\x08\xbe\x77\x12\x83\xf3\x39\x20\x33\x0e\x1d\xee\x80\x1f\xa3\x43\x6c\xe9\x51\x46\x9e\x3f\xd4\x29\xc5\x38\xa1\xf2\x33\x8a\x79\x9e\xd9\x7a\xd2\xed\x91\xed\x4d\xe5\xe2\xcc\x90\xf2\x24\x7a\xad\x41\xca\xc2\xcd\x16\x68\x89\x57\xaa\x43\xc8\xe2\x4a\x7d\xac\x57\x6c\x0d\xcd\xcf\xeb\xd3\xde\xce\xe3\x7b\x35\xfe\xbd\x1a\xff\x2f\xae\xc6\x17\x2a\xfc\xc5\xb8\xda\x7e\xef\x16\x16\x77\x2d\x1d\xa2\xb0\xb5\xbb\x52\x68\xb5\x1a\x3b\x3d\xae\x67\x5a\x8c\xbd\x96\x60\x8b\xa0\x98\xf5\x48\x42\x0d\xeb\xef\x4f\xa0\xb9\x70\x1e\x9e\xca\xab\x6a\x1c\xdc\x59\x7a\x2d\x10\xf6\x3a\x60\xe3\xc3\xfe\xe3\xa9\x3a\x6b\xac\x6e\x78\x81\x2b\x16\x32\xa1\xf3\x85\x41\x0f\x75\x79\xe5\x8a\xd2\x2a\xd6\x4f\x93\x4e\x1b\x46\xd5\xc6\xc1\x50\xbb\x86\xfd\x74\x9e\x32\x26\xc6\xdf\x12\x1e\xbe\x3b\x20\xfa\x5e\x99\xbf\x30\x6c\xf7\x08\x45\xac\xf7\x13\x67\x83\xe2\xc2\xbb\x63\x3b\xc3\xf4\xf6\x20\x09\x71\xfb\xa8\xf9\xd2\xca\xc8\x9a\x7a\x63\xf0\xfa\xf0\xc3\xc7\x97\x6f\x61\x05\x1d\x1c\xbd\x7d\xfb\xf2\xe0\xe3\xe1\xd1\x5b\xf2\xfe\xe5\x87\x77\x47\x6f\x3f\xbc\xfc\x50\xda\x6a\x18\x14\x01\x6e\x96\x7d\xe3\xcd\x69\xf0\x50\x98\x11\xce\x83\x8b\x71\x3a\x5f\xc4\xf4\x22\x2a\x2e\x87\xe4\x09\x50\x96\xd5\x43\xd0\x85\x2a\x3b\x04\x56\x95\xde\x6f\xba\x9e\xc8\x35\xc2\xe6\xe0\x8b\x19\xc8\x1a\x0e\x7e\xa1\x6d\x3b\x21\xba\xc3\x03\x7c\x03\x7f\x09\xc9\xf9\x2c\x1a\xcf\xc8\x3c\x28\xc6\x33\x21\xbe\xf2\x4d\x88\x31\xb4\xd0\x28\xe7\x89\x5a\x00\x4d\xfb\x23\x5d\xc3\x75\x94\xd3\x5b\xb0\x40\xf0\xc7\xa1\x8d\x26\x9d\x4f\x7e\x42\x3e\x81\xb7\x71\x51\x78\xea\xba\x43\x57\x85\xd9\x58\x05\xd8\xae\x03\x65\xc7\x0c\x2f\x8d\xa5\x0b\xd5\x88\xbe\xdb\x15\x5d\x3b\x58\x9c\x44\x19\x35\x3c\x02\xd8\xe8\x2a\x1b\x0f\x1b\x8a\xa7\xf5\x0a\x70\x1d\xd8\x17\x9b\xb6\xe8\xbf\x90\xc6\xb4\xa0\x55\x35\xd8\x83\xb1\x71\x83\x5f\x61\xff\xcc\x76\x2d\x20\x44\x41\x10\xbc\x3e\x50\xee\x70\x5b\xa9\x84\x3b\xcb\x21\x29\x77\xb5\x1c\x15\xfd\xb5\x35\x29\x0c\x9a\x24\xbc\x66\xab\x3d\xe0\x45\x26\x13\xfe\x34\xcf\x43\xe2\x91\x59\x18\x7b\x56\xc5\xab\xca\x66\x83\x3d\x4b\x5e\xfb\x07\xf7\x6c\xae\x1d\xf4\xca\x25\xfe\xe2\xe5\xa3\x83\x57\xc7\x6f\xff\xf7\xe5\x7b\x55\x4f\x48\xc7\xb3\x65\xf2\x99\x86\xe2\x55\x09\x7f\x31\x2a\xfe\xfa\x19\x5d\xc4\xc1\x98\x76\x06\xff\xbe\x3e\xf9\x77\xf2\xef\xec\xf4\xd9\xbf\xbf\x0c\xa6\xbd\xf6\xf5\xd5\xa3\x47\x57\x5f\xda\x5d\x70\x2d\xfc\xc5\x0b\xff\xef\x53\x59\xe2\x44\x94\x39\x65\x85\x4e\x64\xa9\xd3\x13\x7f\x39\xbb\x94\x51\xa8\xa4\x8c\x6e\x0b\xb5\xa4\x1a\x42\x65\xc4\x35\x1f\xcb\x6e\x4b\x4e\x6a\x60\xc0\x5d\xb3\x80\x78\xc4\x5f\x06\x03\xb8\x03\xa5\xc2\x1d\x06\x78\xda\x80\x0a\xd6\x1c\xd2\x67\x79\x07\x2c\xcb\x5c\xb9\xc2\xef\x8c\x05\x43\x36\x08\x7f\xff\x6a\x88\xea\xea\xce\xda\xe2\x64\xae\x53\x03\x9f\x2d\x18\xf4\x1d\x95\x12\xd6\x34\xdc\x98\x66\xcd\x5d\x7c\xba\x33\x7b\x76\x67\xc4\xd0\xc1\xe7\xae\xb2\xa0\x06\xd7\x77\xc9\x98\xc6\xe0\x50\x5f\x3e\xe2\x34\xca\x8c\x63\x1a\x64\xd2\x84\xcb\x6a\x45\x24\x5b\x0b\xda\x0f\x04\xbe\x1a\x0a\x59\x91\x6f\x8f\x33\xcb\xdb\x7b\x1d\xfe\xab\xb4\xab\x14\x38\xc3\xf0\xd7\x3d\xb2\xb5\xb9\xb9\x49\x1e\xf2\xcb\x19\xcf\x5d\xab\xd7\xf1\x03\xbc\xdb\x03\xec\x48\x7c\x31\x0e\x92\x53\x41\x2f\x3c\x16\x8b\x78\xd7\xb7\x3a\xaa\xdc\x19\xb3\x48\x04\xc2\xfd\x08\xcb\x4a\xa7\xc3\x9c\x45\xf0\x80\xf0\xa6\xdd\x9e\xa5\xad\xc7\xe0\xc2\xf9\x0f\xe3\x91\x3f\x89\x2d\x34\x08\xc3\x1c\x47\x0a\x17\x56\x0e\xae\x34\xc6\xd5\xc3\xbd\x35\xbe\xe1\xca\x83\x81\x38\x6b\x47\xdc\x5d\xbd\xe0\x7a\xb0\x1b\xcb\x5b\x21\x95\x7a\x18\xf2\x52\x41\x96\x45\x67\x14\x33\xdc\x20\x54\xb3\x27\xdb\xab\xe0\xb0\x1e\x68\xc3\x5b\xbd\xdf\xa6\x14\xc9\x14\xf2\xb5\x7a\x14\x92\xab\x2b\xf9\x75\xb2\x79\xaa\xb6\x4c\xb8\xc2\xe6\x7d\xd3\xd0\x22\xc1\x2c\xc1\x13\xb1\x44\xe7\xdd\xbc\xc8\x9e\xea\x4d\x95\xc4\xcb\x40\xfb\xaa\x61\x59\xb7\xdc\xd5\xe4\x3a\xc2\x2b\x95\x9c\xcf\xa8\xf4\x3b\x10\x72\xb1\x1c\x4e\x5f\xa0\x71\x67\xfb\x7b\x88\xd0\x2c\x88\xb8\x02\xb5\xae\x7d\xa7\x3a\xda\x4f\xd2\xac\xc3\xf0\xf2\x99\x5e\xf2\x93\xa2\x6f\x00\xa6\x13\x98\x8e\x1f\xa8\x3f\x0b\xf2\xa3\xf3\xe4\x1d\x04\x5a\x2a\x2e\x21\x76\xa1\xc5\x05\x4a\xd0\xf3\x99\x5e\x9e\x96\xdb\x76\xb6\xd3\x84\x1c\xbe\x3b\x68\xdb\x41\xfc\x85\x6c\x51\x51\xa7\x63\x66\xa1\x97\xc9\x01\xf6\x41\x28\xdc\x8d\x13\x74\xdc\x88\x72\x92\x17\x11\x0f\x46\x12\x85\x88\xa8\xb1\x59\x68\x29\xc2\xfd\x76\x9c\x9d\xf2\xd3\x92\x94\x03\xd8\xee\x91\x51\xd1\x8f\x1e\xa7\x02\xb3\x57\xd3\x34\xa1\x42\xf3\xd4\x59\xff\x64\x8b\xfd\xe7\x59\x54\x80\xbf\x14\x8b\x1b\x21\x10\xeb\x08\xf5\xc9\x3d\x43\x49\x17\x83\xeb\x65\xb5\x0b\x05\x92\x77\xe8\x55\x2f\x08\xd6\x30\xfd\x58\xf5\xd2\x0f\xe8\xe9\x0a\x31\x36\xd9\x5d\x83\x73\xaf\x80\x22\x89\xa6\x7a\x2c\x11\xcf\x11\xaa\xf6\xac\x29\x7b\x19\xa2\x67\xbf\xbe\x51\x55\x58\x3c\xdf\x4c\x6c\x50\x54\x8d\xa5\x06\x73\x28\xb5\xfb\x28\xb1\xfe\x7c\xfb\xa4\x65\x76\x27\xb4\x89\xd6\x19\xc5\x71\xc7\xf3\xaf\x74\x09\x56\xd6\xfa\xb5\x59\xab\xbd\x61\xb3\xdb\x8d\x76\x8b\xe4\xd8\x30\xbb\x8f\xed\xb4\x35\x1f\x84\x17\x5b\x69\x41\xf2\xe5\x62\x91\x66\x05\xe8\xd6\xf8\x4d\xed\xbb\x03\xa2\xb4\x2a\x6d\xc3\x11\x64\x39\x61\x36\x7e\xa9\x70\x93\xc5\x58\x4f\x65\x2b\x51\x98\xf7\x58\x0f\x34\x55\x69\x41\x8f\x1c\xea\xda\xbb\x69\xa9\xb7\x1b\x57\x8f\xab\x31\xe8\x38\x69\x2f\x79\xa5\x7d\x7d\xda\xdb\xf9\xe6\x5e\xa5\x7b\xaf\xd2\xfd\xaf\x50\xe9\x8a\x87\x15\xb7\x7a\x8e\xbd\x1f\x64\x69\x42\xfe\x77\x39\x0f\xce\xa2\x9c\x7c\x1f\xb0\xcf\xbf\x7d\xe6\x9f\xfd\x39\xf5\xaa\x7b\x07\x03\x72\x98\x44\x45\x14\xc4\xd1\xaf\x94\xfc\x9d\xf7\x82\x11\x6a\x40\x72\xb0\xc4\x92\x06\x37\x30\x50\xb6\x54\x0d\x27\xe7\x7d\xd0\xea\xca\x62\x32\x8a\x88\x08\x40\x75\x18\x0e\xc9\x66\xdd\xcd\x1b\xb7\xf6\x60\xc3\xb7\xdd\xea\x7a\xcd\x4c\xbc\xee\x74\xf5\x2b\x34\x19\xeb\x6a\x22\x11\x0a\x2d\x69\x83\x1e\x8f\x13\x5e\xfe\x3a\xa5\x87\x54\x3d\x13\x59\x8d\xcc\x92\xbe\x77\xbd\x6e\x88\xd0\x08\x58\x7b\x4e\xef\x07\x6b\x02\x3d\x25\xae\x78\x79\x5b\x3d\xd1\x98\xe1\x34\x95\x67\x75\xcb\x54\xcb\xb2\x49\xc7\x98\x47\x99\xed\xae\xb7\x51\xd4\xa9\x20\x3c\x63\x67\x54\x39\x3b\xe4\xf0\x05\xe4\xc8\xde\xa9\x49\xdb\xd8\x28\xf3\x33\xe4\x7f\xfd\xc3\xdf\x0a\x39\xd5\xe8\x6c\xf9\x3c\x48\x8c\x54\xa5\xcb\x77\x41\xfc\x7f\x76\x60\x92\x2f\x84\x9a\x1b\x5e\x48\x1c\xa8\xc3\xa3\x34\x20\xf2\x9b\xea\x28\x65\x5d\x5d\xe4\x33\xcf\xcb\x6c\xab\x01\xbf\x79\x86\x44\x83\xd5\x9e\x15\x10\x99\x27\x5a\x97\xa1\xdc\xa7\x0f\xd2\x39\x0b\xa0\x67\xaa\xed\x3e\x3d\xa3\xd9\x65\x47\x7a\x43\xfe\x10\x25\xd3\x98\xbe\xe1\x08\xef\x92\x21\xf1\x66\xe8\x9a\xc4\xb4\xaa\x8e\xf8\xc1\xc5\x04\xaa\x83\x96\x12\xde\x25\xdd\x20\x0b\x22\x99\xc6\x29\xd2\xb0\x2d\x12\x19\x72\x7e\xf6\xf6\xf6\x38\xd5\x60\x20\xe1\x76\x41\xc2\xb2\x33\x37\x03\xe3\xd7\xba\x6d\x5f\x75\x42\x86\xb5\x7c\x4a\x0e\x06\x3c\x34\x9f\x4a\x12\x5e\xd9\x31\x73\x91\xeb\xb1\x91\x3f\x79\xce\x88\x46\xf0\x1e\xad\x86\x1d\x3d\x67\x40\xe5\x2e\xbe\x45\xc7\x2d\xfe\xc2\xeb\xca\x39\x53\x15\x55\x49\x01\x27\xec\x82\xf2\x48\x2c\x8a\x8e\xe4\x3d\x5d\x32\x89\x68\x1c\x5a\xa6\x07\xa2\x15\xa3\xa7\x16\xcf\xc1\x1d\xb4\x18\x0f\xef\x9a\x45\x86\x32\xd9\x8a\xfa\x20\xc9\xc2\x75\x84\xe5\xb0\x37\x09\xdb\x97\xac\x4d\x7e\x0b\x16\x67\xea\xe1\x1d\x59\x51\xd4\x27\xe4\x44\x26\x06\x3e\xb9\x17\x03\xef\xc5\xc0\xbf\xb6\x18\xa8\xdf\xe7\xf1\x45\x73\x57\x2f\xf4\xee\xe6\xee\x9e\x81\xbc\x91\xea\xc6\x52\x63\x65\x38\x27\x8a\x48\x2d\xd2\x0a\x99\x7d\xa2\x53\xa4\x70\xb9\x26\x73\xd9\xa7\x71\x71\x0f\x3c\x4f\xe7\x6b\xc9\x60\x13\x81\x81\x4f\x7e\x1c\x94\x50\x1b\x42\xe3\x0c\x54\x82\x7b\x7a\xf6\x15\xb1\x72\x0c\xa5\x2b\x68\x0c\xde\x04\x49\x30\xa5\xfa\x75\x3e\x63\x59\x1c\x15\x86\x2a\x40\xba\xf0\xd0\xe0\x68\xbf\x9f\x1b\x18\x72\x2a\xce\xe6\x35\xf6\xef\x21\x65\x1c\x26\x4a\x4c\xff\x9e\x96\xf8\x37\x0a\x72\xee\x73\xa1\x2c\x12\xc5\x94\x82\x97\x4a\xcf\x26\x65\x7a\x9a\xb7\x1d\x8b\xca\x36\xcd\xf6\x80\xc4\x1c\x44\x88\x36\x4a\x63\x4d\x18\xee\x44\x51\xf8\x1c\x45\x1c\xca\x8e\x4f\xfa\x32\xcc\x99\x60\xa3\x52\xea\xdc\x1c\x73\x67\x9c\xfa\x92\x42\x84\xe6\x10\xdb\xae\x1a\x67\x9f\xbc\x61\xac\x3c\xa2\xb9\x08\x22\x0d\xf8\x70\xbc\x50\x1a\x9e\x3d\x1b\xe3\x4d\x0e\xea\xea\xed\x32\x8e\xb5\x63\x8c\x1e\x93\x22\xe9\x45\x04\xd7\x66\x3e\xdc\xfd\x31\xe3\x0f\xdd\x59\xd8\x1d\xb2\xf6\xb5\xe2\xee\x38\x98\x6c\x14\x6d\xc7\x0e\x70\xa2\x42\xc9\x98\x07\x31\x52\x13\x3e\xe6\xfd\xbb\x03\x11\x61\xa2\x3a\x76\x8c\x46\x9b\x70\xf5\xca\x09\x0f\x90\xae\x4e\x9c\x36\x9a\x38\xe8\x21\x83\x74\xb1\x64\x10\x9d\x4a\xf2\xa0\x03\xd5\x52\x89\x8d\x75\x0f\x77\x2d\xa1\x20\xdf\xe3\x46\x4f\x69\x4b\x86\x54\x4e\x17\x7b\x04\x82\x64\x57\x85\x90\x22\xcf\xf4\x6f\x4e\xdd\x50\xe4\x94\xb1\x03\xf4\x59\xe3\x59\xdf\xc1\x3a\xe7\xf7\x2a\x7a\x2d\xc6\xbc\x8b\x78\xee\x80\xb7\xfa\xac\x68\xba\x23\x2e\xc1\xbd\x27\x46\x8a\x19\x2c\x17\xa3\xd0\xde\xac\xc0\xd9\x0c\x1c\x7b\x9e\x79\x01\x54\x55\xde\xd8\x24\x02\x17\xbe\x90\x45\xf2\xfd\x94\xa4\xc3\x15\x22\x17\x05\x72\xdd\x36\x42\x42\xb3\x18\x44\xd8\x1d\xab\xd8\x47\x6c\x2f\xc9\x2b\x3b\x5f\x16\xf2\x04\x00\xa3\x65\x80\x01\x21\xcf\x08\x30\xa4\x8e\x29\x7e\x2d\x88\x54\x67\x80\x66\xa9\x44\x99\x51\xe5\x56\x19\xab\x38\x1c\x54\x49\x17\xb9\x1c\x9f\xa6\xb4\x35\xfa\x05\xa3\x8b\x65\xc8\xa1\x8d\x96\x51\x1c\x02\xc2\xc4\xa0\x58\xa6\xe3\xdf\x16\x18\xfe\xc7\xa3\x17\x47\xeb\xeb\xeb\x20\xde\xb7\x73\xb2\x9c\xc6\x97\x7d\x11\x45\x8c\x1d\x08\x96\x39\xdb\x13\x0b\xd5\x4a\x82\x5c\xca\xb2\xdf\xd2\xae\x46\xdd\x90\x30\xc6\x01\x19\xea\xbd\xf5\x96\x11\xe9\x69\xf4\xcb\x09\xcb\x3e\xd9\x3c\x3d\x65\x62\x17\xfe\xbc\xba\x52\x76\x9b\x36\x28\xff\xb1\x05\x65\xd8\x58\x76\xfd\x57\x45\x56\xed\x00\x49\x10\x17\x76\xd0\xab\x10\x55\x76\x8b\xaa\x2e\xd5\xb5\xd1\x29\x0f\x81\x92\xf8\x9f\x65\x11\xc7\xcf\xb7\x90\xdf\xf5\x69\x78\x15\x3f\xd0\xc4\x8a\x60\xe1\x0b\x55\x60\x9c\xd5\xa1\x2d\x53\xa2\xd4\x17\x53\xfa\x7e\xc6\x88\xc5\xa2\xcc\xeb\x3c\xa6\x79\x76\xc3\x1c\x5e\xb4\x83\x99\x99\x32\x8a\xb4\x0c\x68\xbc\xe1\x54\xcc\xee\x1a\xd5\x94\x0f\xc1\xbe\x86\x12\xa4\xc2\xb2\x9a\x7a\x7a\x96\x61\xae\x68\x52\xef\xce\x51\x72\xc8\x65\x46\xe1\x86\xf4\xfd\xbb\x03\xe5\x81\x89\x9b\xb2\x8c\x83\x44\x09\x9b\x51\x22\x94\x2e\x7e\x5f\x4f\x99\xeb\xeb\xb1\xdf\xef\x5f\xe3\xf8\x6e\xb6\x2f\x3d\xad\xc9\x94\x45\x3d\x9c\xb4\xce\xa7\x7d\xa9\xbb\xf9\x55\x88\x50\xd2\x80\xe9\x93\x1e\xcf\x5a\x19\xa2\x45\xc9\x12\xc5\xce\x1b\x69\x03\xd3\xf4\xfa\xef\xdb\x7b\xbd\xcf\xbd\xde\xe7\xaf\xad\xf7\x11\x4a\x9f\x70\x74\x8b\x9b\x3f\x9f\xde\x47\x69\x6b\xb0\xe2\x87\x33\x27\xa5\xd1\x79\xf1\xdc\xe0\x23\x6c\x18\xa6\xcb\x0f\x47\x53\x01\x23\xb5\x92\x77\x2b\x02\x85\xad\x69\x79\x29\xef\x78\x6c\xfa\xc5\x05\x17\xf9\x42\x2c\xe9\xca\x92\x83\x3a\xac\x66\xb4\xb3\x08\x20\x47\xed\xd2\xf1\x75\xd0\xd2\x37\xeb\x5d\xbe\x3c\x60\xd1\x62\x59\xa8\xc7\x6b\x09\x3d\x17\xd8\xec\xe8\xed\x92\x09\x1d\x43\xd2\x56\x70\x56\x1c\x8d\x21\x69\x87\xa3\x4f\xbe\x5c\x29\x26\xee\xa8\x3e\xa9\x46\xa7\xb4\x59\xa3\x0a\xce\xdb\xa8\x2f\x57\x36\xba\xed\x36\xba\x58\x16\xaf\xe8\x45\xfd\x30\x5f\xd1\x8b\xb2\x31\x9a\x59\xd5\x03\xac\x6f\x8b\x03\x95\x0d\xcd\xdf\x96\x35\x2e\xb1\x19\x9d\x68\x38\x39\x11\x3d\x8d\xe4\x9e\x18\x7a\x4f\x74\x0b\x80\x4f\x4b\x76\xae\x17\xcf\xf5\xae\xc5\x69\xa7\x35\xdc\x81\x2d\xea\xe9\xfd\x16\x75\xbf\x45\xfd\xb5\xb7\x28\x7d\x35\x41\x8b\xd9\x8d\xee\x25\x04\xf0\xdd\xbe\x4a\x2c\x89\xfe\xef\x0b\xff\xef\xbb\x04\xf1\xdf\x83\xd4\x6c\x9b\x0c\x44\x9a\x23\x5b\x40\x0b\x91\x2c\xc1\xc6\x65\xed\x8d\xd3\x64\x12\x4d\x25\x18\x0a\x85\x83\xa1\x65\x64\x15\x09\x76\x2e\x9e\xad\x19\x17\x34\x22\x51\xc2\xfc\xc8\x43\x81\x5b\xc8\x80\x44\x09\x72\x98\x7f\xb8\x4c\xc6\x7c\x8b\xc1\x50\x39\x4f\x95\x60\x8c\x15\x67\xd4\x06\x12\xa9\xaa\x2e\xee\xa0\x08\x43\x44\xa3\x20\x91\xd9\xdc\xeb\xa1\xd3\x1f\x99\xac\x84\x10\xf0\x99\xd6\xe4\xce\x40\xe9\xbc\xc5\x1b\x41\x50\x02\x6e\x9e\x76\xc9\x83\x07\x44\xfc\xee\x83\x4e\xf0\x68\xd2\x69\x6f\x5e\xb4\xb9\xeb\x92\xcd\x2e\x79\x46\x5a\xb4\x98\xb1\xdd\x03\x02\x93\x3e\xbf\x7c\x15\xe4\xb3\x16\x19\xda\xc9\x5c\xa3\xdb\xd2\x52\x02\x8a\xff\xf4\x63\x96\xce\x9f\xff\x06\x3d\x6d\x8b\x2e\xa1\xb0\x42\xcf\x2f\xa1\x61\xd6\xe9\xfd\x24\x3c\x64\xe5\x54\x34\x2f\x2f\x24\x1f\x87\x82\xd5\xe3\x59\x26\xe3\x98\xfe\x46\x03\x38\x66\x6d\xd5\x74\x1d\xc3\x94\x76\x5a\xce\x0f\x1a\xe7\x41\xba\x4c\x1a\x5d\x33\xdd\xc1\x38\xbc\x6d\x73\x12\xc2\x43\x29\x01\xe3\xa3\x72\xa6\xe0\x37\xec\xff\xb1\x6a\x10\x4d\x86\x33\x09\x18\xc0\xe8\xb3\xea\xde\xcb\x62\x76\xd7\x07\x84\xc6\x87\x83\x3b\x3a\x1b\x40\x00\xe0\xf2\xb3\x01\x57\x7d\x70\x2e\x1e\x51\x6f\x8f\x16\xb8\x33\x8b\x9a\x7e\x2c\x6e\xd0\x05\x74\xc7\xcd\xb9\x2b\xf7\x7f\x41\xb0\x87\xee\xc3\xe7\xfb\x6f\xad\x60\x64\x82\xa7\x72\xad\x0c\x7f\x40\x2b\x74\x33\xd7\x6b\x6b\xbc\x77\x7d\x6e\x19\xa5\xde\xd2\xbc\x2c\x66\x5a\x1b\xd4\x23\x6d\x1c\xba\xb9\xdd\x13\xc3\x9c\xd2\x62\x58\xa2\xf3\x94\xbe\x4a\xfb\xb8\xa0\x18\x49\x4f\xe8\xe9\x8c\xc2\x67\x41\x6c\x44\x19\xeb\x5b\x81\xb3\xcf\x82\xd8\x71\x46\xa2\xd2\xae\xd7\x00\x3d\x2b\x0d\x45\xf8\xf9\xbb\xc9\x60\x44\xd1\x9b\x0c\x47\x14\x6d\x38\xa0\x26\x67\x51\xc6\x5d\x82\x18\x2c\x37\x6b\x4f\x4e\x02\xd0\x3d\x3d\x49\x36\xe5\xe4\xab\x23\x14\xb2\xe6\x34\xae\xf0\x86\xe4\x44\x0b\x54\xfc\x7a\x4f\xb8\xd1\xfc\x51\xdf\xe6\xd9\x10\x38\xf2\x39\xe7\x27\x0a\x18\x85\x8e\xb4\xee\xb1\x86\xb8\x1a\x9e\xa7\x7c\xd6\x28\xa0\x92\x63\x73\x9a\x05\x53\xba\x5f\x34\x39\x39\x0b\xd0\x52\x1c\xf9\x20\xd4\xa1\xb6\x02\x4b\x7c\xdd\x71\x8e\x5d\xa4\x70\xb2\x5c\x05\x2d\xde\x81\x09\xe7\x8e\x35\x63\x62\x50\xa5\xc3\xb1\x32\x7f\xfb\xf9\xf6\x0e\x4c\xae\xfa\x3a\x7a\xe6\xec\xc8\x1a\x9a\x12\x19\x6f\x37\x2c\x5f\x6f\x7b\xce\x12\xd7\xf6\xaf\x6c\xf1\x92\xeb\xd5\xe8\x97\x35\x51\x4d\xbb\xb0\xff\xd6\x63\x02\xc0\x1c\x4c\x28\x89\xee\x6b\x60\x02\x91\xf2\x2d\x06\xdd\x5b\x2b\xa1\xec\xf9\x22\x8a\xf9\xe1\xad\x96\xbc\x05\x68\x05\x8d\xbb\x10\x12\x0f\x9b\xe5\xf4\x67\xcb\x6b\x0d\xe9\xd1\x2e\xe6\x74\xab\x4a\x64\x75\x3b\xb8\x75\xcb\x89\xaa\x9a\x1b\x39\x85\x2f\xe8\x38\x9a\x07\x71\x39\x2a\xb4\x14\xd8\x10\x09\xba\x40\x09\x51\xfe\x71\x07\x6c\x0a\x4f\x35\x83\x2d\x8f\x95\x5c\x72\x04\x03\xf9\xba\x72\xd0\xf5\x2b\x08\x55\x58\xcd\x3c\x3e\x7a\x4e\xa8\x2b\x8d\x49\x95\x72\x06\x57\x76\xf8\xfd\x23\x71\x9a\x9b\xe0\xe9\x3d\x1d\xd3\x68\xd1\x80\xcc\xdd\x32\x4d\x08\xc0\x05\xbd\x2d\x05\x88\x1a\x1b\x0f\xb0\xe1\x2a\xae\xe5\x62\x9e\xc1\xd9\x80\x4d\x28\x80\x8b\x45\x77\x24\x20\xd6\x2e\x6f\x76\x40\x7a\x1f\x9c\x37\x5f\xe2\x6e\x01\x3f\x22\x2a\xe1\x9a\x70\x36\x86\x07\x8f\x2c\xe4\x86\x96\xae\xeb\x6d\xa3\xae\xde\xbc\x9f\xf6\x4c\xf9\xd6\x98\x6f\x1c\xd1\x34\x59\x61\x1c\x26\x74\xc9\x38\x4a\x81\xbe\xf2\x38\x1a\x74\xbe\xbc\xc7\x77\x2e\x6b\x97\x10\x8e\x30\xee\xaa\xea\x28\x04\xfe\xf7\x76\xd4\xca\xb9\x49\x47\xd9\x5e\x70\x67\x27\x02\x33\x42\x7a\xd5\x98\x10\xa4\x7f\x68\x7e\x80\x9b\x50\x8c\x31\xc2\x5b\x71\xa5\x31\x97\x4f\x65\x5c\xf3\xba\x69\xe3\xd0\x7d\x19\xec\xbc\x64\x0a\xcd\x3a\x7d\x63\x2d\xed\xc8\xeb\xd7\xaf\x1b\xf6\x21\x2e\xa5\x20\x55\xd3\x4a\x2d\x7f\xa0\xd9\x82\xd6\x6e\x4f\x0a\x03\x1c\xba\x1a\x01\x0e\x4c\x45\x2f\xf2\xe5\x68\x1e\x15\x3f\xa7\x59\x9d\x94\xa4\x01\x4b\x56\xba\x2f\xbf\xfa\xea\xbb\x41\xab\x02\xaa\x74\x2b\x2e\x69\xcf\x3a\xe2\x38\xd7\xdf\x5a\xf1\xd3\xc3\x69\x4a\xd1\x61\xa4\x1e\xa4\xa1\x09\x06\x4b\xd8\x48\x01\xd9\xdf\x2a\x24\x0e\x60\x6e\x49\x5b\x7c\x70\x21\xf4\x51\xc2\xc8\x43\x05\xcb\xd2\x95\x60\x5a\x06\x20\x64\xa7\xb2\x6c\xab\x51\xd3\xa0\x17\x31\x12\x9d\xe8\x8a\x01\x28\xcf\xdc\xaf\xcc\x42\xa5\x25\x50\xf3\xe6\x8a\x76\x32\x5e\xbf\x7e\xed\x02\x73\xea\x47\x55\x2a\xc2\x34\x06\xcd\x12\xe0\x5b\x58\x38\xf0\x98\x6c\x4a\xd9\x5d\xe5\xa3\x59\xd3\x11\x23\x5d\xa5\x75\x35\x4d\x47\xd5\xc2\x8d\x92\x51\x90\x63\x45\x85\xe8\x00\x30\x4a\xb1\x6e\x05\x8c\x02\xb9\xee\xf6\x56\x68\x63\x1e\x25\xa6\x75\x8b\xd3\x82\x80\xb8\x61\xfd\xb3\x20\x9f\x65\x41\x51\x39\x86\x12\x98\x46\x3b\xc3\xea\x3d\x92\xb7\xb3\x15\x1d\xf2\x83\xd4\x9f\x33\xc4\x75\xb0\x79\xb8\x58\xbd\x87\xd3\x20\x7f\x97\x45\xe3\x4a\x9c\x95\xc0\xdc\x58\x09\xbc\x7a\x2f\x45\xd8\xa1\xbc\xaa\x97\x0a\xe6\x86\x6d\x8c\xd0\x15\x5a\x45\x33\xe5\x60\x5f\x89\x86\x64\x4c\x86\x7f\x70\x5b\x9b\xaa\xbe\xd9\xa0\xa8\x45\xcc\x42\x8c\x6b\x97\xfe\x58\xdb\x31\xa0\x2b\xcd\x51\x64\xbc\x58\x08\xc6\x45\x9a\x49\xf1\x47\x5a\x3e\x80\x19\x71\x8f\x30\x58\xc3\x96\x58\x40\xfb\x1a\x9b\x48\x4b\x07\xe7\x29\x6a\x0f\x3d\xb7\xe3\x50\x07\x19\x05\x4b\x25\x78\x3c\x76\x60\x99\xd3\xa3\x38\x45\xdc\x7a\x42\xd7\xc3\x50\x21\xc3\xcd\x5b\x37\x76\x3d\x69\x8e\xd1\xa7\xc5\xac\xd3\xed\xb9\x24\xfb\x3a\x9d\x22\xd9\xb8\x59\x97\x7c\x03\xd5\x86\x18\xd5\x2e\xf4\x25\xf6\x3b\xa2\x40\x7f\x1a\xa7\xa3\x20\xee\x33\xa4\xf6\x03\x37\x59\xc4\x3c\xf3\x35\x19\x8d\x83\xc5\xdb\x9b\x36\xcb\x0a\x3b\x8d\xf2\xc4\xaa\x26\x91\x55\x8a\x6e\xd0\x7e\xfa\x80\x63\x4a\xc9\x02\x1d\xff\xf4\xd4\x79\xa3\x7a\x59\xcc\xb4\x3d\x9f\x65\x98\xd3\x1a\x6e\x3d\xed\xb5\x1c\x03\x21\x61\xa0\xae\x2d\x73\x5a\xc3\xed\x6f\x20\x81\xcf\x69\x6b\xb8\xfd\x1d\xff\x54\xb4\xd0\x1a\xee\xf0\x22\xd1\x28\x48\x5a\xc3\x9d\x9d\x9e\x69\x3e\xf8\xff\xb1\xf7\xee\xfb\x6d\xdb\xcc\xa2\xe8\xdf\xc9\x53\xa0\xdd\xe7\x6b\xa4\x98\xb6\x75\xb7\xa3\xc4\x5d\xcb\x91\xed\xd8\x2b\x71\xec\x6d\x3b\x6d\xbf\xed\x9f\xeb\x1f\x25\x42\x16\x1b\x89\xd4\x22\x29\x5f\xd2\x78\xbf\xcf\x79\x8e\xf3\x62\xe7\x87\xc1\x85\xb8\x52\x94\x2f\x69\xda\x65\x7f\x6b\xa5\x22\x09\x0c\x06\xc0\x60\x30\x18\xcc\x05\x1e\xd9\x20\xfd\xd8\x6d\xb5\xe0\x99\x9b\x11\xfd\xd8\x6d\x51\xf0\x8c\xb3\xff\xd8\x6d\x51\xb4\xf8\x65\xef\x8f\xdd\x16\x69\x90\x1b\x01\xfd\xd8\x6d\x35\x6f\xcf\xbc\xe6\xab\x27\x7b\xc4\x27\x7b\xc4\x7f\xb6\x3d\xa2\xcb\x18\xf1\xde\x36\xf3\xe5\xcd\x04\x4b\xd8\x00\x42\xb9\x8f\x38\x7b\x4c\x13\x7b\x78\x3b\xdf\x64\x25\x37\xae\xbf\x8b\xcd\x4a\x09\x93\xfa\xd5\xd5\xd5\x3c\x26\x8d\x2d\xce\x0d\x4b\xd8\x48\x58\x3c\x80\xc3\xd9\x08\xf9\xd3\x50\xc2\xfd\x91\x0e\x24\x66\x32\x7a\x4d\xe0\x51\x33\xd6\xdf\x55\xb8\xc2\x38\xd1\x75\xe3\x46\x2b\xae\x42\x0b\x08\x7c\xb2\xf8\x65\x6c\x6a\x1f\x71\x66\xd9\xd4\xd4\xcd\x4b\xde\x5d\x6e\xcf\xbc\x56\xed\x69\xb7\x78\xda\x2d\xfe\xd9\xbb\xc5\x77\x6a\xbd\xfe\x70\x86\xe6\x25\xed\xe0\x73\x53\xce\x43\x9c\xa4\x71\xe4\x8f\x9f\xec\x39\x1f\xdb\x9e\xf3\xb6\x9c\x85\x5f\x84\xaf\x72\xb3\xc1\x22\xfd\x70\x5e\xd0\x54\x11\x4f\xd9\xac\x9e\x5b\x0b\xdd\xe3\x86\x32\x9c\x90\x8d\xe0\xc8\xbf\x7a\x8f\xe7\xdd\x5c\xc8\x45\x5f\x78\xcf\x9f\x3d\xd3\x71\x33\x0a\x14\x78\xa6\x95\xbf\x89\x33\xdb\x11\x1f\x24\xc3\xbd\x67\xcf\x4a\xde\x4d\x97\xbe\x82\xc3\x83\x23\x3c\x88\x2f\x69\x70\xa8\xa2\x3b\x2b\x5e\xce\x8a\xab\xfa\xb5\x60\x40\x66\xd1\x38\x1e\x7c\x2e\x47\x29\x4a\xd9\x02\x62\x71\x95\x2b\x63\xf0\x58\x6e\xdc\x9c\xa3\xf7\xc0\x37\xdf\xf9\xdc\xcf\xbd\xfe\x5e\xe4\x9a\xd3\x76\x6d\xec\xec\x52\xf9\xf9\x29\x37\x3b\xc5\x73\xb3\xc8\x5d\xa6\x3e\x37\x1a\xf2\x36\xc9\x9a\x35\x2c\x35\x22\x2d\xde\xfc\xad\x42\x41\xd2\xed\x09\xa7\x6a\xd7\x6d\x87\xf3\x52\x44\x02\x27\xcb\xbb\x8f\x77\x3e\xd8\x9c\xa3\x16\xce\xa7\x43\x2e\xec\x10\xcb\x4d\xb9\x9c\x6f\xb7\xb9\x70\x6e\x51\x11\x69\x5a\x21\x5d\x4e\xaf\x3f\xc9\xe9\x4f\x72\xfa\x3f\x5b\x4e\x67\x42\x7a\x3a\x72\x68\x75\xe6\x88\xdf\x38\xc1\xb3\x09\x01\xfd\xf3\x1c\x25\xd0\x20\x4e\xf0\x4a\x18\xab\x72\xfa\x5a\xe9\xc0\x09\x25\x1d\x2d\xe7\xf9\x6b\x42\xa1\xe3\xd1\xe8\xd1\xb5\x43\xdf\x8f\x3c\x4e\xb8\xe3\xf1\x48\xb9\xdd\xc0\x57\x2c\xe8\xf4\xce\xb7\xb8\xd0\x49\x47\xf3\x2f\x74\xd2\x11\x5c\xe8\x50\xc1\x65\x91\x7b\x9b\x22\x39\xdf\xbd\x39\x19\xe2\x81\xb4\x35\x5d\x5a\x6f\xea\x98\x88\x90\x8e\x46\xe7\xf6\x02\xaa\x51\x08\xb2\xe8\xb2\x8a\x1a\x0d\xa3\x61\xec\x6e\xd1\xf2\xf5\x7e\xcd\xa5\x38\xdb\xf7\xaf\x19\x11\x1c\x87\x5f\xf4\xcb\x61\xa9\xed\x79\x45\x55\xab\x9f\xbb\x20\x12\x46\x87\xf1\xaf\xc5\x08\xd8\x8a\xdc\xaf\xe1\x89\x9f\x7c\x3e\x49\x66\x69\x86\x83\x43\x6c\x5c\x06\x4b\xcd\x17\x17\xbc\x1f\x12\x11\x26\x32\xdd\xa1\x1f\x16\xb4\xef\x2c\x73\x3f\x0a\xf0\x83\xe0\x30\x09\x2f\xfd\x0c\xd3\x23\xa1\xa3\xf5\xa2\x62\xf7\xeb\x3b\x4d\xfa\x35\xb7\xfb\x45\xc5\xee\x87\xc0\xc8\x4f\xe7\xb6\xee\x2c\x73\xbf\xa6\x2f\x70\x46\x37\xf4\xc2\xb1\x2f\x28\x75\xff\xe6\x4b\xcc\x7d\x51\xb1\x7b\xd3\xfd\xf1\xcd\xa4\xb0\x71\x57\x91\x7b\x53\xfd\xbc\x86\x5d\x45\xee\x3b\xe4\x44\x8e\xcb\x30\x05\xbd\x93\xc4\x93\x43\x3f\x4d\xaf\xe2\x24\x28\x1a\xff\x92\x75\xee\xbd\x0e\xe6\x8d\x89\xab\xc8\xbd\xc9\x70\x5e\xc3\xae\x22\x0f\xc1\x7a\xe6\xb5\x5d\x50\xca\xde\xbc\x78\x58\x5d\x45\xe9\xac\x0f\x37\x6f\x34\xa5\xf1\x2c\xca\x9f\x27\x61\x9a\x86\xd1\xc5\xf3\xd2\xd8\x4e\xe3\x54\xbf\xba\x92\xb0\xb4\x7c\xb5\xe8\x29\x50\xb1\xde\x11\xcd\xbf\xe5\x3a\x1e\x8d\xa4\x04\x62\x9a\xed\x85\x72\x8a\xd6\x2c\x23\x5a\x8d\xa7\x33\xf4\xd3\x19\xfa\x9f\x7d\x86\xce\xef\xba\xfa\x5f\xbe\x68\x77\x5d\x9b\x63\x7c\x8d\xde\xe2\x04\x5f\xa4\x5f\xfc\xf4\x4b\x88\xde\xf8\x63\x7c\xfd\x9f\x49\x36\x4c\x57\x46\x33\xf5\x38\xdc\x61\xd1\x4c\x8f\xf0\x10\x27\x38\x1a\xe0\x2e\x22\xed\xa7\xdd\xd5\xd5\x8b\x30\x1b\xcd\xfa\x2b\x83\x78\xb2\xca\x4f\xdd\xab\x17\xf1\xb2\xf8\xdd\x1f\xc7\xfd\xd5\xf4\xca\x4f\x26\xab\x61\x94\xe1\x24\xf2\xc7\xab\xa4\x4b\xf8\x3a\xe3\xff\x5d\xb9\x88\xff\xd7\x87\x66\xf3\x91\xaf\xc6\xf2\xfb\xae\x63\x82\xcd\x3f\xfc\x70\x0d\x3f\xfe\x16\x97\x5d\xd4\xf2\x15\x67\x57\x71\xf2\xf9\x08\x43\xa8\xda\x22\x45\xb9\x5e\xdc\xd4\x96\xf7\xbf\x7c\x39\x2f\x28\x75\x1f\xdf\xbc\x9b\x68\xb0\x1d\xf9\xfd\x31\x9e\x87\xa5\x54\xd2\x8e\xa0\xbd\xc0\x7d\x70\xbb\xf2\xa7\x25\x71\xcb\x4b\x3a\x70\xb3\x16\xb8\x07\x6e\x41\x7c\x15\xb1\x28\xc4\x45\x88\xf1\x62\x76\xac\x2c\x5f\xcb\xbb\x9b\x3a\x10\x9b\x4d\x4b\xa0\x45\x0b\xd9\x91\x32\xbe\xdd\x1b\xa5\x04\x67\x49\x88\x2f\xe7\x45\x80\xe0\xc5\xec\x68\x59\xbe\xde\x87\xb4\x32\xb2\xdb\xcd\x21\x2a\x52\xc6\x41\x4e\xda\xa7\x7b\x0f\xd1\x05\x2e\xe1\xce\x6c\xc7\x45\xfd\x70\x8f\x31\xa1\xd9\x1b\xe6\xc4\x48\xb5\xe3\xa0\x7e\xb8\xf7\x68\xb0\x84\x2d\xc5\xc8\xd0\x42\x76\x7c\x8c\x6f\x1c\xa5\x56\x29\x94\x0a\x6e\x75\x0d\x15\xa7\xce\x96\xa5\xdb\xbf\x9c\x1f\x4a\x2f\x73\x46\x94\xbf\xe4\x7c\x40\xba\x71\x9c\xaa\xcf\x9c\xfa\x25\x40\x84\x04\xf3\xc7\x0b\x2c\x5d\x4c\x4e\x67\xd2\x83\x24\x8b\x3f\xea\x35\xe3\x28\xbc\x74\xfa\xc6\x90\x39\x81\xef\xce\x33\x64\x31\x6c\x8b\x52\x56\x81\x0d\xdf\x1d\xc7\x2b\xcb\xf9\x8a\x08\x4b\xb6\x60\xb7\xd6\x7b\xc9\xe6\xd3\x99\xea\xe9\x4c\xf5\xcf\x3e\x53\xb1\x03\x15\xbf\x20\xfa\xb6\x51\xda\xef\x62\x58\xcd\xbd\xa3\xfc\x69\xc8\x85\x71\x9a\xe2\x2f\x1b\x15\x59\xa0\xd1\xeb\xb2\xc2\xa8\x94\xbc\x74\x76\x33\x25\xf2\x01\x8b\x40\xf9\xfa\xb9\xc4\xc0\xc3\x6c\x30\xaa\x90\xef\x7a\x6e\x91\x81\x9f\x62\xf4\x82\x50\x7c\x9a\xbd\xe8\x2a\x9f\x60\xb2\x92\x8b\x74\x25\x1d\x85\xc3\xac\xa2\x25\x14\x41\x46\x72\xc0\x9a\x59\x80\xb1\x64\x70\x5f\x8b\xf0\x15\x8d\x40\x45\x2f\x64\x5f\x5b\xd0\x98\xe2\x28\x08\xa3\x8b\x47\xc7\xe3\x90\xb6\x23\xdb\x10\xd9\x90\x62\xa1\x03\x4d\x6c\x34\x70\x46\x65\x9a\x60\xe5\x56\x92\x0e\x44\xa9\xf9\x96\x84\x0c\x9a\x2e\x23\x28\xa4\x60\x91\x9d\x2c\x52\x75\x14\x46\x69\xe6\x8f\xc7\xa5\x5a\xd6\x4a\xdb\x7d\xdd\xdd\x85\x0a\xf0\xb8\xc0\xd9\x87\xf8\xa2\x44\x40\x31\x52\xca\xe9\x63\x4f\x5b\xd4\x8a\x14\xb4\x3a\x8d\xe7\xc6\xe1\x20\x45\xe6\xb4\xd7\x1b\xf9\xd1\x05\x2e\xd1\xa4\x4d\xf8\xa0\x20\x64\x93\x2c\x65\xf4\x14\x41\x88\x74\x4c\x6a\x24\x1e\x8f\x65\x79\x60\x61\x7e\x93\x8e\x46\x2b\xc0\x1a\x0d\x76\x93\x8e\x4c\x76\xe3\x16\x9f\xe6\xdc\xd2\x18\x64\x80\x8c\x5b\x1a\xc5\x92\xe0\x41\xd5\xf4\x6e\x62\x44\x36\x4d\xfd\xe3\x21\x62\x92\x2e\x32\xae\x29\x68\xb3\x0c\x07\xbd\xe8\xfd\x9a\xd7\xc8\xf8\x01\xda\x96\x49\xcf\x90\x44\x29\x0e\x38\x1b\x75\xc9\x3f\x14\x58\x3a\x1a\x75\xc9\x3f\x54\x78\xb5\x25\x64\x68\xb5\x9e\x44\xd2\x27\x91\xf4\x1f\x2e\x92\xe6\x7a\x7e\xee\x63\xfd\x40\xd9\xa2\xa9\x7f\xf8\x11\xbe\x20\xf3\xec\x27\x9b\xfd\xd0\x91\x97\x20\x5d\x7d\xa7\x16\x85\x44\xff\x5c\x3d\x1f\x0e\xfc\xa9\x0c\xc4\x05\x63\xaf\xb7\x79\x68\x42\x90\x30\x61\x8e\xe8\xcc\x7a\x19\x6d\xa0\x17\xb5\xeb\x41\x27\x78\x15\x34\x06\x41\xab\xf5\xca\x5f\x6b\xb7\x06\xad\x57\xad\x46\xa7\x85\xeb\xeb\xb5\x57\x83\x76\x0d\x37\x5b\x41\xa7\xd5\xee\x34\xfa\x2f\x72\x5c\x6c\x60\xfc\xba\x5f\xaf\xd7\xfb\x83\xda\x5a\x6b\xf0\x6a\x30\xf4\xd7\xd6\xeb\xc3\xda\xa0\xb9\x8e\x3b\xcd\x7e\xd0\xae\x0f\x5e\xd5\xfb\xeb\xfe\xb0\x56\x7b\xe1\xe6\x4d\x14\xc7\xae\x24\xe9\xfa\xfd\xb0\x6b\x19\xc4\x9c\x13\x32\x37\xf8\xae\xb5\x7f\x74\xa7\xa7\x85\x09\xda\x06\x64\x7d\x5c\x2d\x70\xcd\xee\x52\xa8\x0a\xc7\x2c\x9e\xc5\x1f\xbb\x75\xef\xc7\x39\xf3\xf4\x63\xb7\x41\x98\x6d\xfb\x89\xd9\x3e\x31\xdb\x7f\x36\xb3\xcd\x79\x2d\x57\x7e\x69\xcc\xb6\xc8\x30\x79\x98\xc4\x5f\xf0\xc4\x8f\x56\x02\xfc\xf3\xb7\x4a\xe7\xaf\x5f\x90\xde\x27\x5d\x3f\x55\x24\x4a\xdf\xe9\x0b\x25\x23\x81\x56\x22\xd5\x4b\xdc\x25\xf7\xfe\xe2\x19\xfe\x0b\xb2\xf5\xf3\xb1\x78\xfc\x7c\xfd\x65\x73\x7c\xdf\x3b\xc5\xb7\xa5\x4b\x05\x49\xbe\x6d\xa1\x5b\xb4\x11\xfe\x0f\xdb\x5b\x5a\x17\xd2\x6d\x7f\x27\xe9\xb5\x9d\xfd\x7e\xa0\x04\xdb\x3f\x6c\x50\xc2\xd1\x5e\x91\x0d\x65\x18\x46\x38\xb8\x4f\x06\x6e\x9e\x39\x36\x8b\x11\x4b\x5b\x9d\xa7\xb3\x86\x74\xdc\xe2\xb0\x2d\x12\xb2\xae\xa0\x7d\xb2\xb1\x85\x38\x65\x94\x04\xc3\xa4\x8d\xa5\x96\x03\x7b\x6e\x36\x7d\x3e\xae\x3b\x6c\xa4\xbe\x7e\x9c\x8d\xc7\xb7\x92\xb1\x7b\x38\x44\xf8\x3a\x4c\xa1\xb8\x75\xc8\xb5\x16\x0b\x73\xca\xf3\x0c\x36\xbc\x35\x9a\xc3\x46\xce\xbb\xbf\x8c\xea\x67\x55\x47\x9a\xf9\x95\x69\x3c\xad\x54\x21\x6f\x35\xbb\xf7\x22\xfc\x1f\xd6\x13\x8c\xd6\x0f\xb2\x70\xa3\x0e\x37\xb5\x6f\xc8\x31\xcb\x62\x3b\x29\xaa\x76\x10\x2e\x62\x64\xaf\x78\x2f\x9c\xd4\x58\x3e\x7d\x37\xd4\x11\xa2\x24\xe2\x09\x4a\xf2\x74\xde\xef\x70\x56\x91\x4e\xe7\x38\x9a\x4d\x70\xe2\xf7\xc7\xb8\x8b\xb2\x64\x86\x4d\xd5\x9f\x3f\xc1\x69\x61\xaa\x6e\x29\x9f\x37\x14\x06\xe5\x2d\x92\x72\x78\xa7\x73\x92\x78\xa7\x5a\x16\xef\xd4\x91\xc6\x5b\x2f\xf2\x5a\xd1\x88\x89\xe6\xeb\x3c\x7b\x3f\xed\x84\x3d\xbb\x4b\xdc\xff\xc3\x83\xf2\x1e\x1d\x32\xd6\x17\x02\xdf\x4f\x6f\xa2\xc1\x3b\xd8\x6f\x88\xc8\x0b\x5d\xa8\x9e\x29\x39\xd1\x37\x59\x91\x8a\xe4\xa6\xa1\x55\x53\x26\x09\x40\xa8\x2c\x03\x6e\x97\xd1\x12\xe0\xb0\x32\x18\xf9\xc9\x66\x56\xa9\x55\x57\xb2\xf8\xd3\x74\x8a\x93\x9e\x9f\xe2\x4a\x95\x7f\x86\xac\xca\x95\x7a\xd5\xb9\xf1\xf0\x99\x75\x67\x1e\xcd\x37\xee\x3c\x8d\x2a\x8f\x88\xc6\x6b\x5c\x90\x0e\x99\x2b\x46\x08\x28\x4a\x82\x6d\xf1\xd6\x96\x62\x5b\x55\xf4\xf0\xcc\xf6\xa2\x0a\xdd\xee\x25\x8d\x4d\x9e\x8a\xbb\xa8\x83\x7c\xd4\x17\xeb\x65\x7e\xd7\xef\x0e\x02\x86\x72\x33\x27\x6b\x87\x68\xda\xf3\x05\x7b\x55\x32\x3d\xba\x9a\x12\xdd\x3e\xd8\x66\x52\xf4\x5b\x35\x7b\xf9\x05\xce\x16\x4c\x5e\x7e\x81\x5d\xdb\xc9\xf7\x9d\xbb\xdc\x42\x1c\xe5\xb3\x97\xeb\x66\x73\x5d\x59\x1e\x35\x95\xe4\xa7\x67\xaa\x7a\x9d\x4c\x13\xab\xa2\x6d\x56\x25\x13\xa1\xcb\x53\xf6\x58\xe9\xd0\xf9\x00\x49\x07\x73\x2d\x66\x0f\x39\x62\x77\x9e\x8e\xd8\x4f\x47\xec\x7f\xf6\x11\x5b\xd2\x67\x32\x0e\x31\x61\x2c\x5d\x3d\x69\xff\x17\x1e\x0e\x13\x7c\x83\x7e\x0d\xc7\x83\xcf\x18\xbd\xf9\x03\x0f\x87\xae\x68\x3d\x0b\x85\xf6\xd9\xf7\x13\x72\x84\x3f\xf0\xa3\x01\xf6\xa1\xac\x2d\xa8\xcf\x1d\xe2\x00\xb1\x2a\xef\xfc\x4b\xf4\x6b\x1c\x07\xe8\xcd\x85\xf3\x90\xdf\xca\x0f\xf9\xff\xc5\xb8\xa9\xe2\x3c\xcc\x58\x6c\x51\x4a\x5b\x4b\xa0\x3a\x3d\x0b\xad\x2d\x05\x2d\x4e\x92\x58\x0b\x1e\xb4\x4a\xdf\x51\x1b\x04\xba\xed\xec\x65\x2f\x52\xb2\x31\x4e\xe3\x28\x0d\xfb\x63\x4a\x60\x53\x1f\x9c\x48\xd0\x84\xdd\xf9\x90\xbd\x68\x9a\xc4\x97\x61\x80\x93\x54\xd4\xf2\xc7\x69\x6c\x56\x8d\xc7\x63\x52\x95\x50\x1b\xb7\x1e\x47\x51\x1c\xd0\xaf\x61\x34\x88\x27\x32\x64\x02\x8c\xe5\x14\xa0\x57\xae\x59\x38\xc1\x64\xb1\x85\x29\xaa\xa3\x14\x0f\xe2\x28\x80\xdd\x31\x8c\x2e\xc6\x38\x8b\x23\x18\x4e\xd2\xbd\x82\x83\x3e\x47\x55\x39\xee\xf3\x97\x68\x43\x74\x45\xd2\x33\x90\xb6\x41\x03\x7c\x2b\xbd\xe4\xb8\xc8\x5a\x07\xe7\xe1\x8f\x48\x28\xa3\x24\x8e\xe2\x59\x3a\xbe\x81\x30\x18\x8e\x7d\x98\x7c\xb2\x9c\x47\x50\xe0\x67\xbe\xf3\x84\xac\xf6\x56\x51\x79\x44\x81\xd2\x79\x02\x46\x3e\xa9\xfd\xa0\xf4\x5e\x49\x6e\x18\x47\x69\x4c\xb6\x2e\x42\x14\x15\x4a\x1a\x2b\x7b\xd1\xa5\x3f\x0e\x83\x43\x56\xbe\x22\xcb\x3c\xdc\x0b\x1b\x06\x43\x92\xf0\xd5\x3d\x9e\x91\xf9\x4a\x16\x1f\xd2\x77\x80\xd2\x0a\xed\xbd\x07\xdd\x64\xc6\x16\xd2\xf9\x85\x9d\xca\x37\xd4\xb9\xa2\xc2\x2c\x03\xcd\xaf\xca\xa1\x53\xbc\x91\x30\xfd\x85\xa0\x7b\x44\xa9\x10\x0b\x41\x4d\xea\x66\x36\x4a\xe2\x2b\xa4\x76\x4f\x2f\xaf\x74\x87\x75\x93\x7e\x5a\x29\x75\xf2\xf7\x17\x9a\x7d\x90\x66\x0b\x49\x40\x3f\x97\x0a\xe9\x67\x3e\x31\x00\x70\x83\x22\xa4\xe0\xb9\xa5\x68\x83\xa7\xce\x94\x64\xe3\x22\xea\x78\x18\x42\x30\xe7\x9e\xca\xfd\x0c\x64\x09\x79\x9e\x74\x0a\x27\x89\x2e\xe2\x5b\x7a\x53\xd5\xcd\x6d\xc8\x9f\x02\x67\x11\x1a\x9b\x3f\x64\x46\x6d\xb9\x7d\x43\xc8\x65\xd9\x5e\x15\x12\xd4\x83\x73\xba\x8f\x0d\x36\x6a\x2c\x3a\x19\x90\x02\x6f\xc9\x77\x8b\x92\x89\xd6\x7b\x08\xc2\x84\x16\xbe\x33\xc2\x04\x9c\x64\xea\xe4\x4c\xe6\x6e\xa4\x98\x3e\x00\x2d\xaa\x34\xc8\xf5\x6c\x30\x1b\x15\xde\xca\xbd\x48\x2f\x9d\x47\x7b\x4a\x87\x04\xd1\xa1\x39\xdb\x1f\xce\xc4\xbe\x4a\xa4\x4d\x7e\x26\x64\x22\x9f\x41\x71\x19\x9f\x2a\xbb\x6a\xae\x90\x96\x44\x5d\x75\xd7\x77\x6e\xf7\xf3\x76\xee\x8c\x1c\xa9\x98\xe0\xa2\x23\x4a\xbe\x1d\x8a\x4f\x73\x39\x36\x8d\xfd\x7f\x0b\xd0\xf6\x82\xb9\x4b\xc6\xf2\x55\x98\x25\x71\x4c\xb2\x38\x88\xd1\x60\x8c\xfd\x68\x36\x45\x11\xc0\x27\x03\x2c\x8e\xed\x45\x43\x25\x61\x6f\x59\x79\x14\x49\x39\x20\x8a\x68\x5c\x1d\x4b\x22\x1c\x9d\xd2\xd2\x67\x44\x48\x22\xd5\xbb\x88\x02\x09\x83\xae\x01\xa8\x6b\x03\xd9\xcd\x7f\xde\xf2\x9c\xd8\xab\xab\xfa\xe8\x2b\x0c\x80\x09\x60\xea\x6e\xce\x10\xaa\x88\x15\x3e\x67\x72\xe3\xa9\x10\x4a\x89\x08\xca\xcc\x68\xe1\x74\x73\x11\x92\x23\x5d\xa8\xeb\x8e\x49\x1d\xcb\x9c\x1b\x73\x5b\x38\xf2\x02\x84\x4a\xa4\x50\x97\x77\x88\x5a\x96\x59\x06\xf9\xb5\x34\x3c\x39\xfe\x6c\x74\x2a\x4c\xa3\xfa\x19\xdf\xa4\x95\xbc\x6e\x95\x6b\x79\x21\x59\x3c\xfa\xe9\x27\xe4\x1a\x43\x42\x4c\xc9\x09\x7d\x5f\x51\x0a\xbd\x56\xc7\x59\x17\x80\x0b\xc6\x3b\xdf\x7d\x12\x4c\x78\x01\x91\xff\xf9\xb0\x4f\xf0\x60\xe4\x47\x61\x3a\xe1\xc7\xd0\x62\xe6\x00\x00\x8a\x87\x97\xb6\x21\x0f\xec\x67\x8c\xa7\x22\x7f\x00\xef\xec\xea\xcb\x3f\xd2\x51\x18\x91\x86\xae\x07\xf1\x64\x3a\xc6\xd7\x61\x76\xd3\x6d\xc3\x91\x8c\x14\x20\x04\x51\x21\x9b\xc3\x67\x7c\x43\x35\x05\x62\x34\xa5\xf1\x5a\x5d\x45\x09\x9e\xc4\x97\x18\xf9\xe3\x31\xf4\x2a\xf5\x10\xbe\x1e\xe0\x69\x06\x62\x3f\x7b\x25\x97\xcf\x46\xf8\x06\x45\x98\x8e\x48\x1f\xb3\xfa\x01\xe9\xf1\xcc\x1f\x8f\x6f\x50\xff\x06\x86\x8c\x0c\x0f\x4b\x05\x00\x34\xf3\x2b\xd9\x90\xc2\xe8\xa2\x52\x95\xf6\x81\xca\x0f\x4a\xef\xd0\xd7\xaf\x04\xdf\x95\x30\x0a\xf0\xf5\xc1\xb0\x02\x6e\x8a\x84\xd8\xce\x5f\x54\x61\xf2\x97\xeb\xfa\x06\x21\x51\xd8\x67\x7c\x73\xb6\x22\x56\xa2\x6e\x0e\x6d\x52\x24\x29\x6f\x98\x26\xff\x8d\xc9\x13\x4e\x99\x64\xde\x07\xd4\x36\x17\xc5\x51\x19\x9e\x40\x4d\x6a\x8b\x68\x92\x59\x0c\x9b\x2a\x50\x07\x15\xa2\x0e\x01\x67\xe9\x4c\x8a\x33\xa5\xf7\x04\xb0\xa4\x8a\xf4\xd0\x60\x65\xfb\x64\xf7\xfc\xf0\xe0\xc3\x87\xbd\x8f\xef\xce\x4f\xf6\xf6\xb7\x0f\x3e\x9d\xc8\xc7\xa3\x32\x33\x60\x0a\x55\x8a\xc4\xf4\x28\x47\x47\x53\x26\x23\x78\x6d\xf9\x99\x8f\x36\xd0\xe9\xd9\x6b\xf5\xfd\x1e\xb8\x1b\xf3\xd7\xe5\x96\xaa\x00\xb8\x32\x9d\xa5\xa3\x8a\x4e\xf7\x4c\xc4\x53\x4a\xef\x05\x29\x2d\xfc\x19\xdf\x54\x8d\x31\xc8\x01\x2e\x30\x78\xa5\xc4\x4d\x01\x99\x35\xca\x97\xd4\xc4\x9f\x2a\x4c\x32\x04\xb2\x05\x86\x02\x24\x46\x48\x53\x1d\xa6\x7d\x7f\x2a\xa9\x2e\x24\xbd\xb6\xea\x29\x4e\x05\x57\xe0\x1a\xd5\x3f\xf5\x31\xd8\xf7\xa7\xa7\x50\x2d\x84\x2d\x9e\x8f\xcc\x29\x14\x3f\x93\x3c\xd2\x45\xe3\x8a\xdf\x3c\x5a\x58\x66\x8e\x55\xa9\x59\x09\x6f\x72\x72\xb0\x75\xd0\xe5\x44\x86\xc6\xf1\xc5\x7f\xe8\x52\x75\xec\x90\xab\xef\x2b\x49\x97\x50\x16\xa4\xd6\xa3\x23\xfb\xb6\x32\xf1\xa7\x15\x97\xb1\x02\xff\x03\xfb\xc5\x20\x1f\x65\x32\xf6\xec\xa8\x17\x06\xb2\xe3\x8d\xa0\x88\xcf\x18\xa5\xb3\x04\xf4\xc4\x9c\x59\x85\x29\x4a\xb3\x90\xd0\x03\xe5\xe4\x38\x40\xfe\x10\x1c\x84\x92\x24\xbc\xf4\xc7\xda\x5e\xab\xc0\x24\x03\x02\x6e\xff\x74\x69\x84\xc1\x99\x8e\x62\xde\xa5\x95\x41\x6e\x0f\xa0\xd6\x11\x5f\x9c\x0e\x33\x5c\x77\x22\x7f\xba\x45\x78\xcc\xf4\xcc\x96\x1a\x43\x7f\x9c\x62\xf9\x96\x8d\xb9\x3d\xcd\x1d\x53\x91\xce\x9f\xb5\x89\xee\x00\x83\xcc\x0b\xcc\xb8\xb4\x68\x1d\x87\xff\xd7\xc6\x78\xfe\x00\x35\x4b\x8c\x63\x79\xc5\x00\x52\x28\x4c\xea\x25\x54\x54\x47\x49\x5b\xec\xee\x61\x52\x71\x71\xeb\x19\x90\x7c\xc9\xe9\xca\xb8\x74\xa4\x07\xd5\x50\x6f\xbc\xb4\xd4\x4b\x66\xea\x0a\xa6\x90\xfe\xb1\xdb\x80\xd0\x3e\x4c\x19\xfe\x63\xb7\x09\x6e\xa8\x6b\x65\xee\xc8\x58\xcc\x4d\x9c\x65\x61\x74\x61\xf7\xec\x05\xc6\x14\x48\x99\x6b\xd1\x86\xf0\x59\x7b\x6d\x94\xc8\x23\x3d\x0b\xfb\x20\x57\xd0\x22\xd6\x28\xeb\x37\x41\x79\xfd\xe9\x5a\xef\xe9\x5a\xef\x1f\x7e\xad\xc7\x22\xfa\xb2\x53\xcb\x5d\xa2\xfa\xce\x33\x87\x75\xe4\xbe\xd0\x52\x5f\x2c\x62\x38\xcb\x97\x74\x9d\x1d\x0e\x36\x83\x20\x85\xa1\x13\xbb\x9b\x1f\x81\x5a\x2a\x45\x33\x2a\x7e\x31\xa7\x37\x8f\x08\x5f\x61\x06\x91\xf2\x10\x24\x05\xa0\x9b\x2a\xdd\xed\x9f\x3f\x97\xcf\x07\xec\x7c\xf6\x5c\x57\x12\x91\x6d\xf3\x39\xbb\xb6\x92\xca\x49\xbc\x8a\xc6\xe9\xe1\xae\x74\xa4\x5c\x1c\x31\x87\x2b\x85\xa3\x31\xb9\x89\x8c\xbd\x45\xd5\xe8\x12\x8a\xe8\xbe\xcd\x7b\x9a\x5a\x36\x0b\x9b\x3d\x0e\xff\x53\xf7\x2d\x7d\x7b\x72\xe9\x2e\x85\x85\x20\x0f\x44\x04\x28\xff\xf4\x13\xe0\x4e\x15\x53\x61\x74\x01\xdc\xb8\xaa\x40\xe4\xd7\x17\xf3\x52\x9a\x52\x88\xb2\x97\xf2\x5d\x3b\x29\xa4\xa1\xb1\x9f\x42\x33\xc7\x19\x99\xec\x1f\x36\x36\x8c\x81\xe6\x7f\xc6\x8b\xd5\x55\x9a\xb9\x5d\x21\x29\x58\x6a\x59\x32\x23\x32\x5b\x92\x66\x28\x8d\xa9\x9d\xe3\x74\x0a\xac\x1b\xce\xce\x7e\x74\x93\x91\x03\xbf\x87\xfa\x78\x48\x18\x00\x5d\xe2\xfc\x0a\x15\x46\x83\x2a\x19\xb5\xbf\x70\x58\xf9\xc1\x82\xf5\x4f\x3f\x21\xdb\xc8\x57\x8d\xfa\xc8\xbc\x6e\x20\xa8\x5a\xdc\xa3\x9d\x9d\x8d\x29\xdf\x8c\xf0\x75\x86\x7a\x87\x9f\xd0\xe0\x66\x30\xc6\x9e\xe8\x26\x0c\xbb\xd8\x6c\xa0\x27\xd0\x65\x66\xb3\x34\x4d\xe2\x01\xe1\x59\x29\x1d\x1d\xa3\x15\xe9\x18\x2c\x96\x89\x6d\x2e\x2c\x1d\x61\xa4\xa1\x97\xba\xf5\x50\xad\x4c\xff\x2c\xc3\x4a\x49\xc1\x25\x9a\x49\xc6\x60\xcf\x05\x00\xdd\x8c\x4d\xd2\xc5\x56\x4c\x3b\x28\x47\xba\x5f\xdd\x12\xea\xd6\xcb\x85\xf0\xbd\xc0\xcb\xd9\x04\x7b\x2f\xeb\x90\xa8\xce\x00\x38\x0b\x59\x27\xdc\x4e\x72\xcf\x9a\x96\xd3\x99\x6b\xb3\xd8\x64\x5e\x93\xff\x90\xac\x6b\xda\x23\x72\xb4\xa4\x9c\x5a\xa2\x5c\x78\x69\x49\x2a\x27\xd6\xab\x74\xd2\x87\x0f\x7e\x10\x08\xdb\x2e\x29\xef\xa7\xf8\xae\x4f\x8f\x74\x70\x90\x58\x2c\x37\xde\x82\xf7\x92\xad\x38\x15\xe8\xc4\x48\xc8\x96\xbe\x79\xbb\x85\x16\x8b\xe1\x30\x7f\xa5\x6a\xa5\x72\x16\x04\x5a\x05\x0d\xf9\x52\x48\xc8\xb3\xe8\x96\x68\x0d\x02\x13\x2a\xe7\x8a\x34\x07\xd5\x82\xd1\xb6\x4a\xb5\x02\x21\xb7\x01\x1b\x91\xd5\xd5\x6c\x17\x44\xf6\x7d\xca\x51\xfa\x24\xfb\xfe\xd3\x65\xdf\xdc\xa4\x8d\x27\xec\x7d\x28\x1f\xdd\xbd\xbe\x1f\xa9\xd2\x6e\xd8\xf7\x85\xeb\x2d\xbe\xa6\xea\xea\x22\xd7\xdd\xe3\x89\x9f\x64\xdb\xac\x60\xee\x76\xeb\xbc\x1a\x03\xb5\x12\x34\xcb\xfb\xa2\xe9\xbc\xa5\xd7\xe2\x12\xec\x38\x4b\xc2\xe8\xe2\x16\x5c\x5b\x6c\xef\x89\xb4\xdc\xf7\x23\xf9\xd3\x2f\xfe\x78\x86\x6f\xd1\x25\xf9\x0f\xbb\x0e\x21\x90\x87\x38\xc1\x73\x6e\x48\x3d\xd5\xbc\x00\x82\xd4\x30\x9c\x54\xb1\x38\x1b\x79\x80\x11\x91\xd6\x3d\xda\x92\xb9\x85\x81\xda\x8d\x8e\x32\x64\x9b\xee\xfb\x51\x25\x8b\xab\x4c\x55\x04\x3a\x1c\xf2\x99\xab\x7c\x2a\x16\x2b\x22\x52\x0f\xd2\x44\x54\x5e\x84\x54\x7d\x43\x21\x32\x3f\xdd\x17\xa6\xfe\x98\x41\xdc\x0a\x13\x22\x8b\xd9\x1c\x62\x78\x8f\x4e\x62\xe6\xd9\x2b\x77\x07\xaa\x33\xe8\x95\xaa\xd9\x35\xde\x9e\x90\x63\xa0\x1b\x36\x49\x17\x5c\x24\x84\xa7\x34\xce\x46\x72\x4a\xf0\x4a\x15\x1a\x61\xd8\x46\x69\x16\x66\x33\x2a\x70\x99\xe6\x5f\x01\x9e\xc6\x69\x98\xc9\x58\x32\xb8\x02\x3d\x00\x33\x18\x87\x38\xca\x74\x4b\x8c\xd2\x0d\x1b\x26\x16\x3c\xd5\xb8\x39\x82\x8b\x62\x64\x8e\x1f\x57\xc1\x17\x5e\x25\x0b\xd2\x1b\xce\xa2\x00\x6c\x22\x07\x38\xc9\xfc\x50\x4c\xbf\x63\xf9\x88\x89\x5d\x6c\x1d\x3d\xfa\x12\x12\x78\xdd\x61\x2d\xb1\x91\x27\xb3\xa9\x65\xfc\x92\x64\x5b\xe1\xbd\x9e\xc5\xb9\x44\x4b\x40\x77\x69\x03\x12\x6d\x8e\x67\xb8\x4b\xff\xc3\xc5\x5c\x2d\xd9\xbb\x73\x56\xd8\xe4\xe7\x93\x02\x71\xed\xc3\x01\xe2\x9c\x10\x71\x0e\x89\x2a\x93\x59\x9a\xc1\x56\x87\x27\x38\xca\x04\xdd\xf4\x6f\x32\x9c\x36\x1b\x55\x26\x8c\xff\x50\xd5\x26\x92\x95\x7b\xf0\xe9\x23\x93\xa0\x4d\x20\xaf\x4f\x49\x15\xcd\xa2\xf0\xbf\x67\x18\x85\x01\x8e\xb2\x70\x18\xaa\xac\xb8\xd4\x64\xf3\xe1\x29\x31\xc5\xd0\xa4\x9d\x6d\xfa\xb0\xed\x48\x9b\xd0\x6b\x9d\x0a\xf8\x20\x57\xfc\x7e\x58\x5d\xf1\x33\xc2\x59\x57\xf8\x00\x73\xd0\x7f\xde\x97\x0a\x0c\x61\x95\x0f\xa3\x35\x0a\x82\xb9\x21\xfe\xd8\x6d\x12\xd9\x95\x67\xee\xbf\x3d\xf3\xda\xa5\x72\x25\x33\xf5\x6e\xbb\x54\xc2\xb6\xd7\xb2\x16\x3e\x26\x02\xc6\xd0\x1f\x64\x71\x72\xe3\x51\x8d\x32\x19\xd8\x67\x84\x4f\x13\x59\x3f\x1e\x22\xd1\x9b\x8d\x0d\xf4\x23\x8d\xc8\xf4\x23\x94\x79\xb6\xba\x8a\x7a\xf1\x64\x12\x47\xff\x75\xfc\xfc\xd9\x33\xa3\xf3\xf9\x2f\xd6\x00\xc7\xa9\xf2\x23\x19\x86\x04\xff\x58\xf5\x90\xf4\x0a\x47\x83\xe5\xbe\x9f\xe2\x4e\x4b\xfb\x30\x09\xda\x7a\xd1\xcb\xe9\xe7\x60\xa8\xbd\x1c\x84\xd3\x11\x4e\x96\x29\xe4\xea\xeb\xe7\xcf\x6e\x9f\x3f\xc3\xe3\x14\x23\xa9\x33\x54\x63\x4e\xfb\xc2\x87\xe1\x47\xf4\xd3\x4f\xec\xc3\x8a\x3f\x09\x44\xdf\x36\xf7\xb7\x9e\x3f\x7b\x46\x3f\x54\x4e\x39\xce\x1e\x52\x51\x85\x67\x82\x21\xfd\x40\x11\x83\xdf\x32\x3e\x67\x62\x94\x65\xc4\x58\x43\x34\x1c\x06\xaa\xf4\x93\xf8\x2a\xc5\x49\xf5\xf9\xb3\x67\x62\xc4\xe2\x38\x5b\xe9\x25\x37\xd3\x2c\xfe\xaf\x63\x5a\xf5\x16\x8e\x4f\xf2\xfe\x23\xbe\xa3\x3f\x9f\x3f\x7f\x56\x51\xcf\x63\xcf\x10\x55\x89\x1c\x8f\xe2\x24\x1b\xcc\xb2\x94\xbe\x21\xcb\xa6\x87\x36\x10\xaf\xfb\x5a\x7a\x7d\x3e\x0e\xfb\xe4\xd3\xca\x38\xec\x4b\xef\x41\x1b\xd6\x83\x4e\x91\xaf\xa4\xd4\x8a\xf4\x4e\x81\xe0\x8f\x2f\x62\x00\x41\x7e\xbc\x7e\x2e\xb0\xf8\x10\xc7\x9f\x67\x53\x94\xf9\xfd\x31\x96\x30\x39\x7e\x7b\xf0\x1b\x3b\xf4\x89\x77\x7b\x1f\x7f\x39\xb7\xbd\x3f\xfe\xf4\xf6\x7c\x7f\xef\xb7\xf3\x9a\xeb\x43\xdd\xf5\xa1\xe1\xfa\xd0\xb4\xb6\xed\x6a\x47\xfe\x68\xb4\x25\x7f\x34\xda\x93\x3f\xf2\x36\xc5\xd0\xf4\xe2\xc9\x94\x9c\x14\xc7\xe6\x10\xd9\xa6\x54\xab\x15\xc4\xb3\x3e\x11\xfb\x49\xad\xbc\x00\xb0\x58\x19\x0b\x24\x9b\x2a\x84\x10\x4e\x10\x85\xe8\x0d\x6a\xb4\x3b\xaf\x51\xb8\xb4\xa4\x80\x17\x42\x22\x7a\x83\xea\x8d\x75\xe3\x1b\xf9\x0b\x4e\xc3\x33\xb4\x41\x60\xbc\x41\xf5\xd7\xea\x77\x7a\x97\x5a\x50\xab\x42\xab\x55\xd1\xef\xa8\x76\x5d\xaf\xf7\xf5\xfa\xf9\xe3\xed\x73\xa5\xd7\xbf\xfa\xe3\xcf\xe8\xdd\x4e\xa5\xf1\xfb\x7a\x55\xed\xed\x35\x0d\x91\xa8\xbe\x0b\xb5\x97\x0b\x8d\x80\x34\xc8\x69\x3f\xbe\x56\x3f\x82\xa5\x01\x69\xf3\x3a\x44\xbf\xa3\xca\x75\xde\x21\xf6\xbb\x21\xfd\x6e\x4a\xbf\x5b\x55\xad\xb3\x00\xa5\x92\x5e\xa3\x9f\x7f\xfe\x19\xad\x43\xc9\xf4\x1a\xfd\x84\x6a\xd7\xc3\x21\x1d\xa0\x4e\x53\xab\x42\x56\xc7\xe9\x35\x19\xc8\xf4\x5a\xfb\xc4\x17\xcf\x69\x0a\xdf\xaf\x5f\x3f\x77\x76\x6a\x32\x1b\x67\xe1\x74\x1c\x0e\x40\x4d\x60\x76\xef\x9a\x90\x71\x70\x7a\x7d\xf6\xda\xf2\xad\x45\xbf\x35\xac\x1f\xd7\xe9\xc7\xd6\x59\x41\xeb\xe9\xac\x8f\x40\xc0\xf1\xd0\x24\xbc\x46\x83\x78\x3c\x9b\x44\xa9\x42\xfd\x32\x4c\x22\x29\x54\x02\xe8\xd5\x4b\x42\x33\xb5\x3a\x1f\x29\xf6\x58\xab\xd7\x6a\xfa\xd0\x8a\x95\x4c\x07\xab\x92\xc1\xc4\xb4\xaa\xe8\x2b\xf9\x4d\xc7\xdb\x51\xa5\x2e\x57\xa9\x77\xa4\x2a\xf5\x8e\xab\x4e\x43\xae\xb3\x5e\x45\x79\x9d\x86\x31\xeb\x82\x1b\xd0\x3a\x59\xc1\x48\x85\xd1\xa5\x3c\x5a\xe4\xb1\xf4\x88\x5d\xaf\x4b\xe3\xc3\xc8\xb3\xc5\x5e\xd5\xf8\x8b\x86\x32\xa4\x85\x23\xaa\xf0\x47\x46\x63\x65\x86\x55\x61\x9d\x4a\xbd\x39\x63\xab\xb0\x55\xa5\xe2\x9c\x01\x56\x58\x2e\xab\x58\x34\xca\x70\x5b\x00\x8a\x60\x9c\x98\x9c\xf0\x87\x6b\x2b\x13\x64\x0c\x60\x63\x01\x0e\x08\x55\x1a\xe8\x77\x14\x9c\x92\xff\x5d\xaf\xa3\xdf\xd1\x75\xe3\xec\x4c\x5f\x48\x50\x36\x44\xbf\x6f\x40\xc1\xeb\xd0\x28\xa0\x30\x49\xf8\x79\x0b\x87\x5a\xb1\xaf\x1c\x26\x78\x40\x3b\x17\xa0\xa3\x41\x1c\xb1\x0d\x26\xdf\x95\x8e\x7a\x07\x1f\xc9\x1e\x51\xbb\xae\xd5\x3c\x54\xbb\xae\xd5\xe1\xdf\x06\xfc\xdb\x82\x7f\xd7\x3d\xa0\x05\xf2\x6f\x03\xfe\x6d\xc1\xbf\xeb\xf0\x6f\xbd\x4f\xfe\x6d\x76\xf2\xcd\xec\xe5\x4b\x86\xd4\x4b\xb4\xb9\x7d\x4c\x03\xb2\x23\x2a\x0e\x21\x22\x10\x24\x61\x36\x9a\xac\xf0\x32\xab\x39\x2a\xa4\xf4\x06\x13\x1f\x56\xe8\x83\x24\x61\xac\xe0\xeb\x8c\x86\x0f\x10\x5d\x3e\x0f\xe2\x23\x9c\xe2\xac\x8b\x1c\x5b\x24\x1b\x84\xe3\xcf\xe1\x94\x99\xfe\xc6\x43\x14\x1d\xc5\x70\x1c\x1b\xf9\x29\xea\x63\x1c\x81\x7b\x00\xbb\xe0\xf2\xa3\x00\x6c\xf8\x82\x30\x40\x51\x9c\x31\x3b\x4c\x93\x14\x68\x36\x17\x0e\x89\xdb\x8b\x9e\x7f\xc6\x37\x87\x49\x18\x27\x47\xd4\x04\x78\x63\x23\x7f\x6f\x25\x1d\x6e\x17\xa6\xcd\xa9\xd9\x01\x55\x7c\xe3\x7f\xdc\xe2\x70\xc3\xde\x7c\xfe\xd6\xc2\x9f\x3f\xe3\x9b\x5f\xe3\x04\xac\x18\x3f\xe3\x9b\x95\x2b\xf2\xdb\x5e\xec\x38\xfc\x82\x59\xa9\x34\xbc\x78\x4b\x18\x10\x5a\x45\xad\xa2\x65\x24\x1c\x01\x12\x18\x20\x13\x2c\x1f\x39\x8e\x63\xfe\xcc\x1b\x5c\x42\x9d\x52\x2d\x90\xfe\xa7\x83\x11\x26\xc7\x0f\x44\x44\x68\x4b\x1f\xd2\xa3\xf8\x8a\xc0\xae\xf0\x66\x96\xc8\x2e\xfd\xb2\xb0\x0f\x32\x5c\xfb\xb0\xf0\x46\xa5\x71\x96\xde\x9d\xea\x4b\x35\xb7\x11\x25\xe8\x50\xd1\x83\xfe\x7c\xc3\x30\x64\xcf\x16\x29\x04\x31\xb2\x13\xe5\xe9\x20\x59\xcb\x91\x3f\x09\x95\x53\xa8\x73\x46\x47\x16\x66\x9c\xbd\xb1\xb0\x1a\x37\xc3\x42\xd2\x7e\x62\x00\x87\x70\x3a\xfa\x50\xca\x68\xff\xc0\x10\xff\x97\x40\xdc\x89\x39\x9b\x85\xa3\x38\x43\x84\x24\xdd\x85\x32\x79\x0f\x50\xb7\x80\x42\xc8\xc7\xb3\x7e\x19\xc8\x20\x3e\x71\x98\x67\xd2\xde\x06\x1f\xf2\x9d\x8a\xc9\x68\x67\xd2\x2e\x26\x97\x58\x57\x0a\x00\xa6\x0c\x32\x7b\x3d\x07\xdb\xfd\xf0\x1a\xd8\x76\x11\xb6\xbf\x6f\x00\x13\x3f\x65\x83\xbc\x9a\x53\xc7\x57\x54\x63\xa8\x5b\x26\x1b\xe5\x13\x0e\xa4\xc5\xd6\xdd\xcf\xa8\x43\xf8\x99\x36\x61\x68\x63\x03\xb5\xe6\x4d\xda\x77\x37\xb4\xf6\x3e\x3b\x46\xdc\xb5\x66\x0c\x5a\x67\x43\x72\x86\x7e\x27\xb2\x84\xb9\x88\xe6\x72\x73\x59\xa6\x2b\x66\x33\x61\x74\xf9\xde\xc2\x69\x8c\xd7\x6e\x66\x43\x8a\xe6\xfc\x46\x3c\xe5\x2c\x87\xbf\x72\x70\x1d\x99\x61\x31\x3e\xba\x2c\xea\xd8\x88\x17\x8e\x8c\xbc\x99\x7f\x15\x10\x8d\x93\x9d\x3c\x2c\x67\x6a\x59\xc1\xcd\x43\xfc\x0d\x6a\x81\x27\x0b\x7d\x28\xa2\x7d\x75\x2e\x4e\x39\x04\x26\x69\x2e\xd8\x91\x02\x60\xaa\xd0\xad\xae\x21\x42\x8a\xaa\x70\xed\x58\x4a\x67\xe8\x77\xf7\xe2\x74\xfc\xa9\xc2\xb7\x7d\x05\xea\x08\x34\x4f\xd5\xa5\x68\x9f\x03\xa7\x24\xeb\x49\xd3\x83\xa3\x41\x72\x33\xa5\xa6\xb1\xb2\x9c\xb7\xef\xa1\x78\x38\x4c\x71\x66\xcc\x0c\x5d\x23\x41\xdc\x13\xf5\xf2\xc2\x9e\xb9\x57\x7b\xf9\x09\x31\xff\x59\xcf\x7f\x36\xf2\x9f\x4d\x0f\x58\x8c\x7c\xca\x50\x70\x0d\xf0\xa2\xb8\x12\xae\x79\xe5\x4f\x51\x23\x0a\x40\xf6\x6c\x65\x23\x87\x10\x43\xe8\x7b\xff\x94\x82\x21\xf2\x8b\x3e\xa4\xca\x37\xb5\x6c\xb3\xa0\x6c\xd3\x7a\x24\x2a\x33\x84\x2a\xad\x7a\x2a\x81\xaa\x8f\x75\xf5\xb1\xa1\x3e\x36\x3d\xa1\xb0\x30\x36\xef\xd5\x55\xb4\x47\x4e\xbe\xdf\xc5\x18\xd9\x27\x5d\x19\x26\xeb\xac\x7b\xe8\x7e\xe4\x66\x23\x1a\x76\x20\x28\x2d\x59\x5b\x06\xf6\x1d\x66\xc1\x42\xe1\x46\x92\x8a\xea\x04\x53\x8b\x8e\xab\x26\x0d\xd6\x19\xbc\xfe\x5d\x61\xb6\x35\x9b\x06\x28\xad\xeb\xd3\xa1\xd5\x32\xe6\x07\x6a\x35\xd4\x5a\x0d\xbd\x96\x55\xdb\x94\x36\xf5\xe9\xd4\x6a\x35\x6d\x6a\xa8\xf7\xda\xd9\xc1\x7e\xf4\x97\xb7\x40\xdb\x89\xe1\xc8\x72\xc6\x11\xfb\x2f\x1d\xd5\x0d\x54\x7f\xcd\x7e\xbe\xe1\x33\xc4\x5e\x38\xf6\x5d\x98\xe3\x70\x98\x01\xa5\x7b\x0e\x45\x59\xe1\xc4\x71\xd4\x33\x32\x79\x92\xba\xa6\x26\x24\xaf\xdf\x25\x45\x57\x25\xad\x1b\x72\xd7\xef\x92\x52\xab\x92\x36\x74\xa9\xeb\x77\x49\x7f\x95\x36\xa5\xd7\xc6\x36\xbc\xb4\x64\xdb\x00\x00\xb9\xba\x8a\x5c\xdd\x81\x5c\x63\x0e\x72\xcd\x42\xe4\x6a\x77\x44\xae\xa1\x22\xd7\x70\x20\xd7\x9c\x83\x5c\xad\x10\xb9\xfa\x1d\x91\x6b\xaa\xc8\x35\x1d\xc8\xd5\xe6\x20\x57\x2f\x44\xae\x31\x17\x39\x2b\xe9\x7e\x9a\x82\x11\x51\x9a\xf9\x19\x36\x0b\x00\x3b\xc9\x6a\x96\x8e\x01\xcb\xc8\x74\x3d\x1a\x7c\x21\x73\x91\x35\x6c\x5f\xc8\x40\x64\xba\x76\xdc\xaa\x44\xb1\xae\xa7\x39\xbc\x0f\x96\x4f\x85\x9e\x3c\xa4\xb5\xa3\x9f\x5a\x2c\xcb\x47\x3f\xb6\x98\x2b\x48\x39\xb7\xe4\x4b\xa8\x5a\x8e\x12\xc4\xfa\xe1\xd8\xd5\xdd\xd8\x99\xeb\xc7\xc0\xce\x58\x42\x2a\x76\xb5\xbb\x60\xd7\x90\xb0\x6b\xb8\xb1\x33\x17\x90\x81\x9d\xb1\x86\x54\xec\xea\x77\xc1\xae\x29\x61\xd7\x74\x63\x67\xae\x20\x03\x3b\x63\x11\xa9\xd8\x35\xe6\x63\x67\x52\x2b\xe6\x91\xad\xed\x72\x09\xdd\x86\x2d\xeb\x48\x17\x72\x8c\xe5\xa4\x6e\xae\x96\x55\x65\x88\x3e\x4d\x97\xec\xc3\x8e\xc2\x5d\xd4\x68\x77\x56\x9b\x0d\xa6\x81\xae\xda\x54\xc1\x5c\x62\x11\x02\x52\xca\x3c\x87\x99\x6a\xf8\x45\xca\x12\x3e\x21\xc8\xe1\x3d\xf4\x07\x58\xe8\x88\x05\x90\xff\xc4\xd7\xfe\x64\x2a\x4e\xca\xf9\x07\x3e\xa7\x14\x56\x86\xaf\x33\xe9\x76\x7b\x65\x73\xfb\x78\x85\x9d\x23\x2a\x13\x6e\x92\xfe\x19\xdf\x78\x68\x30\xbc\x10\xd2\x7c\x0e\x65\x3a\xf6\x09\x12\xd7\x19\xd2\xa1\x30\x09\xbf\x92\xb7\x63\x03\xc4\x74\xda\x3d\x8b\x12\xfb\x9c\x86\x4d\xdd\xc5\xe3\x29\x4e\x2a\x9b\xdb\xf4\x5a\x9f\xea\xec\x9f\x3f\x63\x36\x2b\x72\x93\xaf\x9f\x3f\x87\x10\xb8\x60\x40\xa2\x58\x15\x74\xdb\x0d\x8f\xdb\x25\x74\xdb\x60\x3b\x22\x59\x26\x74\xdb\x2d\x2f\x37\x49\xe8\xb6\xc1\x87\x71\x12\xb4\x7f\xec\x76\xea\xb7\x67\x5e\xbb\x71\x2f\x6b\x91\x6f\x69\x26\xf2\x68\xc6\x1c\xdf\xd0\x2c\x83\xae\x84\x97\x88\x19\x50\x90\xe6\xd1\x20\x9e\x4c\xe3\x08\x62\xae\x93\x6f\xab\xcf\x9f\x89\x79\x1f\x87\xfd\x15\x56\xf4\xeb\x57\xd9\x00\x40\x78\x7d\x3e\xb0\x71\x87\x9f\xe2\xdc\xaa\xc3\x4f\xb1\xf4\xed\xd7\x38\x09\xc0\x2f\x5d\x14\x10\x6f\x64\x08\xb3\x21\x18\xfc\x01\xad\x6f\xf2\x5b\x9e\x1c\xa6\xf5\xb3\x82\x19\x06\xd7\xaa\x1e\x59\xa8\xd2\xfb\x4f\xd9\x70\x1d\xa0\xe0\x68\xb0\x42\x1e\x34\xac\x3b\x2d\xf1\x95\x3e\x16\x19\xa2\x88\x2f\xdb\x97\xd3\xf7\x5b\x3b\xf9\x65\x13\x7d\xb6\xde\x60\xf5\x53\x6a\x9f\x47\x96\x15\xbf\xc5\xca\xf0\x64\x3a\xf6\x33\x1b\x83\x12\x51\xa6\xff\x8c\x58\x44\x1e\xae\x41\x05\xaf\x02\xc1\xeb\x40\xef\x17\x7e\xc1\x2b\x3c\xc2\x64\x17\xb5\x50\xa5\xde\x58\x47\xfd\x30\x4b\xab\x45\x00\xc3\x4b\x0b\xbc\xbd\x5f\xee\x0a\xee\x7c\xfb\x63\xef\xfc\xb7\x9d\x83\xa3\xfd\xf3\xfd\x83\xad\x6d\xb4\x09\xb1\x0d\x32\x3f\xca\x50\x82\xa7\x09\x4e\x71\x94\x85\xd1\x05\x57\xc4\x10\x32\x9c\xc4\x41\xde\x77\x2b\xcc\xad\xed\x52\x30\x19\x3b\x35\x60\x4a\x97\x82\x9a\xc9\x91\x78\xb4\x53\x94\xe5\x92\x30\x9f\x4d\x8a\x6e\x0f\xfc\xbe\x67\x09\x18\x3c\x88\x24\x1f\x72\x11\xa5\xb8\xd4\x3b\x41\xf7\x64\x0e\xd0\xc9\x08\x93\x51\xcf\x62\x34\x63\x7e\x02\x84\x05\x20\x52\x18\x40\x2b\x20\x57\xf3\x87\xc1\xf0\xa2\x0b\xa4\xcb\x71\xad\xca\x3b\xaa\x81\x2d\x6c\x17\x29\x85\xcd\xc8\x2f\x8c\x5c\x93\x61\x43\x9f\xda\x63\x4a\xb8\x13\xd2\x23\xc8\x7f\xc6\x37\x2b\xd6\xb2\xdc\x35\x74\x30\xbc\x40\x95\x03\x68\xc5\x1f\x57\xa1\xce\xc0\x36\x78\x25\xc7\x40\x6d\x8b\x07\x12\xa5\x13\x7a\x4b\x48\x84\xf7\x8e\x10\xca\xa0\xa8\x4f\xe4\x5c\x11\x0e\xdc\xdf\x55\x29\xc1\x2c\x80\x14\x69\x41\xde\xe3\xf9\xd5\xf3\x0a\xdd\xa6\xb7\xe9\x30\xc7\x49\x85\x5d\x9e\xc1\x10\x7a\xe8\x4f\x14\x5e\x76\x51\x78\x99\xf3\xc6\x5b\xc5\xf4\x40\x99\x6f\x15\x52\x57\x89\x0b\xc5\x24\x07\x5d\x03\x20\x67\x0e\xa1\xf5\xd9\x8d\xb3\xba\x56\x2d\xb2\x87\x2e\xa1\x95\xa4\x27\xc7\x42\x7c\xa2\xa7\x87\xa5\xa7\x2d\xfc\x50\xf4\x24\x20\xdd\x8f\x9e\x54\x3e\x7d\x07\x7a\xda\x8b\xc2\x2c\xf4\xc7\xe1\x17\x9c\x22\x1f\x45\xf8\x6a\x7c\xc3\x30\x0c\xd8\x70\xcc\xa7\x25\xbe\x6b\x5c\x0f\xe3\x64\xb2\x1f\x07\x18\x6d\x53\x67\x35\x88\xd3\x9c\x73\xba\x38\x91\xe9\x14\xac\xab\xc1\xcf\x8f\x53\xad\xd8\x64\xec\x64\xf8\xdd\x91\xec\x83\x91\x55\xc5\xfc\x60\xe3\x14\x77\x24\xb8\x30\x0a\x15\x0b\x1b\x31\x4d\x12\xb9\x58\x54\xd4\x9b\xd3\x29\xa1\x05\x18\x2d\x9e\x6e\x3a\xb5\x5c\x33\x90\x21\xde\x10\x3f\xf9\xa6\x48\x69\xd0\x3c\x15\x67\x44\x72\xa6\x86\xf5\x71\x32\xa1\xd3\xee\xdb\x74\x37\x94\xbe\x73\x92\xda\xc8\xc9\xeb\xb5\xad\x24\xb5\xa3\x01\x5b\x19\xeb\x59\x3c\xa4\x84\x4e\x3d\x00\x6c\xfd\x00\xfb\xa2\x4a\xe9\x85\x03\x36\x3a\x2a\x1f\x86\x60\x0e\xa9\x68\x09\xb4\x67\xf7\x24\x1f\xb6\x04\x4d\xdc\x94\x19\x4e\xca\x18\x51\x51\xa3\xa2\xc0\xcf\x7c\xd4\x07\xd9\x4b\x2d\xe1\x90\xc7\x00\x34\x4d\x75\xc1\xdd\x9d\x75\xc0\x87\x38\x81\xb9\x1c\xc4\xd1\x20\xc1\x19\x5e\x66\xc3\x31\x8e\x2f\x14\xa6\x2c\xdd\x4b\x1d\x2d\x36\xd6\x10\x50\x03\x30\xa7\xfe\x2d\x8c\xa7\xe0\x40\x62\x29\x38\x58\x60\xd3\xfb\x9a\x32\x57\x18\x02\x94\x29\x3b\x09\x6f\xe0\x6d\xb0\x06\x24\xf0\x25\x76\x2e\x89\x3f\x09\x58\x34\x6a\x16\x8b\x46\x10\x46\x17\x0f\xc0\x4d\xf2\xce\x6f\x70\xf2\x60\xf0\x2b\x2f\x48\x9b\x2f\x54\x32\x29\x53\xef\x8a\x63\xee\xa4\x30\x56\xb2\xab\x85\x79\xa5\x43\xe7\xe0\x1e\x38\x0a\x6c\xb3\xef\xc3\x17\xb9\xba\x8d\xa6\x68\x7b\xc8\xbf\xf4\xc3\xb1\xdf\x1f\x63\x6a\x86\x98\xba\xb7\xc5\x73\xde\x99\xd2\x54\xb5\x13\x46\x6c\xe3\x2b\xdc\xa7\x18\x5c\x75\x9f\xf9\x18\x67\xcc\x3d\x9a\x46\x4d\xa3\x90\xf2\x5d\x03\x85\x29\xc2\xc3\x21\x1e\x64\xe1\x25\x1e\xdf\x20\x1f\x05\x38\xcd\x92\x19\x3c\x7b\x28\xc1\x7e\xb0\x1c\x47\x03\x5c\x6a\x9f\x29\x4b\xbd\x80\xc6\x63\xd1\x30\x05\xfe\xd8\x94\xcc\x47\xb2\x52\x9e\x88\x45\x95\x45\xa9\x5f\x54\x9c\x4f\xfe\xbc\x68\x79\xfa\xdf\xc9\xe7\x62\x06\x85\xd4\x12\xe1\xb0\x10\x00\x2a\x5c\x2d\x4a\x51\xcb\x45\xc9\x02\x0c\x19\x02\x22\x11\x54\xd9\x82\xc3\x01\x0b\x98\xc9\x39\xf5\x8e\x34\x21\xd6\xc5\x67\xd6\x9e\xab\x6c\xae\x37\xd6\x57\x9b\x0d\xf9\x13\x55\x89\xd8\xbe\x68\x72\x50\x17\xd5\x95\xaf\xaa\xfc\xdb\x45\x8d\x32\x67\xa7\xd4\xaa\xca\xf6\xe7\x2b\xb2\x91\x73\x6d\xf2\x53\x0b\x1b\xe9\x93\x11\x96\x84\x02\x96\x69\xcb\x47\x23\xd0\x1a\x13\x21\xb3\xc4\x52\xe4\x22\xec\x66\xc4\xf1\x81\x08\x03\x7c\x59\x13\xa1\x89\xad\x6b\x4b\x87\xbe\xc1\x61\x89\x59\x7b\x9b\x2a\x4f\x4d\x47\x6e\xc8\xb6\xce\x55\xa6\xd4\xeb\x3a\xfd\xa6\xc8\x9f\xf8\x94\xe2\x31\x1e\x64\xb4\xe1\xe3\x2c\xf1\x33\x7c\x71\x53\x71\x99\x6b\x4b\xda\x67\x10\x17\x37\xd0\x0b\xca\x4a\x5f\x38\xcd\xc3\xd8\x6c\x1c\xfa\x69\x4a\xd8\xc4\x5b\x3f\xc5\x81\xe2\x31\x27\xff\x15\x1b\x87\x31\x50\xc7\x38\x81\x03\x17\xd9\xd5\xdc\x90\x8a\x17\xb9\x9e\xdc\x8f\xdd\x67\x14\xd8\xa8\xbb\x90\x62\xe4\x24\x33\x36\xf3\x86\xa5\xc8\x6e\x34\x8f\x02\x66\x9f\x07\x71\x71\x43\x51\xf4\x90\xfb\x02\x47\x1f\x03\xcf\x61\xe9\xc9\xc8\xbe\x6b\xf4\x5f\xbb\xcf\xb9\x17\xda\xea\x4d\x91\x87\x0a\x6f\x8c\x74\xcc\x2d\x13\xaa\xb3\x6d\x99\x4b\x56\xaa\x4c\xc3\x6b\xbf\x7a\x53\x75\xd8\x69\x96\x60\x7f\x72\x27\x55\x36\xc8\x50\x4c\xf9\x2c\xdb\xe0\x37\x1b\xcb\xfd\x90\x1a\x6c\xab\x27\x1a\x2a\x9d\x40\x1c\x6b\x49\x33\x5d\x47\x95\x66\x43\x55\x4c\x4b\x0a\xdf\x63\xc0\x4f\x53\xfb\xea\x2f\x0b\x3c\x42\x76\x2c\x7b\xad\x6d\x87\xe5\x22\xe2\xd4\x4f\xe0\xb8\x65\x13\x10\xcd\xed\x0d\x8e\x37\xb9\x75\x15\x17\x1a\x7f\xf8\xe1\xc5\x70\x3c\x4b\x47\x2f\xca\x6d\x73\x14\x8a\x6b\xa3\x13\xc3\xdc\x45\xf5\xa2\x79\x85\x73\x2d\xa4\x35\x9d\xca\xb7\xa5\xb2\xf2\xfc\x7c\x42\xcf\xbe\xbd\x15\xf6\xe3\xcf\xdb\xf9\x14\xa2\x78\xec\x40\x3d\x83\x4a\xa4\x36\xa4\xdb\x4d\x76\xd0\x36\x9c\x83\xd9\x7b\x59\xe9\x5d\xa4\xa0\x97\x55\x94\x13\x9e\x9d\x2b\x97\xaf\x17\xde\x4d\x37\xd5\x1e\x59\x15\x82\x7a\x6a\x99\x5c\xc1\x0f\x54\xfd\x0d\xf6\x43\x3e\x53\x7c\xbb\x03\x3d\x6c\xef\x6d\xcf\x50\x45\x73\x8e\x12\x5e\x52\xaf\x9d\xbb\x68\x9e\x73\x18\x85\xba\x42\x51\x97\x2b\x9a\xa4\x7a\x77\xd2\x38\x8b\xe9\xcc\x0f\x48\xff\x33\xa7\x33\xd7\x04\x2f\x38\x9d\x56\xc5\x6f\xc9\xe9\x14\x75\xef\x31\x9d\x45\x0a\xdf\x72\x57\x07\xdf\x74\x3a\xef\x3d\x5d\x05\x4b\x60\xce\x7c\xe9\x7a\xd3\x82\x49\xa2\x9b\x89\xd0\xf3\x0e\x6c\x62\x1d\xb3\xba\xbe\x44\x1b\x28\xbc\x94\x67\xab\x68\x8b\x60\x3b\x26\x0d\x2c\xdd\x1b\xf9\x61\x04\x39\x4f\x5c\x77\xad\x6f\xc1\x6e\xe0\x9c\x77\x1e\x6d\xb8\x83\x0f\xe8\x2a\x36\x65\x07\x21\x75\x0d\x62\x90\x86\x26\x6f\x4c\xdb\x25\xc4\x9d\xe8\xeb\x22\x8e\xf2\xb6\xc7\xb7\x03\xed\x24\x24\x35\xa1\xcc\x1d\xe9\xd5\xdb\x9e\x65\xef\x31\xc1\xd3\x26\x0e\x45\xfc\xcf\x8c\xab\x31\x28\x95\xfa\x19\x33\xea\x5e\xd1\xeb\x18\x30\x34\x9a\xa5\xd2\x91\xd0\x8a\x30\x61\x29\xe6\x32\x12\x52\x39\x21\xb2\xde\x90\x30\xbb\x2c\x02\x84\xfd\xbc\x1a\x61\x16\x7a\x9f\xe2\x07\x91\x3c\xd3\x12\xc8\x99\x0b\xc3\x5e\x90\xfc\xc1\x54\x32\x51\x87\x7a\x03\x40\x7e\x3c\xe8\x82\x70\x6d\xd0\x65\x59\x79\x32\x50\xae\x02\x34\xcc\xe4\x55\x28\x4e\x5b\x68\xab\x03\x2c\xd2\x6f\x48\xe4\x85\xe4\x30\x9c\xcd\x85\x58\xa1\xc9\x11\xaf\x1c\xe6\xac\xbf\x1d\x1c\xc1\x79\x99\x11\x9d\x59\xe6\x3a\x4e\xa0\x5f\xb9\xa2\xdb\x43\x4a\xbf\xbc\xbc\x59\x9b\xd0\xcf\xf0\x90\x7d\x5d\x2a\xfa\xe8\x5a\x31\x3b\xc2\x13\x0c\x52\x38\xec\xae\x94\x04\xd8\x55\x14\x9c\xf6\xc1\xa1\x1d\x5e\x9b\xd5\xb9\x04\x8b\x2f\x79\xdc\x79\xca\x4c\x69\x42\x79\x8e\xb7\x30\x05\x74\x76\x40\xf6\xdc\x99\xbb\x6e\x03\x5c\x62\xdd\x8a\x7d\xea\x69\xdd\x3e\xad\x5b\x74\xf7\x75\x7b\x9f\xd5\x01\x16\xc2\xa3\x30\x5d\x78\x6d\x58\x31\x61\x14\x0d\x5c\xe4\xb7\x83\x23\x27\x07\x90\x3d\xc8\x0c\x0e\x70\x5f\xb6\x63\xc5\xec\x24\x1f\x9a\x3e\x1e\xc4\x13\xb6\x74\x08\x5b\x08\xe3\x59\x5a\x9e\x79\x88\xc1\x2a\xcb\x1e\x04\x29\xf1\x6e\x54\x9c\xb8\x2f\xe4\x01\x05\x22\x12\x97\x96\x6c\x1e\xfe\xa3\x38\x4e\x31\x9a\x84\xd7\x44\x16\xb2\xf4\x0f\x3c\x41\x4d\x21\x0d\xc9\x84\xc8\xa4\x30\x17\xd9\xc5\x97\x20\x9d\x92\x93\x4e\x3a\xeb\xa7\xf8\xbf\x67\x38\xca\xac\x2a\x06\xa4\x8a\x76\x52\x5a\x0f\x75\x14\x9d\xaa\x41\x19\x25\x6d\x56\xe6\xab\xfa\xc9\xce\x66\xc3\xca\x16\x23\x29\x5f\x6d\xd6\x48\x49\xe4\x0f\x26\x30\xb7\x1e\x0f\xcf\xd0\xef\x1b\xb4\xde\x69\x58\x18\xba\x24\xff\xcd\x4d\xa0\xdf\xf6\x58\x79\x25\xa0\x89\x24\xda\x1e\xfa\x41\x40\x26\x70\x8e\x02\x64\x0a\x69\xae\x7a\x2b\xf4\xbf\x76\xf5\xc7\xe1\xfb\xde\x31\xfa\x5f\xed\xd5\x35\x34\x65\x40\x53\xa6\xcb\xb3\xc1\x3c\xfc\x3c\x48\xd7\x40\x4e\x9e\xfa\xc1\x0a\x7f\x2a\x90\x8d\x0f\x7d\x7e\xfd\x3c\x4b\x79\xec\x7c\x11\x08\x85\x99\x2b\x43\xe0\x64\x81\xc7\x42\xf6\x57\x00\x59\xbe\x7d\x26\x68\x59\x2b\xd9\xf5\x78\x2c\x04\x94\x74\x1f\x09\x80\x52\x11\xcd\x92\x0c\x0a\xc4\xb3\x7c\xe4\x63\xb3\x38\x7c\x89\x71\x25\xbf\xf2\xeb\x35\x4f\x8b\x9b\xa5\x5c\x30\xfb\x81\x7e\xb9\x76\x67\x06\x22\xaa\xd1\x58\x27\x1b\xd2\x78\xb9\x62\x86\xcc\xa2\x4c\xd0\x0e\xf8\x15\x99\x50\x23\x46\xb0\x06\x50\xfa\x62\x99\xe6\x9c\x16\x11\x56\xfe\xa5\x15\xb0\x35\x4b\xef\x85\x78\xbb\x66\xe8\x05\x9a\xea\x0d\xbe\x12\x7a\x81\x08\x28\x0a\x16\xb9\xaf\x8b\xf1\x9e\x39\xb8\x18\xef\xc1\xad\x45\x79\x3b\x17\xb3\x42\xa4\xd2\xe2\xf0\x05\x39\xfb\x51\xdb\x44\x21\x5a\x72\xb9\xe5\xcb\xd0\x69\x9c\x7b\xe9\x4d\x81\xf4\xaa\x61\x87\x36\x72\xdb\x77\x7e\xf8\x97\x41\x7b\x2a\x4a\x36\x33\x84\xcd\x20\xb0\x0f\x02\xcc\xf5\x20\x8e\x06\x7e\xc6\x61\x96\xd6\xc0\x7c\x8a\xa6\x82\xa1\xc0\x92\x1d\xf9\x01\x0d\x64\xc4\x16\xea\xb7\xe1\x32\xb3\x48\xe7\x33\xdf\x84\x23\x40\xb3\x25\xae\xdc\xa1\x9c\xce\x12\x6c\x7c\xe0\x1d\xce\x94\xcc\xc5\xd2\x22\x86\x18\xb0\x68\xec\xa7\x19\x3c\xcf\x5f\xd3\xb9\x78\x7d\x5a\x51\x97\xf3\x32\xaa\x57\xa9\x8b\xd9\x19\x73\x06\xb3\x79\x12\x53\xc1\xc1\x4d\x31\x39\xb8\x0d\x7d\x0d\x4a\x9b\x29\xdd\x36\x17\xd4\xf3\xff\x15\x17\x41\x36\x17\x05\xfb\xcd\x82\xed\x56\xa1\xe8\x1e\xe8\xe1\x8c\xfe\xf7\xe3\x00\xdf\x52\xf5\xe0\x89\x38\xad\xd1\x4b\x11\x38\x49\x48\xdd\xe9\xbd\xed\xb9\xa0\xb0\xb9\xba\x15\xf4\x45\x60\xe9\xc2\x86\x09\x11\x48\xde\x41\xe0\xe0\x47\xc0\x06\x40\x32\x9c\xd4\x08\x9c\x60\x0a\x98\x79\xda\xa9\x8e\xb6\x6d\x34\x71\xab\x78\x23\x2c\x60\x18\x48\x27\x5a\xfd\xd8\x93\xac\x0f\x8b\x6d\x00\x0b\x02\x9c\xa9\xf6\xa1\x16\x3f\x4e\x90\x9b\xc9\x08\x28\x6a\x51\xa4\x2a\x76\xc9\xf7\x09\xd8\x7e\x3a\xf0\xcf\x27\xd6\x3c\x0c\x18\xb6\xa4\x5c\xd2\x56\x8d\x4b\x9c\x27\x06\x02\x15\xb6\x44\xd0\x68\xc0\xa9\x5c\xbb\x9b\xb1\x4b\xfb\xab\x2f\x8b\x9b\x57\xad\x57\xaa\xe8\xe5\xea\xc2\x18\x08\x55\x8b\xe3\x2c\xf3\x1e\xe3\x29\xf2\x33\x34\xc6\x84\x0b\xc6\x11\x5f\x01\x2c\xcd\x07\xb5\x04\x85\xfd\x1a\x18\xae\xc9\xb7\x90\x38\xdf\x4c\xc2\x88\x1a\x89\xb2\x43\xbc\x11\x2e\x51\x7d\x64\x95\xe8\xf4\x49\xf8\x53\x42\x9a\x80\xfd\x31\x3d\xf2\x86\x97\xe8\xa7\x9f\xac\xfa\x78\x3d\x50\xc7\xe1\x9d\x74\x19\x39\x26\xaa\x32\xc5\x79\x3e\xd7\x9b\x2d\x7b\x25\xed\x16\x49\x73\x91\x44\x18\x4a\xb3\x57\x16\x82\xe6\xcd\x3d\x2c\x21\xaf\xae\x92\x83\x0c\xcd\xf7\xe5\x12\xb9\x40\x5e\x67\xa6\x5f\x20\x81\xc3\xef\xb9\x3a\x08\x7e\x15\x4f\x6d\x04\x5d\xa7\xe4\x3b\x5d\xc6\x3f\xde\xb2\x7a\x5c\xbc\xad\xed\x81\xe4\x37\x67\x06\xa8\x7c\x64\x6b\x6f\x9e\xe5\xdf\x3d\x2d\x15\xc0\xf4\x8e\xc9\x1e\x76\x33\x14\x34\x88\xc7\x63\x4c\xe9\x3f\x1e\x72\xd1\x00\x44\x4d\x0c\xc9\xf4\x8a\x44\x0f\x49\x14\x95\x9c\xbc\xc9\x36\x9a\xf8\x57\xd2\x2b\xab\x5f\xa2\xdd\xf5\x83\x3a\xa0\x0b\x21\xa5\x4c\xed\xfc\xe2\x11\x52\x3c\x30\x2e\x48\xeb\x93\xf5\x69\x98\xe3\xba\x00\xa5\xfe\x98\x62\x0f\x3f\x00\x18\xa8\x24\x7d\x1a\x7e\x14\x27\xe1\x25\x95\x55\x38\xc7\xb0\x02\xe4\x57\xa9\xb9\x9c\x2f\x59\x0e\x9a\xb1\x56\xcb\xc9\x35\x77\xe9\x59\xb1\x7c\x33\x18\xe1\xc9\xdd\xe0\xda\x05\x4e\xa6\x32\x07\x8b\xe9\xa1\x04\xcf\x0a\x82\x26\x65\xbc\xcd\x93\x36\xd2\x53\x0c\x15\xb1\xf8\x5b\x5d\x0c\x1b\xc4\xd1\x25\x4e\x32\x45\x86\xa5\xe9\xee\xb8\x31\x25\x58\x7c\x52\xeb\x3f\xb7\xdb\xea\x21\xad\xa2\x3a\xaf\x8a\x97\x25\xed\x61\xe6\xbb\x58\xa9\xa8\xcd\x3f\xd6\x09\xef\x26\x19\x1f\xcd\x4e\xd4\x8f\x44\x16\xab\x69\x9c\xa6\x61\x7f\x8c\xdd\x2b\xd6\xd2\xd4\x62\xce\x4d\xf9\x40\x99\xf6\xa0\xf4\x1b\x3f\x81\xff\x69\x40\x41\x42\x7d\x4e\x56\x70\x57\xfa\x9d\x3b\x3c\x59\x2b\x7d\xc6\x37\x5d\xd5\x2f\xca\x5a\x4c\xf3\x94\xb2\x17\x22\xcb\xb8\x0b\xff\xce\x29\x28\x56\x65\xd7\x74\xe7\xb2\xd7\x60\x22\xbc\x6e\x99\x60\x2f\x2c\xe4\x7a\xf5\xe8\xfc\xbe\x77\xbc\x66\xaf\x20\xb1\xf0\x96\xbd\x84\x58\x38\x12\x50\xfa\x6e\xe5\x60\x8a\xa3\xe3\xe3\x0f\x46\xb5\xf2\xce\x64\xf2\xf4\xdb\x05\xaf\x49\x78\xbd\x17\xa9\xe5\x4a\x9b\x1e\xd1\x55\x9c\x2e\xb6\x8c\x91\x73\xdd\x98\xac\x44\xf3\x0d\x74\x70\x13\x72\xa8\x73\x03\xe7\x06\xb6\xdc\x2b\x03\x76\x05\xf8\x1d\x0e\x43\x7d\x8d\x17\xc0\x81\x2c\x60\x29\x4d\x01\x06\xe9\xe3\x70\xee\x45\x99\x63\x1c\xc5\xf4\x8d\xc6\x00\x59\xd2\x7e\x5c\xc4\x3d\xca\x2e\x69\x8a\xbc\xb8\xa6\x63\x6b\x7b\x09\xbd\x78\x61\xf7\xad\xb0\x96\x5f\xc9\x62\x9a\x6f\xc8\xe5\xca\x31\xa7\x96\x83\x54\x9d\x84\xc9\x2b\xca\xc4\x29\xc6\xc6\x65\x55\x95\x97\x40\x5f\xbf\x52\x72\xcd\xeb\xac\xf0\x49\xbc\xe1\xc7\x5e\x43\x47\x63\x95\x93\x28\x95\xcd\xbb\xd7\xa0\xed\xc0\xd5\x86\xf8\x69\xbf\xdd\x60\x3d\xb7\x11\xa7\x0d\x34\x2b\x2e\x72\x19\xc3\xee\xa5\x0e\x62\xf1\x75\x87\x58\x75\xbe\x7b\xc9\x45\xbc\x99\xe5\x41\x3c\x99\xfa\x19\x6c\x2f\x65\x97\xa1\xbc\x2d\x68\x9b\x98\x24\xfe\x94\xdd\x13\x6d\xcb\xef\x2e\xc8\x3d\x94\xe1\x60\x4c\xdb\x3e\xe6\xe4\xed\x20\x64\x89\xba\x5c\xbc\x51\xa1\x6f\x51\xbc\x34\xf7\x9d\xa3\x96\x91\x23\x2d\x29\x4b\x30\xff\x62\x0b\xd4\x48\xc4\x5d\xad\x02\x79\x67\x3b\xc6\x42\x7f\xcd\x43\x2c\x29\xee\x54\xb5\x5c\x49\xd1\x6a\x0c\xed\xfd\x69\xed\xba\xdd\xec\xd4\x3b\x83\x35\x48\x6c\xd0\x69\x77\x5a\xed\x61\x7b\x78\x56\xe5\xaa\x78\x00\xcd\x1f\xf2\x7e\x38\xce\x91\x25\x50\x70\x8e\x85\xe3\xf0\x25\xea\xe6\x8c\x8c\x86\xb5\x59\x7c\xcf\x2b\x5a\x63\xb2\xbf\xd2\xa2\xc2\x23\x5f\x27\x39\x9d\xde\x79\xc9\xa8\x31\x1b\xf8\x82\xbe\xc3\x1a\x7e\xd8\x00\x0e\xa6\x30\xaa\x2d\xbd\xa9\x9f\xa4\xb8\xa2\x2c\xd4\x82\x8b\xc9\x24\x55\x14\x3f\x79\x35\xab\x57\x02\x29\x8e\x68\x0c\xaf\x39\x8b\x8e\x12\x86\x81\x4c\x91\x7a\xb5\x08\x22\xbf\x8c\x93\x0e\xc3\x2c\x29\x84\x01\xee\x04\xa7\x19\xb5\x6d\xf0\xc7\x96\x05\xaa\xc1\x3c\xad\x9d\xa1\x8d\x0d\x94\xaf\x3d\xf4\xd3\x4f\x7a\xbb\xa7\x75\x56\x86\xaf\x49\x97\x0a\x6a\xfb\x9a\x5e\x60\x98\x2d\x23\x95\xc3\x18\x8b\x5f\x6b\x91\x99\xf2\x34\x3c\xd4\xaa\x16\x58\xd7\xc5\x97\xec\x88\x0e\x57\x41\x39\x0c\xb3\xbc\x01\x7f\x0a\x0d\xd4\xf4\x5b\x6b\xa3\xb8\x72\xab\x53\xef\x94\x63\x14\xd6\xa3\x91\xe3\x18\xe4\x49\xa7\x13\x55\x34\x2f\xbc\x2b\xe2\x8b\xf0\x2a\xf1\xa7\x53\x90\x23\xfd\x8c\x35\x2f\xab\x4c\x90\x4f\x76\xfa\x54\xf2\x4a\x2b\x5c\xbd\x8a\xab\x8f\xe1\xca\x96\x3b\xfc\xd8\x3e\x95\x75\x20\xb9\xf3\x65\x8f\x10\x7a\xb8\x8c\x5f\x24\xd5\x73\x1d\x81\xdc\x5b\xd6\x59\xea\x10\x1a\x05\x94\x6a\xc4\x01\x23\xbf\xd8\xb1\x1c\x9c\x8a\x42\x44\xe9\xde\x8b\x80\x50\xd7\x10\xd5\xa4\x89\x2d\x0c\x2a\xc5\xae\x1d\xc8\xbc\x31\x6f\xba\xfb\x78\xa8\xe6\xca\x27\xcb\x51\xa7\xc0\xfb\x9c\x35\x4d\x6d\x50\xd8\xef\xdc\xef\xfc\x6f\x12\xc3\xc5\xbe\x85\x6d\xfe\xb5\x1b\x18\x59\x96\x76\x8d\x8a\xb9\xac\x84\x7f\xa5\xa9\x8d\x50\x5c\x2d\x1d\xa7\xb0\xc7\x6b\x30\x0f\x52\xa3\xab\x13\xbe\x69\xe3\x9e\x58\x6d\x0e\x69\xa0\x40\xd9\x61\x71\x8e\x75\x7b\xb1\xde\x2d\x84\xce\x42\xd1\x73\xb6\x6d\xf6\xeb\x52\x74\x83\x38\x77\x3e\xb1\x05\x40\xb3\xfa\xac\x1a\x62\x49\xee\x99\x21\x02\x24\xb0\xce\xde\x45\x32\xe9\x41\xff\x72\x98\x70\x05\x6c\x40\x61\xf6\x46\x84\xe3\x0a\xc7\x5c\xd7\x7e\x54\x7e\x3b\x2d\xda\xb4\x95\xfd\xd5\x2c\xc8\x55\x8b\x96\x4f\x84\xac\x44\xdf\x56\xc2\x4b\x4b\x11\x49\x47\xc8\xe8\xc5\x2c\x43\xb5\x82\x39\x20\xb8\x10\x35\x8b\x09\x7d\x60\x5e\x92\xbd\xb2\x14\x96\x74\x81\xba\x85\xb5\xa5\xb4\xa4\x17\x24\xa4\x37\xb4\x1c\xd7\x6e\x4b\x1f\x5b\xd8\x3d\x74\x2a\x26\x4e\x28\xbe\xe4\x6b\x19\xf4\x68\xdb\x93\x4c\x00\x62\x87\xd2\x2e\x9a\xa4\x47\xc8\xed\xfd\x77\xdc\xa7\xb4\x00\x2d\x22\xd2\xf1\x37\xd8\x9b\xf2\xa8\xca\xf3\xd9\x34\xf7\x9e\xb7\xb0\x69\x4e\x76\x2c\x8c\x82\xe4\x51\x7f\x67\x96\xfd\xd0\x28\xea\xfb\xd2\x03\x6e\x29\xce\xd8\x05\x8e\x08\x03\xdf\x60\x57\x61\x1a\x07\x49\xb5\x20\x2f\x26\x0d\xb0\xbc\x53\xb0\xdb\x6f\x38\xbf\xca\xc8\xe7\xdc\xc4\xd6\x1c\xe3\x14\xe6\x86\x21\x4f\x9e\xb2\x89\x29\x51\x17\xe9\xb0\xe4\x7b\x93\xc4\x64\x14\x85\x8f\x75\x9b\x10\x4d\x2c\xac\x8d\xb1\xb2\x35\x7d\xac\xd4\xfb\x17\xd0\x31\xf9\x69\x3a\x9b\xe0\x40\xbd\x4f\xf4\xc7\x09\xf6\x83\x1b\x69\xbf\x53\x0e\x64\xb3\x88\xa6\xad\x2c\x11\xd1\x6c\x31\xb6\x67\xe7\x5f\x0b\x1d\x9a\x08\xe3\x02\x13\xf5\x24\xc5\x0b\xf3\x7a\xb7\xbe\x68\x16\x2d\x0a\xeb\x2f\x94\xb8\x0d\x92\xa7\x2a\xa4\x03\x4e\x05\x48\x10\xbf\x9d\x07\x9c\x1b\x3a\x25\x79\xf5\xb0\xca\xb6\x54\xde\x2c\x76\x8d\xbc\x08\xe7\x84\xb0\xe1\x36\x21\x94\x3d\x99\x4b\x55\xbf\xd8\x40\x85\xda\x51\x06\xad\x40\x29\x6a\x68\x26\xac\x37\x24\xef\xed\x26\x12\xf3\xae\x4c\x3e\x07\x43\xb8\x2f\xa1\xff\x2d\xbe\x2c\x99\x67\x85\x61\x5e\x98\xbc\xa7\xd0\x49\x2b\xe5\xee\x49\xb6\x08\x78\xb8\xd3\x27\x8d\x91\xb5\xbc\xf7\x0b\x57\x18\x4c\x59\xbc\xa0\xf2\xea\x58\x5e\x83\x59\x5e\xb0\x07\x90\x53\x48\x33\x00\xb8\xd8\x2b\x24\x0f\x54\x8e\xa9\x6d\x45\x18\x31\x4b\x5e\x66\x07\xc0\x4c\x66\x2e\x70\x04\xc6\xbc\xc5\xd0\x44\x94\x72\x07\x30\x1a\x3a\xbb\x18\x96\xa9\x33\x00\x15\x96\x24\x24\x6d\xa2\x4e\x0b\x4c\x8e\xe1\x03\xb7\x9f\xdd\x1b\xa2\x78\x12\x12\x19\xc1\x43\x3e\xfd\x74\x15\x8e\xc7\xa8\x8f\x45\x83\x01\x4a\xfc\x28\x88\x27\xe3\x9b\x07\x3a\xdc\x53\xab\x09\x36\x4c\x1e\xda\xfb\xc5\x83\x29\x25\x8d\x7f\x03\x2e\x44\x27\x39\x30\x59\x90\x44\x8d\x2b\xf8\x1a\x0f\x66\x19\xae\xbc\xe0\xd1\xa8\x5e\x78\x2c\x71\x87\xc7\xcc\xb7\x1c\x62\xd1\x03\x41\xf7\xd0\x0b\x32\x1c\xe4\xff\x5f\xb8\xcf\xcc\x14\x8c\xcc\xdd\x38\x35\x7b\x9c\x44\x3d\x46\x5d\x54\xb1\x69\x37\xea\xa7\xd3\xcc\x66\xd9\xa1\xa8\xfe\xc1\x79\x95\x64\x28\x91\x29\x9c\x4a\xa7\xb5\x6a\xa4\x35\xb7\xb8\xd5\xd1\xa5\x2d\xad\x6b\x53\x5a\xa1\xf1\x66\x69\xe2\x81\x5c\x81\x2b\x62\xdc\xe5\x69\x90\xd9\x42\xba\xad\xae\xb0\x44\xde\xd2\x78\x00\xfe\xd6\x80\xb5\x84\x36\xb3\x62\x0c\xc0\x6e\xda\x50\x93\x8b\x64\xd0\x4c\x41\xce\x93\xc9\xf2\x31\x47\x2f\x4d\x7d\xb6\x92\x1a\x3a\x4f\xe1\x6c\x77\x96\x3a\x62\xa2\xd4\x82\x87\xf1\xfc\x48\x2d\xa4\xe8\xbb\x69\xb5\x6d\x9a\x01\x45\xc5\x1d\x30\xbe\xcc\x59\x9e\xc6\x92\x3d\x01\xcb\x21\x7e\xdd\x5d\x1f\x6e\x89\x12\x27\x14\xe2\xf6\x6f\x36\x0d\xd7\x23\xea\xc7\xdf\x6f\xed\xdc\x22\xb2\x7d\x72\x0b\x4a\xdb\x2e\x9c\x4b\x79\x9c\xd9\x16\x6f\x71\x0b\x69\xc5\x2d\x1d\x76\x3b\x3f\x7c\x0e\x86\x5d\x69\x7b\x96\x28\x64\x41\xf5\x38\x73\xa9\x5a\x64\x5f\xfe\x3e\xf4\xe5\x85\xd2\xc1\x77\xa0\x8e\xf8\x9b\xa8\xcd\x2d\x8b\xaf\x94\x26\xf9\x05\x1f\x6a\x57\x58\xd9\xc7\x6f\xd8\x43\x7f\x3e\xb2\x06\x3b\xdf\x8e\xbe\x91\xc2\x41\xdb\x5d\xe3\xcc\xa5\xdc\xb5\xc9\x2e\x04\x3c\x11\x5b\xb8\xb8\x22\x61\x4f\x87\x57\xc8\x18\xec\x99\x6e\x7b\x2e\xef\x4e\x2a\xc6\xd2\xbe\x19\x5d\x5a\x81\x2d\x56\xc1\x60\xc5\x1a\x92\xc0\xa9\x98\x57\xf4\x25\xee\xeb\x0c\x39\x00\x84\x31\x3f\x6a\xfb\x92\x1e\xdf\x40\x63\x3f\xbc\xa6\xc9\x40\xa0\x82\x75\x48\xa5\xb3\x35\x35\xcc\x54\xa0\xbb\xf4\x26\xd6\x13\xdf\x3d\xf4\xc1\x7f\x01\x3f\x7e\x60\x05\xf1\xf7\xce\x98\xbf\x47\x3d\xb1\x8d\x19\x2e\xaa\x28\xbe\x17\x63\x7c\x70\x14\x4d\x45\xf1\x43\x31\xee\x92\x7a\xe2\x6f\xce\xbb\xbf\xb9\xb2\xf8\xdb\x6f\x15\x9e\x62\xdb\xe3\x38\xa1\x3d\xdc\xde\x51\x4a\x1f\xee\xbe\xbf\xb0\x6d\x1d\xf2\xf8\x96\xdc\x3d\x8a\x14\xe4\xb9\x2a\x4f\x64\xba\x94\x53\x5a\xb2\xfc\x95\xb7\x67\x5e\xbb\xf9\xbd\x26\xa5\x7c\xf0\x1c\x94\x8b\xe6\x9e\x54\x72\x4e\x1a\x88\x99\xe9\x27\xb5\xb4\x93\xbc\xa2\x23\xf1\x24\xe8\x47\x73\xe0\xe2\xa7\x9a\x7c\x72\xdf\xcf\x46\x1e\xb2\xa4\xa0\xcc\x8f\xd7\x1f\xe2\x81\x3f\x46\xd3\x78\x7c\x33\x0c\xc7\x28\x1e\x22\xba\x69\xb1\x53\xbc\xe5\xc8\xcb\x62\xdb\x6f\xa8\x05\xb5\x86\x15\xc6\x24\x5e\xef\x90\xf7\xb7\xaf\xcd\xd8\x41\x92\xad\x65\xff\x0f\x83\xa9\x81\x8d\xe0\xac\x4f\x66\x50\x27\xe2\x9d\x95\x69\x12\x67\x31\xf9\x84\x36\xc8\xe9\x43\x2f\xc0\xea\xa1\x0d\x14\xe1\x2b\x82\x40\x31\x84\x68\x36\x1e\x3b\x16\x8a\xc0\x20\x5f\x26\x52\xbc\x23\x5b\x24\x4f\x3e\x27\xc5\x4a\x6e\xa7\x62\xfb\x43\xd8\x4f\xfc\xe4\x66\x9e\x8e\x5c\xca\x0f\xea\x04\x05\xd9\x42\x99\xd6\x93\x08\x17\xbc\xcb\xfe\x18\x85\xd1\x08\x27\xa1\x12\xc0\x55\x89\xe8\xa0\xe7\x19\x35\x23\x8c\x9a\xd3\x59\x22\xec\x1f\x8f\x31\x0c\xee\x71\xc2\xcf\x60\xe4\x67\x1c\x21\x16\xca\x83\x8a\x41\xc6\xa9\x12\xa1\xa2\x38\x80\x5c\xee\x8a\x2f\x71\x92\x84\x01\x4e\xd1\x21\x55\x88\x84\x38\xa5\x0c\x7c\x7a\x83\xc2\x88\x65\x33\xce\x11\x28\xd1\x82\x9e\xab\xe1\x64\x51\x00\x86\xcc\xe5\x28\xb7\x48\xd4\x40\x32\x51\xfb\x37\x27\x94\x84\x15\xe9\xa6\xc0\x24\x51\xf6\x17\x0b\xf1\x38\xe8\xa2\x17\x90\x29\xeb\x85\x6e\x38\x62\x6f\x93\xfc\x4d\x70\x36\x8a\x83\x42\x1f\x79\xa9\xb4\x1e\x23\xdf\xe6\x78\x86\x90\x19\xce\x90\xa2\xaf\x18\x64\xf3\x79\x75\x06\x31\x9c\xfa\x57\x91\xf9\x45\x62\x24\x44\x58\xc8\xd3\xea\xb9\xcc\x89\x37\x67\x17\x13\x1c\x59\x4c\x87\xc9\x8e\x52\x8c\x05\xca\x99\x0f\x3b\x77\xe5\xe5\xad\xe9\x1f\xac\x08\x30\x33\x29\xee\xfa\x15\x0a\xc7\xd2\xc4\x8e\xd3\x0f\xbc\xc9\x91\x9f\x1e\x5c\x45\x8c\xec\x6f\x2a\x2f\x48\xcd\x17\x55\xe1\xf3\x44\x1e\x61\x13\xe4\xe5\xc9\x8b\xb9\xfd\xa0\xb5\x0a\xa7\xdb\x52\xeb\xff\x49\x67\x53\x22\x6a\x45\x61\xb6\xe2\x13\xe1\x94\x6d\x7d\x7e\x72\x31\x23\xa3\x6b\x1d\x0f\x64\xc9\xa0\x50\x30\x4e\xb9\xc7\x6d\xf2\x22\x45\x39\x47\x0f\xa9\x52\x98\x4f\x3a\x5d\xa5\x26\x04\xb9\x83\xca\x7e\xe0\xd8\x76\x10\x57\x8c\x0f\x71\x82\xa3\x01\x69\x00\xc6\x79\xaa\xaf\x57\x63\x18\x98\x5c\x6c\x03\xe8\xdc\x67\x90\x2d\x35\x86\x8d\xa9\x6e\xc3\x4a\x49\x65\xa6\x49\x55\xde\xb3\x88\x8e\x03\x4c\x20\x5d\xb5\x66\x08\xd4\x4d\x3e\x1f\x79\x06\x9b\x4a\x55\x5c\xc3\x11\x51\x1a\x42\xca\x01\x90\x4a\xf5\xef\xcc\x2b\x79\xc4\x72\xb4\xc1\xd8\x26\xbf\xb3\x98\xcb\x8b\x68\xb9\x62\x8e\x67\x36\x02\x4b\x2e\x8f\x93\x6d\xae\x5c\x1e\x41\x5d\x5a\x23\xfc\x9d\xba\x4e\x9c\x54\xc3\x8b\xdf\x85\x6c\x8a\xdc\xd5\x1d\x73\x85\x0e\x18\x33\x63\x49\x02\x80\xa4\xc0\x84\x3e\x08\x50\x1a\x4f\x30\x4d\x3d\x85\xae\x46\x38\x42\x37\xf1\x2c\x11\x66\xf6\x3e\x11\x67\x29\xf0\x07\x8e\x9d\x7b\xdf\x5d\x50\x77\x74\x2e\xda\xcb\x10\x65\x00\x2b\x2b\xe6\xc8\x88\xa1\xbf\xe3\x76\x37\x17\x8d\x52\x73\xda\x8b\xa7\x44\xd8\x99\xe6\x72\x0f\x93\x77\xee\x21\x4e\x49\xc0\x40\xc3\xa4\xc8\x54\x13\xd0\x44\x3e\xf0\x94\xb2\xd5\x49\xf7\xcf\xb2\xf2\xcb\x1d\xc7\x1d\x1a\x51\x2e\xb1\x45\xff\xac\x6b\x5c\x44\x3c\xe4\x97\x6d\x1f\xfd\x09\x18\x4d\xcc\xa9\x87\xd8\x56\x9d\x17\xd3\x37\x6b\x19\x60\xb5\x70\x8b\x25\xd3\x79\x2a\x17\x3f\x43\x1b\x52\xfb\xea\xa7\x05\x52\x17\x39\x36\xd9\x6d\x74\x15\x47\x2f\x32\x2a\x3f\x73\x77\x47\x29\x78\xe1\x38\x8e\xa7\xc8\xef\xc7\x97\x96\x6d\xb0\xb8\xcb\x2f\x38\xb4\x17\xee\x0e\x03\x17\x15\xad\xca\xfd\x14\x6f\x4b\xe4\xd5\x2a\xb5\x78\xc4\xe1\x04\x7a\x0a\xf6\x2f\x8b\xac\x1b\xdb\xc6\x37\x18\xc7\x11\x7e\x04\x8e\x07\x70\xd1\x46\xbe\x87\xc0\x8b\x12\x3b\x19\x29\x36\x77\x23\x93\x73\x91\xa8\xc2\x11\xe7\xa7\x56\x7b\x32\xfb\x19\xd9\x7a\xbb\x1f\x21\x1f\x3c\x6f\xb5\x58\x84\x85\x91\x85\x8c\x38\xef\xc5\x20\x6c\xe1\x69\x84\xf1\x83\x1a\x0e\x31\x0d\x2f\xa2\x70\x18\x0e\xfc\x28\x63\x01\x25\x43\xda\x7b\x00\x49\xdb\xb1\x1d\x93\x7f\x95\x3c\x88\xe9\x59\x59\x7e\xf3\x00\x61\x63\xcc\xe6\x75\xb2\x70\x84\xc1\x97\x4d\xaf\xe6\x8c\x35\xb2\x9a\x85\x89\x91\xd2\x6e\x30\xe6\x0e\x1a\x7e\xb0\x54\x2f\xb2\x7f\xb6\xb2\xb1\x1b\xb6\x30\x0e\xed\x7f\x79\x00\xa7\xb5\xeb\x5a\xad\x56\xaf\x35\x6a\x4d\x0f\xd5\xae\x6b\xad\x5a\xbb\xd6\xa9\xad\x9d\x3d\x1a\x60\x0f\x75\x4a\x87\x5e\x61\xe1\xeb\xf8\x8c\x18\x2b\xf6\x8a\x39\x04\xc3\x72\xe5\x0f\xf4\xbf\x5f\xbf\x42\xcc\x5e\x4d\xd4\x18\xa2\x8a\x98\xde\x1f\x36\x2c\x8a\x42\xf9\x0f\xa0\x4a\x46\x43\xfc\x67\x69\x63\x52\x1d\x00\x25\x8f\x31\x8e\x2e\xb2\x11\x35\x3d\x72\x72\x91\xf2\x31\x63\xf2\x85\xb2\x58\xa4\x98\xed\x68\x10\x07\x84\xde\x31\xfd\xa1\x93\x3b\xbc\x2e\x8e\xfd\x29\x08\x00\x47\x83\x95\x5d\x7c\xed\x6e\x73\x5e\x00\x99\x52\xab\x7d\xe1\xe0\x2e\x39\xb1\x96\x88\xec\x62\x89\x6b\x30\x2f\xac\x8b\xa5\x8a\x32\x24\x9f\xb2\xe1\xfa\x42\xd1\x5c\xd8\x54\x38\x63\xb9\xf0\xa9\xfa\xfa\x15\xed\xe2\xeb\xc2\xf0\x2d\x73\x08\x68\xe0\x67\x38\x62\x7b\xbe\x4a\x41\x0e\xe6\xef\x26\x24\xe9\x1e\x36\x1f\xf0\x13\xc6\x0d\x25\xca\x84\x34\xbf\x8b\xde\xeb\x96\xc5\xa5\x0c\x6d\x08\xec\xea\x3c\x7e\x86\x78\xd3\x70\xa7\x34\x83\x92\x3a\x53\xa2\x81\x9d\x17\x0b\x47\x42\x06\xf6\x57\x83\x61\x59\x7c\x15\xb3\x91\x2f\x42\x1d\xe4\x24\xe6\x2e\x1d\xa6\xc7\x39\x8f\x51\x78\x8e\x03\xf8\xb1\xca\x92\x28\xfc\xbc\x8e\xd1\xa9\xde\xd8\x9f\x4c\x11\xbe\x86\x48\x92\xfd\x50\xef\x1c\xbd\x57\x25\x65\xcc\xdb\x06\x7a\x9f\x3a\xb0\x05\x49\x51\x10\xff\x97\x23\x50\x3a\xd4\x27\x22\x69\x84\x61\xab\x45\x7e\x86\x7c\x94\x85\x13\x8b\xc4\x6d\x0b\xc9\x2e\x77\xd7\x9d\x14\x42\x1e\x1c\x52\x14\x6d\x10\xf4\xd8\x2c\x9c\x86\x3c\x2a\x36\xf9\x4f\xa5\xd1\x42\xcb\xa8\x12\x52\x8c\x5f\xa2\xf5\x6a\x55\x44\xcb\x76\x4a\xf1\x14\x8e\xda\xe3\x25\x14\x8a\x70\xdb\x5f\x37\xf2\xa6\xdf\xbc\xe1\x6d\x58\xca\x8b\x46\x4b\x08\xfe\xce\x6d\x49\x1e\x53\xba\xb8\xee\x35\xa6\xee\x28\xf7\x65\xbb\xbf\x81\xcc\xc1\x2e\x93\x31\xd8\xa4\x42\xb1\xd9\x2e\x6d\xa8\x68\xda\x72\xac\xf8\x61\xe4\xf7\xf5\x93\x87\x74\x00\x28\xcb\x4e\x69\x0c\x0e\x22\x04\x2a\x82\x61\x98\xdd\x57\x14\xcc\x17\xa7\x58\x5d\x0e\x26\x45\x3e\x97\x0d\xdd\x6b\x61\x4d\xa6\x1c\x65\x8b\x8b\xe4\x64\x32\x76\x86\x61\x11\xd5\x4e\x05\x0c\x1e\x67\x7e\x03\x96\x0e\xfd\x03\xd2\x6f\x36\x08\xe9\xa7\x0a\x5f\xb0\x10\xbc\x22\x4a\x6d\xa0\x7d\x3f\x1b\xad\x0c\x70\x38\xce\x6b\xae\xa2\x05\x22\x12\xd9\xcf\xbf\xa5\x76\x1e\x87\x39\x92\x71\xfc\xbd\xab\xdd\x27\x3b\xee\xca\xb4\x60\x9c\x77\x55\x5a\x98\x77\xce\x95\xc1\xc2\x49\x8d\xe2\x2a\x47\x3f\x37\x4f\xce\x2b\x26\x8d\x30\xf3\xfb\x9a\xd3\xa4\x8e\xd4\x5b\x7c\x0a\x24\xb1\x61\x18\x8e\xc7\x3c\xec\x2c\x73\x93\x80\xf3\xd6\x7c\xa1\x84\x1f\xe6\x22\xdb\xa1\x57\x06\xe5\x74\xf1\x29\x35\xcb\x0c\x52\x29\x42\x79\x28\xe3\xb3\x12\x47\x30\xe6\x0a\x52\x77\x9f\xb4\x68\x09\x99\x4c\x22\xfb\x11\x4b\x66\x0f\xe6\x81\x8a\x7c\x4d\xd4\x1b\xf2\xc9\xf9\x95\x3b\xca\xfc\xf9\x15\xda\x20\xff\x3a\x12\xa8\x4d\xce\xbf\x90\x6d\xe6\xba\xe9\x07\xb8\xb3\xde\xd7\xc3\xaf\x8b\x62\x7e\xfa\x19\xc9\x9c\xa3\xe0\x9e\xa0\xc4\xdd\x1d\x6d\xb5\x52\xbb\x7e\x55\xeb\xbc\x42\x2f\x49\x17\xbe\xc0\x9e\xbe\xb3\xb3\xb3\x53\x45\x4b\xf4\xc5\xcf\x3f\xa3\xda\x75\xbd\x06\xdb\x3d\x41\xc0\xb1\xdd\xd3\x2e\x56\x6a\xd7\xad\x4e\xbb\x46\x81\x5d\xe9\xc0\xae\xca\x02\x83\xe1\xc5\xe9\x0c\x3c\x7d\x2a\x80\xc6\x9b\x37\xb4\x26\x5a\x42\x30\xd2\x85\xf5\x59\xdd\xd5\x0d\xa8\xc3\xfe\x8a\xcb\x2e\x6d\xa0\xda\x4a\xdb\x59\x06\xc6\x94\x15\x7d\x49\xed\x6d\x38\xb5\x55\xd1\xcf\x68\xa5\x8d\xfe\x03\xd5\x51\x17\x2d\xd7\xcb\x88\x28\x06\xe7\x50\xc5\x0d\x0f\x25\x03\x7f\x30\xc2\x2c\xbb\xce\x7c\x81\x83\xd4\x3c\x27\xf4\x98\x54\x2a\xb4\x2a\x39\x2a\x29\x48\x92\xdd\x44\x1a\x0c\xfb\x15\x13\xad\xba\x81\xce\x93\x0a\x2d\x0f\x04\xb9\xd6\x5f\xb3\xf4\xe9\x2a\xcf\xe1\x53\x11\xe5\x73\xf8\xe8\x2b\xaa\x95\x0c\x6b\x1e\xe1\x2b\xc9\xd9\x09\x6e\x1d\x99\x02\x24\xe2\xe9\x7b\x9e\x69\x23\x69\x77\x3e\x65\x47\xfb\x79\x86\x34\x38\x1a\x80\x21\x0d\xfd\xaf\xdd\x90\x66\x17\x5f\x9b\x9a\x00\x1b\x38\x52\x70\x83\x02\x5d\xa1\xbf\xcb\xc5\xdf\xd4\xd5\x17\x23\x7c\x5d\x5a\x85\x51\xe2\xe4\xb9\x60\x54\xcd\x52\xad\x3f\x14\x23\x1f\xe1\x6b\x33\x84\x26\x1b\x3f\xe9\x68\x3f\x3f\x91\x90\x35\x70\xe6\x5d\x8f\xa9\x57\xa5\x4f\x9e\xe9\xa2\xc7\x48\x3a\xeb\x26\xa0\x11\xbe\xee\x8d\xfc\xa4\x74\x9e\xad\x74\xee\x81\x0e\x72\xa4\x85\xf4\x20\x77\x75\xcf\x43\x1c\xc7\x8e\xad\x71\x00\x4b\x80\xb4\xaa\xb9\xda\xa7\xde\xa9\xda\xf8\x9d\xad\x2a\x69\xa7\x36\x2c\xae\xeb\x60\x10\x02\xdc\x1f\x71\x18\x55\x5e\xbc\xb8\x43\xc4\x4d\x89\xc2\xe9\x7a\x5b\x44\xd3\xc3\x57\x0a\x25\xdc\xf2\x0b\xc6\x21\x3c\xfd\xf5\x52\x13\x5f\x6c\xd4\x66\x5b\xac\xc7\xf2\x91\x32\x69\x95\xc5\x12\xa5\xd0\x3a\x1f\xf8\xd1\x85\x3e\xb2\xa3\xcc\x22\xab\xe6\x6a\x91\xd4\x74\x72\xa3\x6c\x0b\x6d\x14\xe4\xc7\xa4\xab\xa5\x09\x9a\x09\xe8\xf4\x5e\x94\xb1\xce\xae\xa4\xb3\x7e\x9a\x25\x95\xd0\x43\x8d\xaa\x07\x49\xf8\x72\x95\x05\x59\x51\xeb\x55\x9b\x03\xee\xc2\x7b\x9e\x32\x4c\xab\xa8\x51\xd6\x7d\xf6\x83\x9f\x85\x51\xbd\xdc\xa6\xc5\xca\xf2\x7d\x4b\x3c\xde\x6d\xeb\x62\xd5\xff\xba\xdd\xab\x2c\x02\x0f\xb5\xa6\xc6\xd0\x9e\x7d\x0f\xa3\xb8\xfc\x8f\xda\xc6\xe8\x70\x7c\xc7\x3b\x99\x84\x20\xdd\x91\xe8\xd4\xad\x0c\x93\x78\x42\xde\xf6\xe2\x00\xc3\x26\x55\x76\x43\x92\x01\xde\x63\x4f\x52\xe8\xf6\xee\xdb\x92\x20\xc7\x85\x16\xc3\x77\xbd\x39\xb1\x55\x44\xf7\x27\x79\xb9\x95\xdf\xa2\x44\xad\xc5\x76\x29\x51\x4d\x6c\x54\xe2\xcd\x63\xef\x55\x5a\xd3\xf3\x72\x39\x87\x92\x16\x3d\xef\xed\xca\x80\x11\xf4\x66\x56\x09\xf9\x9a\xd0\xb7\x2a\xbb\x6e\x71\xe1\xad\x4a\x43\xb8\xec\x4e\xf5\xe9\x64\x67\x79\xbd\xdc\x46\xf5\x29\x1b\xae\x8b\x6d\x8a\x3d\xdc\x6d\x93\xa2\x8d\xfe\x75\x7b\x54\xc9\xf6\x1f\x6a\x65\xcd\xb2\xe1\xba\x7d\x83\x22\xa3\xf8\x98\xdb\x53\x96\xdc\x14\x18\x18\x05\x98\x1c\xd1\x3f\x1d\xed\xf5\xb8\xa7\x53\x05\xa7\x03\x7f\x8a\x2b\x05\x1b\xa7\xc9\x96\xd1\xc0\xcf\x06\x23\x54\x31\xd3\x47\x03\x0a\xa3\x24\xbe\x02\xba\x85\x8c\x2b\x95\x17\xfb\xfe\x78\x18\x27\x13\x1c\xb0\x69\x08\xfc\xcc\x37\x53\xd0\x2d\xce\xc0\xe5\x49\xbd\x3b\xff\x66\x73\xb5\x08\x99\x7c\xd7\xcc\x1b\x28\x8c\xb2\xee\x9c\x0c\xcb\x33\x6e\x56\xc7\x65\x0c\xa0\x6c\x0d\xb3\x88\x51\x0f\xb5\x10\x50\xe8\x8a\xc3\xa9\x96\x0e\x40\x23\x52\xf0\x42\x2e\x4c\x1c\xb0\x6c\x66\x92\x17\xba\x33\x13\xaf\x64\x27\x7b\x23\xa5\x44\x9b\xcc\xd2\x0c\xf5\x31\x0a\xc9\x88\x4e\x70\x94\xd1\x3c\x6b\x3e\x5c\xaf\x27\x38\x13\x1e\x0b\xa5\x72\xfb\x6a\x79\x3a\x55\xe5\x3e\xcd\x71\x48\x5d\xab\xf2\x04\xf1\x9f\xf1\x34\x43\xb3\x68\xca\x93\x06\xaa\xd9\x41\x25\x9b\x96\x9a\x85\xfb\xbe\x65\xe3\x00\x99\x06\x37\xc5\x28\x08\x2f\x31\xd7\xe7\x92\x66\x70\x90\xdd\x95\x59\xf3\x68\x23\xfd\x82\x25\xd1\x66\x49\x4c\xb3\x18\x85\x59\xca\xbd\x62\x10\xa1\xe0\xfb\xde\x31\xf5\xad\xc8\xd3\x84\xb8\xee\x4b\xa6\x52\x59\x77\x99\x79\x1f\x02\x2b\x65\x9b\xcd\x00\x64\xe0\x64\x9e\x8a\xda\xce\xaa\x33\x25\x5a\x3e\xda\xf2\x33\x9f\x0b\xeb\xb5\xb2\x92\xe6\x66\x10\xa4\xd0\x06\xcf\x0b\xee\x18\x69\x46\x0b\xe5\x37\x45\x11\x64\xc1\xc8\x3c\xce\x8c\x5d\x10\x5d\xf3\xcc\x09\x80\xf2\x4b\xea\x53\xe2\x4b\x16\x94\xd4\x9e\x18\x38\xde\xe3\x4c\xe6\x39\x45\xa7\xf2\xc2\xe4\xf7\xa5\xea\xcd\xdf\x1b\x59\xc9\x32\xc9\xcc\x4d\xf7\xfa\x3c\x1d\x9d\x1c\x50\x54\x1a\x20\x16\x4c\x54\x05\x25\xfb\x38\x03\x19\xcd\x89\x13\xc9\x68\x4d\x62\xca\x80\xe1\xfc\x48\x69\x9b\xd0\x35\x17\xf9\x72\x53\x22\x1b\x30\x83\x68\x97\x36\xd4\x24\xe9\x65\x29\x98\xe7\x3a\x4d\x91\x7f\xe9\x87\x63\x88\xd8\x45\xf9\x02\x30\x3b\x37\xd5\x9c\x48\xce\x2a\x61\x74\x19\x7f\xc6\xa9\x9e\x64\xb8\xc2\x92\x03\x7b\xe8\x6a\x14\x0e\x46\x56\x56\xdd\xbf\x29\x60\xd5\x66\xab\x7c\xa1\xf4\xe3\x78\x8c\xfd\xe8\x16\x05\xf1\xce\x78\x96\x8e\xd0\xaf\x23\x9c\xd1\x78\x26\x3c\x17\x2d\xb8\x6b\x4d\xfd\x04\x18\x05\x7b\x95\x73\x6d\xc1\xae\xef\x10\x0e\x44\x70\x7a\x18\xf1\xfb\x6f\xf3\x02\xe0\x16\x25\x24\xd7\x9a\xe1\xa9\x72\x5d\x71\x39\x16\x04\x63\xcf\x14\xac\xc6\x5a\xa5\x45\x95\xc5\x47\x07\x7c\x41\x9d\x09\x5b\x22\x39\x71\x5b\xb4\x25\xe4\x35\x37\x4e\x83\x91\x75\xa9\x55\xc8\x47\xc9\xd0\xcc\x45\xf7\xbc\x78\x2e\x2b\x6c\x68\x29\x99\x8b\x0a\x73\xe8\x79\x6d\x7b\x44\xbf\x5e\x3c\x8b\x32\x4e\x5f\x16\x66\x42\x80\x46\x34\x91\xf0\x11\xc4\x2d\xde\x50\xf1\x5f\xd5\x9a\x7c\x6d\xf2\x22\xd7\x90\x33\x0c\x8e\xe2\x59\x14\xa0\xd9\x94\x3a\x14\x0e\xc6\xb3\x00\x6b\x74\x6f\x56\xd3\x30\xca\x8d\x5c\xe4\x0f\xe5\x63\xdb\x0a\x2c\x82\xf8\x2a\x92\xf1\x88\xa3\xf1\x0d\x1a\xce\xc4\xa2\xb4\x44\xd2\x5f\x5d\x45\x63\x9c\x52\xa7\x4a\xbb\xac\x05\x7c\x23\xc1\x13\x3f\x8c\x54\xe1\xaa\x5c\xbf\x26\xfe\x75\x45\xe9\x17\x5c\x9c\xa2\x65\x5b\x66\x76\x6f\xfe\x95\xaa\x98\x73\xaa\x79\x70\x4d\x39\x50\x32\xc7\x43\x69\xfd\x25\x92\x08\xd0\x45\x4f\x40\x1b\x4e\x72\x22\x5f\xd5\x3e\x86\x51\x45\x6e\xf2\x25\x6a\x79\x0a\x9d\xd9\xcc\x27\x79\x06\x6f\x1b\x91\x10\xba\x93\x00\x16\xbb\x6d\x51\x3e\x4f\xd5\x2c\xec\xf7\x1b\x79\x04\xc4\xdb\x25\x69\x3d\x39\x8d\x26\x08\x66\x38\x21\xa7\x49\xb1\x31\x2c\xe7\x07\x04\x70\x86\xb4\x57\x64\xdc\x45\xdd\x83\x04\x57\xb1\xe5\xaa\x77\xcd\x31\x52\x52\x60\xe5\x0c\x1f\xa6\xdc\x2c\xaa\x70\x5f\x99\x85\xe9\xc9\xb0\xe4\x11\xb5\xa0\xa1\x70\x32\xb4\xbc\x21\xcf\xf4\x7c\xaa\xe4\xb1\x45\x8b\xb0\x75\x2b\x9c\x54\xfc\x3d\xb9\xe9\xfb\x1a\xbb\x95\xce\x42\x59\xe8\xe4\x75\x4f\x2b\x37\xc7\x6e\xf8\x17\x99\xbc\x9d\x1b\x1b\x62\x8e\x89\x75\xc6\x0a\x2d\xde\x54\x1e\x26\x4e\x9a\x8e\x4c\xf4\xfc\x0c\x3e\xf2\x53\xc8\x90\xeb\x3c\x71\xcf\x4d\x45\x9e\xb3\x6b\xd9\x07\x8a\x4e\x3a\x83\x4e\xc3\xae\xe1\x14\xc5\x91\x74\x14\xae\x77\x50\xa5\x5d\x6f\x80\x25\x6b\xd5\x72\x2c\xde\xa5\x95\xf9\x31\x58\x3c\xda\xcf\xc3\x0f\x12\xf5\xb5\x28\x03\x59\x61\xc0\xd4\x22\x57\x33\x3a\x08\x0b\xe4\x24\xbf\x6b\x74\x3b\xd2\x10\xa2\x21\x92\xe7\x05\xb9\x2b\x6d\x43\x22\xe6\x40\x09\xdd\x76\xbc\xbb\xd9\x68\x77\xec\x4e\x62\x45\xa9\xae\xef\x1c\x61\x8d\xc7\x56\x2b\x1f\x66\xed\x18\x8b\xf0\x1e\x6e\x0d\x81\xa9\x86\x98\x63\x89\x9d\x6b\x52\xf8\xc2\x79\x78\x95\x09\xa3\x97\x87\x50\x91\x00\xc2\xb2\x8a\x47\x2d\xe1\x58\x49\x00\x5a\x61\x5e\xa6\xd4\xa0\xef\xcd\x6c\x38\x2c\x1b\x33\xdf\x90\x8f\x16\x1b\xeb\x4f\xd3\x00\x58\x86\x3c\xd8\x34\x2d\x7f\xf9\x8c\x7d\xce\x08\xc2\x14\xb8\x1e\x47\xb8\xb4\x0b\x11\x65\x45\xcc\x7f\x68\xee\xf2\x5e\x60\xce\x67\x80\x57\xe5\x05\x43\xca\xa6\x4b\x51\x4b\xce\x57\x9d\xd0\x82\x32\xa1\x28\x63\xe0\x58\x8f\x0e\x8d\x04\x53\xd8\xa8\x10\x2c\xe4\xc1\xc6\x97\x08\xe9\x04\x5f\x1b\x28\xe9\x1c\x6b\x8a\xbf\x0f\xe6\x3b\xb1\xc3\x92\xdc\xa4\x02\x17\x27\x83\x44\x1f\x63\x40\xd9\xcf\x68\xbe\x78\x56\x33\x8f\x19\x8a\xc2\x14\xe1\xe1\x10\x0f\xb2\xf0\x12\x8f\x6f\x90\x8f\x02\x9c\x66\xc9\x0c\x9e\x3d\x90\xd3\x97\xe3\x68\x80\x4b\x45\x19\x2d\x49\xa1\x4a\xa2\x07\x40\x29\x0f\xc8\x0d\x25\x16\xd7\x5c\x90\x41\x78\xa0\x9d\x01\x6d\x70\x72\x14\xc9\x84\x1c\x6a\x09\x47\xe9\x22\x42\x2f\xa8\x36\x9f\xea\x79\xd1\x85\xe8\x7e\xc7\x32\xbe\xe6\x81\xa8\x18\x0c\x9a\xb7\x56\xe6\x09\xf0\x0b\x70\x56\x69\x84\x38\x93\xdd\x91\xe6\xc1\xba\x78\x48\x79\xd7\xe2\x91\x92\xdf\xb5\xeb\x8d\xd5\x66\xa3\x9c\x98\x9f\x32\x8d\x8f\x12\xff\xde\x67\x93\xf6\x42\x04\x4e\x0a\xa3\x0c\x27\x43\xc9\x5a\x18\x39\x57\x05\xe7\xaf\xac\xeb\x9c\x6a\xe9\x76\xcb\xe2\x23\xfa\x68\x84\xc7\x53\x9c\x10\xf1\xa7\xc4\x22\xd8\x61\xb8\x31\xdf\x60\x1d\xe5\x6f\x70\x8f\x47\x65\x26\xdd\xa9\x82\x76\x75\xe5\x9c\xf6\x6a\x17\xba\x54\xb1\x09\x5b\x6e\xfd\x9c\x5c\x55\x31\x1e\x04\xd0\xae\xfb\x3d\x63\x5d\xd8\x03\xe0\x22\xf5\xbc\xc8\x56\x22\x1c\x16\xd5\x2c\x62\x79\x86\x4b\x95\xc2\x17\x3f\x36\x5a\xe9\x89\xb0\xe4\xdd\xfd\xcd\xde\xc3\xd3\x13\x11\xa1\x79\x50\x0a\xd2\x02\xa3\xab\xbf\x05\x4d\xed\x4e\xfc\x41\x29\xba\x9a\xf8\x83\xfb\xd0\x96\xa8\x7e\x2f\xfa\xfa\x8c\xed\x2a\x24\x89\xbe\x7a\xe7\x80\x16\x99\x07\x4a\x64\xb4\x11\x5a\x77\x31\x62\x2b\x3c\xfe\x0a\x4d\xd2\x1c\x1f\x06\x82\x0d\x38\x31\xb0\x1f\xb9\x17\x03\xcf\xd4\x02\x21\x7d\xf7\xfd\x6c\x44\xc3\xfa\x3e\xe3\xef\xd9\x30\xbf\xce\x23\xfd\xde\x9e\x79\xed\xd6\xf7\x1a\xde\x97\x21\x53\xe1\xe1\x88\xab\x0f\x1e\xef\x97\x43\x5e\x34\xee\xaf\xc0\x50\x8e\xff\xeb\x0a\xfa\x2b\xbe\x43\xf0\x5f\x5b\x00\x5d\xf3\x8a\x82\x47\x8d\xcd\xa7\x4c\x22\x00\x29\x1a\xac\xf4\xbe\x20\x3c\x8d\x52\x5b\x72\x81\x71\x85\x91\xed\xb4\xca\x99\x68\xb1\xb2\xdc\x48\x4b\x3c\xde\xcd\x4c\x8b\x55\xff\xeb\xec\xb4\xca\x22\xf0\x50\x9c\xb2\x0f\xed\xd9\x4d\xb5\x28\x2e\xff\x00\x5b\x62\xa3\xfc\xc4\x9f\x0a\xe1\x70\xe2\x4f\x17\x8f\xbd\x60\x71\x11\x37\x41\xb8\xac\x32\xe9\x98\xdf\xd5\x60\x19\x2d\x6d\xa0\xa6\xdb\x66\xf9\x26\xc3\x75\x8b\xd1\x32\xfd\x73\x99\x2e\xd3\x3f\xa7\x01\x33\x07\xdc\xc8\x01\x57\x42\xb4\x84\xea\x55\x8b\x4d\x34\xff\x52\xc6\x32\x9a\x03\x6e\x6a\x80\x1b\x4e\xc0\x0d\x2b\x60\x3b\xe4\x2c\x09\xa7\x63\xb8\x7a\xa9\xd0\x61\x79\xf3\x06\xfc\x26\xbe\xd2\xe7\x06\x79\x5e\x27\x8f\x80\x82\x0d\x8a\x98\x8a\x3f\xe8\x54\x54\xfe\x40\x6f\x48\xeb\x3f\xfd\x84\x00\x9b\x3f\xd0\x4b\x54\x5b\x59\x6b\x4b\x33\x54\x7d\x8d\xfe\x28\x08\x77\x21\xcd\x3d\xb5\x05\x9f\xf8\x53\xb0\x99\xdd\xcc\x2a\x15\x8e\x30\x74\xba\x83\x5e\xa2\x4a\x13\x2d\xa3\x3f\xaa\xac\xa7\xcd\xa1\xd5\xdb\xc9\x88\xcf\x60\x2a\x2e\x82\x80\xa7\xfb\x36\xa9\x91\x7d\x20\x28\xa1\x0d\x24\xa1\xd3\x31\x9c\x49\x20\xb6\x5e\x5e\xdc\x6e\x1c\x3c\x0a\xc7\x18\x55\xe4\x7e\xb2\x70\x01\xae\x58\x23\xd6\x61\x91\x9b\x59\xbc\xcf\x8c\xb3\xca\x50\xef\x61\x27\xaf\xf0\xe4\xbb\xdb\x59\x0a\x56\xbb\x10\xa3\xff\xae\x4d\x2d\xd9\x0e\x41\xed\x7a\xe4\xad\xa4\xbc\xb9\xa5\xa8\xb5\xe0\xe6\x20\xea\x09\x43\x79\xf1\x46\x18\xca\xcf\xe7\xfb\x46\x89\x04\x5f\xe2\x24\xc5\xfb\x52\xc1\xfc\x95\x2d\xae\xd9\x0f\xf9\x67\x27\x75\x17\x02\xb5\x6d\x01\xfc\x4f\xe7\x3f\x84\xfd\x90\x15\xca\x3a\x58\xc8\x69\xd4\x86\x4f\xf9\xc2\x66\xb6\xf9\x7f\x54\xcf\xd0\x06\xfa\xa3\x5c\xac\x4e\x0b\x4b\xd9\xbb\x88\xe2\x04\x7f\x33\xae\x22\x81\xdc\x8b\x02\xf0\x73\xce\xa7\x3b\x24\x6f\x0e\x86\xf3\x78\x86\xd4\x0e\x85\xf1\xc3\xc6\x06\x5a\xae\xcf\xe1\x49\x32\x85\xc9\xb5\xef\xc4\x88\xad\x22\x41\x22\xd2\x5e\xa6\xf8\x43\x1c\x4f\xf3\x25\xe1\xe9\x38\x78\xd2\x8c\x2a\x22\x87\x76\xe3\xe9\x4f\xbb\xe8\xc5\xe6\xdb\xde\xd6\xf6\xce\xbb\xdd\xbd\xff\x7a\xff\x61\xff\xe3\xc1\xe1\xff\x3e\x3a\x3e\xf9\xf4\xcb\xaf\xbf\xfd\xfb\xff\xf8\xfd\x41\x80\x87\x17\xa3\xf0\x8f\xcf\xe3\x49\x14\x4f\xff\x3b\x49\xb3\xd9\xe5\xd5\xf5\xcd\x97\x5a\xbd\xd1\x6c\xb5\x3b\x6b\xeb\xaf\x96\x56\x37\x58\x84\x5b\x71\xb4\x13\x8b\x76\x61\x54\xf3\x21\x76\x78\xa5\xe4\x96\x1b\x8a\x85\xa9\x4d\x14\xd2\xda\xb1\xb9\xa9\x90\x99\x0e\x1d\xfb\x0d\x73\xec\x4a\x89\x90\x24\x2d\x8f\x9c\x9a\x64\x07\x16\xb4\x8c\xea\xd5\x33\xf0\x5e\xc9\x05\xa6\x86\x49\x5c\x1c\x68\xa3\x0c\xd0\xea\x19\xdf\xe0\x65\x31\xcc\x02\x95\x0a\x44\x91\x12\xb9\xe7\x2b\x11\x66\x00\xfd\xaf\xb4\x45\xd9\xb7\x26\x2a\x0e\xde\x83\xd8\x10\x2f\x2d\x29\x1f\x04\xd9\x8a\x1f\x8c\x22\x8d\xd8\x92\xd6\xb0\x08\xb7\x79\xee\x1e\xfd\x90\x2f\xed\x11\xaf\x9d\x99\x7d\xda\x4f\x47\xff\xa7\xa3\xbf\x38\xfa\x7f\x3a\xd9\x59\xae\x77\xd0\xdb\xed\xd2\x0e\x5a\xf5\xce\xdb\x6d\xd9\x47\xab\xde\x51\x9f\xe0\xeb\xdd\x9d\xb6\x28\x32\x7f\xad\xe3\x56\x49\x1c\x1e\xd0\x79\xab\xde\x71\x7a\x6f\xd5\x3b\xff\x00\x8d\x40\xf9\xc3\x3a\x0c\xc6\x7d\xce\xea\x76\x7f\x7f\xb0\x8c\x8a\x03\x7c\x18\x87\x51\xe6\x72\x32\xae\x77\x1c\x4e\xc6\xd6\xc3\x74\x8e\xa9\xdb\xcb\x58\x34\x59\xd6\xd5\x58\x02\x7a\x8f\x13\x94\x4e\xc4\xf7\x72\x56\x03\xda\x5c\x74\x6d\x7c\xd7\xc7\x28\xba\xaa\x84\xcb\x1a\x5f\x7c\x0b\xf9\xac\x41\xa5\xc5\x7c\x8d\x79\x2d\x21\xdf\xf2\x17\x8f\xed\x69\xac\x36\x5c\xce\xd1\xb8\x0e\xb2\x8f\xc0\x50\x75\x33\x26\x22\x50\xbe\x58\x1a\x64\xb1\x68\x41\xd8\xdc\x14\xee\x92\x72\xb4\xd1\x79\x59\x3e\x14\x06\x23\xcb\x0f\x25\xf6\x30\x69\x9f\xfa\x70\xef\x7d\xea\xc3\x77\xb0\x4f\x95\xc1\xe1\xa1\xf7\x29\xeb\x72\xfa\xb0\xfd\xb4\x4d\x89\xbf\x07\xdb\xa6\xd2\x2b\x7f\xba\x1d\x05\xa1\x1f\x55\x16\xdd\xb1\x6c\x47\xf2\xef\x7f\xcb\xfa\xf0\x38\x5b\x56\x99\x65\xf2\xfd\x6f\x59\x1f\xb6\xb5\x4d\xeb\x69\xc7\x32\x76\x2c\x69\xc5\x2c\xb4\x79\x7d\xd3\xdd\x4b\xcc\x8b\x84\x2d\x01\xa4\xf4\x91\x47\xc3\x87\x2f\xec\xee\x84\x2e\xee\x5a\x8d\xfc\x3f\x5c\xac\xd0\x8f\xa4\xfb\xec\x2b\xfd\x96\x2f\xff\x79\xea\x02\x20\x2c\xb7\xb6\xa0\x73\x2f\x6d\x01\xcb\x51\xfb\x2d\x95\x06\x1e\x92\x5e\xa5\x23\xbf\xae\xbd\x1a\x4d\xfc\xc1\x23\xaa\x16\x3c\xc4\x9b\x85\x5f\xd0\xda\x3f\x41\xdd\x60\xe4\x8b\xbd\x83\x2a\x42\x31\x62\x91\xbe\xec\x6f\xb5\xa1\x26\x98\xdc\xec\x6f\xb5\x6d\x32\x1e\x98\x38\x7f\xc6\x37\x34\x0b\x36\xb5\x83\x15\x7d\x05\xe7\x5f\x3f\xca\x78\x12\xef\x38\x99\x50\x1b\xed\xed\x5f\x0e\xcf\x61\xd3\x3d\x89\xdf\xe3\x5c\x18\x44\x57\x57\x57\x2b\xf1\x14\x47\x69\x3a\x5e\x89\x93\x8b\xd5\x20\x1e\xa4\xab\x90\x84\x3b\x5e\xd5\xea\x8c\xb2\xc9\xd8\xa2\x08\xd9\xbe\x9c\xbe\xdf\xda\xc9\xd1\x16\xcf\x25\x83\x21\xcc\xf7\x01\xd1\xf6\x38\xc3\xfb\x85\xa5\x3c\x87\x3d\x8a\x0c\x4c\x4a\x1e\xc2\x88\xbb\xbd\x48\xe1\x9e\x73\x57\x97\x16\xaa\xd4\x1b\xeb\x8a\xa7\x8b\x01\xdf\x61\xa4\x26\x87\xc5\xd0\x13\xa4\xec\x6f\xb5\xe7\x61\x1b\x66\xcc\x16\x59\x0f\x52\x2d\x7d\xc8\x62\x34\xa5\x56\xa7\xb2\x77\x8e\x63\x87\x33\xfc\x62\xb4\xdd\x81\x0d\x4f\x17\xd5\x1b\xeb\x60\x42\xaa\x7c\xa5\x9d\x03\xcc\xb5\x2f\x39\x3e\x4a\xdb\xb7\x77\x76\xbb\x71\x10\xed\x63\xfb\xe1\x60\xa9\xd1\x07\x30\xb3\xfe\x1c\x0c\x0d\xef\x1b\x4a\xf3\x73\x52\x34\xcd\xaf\xf8\x67\x3e\x57\xeb\x5a\x3e\xbf\xbb\x82\xf1\xd4\x69\xac\xd5\x6a\x3a\xe0\x05\xbd\x83\xe6\xfa\xfd\x94\x93\x77\xb7\x20\x85\x3f\xa1\x11\x42\x15\x90\x08\xdb\x87\x0c\xac\x64\xd1\xde\xc5\x4a\x9f\xd7\xa5\xb1\x00\x6c\x80\x0a\x2a\xa7\xfe\x38\x43\x9b\xf0\x9f\xc5\xc5\x62\xa0\x2e\x4a\xde\x0f\x41\x5e\x98\x6c\x1e\x9f\x83\xe1\x0a\x75\x8b\xc0\x15\xde\x19\x0f\xf0\x2b\xc8\x5b\x03\xc5\x95\xfc\x8e\x6a\xcd\x85\x04\x5e\x75\x8a\x2d\xe2\x2d\x59\xe9\x8c\x7b\x98\xb5\x85\x97\x1a\x21\x0f\x66\xa2\x9c\xaf\x0e\x2b\x2c\x97\x5b\x18\x84\x16\xa0\x43\xfc\x1e\xc6\xc6\x96\x12\x6d\x91\x33\x72\x0e\x4c\xf8\x04\x8b\x37\xce\xe3\x32\xdf\x63\x68\x8f\xd8\x93\xa5\x9c\xc4\xc4\x69\xd1\xfc\x85\x05\xcb\x77\x6c\x63\x22\xe0\xd5\x8f\xcc\x98\x45\xc3\x95\x1b\xb4\xbc\xe1\xf8\x58\x8f\x02\x44\x8c\x03\xcf\x01\xe7\x05\xb3\xea\xb2\x44\xcb\xce\xbf\x56\x46\x72\x30\x86\xdc\x09\x84\x41\xe1\xc4\x26\x19\x05\x1b\xf4\xaa\x36\x2f\xfc\xe9\xcc\x12\x84\x26\xc4\xc0\x99\x9f\x95\x83\x52\x9d\x1e\x94\xa4\x81\x2e\x4c\xfb\xa3\x61\x2f\x90\x75\x8e\x82\x0d\x63\xcb\x50\x99\xef\x24\xb2\x62\x31\x63\xac\x6d\x68\xa3\x2c\xd5\x92\x74\x34\x9c\xfe\x2c\xd1\x2e\x44\x80\x39\x5e\xaf\xac\xcd\x75\x29\x1e\x2c\xfb\x1d\xdf\x89\xf7\x2e\xc8\x77\x1f\xd0\xfb\xd6\xe2\x57\x26\xf5\xa6\x3c\x37\x97\x2a\x29\xda\x0d\xe9\xbd\xca\xdd\xf3\x0f\x48\xe1\xea\x62\xd3\xa6\xfb\xb5\x8b\xb3\x2f\x56\xcd\x43\x0e\xb1\xe1\x3e\x60\x0a\xc5\x06\xa1\x42\xce\x65\x7d\xd7\x9e\x63\xba\xb0\xb0\x61\x57\x25\x16\x70\x5c\x29\xde\xef\x6e\x5f\x17\x1c\xdf\x29\x34\xfb\xd9\xdd\xe3\x87\xcf\x6e\x7b\xdd\xe3\x47\xd2\xee\xda\x1a\x39\xd3\xaf\xfd\xad\xcf\xf4\x83\x70\x3a\xc2\xc9\xf2\x23\x9b\x08\xc0\xe9\x5d\x6e\xea\xaf\x39\xc4\x9b\x99\x3b\x1f\xe4\x34\xdf\x83\x8e\x1d\x12\x8e\x93\x8a\x43\xbb\xfc\xd2\x6d\x42\x20\xde\x6b\x99\x30\x94\x1a\xe4\x0c\xe7\x67\x50\x89\xfe\xe4\x8c\x98\x55\xdc\x81\x97\x19\x8b\xaa\x40\x8b\x2c\x90\x4e\x83\x9c\x6e\xe8\xdc\x64\xf8\x3a\x23\xa7\x48\x9f\x3d\xa3\x29\xed\x13\xf3\xcd\xe2\xa9\x36\xfc\x00\x0f\xc2\x89\x3f\x1e\xdf\xb0\x34\xa0\x41\xe9\x9b\x1b\x79\x54\x6e\x59\x2b\x6c\xe0\x4e\x04\x1a\x6a\xb3\x8b\x27\xe3\xb8\x0b\x7e\x8f\x9a\x9e\x23\x9f\x12\xe9\x56\x47\xee\xfc\x62\x17\x3b\x4a\x4d\x87\xa3\x96\x5c\x66\x25\x9f\xdd\x3c\x81\xc4\x2e\xbe\xbe\x63\x26\x08\xcb\xf0\x4a\xe4\x23\xdf\x37\x2c\x38\x9d\xda\xcd\x43\x18\x4d\x67\xd9\x7d\xe6\x94\x93\x87\x4a\x74\x77\xa0\xb3\x87\x22\x8e\x81\xc6\x28\x2c\xf4\x71\xe7\xa4\x12\x30\x5a\xf6\x10\x36\xf9\xe4\x6c\xa0\xbc\x0d\x5a\xe1\xb5\x95\x7a\x7a\x0a\xf5\x70\x8d\x40\x0e\xa8\x2b\x03\xbd\xb5\xeb\xe6\xdd\x3b\x6d\xde\x5d\x6d\xb7\x95\x36\x88\x6e\xbb\xe1\x69\xca\xf3\xf5\x27\x53\xbb\x7f\xba\xee\xdb\xb5\x3b\x1a\x91\xcc\x8b\x34\xe1\xe6\x21\x05\x1c\x80\x85\xc6\xd5\x9a\x88\x8a\x94\xd8\x90\x1d\x55\x1f\x26\x21\x3d\xb8\xbc\xce\xe5\x78\xa5\x95\xc4\x25\x55\x51\x44\x56\x07\xe7\x65\x3c\x48\x70\xf6\x40\x4a\x25\x22\xff\xee\xda\x03\x07\x41\x2f\x19\x9b\xb0\x79\x22\x53\x47\xdf\xb2\x1a\x43\xd9\x39\xd8\x11\x20\xd8\xaa\x33\x12\xfa\x22\xea\xa3\x20\x1e\x75\x0f\xf7\x02\x6f\xb7\x87\x8c\x2f\x0b\x07\xa6\x39\xe1\x65\xe9\xa1\x4a\x8a\x2e\xab\x8f\x93\xdd\x10\xbf\x40\x31\x45\x3b\xfa\x56\x8a\x8b\xc9\xba\x5e\x14\x19\x53\xab\xc4\xf5\x05\x3a\x2c\x7b\x94\xcc\xcd\xf1\x38\xbe\x42\x7e\xd2\x0f\xb3\xc4\x4f\x6e\x10\x53\x2f\x7d\xc6\x37\x96\xb8\x83\x9f\x65\x8d\xc4\xcf\xd6\x86\x0b\x06\x4a\x57\xb7\x94\x1b\xad\x39\xce\x90\x04\xa5\x02\x37\x48\x88\xff\x06\xba\x8d\x38\x41\x61\x14\xe1\x04\xa2\xcf\xc6\xb3\x0c\x04\x08\x3d\x0a\x1f\xc4\x4c\xa4\x3a\x46\x4a\x86\xec\x81\xb6\x62\x04\xa4\xe3\x1a\x3f\xb9\x46\x68\xa9\xb1\x08\x09\xc4\x92\x56\x32\x2e\xd2\x47\x86\x52\xc1\x50\x2a\x68\x34\xf6\xdb\xc1\x11\xcc\x27\xbd\x06\x9c\xfa\x01\x1a\xc4\x51\x9a\xf9\x91\xde\xbc\x35\x89\x94\x3a\xc7\x6e\xc5\x9a\xc0\xfb\x34\x3c\x43\xbf\x6f\xa0\xda\x75\x7b\x40\xff\x67\x73\x87\x31\x0a\x37\x3b\xf4\x7f\xc5\x9a\xb1\x58\xd3\x89\x85\xda\xb3\x8d\x22\xff\x82\x38\x64\xb0\x03\x3d\x46\x14\x32\xc1\xc4\x1f\x24\x12\x59\x41\xbe\x32\x1b\x33\xb6\x0c\x24\x74\xda\xc6\xc7\x1d\x7a\x52\x55\x5f\x9c\x2f\x98\xbb\x45\x20\x83\x61\xfe\x6e\xe2\x8f\xed\x6f\xf6\x58\xf4\x31\xc0\x2b\x84\x25\x56\x18\x09\x65\xc1\x29\x2f\x13\x88\xcc\x28\xfd\xf0\xc1\xc8\x64\x92\xe0\xad\xcc\x0d\x3e\xf6\x58\xd1\xc3\x60\xa8\xff\xa7\x47\x0f\x9b\x23\xa6\x2e\x22\x22\x12\x1e\x9a\xd3\xd0\xdc\x08\x62\xee\x1a\x73\xa3\x88\xb9\xab\x3e\x52\x24\xb1\xfb\x73\xbb\x1e\x55\x4f\xc3\x78\x5b\xf6\x63\x22\x5d\xec\xda\x83\xa3\x15\x06\x1c\x2b\xe4\x98\xf2\x58\x69\x40\x73\x09\x85\x4b\x1a\xfc\x92\x49\xa0\x52\x75\x86\x1c\x9b\xf8\x03\xfb\x25\x91\x38\xf8\x3b\x8c\xe0\x5e\xfd\xad\x15\xe6\xd7\x9d\xd6\xb2\xe5\xf5\x38\xec\x2f\x13\x54\x02\xb0\x6d\x4d\xb5\xaf\x38\x1a\x2c\x83\x4d\xa3\xe5\x3d\x75\xb3\xd4\x3e\x4c\x82\xf6\x7c\xe3\xbb\x74\xe4\x37\xda\x3a\x48\xf2\xb2\xa1\x83\x4b\x47\x7e\xbb\xde\x30\x5f\x36\xd7\x2d\x25\x9b\xda\xab\x24\x9c\xe2\x49\x50\xef\xd4\xac\xb6\x7f\xca\xab\x69\xff\x73\x30\xd4\xdb\xc1\x97\xd3\xcf\xc1\xb0\xe8\xde\x41\xed\x7a\x1c\xe0\xe5\xc1\xb0\x6f\x7d\x9d\x25\x8e\xd7\xcb\x17\x63\x3f\x98\xf8\x91\xed\x73\x6c\x07\x86\x07\xfa\xeb\xa9\x1f\x2c\xfb\x51\x1a\x5e\xbf\x6a\xe8\x83\x40\x3e\x85\x69\x5c\xaf\xd5\x1b\xfa\x88\xb3\x4f\xaf\xd6\x5e\xad\xe9\x33\x44\x3e\x7d\xc1\x49\xcc\x5c\xaf\x2d\x5f\x23\xc7\x37\xaa\x23\x5b\x1e\xe1\x6b\xed\x83\x8f\x75\xe2\xa2\x71\x37\x02\xe3\x7d\x32\xd0\x27\x37\xf1\xfb\xfd\x30\xb3\xbe\x5c\x1e\xe3\x0b\x7f\x70\xf3\xd8\x77\x40\x62\xf5\xc0\x93\xbe\x68\xe0\x65\xbe\x56\xc4\x23\x5b\x22\xf0\x4c\x56\x86\x66\x16\xca\xd6\x81\xf8\xdd\x68\x89\xdf\x84\xea\xf9\x6f\x42\xec\xe2\x37\xfd\x95\x93\x76\x6e\x5f\x0a\xbf\x18\x21\x53\x0c\x28\xfd\x1a\x77\x58\x14\x1d\x4e\xad\xd2\x53\x96\xa8\x4f\x82\x36\xf3\xb7\xb1\x52\x83\x50\x22\x6d\x56\x26\x40\xf1\x46\xd0\x9d\xfc\x86\x92\x9b\x78\x23\x53\x99\x78\x19\xa9\xaf\x24\x9a\x82\x67\x42\x4a\xf0\x23\xa7\x20\x3a\x2a\x03\x36\x50\x8c\x5e\xa4\xdf\x9c\x4c\x16\x55\x44\x2a\x0a\x48\x99\xd7\x2e\xae\x98\x74\x87\x62\x63\x5d\xea\xb6\xeb\x5e\xb1\x36\xd9\x53\xe9\xaa\xdb\x6e\x79\x0a\xe1\x75\xdb\x6d\x2f\x9f\xf8\x6e\xbb\xe3\xa9\xa3\xd7\x6d\xaf\xe9\x37\xc2\x3a\x29\x77\x3b\x35\x8f\x51\x6b\xb7\x03\xf8\x08\x4a\xe9\x76\x1a\x9e\x4c\x2b\xdd\x4e\xcb\xb3\x51\x4b\xb7\xd3\xf4\x64\x0a\xe9\x76\xda\x9e\x4c\x3f\xdd\x0e\xe0\xa5\xd0\x4c\xb7\xb3\xe6\xe9\x54\xd3\xed\xac\x7b\x3a\xdd\x74\x3b\xaf\x3c\x83\x48\xba\x6b\x35\xcf\x42\x4e\xdd\x35\xc0\x9f\x2d\x89\xee\x1a\x60\xcf\x48\xa3\xbb\xd6\xf2\x0c\xe2\xe8\xae\x01\xe2\x84\x8c\xba\x6b\x80\x73\xbe\xce\xba\x6b\x1d\xf9\x02\xdd\xcb\x97\x6c\x77\x8d\x5f\xad\x93\xc5\xdc\x5d\x7b\xe5\xf1\xa5\xda\x5d\xaf\x79\xf9\x12\xee\xae\xd7\xbd\x7c\x71\x77\xd7\x01\x9d\x9c\x82\xbb\xeb\xd0\xb8\x60\x34\xdd\xf5\xd6\xed\x99\xd7\xa9\x3d\x5d\x1e\xfc\xf5\x97\x07\xbd\x11\x1e\x7c\x26\x9d\x82\x95\x42\xdd\x80\x68\x9a\xb3\x74\x36\x25\x03\x83\x59\x7c\x6a\xa9\xdf\x20\xc7\xd3\x90\xe6\xe8\x87\x0d\xf4\x82\x43\x7e\x61\xb1\x08\x11\x4e\x1a\x0f\x78\x5d\x51\x68\x8e\x2f\xda\x39\xc2\x43\x9c\x60\x38\xe8\x25\xe1\x05\x9c\xc9\xc2\x28\xcc\x72\x30\xe9\x6c\x8a\x13\x50\x5d\x6f\x68\xe9\x39\x24\x28\x9b\xb3\x8b\x09\x8e\x32\xad\x00\xca\x62\x34\xf2\xa3\x60\x8c\x95\x71\x93\x61\xf7\xad\x90\x15\x9b\x1a\xa8\x6a\xba\x03\x4a\xba\x6f\x1a\x4b\x9e\x9a\x40\x85\x51\xb6\x2e\x69\xe8\x87\x72\x7d\xa1\x98\x50\x67\xc7\x3c\xe6\xe7\x35\xa8\x12\xfe\x13\x81\x0a\x2f\x64\x6c\x94\x43\x84\x15\xb1\x98\xa6\xff\x02\x48\x97\x21\xbe\x72\xa1\xe8\x6c\x5e\x42\x78\x8f\xa3\x80\xbe\x7e\x55\xcb\x73\x82\x03\x2c\x41\x67\xcc\xab\xff\x40\xd6\x9c\xb0\x1d\x81\x45\x67\x07\x6e\x54\xad\x1a\xad\x38\xb1\xaa\x77\xec\x68\xb9\x5b\x5a\xac\xc6\x5e\x94\x35\x1b\x8b\x36\xb1\x58\x8d\x9d\x71\xec\xdf\xa5\x4a\xa7\x05\xef\xf3\xf2\x77\x24\xa5\x15\x4a\xc1\x1e\x92\x5f\xdd\x64\xf8\x00\x92\x03\x19\xaf\x6d\x79\x97\x15\xfa\xdb\xa5\x8b\x2e\x6f\xab\xcc\x8a\xc8\x4b\x2f\xa6\x42\xc8\xa1\xbd\x15\xb8\xa1\x0d\x3b\xce\x16\xcd\xc2\xf6\x35\xcb\xbe\x7a\x93\xd9\x8c\x9f\x17\x72\x17\xb4\xa1\xb2\x48\x3e\xed\xbc\xfe\x69\x78\x76\xa7\xe4\xd9\xb9\x39\x77\xf8\x05\x53\x55\x6d\xee\x38\xaa\x16\x15\x8c\x35\x4f\x6d\xe1\x21\xe6\x46\x68\xeb\x88\x32\xdf\xd6\xac\x67\x64\x34\xc9\x6b\x02\x0f\x45\x44\xea\x93\x99\xb9\xd9\xae\x3f\x9d\x8e\x6f\x58\xc3\x7e\x72\x31\x23\x2c\x3c\x2d\xf2\x57\x64\xfc\x7a\x65\x9a\xc4\x59\x4c\x70\x94\x39\x77\x91\xe1\x84\xbe\xfb\xd8\x15\x2c\x9d\xfa\x93\xac\xf3\xd7\xc8\x3a\x10\x30\xfa\x2f\x88\x4b\x64\xcd\xa9\x54\xc2\x44\x02\xb6\x58\x7a\x8f\x87\xb2\x5c\xb7\x4e\xaa\x9c\x30\x66\x21\x95\xa4\xaa\x4b\xed\xe6\xcf\x26\xe9\xb9\xf8\x4a\xa7\x65\xe7\x22\x27\x84\x4d\x6c\xd0\xe1\x5b\xf1\xfb\x29\xfd\x91\x86\x11\x0b\xc6\x4a\x58\x46\xed\xba\x5e\x63\x7f\x55\xf4\x55\x4d\xe3\xcb\x96\x57\xa5\x6a\xb5\x50\xdf\xdf\x6a\x6b\xd6\x14\x36\x03\x10\xdd\x6b\x12\x6d\xb0\x51\xb5\x18\x80\xf0\xb4\x37\x85\xb7\x63\xb9\x26\xd8\x9e\xab\xf8\xd4\xe4\xa4\xb5\xeb\xce\x5a\xab\xdd\x68\xd6\xea\x1e\xaa\x5d\xe3\xe1\x20\xf0\xfb\xeb\xaf\x2c\x79\x15\x6b\xd7\xaf\xd6\xfb\x7e\x30\x18\x62\x0f\x06\xa6\xd9\x68\xb7\xd6\x3a\x6a\xb9\x33\xe7\x8d\x98\x96\x46\x4f\xee\xc5\xbe\xc8\xa4\x67\xdb\xbb\xae\xfc\x29\xc2\xe0\x5e\x3d\x7f\x0f\xa9\x77\xdc\x3b\x86\xfb\xfa\x9a\xcf\x06\x45\xe2\x9c\xc0\xe3\xe9\x05\x51\xe8\x88\xc0\xbb\x7f\x2e\x95\xde\x3f\xe5\x0f\x67\x36\x97\x10\xe9\x33\x21\x38\xb3\x00\xf9\xab\x54\x2a\x12\x4c\xea\x29\x8e\xbe\x22\xf9\x25\xec\x75\xad\xaa\xe6\x23\x8e\xbe\x96\x04\xd8\x68\x55\x2d\x00\x21\x94\xb1\xe2\x92\x6e\x82\xbb\x9f\x71\xc8\xae\x72\x43\x61\xbf\xee\x57\x86\xb4\x86\xa4\x31\x45\x4b\xa8\xa6\x8b\x0f\x4a\xe9\xba\x56\xba\x5e\x58\xba\xa1\x95\x6e\x14\x96\x6e\x6a\xa5\x9b\x85\xa5\x5b\x5a\xe9\x56\x61\xe9\xb6\x56\xba\x5d\x58\xba\xa3\x95\xee\x14\x96\x5e\xd3\x4a\xaf\x15\x96\x5e\xd7\x4a\xaf\x17\x96\x7e\xa5\x95\x7e\x55\x3c\x3b\x35\x6d\x76\xe6\x4c\x66\x5d\x2b\x5e\x3c\x9b\xf5\x86\x56\xbc\x78\x3a\xeb\x4d\xad\x78\xf1\x7c\xd6\x5b\x5a\xf1\xe2\x09\xad\xb7\xb5\xe2\x6d\x83\x1b\xac\xae\x12\x86\xfc\x39\x8c\x2e\x48\xd5\xd0\x1f\xf7\x6d\x62\xb3\x4f\xb6\x81\x53\xeb\x40\xf5\xe1\x93\x75\x50\x06\xf0\xc9\x3a\x00\x01\x7c\x6a\xda\xd0\xe9\xe5\x77\xd0\xea\x37\x82\xc4\xce\x4e\xc5\xf7\x50\xdf\x43\x03\x0f\x05\x9e\xb4\x40\x3d\x84\xd6\x3c\xb2\x85\xd6\xce\x74\xde\x10\xd0\x7a\x81\x87\x44\xd5\x7c\x84\x3c\x84\xea\x0d\x0f\x9d\x9c\xd6\x8d\x7a\x03\x5a\x8f\xb6\x44\xab\xe6\x8b\x96\xd4\x5b\x23\xf5\x1a\x46\xbd\x3e\xad\x27\x90\xf4\xa5\x7a\x4d\x0f\xa1\x06\xb4\xd7\x34\xea\x15\xf5\xaf\x25\xfa\xd7\x5a\xa8\x7f\x6d\xd1\xbf\xf6\x42\xfd\xeb\x88\xfe\x75\x16\xea\xdf\x9a\xe8\xdf\xda\x42\xfd\x5b\x17\xfd\x5b\x5f\xa8\x7f\xaf\x44\xff\x5e\x2d\xd4\xbf\x7a\xcd\x63\xfd\xab\x9b\x04\x53\xd4\xc1\x7a\xdd\x63\x1d\xac\x9b\x14\x53\xd4\x43\x82\x25\xed\x61\xdd\x24\x99\x42\x12\x6d\x7a\x9c\x44\x4d\x9a\x29\xec\x63\x4b\xf4\xd1\x24\x9a\xc2\x3e\xb6\x45\x1f\x81\x6a\xcc\x4e\xbe\x7b\xe7\xe8\xa4\x87\x50\x9b\x76\xd2\xa4\x9b\x80\x56\xb4\x76\x92\xd0\xdb\x2b\x5a\xd1\x24\x9c\x01\xad\x68\xef\x64\xdd\x43\xa4\xa3\x27\xa7\x75\x93\x72\xfa\xb4\xa2\xb5\x93\x84\x63\x34\x6a\x50\xd1\x24\x9d\xa2\x3e\xb6\x45\x1f\x1b\x76\x5e\xe3\xea\x23\xa1\x39\xda\xc7\x86\x9d\xd9\x38\xfb\xd8\xe6\x7d\x6c\xd8\xb9\x8d\xab\x8f\x2d\xd1\xc7\x86\x9d\xdd\xb8\xfa\xf8\x2a\xef\xa3\x9d\xdf\x38\xfb\xd8\x12\x7d\xb4\x33\x1c\x57\x1f\x09\x63\x64\x7d\xb4\x73\x1c\x57\x1f\xd7\xf3\x3e\xda\x59\x8e\x93\x56\x9b\x1e\xef\xa3\x9d\xe7\xb8\xfa\xd8\x10\xb4\xda\xb0\x33\x1d\x57\x1f\xd7\x44\x1f\x9b\x76\xa6\xe3\xea\x23\x59\xfe\xb4\x8f\xcd\xba\x7d\x41\xee\xee\xba\x89\xb5\x05\xb8\x36\xed\x5c\x67\x77\xd7\xde\x49\x32\xac\x64\x6d\x9d\x9c\x36\xed\x5c\x67\x77\xb7\x60\x41\x76\xa0\xa2\x9d\xeb\xec\xee\x3a\x3a\xd9\xf2\x50\xa3\x09\x15\x4d\xd2\x29\xea\x63\x3d\xef\xa3\x9d\xe9\xb8\xfa\xd8\xca\xfb\x68\x67\x3a\xae\x3e\xc2\x44\xd2\x3e\xda\x99\x8e\xb3\x8f\x35\xd1\x47\x3b\xd3\x71\xf6\xb1\xe9\xb1\x3e\xb6\xec\x4c\xc7\xd5\xc7\x9a\xe8\x63\xcb\xce\x74\x5c\x7d\x6c\x8a\x3e\xb6\xec\x4c\xc7\xd5\x47\xc2\xca\x69\x1f\x5b\x76\xa6\xe3\xea\xe3\x2b\x31\x8f\x2d\x3b\xd3\x71\xf5\x91\x2c\x0f\xd6\x47\x3b\xd3\x71\xd2\x6a\x9b\xd3\x6a\xcb\xce\x74\x5c\x7d\x6c\xe4\x7d\x5c\xb3\x2f\xc8\xbd\x3d\xb7\xa0\xda\xa1\x9d\xb4\x73\x9d\xbd\x3d\x7b\x27\x81\xe6\x80\x07\xb4\xec\x5c\x67\x6f\xaf\x40\x0c\x68\x83\x08\x68\xe7\x3a\x7b\x7b\xf6\x4e\x12\xde\xd1\x80\x61\x6d\xdb\x45\x1d\x57\x1f\xc9\x7c\xd0\x3e\xb6\xed\x4c\xc7\xd5\xc7\xa6\xe8\x63\xdb\xce\x74\x9c\x7d\xac\x89\x3e\xda\x99\x8e\xab\x8f\xf5\xbc\x8f\x76\xa6\xe3\xea\xe3\xba\x98\xc7\xb6\x9d\xe9\xb8\xfa\x08\x34\x47\xfb\x68\x67\x3a\xae\x3e\x82\x48\x4e\xfb\x68\x67\x3a\xce\x3e\x36\x3d\xde\x47\x3b\xd3\x71\xf5\xb1\x25\xfa\xd8\xb1\x33\x1d\x67\x1f\xeb\xbc\x8f\x1d\x3b\xd3\x71\xf5\xb1\x21\xfa\xd8\xb1\x33\x1d\x57\x1f\x5f\x89\x79\xec\x34\xcd\x05\x09\xd7\x28\x19\x4e\x26\x38\x08\xfd\x8c\x39\x95\x81\xbb\x82\x5a\x8e\x1c\x71\xd1\x06\xaa\xc0\x7f\x97\x90\xaf\x6b\x58\x69\x99\x3a\x2b\x53\x27\x65\xfa\xf6\x32\x0d\x56\xa6\x41\xca\x0c\xec\x65\x9a\xac\x4c\x93\x94\x09\x0c\x6d\xae\xa6\xaa\xdc\xb1\x58\xea\x2e\x18\xd0\x16\x32\xa5\x8b\x6c\xba\x7e\xe6\xdb\x0e\xe6\x7e\xe6\x8b\x50\x3e\x7e\xe6\xbb\x95\x63\xd1\xdb\x30\x4b\x4f\xe2\xcc\x1f\x0b\x98\xd1\x96\x9f\xf9\xd4\x83\xe4\x25\x5a\xb7\x40\x87\x3a\x1f\xf0\x30\xe3\xd0\x85\xc7\x09\x94\x37\x3a\xe3\x4c\x79\x25\xd0\x3c\xcd\x41\xfe\xfc\xf3\xcf\xa8\x0d\x17\x6f\xb5\xeb\xf5\x5a\x7e\xdf\x96\x97\xf8\x17\x6a\x36\x0c\xe2\x50\xfb\xb2\x8b\x36\x10\xa8\xdd\x87\xe3\x38\x4e\x2a\x52\x27\x57\x15\xdd\xbb\xab\x73\x50\xf6\x03\xda\x90\x9e\xf4\x85\x23\x50\xaf\x54\x2a\x39\x6e\x4b\xa8\xd3\xa2\xf9\xd2\x5e\x41\x30\xd1\x56\x95\x2a\x6c\xec\xfa\x59\x5e\x95\xe1\x9c\x2b\x67\xe5\xb7\xe5\xb5\xb3\x26\x38\xa6\x9a\xd5\xc1\xcd\xd3\xcd\x1a\x5c\x62\x91\xce\xb6\xca\x74\xf6\x83\xb5\xb3\x1f\xee\xda\xd9\x0f\xd6\xce\x7e\x28\xdb\x59\xb3\xb7\xb2\x13\x55\x45\x74\x9f\x07\x9b\x82\x9c\x7a\x76\xff\x41\x30\x78\xa7\x6e\x0c\xe0\xa3\x68\xf3\xa4\x2a\xcc\x2b\x3f\xc7\x1b\x52\xd1\x79\x5b\xc8\x77\x97\x19\xc6\x3b\xbd\xdf\x16\xba\xf7\x70\x5c\x71\xa1\xa2\xeb\x7f\x81\x09\x5c\x61\xec\x9e\xda\xef\x2e\x76\xd9\x2d\x59\xa5\xb2\xab\x5c\x4b\xec\x2e\x7c\x1f\x41\x69\x61\x57\xb9\x8b\xd8\x75\x5e\x42\xcc\xbf\x71\x38\x62\xb9\x81\x61\x0e\x59\x04\x9e\x00\xc6\x54\x2d\x5a\x22\x59\x39\xb8\x21\x14\xb2\x7a\x50\xb0\x82\x53\xa6\xb8\xa1\x83\xc7\xfc\xfa\xdf\xd8\x78\xe1\xf3\xb9\x41\x0b\x2e\xef\x4a\x1e\x41\x83\x7c\xb5\x7b\x38\xd0\x5f\x02\x49\x4d\xf5\x75\xed\xa1\xd4\x43\xea\x15\x1a\xf0\x49\xb4\x81\x7c\xb4\x84\x2a\x95\x3e\xfa\x89\x6e\x8e\x95\xff\x4b\x7e\x06\x55\xc2\x06\xae\xd1\x12\xca\xa4\xf6\x44\xc0\xe2\x88\x4c\x53\x4a\x57\x2a\x8d\x53\xde\x6c\xa0\x65\x94\x56\xa1\x5a\x5f\x33\x7a\x13\x58\x69\xe7\xff\x72\x58\xc1\x76\x5c\x19\xa0\x9f\xd0\xff\x7d\x1c\xac\xb4\x43\xd0\x5c\xac\xfa\xe8\x77\x34\x40\xbf\x13\xc4\x1e\x1e\x19\x4d\x00\x9c\x8b\x0c\x41\xa4\xd2\x47\x5f\x1f\x78\x70\xe4\xdb\xea\x63\x57\x9a\xf4\xb9\x89\xf7\xcb\x04\x59\xe3\x7e\x62\x9a\x8b\x22\xac\x06\x13\x8c\xc3\x59\xcc\x51\xfa\xae\x61\xcd\xd8\xba\x14\x46\x2e\xfb\x5b\x6d\x8b\xef\x57\x71\x79\xd3\xe1\x2b\x8f\x2f\xa6\x5c\xe6\xab\x19\xf9\xf7\xb7\xda\x56\x93\x01\xe7\x24\xcc\xc9\x55\xff\x50\x53\x70\xa7\xd0\x0e\xf3\x27\x4e\xf6\xf2\x7b\x88\x89\xa3\x4e\x65\x62\x22\x76\x27\xfe\x80\x4c\x86\x92\x19\xde\x9c\x0f\x56\xcc\x9c\x93\x3c\x9b\x3d\x9d\x97\xc2\x0c\xec\x2c\xb2\xb5\xc3\x02\xaa\xf1\xb7\x76\x31\xfb\xe7\xc7\x64\xa3\x8b\xed\x25\x8b\x33\x84\x76\x30\x0e\xfa\xfe\xe0\x33\x8b\xab\x39\x89\x03\x58\x52\x84\x66\xc4\x7c\xc3\xcb\xde\xce\x5b\x22\x02\x59\xc4\x03\x30\x73\x82\xaf\x8a\xb5\x1c\x58\xb8\xd0\x56\xf6\x09\x00\x66\xcc\x23\x56\x7d\x6f\xe7\xed\xca\x76\x44\x63\x95\x83\x01\xd5\xce\x5b\x8b\xc1\xcf\xd4\x61\x2e\xc3\xcc\x0c\x0b\x4c\x66\xdc\xa2\x29\x0b\x41\xc5\x05\x12\xfa\x68\xbb\x67\x96\x42\x79\xd0\x42\x72\x28\x0f\xb5\x3c\x8f\x51\xfe\x1e\xdf\xa4\x59\x82\xfd\xc9\x66\x14\xb0\xde\x59\xac\x23\x63\x66\x16\x2b\xc0\x79\xac\x01\x9b\x90\x7d\x84\x27\x18\x82\x8c\x83\x31\x26\x9d\x27\x16\x2b\x13\xfc\xe7\x23\x7c\x9d\xd1\xd7\x76\xf1\x1d\x5f\xbe\x65\x31\x53\xa1\xf5\x95\x74\x1c\x0e\x70\x85\xa3\x20\x6e\xea\x05\x2e\x36\xfb\x49\x65\xd6\xb6\xf0\x3f\x65\xd6\xee\x31\xba\x60\x38\x3c\x0a\xd3\x85\xc7\xf6\x9b\xd1\xcd\x49\xde\xa1\x3e\x1e\xc4\x13\xe6\x75\x4f\x08\x22\x8c\x67\x69\x39\x92\x11\x5d\x2c\x25\x8e\x17\xf4\xa6\x32\xb7\x0b\x9a\x6f\x84\x79\x60\x83\xf3\xde\x65\x1e\xac\xe5\xf2\xb5\x6a\x34\x2e\x87\x63\xa6\xcd\xe7\x9f\x21\xb3\xeb\xa5\xf5\x48\x23\x4a\xa3\x0d\x14\x5e\xb2\x29\xac\x39\x56\x62\x7c\x89\xd1\xde\x2f\x70\xfe\x4c\x67\xfd\x14\xff\xf7\x0c\x47\x59\xc1\xe9\x19\xf0\x15\x0e\x0c\x73\x0d\xa0\x75\x7c\xb4\x09\x31\x27\x81\xfc\x31\x2a\xc7\x74\xa0\xa1\x60\x45\x00\xf1\x90\xda\x95\xd5\x55\xc4\x66\x24\x7f\x67\xcd\x96\x5b\x1c\x35\x86\x9a\x9e\xe7\x16\x82\x10\x09\x46\x34\x0a\xe7\x68\x83\x5e\x18\x16\x5c\x9c\xd8\x79\x5b\x64\x70\xcd\x37\x9d\x45\xe2\xd4\x75\x9a\x4f\xc2\xc7\xf7\x2e\x7c\xa0\xff\x9c\x26\x38\xc5\xc9\x25\xa6\x62\x48\x3c\x23\xa2\xbc\x24\x7e\x80\x1a\xc3\xcf\xc2\xfe\x98\x71\x60\xb4\x95\xa0\xb7\x49\xe8\x47\xe8\x1d\x75\xcf\x44\xc3\x70\x8c\x71\x34\x58\x19\x00\x08\x1e\xf2\x19\x22\x60\x6b\xf4\x73\x72\x04\x45\xfe\xcb\x8f\xd0\x6e\x32\xeb\xdf\xa0\x3f\x46\xe4\x3f\x2b\x57\xb8\xff\x9f\x17\x13\x3f\x1c\xaf\x0c\xe2\x89\x5d\xde\x39\x39\xe2\xcd\x15\x88\x3d\x72\xa1\xd2\xd2\xcf\xb3\x3c\xdf\x4b\x34\x20\x07\x05\x9a\x32\xe9\xf9\xb3\x67\x64\xd0\x81\xf4\x44\x3a\x24\x50\x12\x51\xa5\x50\x15\x66\x9d\xfe\xfa\x13\xad\xae\xc6\x97\x38\x19\x8e\xe3\x2b\x52\x07\x36\xbe\x3a\x4f\x07\x4a\xea\xd5\x3b\xd5\x9f\x48\xd9\xd7\xe2\x73\x43\xfe\xbc\xae\x7f\x6d\xb2\x3d\x8c\x35\x06\x78\x02\x2a\x04\xac\x68\x77\x75\x15\xf1\x66\x51\xbf\x4e\x8a\x00\xca\xd0\x74\xed\xb5\xa8\xd2\xc8\xab\x88\x32\xcf\x00\x01\x5a\x88\x96\x6a\xaa\xa5\x58\xb1\x67\x80\x0a\x2b\x77\x0b\xff\x12\x82\x94\x4b\x2c\x2d\xf5\x9b\xd2\x77\xf8\x87\x97\xa1\x45\x96\x96\xfa\x8d\xd7\xcf\xdd\x05\x96\x96\xfa\x75\xf6\x9d\xfc\x0b\x1d\xe7\x8d\xc2\xc3\xd2\x06\xf4\xfc\xcd\x1b\x96\x0f\x52\x7e\xdd\xa0\x2a\x40\xe5\x2d\x43\xc8\x6c\x49\x54\xab\x5d\xd7\xea\x4c\xeb\x97\x17\x65\x5c\x8f\x14\x22\x2f\x6f\x75\xea\x60\xcb\xa3\x32\xa0\xff\x55\x69\x84\xbd\xa4\x37\x48\x9c\x94\xf2\x97\x55\x46\x30\xd2\x14\xac\xae\x22\xb2\x4b\xc0\x4d\x0c\x0a\xa5\x85\x44\x17\x8f\xb1\xd2\x5e\xa4\x08\xe0\xa5\x28\x8e\xc6\x37\x74\x39\x6e\xfd\x7a\x70\xb4\x85\xfe\x40\x6f\xd0\x3a\xc0\xe4\x0d\xd6\x6d\x58\xd0\xbb\x38\xb5\xb3\xec\x1b\xef\x2f\x5f\x4b\xca\x59\x40\xac\xab\x15\xc7\xeb\xbf\x50\xe6\x5c\x54\xe4\x34\x8a\x6b\x32\x8c\xd9\x2a\xe3\x89\xa2\x59\x3e\x60\x06\xea\x45\x12\x0f\x72\x4b\x3d\x20\x34\xd8\x1b\x29\x96\x81\xd0\x1d\xe4\x20\x34\x5f\x16\xe2\xd2\x01\x21\x6c\x93\xe6\x29\x2b\x7a\xa6\x8b\x46\xec\xb3\x84\xab\xaa\x7a\x5e\x44\x28\x42\x0e\xc1\x08\xdd\x4d\x38\x42\x0b\x0a\x48\x48\x95\xe7\xcc\x43\x57\x4e\xf7\xf2\xd9\x4b\x2c\x8d\xd7\x9a\x64\x25\x8a\x4b\x02\x96\x53\xc4\x92\x0a\x2f\x20\x69\xb5\x9e\x24\xad\xef\x5d\xd2\x72\xc8\x57\x0e\xf5\xce\xc9\x51\xb1\x9c\xb3\xa8\x7a\xc7\xc2\xd2\x75\x5e\xfe\xc4\xc4\xff\x79\x4c\xbc\xf0\x34\xfb\x08\x2c\x7b\x2f\x1a\x24\x18\x22\x37\x30\xe0\x1a\x48\x26\x87\xe4\x93\xbb\x8c\xa8\x31\x8d\xe3\x0b\xdc\x96\x7f\x45\xb5\xbf\xd5\xe6\x50\x76\x57\x98\x7f\xde\x26\x65\x16\xd8\x05\xda\x4f\xbb\xc0\xdf\x62\x17\xd8\x1e\xe3\x41\x96\xc4\x51\x38\x40\xbd\x38\xc0\xfd\x38\x9e\xaf\xf0\xdf\xee\x15\x29\xfc\xe9\xd7\x85\x76\x84\xed\x9e\xaa\xf0\x27\xcf\x0f\xb5\x03\xc8\xac\x5d\x65\x20\x6a\xbd\x22\x2d\x26\xc1\x47\x59\x48\x8f\x85\x5f\x80\xef\x84\x1f\x4f\xbd\xd4\x9b\xaf\x37\x83\x32\x0b\xac\xe3\xbf\x77\x72\xe4\xff\x39\xeb\xf8\x60\x96\x4d\x67\x59\xf9\x4b\xbb\x83\xc2\x4b\xbb\x83\xc5\x2f\xed\x74\xa9\xee\x40\xbb\xc4\x3b\xf8\x6b\xaf\x83\x1e\x5d\xaa\x33\x75\xf3\xe2\xcd\xc3\x4a\x76\x05\x0d\x7d\x2f\xd2\xdd\x3f\xe9\x84\x7d\xa0\x5d\x6b\xba\x84\xa8\x83\x12\x97\x16\x07\x0b\x5e\x5a\x3c\x65\xb1\xfb\x7b\x30\xdf\xcd\x8f\xc7\x7b\xe8\xb7\x95\x57\x8d\x26\x37\x10\x47\x69\x46\x96\xf7\xc5\x8d\xc1\x7d\xa7\x7e\xb0\xb2\x19\xa5\xe1\x6f\xa4\xb4\xc8\x05\x37\xf5\x03\x99\xfd\x05\x7e\xe6\x4b\x17\xa1\xae\x0b\xd0\x54\xbd\x01\x25\xb5\x8e\x73\x83\x5f\xc5\x00\xf8\xb5\x5a\xb4\xaf\xa7\x15\xe9\xbb\x12\x8a\x00\x51\xcc\xa2\x4c\xf4\x4c\x0b\x66\x05\xb6\x78\x87\xf4\x9b\x01\x8c\xbe\x58\x56\x31\xfb\x97\xf6\xdd\x68\x8d\xc6\xb4\x19\xfb\x29\x8d\x9c\x85\xa6\x71\x1a\xaa\x1e\xf8\xa4\x51\xf2\x9d\xd4\x3f\x8c\x79\x67\x45\x0b\x4b\x1a\x46\xcb\xa8\xae\x35\x72\xe8\x07\xf9\x33\x0c\x94\xc8\x36\xa2\xbe\xa6\xac\x44\x6e\x2b\x0f\xa9\xa5\x36\x92\x87\xd4\x92\x4b\xdb\x82\x6b\xa9\x96\xd9\x4b\x1a\x20\x6e\x87\xc8\x2d\x70\x67\x91\x85\x38\x74\x8a\x78\x87\x33\x29\xe1\xbc\x32\x55\x54\x81\x2f\x46\xb3\x78\xe6\xa4\x3e\x57\x54\x34\x97\xc9\xf1\x97\xf5\x3d\xbf\x08\x92\x50\x60\xfb\x8a\xe1\x21\xa1\x81\x71\xf4\xf6\xf9\xb3\x5b\x2b\xdf\xe4\xcb\xe5\xfa\x55\xa3\xb9\x10\xef\xbc\x5f\x62\xb2\x27\xde\xf9\xad\x78\xe7\xde\xf1\x01\x82\x90\xb8\xe5\x58\xe7\x1e\x0b\xa0\x7b\x5f\xd6\xf9\x97\xb3\xc3\x7c\x49\xcc\xe1\x87\x16\x56\x45\xd3\x01\xd8\x23\xd0\xad\x24\x7e\x14\xc4\x93\x8a\xc1\x01\xab\xd5\x15\x4d\x52\x2a\x86\xc3\x52\x87\x9d\x1a\x5c\xae\xd1\x3a\xf3\x08\xb8\x27\x46\xa5\x33\x2a\x4e\x9c\x0b\x31\xaa\xbf\x77\xe6\x85\xff\x51\x8c\x6a\x75\x6f\xbb\x87\x5e\xad\xbd\x5a\x5b\xae\x23\x46\x1b\x68\x1f\x67\xa3\x38\x40\x0d\x17\xb7\x82\xd0\xde\x77\xe5\x56\x9b\x41\x40\xfd\x07\xd5\x05\x51\x82\x0b\xf0\xd5\x4b\x6a\xd3\x3f\xbe\x68\x95\x06\xfe\x0f\x4e\x62\xc8\x1d\x96\x8d\x30\x4a\x70\x2a\xf1\x45\xa5\x23\xa4\x1c\xeb\x31\x79\x36\xf0\xbe\x13\x2f\x60\x0b\xf1\x0b\xc3\x41\x5d\x8d\xce\xe6\x01\x34\x85\x67\x5f\xd8\x71\x84\xd1\x24\x4e\x30\x15\x1e\x97\x97\xa1\x6f\xae\x51\xe4\xeb\x7d\x79\xb9\xe4\x02\x87\xf9\x5c\x64\x81\xaf\xdd\x2f\xca\xf9\xd3\x02\xff\x66\xa7\x38\x14\xc5\xf1\xb4\x9c\x18\xf2\x91\x93\xa3\x73\x65\x0b\x62\x77\xaf\x89\xbc\x48\x11\xcd\x89\xa6\x16\x22\xba\xfb\x85\x9b\x7d\x22\xba\x6f\x45\x74\xff\x47\x62\x7e\xc5\x24\x27\xf1\xc0\xbf\x50\xf8\x2d\x7d\x70\x96\xcf\xb7\x86\x00\x5c\xa9\x14\x8b\xc0\x55\xf4\xf5\xab\xfe\xea\x4e\x5b\x8c\xbd\xc7\xf3\xe3\x0a\xac\xae\xa2\x4f\x04\xbe\x5a\x2f\x34\x22\x05\x80\x66\x41\x94\xb9\x1a\x85\x63\x8c\x2a\x3f\x54\x72\x5f\xeb\x3c\x06\x37\x78\x1c\x1a\x31\xb7\x85\x09\xa7\xa1\xc8\x0c\xc5\x96\x84\x54\x15\xa5\xee\xd8\x0d\xf1\x78\xcb\xec\x5e\x12\x05\x2d\xc4\x4b\xfe\xde\x8e\x5b\x96\x1c\x5d\x34\x49\xd6\xe3\xf2\x95\x3c\x13\x12\xb4\xf6\xd7\xe7\xf9\x78\xdc\x24\xe1\xe5\x62\x62\x1b\x31\xaf\xc5\x97\xe3\xdd\xcd\x7a\x1e\xeb\x99\x3c\x49\x1f\xcd\x44\xe0\x36\x07\xd1\x43\x3f\x4d\xc9\x42\x5e\x26\xa8\x05\xe8\x3d\xbe\x41\x5b\x38\x09\x2f\x69\x4e\xc8\x1d\x3e\x28\x8d\xe2\x98\xd3\x87\x6f\xdf\x6f\xed\x34\xf2\xd6\xc4\x73\xc9\xc4\xe3\xbd\x38\x1a\x86\x17\x33\x96\x89\x32\x86\xac\x90\x69\x51\x7e\xc9\x24\x9e\xe2\x24\xbb\x41\x7f\xd2\x63\x31\x78\x93\x02\xf3\x3d\x19\xd1\x1c\xc7\x29\x79\x08\x23\x96\x2e\x20\x8b\x85\x2f\xcd\x0a\xda\xc2\x43\x7f\x36\xce\xba\xa8\x85\x2a\xf5\xc6\x3a\x24\x52\xae\xba\xe0\x3b\x12\x9a\xe3\x84\x27\x32\xcf\xc1\x91\xf1\x9f\x87\x66\x98\xb1\xe4\x99\x29\x80\xca\x0f\xf5\xd2\x87\x2c\x46\x53\x9c\x0c\xe3\x64\x22\x01\x57\x20\x4b\xe9\x1f\x07\xc3\x8b\xae\x6b\x94\x11\xbd\xf8\x3a\x86\x98\x33\xf5\xc6\xfa\x6a\xb3\xa1\x85\xe0\xa6\x5d\xa1\xa8\x6b\x9f\x72\x84\x94\xc6\x6f\xab\x45\x09\x49\x8b\x12\xc8\x93\x59\x09\x72\xd2\xe2\xeb\x6d\x7e\x16\xd1\x03\xe0\x73\xb7\xa4\xab\x72\xc6\x50\x32\x7e\x03\x1b\xdd\x70\x7f\xb3\x61\x9c\xc0\x29\x26\x6f\xf4\x01\x12\x83\x7e\x0e\x86\x46\xd2\x78\x4a\xed\xfc\xf4\xa8\x98\x61\x2d\x52\xf1\xcf\x7c\xb2\xd6\x69\xfa\xc9\x7b\x83\xf1\xd4\x69\xac\xd5\x6a\x3a\xe0\x82\xec\xf5\x83\xe1\x85\xdd\xf0\x82\x4c\xc4\x86\xf8\xc9\x09\x8f\x14\x77\x05\xc3\x30\xd7\x3b\x5c\x57\x50\x0f\xba\xb2\x2c\xe8\x2e\xf9\x66\xa7\x0c\x36\x50\x0b\x7f\x58\x29\x59\x39\xf5\xc7\x19\xda\x84\xff\x2c\x9e\x88\x96\xbb\xd1\x48\x7e\xed\xf7\x21\x3b\x9a\x48\x3d\x18\xae\xb0\xa8\x24\x15\xde\x19\x0f\xf0\x73\x4e\x2a\x2b\x2e\xcf\xab\x56\x73\xa1\xdc\x2e\xea\xd4\x5b\x0d\x08\xc3\xcc\x91\x14\x96\x79\xd9\x83\xef\x3e\xa3\x55\x42\x3e\x94\x07\x79\x62\x76\xec\x66\x89\xee\x04\xe5\x20\x9b\xd2\xc1\xa6\xe9\xe6\x0d\x7d\x8e\x2d\xd4\x13\xc8\xc9\x7b\x51\x80\xaf\x6d\x35\x4e\x6b\xd7\x4c\x01\x64\x89\xd6\x39\x27\x44\x97\x40\x45\x08\xcb\xe2\x8d\x33\x7f\x7d\x8e\x0d\xaf\x94\xbf\x71\x56\xe2\x5b\xde\x06\x99\x95\x15\xf6\x64\x33\xc2\xc8\xb7\x16\x5a\x34\x7f\x31\xc7\xc8\x42\xfd\xc8\x04\x75\xad\x83\x3c\x2e\xd2\x1b\x8e\x8f\xd5\xb8\x40\x74\x92\xe5\x39\xe6\xc9\xb2\x81\x02\xf3\x34\xbe\x79\xaf\xf5\x39\x43\x2c\xa3\x77\x9e\x1a\xd8\xfc\x3e\x3f\x1b\x03\xc0\x57\x86\xd8\x3a\xba\x66\x71\x91\xc5\x28\x7f\xc5\x3a\xee\x40\x64\x4f\x8c\xb1\x1d\x74\x28\x47\xb3\x63\x60\x2d\x58\x28\xb6\x1c\x75\x6a\xcb\x21\x4d\x9f\xd3\x98\x03\x01\x3f\x57\x9a\x80\xd1\x13\x23\x2d\x7f\xb4\x8d\x75\x99\xf1\x46\xf3\x42\x41\xd9\x3a\xcb\x47\x5f\x7e\x67\x0f\x58\x25\x35\xf1\xdb\xc1\x91\xda\x1d\x70\x9d\xb2\x78\x5c\x1b\xe3\xf6\x07\xb5\x81\xf9\x83\xdb\xc0\x48\xb3\xf9\x1a\xfd\x51\x30\x7a\xe4\x2f\xaf\x71\xfa\x07\x98\xc3\x18\x1d\x39\xfd\x43\x37\x8b\xe1\x7f\xb7\xe6\x6b\x3d\xe0\x14\xf9\x93\x98\x03\xd3\x4d\x43\xa3\xb6\x29\xd1\x98\xc4\x69\xed\x6c\x69\xa9\xd8\xa4\x48\x02\x2e\x1d\x7d\x39\xdf\xb0\x04\x31\x63\x7b\x59\x5e\xaf\xc8\x80\x52\x3e\x46\xdc\x6b\x43\x2f\x13\x6c\xa6\x70\x23\x5f\x70\x13\x7f\x28\xd1\x32\x4c\x6d\xe9\xf6\xe7\x47\xaf\xb1\x88\x06\x0f\x10\xc4\x86\x8a\x08\x42\x32\xa4\x42\xa1\x4b\x4c\x58\xac\x9a\x87\x1c\xb2\xe9\x7d\xc0\x14\xca\xa6\x79\x90\x1d\x71\x94\x74\x09\x30\x1e\xd2\x05\x55\x36\xec\xaa\x58\x4c\x0a\xcd\x11\x9e\x6e\x8b\x6c\xd1\x28\x34\x7b\xa0\x1e\x3d\x85\x2e\xcf\x09\x7b\x7b\xe6\xad\xfd\xbd\x7d\xe8\x17\x48\xeb\x3e\x3f\x39\xfa\xe3\xea\x8e\x9c\xe9\xb5\x5d\x59\xaf\xff\x09\xda\xa5\x63\x30\xce\xec\x71\xe3\x5d\xaa\x44\x92\x5f\x16\xe9\x91\x04\x1e\x47\x78\x96\xfa\xfd\x31\x66\xe1\xc0\x24\x74\x8e\x91\x9c\x6a\x91\x42\xd1\xdf\xbc\x43\x6a\x86\x35\x69\x5b\x38\x82\x6c\xca\x88\x19\xda\x32\x1b\x63\x53\x93\x24\xca\x43\x8c\x95\x30\x45\x3e\xa2\x09\x98\xd1\x25\x4e\x52\x88\x5a\x36\xf2\x33\x14\xe1\x8b\x31\x1e\x64\x38\x20\x6c\x78\xc0\x52\xaa\x66\x4c\xe1\x93\xc5\x68\x1c\x66\xd9\x18\x2f\xd3\x00\x97\x2b\x2a\x50\x9c\x24\x71\x82\x82\x18\xa7\xd1\x8b\x0c\xf9\xc3\x21\x1e\xd0\xba\x14\xa9\x17\x29\x4a\xf1\x60\x96\x84\xd9\x8d\x27\x2a\xf6\x67\x19\x0a\x33\xa8\xc4\x6b\x84\x59\x2a\x02\x2a\x84\xe3\x30\x63\x4e\xdc\x34\xaf\x6b\x48\xf8\xf3\x04\x47\x74\x3f\x48\x6d\x8a\x32\x3a\x20\x1f\x68\xe7\x84\xba\x4c\x7b\x2b\xcf\xdf\x5d\x93\xb6\x15\x1f\x52\xde\xcb\x66\xd0\xce\x03\x46\x6e\xbd\x0d\xa7\x86\xcb\xa2\xd3\x42\xc8\x4e\x68\x64\xf7\xc2\xce\x73\xda\x6f\xa2\x5d\xf2\xcb\x92\x38\xee\xfd\x69\xed\xcc\x43\x95\xf7\xa7\xcd\x33\x16\x2c\x00\x7d\x25\x8f\xec\x2a\xa0\xde\xa9\x5a\x92\xc8\xbd\x3f\xad\xd3\x4a\x35\xb5\x52\xb3\xb8\x52\x83\x56\xaa\xab\x95\x6a\xc5\x95\x9a\xb4\x52\x43\xad\x54\x17\x95\xd4\x3a\xb6\xec\x48\xc6\x90\x71\x2f\x43\xd7\xa0\xf5\xc4\xa0\xf5\xec\x83\x66\xe2\x23\x0d\x17\xeb\x13\xbd\x30\x19\x0e\x79\xda\x41\x8a\x34\x0d\xb2\x5a\xab\x91\x2f\xb6\xfe\x9a\x13\xd1\x54\x21\xd7\xad\x90\x1b\xa5\x20\xd7\x9c\x03\x2f\xc1\xd0\x20\x37\x4b\x41\xae\xbb\x66\xc7\x93\x60\x68\x90\x6b\x1a\xe4\xf9\x13\xd9\xf3\x93\xe4\x06\xf5\xf5\x74\xaa\x74\xaa\xfa\x34\xfe\x85\xa9\xc9\xc8\xe8\xe4\x13\xd6\x93\xde\xa4\x19\x9e\xa0\x61\x3c\x4b\x50\x16\x4e\xf4\xb9\x5f\x30\x28\x6f\x84\xaf\xb3\x63\xb2\xfa\xdc\xf1\x63\x2d\x11\x6f\xf7\xe3\x20\x1c\xde\x50\x4e\x48\xe9\xb0\x04\x16\xeb\x6e\x2c\x7a\xa7\xd4\x71\xe0\xb7\x53\x48\x79\x09\xd1\x56\x8c\x4c\x71\xb6\x24\xb9\xbf\xa0\x14\x67\xb3\xa9\xfa\xa1\xc0\xa3\x63\xfe\x61\x7f\xef\x17\xea\xda\x51\x74\xc2\xdf\xfb\xe5\xbc\x86\x36\xd0\xde\x2f\x66\x6a\x34\xa9\x48\x9d\x16\xa9\x5b\xa3\x19\xcb\x4b\x1a\xa6\x32\x9d\xf5\x2f\x31\x11\x15\x5c\x47\xff\x1a\x0d\x7e\x0c\x6d\xd3\xe8\xc7\x5f\x11\x7d\x72\x45\x3f\x96\x8b\xb3\x30\xc7\xa2\x7c\x7e\x1d\x6a\x0f\x73\x2c\x9a\x6d\x88\x66\xeb\x4a\xb3\xf5\x79\xcd\xd6\xd5\x66\xeb\x8b\x35\x0b\x61\x74\xc2\x1a\x5f\x82\x04\x48\xd8\x50\x57\xa0\xab\x6a\x13\xaa\x36\xf8\x62\x86\xaa\x35\x75\x99\x3a\x66\x84\x91\x75\x11\x6b\x45\x40\xad\x35\x7a\xae\xd7\x63\xfb\xd3\x8f\x75\xfa\xb1\x6e\xfd\xd8\xa0\x1f\x1b\xd6\x8f\x4d\xfa\xb1\x69\xfd\xd8\x2a\x6a\xb3\x5d\xd4\x66\xa7\xa8\xcd\x35\xd1\x66\x81\x46\xaa\x14\xe7\x41\x8b\x73\x1f\x54\x8e\x03\x21\x53\x49\x21\xfb\x11\x3d\x48\x72\x57\xa7\xf2\x5a\x92\x3e\x4a\x71\x66\xb5\x88\xbd\x77\xee\xed\x1d\x06\x37\xf7\x32\x03\x2e\xa4\x96\x3e\xa6\xa1\x86\x7e\x03\x22\x44\x95\xdf\xc8\xdc\xf3\x55\x02\xcf\x62\xef\x7d\xad\x57\xac\xd3\x8a\x0d\x56\x71\x4d\xab\xd8\x76\x56\x6c\xd0\x8a\x2d\x56\xb1\xae\x55\x5c\x73\x56\x6c\xd2\x8a\x9d\x33\x81\x9a\x52\xb1\x9e\x57\xbc\xd7\x2e\x56\x14\xa5\x9e\x22\xc2\x63\xc7\x1f\xb3\x94\xec\x2c\x78\x3c\x3c\xde\x25\x7a\x3c\x87\xc3\x18\x9c\x80\x63\x8b\x1f\x6f\xc5\xd7\xea\x84\x87\xa4\x1c\xbd\xc2\x9b\xee\xb8\xd8\x8b\x4e\xa6\x7e\x61\xc7\x93\xdf\xdc\xe6\x1f\xc3\x4b\xfa\xa5\xd3\x5a\x6d\x36\x74\xb5\x9c\x58\x26\x82\x60\x2b\x25\x5d\xa1\x94\xf5\xa1\x7c\x91\x44\x50\xcd\xe0\xe7\xd8\xbf\xc4\x28\x1e\x07\x4e\x56\xbb\x80\xfc\xd0\x3b\xa7\x93\xdb\xd3\xe3\x1d\x2a\x2d\xf6\xfc\xf1\x60\x36\x26\x2b\x2c\xc2\x57\xce\x66\x7b\x2c\x11\x4c\x8f\x26\x82\xa9\x5d\xb7\x82\x26\xfc\x1f\x5a\xe2\x12\x9a\x9e\xaf\xa5\xc7\xf2\xc2\xf4\x68\x5e\x98\xda\x35\xab\xd1\x84\x98\xf2\x3d\x2e\xa0\xd6\xaa\xe8\x0d\xaa\xf4\xce\xa5\xe7\xff\x40\x75\xd4\x45\xb5\xaa\x09\xb1\xc1\x20\x36\x28\x44\x06\xb0\xc5\x20\xd6\x35\x88\xf5\x12\x10\x9b\x0c\x62\xd3\xe8\x56\x85\xb6\xa3\x40\x6c\x94\x80\xd8\x62\x10\x5b\xd6\x5e\x37\x35\x88\xcd\x12\x10\xdb\x0c\x62\xdb\xda\xeb\x96\x06\xb1\x55\x02\x62\x87\x41\xec\x58\x7b\xdd\xd6\x20\xb6\x4b\x40\x5c\x63\x10\xd7\xac\xbd\xee\x68\x10\x3b\x73\x21\xe6\x62\x3f\x05\xaa\x54\x5f\xd3\xab\xeb\xde\x31\x82\xa6\xc9\xee\x73\xb1\x7c\x8f\x45\x44\x4a\x5d\x5c\x03\xaf\x0e\x49\xd7\x7a\x96\x24\x1c\x3c\x5d\x7e\x32\x1b\x64\x68\x14\x5e\x8c\x90\x1f\x05\x68\x1c\x5f\x21\x3f\xb9\x98\x41\xf8\x17\x70\x73\xfe\xef\x99\x9f\x18\x89\x7b\xa0\x01\x1f\x6d\x90\x56\xb8\x14\x67\x51\x1e\x5c\xf4\x69\x11\xba\x4b\x58\x8f\x4f\xbc\xcf\x0a\x06\x09\x4e\x67\xe3\x0c\xc5\xc3\xa2\xe6\x47\x74\x0b\xa8\x5c\xf8\xe8\x25\xba\xf0\xa9\xeb\x4a\x7d\xad\x8a\x96\x10\x7d\xd5\x67\xaf\xda\xf0\xaa\x0f\xaf\x6c\x48\x8e\x29\x20\xa9\x2b\xf4\x48\xf8\x12\x5d\x5c\xc3\x0c\x57\x81\x20\x78\x01\x21\x76\x4a\x05\x6c\x89\x60\x48\x87\x7e\x3b\x38\x42\x10\x4e\x52\xfe\xf8\x8e\x72\xb8\x8b\x11\xfa\x1d\x5d\x8c\xcb\x32\x39\xbb\x52\xe5\x37\xc6\xe2\xde\x51\x16\x57\xa9\xbc\xcb\xb7\x6f\xb2\x93\xbd\x93\xc4\x82\x2a\x2b\xd0\x51\x0b\x74\xf2\x02\x3a\x3d\xff\xc6\xb8\xe1\x3b\xca\x0d\x2b\xb4\x99\x7c\xbf\x7d\xc7\xf9\x1f\xec\xb7\x4b\x88\xb4\x66\xc2\x68\x30\x18\x0d\x0e\xa3\xae\x22\x50\x37\x30\xac\xa9\x05\x6a\x45\x18\x36\x19\xf4\x26\x87\xde\x50\x31\x6c\x68\x18\xd6\x2d\x18\xb6\x18\x8c\x16\x87\xd1\x54\x11\x68\x1a\x18\x36\xd4\x02\x8d\x22\x0c\xdb\x0c\x7a\x9b\x43\x6f\xa9\x18\xb6\x34\x0c\x9b\x16\x0c\x3b\x0c\x46\x87\xc3\x68\xab\x08\xb4\x0d\x0c\x5b\x6a\x81\x56\x11\x86\x6b\x0c\xfa\xda\x99\x42\x22\x02\xc3\x8e\x86\x61\x5b\xc1\xb0\x54\xe2\x8f\x94\x27\x9d\x10\xba\xd6\x12\x69\x27\xe6\x5d\x77\x51\x58\x19\xbe\xce\xe4\x7b\x27\x59\x93\xca\x43\x29\x28\x69\x1c\xe8\x6d\x91\x79\x7f\x35\x1d\xfb\x04\x9b\xeb\x0c\x39\xc1\xb1\x38\x33\x95\xbc\x65\x1b\x44\x71\x71\x55\xa4\xd4\x55\x93\x77\xc8\x25\xab\x45\x77\x50\x72\xc1\xd2\xc6\xc8\x9e\x7a\x37\xd2\x6d\xb7\xbc\xfc\x52\xa4\xdb\xee\x78\xec\xae\xa4\xdb\xa9\xdf\x9e\x79\x6b\x7f\xef\x48\x84\x4f\xf7\x55\x4f\xf7\x55\x8f\x76\x5f\xa5\x2d\xf1\xfc\x3e\x47\xbf\xc9\xf9\x7b\xdd\xe1\x3c\x54\x56\xb8\xf7\xe2\x68\xfe\x5e\x3d\x9a\xbf\xbf\xeb\xd1\xfc\xbd\x7a\x34\x7f\x5f\x74\x34\x9f\xa7\x60\x7e\xba\xa9\x7a\xba\xa9\x7a\xba\xa9\x52\xbe\x3c\xdd\x54\x3d\xdd\x54\x3d\xdd\x54\xe5\xcd\x3e\xdd\x54\xe9\x1f\x9f\x6e\xaa\x1c\x8f\x4f\x37\x55\x4f\x37\x55\x4f\x37\x55\xf0\xf7\x74\x53\x55\x4e\x89\xfb\x74\x53\xf5\x74\x53\xf5\x74\x53\x25\xfd\x3d\xdd\x54\x3d\xdd\x54\x3d\xdd\x54\x3d\xdd\x54\xfd\x4f\xbe\xa9\x7a\xb0\x3b\xaa\xbb\xdd\x4e\x95\xb9\x97\x2a\x71\x23\xf5\x58\x77\x51\x7f\xef\x7c\x28\x4f\x77\x51\xff\xfc\xbb\x28\xf9\xee\xa8\xd7\x9a\xeb\xe8\x24\xdf\x1c\xf5\x5a\xd2\xb5\x11\x3c\x3c\xfe\x9d\x11\xf5\xd2\x14\xb7\x46\xf6\xa0\x02\xdc\x43\xbb\xe8\x5a\x09\xdc\x38\x65\x8f\x62\x29\x66\xba\xa9\xaf\x88\xc2\x0c\xa5\xfd\xf8\xda\x84\x73\x2c\xd0\x39\x96\xaf\xe9\xf8\x9f\x4d\x9a\x6c\xb4\x3b\xee\x43\x39\x3b\x74\x87\xf3\xd5\xb8\xef\xf1\x8d\x4d\x8f\xab\xb6\xe8\x71\xff\xf1\xb9\x0d\xb3\x41\x21\x43\xc0\xa3\x4a\x84\xe8\x5f\xf2\x38\x39\x54\x87\xac\x12\xd9\xda\xf8\xd8\x9f\x2a\x80\xcc\x48\x68\xca\x67\x23\x28\x9a\xed\xec\x4f\x7a\x51\xf9\x03\x2d\xd1\xf1\x59\xe2\x8d\x56\xd1\xbf\xa0\x57\x8e\x58\x0a\x57\xfe\xd4\x8e\x33\xec\x1b\xa6\x86\x40\x9a\x80\x63\xbb\x63\x3c\x79\x4d\x66\x7c\xfe\xf4\xf4\xac\x2a\x7e\x96\x55\x43\x10\xcd\x1f\x2c\xcb\xac\x00\x74\x6f\xb5\x1c\xd7\x84\x80\x16\xc4\xc8\xbf\x4e\xa6\xc7\xae\x32\x54\x5a\x16\x4e\xce\x8d\x76\xc7\xa1\x10\xa9\x39\x95\x21\xd6\x46\xcb\x2a\x46\xa4\xf5\xa4\x29\x46\xf2\x41\x0b\xb5\x2f\x7f\xe4\xc3\x39\x37\x03\x3c\x28\x07\xd5\xea\x9f\x65\x3c\xb5\xf9\x10\xab\x29\xa2\xcb\x28\xa2\x2a\xb5\xc8\xb2\x88\x42\xd0\xa0\xd3\x84\x71\x8c\x2a\x95\xef\x0a\x09\x3b\x08\xd7\x4a\xb4\x05\x04\xeb\x26\xd6\x9c\x50\xd5\xf7\x6a\x67\xbf\x92\xba\x15\xb6\xa6\x48\x15\x86\xd7\x59\x9e\xd7\x20\xd2\xf3\x18\x68\xc7\xa7\x4f\x10\x07\xc5\x72\xa3\x95\x93\x7a\x68\x9c\xdd\xc9\x58\x28\x73\xc5\xc4\x32\x05\xbb\xef\x55\xee\xed\xb5\x1e\x42\xe8\xed\xb5\x16\x96\x78\xcd\x3d\x56\x13\x77\x7b\x2d\x6b\x6c\x0b\xb8\xa1\x09\x71\x70\x87\x1d\x7e\x2b\x89\xa7\xca\x2e\xcf\x5e\xc0\x20\x7c\x83\xa8\x78\x01\x69\x4e\x0d\x34\xa7\xe9\xf9\xc9\xc4\x93\x52\x22\xd4\x1c\xaa\xbf\x6a\xc8\x60\xf5\x58\x73\x04\x75\x29\xea\x97\xb6\x8a\x09\xa8\xae\x0a\x42\x8d\x18\x57\x4a\x88\x21\x6d\xf0\x82\xc5\x77\x18\x64\x3c\x0b\x36\x70\x61\xf8\x42\xf0\x22\xbb\xf8\xcf\xb0\x99\x2f\x2f\x5b\xf7\xf0\x05\xd8\x3d\x9a\x93\x00\xe9\x3b\x5a\x6d\x64\x88\x1e\x66\xc5\x01\xa4\xc5\x57\x1d\xa3\xf9\xe2\x95\x47\x0a\x15\x9f\x34\x7b\xad\xc7\x3a\x66\xde\x2f\x5d\xdf\xb7\x3c\x5f\x3e\xda\x29\xf0\xdb\x06\x71\x26\xac\x0a\xa7\x38\xb9\xc4\xcf\x9f\x55\x06\x55\xd4\xa8\xd5\x1b\xa8\x7f\x83\x7a\xff\xdf\xff\x1b\x24\xe1\x00\xed\xe3\x34\x0a\xc7\x2b\x68\x73\x3c\x46\x49\x78\x31\xca\x52\xc4\xca\x07\x2b\xcf\x9f\x3f\x3b\xc2\x41\x98\x66\x49\xd8\x9f\x01\x7c\x3f\x0a\x20\x28\x4f\x18\xa1\x34\x9e\x25\x03\x0c\x6f\xfa\x61\xe4\x27\x37\x84\x1d\x4c\x52\x8f\x45\x69\x48\xe0\xbf\xf1\x2c\x43\x13\xe0\xe9\x03\xe0\xac\x1e\xf2\x13\x8c\xa6\x38\x99\x84\x59\x86\x03\x34\x4d\xe2\xcb\x30\xc0\x01\x0d\x3a\x41\xd6\xe9\x30\x1e\x8f\xe3\xab\x30\xba\x40\x83\x38\x0a\x42\xba\x86\x49\xa5\x09\xce\xba\x6c\xc5\x2f\x23\x15\xad\x14\x14\xc3\x14\x9f\x41\x1c\x60\x34\x99\xa5\x19\xd9\xa8\xfd\x30\x02\xa0\x7e\x3f\xbe\x24\x9f\xa6\x37\xd0\x45\x14\xc5\x59\x38\xc0\x1e\x8d\x2b\x34\x0e\x53\xd0\x2c\xcb\xed\x45\x81\x86\x4c\x10\xa6\x83\xb1\x1f\x4e\x70\xb2\xe2\xc2\x21\x8c\xe4\x81\xe0\x38\x4c\x93\x38\x98\x0d\xf0\x83\xa3\x81\x58\xd7\x82\x78\x30\x13\x71\x30\x48\x8d\xd5\x38\x61\x31\x32\x26\x7e\x86\x93\xd0\x1f\xa7\xf9\x30\xc3\xdc\x40\x35\x09\x75\x32\xcf\x27\xbb\x7b\xc7\xe8\xf8\x60\xe7\xe4\xd7\xcd\xa3\x6d\xb4\x77\x8c\x0e\x8f\x0e\x7e\xd9\xdb\xda\xde\x42\x6f\xff\x8d\x4e\x76\xb7\x51\xef\xe0\xf0\xdf\x47\x7b\xef\x76\x4f\xd0\xee\xc1\x87\xad\xed\xa3\x63\xb4\xf9\x71\x0b\xf5\x0e\x3e\x9e\x1c\xed\xbd\xfd\x74\x72\x70\x74\x8c\x7e\xdc\x3c\x46\x7b\xc7\x3f\xc2\x87\xcd\x8f\xff\x46\xdb\xbf\x1d\x1e\x6d\x1f\x1f\xa3\x83\x23\xb4\xb7\x7f\xf8\x61\x6f\x7b\x0b\xfd\xba\x79\x74\xb4\xf9\xf1\x64\x6f\xfb\xd8\x43\x7b\x1f\x7b\x1f\x3e\x6d\xed\x7d\x7c\xe7\xa1\xb7\x9f\x4e\xd0\xc7\x83\x13\xf4\x61\x6f\x7f\xef\x64\x7b\x0b\x9d\x1c\x78\xd0\xa8\x59\x0d\x1d\xec\xa0\xfd\xed\xa3\xde\xee\xe6\xc7\x93\xcd\xb7\x7b\x1f\xf6\x4e\xfe\x0d\xed\xed\xec\x9d\x7c\x24\x6d\xed\x1c\x1c\xa1\x4d\x74\xb8\x79\x74\xb2\xd7\xfb\xf4\x61\xf3\x08\x1d\x7e\x3a\x3a\x3c\x38\xde\x46\xa4\x5b\x5b\x7b\xc7\xbd\x0f\x9b\x7b\xfb\xdb\x5b\x2b\x68\xef\x23\xfa\x78\x80\xb6\x7f\xd9\xfe\x78\x82\x8e\x77\x37\x3f\x7c\xb0\xf6\x92\xe0\xae\xf4\xf1\xed\x36\xfa\xb0\xb7\xf9\xf6\xc3\x36\x6d\xe9\xe3\xbf\xd1\xd6\xde\xd1\x76\xef\x84\x74\x27\xff\xd5\xdb\xdb\xda\xfe\x78\xb2\xf9\xc1\x43\xc7\x87\xdb\xbd\x3d\xf2\x63\xfb\xb7\xed\xfd\xc3\x0f\x9b\x47\xff\xf6\x18\xcc\xe3\xed\xff\xfd\x69\xfb\xe3\xc9\xde\xe6\x07\xb4\xb5\xb9\xbf\xf9\x6e\xfb\x18\x55\xe6\x0c\xc9\xe1\xd1\x41\xef\xd3\xd1\xf6\x3e\xc1\xf9\x60\x07\x1d\x7f\x7a\x7b\x7c\xb2\x77\xf2\xe9\x64\x1b\xbd\x3b\x38\xd8\x82\x81\x3e\xde\x3e\xfa\x65\xaf\xb7\x7d\xfc\x1a\x7d\x38\x38\x86\xd1\xfa\x74\xbc\xed\xa1\xad\xcd\x93\x4d\x68\xf8\xf0\xe8\x60\x67\xef\xe4\xf8\x35\xf9\xfd\xf6\xd3\xf1\x1e\x0c\xda\xde\xc7\x93\xed\xa3\xa3\x4f\x87\x27\x7b\x07\x1f\xab\x68\xf7\xe0\xd7\xed\x5f\xb6\x8f\x50\x6f\xf3\xd3\xf1\xf6\x16\x8c\xee\xc1\x47\xe8\xea\xc9\xee\xf6\xc1\xd1\xbf\x09\x50\x32\x06\x30\xf8\x1e\xfa\x75\x77\xfb\x64\x77\xfb\x88\x0c\x28\x8c\xd4\x26\x19\x82\xe3\x93\xa3\xbd\xde\x89\x5c\xec\xe0\x08\x9d\x1c\x1c\x9d\x48\x7d\x44\x1f\xb7\xdf\x7d\xd8\x7b\xb7\xfd\xb1\xb7\x4d\xbe\x1e\x10\x28\xbf\xee\x1d\x6f\x57\xd1\xe6\xd1\xde\x31\x29\xb0\x47\x9b\xfd\x75\xf3\xdf\xe8\xe0\x13\x74\x99\xcc\xd1\xa7\xe3\x6d\xfa\x53\xa2\x58\x0f\x66\x12\xed\xed\xa0\xcd\xad\x5f\xf6\x08\xda\xac\xf0\xe1\xc1\xf1\xf1\x1e\xa3\x13\x18\xb2\xde\x2e\x1b\xee\x95\xe7\xcf\x5e\xae\xaa\x3a\xaf\x7d\x3f\x1b\x3d\xac\xde\xab\x5c\xd4\x69\x1a\xf8\x58\x14\xa1\x8f\xa5\xac\xb3\xe1\xc2\xce\x8f\xb2\x14\x65\x7e\x9f\x4b\x2c\xa4\xca\xf9\x97\xb1\x35\xd8\x66\x2e\x47\xd5\x3c\x84\xea\x1e\x42\x0d\x0f\xa1\xa6\x87\x50\xcb\x43\xa8\xed\x21\xd4\xf1\x10\x5a\xf3\x10\x5a\xf7\x10\x7a\xe5\xa1\x7a\xcd\x43\xf5\xba\x87\xea\x0d\x0f\xd5\x9b\x1e\xaa\xb7\x3c\x54\x6f\x4b\x16\x96\x6b\xb4\x2e\xf9\x46\xe0\x91\xf2\x04\x46\xbd\x4d\xe1\x92\x7a\xd0\xd6\x2b\x06\xbf\xc1\x60\xd4\xa1\x8d\x1c\x4e\x93\xb5\xd5\x62\xb8\xbc\x62\x30\xd6\x25\x3c\xd7\x18\xac\x0e\xc3\xa5\x4e\x61\xd6\xe5\x58\xcb\x75\x56\x97\xe3\x52\xa3\x30\x00\x0f\x8e\x67\x93\xc2\x22\xf0\xeb\x72\xbf\x65\x38\x2d\x56\xb7\xcd\x70\x5f\x63\x30\x1a\x12\x9e\x75\x06\x6b\x9d\xe1\xc2\xfa\x5d\x6f\x9e\x55\x5f\xcb\x73\x91\xcc\x99\x0b\x8e\xc7\x9a\x34\x56\x0d\x06\x93\xe3\xdc\x51\xc7\x03\xfa\xd6\xd4\xfa\xde\x61\x75\x9a\x39\x2c\xa8\xdb\xce\x71\xe6\x30\xf8\x78\x40\x5b\x75\xad\xef\x50\xa8\x2d\x75\x70\x8d\x21\xd8\xc9\x07\x57\x00\x69\x48\x03\x4d\x91\xcd\x01\xad\xb3\x3a\xd2\x60\xc1\xc4\xb4\xf3\xc1\x15\x30\x9a\xd2\x40\x53\x64\x25\x84\x1a\x6c\x64\x6b\x12\x30\x3e\x1a\x6b\x62\xf6\x04\x85\x22\x36\x3a\x14\x59\x75\x36\xd2\x79\x2b\x83\xa2\xc8\xc6\x0a\xd0\x93\x5b\xe2\xb4\xd5\x94\xc6\xb3\x93\x7f\x53\x68\x7a\xcd\x83\x4f\x30\x54\x9c\x5e\x5f\xe5\xb4\xc7\x69\xaa\xde\x96\x86\x75\x8d\x95\x55\xe6\xa3\x9e\x13\x81\x98\x8b\x57\xac\x20\x27\x9e\x75\xa9\x0c\x47\x7c\x0d\x7e\xcb\x67\x29\xb1\x96\x5b\x79\x55\xde\xbe\x58\xf3\xf2\x9a\x58\x57\x40\xe6\xa0\xf8\xfa\x6c\xe7\xb4\x2f\xfa\xd9\xc8\x51\x10\xe3\xc4\x48\x86\xc2\x45\xda\x94\xcc\x5b\x20\x0c\x31\x65\xf0\xdb\x39\x02\xd0\xcf\xb5\x7c\x21\x42\x83\x2d\x86\x48\x47\x43\xba\xa9\x0e\xbe\xe8\x74\x3d\x87\x23\xc6\x4e\x2c\x68\xf8\xae\xc0\x11\x0c\xa4\x2e\x0d\x52\x27\x6f\x57\x2c\x3c\xb6\x80\xeb\x4d\xcb\x7c\x88\x0e\x68\x88\x73\x40\x62\xc1\x35\xa4\xff\xb6\xc5\x2a\x56\x07\xa8\x6d\x29\xd7\x52\x67\x46\xcc\x64\xde\x29\x54\xaf\xa3\x33\x25\x4b\xf6\xf9\x88\xac\x10\xcb\x7c\x20\x11\xaa\xb9\xe6\xa1\xda\x75\x7b\x73\xbd\xb1\xf6\xea\xd5\x2b\xf2\xbb\xb3\xbd\xf5\x6a\xfb\xed\x66\x9d\xfc\x5e\xdf\xa9\xbf\x7d\xdb\xdb\xea\x91\xdf\x9b\xaf\xda\xcd\x9d\xad\xd6\xb6\x3a\xdf\xa3\xc4\xd9\x40\xbb\xb6\xd9\x58\x7f\xbb\xdd\x81\x06\x7a\xad\xad\xad\x7a\xa3\x05\x0d\x6c\xad\xd5\x9a\xdb\x3b\x4d\xf2\x7b\x6d\xb3\xb3\xb5\xd6\xd9\x86\x86\x39\x42\x67\x56\x7d\xc0\xd1\xde\xe1\xf6\xfe\x56\xbd\x53\x83\xf0\xfb\x73\x74\x48\xa2\x6c\xae\x45\x92\x5e\xd1\x5d\xf9\xae\x77\x45\x54\x99\x08\x48\x38\x82\x60\x77\xd6\x5a\xed\x46\xb3\x06\x23\xb8\xbd\xd3\xdb\xda\x7c\xbb\x0e\x1d\x7c\xb5\xfe\x76\x73\xab\xb7\xb3\x4d\x7e\xd7\x6b\xcd\x46\xbb\xb5\x06\x83\xd3\x6b\x6e\x35\xb6\xeb\x3b\xb5\x33\xa7\x6a\xbc\xac\x52\xde\xaa\xd8\x2d\xed\xa5\x54\x2f\xb8\xa9\x99\x6f\x8e\x4f\xb1\x00\xdd\x6b\x6e\x16\xe9\xb8\xbe\xd9\x3f\x97\x4a\xf3\xcb\x83\x73\xd3\x90\x09\x15\xdd\xa9\x48\xf5\xd0\x06\xaa\x98\x05\x10\x35\x00\x95\x1a\xcb\x0d\x1f\xa4\x97\x8b\x19\x95\x1a\x00\x99\x5d\xa9\x06\xd0\xb4\x2e\x35\xc1\x15\xa8\xc6\xd0\x3c\x5b\xe7\x5d\x24\xee\x1f\x08\x29\x3a\xaf\x1c\x81\x01\x9c\x8f\xc6\xee\x02\x09\x14\x48\x9c\x05\x40\xfc\x3c\xff\xe2\x86\x00\x32\xd1\xf9\x17\x37\x04\xd8\xa6\xcf\x53\x37\x04\xd8\x34\xce\xd3\xc4\x1e\xd1\x7a\x75\x95\xac\xb2\xcf\xe4\xd0\x7c\xe9\x27\x21\x91\x8e\x2d\x97\xb4\xfe\xd8\x43\xfd\xb1\x87\x06\x63\x0f\x05\x63\x0f\xe1\xb1\xa5\x21\x3f\xf1\x50\x3f\xf1\xd0\x20\xf1\x50\x90\x78\x08\x27\x7a\x63\x3e\x41\xc5\x27\x08\xef\x9a\x2e\x23\xfd\x04\x82\x8e\xc3\xc7\xba\xfe\x71\x40\x3e\x0e\xe8\xc7\x86\xfe\x31\x20\x1f\x03\xfa\xb1\xa9\x7f\x84\x03\x03\xa6\x1f\x5b\xfa\x47\x91\xa6\xda\x57\xf3\x52\xf3\x2e\xe9\xb7\x82\x56\x53\x42\xf8\xef\xd2\x06\xaa\x5b\xd7\x76\x46\x96\x8f\x3f\x46\x4b\xf9\x9a\x5a\xfa\x32\x3e\x0d\xcf\xce\xaa\x5f\x6d\x4e\x0c\xe0\xb5\xf3\xa6\xde\xa9\xfe\xf9\xfc\x99\xca\x1a\x49\x1b\x68\x58\xaf\xf4\xc7\xde\x60\xec\x05\xe3\x2a\x5a\x42\xa3\xb1\xdd\xf7\xe6\x16\x09\x85\x5c\xf8\xa6\xd9\xa0\xaa\x36\x0b\xb4\x86\x0e\xcd\x18\x79\x03\x5a\x6b\xdd\x09\xad\xa9\x43\x33\xa6\xca\x80\xd6\x69\x39\xa1\xb5\x74\x68\xc6\xdc\x4a\xd0\xfe\x5c\x5d\x65\x10\xd7\x6b\x4e\x88\x6d\x1d\xa2\x41\x10\xc8\x1e\x26\x9d\x4c\x62\x66\x9d\x2e\xf2\x05\x25\x71\x36\xae\x64\x5e\x4a\xa6\xd5\xe6\xb4\x01\x34\x90\x2d\xe1\xb1\x7d\xca\x61\x45\x18\x4b\x8a\xfc\x01\xdd\x06\xb6\x2f\x40\xee\xd0\x2e\x59\x93\x75\xab\x1b\x10\xac\x97\xbe\xad\x36\x2c\x33\xe3\x26\x51\xa0\xea\x27\x68\x49\xa2\xd6\xe4\xee\xd4\xda\xae\xf4\x13\x6f\x90\x78\x41\x02\x23\x9e\xdc\x8f\x5a\x5b\x3a\xb4\xfb\x52\xab\x0a\xed\x5e\xd4\xda\xd0\xa1\xdd\x9b\x5a\xeb\x3a\xc4\x07\xa6\xd6\x04\x6e\xad\x0b\xc8\x35\x71\x90\x2b\x70\xd4\xc4\x46\xae\xc0\x88\x6d\x5f\x80\x45\x53\x72\x4d\x9c\xe4\x0a\x1b\x80\xad\x36\x6c\x0d\xa6\x85\x86\xce\xca\xf7\xe4\x74\x0c\x20\x43\x82\xd5\xaf\x26\x61\x92\x7f\x36\x50\x65\x97\x9a\xe6\x0e\x08\x67\x0e\x2c\x3d\xdd\x65\x26\xbc\xbb\xd4\xfc\x36\x20\xe5\x6c\x23\xb2\xcb\xcc\x74\x77\xa9\x21\x2d\x26\xe5\x7c\x6b\xb9\x26\x2b\x07\xc6\xb2\xb0\x23\xf4\xad\xe5\x5a\xac\x1c\x18\x26\xf7\x49\xb9\x81\xb5\x1c\x18\x30\x2b\xc3\xa2\x8b\xb5\x3b\x2c\xb5\xc6\x3d\xcc\xb3\x02\x3f\xf3\x85\x30\x44\x1e\x2c\x1b\xff\xfc\x34\x8c\xbc\x64\xf4\x36\xcc\xd2\x93\x38\x03\x8e\x47\x61\x46\x5b\x7e\xe6\x53\xab\xad\x97\x68\xdd\x02\x1d\xea\x7c\xc0\xc3\xcc\x48\xda\x08\xe5\x8d\xce\x6c\x06\x81\x99\x85\x18\xb1\x7c\x8b\xd4\x98\x29\x07\x49\xa4\xc9\xf6\x19\xfa\xba\x41\x13\x0b\xe7\x36\x12\xa2\xc4\xbf\x50\xb3\xa1\x53\x6b\x0e\xa9\x52\xa9\xe4\x45\x97\x10\xe1\x0f\x04\xe4\xab\x2a\x01\xd5\x22\xeb\xb6\xde\x72\x08\xd0\xbc\x2a\x1d\x8e\x5c\x78\x96\x5e\x96\x17\x9e\x0d\x60\x4c\x70\xd6\x80\xcd\x13\x9c\x6d\x1d\x95\xf3\x74\xe4\xf9\x30\x79\x8e\x1d\x30\x8e\xb1\xa4\xed\x58\x5d\x85\x93\x20\x82\xec\x2e\xd4\x21\xcb\x6a\x38\x35\xa5\x27\x2f\x33\x9b\x4b\x31\x59\xc2\xea\x96\x65\x74\x0b\xe1\xec\xa2\x0d\x24\x8b\xef\xf7\x3b\xbf\xb5\x4b\x1d\xdf\xec\x27\xb2\x5d\x38\x8a\xed\x5a\x9c\x49\x50\xd1\x19\x6c\x57\xb8\xeb\xed\x2a\xc7\xab\xdd\x85\xcf\x55\x94\x42\x76\x95\x33\xd5\xae\xf3\x30\x35\xdf\x14\xee\x88\xde\x84\xd3\xc9\x65\x19\x2c\x02\x18\x6c\xb5\x28\xbb\x31\xd7\x26\x48\x61\x53\x83\x71\x1c\x15\x33\x28\x30\x25\x20\xa5\x72\xed\x02\x3c\xba\xcd\x20\xe8\xe7\x73\x83\x48\x68\x3d\x93\xd6\x18\x9a\xf0\x55\xb1\x8b\x82\x9f\xb7\xf4\xf6\x1f\xc9\x16\x71\xc3\x7a\xe5\xda\x43\x37\x1e\xfa\x62\x4b\xf3\x51\xa9\x5c\x83\x67\xe7\x0d\xfc\xfb\x25\xcf\xd6\x7e\x6b\xc0\x69\x14\xc3\xa9\x5c\x57\x7f\xaa\xdc\x54\xa9\x3b\xf9\xff\x25\x0f\x5f\xaa\xd5\xea\xff\xcf\xde\xf7\x2f\xc7\x6d\x23\x0d\xfe\x1d\x3f\x05\x76\xab\xd6\x1e\x45\x23\x89\x00\x7f\x81\xb6\x95\xbb\x44\xb1\x3f\xe7\x62\xc7\x2e\x5b\x7b\xf1\x57\x2e\x7b\x17\x24\x41\x0d\xe3\xd1\x8c\xbe\x19\xca\x1a\xed\xc6\x5b\xf7\x1a\xf7\x7a\xf7\x24\x57\x68\x80\x24\x48\x02\xe0\x8c\x2c\xe7\xdb\xec\x5a\x5b\xeb\xcc\x0c\x1b\xdd\x8d\xfe\x85\x26\x7e\x34\x1e\xd8\xb0\xf9\xa3\xd8\x04\xa2\x7f\x08\x8c\x2d\x6b\x16\x5c\xc1\x38\xae\xbb\x80\x01\x78\xbb\xde\xbb\x3b\xf9\x07\x30\x67\xc7\x18\x6e\x23\x33\x21\xb4\x5f\x5b\x54\x16\x5c\x90\x4a\x6c\xa6\x0b\x23\xa6\xcd\xc3\x87\x0b\xe0\x6a\xf3\xcd\x37\xdf\x4c\x7c\x72\xb0\xd0\x99\x92\x1f\x9c\xbb\x61\xea\xcd\x30\xf2\x1e\xb8\xed\x36\xc3\x58\x6f\xfb\x51\xfb\x5b\x60\xcf\x53\xfd\xb9\x5a\xca\xc8\x34\x44\x63\xb9\x9f\xc7\x02\x7d\xd3\x8b\x79\x94\x67\xb4\x3b\x59\xea\x09\xbc\xc9\x3d\xc5\xe2\x3d\xc3\x2e\x1c\x7b\xab\xab\x9a\x5b\xd3\x76\x9b\xe1\xe4\x60\x6f\xab\x4d\x0d\xb0\xdd\x56\xa5\x5a\x39\x4f\x9e\x7d\x7b\xf2\x1b\xa8\xc6\xd1\xfc\x3d\xbf\x86\xa6\x6b\x9e\xad\x78\x65\xb9\x3b\xc9\xa2\x50\xb8\x72\xf0\x16\x15\x2a\x2f\x32\x6c\x54\xf3\xe4\x9c\x65\xad\x7a\xf4\x2d\x56\x06\x0d\x75\x80\x87\x5a\x3a\x67\x99\x41\x53\x5f\x7d\x94\xeb\xc0\x96\xad\x51\x35\xa4\xf9\x76\xa2\x8f\x6f\xa7\x71\xfc\x65\x8b\xd3\xbf\xc2\x91\x95\xcf\xbd\x74\xdf\x2b\xac\xa6\x11\xb6\x96\x4c\x7b\xf5\xe4\xdb\x03\xbc\xc5\x4a\xc6\xf0\xae\xea\xdb\x5c\xbf\x38\x86\xd3\xa7\xed\x12\x46\xb9\x28\xab\x89\xa1\x00\x55\x77\x49\x83\x17\x59\xce\x52\x9a\x18\x6a\x33\x79\x9b\x84\xa6\x2c\xcf\x0a\xde\x59\xe3\x30\x01\x66\x7e\x4e\x38\x2e\xbc\xee\xb3\x4f\x5f\x02\xb1\x65\xe8\xe6\xe4\x7b\x38\x83\x3e\x40\xb0\xcd\xdc\xb3\x79\xba\x58\x3c\x4a\xcd\x93\xc5\x90\x30\x9a\xa7\x8a\xe1\x75\xd5\x3c\x51\x2c\x1e\xf1\x66\x9a\x78\xc0\xa9\x75\x9e\xd8\x3a\x27\x6c\x79\x5b\x80\x79\x1f\x24\x4f\x98\x5a\x6a\xc1\xfc\x2c\x13\xff\x6e\x09\x8c\xee\xd9\xd3\xfa\xaf\x9e\x50\x32\x23\xaa\xcf\x39\xfc\xfc\xa6\x44\x07\xc8\x7f\x8b\xde\xa9\x8f\xb4\xfd\x88\x03\xed\x73\x64\xbb\x3b\x52\xb1\x34\x59\xc0\xe1\x58\xf9\x6e\x09\xaf\x0f\x3e\x36\x97\xa9\x31\xbf\x09\xc1\xd4\xd2\x84\x09\x24\x21\x20\x61\xf2\x4d\x26\x86\x03\xb2\x1c\xed\x03\x21\xdb\x44\x23\x7a\x88\x88\x67\x95\x1a\x4c\x9b\x4d\x26\x29\xba\x8b\x32\x99\xe7\x8a\x8f\x39\x60\xf6\x36\x21\x93\xab\xb0\x23\x53\x7c\xe8\x21\x0a\xc6\x48\xa4\xe8\x1d\xca\xd0\x3b\x94\x4b\xcc\x11\xcf\x13\x9e\x32\x53\xd1\xa1\x1e\xe6\x68\x07\xe6\x25\xef\xe2\x53\xa6\x7a\x71\x80\xbc\x4d\xec\xf1\x20\xf0\x49\x60\xa7\x75\xf4\x75\x43\x8e\x7a\x7b\xe8\xeb\xa3\xad\xfb\x22\xf0\xfb\x61\x92\xfb\x9c\xf4\x67\x79\x90\x45\xa5\xc2\x5f\x72\xd3\x74\x1f\x3a\x46\x99\x69\x8a\x0f\x01\xc9\x87\x0f\x91\xef\xa9\x5e\x82\xfa\x8d\x77\x8b\xa2\x63\x64\xe2\x83\x6d\x77\x5a\x6b\xab\xc9\x40\x35\x89\x56\x4f\xb6\xb1\xfe\x09\x6f\xd4\x99\x08\x84\x09\xc3\x41\xe5\x13\xd4\x99\x04\x84\xc9\xc2\xcc\x0c\xe3\xeb\x13\x85\xb9\x19\x26\xd0\x27\x09\x79\x1f\xe6\xcb\x04\xdf\x3f\xeb\x04\x9f\xc8\x85\x0f\x8b\xf9\x72\xb9\xd2\xe7\xdc\x8e\x60\xa0\x56\x7f\x9f\x44\x04\x6a\x21\xb4\x98\x47\xe6\xe9\x06\xd3\x74\x9f\x69\x86\x6e\xc7\x79\x20\xe3\x74\xdd\xef\x71\x36\xe8\xcb\x14\xc2\x60\x32\x40\xa4\xcf\x3b\xcd\x1e\x40\x03\xd7\xc4\x41\x37\x21\xef\xce\x19\x88\x67\x5f\xa6\x0b\x6e\x75\xba\x00\xf4\xb1\xc5\x4c\x81\x59\x2d\xed\x24\x81\x52\x8d\xfd\xd8\x94\x00\xb0\x4f\x0b\xd0\xdf\x75\x81\x8d\xf5\x8c\x91\x30\xfa\xdc\xb5\x31\x14\x95\x7f\x9f\xe9\x83\xc1\xf4\x80\xfe\x0e\x4f\xc2\xa8\xf3\x16\xaf\x9d\xc2\xee\xcf\x0a\x10\x12\x6c\x37\x2f\x20\x00\x3b\x38\xe1\xbb\x44\xfe\x9b\xce\x0d\x64\xd8\x0b\x13\x9e\x53\xf1\xca\xef\x47\x71\x96\x87\x5e\x0c\x9f\xbd\xd8\xcb\x73\x0c\x9f\x8b\xd8\xe3\x61\xe2\x9b\xe7\x0c\x8a\x22\xf3\xbc\xd4\x87\xc9\x85\x88\x86\x14\x87\x58\x7e\x0e\x8a\x84\x16\x0c\x10\xa4\xbc\x60\x41\xc1\x82\x1d\xa6\x0b\xb6\xca\x3c\xb5\xb0\xaf\x44\xa7\xb5\x74\x9c\xa2\x85\x88\xda\xa4\x33\x07\xc7\xc3\xe4\xc5\xb2\xb0\xf4\x65\x88\x1e\x19\x71\x09\x09\x76\x1d\xa4\x45\x93\x91\x61\xba\xe3\x1d\x83\x81\x9a\x10\xf3\x21\xf6\x2f\x43\xf5\x27\x0c\xd5\x42\x2b\xdb\x0d\xd6\x46\xe5\x74\x86\x6b\xa9\x20\xe7\x80\x4d\x48\xff\xa8\xb3\x76\xae\x59\x0d\x47\xf7\xe3\x44\x0c\xe0\xc9\x97\x79\xfd\xff\x9e\x81\xf9\xf7\x77\x2c\xef\x07\x79\x89\x43\xf9\xb7\xe6\x54\x2e\x5a\x2d\x2f\x17\x39\xca\xba\xe7\xf5\xb4\x1e\x3c\xe9\x5f\x9d\xf2\x63\x77\x19\xa0\x9e\xa8\xe5\x2d\x0e\xf9\xc4\x94\xc1\x20\x7d\x49\xb9\x5c\xbf\x58\x95\xe7\x7c\xb2\x30\x0e\x63\xeb\xff\x5a\x55\x3f\xd5\xef\xf9\xe2\xcb\x64\xd1\x7f\xcf\x6c\x26\x82\xa5\x3a\xd1\x31\x22\x0f\xea\xcf\x0f\x8f\x25\x86\xfa\x07\xc7\xdc\xf0\x1f\x26\x0b\xf4\x27\x05\xb6\x67\x9d\x2f\x54\x3e\x5a\xb0\xf9\x9a\x8f\xef\x0a\xec\xcf\x8f\xd5\xef\xe3\xab\xcb\xee\x1b\xae\x41\x2c\x67\xbc\x7a\xbc\x62\xf0\x99\xcd\xbf\x2b\xab\xb5\x41\x40\xcd\x12\xfe\x02\x1d\xa0\xc9\x02\x2a\x7b\xee\xa1\xaf\x3b\x93\x1f\xfd\x99\x2c\x8d\x56\x3d\x4b\xad\x57\x66\x87\xdf\x40\x21\xbd\xfa\x3d\x57\xb3\x72\xce\xd1\x44\x3d\x7b\x88\xd4\x96\xcc\xbe\x14\x5b\x6d\x5a\x05\xdd\xa0\xa0\x56\x29\x3f\x79\x23\x81\xa0\xec\xe8\x40\x10\x60\x0b\x17\xcb\xab\xc9\x62\x8a\x30\x3a\x42\x64\x6f\x8b\x8a\xed\x08\x6e\x42\xd9\x05\xad\xbf\x67\x2c\x9e\x2d\x51\xec\xef\x8f\x4c\x85\x2e\x3a\x10\x75\x86\x34\x69\x71\xde\x7c\x8d\x4d\x24\xde\xdb\x65\xd3\xc3\x0c\xfd\xb3\xaf\xb4\x3d\x39\x5c\xcf\xcb\x8c\x4f\xbc\xbd\x2f\xab\x5e\x5b\xaf\x7a\x0d\x1e\x15\xf0\x28\x34\x3d\x3a\x83\x47\x83\x05\x23\xc8\x59\xe0\x51\xfc\xc9\xcb\x68\x91\xa3\xd6\xfd\x6f\xbd\x8c\x76\xc6\xce\xcf\x99\xb7\x69\x16\xd3\xf0\x40\x28\x43\x68\xd8\x68\x3c\xa9\x5b\x3e\x7c\x88\x88\x5c\xf4\xaa\x7f\xf9\xe6\x9b\x6f\x50\xbc\xb7\x87\xd0\x3b\x33\xa6\xee\x5f\x07\x13\x0e\x06\x98\x30\xdd\xdb\xdb\x0e\x53\xb7\x9d\x6f\x0c\x2f\x9d\x9e\xe0\xb6\xdf\xc6\x4d\xf2\x5d\x60\xad\xdb\x58\x32\xab\x75\x1b\x6f\xea\x7a\xd3\x5b\x32\xdb\xc5\xe4\x0f\x31\x25\x3b\x76\xbb\x6e\x67\xbe\x93\x00\xb5\x86\xa3\x94\xb8\xaf\x7a\x0e\x45\x7e\x55\x0f\xf7\x9d\x0b\xa6\xb6\xd5\xcf\x0c\x4e\x35\x4e\x38\xba\x8b\x0a\xd8\xec\xf6\x0f\xf1\xf1\xcc\x76\x85\xcb\x39\x83\x0a\x73\x0c\xdd\x45\x29\x80\x33\xb9\x3a\xf8\x0e\xa9\x75\x42\x13\xff\x90\xac\x94\x67\x82\xf1\x66\xa9\x55\x2d\xb6\xa9\xb5\x56\xb9\xf5\x4f\x3e\xc1\x89\xf6\x04\xfb\x9d\x47\x9d\x46\xe6\xb1\xad\x21\x06\xf7\xd4\x4c\x38\xd8\xb8\xac\x9c\xcc\xa1\x5d\xa4\x30\xca\x27\x58\x7b\x82\xb1\xfe\x28\x96\x3b\x5b\xe5\x23\x12\x9a\x47\x3c\x58\x40\x16\x94\x66\x68\xbf\x26\xbb\x2f\x84\xba\x2f\x2f\x7a\xb3\x2e\x1e\x43\x43\x82\x8e\x6b\xc1\xec\x0b\xd1\x9a\x28\x88\xc0\x75\x66\x40\x20\x62\x5d\xbf\x4e\xbb\xf8\x13\xe1\xd1\x94\x7e\x41\xed\x4c\xb8\x2d\x01\x9b\x96\xf9\xd0\xc8\x12\x69\xbf\xda\x3a\x1a\x59\x0e\x9d\x54\x42\x10\x15\x31\xd1\xfa\x77\x59\x1a\x95\x30\xa1\x82\x81\x92\xe1\x85\x19\x26\x52\x30\x50\x12\xfc\xcc\x0c\x13\x2b\x18\xf0\xf9\xd9\x97\x65\xd8\x2f\xcb\xb0\x5f\x96\x61\x87\xd9\xe6\x97\x65\xd8\x7f\xca\x39\xde\x30\xda\x79\x8e\x37\x8c\x46\xe7\x78\xf5\x77\xb6\xe1\x1c\x6f\x18\x7d\x99\xe3\xbd\xf5\x39\xde\x30\xda\x76\x8e\xd7\xa4\x9c\xee\x1c\x2f\x28\xc8\xbd\x69\xbb\x59\x3b\x33\x2f\xcd\x52\xef\x77\xbd\x34\xbb\x89\x82\xdf\xe4\xe2\x82\x86\xce\x97\x59\xe0\xee\x2c\xf0\x26\x82\x35\xd5\xc3\x4d\x14\x68\xbf\xbf\x8e\x02\x55\xa5\x1b\x20\x0e\xb5\x3a\xd1\x3b\xd5\x74\xd3\xfa\xf7\xf2\xc9\xf3\xbf\x3c\x7f\xfc\xf8\xd5\xa3\xd3\x57\xfd\xd9\xe2\x17\x3f\xfc\xe5\x87\x9f\xbe\x7f\xf4\xfa\xd1\xf0\x56\xee\x97\xcf\xff\xfc\xd3\xf7\x7f\x39\x79\xfe\xd3\xab\xd3\x6f\x7f\x6a\x5a\x6a\xe4\xe4\xb4\xf2\xc9\x76\xd3\xca\x5a\x8b\xd5\x6c\x59\x17\x6d\xe9\xcd\x49\xd7\xa4\xc5\xdb\x35\x9e\xa2\x6b\x5b\xa9\xf2\x4a\x4e\x89\x54\xe8\x21\x22\xc1\x03\x54\x19\xa6\x44\xb4\x3e\xbf\xd9\xa0\x7d\x14\xa2\xaf\xd1\xb5\x3c\x3d\x58\xd5\x87\x34\xe1\x13\xd9\x83\x99\x4a\xf4\x27\x14\x0d\x72\x11\x48\x03\xf9\xd5\x6b\x74\x8c\xae\xd1\x9f\x50\x68\xca\x12\xf9\xd5\x7f\x0a\xac\x04\x7d\x8d\x04\x1d\x5f\xd0\xd9\x33\x00\x6f\xe4\xb4\xdc\xeb\xde\xcf\xd7\xf2\xe7\xff\xb4\x4c\x05\x6b\x62\xbb\x28\x51\x09\xd7\x09\x18\x84\xd6\x48\x66\x23\x25\xb3\x91\x07\x34\x37\x06\xc1\x34\xa0\x52\xba\xe8\x5a\x82\x5e\x5b\xa6\x95\x5a\x03\xe9\x8a\xf1\x1a\x2e\xf8\x19\xf6\x5a\xc8\xb5\xdf\xf5\x8f\xa3\x7d\xeb\xad\x72\x74\xad\xe1\xe9\xe3\x57\x2f\x05\xaf\x1b\x0f\x9b\x8c\x41\xbf\x77\xc2\x32\x3f\x26\xc0\x80\x44\x6d\xac\xcf\xd6\x57\x3d\xdb\x32\x82\x3d\xad\xc1\x2c\x22\x54\x37\x4f\xfc\x82\x1e\xa2\xf8\x01\xfa\xc5\x31\x33\x07\x7d\x80\xa3\xa9\xe6\xaa\x28\x35\xf9\xb4\xac\x5e\x2c\xd7\x50\xc7\x55\x58\x15\x5c\x96\xfb\xcb\x1e\x3a\x40\xa6\xdd\xd4\x35\x72\xbd\xd1\x43\xa4\xea\x45\x98\x80\xc5\xdf\xa0\x83\xef\x8e\x11\x90\xd1\xb0\x58\x68\x75\x77\x54\xeb\x54\xbf\x39\x06\xb2\xf6\xcd\xd5\x03\xca\xcf\x34\xca\x1d\x54\x07\x86\xf7\x9e\x86\x81\xed\xa6\x96\x34\xc3\x5a\xf0\x4d\x05\x06\x34\xa2\x16\x6a\xdf\x89\x7e\x74\x84\x5e\xac\xca\xf3\xb2\x2a\x3f\x70\x74\xb1\x9c\x5f\x2f\x96\xe7\x25\x9b\xa3\xe5\x07\xbe\x42\xff\xf1\x78\x42\xf6\xee\xa3\xcd\x3b\x8a\xf6\xd1\xe6\x5d\x04\xff\x86\xf0\x6f\x20\xc2\x8c\x19\xa5\xb2\x68\x49\x5e\x9e\x1f\x78\x87\xbc\x4d\xec\xd8\x32\x6f\x61\x4e\x61\x38\x36\xda\xc7\xc8\xa2\x57\x2f\xc0\xcb\x39\x3e\x35\xfc\xd4\x05\xc6\xfa\x3a\x9b\x0e\xec\x67\x6f\xd7\xd5\x94\x35\xf8\x4f\xc5\xcf\x2f\x96\x2b\xb6\xba\xee\xdc\x44\x27\x5c\xe0\x54\x1f\x88\xac\xab\x94\xc6\x5b\x67\xcc\xde\x7f\x6a\xec\xd9\x18\xdf\xbd\xb5\x1d\x7f\xbb\x95\x1d\xbf\xb3\xae\xe3\xbb\x56\x75\x6e\xff\x2a\x81\xe5\x65\x75\x71\x59\x3d\x85\x57\xeb\x0e\x2c\x82\x24\x3d\xe7\xeb\x72\xc5\x73\xed\xa2\x81\xb4\xac\xd6\x75\x41\x68\xd9\xb8\xf3\xb6\x50\x37\x7e\xbe\x98\xd7\x6a\xd2\x6a\x70\xb3\x15\xbf\x8f\x08\x09\xa6\x88\x84\xd1\x14\xf9\x34\x98\xa2\x10\x93\x7e\x63\x75\x67\xc1\x7d\xf1\x4c\x7f\xd4\xbf\xb4\xa0\x7e\x69\xb6\xde\x5b\xa0\xf7\xae\x87\xed\x06\xf7\x17\xc0\x4c\x2d\xdc\x84\x58\xbf\x7b\xd7\xdf\xde\xbc\xb5\x44\xfb\x2d\x4c\x4d\xfc\x01\x1e\x69\x72\x0b\x7e\xd5\x98\x1d\x2c\xc2\x8d\x95\x12\x00\x4e\x9a\xdb\x7a\x61\x04\x88\x3c\x0f\x1d\x20\x31\xd0\x36\x37\x25\xe8\x92\x10\xd9\x8b\x4f\x3e\xd7\x8a\x9e\x61\x62\xce\x20\x34\xe3\xe4\x59\xdd\x89\xa7\x6c\x01\x73\x3f\xbd\xae\x1d\x21\x62\x9a\x43\x4b\xd7\xcb\x55\x3a\x2e\xff\x1e\xfa\x4f\xa9\x24\xf8\x8c\x94\xa8\xbb\x28\x26\x64\x6d\x9d\x36\x7f\x46\xe0\x0e\xfa\x3e\xb8\x88\xf5\xae\x62\x16\xd6\x2b\xa8\x05\x79\x67\x3d\x41\xd2\x29\x24\x48\x6e\x52\x41\x90\x74\x4a\x07\x92\x9b\xd7\x0c\x54\x0c\xe3\x31\x8e\x71\x97\x65\x7c\x23\x9e\x71\x97\x69\xbc\x0b\xd7\x46\x3d\x48\xe3\x6a\xa6\x46\xca\x45\xb5\x94\xd6\x6c\xd6\xf4\x9c\xc1\x64\x5e\xed\xce\x06\x51\x08\x88\x43\xb8\x6f\xf6\xdd\x31\xc8\xc5\x06\x33\x5f\x5e\x21\x05\x33\xbe\x1a\xf1\x52\x0c\xb0\x6b\x8b\x0f\xc8\x44\x19\xfc\x40\x7e\x94\x49\x2f\x7c\xb6\xbb\xc0\xe9\x8c\x57\x6c\xf8\x64\x87\xb7\x06\x0d\xd9\xb3\x52\xbc\x82\xcc\x2f\xcf\x17\xd0\x39\x83\x5b\xd5\x12\xac\xd3\xec\x29\x6a\x33\x69\x23\xf0\x8e\xef\x24\x3a\x8d\x8e\x96\xda\x37\x14\x0b\x21\xf1\x57\xa7\x9e\x8d\xf6\x5c\xb0\x4f\x35\xd8\xf9\xf2\xca\x9a\x97\x5a\xa5\x75\x6a\xcc\x73\x4c\x3d\x39\x15\x5a\x38\x7d\xb3\xb1\xf1\x7e\xba\x91\xb6\x76\x0c\x3d\xb0\x03\x81\xb1\x1d\x03\xeb\xdb\xed\xbe\xb9\x99\x19\x38\xc2\x6a\xdb\xa3\x00\xba\x34\x11\x7a\x09\xe0\xf5\xd0\xb5\x58\x7e\xba\xc1\x2d\x38\xde\x06\x5c\xda\xd7\xe9\x06\xbb\xf4\xa8\x60\x9f\x36\xb0\xa0\x47\xa7\x79\xaf\x2f\x57\xe0\x51\xf2\x3a\x11\x61\xea\xe3\x56\x7e\xba\x09\x54\x2c\x40\x93\x89\xe2\xad\x39\x1a\xac\xe8\xab\xf3\xc1\xb6\xd7\x1b\xc0\xf6\xb4\xc1\x26\xa3\x86\xc4\xf6\xb4\x87\xed\xd9\x38\xb6\xdf\xd4\xa9\x3a\xa1\xd0\x61\x9f\xa8\x1f\x12\x2d\x66\x8a\x76\x7a\xdb\x7b\x39\x5b\xa2\x17\xa5\xc3\xb2\x05\xc9\xfa\xce\x47\xfc\x40\xfb\x2a\x53\xb9\xe6\xfb\x27\x9b\x7c\x47\x72\x0d\x5a\x97\x19\x0b\x20\x69\x41\x63\x01\xa9\x86\x7e\xda\x42\xdb\x43\x12\x0c\x16\xb3\xe5\x73\x99\xa5\x1c\x77\xe6\xc3\x74\xbe\xac\x9d\x7d\xb9\x84\x44\xcf\x11\xe2\xc5\x0b\x74\x4b\x62\x74\xe2\x41\xf3\x95\x49\xdd\xe9\x87\x0f\x5b\x26\xc1\xb4\xeb\xfe\xc1\x55\x9a\x3e\x41\x07\xda\x73\x9b\xa1\xa3\xae\xeb\x34\x38\x8c\xc8\x9f\xed\x88\xbc\x3b\xe7\xd1\x76\x77\xab\x19\x8f\x7e\x97\x15\x57\x1a\x1a\x98\xed\x18\x32\x17\x05\x37\xee\xf9\xb3\x11\x1a\x4f\x77\xa4\xe1\x1a\xdb\x56\x6c\xb1\xbe\x58\xae\x9d\x56\x02\xe1\xf7\x45\xf9\x54\x3a\xc6\xe9\x1b\x6d\x42\xb1\xb5\x43\xeb\x98\x27\x1b\x6e\x33\xf0\x29\xc8\xb1\xd1\xcf\x1a\x3f\x2e\x4a\xc4\x2a\x18\x02\x21\x5e\x9a\x73\xc2\x53\x0f\xfa\x60\x2c\xda\xda\xbc\x1c\x79\x4d\x00\x30\xc2\x9d\x7a\x75\x77\x24\xb4\xcd\xe5\x4f\xbd\xba\x33\x0a\xce\x32\x6e\x1d\x1d\xa1\x93\x99\x2b\xf8\x6d\x3f\xac\xdf\x70\xc8\x18\x0f\x8d\x48\x0b\x5f\x75\x1c\x6e\xc6\x95\x11\xe3\xde\x2d\xa4\xd6\xad\x4e\x1b\x83\xdb\xbe\xc9\x06\x37\x8d\x26\x5a\x12\xb2\xb7\xcd\x00\x28\x11\x90\x1e\x02\x32\x40\xe0\x94\xa2\xc8\x3d\x56\xcb\x2b\x87\x10\xe7\x9a\x37\x9c\xb6\xae\xf1\x0e\x4d\xfe\xa1\xd8\x97\x3f\xdc\xad\x99\x81\xaf\xae\xf8\x31\xd7\xbc\xe6\xb4\x75\x21\x1d\x23\xfc\xd0\x62\x9c\x2f\xaf\x3e\x7d\x82\xf6\x87\xa5\xe9\x8d\x64\xa0\x6f\xab\xa7\x75\xa6\x21\xc5\xf8\xd6\x9b\xcc\x84\xe7\xa3\x2f\x6d\x1d\x2c\x36\x47\xec\xe4\x2b\xdd\x16\xc2\x25\x1d\x8b\x1d\xff\x5c\xdb\xa2\x0c\x93\x34\xb7\xbe\x2b\x6a\x00\xdf\xcc\xf8\x88\x76\xc3\x69\xa0\xaf\x61\xf2\x6a\x38\x0f\x74\xd3\xbd\x54\xf8\x26\x5b\xa9\x60\x93\x54\xc6\xcb\x79\x77\xbf\x13\xde\x43\x47\x5d\xfe\xf7\xd0\xd7\xfd\x1f\x80\x38\x2c\xd0\x34\xbb\xb9\xfe\x49\x36\x41\x7d\xf2\x1c\x9e\x3e\xcd\x58\x33\x6f\x9c\x83\x44\x47\x46\xd5\xeb\x20\xf5\x2c\xe0\x10\xe7\x91\x71\x33\xdd\xab\xff\xba\xe4\xfc\x6f\x7c\x88\x74\xc6\xd6\xb3\xda\xb8\xb7\xba\x8b\x7e\xc0\xc5\xa7\x4c\x16\x8e\xcf\x09\x6d\x9f\xd2\xdb\xd2\xf9\xdd\xe7\x10\x5b\x7a\xf6\x59\x39\x2d\x35\x54\x13\x73\x7a\xc2\xb9\xd3\xdc\x9c\x86\x4a\x4d\xcf\xe9\xa8\x6e\x3a\xaf\xd8\x8a\xc2\xdd\x89\xa7\x83\x4e\x3c\xbd\x69\x27\x9e\x0e\x3a\xf1\x74\xb7\x4e\x98\x55\x25\x4d\x57\x39\x59\xb5\x44\x2b\x5e\xad\x4a\xfe\x81\x1b\x36\x20\x22\x75\xb8\x5b\xc6\x83\x8b\xcb\xf5\xac\x66\xc3\x24\x22\x03\xe4\xb3\x21\xe4\xa7\x97\x27\x36\x9c\x1e\x6a\x48\x4f\x87\x2e\x6c\x3d\x4f\x74\x4b\xbb\x26\xed\xf1\x4b\x6d\xa1\x34\x84\xb3\xe6\xb0\xd3\x16\x11\x62\xcb\xc5\x9c\xfa\x63\xbb\x3f\xd3\x29\xf6\x2f\xdb\x35\x6f\xb8\x5d\xd3\xdf\x75\xb3\xa6\x3f\xb6\x55\xd3\x77\x6c\xd4\xf4\xbf\x6c\xd3\xbc\xed\x6d\x9a\xfe\x96\x9b\x34\x0d\x6a\xe9\x6c\xd1\xf4\xb7\xd9\xa0\xe9\xdb\x8f\xe1\x37\x1b\x0f\xef\xd3\xe0\xe3\xdb\x29\xc5\xff\x22\xdb\x35\xfb\x05\x76\x42\x4c\x7e\xb3\x3d\x9c\x75\xb9\x1d\x41\xf3\xf7\x55\x6e\xe7\x46\xbb\x2d\xd5\xe3\x76\xb7\x67\x0d\xb3\x53\x41\x9e\x10\x93\xce\xb6\x90\x10\x13\xeb\x36\x13\xba\x65\x41\x1e\x01\xd8\xd9\x6a\x42\x55\x55\x8b\x10\x93\x5b\x3b\x42\xac\x77\xdf\x5a\x93\x67\xb0\xc9\xc1\xdb\x64\x69\x9a\x26\x79\x98\x4f\xb5\x82\x3d\x7b\x53\x13\x64\x44\x12\x46\x12\xc2\xf4\x72\x3e\x7b\x86\xba\x3d\x86\xa6\x09\x0e\x13\x0f\x87\x4c\xaf\xfe\x63\x26\x82\x43\x52\xf0\x4c\xd6\x0c\xaa\x6b\x03\x6d\x49\x24\x8a\x7d\x9f\x44\x91\x2c\x2b\xa4\x2a\x07\x99\x89\x50\x9e\x06\x01\xa3\xb1\x5e\x57\x68\x4b\x22\x79\xea\x65\x84\x7b\xb9\x5e\x86\xc8\x4c\x24\x88\xd3\x30\xa0\x38\xd7\x8b\x14\xf5\x52\xd3\xdb\xae\x52\x24\xec\xe9\x86\x55\x8a\x70\xf4\xa5\x4c\xd1\x2d\xe5\x44\x74\xe7\x32\x45\xa2\xc9\x58\x5e\xa4\xc7\x8c\x61\x66\x44\xbf\x94\x29\xba\xfd\xdc\x88\x6e\x5b\xa6\xc8\xa8\x9c\x6e\x7e\x44\x47\xcb\x14\xf9\xd4\x5d\xa6\x48\x0c\xe3\xf7\x29\x31\x65\x4b\xe4\x5f\x24\x5b\xfa\x97\x3e\xdc\x72\xbb\x07\x5b\x3e\xd3\x91\x95\x9b\x27\x51\xf2\x51\xd3\x5d\x85\xe8\x2f\xf5\x0e\x5e\xc3\x5d\x37\xdd\x4d\xbe\x87\xec\xe2\x62\x7e\x3d\x51\x3f\x4e\x11\x5b\x9d\x5d\x9e\xf3\x45\xb5\xee\xdf\xc9\xa3\x1f\x9f\x69\xf9\x81\x52\x4a\x2d\x89\x1e\x79\x6f\x13\x10\xca\x48\x91\x40\x5e\x91\xc7\x84\x32\x4e\xc8\xde\x74\x08\x17\x63\x3f\x0e\x82\x04\xca\x0c\x12\x9f\x17\x51\x98\xe5\x7a\x6a\x30\x68\x90\x86\x99\x57\xa4\x59\x01\x17\x20\x64\x41\xee\xa7\xa4\x30\x21\xe6\x49\x1a\xe6\x29\x0b\xe1\xf6\x6c\x4c\x93\x3c\x4d\x33\x27\x62\x3f\x09\xa3\x8c\x84\x29\xa4\x33\x7e\x40\xd3\xd0\xa7\x26\xc4\x61\x52\x60\x8c\x0b\xe0\x38\x8d\xbc\x30\xf7\x70\xe2\x44\x9c\x10\xbf\xa0\x84\xc1\x95\xdb\xac\xc0\x49\x50\x24\xa9\x09\x31\x4b\x71\x16\xf2\x1c\x38\xce\x59\x94\x53\x8c\xa9\x13\x71\x4e\xbd\x98\x31\x29\x63\xe6\x7b\xbe\x47\x02\xa3\x8c\x31\xa1\x7e\x98\xca\x3b\x23\x82\x30\xf6\xa2\x22\xe5\x4e\xc4\x24\xf0\x31\x0d\x53\xb8\x3b\x22\xe0\x3c\x48\x09\xcd\x8c\xa2\x08\xbd\x2c\xce\x33\xb8\x40\x3c\x0f\x8b\x22\x0d\x38\x71\x22\x8e\x49\xca\xc3\x3c\x06\x51\x14\x24\x4e\x69\x12\x19\x95\x47\xbd\x9c\xa7\x58\x5e\x5e\xe1\xa7\x38\x4a\xa2\x14\xbb\x65\x9c\xe6\x99\x17\xc9\x0a\x95\x24\xcc\x62\x4c\xfc\xd0\x84\x38\xc3\x49\x5a\x60\xc9\x40\x56\x44\x09\x89\x92\xc0\x89\x98\x07\x49\x1a\x25\x19\xc8\x2e\xe1\x05\x0e\x58\x6e\x94\x31\x2f\x52\x1e\xc4\x14\xae\x11\xf7\x69\x50\x90\x90\xfb\x4e\xc4\x5e\x91\xe1\x24\xcf\xa0\x01\x4d\x69\x96\x87\xa9\x91\x63\x12\x78\x19\xc3\x59\x06\x97\xb4\xc7\x2c\x4b\xb2\x28\x74\x2b\x2f\xe7\x09\xc9\x22\x70\x90\x30\x21\xa9\x47\x62\x23\xe2\x80\xc5\x01\x0d\x18\xbc\x23\x44\x9c\x45\x3c\xa0\x6e\x8e\xc3\x2c\xf5\x58\x92\x03\x27\x69\x1e\xe0\x22\xcd\x03\xa3\x4b\x47\x45\x42\x69\x0e\x88\xa9\x8f\x71\xe8\xa7\x6e\x8e\x13\xea\xf3\x10\x87\x04\x5c\x9a\x47\x51\x5e\x30\xb3\x83\x50\x1f\x67\x51\x04\x19\x3e\xc9\xd3\xc0\x27\xd8\x73\xc7\x0a\xcf\xf3\x49\x9c\x51\x79\xe7\x7b\x91\x12\xec\x1b\xcd\x2d\x2d\xc2\x24\x2e\x32\x55\xdf\x94\x17\x1e\xe7\x6e\xab\xc8\x22\xee\x79\x69\x01\x86\xef\xe7\x8c\xd2\x22\x33\x5a\x45\x1e\xb2\x38\xc1\x01\x20\x4e\x7c\x8f\xb1\x98\xb8\x45\xe1\x45\x19\x8b\xfc\x50\x5e\xef\xe2\x79\x3e\x25\x66\x07\xc1\x01\x49\x48\x22\xdf\xbd\x3c\xe6\xf1\x88\xc7\x6e\x51\x90\x38\x8d\x3d\x46\x21\xb8\x04\x51\x4e\x48\x51\x18\x5d\x9a\x70\x2c\xc4\x04\x22\x0b\x33\x12\x65\x09\x89\x9c\x88\x83\x9c\x64\x51\x5e\x80\x55\x84\x2c\x0b\x08\xe3\xb9\x31\x56\xf8\x3e\xf5\x72\x0c\x22\x4b\xf2\x24\x4c\xfd\xbc\x70\x22\x8e\x42\x8f\xc5\x7e\x18\x48\x07\x61\x45\xe4\xe7\xdc\x6c\x6e\x11\xf3\x58\x0a\x71\xdb\xcf\xe2\x38\x25\xcc\x1d\x36\x29\xce\x48\x96\x10\x19\xdd\x62\x9e\x33\xce\x23\x13\xe2\x84\xc4\x84\x64\x52\x64\x38\xa0\xc4\x0f\xfd\xd4\x89\x98\x91\xb4\xe0\x94\xc9\x38\x9b\x15\xd8\xf3\x23\xa3\x83\x30\x8a\x59\x14\x05\xc0\x71\x9a\x05\xc4\xf7\x3c\x77\x74\xcb\x48\x90\xd2\x34\xf6\x20\xce\x7a\x05\x4d\xe2\x04\x1b\xa3\x5b\x1c\x65\x21\x66\x20\x63\x2f\x0a\x83\x94\xfb\x6e\xab\xc8\x71\x42\x38\xc5\x09\x20\x8e\x78\x11\x12\x6c\x1c\xf3\xf2\x28\x49\xbc\x88\x80\x2e\xc2\x30\x0a\x59\x32\xe2\x79\x45\xe0\x71\x3f\x94\xb2\x0b\xe3\x18\x13\x8f\x30\xa3\x1d\x7b\x11\x63\x9e\xec\x99\x4f\xd2\x34\xc7\xa9\x5b\x79\x38\x61\x41\x86\x31\x84\xcd\x94\xe6\x24\xf7\x32\x23\xc7\x98\xfb\x71\x94\x79\xd2\x8e\x71\x80\x59\x1a\xba\xa3\x1b\x89\x03\x1a\xc7\x01\xd8\x71\x5e\x50\xce\xd3\x24\x31\x21\xf6\x83\xd4\x4b\xb3\x14\x7a\xc6\x71\x92\x06\x74\xc4\xdc\xfc\x04\x67\x5e\x96\x82\x52\xb2\x30\x4b\x42\x16\xf9\xc6\x78\xcc\x73\xca\x58\x00\x61\x93\xfb\x01\xa6\x2c\x73\x9b\x5b\x98\x26\x59\xc6\x82\x42\x8e\x0c\x91\xcf\xfd\xd8\x88\x38\xa2\x84\x47\x85\x0c\x56\x79\x94\x92\x94\x32\xb7\x28\xe2\x80\x16\x94\x70\x70\x90\x30\xe7\x45\x4a\xcc\xb1\x22\xa6\x2c\x8c\x7c\x39\xd2\x04\x3e\x8e\x49\x11\xb9\xad\x82\x06\x19\x8d\x29\x96\x99\x10\x2e\x3c\x96\xc6\xc6\xb0\x49\xb3\x2c\xf6\x88\x54\x1e\x66\x51\xe0\x27\xdc\x9d\xbb\x25\x5e\xca\x8b\xa2\x60\x32\x8b\x8c\x7c\xcc\x89\xd1\x2a\x58\x10\x7a\x51\xc6\xc1\xf3\x72\x4e\x49\x9a\x73\x77\xee\x96\xf2\x22\x61\x7e\x21\x47\x06\x92\x45\x71\x82\xcd\x79\x45\x14\xe3\x98\x16\x72\x08\xf3\x63\x12\xfa\xc4\xad\xbc\x8c\x91\xd8\xe7\x19\xc8\x98\x33\x12\x45\x38\x31\xca\x38\xc7\x34\x4a\xa9\x1c\x9a\x88\x30\x24\xd2\x9d\x04\x1c\x26\x22\x2c\x67\x71\x9e\x83\x83\x64\x39\xf7\x78\x8a\x8d\x61\xb3\x08\xe3\x3c\x28\xe2\x42\x0d\xba\x3c\xc7\xb1\xdb\x8e\xbd\xa8\xf0\xa2\x58\xe6\x0b\x31\xc1\x71\x54\xa4\x46\x97\xf6\x58\xe4\xc7\x79\x06\x0e\xc2\x48\x46\x13\xca\xdc\x23\x08\xc6\x7e\x91\x50\x2f\x50\x13\x77\x89\x97\x33\x23\xc7\x38\x8d\xb1\x97\xfa\x32\x1e\xfb\x38\x0b\x62\xec\x96\x31\xa1\x79\x1a\xc7\x45\x28\xad\xc2\x0b\xe2\x9c\x1a\xe3\xb1\x4f\x32\xc6\xd2\x18\xac\x22\xf0\xb2\x98\x04\x89\xdb\x41\xfc\x2c\xe1\x29\xf7\x40\x14\x38\xcc\x92\x94\xa7\x46\xe5\x05\x3e\xce\xa3\x38\x83\x9e\x25\x19\xf6\xbc\x3c\x70\xdb\x71\x90\x65\x61\x1e\xc8\xc4\x3b\x4b\x7d\x1e\x90\xd4\x38\x34\x89\x74\x85\x24\x09\x04\xab\x22\x8b\xc2\x98\x8b\xf0\xea\x8a\x15\x45\x96\x46\x05\x93\x83\x24\xcb\xa3\x82\x71\x23\xc7\x51\x16\x04\x38\xa1\x80\x38\x60\x41\x1c\x52\x1c\xab\x49\xd4\xb7\x8e\x63\xab\xed\x7b\xe1\xcf\x37\x3d\xa1\x6a\xbb\x06\xed\xe7\xce\x09\xd5\xbf\xdc\xec\x84\x6a\x88\xc9\x76\x4b\x07\x86\xe5\x88\xdb\xaf\x3e\x7a\xd3\xa5\x83\x88\x79\x09\xaf\x27\xdc\xfd\x34\xcb\x12\xcf\xb2\x74\x90\xa6\x51\xcc\xb8\x1c\x7e\x69\x90\x31\x16\x77\x53\x17\x07\x11\x3f\x8b\x78\xe1\xc7\x10\xc9\x0a\x9e\x04\x05\x15\x91\xcc\x04\xc9\xc2\xa0\x28\x42\x1f\xbc\x20\x2c\x70\xee\x47\xc5\xb6\xb3\xfa\x21\xf6\x78\x48\x64\xf0\x61\x39\x8f\x28\xc9\x2d\x4b\x07\x49\xea\x85\x11\x95\x06\x49\x52\x9f\x47\x19\x2e\xb6\x24\x82\x0b\xea\xe7\x89\xb4\xf9\x22\x0d\x70\x9a\x47\x96\x9e\x84\x29\xf7\xb2\x5c\xa6\x41\xd8\x8f\x39\xc1\x71\xb2\xcb\xd2\xc1\x6d\x9f\x23\xdd\xa6\x34\x2c\xc0\x79\xf6\xca\xaf\x4f\xb0\xbd\xf4\xeb\x13\x62\xaf\xfd\xfa\xc4\xb7\x17\x7f\x7d\x12\xd8\xab\xbf\x3e\x09\xed\xe5\x5f\x9f\x44\xf6\xfa\xaf\x4f\x62\x4b\x01\x58\xd9\x41\x28\x0f\x6b\xdc\x07\x2e\x9f\xcf\xe5\xf3\xe1\x61\x0f\x29\x03\x68\x6e\x3c\x02\x25\x9f\xcf\xe5\x73\x4b\x73\x02\xcd\x89\xb5\x39\x99\xcb\xe7\x96\xe6\x3e\x34\xf7\xad\xcd\xfd\xb9\x7c\x6e\x69\x1e\x40\xf3\xc0\xda\x3c\x98\xcb\xe7\x96\xe6\x21\x34\x0f\xad\xcd\xc3\xb9\x7c\x6e\x69\x1e\x41\xf3\xc8\xda\x3c\x9a\xcb\xe7\x96\xe6\x31\x34\x8f\xad\xcd\xe3\xb9\x7c\x6e\xd8\xd6\xb7\x65\xd1\x63\x69\x19\x26\xe4\x4c\x1a\x45\xbf\xe2\x1e\x6c\xb9\x95\x06\x61\x6a\x95\x4a\x5b\x30\xb5\xca\xa4\x1d\x98\x5a\x65\xd2\x04\x4c\xad\x72\xa9\x7e\x53\xab\x5c\x6a\xde\xd4\x8a\x4b\xad\x9b\x5a\x71\xa9\x70\x53\xab\x42\x2a\xdb\xd4\xaa\x90\x7a\x36\xb5\x3a\x93\x3a\x36\xb5\x3a\x93\xea\x35\xb5\x9a\x49\xd5\x9a\x5a\xcd\xa4\x56\xe7\xa6\xba\x83\xae\xa3\xbb\x5b\x5e\x87\x6a\xad\xa7\x5d\xd3\xff\xb9\x94\xb5\x87\x6d\xc7\xcd\x1f\xc1\x08\x5e\x2f\x9f\x0d\x41\xb6\x28\x14\x2d\xc9\x08\x11\xfc\x5c\xd6\xa7\x0d\xf4\xaa\xd1\xe8\x6b\x44\xde\x02\xa4\xb9\x96\x6b\x8b\x63\x2e\x71\xa8\xf3\x05\x7d\x1c\x70\x6a\xfe\x46\x15\xa8\x8f\x8e\xd0\x7f\x40\x35\x62\x3b\xf1\xba\xa4\xf3\x4e\x15\xaa\x37\xb3\xa6\xce\xf1\x66\xec\x2c\x9e\x02\x9b\x6b\x2d\xdc\xe7\xf1\x24\xd4\xac\x53\x05\x7b\x26\x8b\xff\xea\xc5\xab\xe7\x50\xa2\xb8\x2e\x07\xdc\x81\xa3\x03\x38\xd8\xf4\xfa\x0e\x75\xc1\x62\xd7\x09\x53\x09\x39\xef\x70\x31\x1f\x72\x31\x33\x71\x31\x1f\x72\x31\xd3\xb9\xe8\xc2\xc5\x43\x38\x4b\x25\x63\x5d\xa5\x96\x9a\x39\x1f\xb4\xda\xdb\xbb\x14\xdf\x6e\x35\x8a\xb7\xd3\x28\x6e\x35\x8a\xb7\xd2\x28\x9e\x75\x0a\x7c\xcf\xea\x2a\xdc\x5a\x61\xee\xb9\xaa\xd5\xad\x09\x09\x2b\x09\x77\xc1\x60\x1f\x73\xa2\xa9\xb4\xc6\x17\x8d\xaa\x14\xcf\x3b\x6c\xcc\x0d\x6c\xcc\x4c\x6c\xcc\x07\x6c\xcc\x3a\x6c\x74\x11\x46\x03\x7c\x24\x72\xea\x74\xa7\xda\xe1\xae\x50\x12\xb7\x6a\x8f\x5d\x6a\xff\xb9\x8c\x65\xe4\x32\x0e\xcc\x3d\xc8\xb9\x82\x74\x9c\x09\x97\x90\x38\xd2\x02\x89\xf5\x56\xe8\x1a\x56\x32\x80\x8d\x99\x45\x1f\x76\x5e\xc3\x8e\xf2\xd0\x46\x9a\xb9\x10\x5a\x19\xf7\x47\xae\x2e\x78\x1b\xca\x66\x12\x7c\x06\x35\xdb\x04\x1e\xa1\x49\x6f\x0f\x3d\xac\xbd\xb3\xf9\xe5\x7f\x20\x8c\xee\xa3\xc1\xb6\xe9\x21\x1f\xe2\xdf\x5a\x83\xe3\x6c\x88\x7f\xf7\x1b\x6f\xb1\x70\x81\x6f\xca\x05\x48\x71\x4b\x1e\xa4\x76\x86\x1c\x48\x4d\x0c\xe8\x9b\x91\xb6\xa3\xe2\xcf\xa5\x4d\xbd\xed\xa8\xf7\x73\x69\x62\xce\x5e\x13\x5f\x15\xc5\x9f\xa1\xbb\xa8\x98\xa9\xb2\xf8\xe2\x8b\xf9\x1c\x9f\x6c\x23\x7d\x9f\xcf\x45\x9b\xb9\x6a\x23\xbe\x9c\xcd\x1d\xc5\xf4\x67\x50\x4d\x5f\xa0\x4e\x25\x1d\xf8\x9c\xc9\xcf\xa9\xfa\x6c\x6f\x3e\x87\xe6\x82\x4a\x2a\x49\xc2\xe7\x4c\x7e\x4e\xd5\x67\x77\x49\xfe\x99\xac\xc9\xaf\x02\x8e\x1c\x57\xd8\x5c\x96\x97\xde\x93\xc5\x0f\xd8\xac\xae\xd8\xaf\x1e\x76\x6a\xf6\xcf\xb4\x5b\x24\x58\x3d\xea\x38\x2b\xf3\xc3\xdb\xd4\xa4\x41\xa4\x68\xce\xba\x34\xe7\x1d\x9a\xb3\x2e\xcd\xb9\x4e\x73\xb6\x0d\x4d\x2c\xfb\xc9\xd5\xd0\x20\xcf\x9b\x70\x39\x28\xd0\xba\xec\xff\xac\xbe\xb4\x42\x7b\x18\xb4\x0f\x05\x4d\xbf\x7e\x26\xcb\x70\xbb\x69\xca\x7e\x2a\xe0\x9a\xe6\xac\x4b\x73\xde\xa1\x39\xeb\xd2\x9c\xeb\x34\x67\x2d\x4d\x63\xd6\x39\x7e\x0f\x81\x99\xd7\x1f\xa1\xfa\xd2\x8f\xf6\xc3\x54\x3f\x82\xf3\xfe\x58\xba\x8e\x51\xfd\x08\xc1\xe0\xc7\xd2\x16\x42\x3f\xc0\x45\x09\x02\x66\x36\x6f\x58\x34\x39\xa5\x04\x14\x04\x67\x6d\x5f\x64\xb8\xa8\xb0\x1e\x2e\x66\xdb\xc4\xaa\x96\xac\xf8\x57\x48\xc4\x4d\xb3\x02\x52\xd9\xcc\x44\x30\xbb\x11\xc5\x1f\x8d\xa1\xa7\x4f\xf1\xc7\xd2\x44\xf1\xc7\xf2\x26\x14\xcd\xc1\xae\x4f\xf1\x67\x23\xc5\x9f\x4d\x14\xcd\xd6\xd6\xbf\xbc\xc2\x42\x12\x26\x2f\x6a\xb7\x07\x40\x2b\x77\x30\x0f\x52\x47\xa5\x7d\x19\x1e\x81\x45\xa2\xb3\x58\xe3\xda\x8e\xcd\x3f\x5f\xe4\xac\xe2\xe8\xca\xfd\xa6\x2f\xfe\xe0\x7d\xd3\x68\xdf\xf0\xba\x79\x66\x62\x1b\x06\xa0\xc2\xd4\x06\x5e\x6c\x0b\x53\x1b\x78\x87\xe6\xa6\x36\xf0\x0a\xcd\x4d\x6d\xe0\x95\x7c\x92\xcf\xe1\xfa\x8e\xb9\xed\xfe\x0e\x78\xa7\x9f\xe4\x33\x80\x92\xa2\xe3\xba\xe4\xf2\x81\xd0\xac\x37\x81\x08\x4c\x99\x89\x47\x98\x52\xc8\x4c\x3c\xc2\xec\x45\x6a\x6a\x03\x93\x17\xa9\xa9\x0d\xcc\x93\x30\x53\x1b\x98\x26\x19\xdc\x66\x20\xfe\x60\xda\x65\x22\x4d\xbd\x22\x56\x61\xc0\xc4\xcd\x44\xca\x41\x58\xd6\x7e\x3b\xe2\x48\x69\x54\xc3\x64\xe7\x56\x2f\x2b\xd1\xe6\x0c\x21\x33\x78\x02\xf6\xcf\x06\xd9\xc0\x93\xa6\x18\xc5\xe4\x09\xd8\x3d\x93\xcc\x3e\xf1\x74\x6e\xd9\x90\xd9\x3e\x1e\x6d\x96\x51\x12\x04\x11\xa5\x43\x82\xb8\x25\x08\xe2\x49\x15\xc1\x4e\x24\x48\xc7\x09\x6a\xf3\x92\x92\x20\x81\x10\x3b\x24\x48\x5a\x82\x64\x56\x8f\x4b\x13\x80\xd7\xc2\xeb\x38\x41\x6d\x26\x53\x12\xf4\x05\xc1\x7c\x48\xd0\x6f\x09\xfa\x82\x56\xae\x08\xfa\x23\xee\xd0\xc7\xa3\xcd\x7d\x4a\x82\x81\x20\xc8\x87\x04\x83\x96\x60\x20\x68\x71\x45\x30\xd0\x09\xf2\x71\x82\xda\x6c\xa9\x24\x18\x0a\x82\xc5\x90\x60\xd8\x12\x0c\x05\xad\x42\x11\x0c\x75\x82\xc5\x38\x41\x6d\x7e\x55\x12\x8c\xe0\xa5\x62\x48\x30\x6a\x09\x42\xf6\x7e\xa6\x08\x46\x9d\x97\x88\x71\x82\xda\x8c\xac\x24\x18\x0b\x82\xb3\x21\xc1\xb8\x25\x08\xaf\x4d\x6a\x4c\x16\xf0\xae\x24\xe0\x93\xcf\x5e\x7c\xb9\x14\xe7\xf6\x2e\xc5\xc1\x22\xb9\x57\x37\x9b\x09\x64\x50\x87\xc5\xf7\x6e\xfb\x5a\x1c\x33\x19\xfc\x4f\x79\x31\xce\xc9\x72\xf1\x81\xaf\x64\x95\x5f\x54\x2d\x91\x4f\x0e\xd2\xb2\x12\x09\x4a\x8e\x18\xec\xcf\x4e\x79\xb1\x5c\x71\xb5\x9d\x7a\xa0\x35\xed\xac\x89\xb6\x76\x57\x2d\x5f\xfb\xe4\x36\x2e\xe2\xf9\xbd\x5e\xc1\xa3\xf3\xd9\xd4\x07\xb9\x8f\xb0\x47\x82\x23\x5f\xd5\x29\xfe\x72\xba\xc9\x7a\x54\x29\xc4\x64\xd7\xd3\x4d\xa2\xc9\xc8\xe9\xa6\xce\xb6\x86\xc1\xe9\xa6\x10\x93\x2f\xa7\x9b\x6e\xfb\x74\x93\xd0\xca\x76\xa7\x9b\x8c\xca\xe9\x9c\x6e\x92\x0a\x72\x9e\x6e\x92\xe7\x68\xb7\x3c\xfd\xed\xff\xae\xcf\x33\xf1\x45\x76\x90\xb2\x35\x8f\x82\xde\x83\xf3\x3c\xec\x83\x7e\xb8\x78\x9f\x17\xbd\x1f\xb3\xf2\x62\xc6\x57\xbf\xc9\x91\x28\x8d\x55\xf8\x2e\x38\x94\x0f\x24\x63\xf0\x59\xe7\xe7\x5f\xe1\xe8\xd4\xcf\x5b\xdd\x09\x04\x9b\x67\x4e\xa0\xeb\x0d\x9c\xf6\xdb\xf8\x51\xa8\xa3\x23\xf4\x82\xaf\xce\x61\x14\x3d\x99\x2d\xcb\x8c\x23\xdc\xbf\x36\x45\x34\x7f\x71\x82\xbb\x67\x97\xc2\x78\x8a\x82\x64\x8a\x02\x3c\x45\xbe\x3f\x45\x24\x9c\x22\x1c\x4f\x51\x32\x45\x08\x6b\x5b\x8d\x42\x3a\x45\xa1\x37\x45\x01\x99\x22\x3f\x98\x22\x12\x4d\x11\xa6\x53\x84\xbd\x29\x22\x3a\x5c\x32\x45\x21\x9e\xa2\xc0\x9f\x22\x3f\x9c\x22\x12\x4f\x11\x4e\xa6\x08\x0b\xfc\x1a\x5c\xe4\x4d\x51\x48\xa6\x28\x08\xa6\xc8\x8f\xa6\x28\xf2\xa7\x28\x0c\xa7\x28\x88\xa7\xc8\x4f\x34\x40\x1f\x4f\x11\xf1\xa7\x08\x87\x53\x14\x4f\x11\x8a\xc8\x14\x85\xc1\x14\x05\x70\xb5\x80\x0e\x28\x38\x21\x53\x84\x83\x29\x8a\x04\x20\x9e\xa2\xd0\x9f\xa2\x20\x9c\x22\x3f\xd6\x00\x49\x32\x45\x04\x4f\x11\x16\x24\xa7\x08\x11\x3a\x45\xc4\x9b\x22\x2c\xd8\x91\x60\x6f\x1d\x72\x25\x66\xb9\x92\xae\x5c\x05\x17\x42\x8e\xa2\xdf\x44\x7c\x9e\x22\x14\xea\xdc\x2a\xc2\xa2\x5b\x82\x5b\x60\xc8\xd3\xb9\xf4\x95\xe0\x04\x57\x02\x20\x9a\x22\xbd\xbb\x38\x92\xf2\x10\x02\x06\xee\xfd\xae\x22\x84\x42\x85\x80\x85\xfc\xfc\x58\x0a\x36\x0c\x7b\xf2\x0a\x3c\xa5\xad\x50\x6a\x3f\xd0\x29\x08\xd5\x08\xd3\xf0\x85\x4a\x23\xa9\xf6\x50\xd7\xa1\x50\x81\xb0\x07\x61\x17\x42\x87\x42\xb0\x75\x56\xd3\xb9\x11\xea\xf2\xfc\x72\xce\xe0\x9a\x14\x91\x54\xae\x67\x65\x31\xb8\xe1\x09\xbc\xe0\x87\xd3\xbf\xbc\x7a\xf2\xc3\x63\x79\xa7\x94\x90\x18\x99\x22\xe8\xbc\x90\x10\x15\x16\xa9\xd4\x04\xd2\x55\x96\x8a\x95\x3a\x89\xb2\x5e\x10\x08\xd5\xe9\xbf\xfa\xee\xf9\x6b\xbe\x46\x6c\x91\xab\xda\xe8\x17\xa0\x52\x79\x9f\x86\x81\x0f\x01\xff\x97\x17\x5d\x7d\xf6\x52\x4a\x6f\xe3\xdd\x87\x97\x11\x4a\x3c\x6f\xda\x7f\x56\xbf\x2b\x48\x10\x03\x00\xe9\x00\x50\xcf\x23\x03\x10\x5f\x03\x19\x3e\x0d\xf4\xa7\x06\x02\x61\x97\x00\x31\x10\x88\xba\x4c\x9a\x40\xe2\x5e\x3f\x0c\x84\x68\x87\x91\x21\x8a\xa4\x4f\x65\x88\x82\xe9\x20\x26\x80\xb4\x2f\xad\x21\x48\xd6\x23\x33\x00\xc8\xfb\x5d\x19\x82\x70\x0d\x64\x48\xa1\xe8\x72\x39\x6c\x4e\x5d\xad\x31\x1d\xd5\x07\xa1\x23\x04\x7c\x3a\x62\x55\x41\x9f\x88\xc1\x2e\xa8\xdb\x6e\x22\x3a\x6a\x98\x31\x75\x19\x26\xa5\xa3\xfa\x4e\xe8\x88\xbe\x59\x9f\x09\x83\x49\xf4\xc9\x0c\x39\xc9\xe8\xa8\xc6\x73\x3a\x62\x35\x9c\xba\xad\xbb\xe8\xd3\x30\x68\xde\xaa\x2e\x15\x25\xb0\x59\x90\x44\x7b\x6a\x51\xa6\xdf\x01\x31\x52\x0f\xba\x58\x4c\x7d\x0c\x75\x10\xa3\x4d\xe8\x7c\x1a\x9e\xc7\x5d\x36\x1c\xbe\x81\x1d\xe6\x9f\xf4\x39\xb5\x06\x0a\xec\xd0\x68\xda\xed\x8c\xc1\x2a\x3a\x9d\xb1\xc6\x09\xec\xb0\x5f\xde\x03\xb1\x85\x0a\x6c\x0e\x05\x74\x54\x14\x98\x8e\x8a\x82\xd0\x51\xd5\xfb\xd4\xad\xb6\xa0\x87\xc2\x16\x2b\x5c\xe2\x8e\xa8\xcb\x84\x63\x3a\xa2\x0c\x4a\x47\x24\x99\xd0\x51\xd3\x62\xd4\xad\xd0\xb4\x2f\x6f\xc3\xe0\xd1\xa7\x32\x04\xc9\xa9\x4b\xa5\x9c\x8e\xb8\x50\xd1\xd7\xa8\x7e\x47\xd5\x74\x2c\xcb\x08\x3c\x8f\x06\x1e\xb6\x46\x10\x05\x63\x4d\x33\x1a\x05\xda\x22\x48\x4d\xc4\x33\x11\x09\xba\x44\x8c\x30\x61\x17\x8f\x91\x99\xa8\x8b\xc7\x08\x13\xb7\x30\x06\x2a\x7a\xb0\x35\x36\x4f\xfa\x24\x0c\x48\x58\xbf\x3b\xf6\x84\x43\x11\x32\x20\xc9\x3a\x82\x35\x00\xe4\x2d\x80\x35\x80\x48\x16\x0c\x8d\x8b\xbe\x56\xac\x79\x97\x53\x98\x98\x8e\xf4\x82\x50\x97\xb4\xfd\x3e\x09\x93\x6d\xd0\x9e\xde\x4d\xb6\x41\xc7\x05\x1e\xd1\x11\x43\x8d\xe9\xb8\xa1\x52\x3a\xa2\x94\x84\x3a\x94\xc2\xa8\xdb\x97\xd2\x3e\x07\xf6\x40\xe2\x74\x95\x9c\x8e\x18\x31\xef\xcb\xd4\x1e\x4f\xac\x16\xa4\xbf\x80\x18\x9e\xe2\x2d\xdc\x1e\x93\x2d\x9c\x09\xfb\x5b\x38\x3e\x0e\xb6\xb0\x67\x1c\x3a\x5d\x1f\x47\x63\x2e\x89\xe3\x91\x60\xa8\xa7\xe0\x66\x0c\xc9\x58\xb8\xc4\x6c\xcc\xef\x71\xba\x45\xb4\xc4\xd9\x58\x20\xc3\xf9\x16\xc1\x12\xf3\x2d\x42\x19\x2e\xfa\x1a\x32\x9a\xcb\x58\xa8\xc0\x78\xcc\x43\x31\xd9\xc2\x41\xb0\x3f\xe2\x65\x38\xd8\x26\xb0\x85\x5b\x84\x1d\x1c\x39\xa3\x1b\x8e\xb7\x08\x4b\x98\x6e\xe1\x8b\x38\xd9\xc2\xeb\x31\xdb\x22\x9a\xe2\x74\x2c\x82\xe1\xcc\x15\xc2\x70\x3e\x16\x16\xf8\x16\x61\x14\x17\xbd\x08\xb5\x4b\xaa\x82\xbd\xc0\x12\x8c\xcc\x2c\x93\x8e\x54\xb0\x35\x45\x91\xb8\x4d\xd8\x03\xed\xb9\x67\x78\x1e\xf6\x94\x33\x84\x88\x3a\x42\x33\xd1\x88\x3b\x10\xe3\xc3\xb1\x3d\x37\x69\xa9\xd8\x32\x93\xba\xa7\xb6\xac\xa4\xe5\x62\xc8\x67\xd6\x93\xe6\x10\x22\xef\x48\xcb\x96\x9a\x00\x06\x4b\x5a\xa2\xda\x9a\x25\xe0\xea\x1e\xa6\x63\xec\x13\x6a\x37\x14\x9f\x8e\x19\x4a\x40\xc7\x14\x1d\x52\x77\xe7\x23\xea\x36\xa5\x58\x7b\x3e\x7c\x4a\xa9\x5d\x74\x09\x75\x89\x8e\xd1\x31\xf3\x4a\xa9\xdb\x09\x32\xea\x36\x9d\x9c\x8e\x19\x06\xa7\x63\x4e\x50\xd0\x31\x13\xef\xa4\x15\x16\x23\xc0\x23\xee\x8a\xc9\x88\x85\x62\x7f\x34\x64\xe0\xc0\x69\xa9\x38\x1c\x75\x78\x1c\x8d\x46\x0d\x1c\xbb\x22\x31\x1d\xf5\x44\x9c\x8c\x86\x0c\xcc\x1c\xde\x88\xd3\x91\x70\x81\xb3\xd1\xa8\x85\xf5\x70\x60\x20\xc1\x47\x62\x2f\x2e\x46\x43\x92\x4a\x2d\x9c\xdd\xc4\x4e\xbf\xc2\x64\x3c\xb4\xf8\x8e\xc8\x81\x83\x11\xb7\xc6\xe1\x68\x6c\xc1\x91\xd3\x81\x71\x3c\x1a\xdb\x30\x1d\x09\x3e\x38\x19\xf5\x40\xcc\x46\xc2\x00\x4e\x47\x63\x20\xce\x46\x43\x01\xce\x47\xe3\x11\xe6\x8e\x60\x87\x8b\x6e\x34\xda\x25\x7f\xa0\x9e\x24\x69\x8e\x2d\x75\xf6\x89\xbd\xc0\x92\x4a\xd4\x4c\x1b\x9e\xfb\x2d\x86\xc0\x6c\x88\x81\xdd\x88\xc2\xae\x44\xcc\x39\x44\x93\x1c\x9b\xc8\xc7\x5e\x27\xfd\xb3\x8f\x9f\xf5\x8a\x8a\x39\x83\x68\x75\x6b\xce\x1f\xe4\x73\x73\xee\xd0\x8a\xcf\xb6\x82\xd2\x8a\xc7\x80\x23\xd7\xbc\xd4\x92\x39\xd4\xe6\x6d\xce\x1d\x5a\x05\x5b\xfa\xef\xd4\x2f\xa6\xf6\xee\x11\x3a\xc6\xbc\x4f\xc7\x04\x10\x50\xb7\x8a\x43\x3a\xd6\x85\x88\x5a\xed\x27\xa6\x63\xc6\x47\xa9\x4b\x7e\x49\x97\xb8\x2d\x89\x70\x58\x47\x4a\x5d\xda\xcb\xe8\x98\xf5\xe5\xd4\x6d\xbf\x9c\xba\xdd\xaf\xa0\x63\x1e\x82\xbd\x11\x17\xc1\x78\xc4\x0b\x31\x19\x75\x43\xec\xbb\x46\x0a\xa7\x85\xe3\x70\xd4\x45\x70\xe4\x8d\xe9\x09\xc7\xa3\x91\x0c\xd3\x51\x6f\xc1\xc9\x68\xb8\xc0\x6c\x34\xe0\xe1\x74\x24\x66\xe2\x6c\x34\x6e\xe0\x7c\x24\x2c\x61\xee\x88\x4b\xb8\x70\x86\x0d\x99\x3d\xb8\xfb\x80\x47\xfd\x12\x13\xbb\x63\x62\x7f\xc4\xed\x71\x30\x62\xf8\x38\x1c\xf5\x1d\x1c\x8d\x47\xb7\xd8\x11\xde\x30\x1d\x77\x9e\xc4\x19\x3f\x30\x1b\x8d\x7f\x38\x1d\x0d\xa2\x38\x73\x06\x11\x9c\x8f\x46\x29\xcc\x47\xc2\x14\x2e\xba\x71\x64\xb7\xe4\xc1\x18\x53\x6a\x7e\x6d\x2b\x24\x0d\x37\xc6\x94\xe1\xbe\xb6\x5d\xc3\x98\x31\x28\x00\x98\x4f\x31\xe6\x0d\x4d\xce\x67\x78\x1e\xd5\x08\x6c\x00\x71\xcb\xa0\xe1\xa9\xae\x73\x5b\xca\xd0\xf2\x67\xc9\x19\xda\x1e\x1a\x28\xa4\x2d\x83\x66\x16\xb2\x0e\x80\x69\xe0\xb0\xfa\x1e\xd7\x95\x63\x40\x5d\x74\x84\x63\x9e\x73\x70\xb5\xc7\x74\x44\xb8\x84\x7a\x36\xc3\xf1\xa9\xdb\x70\x02\xea\x32\x9c\x90\x8e\xd8\x45\x44\x47\xa4\x16\xd3\x11\xd3\xa3\x74\x44\xb5\x09\xb5\xc9\x9d\xd1\x11\x9d\xa6\xd4\x6d\xb5\x19\x1d\xb1\x9a\x9c\x8e\x68\x8e\x53\xb7\xe1\x16\xd4\x65\xf6\xd8\x73\xba\x2d\xc6\x9e\x55\xaf\x98\x8c\xf9\x34\xf6\xc7\x7c\x12\x07\x23\x5e\x8d\xc3\x31\xa7\xc0\xd1\x58\xe4\xc0\xf1\x88\x6f\x37\xe3\x9e\x55\x8d\x38\x19\x73\x20\xcc\x46\xe2\x23\x4e\xc7\x22\x08\xce\x9c\x11\x0a\xe7\x63\x11\x06\x73\xfb\xe0\x5c\x8c\x44\x08\xc8\x0f\xdc\xba\xc2\x23\x96\x86\xc9\x88\xa7\x63\x7f\xcc\x99\x71\x30\xe6\xac\x38\x1c\x0b\x55\x91\x3d\x14\xe1\x78\x2c\x58\x60\xea\x76\x97\x64\xcc\xe1\x31\xb3\x06\x0b\x9c\x8e\xf9\x32\xce\x46\xc2\x05\xce\x9d\xc1\x12\xf3\xb1\x50\x86\x8b\x5e\xc0\xd9\x25\x2b\x50\x6c\x53\x53\x14\xa9\x71\x9a\xf2\x02\xd9\x96\x98\xfb\xec\xb7\xcf\x89\x09\x77\xd0\x4a\xc4\x88\x3f\xd4\xfb\x63\xca\x0a\x9a\xa7\x43\xdc\x71\xc7\xa0\xad\xa3\xa2\x31\x1b\xd0\x98\x1a\x22\x66\x35\x59\x23\xcb\xa9\x32\x50\x53\x06\xa0\xc9\x6a\xf8\x3c\xd7\xd0\x0e\x9f\xf2\xa6\xaf\xc3\x67\x45\x47\xca\xa6\x9e\x3a\x95\x84\xa9\x5b\x49\x84\x5a\x7a\xe4\x53\x97\x76\x02\xea\xea\x4f\x48\xdd\x56\x17\x51\xb7\x65\xc4\xd4\x2e\x0f\x4a\x5d\x76\x91\x50\xbb\x3d\x33\xea\x56\x7d\x4a\xdd\x3a\xcc\xa8\xc5\xa6\x72\xea\x56\x11\xa7\x2e\x9b\x2a\xa8\xdb\x94\xb1\x37\xe2\x47\x18\x8f\x18\x1f\x26\x23\x9e\x8a\x7d\x87\x01\xe2\xc0\xe9\xa7\x38\x1c\x71\x45\x1c\x79\x23\x31\x28\x76\xfa\x5c\x93\xc1\x5a\x78\x4f\xac\x51\x9b\xd9\xbc\x15\xa7\x23\xa1\x0d\x67\x8e\xb8\x88\xf3\x91\x18\x82\xf9\x88\xcf\xe2\xc2\x19\xdc\xc4\x88\x6e\x61\x1c\x3b\x4d\x09\x13\xa7\xd3\x62\x7f\xc4\x2f\x71\x30\xe2\x98\x38\x74\x78\x26\x8e\x46\x62\x0d\x8e\x47\x83\xd5\x88\x27\xe1\x64\xc4\x47\x31\x73\x04\x00\x9c\x3a\xa3\x16\xce\x9c\xa1\x05\xe7\x36\xff\xc7\x7c\xcc\x85\x8b\x6e\xe8\xd9\x7d\xe8\x36\xd8\x48\xcd\x6a\xe0\x61\xc3\xd0\xad\x52\x0d\xc3\xa0\xad\x90\x9a\x9a\x05\x4d\x92\x63\x7a\x1a\x5a\xba\x1f\x49\x94\x86\x31\xba\x4d\x99\x86\x4f\xa9\xd6\x01\xd3\x30\xdd\xf4\x7d\xd8\x94\x69\x46\x3e\x7c\x9a\x6a\x9d\x30\xbd\xaa\x6b\x79\x9c\x61\x98\x96\x72\x1b\x62\xe5\xad\xdc\x4c\x2f\xe9\x5a\xe6\x3b\xec\xa9\x4b\x0c\x98\x9a\x85\x4a\xa8\x4b\xbf\x3e\x75\xf5\x31\xa0\x0e\xc3\x09\xa9\x4b\x78\x11\x75\xf5\x24\xa6\x36\xf1\x50\xea\x30\xab\x84\xba\x54\xcd\xa8\x4b\x23\x29\x75\x18\x42\x46\x6d\x66\x9e\x53\x97\x25\x73\x6a\xb6\xd8\x82\x3a\x94\x8c\x3d\xa7\x96\x31\x76\xba\x2b\x71\xfa\x2b\xf6\x9d\xbe\x82\x03\x97\x3b\xe0\xd0\xe9\x4a\x38\x72\x3a\x04\x8e\x5d\x11\x41\x8d\x37\xc6\x47\x89\x33\x5a\x60\xe6\xf2\x18\x9c\x5a\x82\x06\xce\x6c\x41\x36\x77\x7a\x2e\xe6\xce\xa0\x80\x0b\x6b\x44\xc4\x9e\x53\xeb\xd8\xe9\x88\x98\xb8\xbd\xdb\xb7\x58\x1a\x0e\x9c\x8e\x86\x43\x97\x0b\xe3\xc8\xea\x87\x38\x76\x46\x06\x4c\x9d\xde\x8f\x13\xa7\x2f\x62\x66\x09\x56\x38\x75\xba\x1b\xce\x5c\xd1\x01\xe7\x56\x2f\xc6\xdc\x19\x39\x70\xa1\x05\x87\x5d\xc6\x54\x2a\x06\x78\x62\x40\xd8\x08\x67\x18\x8f\xef\xb7\x8b\x1b\xc3\x70\x2c\xdb\x0d\x03\xb1\xc2\x67\x78\x14\x4a\x7c\xc4\xc8\x47\xd4\x3c\x34\x05\x61\xc5\x89\x79\x9c\xa1\x9e\x99\xff\xa4\xe9\xb7\x29\x04\x4b\x3e\x4d\x8f\xd2\x06\xa9\x81\xcf\xec\xbe\x3c\xec\x31\x0c\xbf\x66\x3b\xe1\x8d\x10\x0d\x6d\x0a\xc5\x84\xe1\x51\xbd\xa8\x64\xed\xb9\x7c\x8c\x5d\x32\x55\x30\xc4\xa5\x7f\x05\xe3\xbb\x74\xad\x7e\x0f\x5c\xc2\x56\x30\xa1\x5d\xac\x0a\x22\x1a\xed\x73\x6c\x31\x2d\xf5\x98\xba\x24\xaa\x60\x12\x9b\x96\xd4\x73\x66\xb7\x52\x05\x91\xba\xec\x51\xc1\x64\x66\x95\xab\xa7\xb9\xcb\x8c\x14\x0c\x77\x99\xa8\x82\x29\xec\x1e\x5a\x67\xc4\x46\xc7\xc6\xae\x1e\x60\x62\x11\x32\xf6\x6d\x16\x87\x03\x17\xb3\x38\x74\xa9\x05\x47\x2e\x61\xe0\xd8\xd1\x45\x5b\xfc\x4d\xec\x2a\xc4\xcc\x65\xa9\x38\x75\xc6\xc3\xcc\xe5\x51\x38\xb7\xdb\x37\xe6\x36\xa3\xc3\xc5\xb8\x77\xb5\x2f\x37\x56\x08\xec\x8e\x05\x98\x8c\x1b\x1c\xf6\xc7\xbc\x0f\x07\x4e\xef\xc3\xe1\x78\x10\xa8\x95\xed\xec\x6e\x3c\x1e\x94\x30\x1d\x0f\x6e\x38\x19\x8f\x06\xb5\x39\xb8\xbc\x4c\x1a\x85\xf5\x69\x36\x16\xd6\xa4\x61\x38\xf8\xe4\x63\x11\xa7\x36\x12\xa0\xa2\x8d\xec\xf2\xa3\x5e\xd7\xe0\x19\x5b\xbf\x5f\xa3\x6a\xc6\x2a\xb4\xe6\x73\x9e\x55\x50\x8f\xe8\xd5\x77\xcf\x5f\xa3\x72\x71\x51\x5f\x13\xd1\x54\x34\x78\xf6\xed\xab\xde\xc5\xc5\xed\xc1\xc4\x29\x6a\x37\xfe\xc3\x05\x8a\xea\x0b\x7c\x56\x5f\xa6\x7a\x43\x4f\xfd\x2a\x01\xe4\x97\xfa\xb3\xf8\x32\xd5\xfa\xd3\xe7\x5c\xab\xaa\xf4\xfd\xa3\x57\xb2\x30\x16\x92\x85\x5f\xdc\x77\x54\x09\xe8\xe6\x82\x2a\xf9\x45\xab\x92\x72\xd3\x2b\xaa\xdc\xa5\xf5\xde\xf3\xeb\xa6\x04\xd8\x7b\x7e\x6d\x28\x7d\xf7\x9e\x5f\xd7\x75\xf5\xde\xf3\x6b\x73\x59\x3d\x41\x43\xaa\x28\x8c\x50\x5a\x56\x6b\xc4\xb2\x6c\xb9\xca\xcb\xc5\x19\xaa\x96\xe8\xc5\x09\x36\xe2\xfd\xae\x84\x52\x40\x6f\xfa\x35\x90\x4d\x77\x87\x84\x91\xfd\xee\x90\x16\xdd\x8b\xa5\x40\xf8\xe2\x04\xbf\x29\xdf\xa2\x03\x84\x0d\x35\x4a\x15\x5d\x59\x9e\x7f\x52\xf7\xee\x4d\xdb\x5e\x95\xe3\x13\xff\x99\xf8\x18\x1d\x68\xa8\xa1\x0e\xdf\x1e\xba\x3b\x40\x6c\x28\x58\xfa\xed\x7a\xcd\xcf\xd3\x39\x47\x38\x42\xeb\xcb\xf4\x3d\xbf\x36\x88\x7f\x7d\x99\xfe\xc8\xaf\xd7\x8d\x0a\xda\xef\x76\xa1\x2c\x5e\x01\x90\x14\x4d\xfd\xe5\x21\xc2\x51\xf3\xcd\x7e\xc5\xca\x09\x54\x9c\x52\xfc\x98\x05\xb9\xae\xb1\x2b\x5e\xde\x28\xa4\x6f\x15\x53\x46\xbc\xee\xab\x5b\xd2\xb2\x7a\x05\x55\x51\x8e\xb5\x22\x28\x0d\x5e\x1b\x4a\x69\x50\x01\x35\x1a\x14\x19\xb6\x31\x59\x0d\x09\xec\x56\xd3\xa5\x53\xac\x96\xe7\x10\x60\xe6\xbc\xa8\x10\xa1\xe0\x19\x82\xb2\xb9\xa1\x14\xce\x9b\x49\x89\x8e\xe4\xdd\x10\x1e\x14\x70\xac\x8d\x6b\x32\x79\x71\x42\x94\x0d\xee\xa1\xfd\x46\x02\x7b\xe8\x4f\x88\xd0\xb7\x50\xe3\x11\x6c\xab\x44\x7f\x82\x3b\x2e\xb6\x66\x6f\x55\x9e\xcd\xb6\xe7\x2f\x80\xf2\x9d\x2d\x93\x7b\x1d\x2e\x09\x85\xc7\x92\x57\xb4\x8f\x48\x60\x61\x78\xcf\xc0\xf1\x80\xac\xa9\xb2\xbf\xe8\x40\xb9\xc8\x38\xe2\x2c\x9b\x29\xb3\x43\xe5\x1a\xb1\x8b\x8b\x79\xc9\x73\xa1\x4b\xb6\x40\x7c\x73\xc1\x16\x39\xcf\xeb\xba\x8c\x10\xde\xa7\x46\x6c\x42\x04\x0a\x4d\xc6\x16\x28\xe5\x28\x5d\x2d\xdf\xf3\x05\x2a\x17\xd5\x12\x51\x59\x14\x78\x8d\xd6\x19\x9b\x4b\xf4\x12\xe5\xda\x8c\xed\x6a\x56\x66\x33\xc4\xe6\xf3\xe5\xd5\x1a\x50\x0b\xbc\xd5\x52\xa0\xbd\x5c\xf3\x1c\x5d\x95\xd5\x6c\x79\x59\x49\x06\xd7\xe5\x72\x31\xc4\xa2\x04\x0d\xe5\x35\x27\xed\x97\x87\x0f\xd5\xb5\x32\xed\x4f\x22\xa0\xf8\xd8\x24\xb9\x8e\xe5\x62\x69\xb9\xb1\xdb\x70\x15\x5a\x08\x62\xed\x67\x88\x59\x93\x52\x2a\xf1\x6b\x24\xb4\xef\x9b\x55\x65\xeb\x47\xac\xf7\x23\x7e\xab\x0a\x7b\xfe\xaa\xff\x04\x97\x02\x0c\xae\xda\x31\x44\xc0\x13\x59\xf8\x12\x95\x8b\x0f\x7c\xb5\xe6\xf6\x28\x58\x2e\x3e\xbc\xea\x05\xc2\xce\x4f\x5b\x0d\x10\xd8\x31\x40\xb4\xd8\x74\x89\xad\xdf\xe0\x50\x18\x74\x1f\xfb\xc7\xce\x84\x43\xfb\x85\x2f\xb2\xd5\xf5\x45\xb5\xc3\x55\x80\xaa\x62\xed\xf2\xa4\x69\xd7\x02\x4f\xbb\x21\xdf\x5a\x42\x37\xe7\x9f\x83\x6a\x2b\x11\x57\xed\xde\x13\x37\xe5\x69\x2d\x48\x53\xd2\xf1\x1f\xbc\xd2\xf3\xb4\x2e\x73\x73\x40\xaa\x5d\x8d\xd5\xd7\x81\x04\x5b\xf5\xc1\xe0\xe6\x2c\x43\xf6\xf1\xc3\xa2\xac\x4a\x36\xd7\x4b\x5f\x75\x61\xf8\x26\x9b\xb1\xc5\x19\x7f\xfa\xb2\x2d\x8b\x2a\x2b\x8f\x79\x1b\xaf\x90\xff\xeb\x9b\xb4\xb9\x8d\xbc\x9f\x1a\xde\x58\x8b\xc2\xda\xe6\xe5\x53\xbd\x0d\x01\x3a\xbe\xfa\xdb\xae\x0d\x95\xbc\x79\x45\x21\xfe\xbf\x25\x6f\xd0\x26\x54\x7f\xc6\xca\xb4\xae\xab\xda\x64\xf9\x30\xf0\x28\xf9\x51\x7a\x15\x7c\x1e\xbf\xb6\xcd\x30\x12\x19\xf3\x09\x40\x67\xbb\xf6\xa2\x31\x0c\xdd\x4e\x2c\xb0\xab\x2e\xec\x4a\xc1\x1a\x99\x7c\xcc\xcb\x75\xc5\xe7\x8d\x15\x9b\x31\x16\xd0\xf9\xed\x52\x0b\xea\x0e\xd0\x85\x18\x68\x65\xa9\xb5\x37\xe5\xdb\x37\x93\x89\xe2\xf6\x5d\x1b\xae\x45\x22\xd9\xbc\xba\xc0\x77\x28\xab\x6d\x12\x8d\x21\x60\xf7\x1c\x69\x65\x93\x54\xcf\x93\xe6\x35\x1b\xc5\x78\x00\xff\xf3\x22\x5f\xa2\xf5\x15\xbb\x90\xe9\xc7\x9c\xad\x2b\x69\x0c\xc3\x10\x5e\xb9\x55\xd6\x63\xb6\xab\x30\x97\xe3\x57\x06\x1b\x86\x8a\xe2\xbb\xba\xfa\xc0\x35\x6e\xcd\x05\x6f\xe2\xea\x37\x09\x29\x23\xa1\xcb\xf0\x46\x56\xa1\xe5\x65\x35\x88\xc0\x4d\xc8\x75\xab\xac\x13\x72\xed\x3a\xeb\x0c\x19\xef\xf9\xb5\x2c\x01\x1d\x05\x47\x3e\xd1\x9f\x94\x1f\x2c\x0f\xb4\xba\xd1\x91\xb1\x6a\xf4\x11\x7a\x25\x2c\x50\xbd\x04\xac\x96\xeb\x75\x9b\xa6\x43\xcd\x43\x48\x88\xe1\xb5\x54\xb6\x68\x06\xaa\x56\x70\x93\x7a\xbc\x3a\x67\xeb\xf7\x1d\x97\xad\x6d\x77\x32\xe9\x98\xa8\x70\xc4\x7a\x74\x7d\xd7\xe9\xba\x70\x5a\x81\x45\x13\x41\xc7\x64\xdf\x81\xcd\x7e\x65\x34\x7c\xf1\x4c\x64\x54\x12\xb3\x82\xaa\xfd\x6e\xc0\xf6\xcb\xa7\xdb\xb3\xbd\xb2\xb3\x3d\x77\xb3\x3d\x77\xb0\xbd\xda\x82\x6d\x67\x11\xe9\x75\x5d\x45\x5a\x4e\x7f\x6c\x57\x47\x7a\xac\x08\xb3\xc4\x55\xf1\x4d\xa5\x97\x62\xfe\xfe\xd1\xab\x43\x95\xa0\x75\x6a\x31\x4f\x51\x56\x9c\x19\x8a\x6b\x5f\xcc\x99\x60\x62\x53\xa1\x3e\x16\x95\x70\x4d\x5a\x3a\x26\x44\x4d\x65\xe7\xe1\x44\x4d\xb7\xe8\xf6\xf7\x8f\x5e\x19\x2b\x6e\x9f\xae\xca\x8b\x39\x3f\xd8\x6d\x8a\x48\x36\xea\x4c\x14\xe9\x3f\xfd\x7e\xa6\x8b\xd4\x44\x84\x60\xbb\x84\x0a\xa5\x59\xff\x7a\x20\x95\xc5\xf2\x35\x46\xc7\x02\xee\x50\x4a\xf5\x91\xd4\xf1\x72\x35\x69\xef\x59\x57\x17\xc7\xd7\xa4\x0f\xd7\xf3\x32\xe3\x13\x6f\x8a\xc8\xde\xe0\x2e\x8c\x06\x2d\xb9\x21\x5a\x32\x45\x81\x03\xad\x7f\x43\xb4\xc1\x14\x45\x7b\xf6\x8b\x34\x6e\xfc\xee\xc1\xd7\xf8\x50\x6f\xac\xb5\xb0\x4a\xe6\x50\x7f\xe7\xd8\xa2\x81\xbf\x05\x85\xdb\x79\xa7\x11\xb4\x76\x64\x8e\xec\xda\x7d\xbc\x05\x05\xf3\xa8\x87\x13\x72\x6b\xc3\xde\x3f\x49\x58\x6d\xa2\xcb\x2d\x04\xd7\x16\xd7\x8e\x21\xd6\x16\xe2\xba\x81\xb6\x81\x72\xd6\xcf\x6f\xa0\x7a\x25\xf4\xb5\xc2\xec\xf7\x43\x32\xed\x55\xd5\xd7\x8a\xbb\xdf\x0f\x83\x69\x5b\xd5\xfd\x7e\x18\x4d\x55\xb1\xf7\xfb\x11\xfe\xf8\x76\x4a\x83\x4f\x2a\xb8\xff\x5b\x56\xda\xff\x6c\xf5\xf0\xff\x7b\x2a\xdb\xc3\x4d\x05\xe5\x82\xe7\xb7\x5b\xe2\xfe\x3b\xb6\xe6\x6d\xd5\x7a\xb6\xe6\xda\xb3\xd7\x3e\x71\x56\xc0\x1f\xfa\xf2\x26\x0a\xd0\x82\x9d\xf3\xf5\x85\xee\xa5\x47\x3a\x1b\x02\x44\xb0\x21\xff\xfb\xf7\x8f\x26\x34\xdf\xa2\x28\x68\xae\xb0\x31\xa1\x79\x1d\x05\x82\x0f\x60\x6a\x13\x05\x87\xea\x8b\xe0\xdf\x90\x19\xb4\xa8\x25\x7a\x35\x9d\x52\xfe\x8d\xaf\x11\x43\x0b\x7e\x35\xbf\x46\xd2\xd7\x72\x13\x61\x3d\xa0\xa0\xce\x6d\x1e\x8b\xcb\xf3\x94\xaf\x3e\x22\xb8\x55\x0a\x6e\x55\x11\x1f\x7c\x02\xe9\xfc\xa1\xb3\xc9\x7c\x79\x05\x2d\xc4\x7f\x4d\x0d\xba\x8d\xbb\xd1\x6d\x08\x50\xcb\x65\xd3\xca\xa5\x8e\x08\xb5\x78\xea\x81\x59\xae\xfe\x79\xc4\xf3\xe1\xad\x2c\xf0\x42\x2f\xf2\xba\xf3\x9d\xb5\xa4\x21\xc4\x2f\xca\x4e\x46\x25\x7a\x38\x15\x5c\x9b\xc7\x30\x75\xbf\x96\xe1\x56\x4f\x78\x2c\x7a\x7b\x8c\xba\xb7\x6f\xeb\x6f\xe6\x7d\x4d\x7d\x57\x56\x57\xe5\x9a\xa3\x9f\x9e\x9f\xae\x01\xc3\x98\x62\xea\x8b\x52\x94\x81\x7c\x44\xdf\x0a\xfd\x0a\xb9\x1c\x80\x60\xd4\x48\xc2\x8a\x8a\xaf\xd0\x82\x9f\xb1\xaa\x5c\x9c\xdd\x82\xe0\x01\x15\x17\x82\x57\x2a\x38\x5c\x2c\xab\x89\x55\xaa\x47\x47\x68\xb1\x1c\xcd\x54\xe1\x4e\x16\x29\xd0\x7f\x34\xd2\x7d\x60\x04\x93\x82\xfd\x47\x2d\x64\x43\x4a\xaa\x24\xa3\x04\x53\x5b\x43\xab\xce\x07\x1d\xee\x3a\x19\x80\x4d\x2b\xdf\xfe\xf4\xbd\xa6\x15\x58\x4e\x80\x71\xfb\x82\xad\x61\x79\x61\x2b\x1f\x6a\x34\x05\x38\x84\x4b\x34\xca\xaa\x96\x82\x44\x8d\xf7\x96\x95\xff\xed\x4f\xdf\xdf\x8e\xea\xe5\xda\x4e\xab\x78\xb6\xc8\x27\x6c\xb1\xac\x66\x7c\xa5\x18\x71\x99\x01\x5b\xe4\xba\x19\x88\x1e\x8e\x98\x42\xeb\x67\x77\xa5\x40\xc6\xac\xa2\xf1\x3c\x05\xff\x9b\xd9\xc7\xf3\x97\x9f\xdb\x3c\x9e\xbf\xfc\x4c\xd6\xf1\xfc\xe5\xed\x18\xc7\x72\xd5\xb1\x8d\xe5\x6a\x07\xd3\x58\xae\x6e\x6c\x19\xbf\xee\x68\x19\xbf\xfe\xc6\x96\xf1\xfa\xf3\x9b\xc6\xeb\xcf\x66\x1b\xaf\x6f\xcb\x38\x36\x3d\xeb\xd8\xec\x64\x1e\x9b\x4f\xb0\x8f\x77\x3b\xda\xc7\xbb\xdf\xc8\x3e\x60\x51\x5e\xb7\x8c\x85\x9c\x19\x55\x2f\x84\x73\x5e\x54\xdb\x67\x65\x0b\xb0\x09\xf9\x0d\x2d\x8b\x06\x13\x5c\x61\x73\x5b\xc6\x00\xc8\x6e\xc7\x1c\x00\x55\xc7\x20\xe0\x97\xa7\x13\x12\xba\xec\x40\x02\xe9\xa6\xb0\x30\xd9\x81\x78\x05\x5a\xa0\x87\xc8\x27\xb6\x95\x2e\xcd\x52\x26\xad\xa9\x3c\x7c\x88\x16\xb0\x44\xde\x18\x83\xdc\x3a\x44\xd0\x01\x5a\x18\x2f\xab\x37\x9b\x90\xc0\x33\xb4\xb5\x8f\xa8\x7e\x79\x72\x33\xa4\xa3\x99\x2c\xd0\x81\xe1\xc6\xd0\x01\xe9\xfe\x52\x97\x20\xf7\xdf\x69\xbd\x30\x95\xff\x6f\x67\xbe\x2f\x27\xf6\x97\x8b\xda\x7a\x5f\xde\x92\xf5\x4a\xbd\x77\x2d\x55\x33\xde\xda\x9e\xb7\x30\xde\x41\xc4\x04\x54\x37\xb0\x5f\xcd\x0b\x1a\x3c\xe3\x06\xac\xc8\xff\xe6\x16\xfc\x72\x59\xb1\x8a\x7f\xee\x00\xbc\x02\x2a\xb7\x65\xc2\x80\xed\x76\x4c\x58\x32\xa6\x9b\xf0\x6a\x39\x1a\x7f\x05\xc8\xa8\xfd\xaa\x1e\x81\x1d\xa8\xa8\xbe\xd8\x13\xe9\x60\xfb\xcb\xcb\x49\x14\x0c\xcc\xf2\x53\x15\x76\x4b\x31\xe7\xf7\xa5\xb1\x91\x90\x23\x20\x76\x57\xd8\xcb\x81\xc2\x9e\xde\x44\x61\xdf\xe6\xf9\xe7\xce\x7c\x59\x9e\x7f\xa6\xcc\x57\x5e\xf9\x7d\x1b\xef\xcc\x79\xef\x9d\x39\xdf\xe9\x9d\x39\xdf\xfa\x9d\xb9\x3f\x22\xec\x37\x89\x2c\x6c\x18\x35\x27\xbf\x19\x5b\xad\xae\x45\xb3\x7a\x0c\x91\x17\xc3\x77\x86\x95\xf6\x7a\x78\x33\x8e\x61\x22\xb5\xdf\xe6\xdc\x68\x5f\xd2\x50\x3c\x7c\x6a\x44\x97\xdf\xcc\xab\x2b\xdf\x2e\xd4\x15\xe0\xcb\x42\x9f\xdb\x5c\x9b\x6e\x38\x5e\x2d\x2f\xf8\xaa\xba\x46\x7f\x57\x57\x0c\x03\x20\x98\x57\x83\x62\x30\xad\xa8\x0c\x64\x7d\x68\xc2\x53\x87\x95\xe6\x4e\xf4\x6e\x74\x59\x97\x67\x8b\xb2\x28\x33\xb6\xa8\x50\x0a\xcf\xcb\x85\xe6\x1b\x40\xd4\x31\xfb\xdb\xce\x4b\xd7\xcc\xd4\xbf\xdc\xc2\x3c\xf0\x90\x03\xbb\x3b\x76\xc4\x35\x79\x7e\x21\xcc\x92\xcd\xf7\x3a\xb2\x1f\x15\x1c\x32\x06\xe4\x46\x72\x1a\xda\xad\x84\xc8\xbb\x6a\xfe\x04\x5f\xbd\xd2\x45\xdd\xef\x45\x67\xcd\xb7\xeb\xb3\x9f\x88\xec\xcd\xa0\xbd\xf8\xdb\x75\x5a\x7b\xba\x2b\x16\x4c\x71\x82\x19\x4e\xe1\x4c\x4d\x86\x73\xcc\x71\xb1\x37\x40\xf2\xf6\xdf\xa8\xab\x53\x84\xbd\xad\x97\x07\xc0\xe8\xa6\x8d\xd9\x0e\xc2\xf2\x95\xda\x3c\x01\x61\xb1\xfe\x22\xff\xfb\xeb\xaf\x86\x03\x18\x22\xef\x6f\x7c\xe0\x0f\xc7\x68\xb8\x0a\xa6\xff\xc9\xb1\xb9\x06\x3f\x6e\xd8\xe8\xef\x05\xb4\x26\xed\x7d\x04\xd2\x87\xe6\x7c\x71\x56\xcd\xd0\xd7\x88\x6e\xb9\x95\xba\x1f\x68\x4e\x96\x8b\x0f\x7c\x55\xbf\x1a\x6a\x61\x58\xc5\x07\x31\x68\xd7\xa7\x03\xb6\x0a\x3c\xf5\xa8\xdd\x68\xb7\xb3\x32\xf7\x11\x9d\x76\x83\xe8\xbd\x35\xca\x59\xc5\x10\x5b\xef\x48\x67\xeb\x99\xac\xee\x4a\xe1\x46\x0b\xd0\x87\xd5\xf2\xb5\x4f\xec\x4b\x21\xf0\xf8\x13\xf6\xec\x28\x5a\x5d\xa3\x32\xec\xdc\xa9\xe1\x9e\x4a\x65\x36\x4c\xd6\xea\x35\xed\xe2\x91\x6a\x33\xe0\x92\xdd\xdd\x7a\xf3\x7e\x97\xb6\xfb\xa4\x57\xbb\x84\x57\xb7\x7a\x33\xd8\xc2\x2f\xfe\x6a\x1e\x0e\x2f\x2e\xd7\xb3\x49\x9d\x48\x89\x1c\xc1\xf4\x5e\x69\x86\xee\xe5\x12\xc8\xb0\x4f\xb6\x4e\x45\x34\x05\xd7\x11\xa4\xc6\x39\xed\xba\x8d\x75\x23\xc9\xc0\x2b\x00\x8d\x30\xc9\x6c\x79\x01\x83\xa4\x65\xec\x47\xa3\x69\x6b\x63\xf6\x1c\x65\xf3\xe5\xc2\xf5\xa6\xb2\xad\x49\x03\x9e\xbe\x2d\xc3\x8f\x76\x5b\x86\xc7\x4e\x5b\xd6\x31\x43\x96\x22\xd9\x6d\x76\xbe\x9a\x76\xba\x9e\x00\xfc\x1f\xc1\xb0\xff\x28\x25\x33\x44\x5a\xc7\x52\x89\x6f\x18\x66\xeb\x5d\x63\x76\x02\x70\x86\xa9\x5e\x58\x97\xc9\x89\x85\x4c\xe3\x42\x57\x1d\xff\x19\x75\x83\xab\x6d\x7c\xe0\x4a\x99\x7c\x8d\xfe\x4d\xf9\xd6\x24\x76\xbb\xa9\x02\x70\x67\x7d\xb9\x49\x8f\xad\xfb\x66\x7a\xbb\x65\xd4\xd6\x98\x8f\x6f\xa7\x34\xdc\x66\xbf\xcb\xd1\xd7\x7f\x40\xb3\xaa\xba\x58\xdf\x3f\x3a\x3a\xaf\x66\xeb\xc3\x94\x1f\x5d\x56\x05\xfd\x65\x8d\x3e\x90\x43\x7c\x48\x50\x7a\x8d\xfe\xe7\x39\xab\x66\x25\x5b\x0b\x8b\x69\x37\xc8\xc0\xae\x10\xb9\xd9\xe3\xe8\x08\x7d\xcf\x2b\x79\x1c\x8e\x73\x21\xee\x92\xa5\x73\xbe\x46\x7f\x55\x94\xfe\x7a\xe7\x2b\xd8\xc6\xbf\xe2\xfc\x51\xb3\xff\x65\xb0\x93\x06\xdd\x93\xca\xbb\x87\xee\xde\xad\x7f\x7e\x60\x47\x8f\xfe\x2a\xbb\xa3\x21\x7f\x06\x3f\xb4\xb8\xcf\xd5\xf7\x2e\x6a\xf5\xeb\xdd\xbb\x86\xfd\x39\xc7\x1d\x26\x1b\x60\x27\x1b\x67\xb0\x73\xe6\xaf\x53\xb9\x1b\xff\xa7\x65\xce\x0f\x7f\x59\xa3\xe5\x0a\x7d\x27\xb7\xd2\x94\x45\xc9\x73\x94\x2d\x73\x3e\x05\x2c\x6c\x91\xa3\xcb\x35\x47\x65\x25\xc6\xb5\xbf\x0a\x39\x6a\x7d\x50\xfb\x70\x9a\x3e\x9c\xa9\xef\xdd\x3e\xc8\x5f\x1f\xc8\x3d\x49\x6d\xb3\xc3\x06\xfa\x58\x47\xf6\xeb\xaf\xda\xb7\xc3\xab\x72\x91\x8b\xb7\xcb\x0e\x8c\xdc\x3a\x24\x78\x41\xfa\xcf\xb0\xd9\xe7\xce\x57\x47\x5f\x1f\xdc\xda\xdf\xd7\x47\x77\x64\x6f\xd7\xd5\xaa\x5c\x9c\x3d\x5e\x2d\xcf\x4f\x66\x6c\x75\xb2\xcc\x85\xe6\x5e\xc1\x8f\x87\x85\xf6\xab\x12\xfe\x29\x7b\xcf\x17\x52\xc6\x7d\x93\xbd\xb8\x5c\x5c\x0b\xf9\xde\xf9\xaa\x89\x60\x97\xd9\x9a\xe4\x5c\xfc\x38\x91\x74\x64\x07\x61\x69\x13\x36\xdf\xd7\x43\x20\xfc\x94\x2d\x2f\x17\x15\x5f\xa9\x99\x4b\xf8\x69\x5e\xc7\x0a\xd9\xbc\x0d\x16\xf0\x14\xce\x33\xd6\x5f\xf8\xa6\x5a\x31\xf1\xe5\x6a\x56\xce\x39\x9a\xd4\xd8\x1e\x2a\x24\x92\xf4\x57\xd0\xa6\x45\x98\xa9\xee\x7d\x5b\xd5\x0d\xf6\xf7\x85\xab\x7f\x05\x3a\x95\xc0\xdf\x1c\x23\x6f\xf3\x3d\xf5\x3c\xa1\x73\xf9\xd3\x43\xf8\xe9\xbb\xc7\x8f\xc5\x4f\x16\x4a\x42\x5c\xf0\xba\xbe\xbe\x5c\xad\x96\x67\xac\xe2\x53\xb0\xba\x6a\xc6\x57\x1c\xce\x79\xa2\x05\xdf\x54\x48\xb0\xc0\xb2\x8a\xaf\xa0\x11\x74\x63\x1b\xfe\x80\xc1\x89\x04\xbf\x8b\xbc\xcd\xe3\x13\xcf\xdb\x13\x16\xea\x6d\xbe\x87\x8f\x7f\x17\xc1\x79\xbe\xbc\x6a\xe9\x43\xb3\xaf\xa4\xe4\xe5\x50\x3e\x51\x5d\x14\x08\xfc\xc7\x8f\xf7\xe0\x68\xa6\xb7\x87\xf6\x91\x86\x19\x1e\xec\xd7\x15\x87\x14\xf5\x36\x0b\x56\x5d\xbd\x5c\x9c\xb3\x2a\x9b\xf1\xbc\xa5\xf7\x00\x2d\x17\xf3\x6b\xc4\x2e\x2e\x38\xf4\xbb\x5c\x83\x03\xa2\xcb\x45\x59\x4d\xc5\x8b\x66\xc6\xd6\x1c\xde\x36\x85\x20\x1a\x4c\x0d\x8c\x10\x52\x55\xef\x8b\x6a\xb0\x8a\xa1\x9e\x69\x5f\x2f\x58\xb9\x1a\xf6\x0c\xfa\xa5\x78\xfd\x4a\x89\xee\xe0\x40\xf1\x7e\xa7\xdf\x01\x4b\x4b\x01\x28\xfe\xaf\xe2\xbd\x84\xaa\xbd\xf1\x26\xce\xc0\x17\xe0\x0c\x30\x0a\xb7\xbe\xd0\x58\xb9\xcc\x5b\xba\x46\x5e\x2e\x72\xbe\x41\xc7\xe8\x00\x1b\xcd\xbe\xf1\xa3\x7b\xf7\x34\xe3\xdf\xdf\x97\xcd\x2c\xc6\x0f\x74\xde\x00\xc8\xdb\xbe\xb1\x0b\x53\x7a\x2c\x34\x2e\x25\x23\x7f\x3d\x38\xae\xd5\xff\x40\x93\x17\xda\x3f\x36\xc4\x8f\x1a\xd1\x37\xdf\x20\xec\xd5\x06\x84\x7e\x55\x3e\xa4\x54\x52\x73\x22\x8d\x15\xfd\x8a\x3a\x76\xd8\x08\x7f\x0b\x42\x80\xd0\xa6\xa4\x46\xf8\xd9\x8c\x67\xef\x5f\x65\x6c\xce\x56\xff\x5b\xb4\x9a\x08\x3d\xbc\x58\x96\x0b\xb9\x9b\x1a\x04\xd0\xfc\xd4\xf5\xf8\xf6\x67\xe9\xf5\xad\x70\xaa\xd9\x6a\x79\x85\x1e\xad\x56\xcb\xd5\x04\x7a\x75\xef\xa9\x48\x85\x5a\xd3\xfc\xf3\xfe\x3d\xb4\xdf\x22\x38\xac\x96\x32\xb2\x4e\x70\xb4\x77\x58\x2d\xff\x7c\x71\xc1\x57\x27\x6c\xcd\x27\x7b\x68\x5f\x22\x10\x26\xbf\x58\x56\xc2\xc0\x81\x59\x29\x97\x7b\xe2\x61\xdd\xd1\x8f\x9f\x61\x24\x68\xe5\x04\x59\xb5\xc8\xc4\x5b\x71\x4c\xe5\x32\x9b\x1a\x9c\xa4\x94\x0d\xda\x98\xe8\x02\xfc\xa6\x6e\x23\x35\x0a\x53\x95\x1b\xea\xed\xf5\xf5\x22\x1d\xe2\xa4\x6e\x68\x52\x8b\x86\xf6\xae\x32\xce\xc7\x8f\xa9\x8a\x75\x2a\xcc\xe1\x83\xf4\xba\xe2\x68\xcd\xff\xeb\x92\x2f\x32\x08\x74\x76\x46\x5b\x1a\xb5\xe9\xc0\x40\x78\x7d\x9e\x2e\xe7\x8d\x23\xd9\x28\x53\xaf\x4b\x99\x0c\x29\x37\x98\xc6\x85\x14\x49\x01\x61\x25\xa0\x13\xaf\x61\xa9\xd9\x78\x6c\x60\x02\xc2\xb0\xce\x84\x3f\x64\xc2\x61\xf0\x0f\x76\x64\x12\x13\xc9\xa5\xa7\xb8\x7c\xe4\x75\x50\xec\x1f\x5b\xac\x26\xda\xa2\x33\x8f\xbc\x41\x67\x82\x4f\x92\x28\xa6\x8a\xd9\x58\x32\xfb\x78\x4b\x66\x31\xd9\xb5\x53\x2d\xa4\x89\xab\x6e\x47\xbb\x1e\xd0\xd8\x26\x60\xe8\xbb\x84\x48\xfd\xd5\x38\xd1\x4f\x9a\x1a\xa4\x22\x75\x1f\x26\x57\x83\xac\xa9\x85\x1f\x1d\x54\x1a\xd0\xfa\x07\xa1\x04\x19\xad\xb6\x1c\x5c\xda\x1e\xeb\x84\xf5\x51\x46\x43\xb9\x7f\xec\x70\xfd\x5e\x44\x6f\x9b\x7d\xae\x44\xb8\x91\xfd\x8a\xb3\xfc\x64\xb9\xa8\xca\xc5\x25\x1c\x9e\x05\xed\xb7\xa1\x48\x70\xf2\x03\xf4\xfd\x9b\x63\x60\xeb\x44\x24\x16\x86\xd1\xe0\xde\x0f\x8b\x0f\x6c\x5e\xe6\x00\x24\xa5\x7d\x4f\x75\xab\x91\x77\x97\x0a\x92\x08\x61\xa2\xe0\x4d\x43\xe7\xad\x72\x13\xd1\xb4\xf9\x71\x7f\x5f\x24\xe3\x75\x84\xea\xa1\xb9\x2b\xc3\x88\x4c\x04\x45\x94\xfc\xbb\x16\x0c\x8d\xd0\xfe\xe3\x86\xb1\xa3\x23\xf4\x43\x81\xae\x38\x12\xf9\xda\xe5\x05\x12\x99\xea\x14\x95\xd5\xff\xfb\x3f\xff\xb7\x1e\x96\x74\x14\xc0\xf1\x1d\x4b\xcf\x07\x80\xf7\x06\xc1\x5f\x5a\xef\x2b\xf0\x82\x49\x6b\xe5\x02\x18\xeb\x66\x48\xf4\x2f\xbe\xfe\x25\x30\x98\xef\x50\x57\x9f\xa0\xaa\x2e\xa6\xe3\xa1\xd6\x95\x64\x0b\x36\x87\xc3\x0f\x8d\x1c\x5f\x72\x96\xa3\xa2\x5c\xad\xab\x5a\x4a\xd0\xad\xdd\xd5\x3c\x1c\xdd\xd0\x64\xb1\x1c\x8a\x77\xbd\x57\xdb\x84\x24\x74\x57\xe9\x5f\x45\x56\x8d\xd7\x46\xbe\x35\xaf\xc3\x31\xac\x87\xe7\x51\x6d\x50\x27\x35\x2a\x50\x0b\x3a\xb6\x38\xcc\x83\x7e\x3c\xd0\x91\x61\xf9\x9a\x01\x35\x77\x1a\xed\x9a\x12\xb0\xc6\x7a\x5b\xf3\xd5\x62\x54\x37\x81\xdf\xc1\x04\xeb\xb4\x5e\xf6\xdd\xef\xcb\xf6\x9c\x5d\xa3\x72\x91\xcd\x2f\xe1\x25\x44\xbc\x5c\xe8\xaf\x34\x26\x29\x3f\xae\xa5\xf3\x68\x07\xe9\x80\x29\xdf\x4c\x80\x9e\x7a\x4f\x23\xb0\x37\x49\xd2\xd2\x05\xea\xdb\x04\xea\x41\xf2\x22\x05\x36\x96\x1f\x7c\x4e\x99\x0f\x47\xf8\xbe\x44\xa9\x92\xe8\xe3\xdb\x95\x28\x84\x8c\x1b\x0a\x3d\x06\xa1\x7b\x9b\xbe\xd8\xbd\x8d\x77\xb2\x87\x7e\x05\x89\x4c\x24\x0f\xf2\xd7\x46\x1f\x81\x55\x1f\xf0\x46\x65\x78\xc7\xc0\x9e\xfe\x0a\x66\xd6\x44\x2d\x4f\xa3\x16\xfe\x7c\xfa\xf8\x80\xa2\x1c\x66\xca\x78\xde\x44\xde\x3a\x6c\xaa\x13\x58\xcd\x77\x08\x68\xda\x77\x88\x3f\x0f\x7a\x39\x89\xca\x35\xda\xd1\x58\xf2\xd7\xe0\xeb\xa6\x24\x1a\x58\x1d\xd5\x80\x8a\x1e\x00\xb5\xa4\x44\x8b\xb1\xed\xec\x4f\x27\xdd\x69\xe7\x89\xaa\xf3\x0b\x2d\x1b\x99\x54\xe7\x17\xe8\xb8\x37\x96\xec\xa1\x3f\x1c\x1f\xcb\xa0\xdc\xcf\x4e\xd4\x22\x46\x75\x7e\xd1\xcf\x33\xb4\x17\xf4\x16\x7a\xef\x73\x4e\xbe\x09\xb1\xa2\x63\x60\xf0\xde\x07\xbe\x5a\x97\xcb\xc5\xbd\xfb\xe8\x1e\x4c\xfa\xde\x9b\x8a\x5f\x25\x3f\xf7\xee\x6b\x59\x21\xfc\x2e\xbb\xab\x7e\x97\x5f\xee\x7c\xf5\x51\x4d\xd2\xbd\x5a\x9e\x73\xf4\xed\xb3\xef\x51\x7a\x59\xce\x73\xb4\xbc\xa8\xca\xf3\xf2\x6f\x7c\xb5\x9e\xa2\x79\xf9\x9e\xa3\xd5\xe1\x2f\xeb\xa9\x7c\x25\x86\x99\xf6\xf5\x05\xcf\xca\xa2\xcc\x84\xf3\xe6\x25\x28\xfc\x82\x55\x15\x5f\x2d\xd6\x80\x0f\x1a\x55\x33\x8e\x8a\xe5\x7c\xbe\xbc\x2a\x17\x67\xf7\xe5\x9c\xa7\x30\xbf\xde\xb9\x48\x74\xaf\x36\x9a\x7b\x72\x72\xb7\x03\x70\xc8\xce\xf3\xde\x2c\x6a\x73\x44\x52\x3c\xbb\xf3\x95\x54\x97\x3a\x34\xd9\x4c\x73\x77\x07\x30\xd1\x67\xd0\x1d\x28\xa7\x7d\xbb\xe8\xcd\x1a\xff\x41\xfb\x7e\xb8\x58\xe6\xfc\xf4\xfa\x82\xb7\xc9\x5c\x3b\x57\xad\x5e\x3c\xca\x85\x3e\x6f\xfc\xb2\x5c\x9c\x2d\xff\xd7\x2b\xf4\xc1\x3b\xa4\x87\x1e\xbc\x9e\xb7\x2d\xb4\xb3\xa4\x0d\x33\x2a\x34\xd6\x98\xd8\xea\x6a\xc6\xe6\x3d\x4c\xf1\xa1\x77\x20\x27\x62\x56\xf5\xde\x28\x79\x8a\x51\xfd\x36\x63\xeb\xe7\x57\x8b\x17\xf5\x16\x98\x63\x05\x74\xd8\xfd\x1d\xc0\x9b\x25\x12\xa8\x1a\x27\x85\x52\x47\x8c\x2e\xb8\x5c\x1f\x12\xcf\xe1\x20\xf1\x9e\x90\x8d\x2e\xab\x37\xef\x65\x01\x43\x01\x01\x9f\x3b\x93\x5f\xbd\x7e\xbd\x9c\x95\x8b\xa5\xe8\x15\x43\x57\x3c\x45\xea\xa0\xaa\x9a\xb5\x3e\x54\x06\xad\x64\xf2\xf1\x8e\x3a\xa2\x0a\xcb\x26\x1f\xa7\x7f\xff\xf8\x76\x4a\xa3\x6d\x96\x44\x06\x27\x76\x5f\x3f\x7b\xfa\xa4\xaa\x2e\x5e\x8a\x21\x63\x5d\x35\xd8\xfe\x98\x96\x67\x72\x33\xcb\xe1\x2f\xeb\x3f\x6e\x83\xf9\xde\xe5\x9a\xc3\x0b\x5b\x56\xdd\x7b\x70\x67\x48\xe8\xbb\xf2\xec\x27\x40\xf8\x40\x74\xf8\x97\xf5\x4c\x04\xe5\xf2\x6c\xb1\x5c\xf1\xfb\xf3\x72\xc1\xef\x34\xa4\xaf\x78\xea\x6f\x45\x52\x28\xe9\x67\x9e\xca\xb1\x49\x1e\x33\xbe\x77\x78\x34\x2f\xd3\x23\x81\x42\x04\xe7\x3b\x47\x47\x28\x5f\x2e\xee\x55\x68\xf9\x81\xaf\x56\x65\xce\xeb\x15\x87\x7a\x81\xe3\x8e\x76\x06\x59\x2d\x1d\x88\x08\x77\xaf\xd9\xd1\x00\x0b\x12\x1d\x80\x43\x49\xb3\x0b\x25\x2c\x04\xd6\xc9\x74\x10\xe0\xee\xc1\x9d\x8f\x06\x71\xc8\x27\x6a\x65\xab\x66\xf9\x8f\xf7\x09\xf9\xf8\x56\x88\x61\xfa\x46\x8a\xe1\xed\xde\x9d\x3b\xff\x3f\x00\x00\xff\xff\x30\x1c\x67\x1d\x64\x21\x06\x00") +var _web3Js = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x6b\x7b\x13\x39\xd2\x38\x0e\xbf\xcf\xa7\x50\xfc\xdc\x0f\xb6\x89\xb1\x73\x60\x18\xc6\x99\x0c\x1b\x02\x33\x64\x6f\x20\x5c\x40\x76\x76\xef\x6c\x96\xab\xed\x96\xed\x1e\xda\xdd\xfe\x75\xb7\x73\x18\x92\xef\xfe\xbf\x54\x3a\x95\x0e\x7d\x70\x12\xe6\xb4\xc9\x0b\x70\x4b\xa5\x53\xa9\x54\x2a\x95\x4a\x55\x19\xfd\x7f\xcb\x28\xa3\x7b\x9d\xc9\x32\x19\x17\x51\x9a\x10\xda\x29\x7a\x49\x2f\xeb\x7e\x51\x29\x79\x27\xed\x2d\xbb\x5f\xa2\x49\x67\x3d\x39\x49\x4f\xf9\xaf\x02\x7e\x9d\x05\x19\x09\xf6\x8a\xcb\x05\x4d\x27\x44\xd6\xb5\xd7\x92\x45\x5b\x0f\x1e\x88\xc4\x5d\x56\x66\xf9\xe0\x41\xd0\xcd\x68\xb1\xcc\x12\x12\x74\xd2\xde\xfa\x66\x97\xa5\x47\x32\x2d\x12\x69\xac\xd6\xc9\x5e\x42\xcf\xc9\xcb\x2c\x4b\xb3\x4e\xeb\x20\x48\x92\xb4\x20\x93\x28\x09\xc9\x3c\x0d\x97\x31\x25\xed\xd6\x46\xba\xd1\x6a\xb7\xba\xbb\xc5\x2c\x4b\xcf\xc9\xa4\x3f\x4e\x43\xba\xd7\x7a\x73\xf4\xe2\xf8\xf5\xcb\x4f\x6f\x8f\x3e\x7e\xfa\xf1\xe8\xf8\xed\x8b\x56\x6f\x72\xcd\xea\x8b\xf7\x58\xdf\xf7\xbe\xd0\x8b\x45\x9a\x15\xf9\xf0\xcb\xf5\xf5\x2e\x1b\xc3\xc9\xe6\x69\x7f\x1c\xc4\x71\x27\xee\x8b\xac\x9e\xec\x7d\x87\xf2\x01\x26\x7b\x00\xb8\x75\x7a\x42\x4f\x77\x45\x57\xf3\x4e\xf2\x2c\x19\xd2\xee\x75\x2f\xee\xe9\x92\xb4\xc7\x71\x77\x2d\xa0\x58\x93\x32\x13\x7a\x11\x35\xc2\xd5\x24\xcd\x3a\x0c\x3a\xdd\xdb\xdc\x4d\xbf\xcf\xfa\x31\x4d\xa6\xc5\x6c\x37\xdd\xd8\xe8\xe6\x9d\x8c\x21\x5e\x75\xe3\xba\xdb\xf9\xb2\x35\x3c\x51\x5d\x16\x55\xf4\x38\x96\x7a\xa2\xed\xee\x97\x35\x9e\x20\x3b\xb3\x77\xb2\x46\xc8\x97\x35\x42\x08\x69\x8d\xd3\x24\x2f\x82\xa4\x68\x0d\x49\x91\x2d\x69\x8f\xa7\x46\xc9\x62\x59\xe4\xad\x21\x39\x81\x6f\x09\x0d\x79\x49\x30\xa7\xad\x21\x69\x7d\x4a\xcf\x13\x9a\xb5\x7a\x3a\x87\x8d\x8e\xe5\x04\x61\x98\xd1\x3c\x6f\x89\x9c\x6b\xf8\xff\x54\x54\x2d\x8b\xc3\xff\x22\x2d\x5d\x16\xf5\xed\xa5\x9f\x50\x11\xa3\xbd\xd1\x65\x41\xf3\x9d\x6d\x7f\x7b\x12\x48\x61\x7a\x8d\x90\xeb\xde\x9d\x20\xe0\x46\xfd\x51\xc3\x41\xd8\x6b\x86\x80\x95\x51\xfd\x47\x1d\xfa\x38\x4d\x0a\x9a\x14\xb7\x1e\xfc\x9f\x72\xde\xd9\x8c\xfd\x61\xa6\x7d\x12\xc4\xf9\x6f\x37\xf4\x8c\xe6\x34\x3b\xf3\xad\xfa\x3f\xfa\xa4\xe5\xcb\xd1\x7b\x3a\x8d\xf2\x22\x0b\xfe\x0b\x26\xaf\x57\x55\x07\x3d\x3f\xba\x15\xdf\x2f\xb2\x20\xc9\x27\x5e\xd6\xf7\x67\xc1\x41\x66\x91\xc2\xea\x48\xc8\x69\xf1\xa1\x9a\xa4\xee\x0c\x17\x76\xd3\xbf\x49\xa3\x5f\x79\x02\x82\x26\x88\xaf\xaa\x60\x91\x45\xf3\x20\xbb\xf4\xf6\x23\x4d\xe3\xda\xc9\xdb\x17\x6d\xfd\x79\x51\x68\xee\xc1\x95\xd5\x94\x21\xe1\xa0\x74\x1b\xff\x23\x21\xc1\xdb\xfb\x30\xca\xd3\xf3\xe4\x16\x3d\x0f\x92\x34\xb9\x9c\xa7\xcb\x7c\x85\xae\x47\x49\x48\x2f\x68\x68\xec\x5d\x77\x36\xb1\xba\x72\xd4\x1d\xb3\xf6\xf3\x28\xb9\x0d\xe3\xde\x5f\x02\x26\x5e\x26\x21\x0d\x5b\x16\x9a\xe8\x19\x23\x84\xbf\x00\x8e\x46\x51\x18\x36\xc3\xd1\xcd\xea\x3f\x0b\xe2\xa5\xb7\xfb\xcb\x28\x29\xb6\xbf\x79\x52\x3d\x05\x6f\xe9\xf9\xf3\xe8\x77\x44\xfe\xad\xd6\xdc\xc1\x2c\x48\xa6\xbf\x27\xe9\xdc\x09\xe5\x94\xd4\x8d\xa4\xfa\x4a\xaa\xf1\x62\xe6\x1d\xdf\x8d\x6a\x11\xb4\x76\xba\xb6\x76\xdd\xfb\x72\x7d\xda\xdb\xfe\xdd\x0e\xfd\x7f\xa1\x33\xef\xef\x24\x3b\x4e\x96\x49\x78\x63\x52\xb9\xf5\xc6\x75\x7f\xec\xfd\x73\x1f\x7b\xef\x0f\x7d\x7f\xe4\x33\x87\x77\xf0\xe2\xbc\xf0\x47\x93\x36\xbf\xee\x66\xae\xf7\xaa\x9d\x3b\xdb\xab\x56\x9d\xf7\x49\x96\xce\x6f\x39\xed\x45\x7a\xcb\xa3\xe6\xed\x04\xbe\xdf\x77\xdd\xfc\x11\xf0\x17\x25\x61\x94\xd1\x71\x71\xe8\xdd\x33\x57\xe8\xc9\xed\x26\x22\x1a\x07\x8b\x8f\xbf\xeb\x64\xf8\x31\xd9\xec\xb4\x4b\x17\x69\x1e\x55\x1d\xd4\x17\xc1\x65\x30\x8a\xa9\x29\x14\xfc\x2e\x5c\xa9\x8c\xe6\xee\xe4\xf8\x75\x3b\x1a\xd8\x97\xe3\x7d\x61\xe2\xf3\xb7\x3f\xc9\xdc\x09\x92\x4a\xea\x6e\x46\x67\xbf\x03\xfa\xff\xb0\x58\xbf\x8b\xf3\xe3\x8d\xf9\xe4\xd7\xc6\xba\xcd\xf4\xee\xd1\xde\x10\xed\xb7\xde\xb8\xbe\xf6\xcc\x1e\x7a\xb6\xb4\x2a\x39\xee\x71\x13\x39\x0e\x8c\x37\xc8\x9e\xb4\x70\xe8\xb4\xfb\x83\x49\x9a\xcd\x83\xa2\xa0\x59\xde\xee\xee\x02\xc0\x87\x34\x8e\xc2\xa8\xb8\xfc\x78\xb9\xa0\x26\x2c\x6b\x9f\x41\xad\x0d\x1e\x3e\x5c\x23\x0f\x0d\x48\xa1\x73\x27\x51\x4e\x02\xb2\xc8\xd2\x94\x01\x93\x62\x16\x14\x24\xa3\x0b\x76\xc8\x4a\x8a\x9c\x88\xb9\x23\x2c\x93\xd5\x70\x58\x90\x79\x50\x8c\x67\x34\x1f\xb2\x4f\x91\x8d\x7e\x9e\x9c\xe2\x8f\xc7\xc6\xd7\xa9\x99\xb9\x63\x7d\x9f\x9e\x3c\x39\x3d\x39\xed\x91\x7e\xbf\xbf\x46\x1e\x0e\x9c\xb1\xc9\x1e\xef\x11\x65\x4d\xd3\xe9\x8a\x29\x2e\x66\x51\xde\xff\x04\x0b\xe3\x47\x89\x20\x06\xd8\xe7\xe8\x3a\x64\x19\x87\x49\xb1\x8b\x80\xf9\xbe\xed\x83\x3e\x82\x1c\xd1\xdc\xee\xda\xf5\xee\xda\x9a\xa7\x1f\xfd\x45\x96\x16\x1c\x6b\x7b\x24\xa1\xe7\x46\x5f\x3b\x5f\xae\xbb\xbb\xd5\xa5\xfa\x20\xbd\x64\xcb\x71\x91\xb2\xc6\x3d\xb0\x75\xed\xf6\xa3\x5c\xcc\xb9\x46\x08\x23\x47\x89\x14\x61\xd7\xb2\xbe\xce\x12\xfb\x30\x6f\x9d\x81\xc0\x76\xe7\xdf\x27\x9d\x93\xcd\x47\xdf\x9d\x3e\xec\xfe\xfb\xb4\xfb\x6c\xd0\xe5\xe3\x34\x0f\x0e\xa5\xdd\xba\xee\x7d\x69\x61\x52\x6c\x0d\xbf\xeb\xb5\x38\xbd\xb5\x86\x5b\x8f\xaf\x4f\x7b\xdf\xfc\xce\xe4\xfd\x3c\x4d\xe3\x1a\xda\x1e\x31\x90\x12\xc2\x66\x79\xf2\x7f\x4e\xa5\xf0\xeb\xb1\xfe\x79\x8a\x92\x77\xf0\x47\x1d\x19\x43\xcf\x6e\x4a\xc3\xac\xf0\x2a\x44\xcc\xe1\x6d\x0a\x66\xa9\x2b\x92\xaf\x59\xa4\x82\x76\x79\x8b\x55\x65\x6f\x42\xb5\xff\x61\xa8\x35\x69\xf6\xe1\xff\x34\x22\x5a\xd1\x9f\x7a\x8a\x7d\xf2\x7b\x53\x2c\xdb\xc3\x14\xc9\x16\x7e\x9a\x2d\x66\x94\xc0\x66\x07\x84\xdb\xf7\x51\x2e\xcb\x55\x3f\x04\x5d\xc2\xcf\xc7\xe8\xf7\x29\xce\xd8\x31\xbe\x4c\xfa\x25\x62\x6b\x55\x3f\x9f\x1a\xf5\x88\xa2\x1e\x2a\x87\x4e\xde\x98\xcc\x59\xe9\x95\xe8\x9c\x17\x70\x08\x9d\x25\xaf\x4a\xe9\x66\x99\x2a\x52\xe7\x8d\x56\x96\xbe\x19\xb1\xb3\x4a\x38\xa9\x7f\xd9\xea\x5d\x77\x6f\x46\xf8\xa2\x77\xf5\x94\xff\x6d\x13\xca\x1f\x3c\x84\x0e\x7f\x9c\x45\x39\x99\x44\x31\x65\x94\xba\x08\xb2\x82\xa4\x13\x72\x4e\x47\x3b\xfd\x5f\xf2\xfe\x1a\x80\x88\x2f\x06\x30\xc9\x28\x25\x79\x3a\x29\xce\x83\x8c\x0e\xc9\x65\xba\x24\xe3\x20\x21\x19\x0d\xa3\xbc\xc8\xa2\xd1\xb2\xa0\x24\x2a\x48\x90\x84\x83\x34\x23\xf3\x34\x8c\x26\x97\x50\x47\x54\x90\x65\x12\xd2\x0c\x08\xbe\xa0\xd9\x3c\x67\xed\xb0\x8f\x9f\xde\x1e\x93\xd7\x34\xcf\x69\x46\x7e\xa2\x09\xcd\x82\x98\xbc\x5b\x8e\xe2\x68\x4c\x5e\x47\x63\x9a\xe4\x94\x04\x39\x59\xb0\x94\x7c\x46\x43\x32\xba\x14\x54\x44\xc9\x8f\xac\x33\x1f\x44\x67\xc8\x8f\xe9\x32\x09\x03\x36\xe6\x1e\xa1\x51\x31\xa3\x19\x39\xa3\x59\xce\x66\x68\x47\xb6\x25\x6a\xec\x91\x34\x83\x5a\x3a\x41\xc1\xc6\x90\x91\x74\xc1\x0a\x76\x49\x90\x5c\x92\x38\x28\x74\x59\x17\x05\x7a\xa4\x21\x89\x12\xa8\x76\x96\xca\x95\x1d\x15\xe4\x3c\x8a\x63\x32\xa2\x64\x99\xd3\xc9\x32\xe6\x82\xe3\x68\x59\x90\x9f\x0f\x3f\xbe\x3a\x3a\xfe\x48\xf6\xdf\xfe\x8b\xfc\xbc\xff\xfe\xfd\xfe\xdb\x8f\xff\xda\x25\xe7\x51\x31\x4b\x97\x05\x61\x12\x25\xd4\x15\xcd\x17\x71\x44\x43\x72\x1e\x64\x59\x90\x14\x97\x24\x9d\x40\x15\x6f\x5e\xbe\x3f\x78\xb5\xff\xf6\xe3\xfe\xf3\xc3\xd7\x87\x1f\xff\x45\xd2\x8c\xfc\x78\xf8\xf1\xed\xcb\x0f\x1f\xc8\x8f\x47\xef\xc9\x3e\x79\xb7\xff\xfe\xe3\xe1\xc1\xf1\xeb\xfd\xf7\xe4\xdd\xf1\xfb\x77\x47\x1f\x5e\xf6\x09\xf9\x40\x59\xc7\x28\xd4\x50\x8f\xe8\x09\xcc\x59\x46\x49\x48\x8b\x20\x8a\xe5\xfc\xff\x2b\x5d\x92\x7c\x96\x2e\xe3\x90\xcc\x82\x33\x4a\x32\x3a\xa6\xd1\x19\x0d\x49\x40\xc6\xe9\xe2\xb2\xf1\x44\x42\x65\x41\x9c\x26\x53\x18\xb6\xa2\x32\x42\x0e\x27\x24\x49\x8b\x1e\xc9\x29\x25\xdf\xcf\x8a\x62\x31\x1c\x0c\xce\xcf\xcf\xfb\xd3\x64\xd9\x4f\xb3\xe9\x20\xe6\x15\xe4\x83\x1f\xfa\x6b\x0f\x07\x92\xd9\xfe\x0d\xc8\x76\x9c\x86\x34\xeb\xff\x02\x2c\xf2\x6f\xc1\xb2\x98\xa5\x19\x79\x13\x64\xf4\x33\xf9\xdf\xb4\xa0\xe7\xd1\xf8\x57\xf2\xfd\x9c\x7d\xff\x8d\x16\xb3\x90\x9e\xf5\xc7\xe9\xfc\x07\x00\x0e\x83\x82\x92\xed\xcd\xad\x6f\x80\xe1\xd5\x6f\x05\x15\x02\x2c\x2a\x23\xe4\x31\xdf\xde\x21\x24\x05\x04\xcc\x76\x41\x1f\xe4\x61\x52\x98\x80\x51\x52\xf8\xe0\x8e\x1d\xc0\x65\x09\xe4\x8b\xcb\x24\x98\x47\x63\xc9\xc6\x51\x89\x90\xe7\x00\x8f\xf2\x95\xfc\x50\x64\x51\x32\x35\xcb\xe4\x90\xe6\x83\x7e\x4f\x03\x6b\x8c\x19\x0d\xbc\x63\x3c\x76\x41\x97\x65\xb0\x9e\x6e\xab\xfe\x02\x70\x94\x8b\x01\x1a\x9c\x39\x47\x55\xf4\x60\x87\x15\x7c\x5a\x5a\x88\xa3\xfc\xbe\xaa\x02\xb6\x11\x0e\x7c\x75\xa5\x4e\x8f\xa4\x04\x7a\x3f\xcb\x82\x4b\x0e\xce\x99\xb8\x25\x0a\x1c\x30\xfa\x44\x12\x80\x58\x49\x9c\x43\x84\xa4\x48\x09\x4d\x18\x0d\x0f\x42\xca\xfe\x53\xad\x30\x66\x1c\x70\x36\xc9\xb8\x92\x90\x6b\xcd\x8d\x99\xd7\x8d\x47\xcc\xc0\x72\x73\x67\x86\x24\xb2\x07\x35\xe4\x46\x17\x81\xf7\xcf\x69\x31\x4b\x43\x4f\xb7\xb8\x72\x3d\xcd\xe6\x84\x4b\x2e\xa9\x31\x23\x6b\x84\xaf\x41\x51\xfc\x93\x98\x19\x91\x45\xfe\x06\xbd\x27\x5f\x38\xf1\x5c\x2b\xb1\xfc\x6f\x1c\xf3\x39\xf9\x82\x2b\xbb\x86\x2c\x78\xab\x90\x93\x2f\xf0\xae\xe1\x9a\x88\xcf\x88\xf1\x06\x2e\x11\x31\x32\x84\xbe\xb0\x9d\x88\xb1\x7b\x40\x88\x81\x0c\xb4\x53\xe3\x2e\x39\x38\x92\x28\x62\xd8\xcc\x4d\xf1\x0e\x61\xad\x3f\x89\xe2\x82\x66\x1d\x54\xb6\x8b\x74\x10\x82\x8a\x0a\x21\x14\x48\x22\x00\x9d\x42\xf7\x64\xf3\x74\x97\xf3\xcf\x68\x42\x3a\xeb\xb8\x11\x5c\x07\x7f\xa0\xc1\x9f\x72\xb4\xa3\xe4\x2c\x88\xa3\x50\xd3\x00\xab\x71\x7d\x48\xda\x64\x83\xe0\xca\xd7\xb0\xac\x81\x6b\x36\x29\xb0\x84\xd2\xc8\x22\x0e\xa2\x84\xd3\x97\x35\x8d\x1c\xe0\x9d\xc8\x29\x9f\x45\x91\x7e\x34\xfa\x85\x8e\x8b\x6b\xab\x42\x39\xc9\xba\x1c\xaf\x36\xb4\xe0\xca\xa7\x0e\x75\xc3\x99\xb9\x1e\x2f\x6f\x09\x5c\x30\x69\xa8\x58\xde\x39\x61\xc0\xa7\x3d\x72\x02\xe0\xa7\xdd\x66\xa8\x89\xa3\x1c\x24\x20\xbe\xf8\xca\xb1\x93\x63\x34\x00\x0b\xe0\xd8\xf1\xa5\x2f\x74\x81\x32\xc4\x38\xcd\x36\xc2\x4d\xee\x2e\x7d\x81\x9d\xbc\x8c\xbe\x73\x49\xe0\x53\x5a\xe0\x15\x98\x0b\xce\x21\x48\x96\x15\x13\x7d\x63\x25\x8c\x1a\xfa\xf3\x60\xd1\x29\xe3\xb1\xa0\x95\xf3\xac\x11\x83\x77\xf2\x9a\x3b\xbc\xa7\x27\x50\xe4\x94\xb3\x67\xf9\xa5\x56\x11\xea\x8f\xd8\xa7\x8e\x26\x93\x9c\x16\x4e\xa7\x32\x1a\x2e\xc7\x14\xf5\x2b\x18\x8f\x7b\xa4\xa6\x73\x80\x9d\x22\x28\xa2\xf1\xbb\x20\x2b\x5e\xc3\x4b\x22\xab\xe6\xbe\x9d\xdf\xf1\xf4\x53\xd6\x95\x31\xa6\x44\xc3\x0f\x6e\x95\x6f\x82\x62\xd6\x9f\xc4\x69\x9a\x75\x3a\x4e\x8b\x1b\x64\x67\xab\x4b\x06\x64\x67\xbb\x4b\x1e\x92\x9d\x6d\x31\x68\x84\xbe\x60\x3c\x26\x1b\xa4\xa3\x36\x1d\x03\xeb\x25\x28\x24\xcf\xd0\xde\x45\xc8\xce\x36\x19\x1a\x09\x25\x9d\x95\xa8\xef\x91\x4d\x8c\xfd\x8c\xe6\xcb\xb8\x90\xd4\xc3\x67\xf0\xcd\x32\x2e\xa2\x9f\xa3\x62\xc6\xe7\x44\x52\xa0\xd1\xb7\x9e\xa2\xa3\x9e\x39\x83\xb2\x72\x31\x42\x5e\xbf\x79\xe2\xf3\x93\xbe\xd5\xaa\x6f\x0d\x34\xec\x01\x5a\x23\x6a\x78\xad\xd6\xae\x5e\x38\x34\x9e\x88\x11\x8b\xce\x8a\x5d\x21\xcd\x5e\x06\xe3\x59\xc7\x66\x4c\x11\xa6\x2d\xc6\xf5\x4b\xe7\x4b\xcf\xd5\x69\x17\x17\xe2\x08\x81\xae\x6c\xb8\xda\xce\x8e\xd9\x7d\xb9\x8e\x10\x11\xaa\xb5\xcb\xa8\x98\xc6\x13\x01\x62\xcf\x11\x74\xc0\xed\x92\xc4\x13\x7c\xd8\x93\x85\x9b\x30\x97\xe2\xc6\x1e\xa1\xe2\x19\x1e\x19\x90\x6d\x0d\x7a\x4d\x68\x9c\x53\x6b\x78\x83\x01\x09\xd3\xa4\x5d\x90\x20\x0c\x89\x28\x55\xa4\x66\x95\x7d\x12\x15\xed\x9c\x04\x71\x46\x83\xf0\x92\x8c\xd3\x65\x52\xd0\xb0\x04\x4b\x5f\x69\x9c\xd7\x7a\x11\x0e\x06\xe4\xe3\xd1\x8b\xa3\x21\x99\x44\xd3\x65\x46\x09\x3b\xb0\x25\x34\x67\x27\x40\x76\x4a\xbb\xcc\x4d\x66\xf5\x5b\x10\xc9\x1f\x67\x92\xcd\xc9\xa0\x18\x81\x12\x2b\x25\xcb\x5c\xa1\x35\xa3\x93\x00\xd4\x31\xe7\xb3\x34\xa6\xbc\x87\x51\x32\x5d\xaf\x61\x04\x15\x3c\xc0\xe6\xfc\x62\xd0\x3d\x92\x3a\x2b\xdf\x58\xe4\x72\x4e\x6a\x45\x7d\xcf\x16\xd7\x71\x55\x63\x88\x80\x78\xc3\xe4\x3c\xd0\x64\x9d\xd3\xc2\x99\x53\x4e\x56\x6f\x83\x39\xb5\xf7\x21\x9d\x83\xe5\x4c\xb7\xac\x67\xf3\xa9\xde\xcf\x74\xc5\x9e\x3a\x15\x5f\x14\x18\xd4\x52\xad\xfc\xab\x18\xb6\xac\x64\x91\xd1\xb3\x28\x5d\xe6\xaa\x43\xdb\xbb\x0c\x25\x51\x42\xa2\xa4\x70\x4a\xd4\xe1\x1f\xf5\xd7\xd7\x20\xfb\x9b\xa4\x19\x81\x47\xc2\x11\xd9\x23\x5b\xbb\x24\x22\xdf\xcb\x01\xc8\xf7\xc2\x24\xda\xd8\x28\x2b\xce\xfe\xac\x3e\x6f\xec\x91\x8d\x8e\xc4\x41\x44\x1e\x91\xad\x53\x26\xe1\x93\xab\x2b\xb2\xb9\x5b\x5a\x49\x05\x2b\x17\xf4\xb0\x41\x22\xf2\xb0\x6c\xe6\x36\xec\x5e\x30\xe1\xa0\x8c\xed\xcb\xbf\x6b\x27\xd5\x4c\xb9\xee\x76\xba\xd6\x14\x0e\x06\x64\x12\x65\x79\x41\x68\x4c\xe7\x34\x29\xd8\xf9\x8a\xa3\xa9\x47\xf2\xcf\xd1\x82\x44\xc5\x2a\x53\x6e\x60\x7f\xd3\x87\x7d\x86\xbf\xca\x19\x80\xa7\xf3\x61\x18\xb1\x46\x82\x58\x2d\x72\x81\x4f\x87\xff\xb8\xf8\xf6\xf3\x45\x4d\x3a\x25\x0c\xe2\x24\x22\x1b\x64\xeb\x54\xf2\x09\xb2\x41\x9c\x6e\x78\xd0\x5e\x8b\x60\x8b\xf9\x79\x20\xc5\x56\xe9\xa1\x7d\x4e\x15\x37\x66\x3d\x7f\x68\xa6\xc2\x84\x2d\x13\x53\xb7\x5c\xfc\x35\x94\x49\xca\x18\xd2\x66\x15\x43\x22\x8d\x68\xba\x96\xa3\x0c\x06\x64\x1c\xc4\xe3\x65\x1c\x14\x54\x0a\x3e\xec\xc8\x27\xfa\x42\xa2\x82\xce\x6f\xc1\x8e\x18\x2b\x3a\xf9\x13\x31\xa5\xae\x0d\x7b\xbd\xd2\xbe\x72\xcb\x09\xf9\xfd\x18\x0c\x66\x2e\x5f\x9d\xb7\x10\x47\x5b\x24\xfa\x51\xa3\x0d\x11\xba\x48\x71\x33\x99\x56\x68\x8c\x38\x64\x63\x8d\x91\x4c\x57\xb7\x9a\x4a\x25\xe2\xd7\x25\x95\xeb\x41\x50\xc3\x1e\xf1\x0f\xea\xf7\xe9\x88\x50\x31\xad\x23\xe2\xd0\x20\xdb\x34\x41\x4b\xa5\x92\xa8\x04\x21\x65\x3a\xa2\x72\x84\x88\x12\x70\xc2\x80\xd6\x34\x62\xaa\x35\x44\x78\x88\xbe\xd3\xb1\x81\x9b\xd5\x15\x44\xb2\x14\xa7\x62\x0c\xcf\x89\x38\xf7\x9e\xc2\xad\xe3\xfe\x1d\x6b\x94\xf8\x90\x3b\x30\x32\xb9\xbe\xb4\x5a\xc4\xd0\x8b\xc8\x1a\xb5\x86\xa9\x4a\xe5\xa0\x47\x55\xab\x67\xc0\x18\xe5\x1c\x88\x95\xb9\xeb\x91\x36\x51\x47\xa9\x93\xa8\x4f\x0e\x16\x5d\x2b\x65\x92\x83\x01\xc9\x97\x73\x7e\x43\xe7\xd9\xa5\x84\x88\xa8\xe0\x45\x75\x27\xd1\x29\xe3\x8a\xea\x0b\xb6\x24\x1f\xff\x91\xcd\x9b\x88\x90\xd2\xa6\x83\x82\xc1\x80\x64\x74\x9e\x9e\xc1\x35\x26\x19\x2f\xb3\x8c\xc9\xa7\x4a\x38\x4d\x21\x59\x74\x33\xca\xa1\xe7\x9e\xde\xe6\xab\x68\xfc\x24\x32\x1b\x6b\xfe\x8c\x91\x91\x47\x4e\xfd\x8d\x29\xed\x83\xb5\x0e\x4b\xae\x75\xbc\xa7\x56\xc9\xe3\x3c\x54\x56\x58\x57\x0e\x92\xac\xd8\x0e\x86\x2f\x49\xcc\xfb\x0b\xde\x5b\xd6\xd6\x58\xdc\x32\x61\x53\x0b\xe8\x7d\x87\xdb\xab\xda\x26\x18\xe2\x5a\xb4\xd3\xed\x79\xb3\x9f\xa7\x69\x5c\x96\xc7\x84\x90\x92\xac\xe3\x8a\x3c\x7c\xb9\x59\xda\x6c\x55\x26\xe7\xc2\x65\xb9\xef\x69\x50\xda\xe3\x63\x9e\xb9\xc6\x08\xc2\xb5\xdf\x00\xd4\x29\x9b\x0d\x69\x38\x3b\x7c\xdc\x6b\xf1\xbb\xdf\xd6\xf0\x1b\xf8\xc9\xfa\xd6\x1a\x3e\x61\xbf\xf1\x75\x6c\x6b\xf8\xb4\xe7\xb3\xf5\x88\x92\xa2\x35\xdc\xda\x64\x3f\x33\x1a\xc4\xad\xe1\xd6\x36\xfb\xcd\x6f\x65\x5b\xc3\xad\x1d\xf6\xb5\xe4\x50\xd0\xc0\x52\x80\x3d\xb9\x3e\xed\x3d\xfd\x2d\xed\xa2\x6a\xae\xa1\x6f\x66\x4d\x84\x2b\x59\xc5\xa8\xc8\x2c\x67\xdb\x16\xe1\xdc\x15\x4d\x8c\xfc\x45\x2b\x2c\x8d\xcc\x9e\x34\xa9\xeb\x16\x76\x47\x25\xc6\x46\x8d\x1a\x45\x57\xe2\xde\xe9\x92\x6c\x27\x5b\xd2\x06\x26\x4c\xd6\xb0\xeb\x2d\x99\xbe\xbb\xb7\x64\xba\xb7\x64\xfa\x6f\xb1\x64\xd2\x0b\xe1\xae\xcc\x99\x9e\x47\xd3\xb7\xcb\xf9\x08\x58\xa1\xe2\xce\xa3\x68\x9a\x40\x62\xff\x17\xc5\xc9\x97\x45\x14\x9b\xf6\x35\xfd\x01\xa4\xf1\x7f\x25\xd8\xd8\x0b\x32\x4e\x93\x49\xe4\x18\x03\xc9\x93\x19\xda\x15\xe0\xec\x02\xdb\x82\x1c\x38\xe7\xd5\x39\x01\x7e\x4f\xe0\xc1\x06\x3b\x67\x31\xbe\xa5\xad\x64\x61\x29\xb0\xb9\x01\xe5\xcc\x43\x86\x63\x0e\x19\xe5\x24\xa1\xd3\xa0\x88\xce\x68\x4f\x72\x22\xb8\x38\x2a\xce\xd3\x76\x4e\xc6\xe9\x7c\x21\xa5\x55\x28\xc5\xe6\x56\x95\x9c\xc4\x69\x50\x44\xc9\x94\x2c\xd2\x28\x29\x7a\xfc\x3a\x94\x91\x7d\x98\x9e\x27\xd6\x99\xce\x54\x93\xb8\xc7\xb7\x2b\x8e\xe5\x2b\x85\xef\x6b\x39\x16\xb6\x94\x12\x4a\x43\x38\x45\x8f\xf4\x1c\x87\x7e\x63\x18\x40\xda\xb5\xb2\xf3\x31\xdb\x35\x18\x30\xd4\x2f\xb9\xb0\x6a\xb7\xcf\xe7\xa2\x33\xee\xbf\xfc\xf8\xea\xd3\xf3\xc3\x9f\xde\x1e\xbf\x79\xfe\xf2\xfd\xa7\xf7\x47\xc7\x6f\x5f\x1c\xbe\xfd\xe9\xd3\x9b\xa3\x17\x2f\xd1\x19\x4e\x69\xe2\x60\x26\xfb\x8b\x20\x7c\x4d\x27\x45\x87\x7f\x15\xe9\xc7\xf3\x34\x3f\x50\x58\x14\x6d\xf6\x8b\x54\x88\x4b\x5b\x4f\xba\x3d\xf2\xe4\xb1\x79\xc3\x83\x77\x4b\x18\x4e\x87\x37\x62\x1a\x60\x98\x13\x2f\x0f\xbf\x25\x38\x7f\xae\xce\xc6\xe6\xa1\x79\x55\x1c\xba\x52\x87\x81\x45\x0f\x42\x8a\xf4\x15\xbd\x90\xe3\xce\x97\xa3\xbc\xc8\x3a\xdb\x08\x7f\xb1\x75\xb5\xcf\x8b\x4b\x2d\xf7\x06\x79\xb2\xd3\x25\x03\x8c\x22\x1b\xdd\xef\xa3\xe9\xac\x10\xc5\x7a\x24\x26\x0f\xbf\x32\x3e\xc5\x0e\x7c\xa7\x68\x2d\x95\xe9\x6e\x8d\x5d\x79\x3c\x33\xd1\xaa\xb4\x73\xbf\xdb\x0c\x58\x6a\x53\xde\x58\xb7\xcf\xd7\xfc\x06\xa9\x9f\xa0\x3a\x4e\xc7\x25\xf9\xf2\x15\xf1\x41\xe6\xdf\x76\xee\x94\x71\x67\xf3\x59\x9b\x64\xe9\xfc\xb8\x98\x3c\xbd\x9f\x38\xcf\xc4\x89\x77\x46\x65\x8c\x4c\xbc\x42\x92\x93\xc6\xbe\x69\x90\xac\xce\xc8\xec\x27\x47\xe5\x73\xd6\xde\xbc\xdd\x5f\x9b\x6c\x88\xea\xc9\x33\x42\xda\x5b\x6d\x32\x24\xed\xcd\xf6\xed\x79\x54\x1d\x26\xd9\x89\x95\x95\xfa\x07\x83\xcb\x09\x13\x8c\xe7\xcb\xb8\x88\xb8\x50\x39\xba\x24\xdb\xff\x99\x33\xf1\x5c\xd9\xd0\x05\xac\xe6\x82\x4e\x69\x56\xb1\x95\xbc\x17\xb5\xd6\xed\xdf\xab\xce\x88\xb0\x65\x2e\x99\x11\x81\x26\x8b\xfa\x18\xd6\x54\x8b\x6a\x73\x8d\xe6\x34\xb7\xb2\xb6\xbb\xfd\x45\x7a\xde\xd9\xda\x7e\xda\xed\x9a\x28\x3d\x98\xd1\xf1\x67\x12\x4d\x0c\x9c\x22\xb1\xc8\x42\x44\x1e\x4d\x13\x1a\x1e\xe6\x6f\x75\xb6\xa3\x88\x56\x75\xcc\xe8\x85\xe8\xb1\x89\x0c\x49\xb4\x70\xe8\x83\xb6\x0b\x53\x12\x4b\xd9\x91\xe5\x3c\x62\x62\x78\x10\xe7\xda\x6a\xd9\x6e\xbd\x16\x5f\x3e\x0c\x49\x76\xb3\xd9\x23\x5b\xdd\x1e\xd9\x7a\x82\xe4\x91\xed\xae\x91\xdb\x25\x7b\x7b\x7b\x8c\x64\xbd\x54\x98\x31\xf6\xf1\x28\x88\xa1\x53\x84\xab\x0e\xf4\x85\x07\x17\x35\x5d\x22\xe2\x8a\x04\x5b\x08\x34\xc8\xc3\xb1\x83\x65\x38\xd3\x82\x61\x45\xbb\x4a\x38\x84\x65\x11\x4d\x09\x97\xd3\x2d\x7a\x53\x5d\x30\xf0\x67\x18\xc5\x32\x60\x3e\x8f\x7b\xbc\x37\x48\x97\xd9\xe9\x92\xab\x2b\xd2\xda\x6c\x09\x1d\xf1\x60\x40\xc6\x8a\x8a\x98\xf0\x2c\x27\x52\xb5\xce\x81\x60\x96\x95\x98\xed\x4a\xd8\xf2\xf2\xd6\x9a\x64\x31\xb1\x1e\xfd\xa3\x67\x72\xf9\x7c\xce\xa3\x64\x69\x2f\x81\xf6\xe4\x96\x7f\x6d\xa8\x5b\x56\xbe\xa5\xee\xc6\x1a\x74\xe8\x06\xe4\xb3\xac\xa6\x9f\xe3\x4a\x02\xf2\x91\x0e\x5d\x89\x76\x44\xf3\x2e\xd5\x1c\xdf\x05\xd9\x7c\x1d\x94\x09\x7e\x5f\x86\x32\x87\x71\xd7\xa2\x0c\x30\x86\xe4\x61\x13\x45\xa2\x39\x17\x45\x0e\x27\xf7\x99\x9b\x5b\x2b\x51\xc0\xf4\xc3\xe8\x2c\x0a\x69\xf8\xfc\xb2\x82\x81\xdf\x84\x9a\x6a\x70\x73\x7c\xd7\xc8\x59\x96\x62\xe7\x78\x65\xf4\x1c\xdf\x06\x3f\xee\x15\x2c\xaf\x5a\xa1\xa8\x4c\xdc\xd2\xaf\xa5\x1b\xe3\x45\x6e\x6b\xe6\x5c\x94\xe2\x48\x34\xed\xa2\xc8\x11\xce\x7c\x18\xf2\x2c\x2f\xd8\xac\x6e\x29\xad\x6d\xb5\xc9\x33\xbe\x2f\x0b\xb7\x18\xab\x61\xb3\xf4\xd8\x88\x1e\xe5\x56\x6c\x7c\x31\x9d\x68\xc4\x31\xf1\xa1\xe2\x60\xe3\xc8\x1d\x49\x30\xa7\xfc\x75\x0f\xfb\x65\xc9\x5f\x02\x86\xd5\xa9\x6a\xf0\x60\xde\x39\x81\x42\x1b\x3d\x82\x35\xe5\xac\x90\x78\x5f\x4d\xf6\x48\xd9\x33\xdd\x87\xdd\x01\x3a\xcf\xe4\xd1\xaf\x82\x27\xe6\x70\x45\x25\xca\x9f\x6c\x9d\x9a\x72\x70\x7b\xf3\x82\xc9\xcb\xee\xe4\xf6\xf3\x38\x1a\x53\x26\x96\x6c\x93\x87\x50\xdd\x8a\x74\x5e\x33\x33\xf8\x08\x7e\x67\x13\xb4\x2a\xfa\x4b\xf5\x00\xce\x26\xa3\xce\x87\x16\x1f\xe0\x88\x13\x37\x60\x36\xe6\x9e\x3c\xee\x8a\x3d\xbc\x48\x05\x7c\x97\x3c\x94\x47\x4a\xdf\x0c\x58\x15\x71\xd1\xf0\xc9\xe3\x9e\x68\x7f\xb5\x29\xa8\x38\x92\xf3\xe1\x7b\xce\xe4\x77\x8a\xfd\x20\x1f\x47\x51\x15\xfe\x3d\x67\xf9\xdf\x10\xf3\x52\xa5\x03\xaa\x81\x66\xf8\x5f\x6d\x02\xb4\x6f\x9a\xb2\x19\xd8\xd7\xde\x6b\x4a\xa6\xa0\x94\xb7\x97\xa0\x5c\x55\xe8\x62\xdb\xe7\xbd\x66\x05\x69\xca\xc0\x5d\x6b\xf3\xa2\x45\x36\x88\x38\xe0\x00\xda\xf9\x6f\x65\x53\xf0\x78\xb3\x47\x70\x52\x99\xc3\x80\x2f\xd2\xee\x03\x1d\x34\x87\xd6\x77\xcf\x86\x81\x15\x3b\x74\x52\x1c\x38\xbc\xc0\x87\x65\x19\x4e\x29\x8e\xcc\xa1\x9b\xe4\xf6\x23\x4d\xe3\xa1\x9d\xe0\x40\x31\x09\x64\x68\x27\x60\x28\x25\x96\x0d\xed\x04\x17\xea\xd8\x01\x3b\xf6\xc2\xe1\x46\x75\x8a\xa7\x3e\x17\xf0\xd8\x0f\x89\x07\xab\x53\x3c\x70\x18\xdb\x28\xc9\x85\xf4\x4d\x8f\x9b\xe3\x96\x33\x27\x08\xa7\xb9\xb0\x82\xea\x87\xde\x75\x77\x2d\xef\x74\xcd\x9b\xa1\xd6\x70\xeb\x69\xaf\x65\xde\x28\xb5\x86\xdb\x60\xbe\x00\x0b\xa3\x35\xdc\xda\xea\xb5\xf0\xbd\x54\x6b\x68\x7e\x5e\x9f\xf6\xb6\x36\x7f\x67\x7f\x2e\x87\xdc\x30\xbe\xc2\x01\x51\x94\x14\x65\xfe\x87\xc4\xd5\x55\x94\x14\xdc\x35\x0b\xfb\xf1\x58\xfd\x3a\xd5\x89\x3b\xe8\xb7\xe5\xb9\x25\x4a\x0a\xee\xb7\x25\x4a\x8a\x27\x8f\x15\xd8\x53\x5d\xd1\xf6\x37\x4f\x4a\xea\x62\xf0\x35\x7e\x8c\xec\xa3\xe1\x57\x74\xc5\x05\xe0\xb6\x0d\xc2\x61\x52\xac\x68\x76\x61\x94\xa8\xb0\xb6\x80\xe6\x2a\x4a\xde\xc8\xb6\x22\x4a\x0a\x29\x2a\x3e\xbb\x91\x3f\x17\xde\xab\x7a\x1b\x88\xad\x46\x21\xec\xee\x8d\x20\xee\x8d\x20\xfe\xbc\x46\x10\x44\x5b\x41\x70\x51\xe9\x8e\x0c\x20\x1a\xd8\x35\xd8\xac\x9e\xdb\x2d\xa4\x60\x8d\xae\xdd\x76\xf4\x3d\x12\xea\xf9\x8c\x26\xea\xb1\x62\x8f\x1b\x7e\x33\x01\x5c\x79\x6f\x90\x92\xe5\xc0\x6b\x18\x61\xe9\xbe\xed\xb7\x89\xc0\x49\xa5\xfc\xc8\xff\xbf\xba\x22\xed\x36\xe2\xb3\xa9\x7c\xb6\xc0\x7f\xec\xa2\x77\x86\x51\x22\x5a\x6f\xec\xee\x63\x4a\x0b\x6c\xef\x0b\xd6\xe3\xed\x5c\xbe\x02\x05\x5e\xc2\x2a\x31\x4c\xdd\xb5\x7c\xcf\x2d\x5d\x4d\x29\x5a\xaa\x99\x74\xad\xb8\x32\xd2\x91\x7d\xec\x1a\xd6\xec\x80\x1e\x6c\xcd\x6e\x37\x52\x69\x87\x06\x26\xfe\xc6\xb1\x03\xdf\x3d\x36\x46\xc6\x38\xa3\x8c\x98\xe4\x7a\x30\x7d\xb2\x70\x72\x0f\xa3\xc9\x84\x82\x35\x32\x47\xb9\x75\x2e\x39\x57\x8f\x42\xf0\x71\x44\xa2\x44\xcc\x92\x34\x5c\x4e\xbc\x87\x10\xf3\xe8\xc2\xb6\x43\x5f\x3f\x82\x05\xe7\x30\xaa\x17\xe5\xa8\x3c\xf7\x3f\x98\x35\xe9\xae\xf4\x4a\x4f\x13\xa4\x22\xd5\x55\x30\x9a\xce\x47\x51\xe2\xba\xb7\x29\xd2\x29\x65\xdc\x9d\xd5\x40\xa7\x7d\xbe\xa8\x82\xc5\x82\x26\xb0\x96\x82\x84\x3f\x80\xb0\xb0\x2b\x6a\xab\xbb\x84\x11\x8c\x69\x16\x8d\x19\x7b\x92\xbd\xaa\x2f\x2c\x6e\x4f\xd3\x89\x80\x85\x7d\xa8\x12\xb5\x72\x78\x75\x7a\xbf\x2a\xb4\x2a\xbd\x05\xbf\x32\xd9\x25\xf5\xd8\x1d\x07\x71\x2c\xf0\x2b\xef\x70\xf8\x88\x66\x81\x5e\xba\x79\xf4\xab\xf0\x2c\x08\x77\x75\xb3\x20\xef\xb1\xff\x25\xa1\x81\xef\x5f\xcf\xa5\x1d\xc6\xb7\x32\x04\xf5\xeb\x4c\x2b\x51\xe3\x77\xcd\xe4\x5b\xb8\x62\x55\xac\xef\xed\x81\x74\x31\x89\x12\xeb\xa1\x52\x1d\x12\xb4\xcb\x22\x51\x95\xb8\x5e\xb6\x95\x06\x3c\x77\x3f\x7f\x5e\x7e\xf4\xe7\x1a\x5f\x57\x43\xd3\x60\x99\x19\xb5\x57\x0d\x7a\x1d\x46\xad\xdf\xff\x77\xc9\x33\xd2\x6e\x93\x61\x33\x6b\x2c\x84\x32\xaf\x4d\xd6\x0a\x78\x63\xbc\x9f\x2b\x27\x94\xcc\xe8\x7b\xeb\xa5\xf5\x17\x7e\x9c\xc9\xbd\x47\x5e\x09\x07\x98\xe1\x07\x73\x4c\x64\x40\xe2\x95\x58\xd4\x8d\x79\x51\x08\x4e\x95\x6c\xfc\xf9\x9c\x33\xa9\xe5\xb5\x4b\xf8\x95\x1f\x29\xa1\x3b\x31\x61\x9d\xd5\x51\x67\x6c\x6b\x25\xb8\x43\x9b\x92\x1f\x79\x32\x21\x90\x37\xf0\x0d\xb0\x48\xe7\x8b\xe2\x12\xab\x04\x1b\x6c\xa2\xb5\xab\xd0\xa4\x47\xc4\x9e\x86\x20\x7d\xac\x80\x1b\xe9\x6e\xaa\xd4\xd1\x94\x17\x13\x95\x03\x11\x55\xd6\x8d\xc1\xb8\x58\xd9\xf0\x88\x05\x37\x19\x87\x7e\x89\x57\xee\x1c\xea\x75\x94\x17\xce\xb3\xbf\x13\x63\x34\xa7\x1e\x8f\x50\x95\xa3\xd7\x35\xbb\xdb\x8b\x7a\x14\x24\xaf\xe9\x97\x8b\x90\x9b\xb5\x8a\x47\x70\x4a\x15\x59\xa4\x05\x7a\xe8\xca\x0b\x4b\xe1\x88\x3b\x1d\x22\xc6\xc3\x3e\xf5\x7e\x50\x80\x9a\x6f\x8a\x8c\xbd\x4d\xad\x47\xbe\x7d\x95\x2c\x48\xfb\xf6\xcb\xf6\x14\x62\x36\x4f\xf6\x70\x8f\x35\x2c\x1e\xc6\xc6\x9e\xab\xe8\x17\x4f\xb5\xdc\xe7\x59\x1c\x52\x8b\x40\x9d\x14\x3f\xb9\x55\x4f\xe6\x06\x03\x39\xdd\xf4\x8c\x66\x97\xc5\x0c\x1c\x91\xa0\x7a\x30\x76\x5c\xaf\x53\xd2\x1c\xcd\xc1\x8f\xf1\x4c\xd7\x7f\x43\xa1\x1c\x2f\xdd\x69\x13\xae\xd2\xf9\xba\x47\xda\x6d\xa9\x7c\xaf\x50\x52\xbc\xe3\xb3\x64\xe9\xf4\x94\xfa\xee\xfa\xb4\xb7\xd5\x28\xd0\xde\x57\xd4\xc9\xc1\x6d\x74\xb5\x52\x2e\x63\x20\x25\x5a\x39\x69\x63\xc6\xfe\xe7\xaa\x32\xf8\xf5\x58\xff\x3c\x45\xc9\x3b\xf8\xc3\xd2\xcd\xb1\x34\xae\x9c\x63\xbf\xa4\x76\x8e\xfd\x7e\x8a\xaa\x43\xfa\x39\xa7\xc6\x06\x1a\x3a\xe7\xee\x7d\x15\x15\x1d\x2b\xbc\x8a\x8e\x8e\xc3\xdb\x4a\x3a\x96\xba\xa2\x96\xce\x2c\x52\xa1\xa6\xe3\x2d\x56\x95\xbd\x89\xa2\x8e\xe1\xb6\x44\x51\xd7\xcc\x4b\xbe\xe8\x56\x03\x45\x5d\xa3\x50\x5e\x5f\xeb\x65\x9d\xe7\xf6\x6f\x15\xf2\xe0\xc5\x57\x21\x10\x59\xc2\x26\x11\x9e\xbe\x22\x91\xd8\x85\x2a\xc8\x44\xb6\x5b\x5d\xfe\x46\x3a\x5d\x2e\x49\x35\x79\x30\xe7\x69\xef\x6e\x9f\xca\xa9\x51\x36\xa0\xbb\xbb\x0f\x3d\x52\xf9\x78\xc7\xc3\x87\x91\x7f\xdb\x28\x6f\xee\xd8\x76\x4c\xb3\x22\x88\x12\xbf\x73\x5b\x07\x91\xfc\x36\xa9\x86\xa8\x39\x50\xdf\x4c\xaf\x26\x6b\x51\xc4\xca\xa8\x75\x05\x51\xd0\x6c\xce\x8e\xfc\xd1\x04\x6a\x36\xfb\x1d\x0a\x97\xb5\x64\x1a\x9d\xd1\x44\x9a\xb4\x98\x47\xea\x32\x5f\xb9\x96\xfd\x0b\x3f\x66\x6b\x73\x5b\xc0\x32\xaf\xdc\x69\xd7\x6f\x7c\x8b\x21\x9a\x2f\x11\xee\x99\xb6\x55\x78\x85\xe3\xf4\x8c\x66\xd9\x79\x16\x15\x05\x05\x73\x2f\xde\xab\x16\xd9\x80\xde\x37\xc6\xdd\x39\x68\xd9\x73\xfc\x8a\x1f\xac\x20\xf4\x51\x34\x4a\x04\x0a\x0b\xd7\xe9\xb0\xfd\xd0\xbe\x11\x32\x5d\xad\xa4\xd5\x9c\xd6\xda\x96\xe0\xcd\xe3\x3f\xc0\x8f\xc1\xc1\x00\x54\xe1\xc1\x9c\xad\x0a\x70\x79\x28\xb4\x59\x6c\xbc\x8c\x13\x50\x7e\xc7\x10\x47\x9f\x29\x09\x48\x1e\x25\xd3\x98\x2a\x27\x5c\x00\xd9\x37\xec\xa1\x81\x82\xb9\x8f\x19\xee\x93\x83\xb7\x76\x75\x45\x4e\xda\x27\x5b\xa7\xed\xd3\xae\x12\x06\x6b\x7c\x00\x88\xee\x99\x78\x67\x5f\xd8\xaf\x61\x89\xe8\xce\x6d\xa0\x38\x2a\xc0\x56\x61\xab\x47\x1e\x81\x31\xf6\x26\xf4\x65\x0b\x7b\xa1\xd1\x1d\x72\x04\x59\xe9\xa5\xa1\x27\xfd\x3a\x94\x9d\x16\xa4\x37\x87\x87\x12\x50\x37\x30\x18\x90\x20\x8e\xc9\x28\xc8\xa3\x31\x77\x7e\x00\x2f\x05\x76\xb6\x85\x02\x27\x4e\xd9\xc9\x58\xf6\xa6\x47\x76\xb6\xeb\x8c\x4e\xcc\x85\x2d\x38\x9a\x3c\x81\x4b\x5d\x24\xa1\x53\x10\x20\x21\x22\xd4\xc9\x69\x8b\xec\xfd\x00\xeb\x53\xa7\x3d\xe6\x89\x95\xca\xb4\x7d\x59\xdb\xaa\x1c\x60\x46\x4b\x7b\x56\xb1\xda\x71\xab\xa5\x34\xab\x7d\x7e\x19\xde\x60\x1c\xa2\xdb\xb5\xb6\x51\x54\xe4\xc1\x03\x82\xbf\x4f\xd0\x6f\xe4\xff\xed\x54\xee\xba\x2a\x2c\xc6\x60\x7a\xa3\xb9\x11\xcb\xb7\x6a\x6a\xe4\x2c\x98\x73\x23\x26\xcc\x9c\x1a\xe4\x6e\xed\x96\x33\x63\xf5\xab\x62\x62\x50\x9b\x5f\x7b\x5e\xee\x72\x62\x4c\xbf\x27\x9a\x91\xa2\x99\x80\xb3\x51\x0b\x6c\x11\xb6\x39\xd2\xf9\x21\xa9\x25\x8c\x15\xb6\xc4\x54\x6c\x3d\x56\x80\xdb\xa7\x27\x3b\x02\x54\xa6\x71\x10\x05\xb1\x75\x6a\x25\xe8\x6f\x77\x77\x00\xac\xde\x60\x7b\xc0\x63\x11\x43\xac\xdf\x13\x50\x63\x77\x34\x91\xd1\x84\x74\x50\x16\xe2\x90\x36\x3f\xbe\xe1\xc4\x02\xc3\xf6\xbd\x86\xd8\xaa\x98\x72\xb1\x49\xc8\x53\xb5\x6f\x9e\x61\xde\x7c\x53\xdd\x52\xc1\xf7\x9c\x09\x17\x9f\x2d\x63\xde\x8d\x8a\x4e\xcc\xca\xf1\x74\x6b\xd7\x6b\x8d\xe6\x59\x65\xf0\xa1\x88\xfc\xd2\xf9\x35\x5c\x28\x96\xee\xf6\xc2\x55\x51\x1c\xe4\x05\x39\x39\x65\xc2\x04\xaf\xf7\x46\xd3\xbe\xee\x9f\x77\x35\x07\x20\x67\x11\xc7\xc1\x12\x1c\x68\xf4\x33\x28\xf8\x54\x34\xd0\x84\x48\x2a\x8c\x63\xd1\x11\x46\x71\x60\xfb\xa6\x89\x8c\x2e\x49\x48\x27\xc1\x32\x06\x45\x68\xbe\x64\x72\xaa\xda\x98\x5b\xc2\x47\x4d\x4f\xc4\x78\xb4\x67\xd1\x38\x46\xdd\x80\x01\xeb\x1d\x71\x45\x51\xb8\xe1\xe9\xad\xd4\xa8\x5e\x3a\x6a\x97\x3a\x62\xb4\x44\x72\x7b\x8d\x00\xc5\x0b\x52\x3e\x69\x31\x8a\xef\x91\x16\x5b\x04\xec\xbf\xd3\xd6\xa9\xa6\x76\x01\x81\xd2\xa0\x50\xb2\x8c\xed\x67\x0f\x68\x36\x1b\xa1\xcd\xf6\x2e\x67\xf5\xb7\x66\x21\xb8\x1e\xaa\x9c\x95\xc0\xf7\x06\xe1\x29\x8f\xcf\x7a\x0e\x37\xbc\x6c\x38\xc6\x78\xd9\xbf\xb0\xea\x2d\x22\x16\xdc\xaa\xf3\xef\x13\x7e\x1a\xff\xf7\x69\xb7\x5e\x44\x10\xca\x5b\xe5\xea\xa1\xfc\xde\xc1\x8a\x61\x21\xa1\x9b\xb3\x0e\xf9\xf0\xd4\xbd\xcb\xb2\x70\xe6\xb9\xb4\x10\xf7\xe8\xf6\xc6\xe0\x75\x46\x6d\xde\xca\x08\x3f\xa8\xd2\x03\xaa\xcd\x16\x6a\x5c\xc1\x2a\xfb\x6f\x6c\x4c\xbc\x4b\x4a\xff\xfc\x5e\x51\x5d\xa7\xb2\x34\x9e\x60\x67\xb2\x82\x95\x39\x85\xd4\xb3\xe4\x93\x53\x9f\x07\xf1\xfe\x62\x99\xcf\x3a\x8e\x5b\x52\xf9\x4c\x5b\xfa\x18\x75\x6b\x66\x63\x71\x1d\xae\x9f\xf9\xbc\x7f\xe2\x96\x90\x13\xcf\xce\x59\x8f\x60\xe7\xb2\x96\x6f\xd2\x5b\x79\xf4\x15\x13\x88\x3d\xf9\xde\x7a\xfe\xa0\xeb\x8e\xd4\x21\x10\xff\xdb\xcf\x9f\xcf\x1d\x6b\x8d\x1b\xd6\xd2\x89\x60\xb3\x09\x7e\x52\x2b\xe6\x63\xe5\xd9\x58\x73\xee\x08\x2d\xdd\x91\xb1\x24\x91\x3b\xdb\x26\x0e\x41\xf9\xfd\xe8\x24\x4b\xe7\x5e\x73\x03\x0e\xe5\xe3\x2d\x23\xfb\xc1\x8e\x65\x20\x64\x58\x06\xad\xf0\x60\x4a\x32\x35\xde\x72\x03\x16\x25\x06\x82\x59\x94\xe1\x4c\xb3\x86\x55\x7d\x15\x5e\x05\x7b\x13\xbe\xb1\xe4\x82\xae\x78\xe2\x03\xdd\x93\x82\x8e\x40\xd7\x43\xb2\x0d\xc6\x0f\x5d\xe9\xce\x59\x20\xaf\x6c\x11\x55\xd6\x89\x9b\x77\x2a\xf6\xad\x28\x28\xf0\xa1\xe0\x77\xec\xb8\xf4\x06\xd9\xe1\x1e\xef\xf9\x6e\x9b\x33\x90\x9c\x04\x93\x82\x66\x6a\x91\xe0\xfe\xde\x68\xad\xfa\xcb\xf8\x1c\x77\x6b\xce\x51\xe2\xb0\x9b\x54\x62\x4f\xc4\x8d\x79\x5b\x56\x3f\x76\xea\x51\xea\x43\xda\x0e\x78\x53\xc9\x68\x1a\x72\x1a\xf2\xb0\xba\x6f\x0c\x76\x63\xaf\x1a\xa6\x11\xa3\x32\xbd\xcd\xa2\x69\xdf\x20\xd1\xdd\x72\xad\x3f\xc4\x1e\x82\xff\x1a\x52\xbf\x34\x48\x6d\xf8\xf7\x87\x22\xfe\x7b\xda\x47\x7f\xbf\x0b\xed\x13\x2f\xe9\xe3\xe8\x8c\x37\x25\x7d\x3b\x86\xd8\x8a\x9b\x8a\x43\xac\x76\xfd\xcd\x76\x16\xb3\x17\xab\xd4\x2f\xe6\xcf\x4b\x6f\xb1\x43\x5f\xfe\xf5\x57\xbe\x84\x17\xe2\xd6\xcf\x35\x52\xad\xeb\x7e\x87\x6c\x91\x0d\xb3\x77\x5d\xee\x90\x89\x87\x11\xf3\x4c\x3d\x77\x3f\x6c\x5d\xba\x19\x0f\xb6\x2b\x9c\xd9\x1b\xb8\xb6\x2c\xbe\x0c\x2e\xb6\xb6\xe2\xd8\xf0\x9c\xab\x95\xb5\xdd\x35\xd5\xaa\xde\x8b\x44\xab\xeb\xb5\x17\xbc\xe5\x57\xbb\xea\x4d\xdc\xf5\x69\x6f\xeb\xf7\x8e\xbb\x7f\x5c\xff\xec\x6d\x59\xf1\xee\x4d\x78\x22\x81\xff\xb9\xad\xcb\x52\x3f\x7d\x5b\xa2\xb7\x6f\x4b\xfc\x60\x6d\xe9\x79\xfd\xb6\x54\xcf\xdf\x96\xe8\xfd\xdb\x12\x3d\x80\x5b\x9a\x2f\xe0\x9c\x1a\x1b\x58\xd8\x38\xfe\x51\xbe\xe2\x23\xb8\x63\xef\x2b\xb8\xe3\xd5\x9f\xc1\x1d\x37\x7d\x07\x77\xec\x3e\x84\x3b\xbe\x83\x97\x70\xcb\x5b\x3f\x85\x3b\x6e\xfc\x16\xee\xf7\x0e\xea\x7f\xdc\xc0\xe2\x6c\x59\x65\x72\x26\x5d\xab\xf0\x1f\x82\x38\x91\xd5\xd9\x12\x9b\x9d\x2d\x0d\x2b\xb1\xa5\xcf\xf0\x6c\xa9\x2d\xcf\x96\xd8\xf4\x6c\x89\x6d\xcf\x96\x96\xf1\x99\xa7\xde\x26\x8b\xe3\x37\xb5\x3f\x3b\xf6\x1b\xa0\x1d\xdf\xc0\x02\xed\xb8\xb1\x09\xda\xb1\xc7\x06\xcd\x2e\x7d\xb3\x35\x52\x61\x86\xd6\x74\x91\x34\x37\x44\xfb\xb6\xc9\x2a\x69\x2f\x73\x0a\x8a\xd9\x71\xd1\xe6\xd1\xf8\xa6\x29\xa1\xc9\x19\x09\x53\x0a\xd6\x0a\xf0\x3a\x30\x48\x42\x70\x60\x4b\xfe\xf9\xe6\xf5\xab\xa2\x58\xbc\xa7\xff\x6f\x49\xf3\x62\x0d\x04\xb3\xcb\x05\x4d\x27\x56\x0e\xf7\x63\xa3\xde\x6f\xb4\x25\x5e\x44\xc3\x7d\x1b\x9a\x7c\xb9\xde\x5d\x33\x22\x45\x96\x42\x9a\x09\x20\xa9\xff\x92\xcf\xd8\xee\x13\x4d\x93\x34\xa3\xc3\x38\x4a\xe8\xda\x35\xb7\x58\x65\x78\x68\xe4\xea\xfe\xfe\xe5\xec\xfd\xcb\xd9\x3f\xf1\xcb\x59\xfe\x6a\x56\xd8\xb0\x19\xcf\x66\xf9\x86\x43\x6e\xf6\x7a\x56\xec\x7d\xc7\x45\x14\x43\x9d\x5c\x9f\x09\x6b\x87\x3f\x4f\x72\xc0\xa2\xe2\x52\xb1\x44\x5d\x64\x1c\x07\x79\x4e\x4e\xa0\xc8\xa9\xe8\x26\xcf\xd0\x4c\x98\x57\xb5\x36\x80\x7b\x23\x58\xa5\x42\xb9\xca\x38\x08\xa9\xf0\x64\xdd\xdc\xc9\x39\x40\xb2\x9a\x8e\xdf\x1e\x7e\xfc\xc0\xce\xd6\x30\x09\xed\x73\x1a\xb5\x39\x69\xb6\x3f\xa3\xdf\x6f\xd0\xef\x9f\xd0\xef\xfc\xd7\x60\x94\xca\x8f\x49\x94\x24\xf4\x52\x7d\xd1\x79\x91\xc2\x53\x46\x99\xb2\x88\xc6\x66\x42\x12\x24\x66\xc2\x3c\x1a\x67\x76\x4a\x1c\x47\x4e\x21\x03\xde\x00\x95\x1f\x46\x91\x69\x16\x24\xa1\x1a\x8a\x91\xf5\x93\xf1\xf5\xd1\xf8\x7a\x67\x7c\xbd\x34\xbe\xfe\xcf\xf8\xfa\x97\xf1\xf5\xd6\xf8\x7a\x61\x7c\xfd\xc3\xf8\x3a\xe6\x5f\x6b\xa7\xe5\xae\x6b\xd8\x1c\xbd\xdb\x7f\xc1\xa6\x78\x48\x76\xb6\x7b\x2a\xf1\xc3\xe1\x4f\x6f\xf7\x3f\x1e\xbf\x7f\xf9\xe9\xf5\xcb\xb7\x3f\x7d\x7c\x35\x24\x8f\x75\x26\xcc\xea\x50\xff\xd4\x39\x25\x94\x33\x24\x5f\x88\x95\xa0\x9d\xa8\x43\xc6\xa7\x17\x47\x3f\xbf\x25\xd7\xba\xa6\x77\x47\xaf\x5f\x33\xe8\x8f\x87\x6f\x5e\x1e\x1d\x7f\x1c\x92\xad\xcd\xcd\xcd\x81\xe8\xa1\xb8\xf1\x7e\x1e\xa7\xe3\xcf\x43\xd2\x66\xac\x33\x2f\xda\x46\xde\xfe\x18\xe2\x18\x0f\xf5\xdb\x46\xfe\x00\x83\xed\xe7\x75\xbe\x4f\xee\xe3\x60\xdc\x6f\x64\x7f\xf5\x8d\x6c\x4d\xb9\x80\xc8\x67\xc1\xce\x5d\x79\x80\x38\xc8\x2e\x17\x45\xfa\xf7\x0f\x78\x73\x18\x43\xda\x23\x1d\xfe\x82\x35\xe8\x05\x18\xb0\x9c\xb6\x37\xb4\x93\xeb\xbe\x01\x28\x2e\xc7\x0f\x54\x45\x12\x79\xf0\x40\xe6\xf6\xa5\xbf\x08\x2e\x26\xcf\xe8\x45\xdb\x7e\x45\x67\x78\xfe\xfa\x81\x6c\xb3\xd2\xb6\xeb\xe3\x6d\xe9\x2e\xd2\x2c\x4e\xe4\x65\xb8\xba\xe0\xb7\x9c\xb3\x13\xeb\xb5\x1d\x07\x95\x38\x62\x9d\xeb\xbf\xa2\x17\x7d\xd0\x5e\x0a\xcf\xbd\x3e\x1b\x23\x86\x15\x39\x6c\xdd\x3a\x3f\xd1\x71\xf5\xdb\x90\x6c\x7f\xf3\x84\x97\x44\x8f\x93\xe5\x9b\x33\xc6\xf2\x14\x8e\x5b\xc3\x6f\xbe\xeb\xb5\x4c\x94\xb7\x86\x4f\x37\xaf\x4f\x7b\xdb\x8d\x7c\x3e\xdd\xf3\xbd\x7b\xbe\xf7\xe7\xe5\x7b\x9a\xed\xf1\x77\xfe\x77\xc0\xf7\x2c\xd9\x7d\x75\xd1\xdd\x23\xb9\xcb\x82\x3e\xc1\x7d\xa5\x50\x43\x36\xaf\xed\x0f\x04\xbb\xd7\xb1\x88\x26\x4f\x31\x00\xfb\x56\x22\xfc\x32\x89\x8a\x37\xc1\x42\x89\x8b\x6d\x29\x51\x0f\x39\x0f\x6a\x6f\x4a\x59\x93\x49\xed\x43\xcd\x16\xdb\x5b\x86\x9c\x3f\x44\x19\x9b\x9b\xaa\xd0\xff\x56\xe4\x8d\x82\xd1\x28\x98\x52\xd5\x12\xce\x43\xc2\xff\xd0\xce\x9b\x7b\xea\x44\xd9\x6f\xaa\xb3\xe3\xf4\x8c\xc6\xc1\x58\x36\x6b\x67\xeb\x33\xc6\xd0\x97\x3d\xf5\x57\x8e\x20\x7e\xaa\x85\xc8\x67\x41\x92\xa4\x89\x31\x6e\x13\x42\x9f\x6b\x86\x15\x10\x35\xad\xc0\xc9\x6a\xe8\x81\xc0\xa8\xd4\xe7\xa5\x61\x35\x50\x5d\x4d\xe2\xec\x36\xf4\x02\x19\x95\xa9\xf3\x98\x3d\x36\x0f\xa0\x7f\x88\x26\xa0\x41\xae\x1e\x38\x04\xfa\xd9\x84\xf5\x81\xe2\xb9\x86\x53\x5f\x65\xc5\xb8\xbf\x8d\xea\xc6\xd5\x37\x2d\x80\xca\x14\x2b\x94\x61\xc5\xfc\xc6\x56\xda\x11\xc3\x22\x08\x85\x29\x29\x98\x7a\x5e\x2c\xe8\x98\x6d\x5e\xca\x3c\x1f\x1b\x5d\x09\xef\x29\x3e\xcb\x29\x5d\xc5\x88\x32\xb8\x50\x84\xe3\xb2\x6c\xb0\xc6\xb3\x20\x0b\xc6\x05\xcd\x72\xa9\xe2\x87\x7b\x79\x51\x1a\xed\x23\xde\x36\xa2\x69\xd2\x43\xb6\xd0\x64\x73\xcd\xef\xf6\x23\x9a\xce\x0a\x22\x3d\xd2\x5a\xde\x7d\xc5\x18\x0c\x69\x93\x83\xf4\xa0\x77\x79\x0f\xda\xf1\xf8\x18\xe2\x16\x22\x00\x03\x11\x69\xe1\xb5\xaa\xba\x21\xde\xea\xf6\x7f\x49\xa3\x04\x82\x35\x90\x67\x50\x07\x19\x92\xd6\x66\xab\x4b\x36\x04\x70\x89\xe1\xdb\x8d\xe7\x02\xa2\xf5\xfc\xd9\x27\x03\x06\xb1\xe2\x6c\x88\x1e\x6e\x70\x8f\xcb\x37\x9d\x97\x32\x43\x44\xd3\x11\x0d\x6c\x9d\x60\x86\x08\x91\x3c\x5c\x1f\xd3\xd6\xbc\x70\x6f\xcd\x15\xb3\x12\x25\xac\x12\x3f\xb2\xb0\x3f\x6a\x8f\xa3\x24\xd6\xb8\x36\x3b\xe4\x1e\x48\x8e\xf9\xd6\xae\x44\xfa\x19\x0f\xf6\x3c\x18\x90\x1f\xa3\x24\x24\xfc\x71\x97\xe8\xa8\x0a\xd6\xcc\x24\x8a\x56\x4b\xdf\xe4\x83\xed\x4b\x0f\xe2\x47\xcd\xe8\x85\x34\x61\x56\x67\x2e\x96\xc6\x4f\x3d\xec\xc4\x51\x7e\x56\x62\xd5\x6c\xe3\x77\x2f\x60\x5c\x23\x6c\x6a\x76\x49\xb4\xb1\xb7\x8d\xc1\x65\x20\x64\x6c\xdb\xa1\x9b\xea\x44\xac\x1d\x11\xfa\x42\xb5\x30\x21\x1d\x5e\x64\x6f\x8f\x6c\x76\x8d\x53\xda\x28\xa3\xc1\x67\x0d\xca\x46\xb9\xb1\x47\xc4\xab\x72\x36\x83\x07\xb3\x20\x3b\x48\x43\x0a\x35\x78\x0f\x61\x6c\xb2\xa5\x39\x4e\x5e\x64\xcd\x28\x84\x4f\xda\x4a\x24\xb2\xcf\x8a\xfc\x76\x34\x02\xcd\xfd\xf7\x10\xc9\x4d\x66\x3e\x2f\xca\x5e\xa7\x9b\x93\xed\xf1\x31\xdf\x59\x64\x74\x12\x5d\xf0\x08\x5a\x9b\x17\x5d\x36\x0b\xc0\x35\xfc\xee\xed\x45\xa8\xb7\xf2\xd9\xf7\xda\x2e\xc3\x11\x34\x88\x81\x9b\x57\x06\x13\xf0\x85\xf8\x34\x7c\xed\x0b\xb7\xeb\xa2\x1b\x98\x2a\x18\xc5\x0b\xcc\xf3\xd9\x87\xe5\x20\xcc\xb6\xf9\x72\x90\x33\xc2\x5a\xd2\xd4\x31\x49\x33\xdb\x84\x2e\x2f\xb2\xb2\x70\xf8\x68\x46\x19\xd4\x58\xcc\xcd\x7e\xd1\x89\x6e\xb6\xd2\xc1\x3a\x51\x44\x06\x37\xbc\xb6\x69\x10\xd6\xdf\x8d\x3d\x92\xc8\x7d\xe1\x7b\xb2\x4d\x9e\xb1\x93\x0d\xd9\x20\x6c\x3f\x48\x7c\x34\x21\x5c\xc8\xcf\xe8\xc5\x5d\x92\x86\x15\x73\xc0\xa6\x8d\x1a\xd6\xf0\x9b\x11\x87\xc3\x33\x10\x75\xfc\x36\x14\xf0\xbb\x4d\xab\xe5\xb1\x74\xb2\x8c\x63\x85\x86\x01\x3d\xa3\x49\xc1\x1f\x0a\x00\xcb\xff\x25\x4f\x13\x12\x8c\x22\x9b\xc7\x4b\xb7\x89\x1f\xd3\x1f\x97\x71\x6c\xbf\xa1\x94\x8f\x09\x58\xe9\x47\xbc\xb4\xfb\x18\x8a\x37\xec\xb4\xab\x19\xbb\xdb\x86\x21\x48\xb1\xca\xb1\xea\x94\x7d\xf7\xc1\x84\x22\x4a\x42\x7a\x71\x34\xe9\xb4\x3b\xed\x2e\xf8\x86\x7c\xb4\xe5\x79\x0e\xa9\xe0\x1d\x3b\xc1\xe2\x72\x41\x45\x73\x00\x04\x54\x64\xfa\x33\xeb\x44\xdd\x2f\x32\x7e\x70\x9f\xc1\xef\x92\x6b\x21\x8a\x99\x96\x7f\xaa\x15\xb2\x41\xda\x1d\x36\x73\xaa\xf6\x0d\xd2\xee\xb6\x1b\xad\xbd\x30\xca\x17\x71\x70\xc9\xe7\x05\x7c\x8c\x26\x05\x93\x6d\x15\x36\xec\x37\x6b\x17\x90\xfd\x82\x17\xab\x7a\xe1\xca\x6a\x33\x27\xdf\xbf\xbc\x8c\x1e\xb0\x2d\xcd\xa2\x18\x3a\xed\xcb\x60\x8b\x97\x1d\x61\x56\xd7\x25\x8f\x7e\x50\x89\x6a\x5a\xdd\xbe\x55\x3e\x7c\x56\x36\x9b\xce\xcc\x1a\x68\x16\x60\x7c\xb2\xc9\x33\xfb\x4d\xab\x78\x0f\xc6\xd6\x8c\x76\x36\x32\x18\xe8\x81\xa6\x67\x34\x8b\xd3\x20\xa4\xa1\x52\x04\x7b\xd6\x04\x1e\xc0\x47\x4d\x24\x65\x6f\x1a\x07\xe4\xe3\xd1\x8b\xa3\x21\x99\x07\x9f\x41\x35\x1c\x25\x67\xcb\x38\xa1\x59\x30\x8a\xe9\x5d\x0e\x50\x9f\x06\xec\xd7\xbb\x5b\xe4\x11\x41\xd9\xdd\x6e\x3f\xa3\x8b\x38\x18\xd3\x4e\x9b\xb4\xc1\xa9\x1b\x3b\x2d\xb4\xcc\x08\x91\x69\x72\x46\xb3\x22\xd7\xf1\x36\x41\xee\x0b\xe9\x38\x9a\x07\xb1\xcd\x64\xa3\xc4\xcf\xec\x8b\xf4\x05\x2f\xe0\x52\x5e\x65\xec\x4c\xd3\xad\x21\x17\xf0\x44\x4d\xb5\xd1\x1f\x8b\xd4\x0d\x8e\xa9\xc2\xcf\x34\x19\x63\xad\x6c\xcb\x78\xe2\x5d\x8d\x0b\xd5\x55\x1d\x99\x35\x91\x5a\x52\x77\x7c\x9e\xb8\xdc\x42\x7d\x6a\xee\x28\xc6\x61\x9f\x03\xc4\x34\xcf\x3f\xce\x82\xa4\xb3\x09\x4e\x64\x1f\x71\xab\x73\x61\xbd\x2f\x08\x6b\xab\x0b\xb1\x5b\x51\x8e\x81\xc5\xfd\x25\xb8\x69\x16\xa8\x0c\x92\x4b\xe1\x78\x47\xb8\x23\x4d\xca\xd1\xda\x17\x78\xdd\x4f\x42\xae\xfe\xe7\x34\x14\x4d\x2e\x73\xe1\x48\x3d\x27\x23\x3a\x49\x33\xda\x77\xe8\xea\x95\x38\x3a\x54\xe3\xfe\x4a\xec\x41\x35\xa4\xf5\x0a\xf6\x79\x03\xf9\x6a\xfd\x3e\x14\xa6\x62\xf3\xe0\x82\x87\xad\xbc\x88\x8a\xcb\x21\x79\x0a\x2a\x6c\xb9\xeb\x44\xb9\x70\x69\x0c\x45\xbb\xf6\x26\x83\x26\xb9\xb3\xc1\x20\x76\x8d\xa2\x78\x3a\xab\x0b\x5b\x65\x85\x21\xdd\x19\xa3\x1d\x76\x0a\xe1\x48\x6b\x7b\xab\x80\xf8\x4a\x7f\xff\x70\xf4\xb6\xaf\xb0\xcc\xdb\xd3\x0e\x2c\xc1\x75\x6c\x4e\x02\x3b\x94\x67\x8f\x2c\x82\x3c\x67\xbc\xab\x98\x65\xe9\x72\x3a\x33\x57\x80\x1a\x88\xa0\x35\xa8\xd5\xbd\x9c\xd4\x5c\xed\x11\x9c\x96\x3c\x32\x6f\xe9\x88\x25\x80\x78\xdb\x61\x56\x57\x53\xdb\x99\xb4\x1f\x45\x15\x90\xce\x7a\x94\xff\x18\x25\x51\x41\x2d\xa4\x5b\xdd\x00\x09\x11\x75\xc2\x94\xb2\xdc\x8e\xa2\x75\xf1\x5e\x6c\x2a\x7c\x1d\xb0\xf3\x52\x02\xdc\x9f\xfc\x4c\x6d\x41\x6a\x4a\x0b\x08\x57\x7c\x34\x39\x4e\x22\xaf\xb6\x0b\xca\x16\x33\x2a\x7e\xa8\x05\x47\x8a\xb4\xa7\xb4\x53\xca\x21\xba\x37\x6a\xa3\xea\x87\xaa\xa6\xc3\x3b\xd3\x85\x22\xe0\xb6\x2b\x27\x34\xcb\xd2\x4c\xba\xa4\xe1\x3d\xce\x49\x92\x16\x64\x9c\x66\x19\x1d\x17\xc3\x73\xb5\x6e\xcc\x5e\x1b\x0b\x88\x15\x94\x24\xb0\xe4\x99\xf0\xdf\x33\xf8\xaf\x5f\xa4\xaf\xd3\x73\x9a\x1d\x04\x39\xed\x00\x73\xe1\xfa\x5e\xcd\xc7\x18\xd4\x3f\xc4\x2d\xb3\xb8\xba\x39\x61\xff\x9f\xea\xa3\x38\x02\xc1\x7e\xbf\x31\xe1\x71\x4f\x64\x09\x3d\x27\x2f\xd9\xa8\x3a\x6d\xb8\xea\x85\x8e\x80\xad\xea\xbf\xdb\x05\xa1\x17\x51\x5e\xe4\x3d\xb2\x88\x69\x90\x83\x58\x0c\x23\x4f\x13\x85\xaa\x49\x1a\xc7\xe9\x79\x94\x4c\xa1\x64\xce\xb8\xa0\xb5\x8c\x44\x0f\x7b\xe0\x5f\xa1\xa7\x9f\x7d\x54\x44\x89\x55\xbd\x07\xef\x57\xa6\x57\xe1\xe0\x33\x85\x45\xc8\x19\x3e\x5c\x46\x47\x60\x4f\xab\x98\x2c\x27\x01\xc6\x6a\xc1\x57\x05\x9f\x78\x8e\x5a\x41\x59\xef\xd2\x3c\x8f\x46\x31\x9f\x42\x70\xa1\x21\x8c\xfa\x3e\x1c\x32\xf9\x32\x2b\xf8\x4f\x26\x52\x4b\x6c\xbd\x9c\x4c\xa2\xe9\xa5\xf8\x38\x92\xa4\xf4\x88\x7c\x66\xcd\xf3\x3f\x7d\x5d\x05\x9f\xe2\x66\x8b\x83\xcd\x35\x98\xba\x5c\xe2\x9f\xf2\x2a\x8a\xc3\x4d\x35\x9c\xba\xff\xe1\x9f\xe2\xc2\x48\xe7\xf1\x02\x8f\x1e\xa9\x85\xa9\xef\x71\x78\x81\x5f\x83\x51\x6a\xe4\x79\x4a\xc8\x7b\x18\x3e\x00\xb8\xbe\xc1\x79\xbc\x04\xea\x05\x2a\xcc\x3f\x05\x16\x10\x08\xb1\x20\xd0\x07\x5c\xa6\x08\x84\x50\x8d\xc3\x29\xfa\x5d\xc8\xdf\xb6\x48\xc1\xf9\x82\x75\xf2\xbd\x52\x72\x3a\x27\x87\x71\x90\xb0\x93\x41\xa0\x58\xb3\x48\x17\xba\xb2\x34\x23\x01\x79\xf5\xf2\x9f\x70\x08\x97\xd2\xda\x9d\x31\x14\xb5\xcf\xca\xa3\xdd\xcf\x33\x2a\xfd\xec\x05\xe8\x2a\x57\x44\x41\x41\xc1\x02\xd8\x7a\x0a\x72\x72\x4e\xd9\x02\xd1\x0e\x56\xe4\x30\xd6\x90\x34\xf4\x33\x35\x8e\xe4\x72\x9c\x98\xa5\x70\x51\x87\xd5\x2c\x99\x04\x16\x8a\x78\x09\x1c\x35\xd6\xe4\x54\x9c\x3b\x59\xf2\x10\xde\x86\x45\x05\xe4\x99\xd1\xc8\x10\x7f\x21\xc9\xaa\x76\xf9\x06\x1c\xc7\x9e\x15\x7c\x4e\xa3\xfb\x05\xfb\xdf\xb2\xc4\x8b\xb4\x6a\x81\xa3\xf3\xc2\x6f\xb6\xd4\xd9\x6a\xfb\x1d\x17\x3b\x20\xe4\x6e\x96\x7a\x11\xcd\x69\xfe\x7b\x2c\xf3\x44\x28\x17\xd9\xe2\x56\xaa\xaa\x9c\x1f\xf3\xd9\x16\x4d\x94\x29\x8b\x43\x0d\xaa\x23\x8d\x68\x42\x53\x81\xbc\x3a\x64\x53\xaf\x49\xc1\xac\x4d\x39\xb9\xd2\x15\x68\x00\x85\x7e\x6c\x7b\x63\x4d\x42\xcd\xf1\xe7\x1b\x26\x03\xc2\xaa\x97\xe5\xc5\x8f\xab\x2b\xb2\xb9\xeb\x3d\xdb\x88\x7a\x9d\xb3\x09\x4f\x37\x0e\x44\x02\xe5\xb2\x27\x0f\x1e\x10\xf1\xdb\x27\xf3\xb3\x26\xed\x5c\x7c\xc0\xf0\xb9\x40\x33\x44\x31\x51\x58\xa9\x44\x36\x2f\xda\xbd\x76\x1b\xdf\xb7\x58\x8e\xd2\x7c\xa5\x31\x9d\x94\x8a\x74\x89\x0c\x1d\xeb\xa1\x14\x45\x27\x1c\x4c\x06\xf1\x50\x27\x31\x61\x35\x09\xb0\xc5\x79\xda\xce\xc9\x58\x85\x74\x71\x48\xcb\x8c\xf8\xd2\x84\xbe\x4a\xa8\x06\x9d\x91\xcd\x3a\x4d\x7d\x97\x41\x32\x0c\x7c\x84\x28\xcb\xb7\x5e\xe1\xc5\x77\x07\x39\xad\x53\x05\xb0\x46\xa2\x76\xea\x5a\x93\x5b\xfe\xb5\x60\x96\xfb\x8b\x78\x99\xeb\x2e\x88\x6f\xaf\x77\x43\x05\x64\x2a\x92\x66\x74\xfc\x39\x97\xa7\x26\xce\x22\xe5\x2d\x67\x2e\xde\xca\xc5\x97\xe0\xc6\xd7\x1b\x8c\x98\x93\xfc\xd8\x1b\x88\xd8\x0c\x29\x8c\x1a\x60\xeb\x3f\x40\x05\xb0\x63\x3b\x08\xae\x24\xa6\xce\xaa\xdc\x98\x39\x51\xde\xd2\xa0\x0d\xfe\xb3\x79\x71\xb2\xf9\xe8\xbb\xe0\xd1\xe4\xf4\xcb\xe3\xcd\xeb\xff\x19\x44\xfd\x82\xe6\x85\x02\x5f\x61\xf0\x15\x63\xfe\x4a\xa3\x6d\x30\x4e\x50\x00\x0c\xfe\xd3\xd9\xbc\xe8\x3e\xab\x1c\x28\xa6\xc0\xc1\x40\x07\xcb\xe2\xe1\xb0\xa0\x7b\xdc\x85\xb0\xb0\x3a\x9c\xc3\x43\x5e\xb6\x21\xa3\x61\x9b\x14\x2c\x3c\x01\x12\xd3\x57\x85\xb7\x33\x66\x5f\x18\xa3\x43\x60\xfb\x8f\x7e\xf4\x82\x59\x5d\x86\xd8\x5d\xed\x1c\xbc\x1d\xe7\x73\xf6\xef\x38\x58\xe4\x20\x3c\x88\xdf\x3d\xec\x9e\xd1\xee\x2d\xf7\x3a\x8f\x3a\x6b\x54\x7e\xa4\xf6\x76\x8e\x19\x1a\x8c\x67\x64\x1c\xe4\x4e\x35\x51\xce\xa9\x64\x39\x17\xb3\x83\x48\x89\xaf\xb1\xe6\x04\xc5\xdb\xca\x97\xf3\x39\x0d\x4b\x69\xcb\x6a\xee\xae\x69\xcc\xaa\xbe\x8a\xd6\x06\x03\x3e\x20\x0b\x39\x81\x2a\x29\x7e\x39\x1b\x90\xd6\x86\x08\x88\x57\x41\x0e\xae\x68\x66\xc1\x8e\x6c\xc4\xd4\xa4\x48\x59\xc7\xe7\xee\xe5\xf1\x26\xdc\x50\x12\x8b\x3c\xc0\x75\x77\x31\x23\x31\x85\xc7\xd4\x28\xfe\xde\x62\x41\x33\xd6\x5b\x39\x0f\x09\xc4\x2e\x9c\x46\x3c\xbc\x5d\x90\xd3\x79\xb0\x60\xf3\xb1\x65\xe8\xf9\x3a\xca\x7e\x01\x75\x1a\x9c\xb2\x6d\x3d\xe9\x92\x1f\xc8\xb7\x6c\x37\x17\x59\x27\xd1\x69\xbf\x48\x8f\x59\x43\x42\x13\xb4\xbe\xb7\x87\x32\x81\xe2\xab\x2b\xfc\x7e\xcf\x53\x23\xd6\x2d\x59\x35\x96\x78\x0a\x47\x6b\x52\x73\x7c\x83\xef\xeb\xe8\x0b\x8a\x4c\xdf\x88\x83\x9e\x24\xc7\x12\x5a\x2c\xd2\x3b\xa5\x45\xa9\xbc\x56\xfb\xf2\x0a\xa4\x88\x54\xc6\x8a\xfc\xec\x47\xd7\xa2\x9d\x76\x5b\xd0\x92\x4b\xa7\x06\x82\x6f\x44\xb5\x08\x68\xec\xf4\x9e\x55\x54\x41\xc7\xb2\x17\xe8\xd6\xdd\xa6\x69\x60\x79\x33\x6d\xf9\xc7\xa8\xf4\x3b\x76\xee\x99\x70\xff\xf9\xf2\x22\x4e\x91\xb8\x41\xc1\x75\x04\x6c\x92\x90\xdd\xff\x8d\xbd\x52\xea\x46\xf4\x65\xb3\xd2\xda\x9a\x2a\x69\xd3\x2a\x69\x4a\x9e\x5a\xd2\x34\x18\x69\x91\x32\x89\x32\x0a\xc9\xf6\x26\x77\x19\xf4\x48\xdc\x0f\xf2\x36\xf9\xf3\x84\xcd\x0b\xc2\x6d\x3b\x5c\xdb\xae\x5a\x52\xf6\x5f\xf6\x0b\xe7\x03\x98\x6f\x2b\xfb\xad\x66\xf4\x6b\x49\x33\xde\x6d\x4f\xfa\xd4\x95\xf8\x40\x32\x3c\xdf\x6b\xab\xb6\x59\x4f\x45\xe2\xee\xcb\x57\x9f\x09\x21\x23\x2f\xc2\x8d\x92\xaa\x51\x3f\xa6\xea\x91\xc7\x9b\xfe\x4b\x02\xe9\x87\x58\x1e\xa6\x73\x2d\xe5\xd6\xc7\xd8\xf4\x9e\x24\x7d\x37\x5f\x46\xdc\x4d\xbe\x93\xf9\xce\x80\xa4\xc3\xbb\x61\x89\x85\xb2\x6f\x49\x5e\x04\xc9\x98\x71\x11\x5d\xf8\xea\x4a\x21\x4d\x14\x86\xc7\x6b\xf0\xcb\xf0\x9b\xe1\x4d\xe5\xa6\x11\xc0\x8b\x54\x95\xed\xa6\x88\x92\xe7\xe1\x3a\x2c\x7d\x70\x6c\x8b\x1a\xa2\xc8\x13\x21\xc9\x8b\x1f\xc1\x5a\x45\xcf\x60\x34\xbc\x6f\xed\xbb\x43\x0f\xef\x4b\x63\xdc\xc8\x1e\xd7\x63\xe7\x47\x6d\x43\xb2\x2a\x7e\x64\xd1\x1b\x61\x48\x96\x68\x37\x1c\x11\xeb\x53\x51\x3f\x1c\xde\xf5\x1b\x0c\xe6\x48\xf4\xad\xe1\x62\x60\xf2\x45\xb2\x8c\x63\x08\x92\xd0\x71\x57\x08\xd8\x6d\x83\x0a\xc3\x33\x76\x71\x5d\xdb\x70\xe4\x23\xde\xd9\x06\xec\x80\x03\xde\x84\x19\xf0\xa4\x1b\x4d\xa4\xe8\x5e\xd3\xd1\x80\x07\xc0\xfa\xb1\x38\x01\x35\x1a\x8e\xc4\x0d\x8a\xd1\x90\xa5\x41\xc1\xca\x31\xd8\x07\x12\xbe\x8f\x82\x89\x5c\x2a\xa9\xce\x1c\xc4\xdf\x73\x73\x5d\x69\x03\x84\xca\x31\xb0\x62\xf6\xa3\x01\xe5\x39\x29\xbb\x74\xf7\xa9\xf5\x75\xb8\x98\xe4\xaf\x70\xb5\x2d\xeb\x35\x19\x43\xd4\xa7\x0e\xf5\xec\x6d\xf8\x38\xba\xca\xa8\x03\x31\xee\x97\x6c\x02\xe9\x72\x4e\x46\x71\x3a\xfe\x4c\x66\x34\x08\x69\xc6\x3e\xd2\xb9\x6d\xb4\x11\xe5\xcf\x59\xb2\x4f\x68\x98\xd1\x0b\xe5\x16\x1d\xca\x92\x49\x14\x17\xb6\x32\xd3\x43\xb0\x00\x6b\x78\x1f\x66\x29\x95\xe7\xfc\x6f\xb6\xb6\xf5\x41\x9f\x83\xd7\xe0\xa5\xfc\x98\xce\xeb\xc2\x55\xf9\x4e\xe9\x2e\x94\x2f\xe0\xb0\x3e\x69\xaf\xb9\xfd\xb8\xc1\xcc\xc4\x29\x13\xf3\x16\xd1\xd8\x9d\x87\x8f\x2c\xb9\x6e\x1e\x0a\x05\x54\x31\x01\x50\x93\x31\x01\x50\xac\x72\x02\x9e\x3c\xd6\xf8\xe7\xd0\x37\xc6\x3f\x54\x85\x6b\xf2\xa1\xdf\x01\xba\x11\xf6\x4b\xfc\x8e\x08\x91\x6f\x28\x7f\xf4\x64\x2a\xbc\xf9\x19\xaa\x5f\x3c\x1d\x04\xc3\x21\xff\x4f\xa6\x08\x03\x92\xa1\xfe\xc9\x73\x90\x71\xc9\x10\x7f\xc8\x72\xc7\xc5\xe4\xe9\x50\xfc\x2f\xd3\xc0\x5c\x65\x28\x7f\xe8\x7a\x38\xac\xfc\xa5\xd3\x05\xbc\xfa\x29\xea\x71\x6d\x6e\x87\xbe\x44\x0e\xed\x9a\x72\x0e\x3d\x69\x06\xac\xb4\x9a\x1c\xda\x09\x72\x1c\x3f\x53\x18\xc5\xcf\x14\x8d\x01\xd2\xc4\x0f\x09\xa7\xa4\xc5\x21\xfe\x90\xb9\xa6\xca\x7a\xe8\xa4\x28\xac\x71\x41\x7d\xa8\x7f\xf2\x1c\x24\x1d\x0f\xf1\x87\xcc\x35\x4e\x22\x43\x3b\x41\x42\xa1\x7c\x2b\xc7\x3a\xba\x0f\xdd\x24\xd9\x43\x07\xd2\x49\x92\x75\x4a\x61\x6c\x88\x7e\xe3\xfe\x26\xd3\xa1\xfa\x25\xd3\xf9\x9e\x3a\x54\xbf\xd4\xe8\xf9\x7a\x1f\xea\x9f\x6a\x4c\x6c\x97\x1c\xca\x1f\x32\x95\x6d\x58\x43\xf1\xbf\xaa\x83\xf1\xbb\xa1\xfc\x21\x53\x81\x6d\x0c\xe5\x8f\x1e\x2c\x30\xee\x9f\x4e\x3c\xea\x6e\x0d\xb7\xbe\xeb\x55\xba\xb7\xe9\xb5\x96\xc5\xe4\x69\x6b\xf8\xf4\x9b\xeb\xd3\xde\xf6\x56\x13\x87\x0f\xe6\x12\xde\xe3\x0b\xb8\x25\xfc\x1c\xb4\x86\xa4\xb5\xd9\xdf\xde\xec\x6f\xb5\xd6\xae\xa5\x27\xb8\xed\x46\x81\x8a\xef\x1d\x49\xdc\x3b\x92\xf8\x2b\x38\x92\x10\xb5\xac\xb9\xae\xe0\xfe\x4e\x27\x93\x8c\x5e\x92\x9f\xa3\x78\xfc\x99\x92\xef\x7f\xa1\x93\x89\xed\x4d\xa2\xa1\xc3\x38\x00\x8b\x82\x84\x1c\x31\x89\x3b\x00\xa8\x28\x48\x5c\xb0\x1f\x83\x11\x03\xfb\x47\x3a\xa5\x71\x5e\xd0\x38\xa6\x19\xf9\x7e\x02\x89\x2e\xf0\x4f\xc1\x19\xf9\x39\x4d\x43\xf2\xfd\xb4\xd4\xcb\xc5\x63\xed\xdd\x47\xb8\x82\x7c\x13\x24\xc1\xd4\x74\x3d\xd1\x1f\x30\x2c\x0c\x32\x0e\x30\xe7\x00\xd2\xc5\xc4\xe1\x08\x0e\x47\x36\x70\x34\x0a\x12\x09\xf2\x12\xac\xf8\x6d\x08\x2e\x79\xe5\x03\x5a\xcc\x24\xe0\x8b\xe7\x15\x70\xe1\x48\xb9\x9b\x9d\x55\xd5\x97\xcf\x54\x7d\x6f\xc1\x31\x79\x19\x60\x42\x0b\x09\xf8\x8e\x66\x39\xbc\xa4\x2a\x87\x5e\x08\x10\xd5\x89\xf3\x20\x9b\x57\x75\x83\xe5\x2b\x60\x5a\x14\x10\xb4\xc9\x85\xcf\x45\x96\x04\x95\x5c\xc5\x80\x94\xec\x82\x9d\xa8\xb4\x6f\x8f\x28\xb6\x2a\x44\x51\xe5\xcb\x5d\x84\x70\x20\xe9\x8c\x49\xbc\xdb\xa0\x49\xe8\xe9\x1b\xcf\x90\x60\xcf\xe1\xc4\xe4\x42\x8d\x58\xba\xc2\x64\x96\x2e\x68\x56\x5c\x7a\xe0\x16\x22\x4b\x82\xbe\x2a\x8a\xc5\xbb\x2c\x3d\x8b\x42\x2f\xb9\xb1\x85\xba\x10\xd9\x8a\xd8\x16\xe3\x8a\x12\xd1\x62\x6c\x17\x68\xe6\xd0\x70\x6d\x4d\xc9\xea\x3f\xd3\xd1\x0e\xe9\xc8\x6a\x4c\xa7\xbc\x99\xbd\x42\x12\x7a\x6e\x2d\x1b\x5d\x12\xf9\xe7\x15\x91\x56\x51\xcf\x25\x14\x02\xa2\xfc\xa9\x0b\x3d\x67\xcb\x05\xfc\xf4\xe3\x2a\xc2\x91\xc8\x7c\xf1\xdc\xc9\xcb\x67\xb2\xe4\x87\x99\x5b\x32\x81\x35\xc0\x72\xdf\xd2\xc2\xc9\x5d\x68\xc2\x67\x20\x72\x1d\x38\x70\xa3\x5f\x7f\x95\x6d\x30\xba\x76\xfb\xa0\x09\x1c\x80\xc4\x67\x07\xc3\x68\xca\xd6\x47\x8d\x60\x11\x0d\xd5\x66\x28\xfe\xe7\x47\x0e\xdc\x49\x81\xad\xdc\x28\x8a\xc9\x67\x68\x7c\xf5\x14\x0c\xa2\x97\x21\xfe\x70\x9a\xf8\xa4\xd6\x00\xff\xe1\x0c\x50\x00\x74\x74\xfb\x82\x9c\x23\x9a\x0f\xd1\xef\x0e\x37\xe6\xb9\xee\xee\x32\x89\x69\x30\x00\x0f\xbc\x39\x25\x7a\x0c\x29\xdf\x89\xc1\x25\xd0\x1a\x23\x37\xcf\xf8\xea\xc6\x56\x3a\x2e\x26\x34\xca\x3a\x65\x38\x4d\x8a\x29\x0f\x87\x0c\xae\xa7\x71\x5c\x78\x65\xd2\xf6\xf4\x25\xa3\x3c\x56\x84\xee\xc5\x67\x4a\x17\x87\xf9\x87\xcb\x64\x1c\x25\xd3\xca\xae\x40\x59\x0b\xbe\x19\x05\x7a\x3a\x82\xf9\xc2\x73\x6d\xbf\x62\x41\xc9\x57\x30\xdc\x9b\x14\x7c\x79\x60\xe4\x8b\x59\x09\x05\xdf\x1e\x38\xf1\xec\x5a\x82\xb1\x4f\x07\x0a\xbf\xc0\xe5\x80\x2a\xc5\x0b\x6b\xd4\x29\x13\x3c\x6d\xeb\xe7\x54\xb2\x79\x91\xe2\xad\xd5\x86\x46\x69\x9e\xba\x31\x2e\x65\xed\x55\x38\xe5\x16\x8e\x12\xf2\x67\xea\x1f\x19\x86\x12\xdf\x0e\x1c\x36\x6c\xe1\x90\x2a\xc5\x03\xeb\xde\x0a\xcb\x32\x07\xf6\x6d\xa1\xd3\xe7\xb2\xb2\x4e\x8e\xa7\xdd\xc3\xe7\xfb\x6f\x51\x63\xec\xd3\x81\xd2\xde\x69\x38\x98\xf8\xf6\xc1\x49\xc7\x29\x0a\x10\x12\xd8\x2e\x66\x2f\x7c\xbe\xf5\xe3\x87\xdc\xfc\x52\xc8\x74\xae\x68\x5e\xd7\xc1\x9d\xb4\x0d\x59\x76\x7d\x1a\x46\x19\xa8\x8a\xc7\xc1\x02\x1e\x5f\xa0\x0b\x4c\xcf\x8c\x1e\x1e\xec\xbf\x33\xd6\x3e\x2b\x87\x2d\xe4\x22\x2e\x4a\xb2\xe5\xcb\xa4\x4a\x9e\x6f\xbc\xf5\x64\x10\x7d\xd1\x8c\x5c\xd9\xe0\x4f\x46\xf1\xdf\xaa\x80\xa3\x27\x8a\x77\xc3\x5e\x27\xc4\x91\x8e\x79\xe7\x9c\x80\x0e\xa6\x2d\xf7\xa4\x24\x0d\x69\xbb\x67\x40\x4c\xc1\x2e\x64\x48\xda\x4c\xe8\xf8\x34\x8e\x23\x9a\x14\xff\xe0\xe0\x6d\x7d\x27\xdd\xed\xdd\xa4\x35\x5a\x9c\xa7\xd9\xe7\xb2\x06\x13\x5a\x7c\x12\xa0\x16\x88\x19\x2f\x60\x68\xaf\xf2\x5b\x76\x8b\x0a\x85\x76\x59\xbf\x68\x31\xfb\x04\x73\x3d\x4e\xe3\x7f\xfc\x0e\xfd\x3b\x9f\x45\xf9\x42\xb9\x46\x76\xba\x97\xcf\x66\xb7\x46\x1b\xfc\x3c\xf5\xee\x25\x51\x7e\x90\x26\x09\x77\xd9\x84\x96\x5b\xd7\xa0\xbd\x8e\x77\xbb\x7c\xf0\xc0\xbb\x8d\xe2\x2a\x3b\x5d\xff\x0e\xc6\x9d\x14\x48\x99\xbc\x94\xe6\xc1\x38\x14\x02\x27\x08\x89\xc6\xab\xb7\x65\x75\x4b\x67\xa2\xf8\x84\xc0\x55\x4e\xc6\xc1\xa2\x35\xdc\xde\x64\x49\xf8\x48\xd2\x1a\x6e\x6f\xb1\x34\x7d\x1c\x68\x0d\xb7\x1f\xab\x14\x2e\x3a\xb5\x86\xdb\x4f\x55\x12\x16\xee\x5b\xc3\x9d\x6d\x95\xc1\x56\x78\x6b\xb8\xb3\xa3\x13\xb4\x50\xdf\x1a\xee\xe8\x4a\xf5\xb1\xb0\x35\xdc\xf9\xd6\x49\xa6\xc5\xac\x35\xdc\x79\xea\xa4\x27\xb4\x68\x0d\x77\xbe\x73\xd2\xa5\x20\xdc\x1a\x3e\xde\x74\x32\xf3\xd9\xac\x35\x7c\xbc\xe5\xa6\x33\x59\xb8\x35\x7c\xac\xbb\x2f\xcf\x38\xad\xe1\xe3\x6f\x54\xa2\x79\x70\x6e\x0d\x1f\x3f\x51\x59\x52\x6a\x69\x0d\x1f\x7f\x5b\xad\xdb\xbb\x3e\xed\x6d\xef\xdc\x6b\xde\xee\x35\x6f\xff\x2d\x9a\xb7\x20\x8e\xc1\xbf\xc4\xed\xdc\xb8\x22\x05\x97\xa3\x0a\xf1\xe9\x42\x64\x94\x98\x97\x67\xdc\xa2\x1f\xe9\x18\xa0\x37\x12\x4e\xc7\x8c\xa9\x0b\x8e\xe4\xea\x69\xbc\x8a\x9a\x1f\xe1\x72\xd7\xaa\x0c\xd2\x24\xc4\x39\x0f\x7d\x64\x82\x48\x56\x24\x32\x95\x73\xd7\xfd\x38\x36\x86\x62\x0a\x46\xe6\xd1\xaa\x07\x37\xf5\x3d\x62\x99\x96\x95\x28\x3d\xcc\x04\x7c\x44\xfe\x85\x5f\xce\xb3\xff\x70\xb2\x63\x2e\xc9\x37\x21\xa7\x87\xd5\x51\xbe\x2d\xa9\x55\xba\x03\xdf\x53\xbf\xae\xae\x20\xfc\x0d\xb1\xdd\x3e\xb0\x44\x48\x3d\x69\x33\x29\x14\xc2\x0a\xb4\x7b\xa4\x5d\xa4\xfc\xe7\x69\x9f\xa3\x19\x85\x3b\x9c\x78\x6e\x43\x45\x33\x27\x93\x53\x30\x70\x51\xf6\xa1\xe2\x86\xb4\xeb\x89\x99\x6d\x55\xc3\xfa\xc3\x8a\xef\x21\xe2\xe1\x1e\x74\xa0\x23\xfc\xbc\xa4\x63\xe0\xe9\x06\xa5\xcd\x82\x7e\xb7\x05\xae\x28\x34\x5e\x0d\x3c\x9b\x8f\xbb\xb0\x73\x8a\x2a\x8c\x7b\x82\x16\x87\x41\x11\xc8\x11\xb0\xdf\x7d\xf6\x0f\xd9\x43\xbf\xaf\xae\xc0\x28\x56\x01\xc0\x55\x72\x2e\x41\xc4\xd7\xd5\x95\x0e\xbe\x09\xda\x46\xd6\xb4\xbc\x23\x47\x80\x27\x9b\xa7\xfd\x9c\x31\x04\xe5\x61\x9d\x41\xcf\x85\x80\xa3\x29\xcc\x9d\xae\x5f\x3c\xd3\x85\x5b\xd9\x13\xa6\xb6\x42\xba\x73\x2f\x6d\x3b\xbf\xa8\xe7\xe9\xdd\x93\xcd\x53\xf4\xf0\x6a\x1d\xda\xef\x92\x2f\xf0\xd4\x21\x48\x92\xb4\x20\x93\x28\x09\x79\xbf\xa2\x64\xca\x1b\x7a\xa6\x9a\x1f\xa7\x49\x9e\xc6\xb4\x7f\x1e\x64\x49\xa7\x8d\x4b\x70\x67\x39\x8c\x15\xc7\xe9\xb4\x8d\x4c\x5f\x45\x8f\x19\x2a\x1c\x87\x4b\x54\xb0\x21\x1c\x98\x0b\xe6\xae\xe3\x5b\x9d\x3d\xde\xad\x9e\x49\x10\xe6\x11\x0a\x6a\x94\xbe\x0e\x61\x8a\x1b\x2c\xc7\x0b\x3a\x66\x12\x80\x67\x3d\xf6\xc0\x21\xd3\x28\x18\x7f\x56\x21\x44\xc1\x13\x81\x38\xec\xca\xeb\xd6\x4e\x90\x4d\x97\xf0\x12\xe4\x44\xfd\x42\xce\x78\x4c\x2b\x74\x59\x23\x84\x7e\xae\x2c\x86\xdd\xc6\x75\x1c\x08\x36\xf1\x5b\xa6\x1b\x0b\xcd\x36\x92\x65\x1c\x3b\xe8\x4e\x25\xa5\x09\xe7\x77\xfa\x00\x2c\x21\x26\x28\xc8\x1a\xd7\xcc\x02\x26\xfb\xa3\xc8\x54\x1a\x22\xf1\x9b\x73\xf6\x4e\xda\x83\x83\x52\xbb\xe7\x65\xac\x3d\xc9\xde\xd9\x61\xab\xd3\xed\xe9\x86\x10\x86\xeb\x67\x2a\x28\x8a\x60\x3c\xfb\x98\x1e\x48\x3f\x58\x78\xca\xa4\x73\x2c\x7c\xe6\xd6\x53\xcb\xc7\xcd\x3f\x9d\xe1\xc8\xa2\xfd\x20\x8e\xd5\x7e\x22\x80\x4b\xce\x14\x4e\x37\xd5\x01\xc3\x73\xc2\xf0\x1e\x31\x80\x54\x5b\xc3\x6d\x90\xee\xf9\xaa\x6f\x0d\xb7\x41\x76\xc7\x21\xdb\x76\x00\xd8\xda\x08\x5b\xc3\xc7\x3b\x4c\x64\x7e\x7c\x2f\x32\xdf\x8b\xcc\x7f\x6d\x91\x19\x45\x7b\x81\xb3\xf7\x5d\x85\x7b\xf9\x7b\x9e\x26\xd9\x62\x6c\xca\x9b\xbf\xf0\x44\x75\x75\x98\x65\xa9\x2d\x02\xf3\x34\x25\x89\xba\x2a\x0a\x36\x58\x43\xc8\x74\x64\x4c\x40\xc7\xa7\x52\x49\x53\x64\xe4\x22\xae\x77\x8d\x9f\xc0\x20\x0c\xa5\x4b\x47\xc6\x8e\x45\x61\xf0\x92\x0d\x5d\x13\x09\x96\x45\x60\x10\x86\x1e\x1b\x5b\x22\xc6\xcf\x0b\x15\xda\xba\x75\xb0\x06\xe3\xc4\xac\x38\x0c\x7d\x32\xb7\x6f\xe0\x39\x0f\x0a\x2e\x21\x6a\x47\x24\x99\x76\x55\xff\x05\x8c\xb7\x6b\xbe\xfd\xdc\x74\x2e\xa0\xf0\x6b\x74\xd3\x9d\x02\x7d\x4f\x94\x84\x5c\xcd\x24\x61\x7b\xa8\x6e\x9a\x65\x3d\x21\x89\xe6\xae\x4c\xcc\xc9\x87\xff\x12\xc2\xa2\x06\x10\xf8\xc1\x1e\x26\x15\x2a\x7b\x04\x5e\xb7\x97\x3c\x60\x13\x55\x9e\x00\xcc\x29\x3e\x1e\x94\x0a\xec\xbc\x48\x49\xb5\x4c\xac\x91\xfd\x11\x95\xf6\x1d\xd9\xc7\x2e\xb0\x2e\x16\x51\x3f\xca\xff\x11\xc4\x51\xf8\x9e\xe6\x8b\x34\xc9\xa9\x68\xca\x79\x7c\xe7\x8c\xc1\xdf\x5e\x87\xaf\xb1\xfe\x61\x72\xe6\xad\x75\xd7\xa9\xf4\xda\xed\x5f\x69\xe5\xdc\x65\x93\x33\x58\xbe\xe7\x82\x6b\x08\x5f\x86\x68\xbc\x2f\xfa\x00\x4e\x23\x70\x82\x13\xc4\x5e\x4f\x85\x3a\xdf\x10\xbf\x28\x01\x94\xa5\xf5\x93\x7c\xf0\xad\xe1\x36\xe8\xd1\xc4\x8a\x6c\x0d\x77\xc0\xea\xad\x51\x90\xef\xfb\x0d\xff\x7e\xc3\xff\xf3\x6e\xf8\x7a\xbf\x57\x62\xf9\x1d\xa9\xc8\x1a\xea\xaa\xd8\x89\x27\xb3\xc0\x72\x21\xeb\x0f\x20\x73\x55\x75\x9a\x84\x43\xef\xa6\xb0\x1e\x4c\x3e\x88\x12\xd0\xfb\xe8\x10\x82\xc0\x94\xc6\xd0\x88\x38\xee\xdb\x3f\xb9\x7a\x09\x3f\x32\x83\x6d\xde\x7e\xa7\xcc\xe1\x0e\x34\xd8\x3b\x09\xa5\xe4\x02\x30\xf6\xbd\x26\xd2\x95\xb3\x99\xea\x6d\x40\x38\xfb\xf5\x57\x6d\x3e\xf5\x1c\x45\x3d\x51\xce\xba\xd5\x09\x46\x91\x47\x0d\x82\xdc\x3e\x13\xcb\xcf\x32\x8f\xef\xbd\xb7\x47\xda\xa8\x4f\x6d\xf2\xe0\x81\xe1\xc7\x19\x9d\x9b\x79\xb3\x86\xb3\xff\xeb\xae\xb5\x0d\x57\x35\xe8\xf1\x0c\x4d\x3a\x90\x58\xb2\x5d\x43\x1e\x77\x18\xed\xd9\x19\xac\x8a\x18\x58\xee\x69\x1a\x68\x4f\x1c\xde\x39\x42\x39\xa8\x42\x23\xd2\xf2\x48\xed\x55\x03\xe9\x51\xc5\xf3\x12\x9e\xa2\xf8\xd1\xda\xfb\xb2\x29\x08\x43\x49\xc3\xb9\x3e\x86\x63\xda\x90\x69\xd7\xaa\xa6\x52\x7a\xe2\xa4\xe2\xaf\xb2\xf2\x64\xaf\x8f\xeb\x37\x27\x14\xf4\x0a\x71\x95\xd9\xc7\x9a\x2a\xa5\xfd\x51\xfd\xf9\x44\x8b\x99\x54\x37\xeb\x4e\x9a\x7e\x2f\x6a\x55\xa9\x13\x47\xcd\xa1\x11\xa0\x55\xa5\x0d\xe6\x95\x73\x8b\x46\x93\xca\xf9\xcd\xdd\xcd\xa8\x5d\x5f\xbd\xa2\x46\x32\xbc\xbb\x98\x5b\xce\x7b\x2d\xb5\xb2\xe0\xac\x42\xdb\xa8\x78\xac\x39\x79\xae\xde\x8a\x77\xac\x74\x3a\xf7\xe3\xb8\x72\xba\x00\x48\x5c\xf4\xac\x4c\x60\x5c\x15\x5a\xd3\xc1\xd5\xa9\xcd\x78\x14\xe8\x2a\xd5\xca\xa8\xad\x8a\xdc\x94\x9b\x1c\xb0\xfd\x93\x93\x3e\xa5\x45\x2e\x8c\x57\xe2\x4b\x12\xd2\x45\x9c\x5e\xd2\x50\x9a\x08\xc2\xf3\xc1\xf1\x2c\x88\x12\xfb\xb9\x1a\xd4\xf6\x63\x9a\xc9\x1e\x79\x7c\x0f\xc8\x03\xab\x8f\x24\xe5\xba\xbc\x56\xaa\xc5\x35\xc3\x43\xee\xb1\xbc\xdc\xd0\xcf\xda\x4a\x5a\xc4\x06\x0f\xb2\x25\xa4\xb0\xd4\xe4\x0b\xf1\x9a\x21\x90\x8c\xa3\xe6\xfd\x11\x82\x94\xef\xc9\x87\x65\x90\x3f\x18\x90\xf3\x20\xe2\xea\x72\x10\xb9\x16\x85\x56\xc1\xca\x9b\x32\x73\xde\xc5\x52\x50\xf1\xa2\x75\xc7\x68\xd7\x74\xbc\xbc\x4e\xe1\x69\xb2\xd1\xbe\xbd\x2b\x41\x7f\x37\x36\x76\xcd\x63\xd3\x60\x40\xf2\x22\x5d\x70\x5d\x6d\x94\x4c\x49\x30\x61\x5d\xf9\x66\x93\xcf\x55\x4e\x3a\x45\x34\xa7\xe9\xb2\xe8\x3a\x47\x47\x8e\x80\x1f\xc8\x37\x9b\xde\xc3\x22\xef\x7d\x9f\xd5\xfe\xb3\xa8\x5c\x87\x54\xe8\x92\x2f\xd7\x9e\x33\x9d\x8d\x40\xfe\x60\xcf\x7b\x0e\x55\x33\xe2\x3d\x6d\xea\x93\x9f\xf6\x0b\xac\x18\x13\xdc\x97\x04\x7c\x65\x8c\x19\x61\x83\x8f\xe0\x11\x93\x98\x97\x49\x68\x63\xa0\xed\x3b\x7c\xd2\x18\x39\x14\xc1\x7f\x8e\x37\xe2\x1b\xb7\xca\x96\x1f\xae\x59\xf9\x13\x71\xb1\x66\x50\xcd\x94\x16\x1f\x75\x53\xef\x39\xa9\x69\x8e\x82\xba\xf1\x2a\xc8\x67\x98\xa8\x7a\x92\x30\xbb\xfe\x23\x7c\x34\xe9\x08\x00\x3f\xb5\x79\x0b\x79\x3b\x08\x11\x8c\x44\x5d\xfd\xb1\xb9\x00\xcd\x1e\x41\x98\x23\x7f\x77\xe4\x5f\x99\xf3\xf6\x27\xca\x79\x7b\xd9\x5f\x34\xe9\x98\x14\x77\x75\x45\xd6\xa1\xc5\xca\x62\x44\xb1\x6e\x0f\x6d\xe2\xbf\x9b\x2c\x01\xfc\xd7\x70\x39\xd8\x43\x4a\x43\x14\x21\x7a\xa7\x72\x66\xe4\xdf\x60\xa0\xee\xf9\xe2\x74\x8a\xa8\x16\x8e\x15\x92\x8d\xaf\xb7\xbb\x35\xcd\x13\x43\x54\x53\x1c\xb5\x64\xaa\x1b\x54\x36\x18\x10\xbe\x59\x49\x71\x21\x48\x42\x22\x6e\x46\x48\x30\x0d\xa2\x44\xac\x9c\x73\x2a\x02\xfc\xd5\xfc\xf9\x65\x4f\x7b\x03\xac\xa9\xc1\x96\x75\x9c\xed\xbf\x66\x48\x63\xee\x96\x4d\x5c\x0a\xb2\x2d\x81\xed\x8e\x39\x1d\xa7\x49\x48\x18\xc3\xad\xad\x04\x91\x6e\x3d\xb1\x12\x83\x23\x82\x2e\xac\x69\x87\xbd\x5e\x8c\xee\xb8\x43\xd8\x75\x3b\x12\x25\xc4\x89\x16\x71\xca\xbc\x48\x33\x1a\x2a\x37\xee\x5c\x02\x01\x8d\xcf\x34\xc8\x49\x30\x67\x1b\x52\xdf\xcb\xaf\xed\xbf\x52\xfe\x6d\xff\x79\xbc\xcb\xdf\x45\x17\xab\x7b\x78\x5d\x9a\x5b\xc6\x31\xdc\x12\x36\x24\xd2\x4e\x36\x3d\x50\xa0\x2b\x06\x49\xe8\x3f\x06\xec\x98\x7d\xa9\x7c\x69\x58\x52\x9c\x05\x56\x73\x68\xb0\x2b\xc5\x07\x06\x38\x55\x05\xa3\xc8\xb8\x5c\xe0\x2f\x8a\xa8\x3c\xbe\x43\x5a\x30\x8a\xc8\x1e\x83\x94\x72\xd6\x43\xae\x09\xad\x1f\x93\x3e\x21\x25\x24\x40\xa2\xa9\x28\x2e\x6b\x91\x63\x4b\xe8\xb9\x4a\x92\x63\x4a\x2e\xaf\x31\x31\x58\xba\x91\x2d\x69\x53\x10\xc4\xdd\x15\x8b\x6e\x57\x14\xb5\xe5\x60\x43\xb2\x10\xbe\x4e\xa4\xa2\x38\x74\x4a\xfb\x24\x65\x01\xa1\xa4\x65\x7d\xfc\x93\x49\xaa\x2d\x3d\xf1\x50\x68\xa0\x27\x82\xa1\xd4\x77\xfd\x42\x2a\xb6\xe8\x6f\x65\x0d\xec\x4f\xfd\xe0\xd2\xb5\x3a\x45\x62\xfa\xeb\x48\x3a\xe8\xa9\xd9\xc7\x1c\x6c\x30\xe0\xa1\x15\xb5\x95\x85\x51\xa9\xb6\x95\xf8\x72\xbd\xcb\x80\x25\x96\xd6\xcd\xb6\x05\x62\x50\xc5\x70\xc6\xcd\xe0\x2d\x0e\x10\x32\x7e\x94\x10\x47\x63\x0a\x57\x0d\xda\x5e\xc3\x8a\xfe\xe7\xb3\x1d\x01\xfb\x8f\x72\x8b\x11\xe2\x58\x8d\xe4\xfd\x45\xba\x30\x1c\xcc\x99\xdd\x8b\x83\xbc\x10\x90\x4e\xd5\xfe\xee\x70\x42\xea\xb0\x82\xe0\xbc\x68\x5d\xbd\x38\x81\x38\xb4\x90\x6e\xf7\x49\xa3\xb0\xa6\x4b\xac\x21\x01\xdc\xe7\x41\x49\x7e\x20\x9b\x76\x6d\x62\xa6\x25\xed\xef\xcb\xb5\x5c\xaf\x05\x90\x7f\xb7\x52\x09\x22\x34\x59\xcc\x52\xaa\xd3\x94\xa9\x1d\x1e\xd6\xba\xd9\xe5\xfe\x22\xb8\x0c\x46\x31\xf5\x75\xcf\x3d\x0e\x70\xfb\xa9\x9c\x26\xa1\x0e\x48\x95\xa4\xc9\x23\x51\x09\x46\x87\xbd\x4d\x5c\x97\x4d\x3d\xf8\xf6\x63\x9c\xd1\xaf\x82\xed\xc8\xa5\xd2\x83\x11\xa3\x5a\xe5\x04\x81\xed\xdb\xc6\x1e\xaf\x68\xd7\x9c\xc4\xd2\x1b\x41\x7c\xa2\x35\x74\x00\x52\xee\x83\x58\x08\xa6\x96\x20\xa4\xe4\x3c\xc8\x95\x40\xb9\x66\xe2\x8a\x2f\x6d\xb8\x7a\x45\x47\x18\x6d\x98\x65\xdd\xbf\xce\x82\x7c\xe6\x43\x3a\xeb\x35\xcd\xb2\xb2\x9b\x48\x7c\xe5\xe8\xbb\x57\xac\x92\x78\x98\x38\x1a\x86\xfc\xda\x0b\x71\x5d\xd6\x13\x7f\x5b\x25\xc7\x2e\xb2\x07\x65\x4a\x84\xaf\x52\x09\x71\x12\x65\x79\x51\x2e\x20\xae\x28\xe3\x95\x68\x40\x7c\x6a\x0f\xdf\xf5\xab\xf1\x55\xe7\xf8\x12\x02\x6d\xf2\x81\xd7\xcd\xb3\xd5\x58\x53\x94\xd7\xa2\x7a\x95\xa1\xfb\x79\x9a\xd2\xc9\x73\x20\xa1\x2b\x13\xd8\x95\x9b\x20\x3b\xdf\xbe\xe0\x76\xa5\x90\x24\x3e\x0d\x03\xb4\x1b\x0b\x5e\xb6\xd6\xac\x4e\x3b\xeb\xd9\xd4\x45\x4d\xd7\xa6\x0c\x34\x51\xf5\x0f\xd6\x06\x03\x6b\x07\x36\x2e\x70\xb4\xcb\x63\xa4\xbe\xb4\x2a\xef\xf0\x7d\x79\x30\x30\x7c\xe9\x96\x86\x9d\x1e\x8f\xc1\x2d\x6e\xca\xe3\x34\x45\xc9\xb4\x42\x36\x33\xd5\xd8\xe6\xc8\xf9\x24\x5e\xbb\x9c\x08\x8b\x43\x55\xa2\x10\xf9\x82\xa4\xae\xa6\x12\xd1\x84\x24\xa9\xae\x81\xb1\xb7\x45\x90\xe7\x34\xec\xb1\x2a\xb4\xeb\x3b\x06\x91\xa3\x25\x6d\xf2\x32\x45\x78\x30\x03\x16\x3a\x0d\x73\x48\x9f\xef\x54\xd3\x66\x95\xac\x2c\x43\x69\x4b\x79\xad\xad\x2c\x66\xc8\xb5\x24\xc4\xaa\x81\x08\x61\xd2\xa8\x40\x75\xa9\x27\x0b\x8c\xe8\x38\x58\xe6\x94\x9d\xc4\xc3\x34\x69\x17\xe4\x3c\x48\xc0\x28\x29\x5f\xa4\x51\xcc\xaf\xc3\x93\x82\x66\x93\x60\xac\xbc\x63\x37\x38\x8a\x37\x39\x6e\xdb\xfb\x54\x3d\x43\x24\x8e\x7f\x5d\xb5\xa8\xd1\xe2\xfc\x89\x16\xdc\x5d\x33\xdb\x20\x7b\xe4\x7c\x16\x8d\x67\x60\x35\xc0\xd6\x77\x91\x8a\x7d\x8c\x2c\xe2\x65\x5e\x7f\xf7\x2a\x18\x41\xcd\x04\x6b\xee\xe1\xb7\x64\xaa\x91\x61\x57\x17\x54\x55\xb1\x7a\x01\xf2\x36\xc2\x63\xb9\xe0\x88\xac\x95\x6f\x24\xc8\x54\x09\x31\xe6\x53\x87\x3e\xb7\x48\x6f\xce\x7d\x3d\xc7\x1e\xef\x79\xb7\xc1\xfd\x79\x19\x6f\x72\x4e\xc3\xde\x63\x70\xc9\x53\x16\xdf\x81\xd8\xdd\xfe\xb4\x61\x38\xc7\x9f\xfb\x7a\x85\x78\x4e\xd3\x5e\xbb\x25\x8b\x6e\x77\x95\xfd\xb3\x69\x2c\xd1\x1a\x7e\x5b\x66\x02\xad\x4c\x1a\x5a\xc3\xed\x1d\xd7\x26\x5a\x8c\xbc\x35\xdc\xd9\xba\x3e\xed\x6d\x3f\xb9\xb7\x7d\xba\xb7\x7d\xfa\x6b\xdb\x3e\x21\x63\x67\x61\x03\x79\x07\xd6\xce\x25\x7e\x2c\x85\x75\x25\x7f\x98\x75\x34\x91\x97\xce\xfb\xd9\x34\x1f\x96\xa8\x6e\x90\x90\x27\x8e\xb0\xa2\x12\x1c\xfb\x4e\x6e\x27\x8c\x7d\xca\x4a\x09\xb6\x71\x02\x3e\xdf\xf3\xf5\xe1\xfd\xbb\x03\xce\xdc\x6f\xd3\x01\x1e\x70\x09\x58\x2d\x85\x17\x8c\x45\x4a\xde\xbf\x3b\x10\x17\x05\xfe\x0e\x88\xf7\xe8\xe0\x45\x51\xb7\x3c\x4b\x73\x7c\xfd\xe5\x36\x7e\x70\xf4\xf6\xed\xcb\x83\x8f\x87\x47\x6f\xc9\xcb\xf7\xef\x8f\xde\x0f\xc9\x81\xd2\xff\x8e\x79\x95\xfc\x48\x1f\x52\xd2\xde\x20\xac\x3e\xb2\xd1\xee\xfb\xfb\xa0\x5d\xde\x34\x1d\xbb\x7a\x68\xcf\xb5\x08\x05\x5b\x3d\x11\xaf\xcc\xdf\x84\xb4\xa4\x1d\x12\xdb\x2a\x18\x0d\x13\xde\xa5\xd1\x3c\x0f\xa6\x94\xec\x91\xf5\x75\xf1\xd4\x90\x6d\xeb\xe2\x77\x9f\x87\x8c\x75\x52\xfa\xb2\xd8\x33\xe2\x4d\x1e\x12\x35\x5d\x7f\xff\x70\xf4\x16\x66\x25\x53\x5d\xf2\x84\x59\x15\x7d\x73\x1e\x93\x69\x1c\x88\xaa\xcd\xd1\xea\xd9\xfc\xc8\xef\xab\xf1\x78\xe7\x79\xd3\x29\xfd\x78\xf8\xe6\xe5\xd1\xf1\xc7\x21\x11\xb7\xde\x8c\xb8\x58\x27\xe7\x39\xd9\x20\x6d\xf6\x5f\x30\x9e\x31\x8e\xd1\x36\x62\xda\x08\x3f\x92\xdf\xde\xef\x56\xf7\xbb\xd5\x5f\x7b\xb7\x42\x9b\x15\x3c\xbb\xfc\xa3\x9a\xe9\x36\x7f\xcd\xde\xe8\x11\xfd\x1d\xbe\x65\x97\x4e\x87\xd8\xfa\x57\x87\x33\x1c\x93\x29\x37\x8e\x21\xe2\x91\x2d\xb4\xa5\x0f\x0b\xb6\x15\xf2\xd7\x7e\x08\xbf\x90\xb6\xbc\x48\x93\x8e\xf3\x79\xec\x0a\x52\xf1\x1e\x39\x4f\x93\x6e\xcd\x1b\x7a\x94\x99\xa4\xc9\xe5\x3c\x5d\xaa\x16\x55\x42\xc9\xe9\x4d\x22\x6d\x4a\x25\xae\x68\xc8\xe5\x01\x88\x62\xe0\x84\x6b\x12\x69\xea\x78\xf6\x3c\x4d\xe3\x6b\x08\xaf\x1a\x82\x0f\x72\xbe\x49\x50\x0e\x19\xa2\xd9\x81\x07\x22\x34\x34\x3c\xa6\xcb\x13\x1f\x44\x23\x60\x8b\x52\xd4\x3e\x58\x33\xa6\x09\xbb\xdf\x62\x10\xa6\xe7\x28\x5e\xaf\x1d\x81\x01\x21\xdf\xbd\x13\x89\x3c\xa2\x42\xd4\x17\x35\xc1\x05\x87\xf8\x5d\x62\xef\xea\x2f\xaf\x0d\x96\x4b\xaf\x88\x31\xb6\x39\x7d\x86\xdc\x07\x38\xb8\x31\xb2\x70\x1d\x6a\xf7\xe0\xde\x70\x41\xde\x0a\xca\x51\x87\xaa\xab\xf2\x12\xc4\x29\xd1\xf5\x50\xde\xd1\xf4\xda\x7c\x74\xb0\x42\x3d\x43\x2b\x84\x43\xf3\x8a\x71\xe1\xa2\xd5\xf4\xb0\xd2\x88\xa4\x2b\xf5\x1b\x0d\x27\x8f\xa6\x49\x50\x2c\x33\x7b\x38\x38\xbd\x6c\x3c\x18\xa6\x7c\x3c\x0a\xaa\x6a\x40\xe0\xc1\xa0\x79\xff\xc5\x13\x07\x49\xde\x82\x23\x05\x49\xa8\x54\x4b\x45\x0a\x41\x89\x27\x51\x12\xc4\x7e\xb3\x67\x5e\x87\xcf\xa8\x14\xaf\x6b\x2b\x4b\x54\x6f\x20\x45\xe6\xd1\x33\x9a\x5d\x16\x33\xae\xb2\x9e\x8f\x22\x60\x19\x29\x8f\x12\x0d\x7d\x13\x71\x16\x2a\xb1\xe5\xf1\x0d\x22\xba\xe3\xb8\xb6\x53\x8b\x5b\xfd\x42\xaf\x00\xef\x3d\x88\x68\x7f\x1d\xca\x41\x47\x9d\x6b\x11\xa9\xd7\x5c\xb7\x76\x1e\xb7\x9f\xa2\x72\xfe\xb2\x55\x38\x17\xe4\x8e\x3a\x25\xb5\x77\xba\xae\x4a\x53\xcc\xd3\x47\xd9\xb1\xdb\xb2\x74\x14\xc3\xa2\x92\x9f\x83\xe7\x65\x11\x4c\x5b\x94\x3f\x89\x20\xc6\x94\x65\x0d\x20\x80\xf0\xfc\x31\xba\xd1\xc9\xc9\x32\x8e\x4b\x9e\xb8\x68\xcd\x22\x71\x6f\xff\x4d\x85\x30\xd4\x57\x16\x9a\x11\x32\xad\xd1\x9c\x55\x5c\xf7\x0b\xec\x3b\x8f\x63\x3a\x7c\xfb\xea\x91\x33\xfb\xea\xbc\x6b\x07\xd7\x5b\xa9\x36\xe8\x7b\x0d\xc5\x99\x44\x32\x4e\x93\x71\x50\x74\x8c\xd9\xef\x96\x3b\xb2\x29\xe5\x7a\xc2\x8b\x4d\x39\xd7\xb3\x77\x5b\x5a\xc6\xe1\x42\x7e\xf7\xe0\xf2\x30\xc1\x15\x84\xe5\x10\x9c\x10\x78\x2d\xa1\x6a\xf6\xc1\x03\xd0\x37\x98\xbd\xa8\xde\xa6\xcb\xbd\xef\x00\x0e\xee\xd0\xfd\x4e\x90\x4d\xad\xd5\xa5\xc5\xc7\x67\x46\xc9\x21\xfe\x12\xae\x79\xb6\x90\x2b\x14\x31\x3e\x71\xff\xa2\xea\xb5\x9f\x6a\xf1\xc9\x24\x5f\x94\x94\x86\xeb\xdb\xee\xee\xb2\x95\xf9\x4b\x1a\x25\x9d\x56\xcb\xad\x5c\xbd\x8a\xe3\xe4\xc6\xf1\x84\xaf\x37\x40\x36\xec\xb0\x65\xde\xed\xe1\x1e\xe1\xab\x9a\x24\x2d\x0e\x8d\xbe\x2a\x14\x7a\x1c\x0e\x69\xe0\x86\x6d\xc3\xb3\x85\x6e\xcf\x6a\x05\xb7\xaf\x36\x12\xc4\xb5\xd3\x65\xb1\x58\x16\xaf\xd3\xa9\x66\xd7\xc2\x19\x0f\x5a\x2d\xd2\xfb\x0f\x77\x34\x83\xc4\x32\x13\x4c\x73\x6b\x18\x93\xed\x07\x8a\xc3\xf0\x5b\x2e\x83\x9f\x66\x34\x5c\x8e\x29\x9a\xab\x60\x3c\xee\x11\xe1\x8b\x12\xf3\x93\x60\x3c\x3e\x11\xc9\x9c\x27\x32\xa4\x88\x6f\x49\xe5\xcf\xcc\x29\xeb\xe7\xb3\x68\x52\x74\xba\x64\xe8\x60\x54\x66\x39\x4a\xab\x60\x3c\x96\x5a\x2a\x6e\xed\xcd\x49\x9b\xc6\xb4\xa0\x72\x1c\xda\x4b\x92\x99\xce\xa9\xea\x06\x2c\x03\xdd\x5f\x89\x87\x25\x62\x69\xb3\xad\x9e\x8b\x71\xa5\x9e\x15\xee\x4a\x2e\x32\x1a\xae\x16\x7e\x3c\x9e\x1b\x6c\xe9\xe7\x8f\xee\x92\x69\xbb\xde\x25\x53\x55\xf1\xad\x72\x23\x3b\xb3\x02\x62\x48\x80\x86\xf3\x07\x5b\xec\xb0\xfd\x3e\x39\x02\xe5\x1f\xca\x01\x54\x29\x2d\x63\xdb\xff\x06\xaf\x1a\xad\x67\x6d\xde\x27\x8d\x95\xd4\xf8\xb5\xbc\x4d\x31\x50\xf3\xe4\x5a\xc6\x01\xa5\x81\x21\xb4\x74\x82\x00\x4e\x0d\xea\xf5\x01\x60\x07\x56\x9a\x28\xbc\xa0\x27\x8a\xdd\xf3\xb6\x4f\x4b\x07\x60\x58\x4d\x78\xef\x84\x0d\x5c\x22\x97\x58\x55\x57\xc2\x75\x8e\xb2\x6e\xe8\x1b\xeb\x69\x13\x05\xfc\x6d\x9d\x5d\x0e\xfc\xba\xc9\x37\x9c\x06\x3d\xfa\xbf\xea\x48\x22\x38\x88\xc8\xda\x60\x40\x3e\x1e\xbd\x38\x1a\x92\x8c\x72\x8b\xac\x1e\xc9\x53\x61\x3a\xa3\xae\xb8\xb4\x31\x4e\xc0\x35\x5d\x7d\x56\x2e\x2a\xda\x39\x49\xe8\x98\xe6\x79\x90\x5d\xb2\xc5\x02\x21\xb0\x73\x46\x6e\x6d\x70\x58\x0c\xee\xa2\xc9\x79\x9a\x7d\xe6\x52\xde\x7c\x19\x17\xd1\x22\x46\xa1\x1c\xcc\xe0\x29\x7e\xff\x46\x83\x87\xc4\x6b\xcc\xfd\x8d\xb4\xe5\xe6\x75\x98\x66\x0c\xb2\x79\xc3\x88\x54\x37\x46\x43\xbe\x71\x98\x27\x13\x55\xaa\x2f\x71\xe4\xf3\x60\xb3\xce\x3a\x77\xe2\xc2\x9e\xfa\xce\x0f\x65\xb0\x16\x3b\x25\x8e\x81\xa3\xd9\x4f\xe1\xd0\xc9\x57\x53\x8d\x1d\xa4\xb7\x9e\xd2\x23\x94\xae\x5f\x10\xbc\x3d\x26\x07\xc0\x73\xe4\xe6\x39\x3e\x6c\xf0\x1c\xc5\xf4\x84\x49\x8f\xd9\x45\x8f\xe9\xa7\x28\x96\xd3\xc2\x0a\x15\xe3\x73\x72\x55\x79\x10\xab\x9e\xee\x88\x56\x8c\x57\xc3\x78\x86\x5c\x46\x2f\x44\x47\x39\xb9\x5c\x79\xd8\xaa\xe0\x1d\x0c\x9c\x20\xc3\x51\x7a\xd1\x37\xd8\x91\xfe\xd8\x25\x12\x40\x72\x21\xf8\x7f\x57\xa6\x2a\x96\xc3\x7f\xa8\x74\xc4\x68\xe4\x4f\x53\x8e\xa4\x17\xe2\x7d\xb7\xcb\xcd\x39\x1a\xb4\x6b\xa2\x12\xfe\x5c\xc2\x91\x5b\xc3\x1d\x70\x61\x84\xbd\x86\x33\xc6\xfc\xdd\xfd\xcd\xe8\xfd\xcd\xe8\x5f\xfb\x66\x54\x5c\x8b\x8a\x37\xbf\xff\x15\x01\xf6\xee\xd4\x65\x38\x1c\x02\x1e\x92\x83\x34\x39\xa3\x8c\x15\x05\x22\xe6\x31\x9c\x83\xe1\x2c\x00\x81\x8b\x65\x24\x17\x46\xc0\x41\x9c\xa7\x24\x88\xe3\xf4\x3c\xe7\xf1\xd9\x41\x51\x97\xf7\xd7\x58\x45\x52\xf0\x7f\x13\x5d\xd0\xf0\x9a\x67\xad\xb9\xf7\x1a\x6b\xe2\x46\xb5\x48\xed\x28\xc7\x42\x65\xa9\x0e\x9c\x1d\x53\x25\x4a\xae\xae\x64\x84\x74\x9d\xd1\x56\x3a\xd4\x76\xd7\x56\x06\xf0\xb3\x9c\x10\x91\xb8\x62\x96\xf7\xa1\x23\xf5\x8b\x46\x43\x5c\x0f\x71\x34\x01\x55\x73\x17\x6a\xdf\x74\xea\x04\x48\xc1\xf7\xf1\x93\x56\xe3\xce\x48\x46\x51\x52\xed\xc0\x91\x8b\x89\x9a\x8c\xd3\xca\xcb\x1f\xdb\x12\x36\x55\xfa\x7d\x71\xd8\xea\xb1\x49\x38\xa3\x59\x34\x01\xc7\x1e\x19\x1d\x07\x8c\xe3\xa0\x48\x35\x0f\x1e\x90\x38\xf8\xf5\x92\xc4\x69\x10\x92\xf0\x32\x09\xe6\xd1\x98\xa4\x09\xcd\xa1\x35\x31\x21\xba\x21\x11\xcd\x3a\x55\x7a\x02\x80\x92\x06\xf6\xb2\x71\x07\x8a\xcd\xd6\x94\x16\x47\xea\x90\xec\x71\xe1\xcc\x26\x46\x0b\xac\x75\xfe\x01\xb0\x32\x41\x4c\x89\x3c\x26\x97\xdf\x7a\x18\x9a\xfe\xd2\xab\x17\x9e\x9d\x9f\x47\x10\xb0\x04\xf5\x8a\x80\x0e\x22\xa7\xfc\x04\x3d\x74\x9e\x56\x71\xe1\x7d\x99\x51\xa1\x5e\xec\xc1\x05\xde\x98\xaf\x0e\x7e\x38\x9e\xd1\x0b\x9f\xda\x40\x6b\x4d\xad\x04\xcb\x15\x65\x83\x22\x86\xe6\x53\xc4\xd5\x2e\x55\xca\x5b\x0a\x7f\x19\x85\xfb\x99\x88\x4f\xce\xaa\x12\x8b\xac\x4b\x86\x72\xbd\x09\x30\x57\x56\xf2\x5d\x13\x78\xde\xd7\x41\x37\x87\x56\xb7\x7b\x0e\x1c\x5b\x02\x1a\x8a\x7d\xb9\x30\x45\x8a\xeb\x71\xf3\x03\x19\x96\x59\x02\x05\x38\x28\xb3\xdd\x1a\xdc\x5f\x0d\x57\xba\xd6\xea\xab\x72\x5d\x5f\xef\x6e\x52\xa3\x28\x65\xea\xa7\xd0\x41\x87\x53\x60\x3e\x63\x14\xe8\x41\xb8\x45\xea\x52\x55\xb3\x1f\x86\xfc\x59\x84\x52\xa2\x05\x49\x48\x72\x5a\xe4\x64\xb9\x80\x0c\x71\x1a\x01\x96\x11\x15\x34\x63\x7b\x47\x7a\x26\x84\x2d\xe1\xc7\xb4\xbf\xb6\x86\x9e\x46\xbc\x4e\xa7\xf9\x7e\xf1\xa1\x08\xb2\x62\xcd\xd6\x34\xe6\x34\x9e\xa8\xc4\x89\xfb\x80\x59\xb0\x70\xb3\x16\x23\x50\x18\x8d\x27\x8e\x13\x1f\xf9\xca\x6e\x4a\x0b\xae\xcf\x62\x85\xad\xa7\x76\xa0\x5f\xd0\xc3\xcc\xa1\x7b\x44\x9e\x3c\x2d\x9e\xc1\x5a\xe9\xfb\x18\x07\x64\x4c\x69\xd1\xb1\x1e\xfd\x08\x4b\x46\xe7\x94\x33\x18\x88\x17\x34\xf0\x4c\x94\xf5\x51\xa0\x0d\xcc\x26\xe1\xa2\x5b\x26\x4a\xb3\x23\x70\x85\xd1\xef\xf7\xc9\x2f\x4b\xee\x09\x98\xb5\xc9\x78\xaf\x73\x5e\x2e\x79\x19\x59\xf1\x2a\xf2\xda\x7e\x02\x6b\xad\x74\x35\x0c\xff\x19\x93\x67\x7a\x0f\xa6\xdc\x90\xb3\xee\x9d\x26\x7f\xbc\x63\x9a\x7d\x1a\xfd\xab\x77\xc4\xfa\xf5\x48\x77\x91\xc6\x31\x27\x1f\x3f\xd9\x0a\xda\xd4\x60\x36\x5d\x2a\x95\x08\xa8\x6d\x93\x37\xca\x0c\xd7\x20\x96\xb4\x84\x5c\xc4\x8c\xa6\xce\x9c\x4a\x23\x0b\x46\x7a\x72\xac\xbe\x49\xf0\x3d\x9b\xf2\xd1\x44\xda\xf8\x24\xdf\x94\x3a\x6e\x46\x19\xda\x4c\x19\x86\xa6\x95\xd7\xcf\xac\x04\x5d\xc9\x50\x16\x72\x49\xe7\x56\xe8\xb9\x1d\x91\x96\xea\x03\xa0\x4f\xb6\x37\x6a\xc6\x78\xde\xa5\x71\xcc\xf8\x8c\xee\x09\xa7\xc1\x21\x2f\xc2\xce\x69\x74\x4e\x93\x02\x8e\x9c\x7d\x46\x71\x30\x34\xbd\x97\x2c\x84\xa1\xfd\x09\xc7\x14\x90\xe3\x61\x78\xda\x93\x57\x54\x46\x72\x4f\x13\xa3\xc8\xc1\x7e\x8c\xb8\x82\x18\xe8\x97\x6d\xd6\x32\x6c\xa1\x43\xe2\x96\x4c\xd6\x23\x4e\x7c\x0f\xb9\xdc\x3c\xb7\x03\x3d\x71\x9a\x3a\xc8\x28\x8c\x09\xec\xb5\x0f\x3c\x2f\x1d\x81\xd9\x71\x0d\x36\xba\x70\x35\xf0\x81\x34\x7c\xab\xa8\xca\x4a\x75\x5d\xa5\xca\x1e\xbf\x52\xcd\xec\x0c\xb2\x25\x20\xa5\x2e\xe3\x4b\xad\x31\xb5\xb0\xa9\xc5\x60\x4b\xf4\x45\xd0\x0e\x1a\xcc\x04\x04\x29\x67\xde\x7d\x32\xa6\x56\x88\xb0\xac\x51\x19\x62\xcb\x3d\x28\xcb\xd7\x6c\xcf\xc9\xc2\xd7\x4e\xea\x77\x69\xbf\xfb\x09\x3d\x17\xb7\x4e\x18\x07\xd8\x59\x18\x67\x92\x51\x68\xf8\xc6\xf3\x33\xc7\x9a\x65\xdf\x19\x8f\x3c\x62\xee\x78\x54\xcb\x07\x89\xe0\xc8\xe2\x5c\x58\x41\xbd\x96\x47\x52\x97\xbd\x54\x94\xf5\x77\xa3\x5a\xef\x6c\x2c\x6d\x46\x04\xa1\xeb\x08\x10\xfb\x6a\xc8\x28\x5c\x32\xb0\x33\xc7\x82\x26\x21\x18\xb8\xa9\x49\x0e\x72\x50\xb4\x24\x39\xa3\x50\xe5\x0c\x46\x57\x94\x4e\x00\x98\x15\x62\x52\x4f\x97\x2b\x57\x54\xeb\xcb\x24\xc8\xf3\x68\x9a\xd0\xb0\xef\xf6\xd1\xa6\x28\x1f\x4f\xf6\xcd\x8e\x92\xb1\xc6\xa3\x9a\x09\xf2\x36\x83\x4d\xc6\xd0\x48\xb4\x3d\x31\x89\xb1\x74\x18\xc4\x19\x0d\xc2\x4b\xfd\x60\x5d\x0b\x8a\xf9\xed\x29\xcd\x14\x64\xa5\xf4\x5a\x37\xae\x68\xd2\xb1\x5a\x53\x4e\xe0\x36\x5d\x97\x5c\x7a\x65\x72\x2e\xee\xf3\x0b\xc9\xa4\xe8\x22\x15\x63\x8b\xe6\x73\x1a\x46\x41\x41\xe3\x4b\xbb\x59\x41\xee\xe3\xa6\xb4\x6d\x4a\x27\x50\x7d\xa7\xc4\xd5\x84\xcf\x6d\x15\xd6\x64\x73\x96\xcf\xb6\x1f\x3e\x18\x74\x97\x7b\xee\x84\xe9\xb0\x37\x73\x93\xb7\x71\xc3\x3e\xd4\x0f\xa9\x8e\x31\x98\x23\x1e\x8d\x35\x4f\xe2\xba\xd4\x1d\x08\xc2\x35\xba\x13\xbe\x6e\x3a\x10\xbc\xef\xd6\x8f\xc7\x91\x1c\xd2\x85\x14\x1c\xcc\x81\xd4\xf0\x77\x78\x5a\x3e\x4f\xcf\xa4\x4a\x93\x04\xf9\x65\x32\x56\x87\x1f\x9f\x60\xe4\xe3\xdb\xcb\x04\xde\x4e\x1b\x08\x40\x32\x86\x85\x2d\x87\x77\x61\x43\xf8\x55\x6a\x36\x04\x7f\x07\xa3\x53\x2b\x66\xbb\xcf\x7b\x82\x23\x53\x78\x4d\x4e\x54\x49\x5b\x28\xb7\x76\xd4\x12\x3b\xca\xc1\x80\x1c\x4e\x34\x67\x8c\x72\xf5\xae\xef\x92\x0a\xff\x2b\x24\x2a\x88\x76\xd3\xa5\xcb\x9d\xcf\x28\x18\x63\x88\xd1\x77\x09\x67\xaa\x39\x89\x0a\x93\xad\x7a\x37\x6a\x87\xd8\xd5\x32\xf3\xed\x1e\x3e\xf4\x8b\x1a\xed\x09\xc5\xfb\x31\x84\x48\xf1\xf0\xb7\xaf\xe8\xa0\xc7\x92\xc7\x33\x6a\x5b\xef\xc5\xe9\xb4\xac\x5d\x62\x31\xa6\x8a\xb3\x05\xd4\x32\x64\x7b\x42\x89\x3f\x3e\x7f\xc4\x12\x13\xc4\x39\x00\xd8\x03\x6b\x4e\x47\x8e\x9f\x29\x21\x88\x1f\xbe\xe0\x09\x43\x41\x63\x9d\x6e\x9f\xef\xc8\xe3\x40\x7a\x2c\x04\xbf\x2a\x34\x24\x6c\x75\xcf\xb2\x34\x49\x97\xb9\x72\x5f\x28\x0c\x03\xd8\x6e\x6f\xbb\x22\xe2\xd5\x08\x61\xb7\xed\x35\xaf\x05\xa7\x12\xa9\xb6\xd2\x6b\x42\x40\xae\x0d\x1d\xab\xa1\x7e\x0e\x6f\x31\x6f\xd7\x35\xfc\xd8\xb9\x22\xe5\xb8\x75\x82\xbf\x55\x5c\x90\x5e\x9f\xf6\x76\x36\x9b\x5c\x81\xb6\x97\x39\xd7\x8b\x8f\x8b\xf6\xda\xfd\x85\xe8\xfd\x85\xe8\x9f\xf8\x42\x54\x3f\x15\x45\x2a\xeb\x9b\xbc\x17\x15\xc0\x2b\xdc\x64\xfa\x82\xbf\x35\x7e\x62\x9a\x4c\xa2\xa9\x17\x8e\x67\x49\xc0\xc3\x51\x60\x05\x75\x89\x46\x41\xe2\x09\xd4\x02\xda\x64\x1e\x69\x8a\xdb\x48\xf3\xcb\xcc\x51\x34\x15\x1e\x0c\x2c\x2b\x46\x0e\xf4\x3c\x9a\x5a\x4a\x7d\x6c\xcd\xc8\x35\xce\x57\x1c\xe2\x4a\xc1\x5e\x9b\x5e\xab\x74\x3a\xb6\xc4\x05\x3d\x63\x49\x1b\x86\x54\xc4\x7b\xe7\x7d\x86\x56\xa4\xaa\xac\x04\xdb\x55\x4a\xa0\x28\x7f\x97\x51\x71\x0d\x8a\x6e\x27\x8c\xba\x47\x3a\xdd\x6a\x60\x84\x4b\xb0\x83\x84\x70\x7f\x4f\xae\xae\xdc\x3c\x71\x36\xf5\x67\xd2\x20\x8b\x23\x56\x14\x75\x2d\x59\x2c\x8b\x17\x74\x12\x2c\x63\xef\xc5\x49\x5d\x1f\xd9\x8e\x6c\xb7\xa3\xae\x7c\xbd\xe1\x5b\x18\xc9\xf4\x43\xd4\xa2\xc7\xf7\x54\xf9\x3d\x0e\xee\x82\x35\x8a\xdf\xa2\xfb\xf6\x8b\x2e\x2e\xa0\xb0\x5a\x4a\xe6\xd8\x68\xd4\x53\x21\xca\xf6\xe0\x41\xd2\xd6\x2b\x7a\xe1\x19\xb9\x58\x55\x7c\xb0\x39\x32\x8a\x4c\x27\x24\x30\x7c\x03\x82\xe3\x49\x65\x47\xa0\xec\x02\xd8\xba\x7b\xf5\xf2\x9f\xd6\x72\x83\x3a\x98\x5c\xec\x5d\x68\x52\x97\x6f\xf8\xd8\x75\x0c\xdf\xe5\x15\xb9\xd4\xf6\xbb\x75\x7a\x23\x7f\x7f\x31\x2e\x8f\xe1\xfa\x0f\x5d\xc1\xc2\xe7\xd5\x95\x45\x43\xfb\x63\x88\xbb\x80\x1c\x9f\x61\x78\x8f\xc7\x2d\x59\x2d\xf4\x49\xb8\xa1\xf2\x5f\x3d\x9a\x72\x10\xae\xba\x48\x45\xc0\xe8\xa8\x20\xf3\x68\x3a\xe3\x82\xa3\xf2\x5e\x2c\x94\x54\x4e\xcb\x45\x5a\xdb\x6e\x91\x9a\xad\x9e\xb4\xe7\xc1\xc5\x8f\x94\xbe\xa3\xd9\x4f\x41\xde\xee\x11\xf6\xfd\x2e\x8b\xd2\x2c\x2a\x2e\x8d\xf4\x69\x90\xbf\xcb\xa2\x31\x15\xbf\xd9\x7f\x30\xcd\xec\x47\x92\x26\x63\xea\x7b\xc5\xf8\x99\x5e\x56\xbc\x63\xfc\x4c\x2f\x9b\xbe\x64\x84\x9a\x1c\x5c\xf3\x1a\xf6\x90\xdd\xc5\x0b\x3a\x8e\xe6\x41\xdc\xc1\x00\xee\x4b\x32\xf3\xb2\xf5\x6b\x13\x3b\xf2\xb9\x79\xd7\x34\xef\xab\xfa\xee\x49\xff\xa6\xd4\x7d\x4f\xd7\x7f\x44\xba\x16\x42\x91\x43\xd8\x70\xff\x2a\x83\x09\x09\xaa\xf6\x8a\x4a\x8d\xe9\xf9\xc2\x14\x8f\x44\xfa\x9a\x21\x13\xd5\x52\x70\x71\xd1\xfd\xa2\x34\x83\x17\x7d\xbc\x9d\xae\xcb\xd3\xb9\xd6\x88\x99\x00\xca\x43\x46\x2a\xf1\x67\x02\xa8\x37\x20\x2c\x1d\xe1\x02\x5e\x9b\xf9\xab\x77\xa0\xbc\x6d\xd8\x50\x52\xf9\x77\xd1\x07\x92\xf2\x17\x82\x2c\x0d\x39\x0d\x72\x3f\xdc\x34\xc8\x0d\x28\x20\x5f\x04\xaa\x45\x45\x94\x6f\x0c\x15\xaf\x0d\x93\x50\x35\x55\xdb\x60\x25\xf5\x63\x18\xc3\xcf\xa7\x6a\xc9\x59\x75\xd5\x2d\xba\xe0\xe5\x2d\x3b\xb0\x46\x0f\x8a\x8b\xbe\x34\xfc\xf3\x56\x80\x9f\x19\x4b\x2d\xc4\xc5\xca\xcb\x46\x86\xe8\xb9\xc9\xf2\x11\xd1\x82\x2a\x57\x91\x0a\x5e\xb5\xca\x52\xb2\x2b\xb6\x5c\xd6\xe0\xa8\x43\x3a\xca\x50\xcd\xda\xf2\x41\xb9\xf4\xe9\x81\xd2\xa4\x27\x33\x1b\x2c\xb5\x52\xd0\xf2\x26\x4b\x16\x9d\x0a\x86\xb3\x9c\x2f\xe3\xa0\x88\xce\xe8\x4f\x41\x7e\x9c\xc3\x9b\xbe\xb2\xaa\x1c\x58\xab\xae\x69\x6d\x0d\x53\xa3\x1c\x1a\x3b\x9d\x4c\xe8\x58\xd4\xcc\x57\x6e\xc9\x72\x28\x2f\xe0\xa3\xe7\x52\x68\x7b\x51\x9a\xd6\x22\xb2\x58\x9c\x4e\x6d\xe3\x4b\x9d\x81\x22\x0a\x39\xda\x41\x50\xf1\x79\x75\x83\x9e\x07\xca\x0c\xb6\x4e\x11\x28\x5a\x6a\xb4\x0e\x81\xc8\x9a\xaf\x3c\x38\x38\x55\x2e\x36\xa8\xb0\xc1\x52\x33\x6b\xc2\x26\x46\x50\x83\xf6\xd9\x4d\x94\x73\x26\xf0\x52\x28\xf4\x0f\xf8\x68\xd8\x1f\x05\x39\xad\xe5\x8d\x3e\x50\x1f\x19\x78\xe0\x0c\x02\xe0\xf9\xd3\x20\x7f\x1d\xcd\xa3\xc2\x43\xbf\x26\x80\x28\xab\x12\x4b\x88\xde\xc8\x37\xca\xe4\xd1\xaf\xbe\xdd\x4e\x67\x1a\xd0\x45\x34\xa7\x79\x11\xcc\x17\xa5\x45\x14\x84\x5e\x58\x3c\x23\x29\x63\x5b\x46\x76\x59\xb5\x4a\xa7\x82\x3a\x13\x46\x93\x49\x34\x5e\xc6\xf0\xae\xa7\x0c\xd3\x1a\xc8\x1c\x48\x5a\x04\xf1\x8b\x26\x15\x58\x90\x58\x6a\x36\x57\xaa\x00\xd7\x3c\xce\x5c\xaf\x6e\xb6\x2b\x6b\x46\x05\x9d\x77\xed\x17\x7d\x8e\x59\x25\x40\xb9\x17\xd8\xc6\xaa\xf6\x49\x6d\xbc\x60\xdd\xf2\x1e\x71\x9d\x4c\x83\xc5\x1d\xa7\x53\xef\x2a\xc6\x1c\xc5\xb7\x86\xe3\x74\xaa\xd5\x6f\xee\x42\x86\x7a\x8d\xc5\x8c\x2b\xc4\x4b\x19\x5d\x7b\x44\x13\xf6\x65\x6c\x6a\x6a\x9c\x56\x86\x87\xc6\xec\xa2\xbb\xb8\x4e\x67\xd7\x32\x2a\x6e\xb0\xfd\x79\x2b\x31\x9a\x88\xd3\xa9\xa7\x6a\x99\x5a\x52\xa5\x2a\x64\x9e\x2e\xe0\x2a\xa7\xfe\xc4\x7c\x3e\x8b\x72\xc6\x8d\x17\x69\x5e\xdc\xe0\xc8\xfc\x2e\xcd\xab\xa5\x22\x37\x06\x53\x25\xd7\x76\x2b\xc5\x13\xcd\x3a\xa9\xcc\x42\x07\x03\xe8\x74\x7f\x11\x5c\xc2\xbb\x8a\x3d\x43\x4d\x86\xb3\x04\x92\x21\xa9\x28\x62\xef\x79\x4d\x66\x62\xd8\xf3\x34\xfb\xfc\x31\x7d\x97\xa5\x67\xb4\xbc\x0c\x02\xc2\x65\x17\x42\xe2\x2d\x2f\x28\x21\x50\x68\x81\x09\x8e\x3c\x65\x58\x52\x73\xd6\xc2\x3b\xc9\xdd\xac\x60\x9e\x82\xd2\xc9\x9e\xf1\xf5\x8c\x9c\xa0\xcf\x53\x32\x54\x66\x0c\xd7\xba\x55\xae\x83\xe7\xea\xf8\x38\x4e\xcf\xe1\x59\x89\xd4\x6b\x54\x55\x5f\xfd\x0c\x82\xc7\x4e\x64\xc4\x44\xd2\x24\xbe\xe4\x01\x21\x0a\xe3\x75\x86\x7c\x21\xc1\x5f\x42\xf8\x1e\xf6\xc8\x67\x12\x64\x68\x3f\xda\xc1\x0f\x24\xec\xa3\x35\xeb\x63\x23\xde\xa5\xee\x83\x80\xfe\x85\x95\xaa\x97\x9b\xd5\x51\xba\x9f\xac\xcd\x7b\x85\x6a\xc2\x16\x74\x0d\xf8\xa5\x17\x8b\x28\xbb\xf4\xac\x78\x94\x8b\xc9\x2d\xe7\xee\x63\xbc\xd0\x2c\xaf\x6c\x09\x58\xa0\x9e\x05\x00\x94\xed\x93\x25\x2c\x88\xee\xae\x6f\x55\xbe\x0f\xce\x25\xc9\x88\x14\x2f\x18\xaa\x7e\x3f\x1f\x47\x91\xbd\x7c\x65\x19\xbc\xdb\xfe\x3d\x17\x88\x53\x70\x48\x9a\xd3\xeb\x50\x35\x00\xfe\x94\x21\x0a\x9a\x8f\x39\x0c\x06\xab\xac\x08\x58\x9b\x78\x35\x96\x2e\x46\xbd\xdc\x6e\xb1\x92\xac\x6b\x00\x8e\xa2\x66\xf4\xaf\x98\xaa\xad\x91\xf3\x85\x4b\xc1\x66\x3e\x11\xbf\xc6\x4b\xe8\x39\xdc\xe8\x75\xcc\x60\xda\x70\xd5\x31\x0a\x92\x7e\x94\xff\x23\x88\xa3\xb0\x03\xb1\x2e\x44\xca\x8b\x28\xa3\xe3\xa2\xe3\xbb\xe7\x10\x2e\xc5\x00\x50\xd4\xd8\xe9\x3a\x97\x28\x58\xd0\xd1\x31\x88\x64\x0f\x3c\xd5\x1a\x5e\xeb\x3c\x15\x35\xa8\x42\xf4\xcc\xac\x89\xab\x27\x6c\x1b\x12\xe1\x57\x5c\xc2\xb6\x65\x50\x70\xbd\xd0\x3f\x5c\x26\xe3\x28\xf1\x4b\x2b\xc2\x91\x37\xba\x79\x5a\x37\x93\x88\xeb\xd7\xc8\x10\xcf\xc0\x0b\x12\x18\x21\x46\xc9\x14\x0e\x38\xde\xe3\xad\x0b\x66\xfa\x92\x12\x6e\x9d\x6a\x2a\xc0\x50\x66\xf9\x59\x34\x9d\xd1\xbc\xae\x3c\x86\x32\xcb\xe7\x97\xc9\x98\x86\x42\x77\xed\xd3\xa0\x79\xe1\x2a\xea\x78\x2e\x82\xa4\x34\xa9\x07\x60\x7d\x75\xb1\x8c\x71\x1a\xd6\x57\xa4\x00\xab\x6a\x69\xd4\x25\x03\xd8\x57\xdb\x87\x22\xcd\xf8\xd3\x8e\xca\x7a\x04\x58\x45\x0d\x8d\xba\x83\x61\xad\x19\xa7\x41\x4c\xc3\x8f\x59\x44\x93\x6a\x0c\x59\x80\x55\xb5\xd4\x74\xc9\x03\xec\xab\xad\xc1\xac\x59\x80\x55\xb5\x34\xea\x53\xc5\xac\x31\x80\x28\x99\x36\x44\x14\x86\xf4\xd6\x23\x5b\xaa\xad\x46\x02\x56\xf8\x53\x2c\x89\x7f\x51\x77\xfd\x3f\xac\x85\xe8\xe9\x7a\x2a\x2a\xa8\x29\x69\xdc\x0c\x0f\x3d\x69\x08\xd6\x77\xb2\x1d\x96\x67\xa1\x92\xf6\x4e\x38\xf4\x27\xa3\x12\x86\xdc\x36\xf4\xa4\x71\xd8\x32\xe3\x91\x61\x69\x0e\x2e\xe7\x1f\x50\x79\x5e\x49\x59\x5b\xa3\xec\xa9\xc2\x06\x31\x7a\x6f\x28\xcc\x86\xde\x54\x0c\x8f\xcf\xe4\x43\x4f\x1a\x86\xb5\xd0\xe8\x49\xc4\xd0\xf6\x1e\x3a\x2c\x49\xe7\x7b\xaf\x61\x71\xc8\xaf\x47\x5b\xc3\xad\xa7\x65\x7e\xb4\x98\x00\xd2\x1a\xee\xec\x5c\x9f\xf6\x76\xb6\xee\x7d\xb0\xdc\x9b\x1c\xfe\xd7\x98\x1c\x0a\x4a\xbf\x8b\x60\x4a\xab\x45\x9e\x68\x68\x67\xc8\x63\x3d\x99\x06\x84\x3c\xed\x2b\x84\xb0\x68\x1e\x74\x22\x88\xe3\x81\x15\x97\x15\x5e\x93\xdb\x41\x9d\xdc\x50\x14\xf2\x49\x84\x1b\xbf\xae\x22\x04\x85\x2f\x80\xdd\x27\xbe\xb9\x89\x10\x09\x38\x74\xf3\xea\xe1\x0b\x74\xa5\x62\x77\xc0\xb5\xf2\xa4\xdb\x55\x0b\x51\x1f\x03\x50\x4a\x40\x9d\xf2\x1b\xc3\xc8\xd0\xce\x02\x44\x7c\x62\x88\x3b\x09\x9f\xc1\xf6\x07\x7b\x32\x0c\x47\xab\x60\xd5\xa2\x1f\x20\xe2\x73\x71\x36\xcd\xf1\x49\xed\x06\x01\xcb\xe5\x09\x55\x07\x77\x04\x2f\x26\xc0\xeb\xf9\x93\xb9\x6c\x9a\xf3\x18\x19\xeb\xe2\x9c\xd7\xac\xc3\x58\x18\xab\xec\x34\xee\xde\x0f\x0e\x29\xc9\x1c\x1c\xaa\x52\xbc\xcd\x75\x07\xe7\x1f\x9b\xed\x79\xa3\x42\x4c\xec\x68\x3c\x34\x44\x44\x55\x40\x4a\x1c\x43\xdb\x17\x75\x2d\xca\xc9\x38\xcd\x32\xd7\x21\x2a\x9c\xdf\x83\x82\xee\x67\xd3\xdc\x17\xa3\x52\x47\xc9\x7f\x48\xfe\x06\xe7\xff\x9c\x7c\x81\xd3\xff\x35\x6b\x2f\x2a\xc4\x8b\x24\xc3\x67\xaa\x67\xaa\x70\x3b\xa5\x73\xa4\x55\x34\x1c\x0a\x50\xe4\x58\x32\x05\x1a\xf1\x83\x81\x7c\x7a\x06\xea\x4c\xc3\x19\x11\x6c\x9e\xe0\x02\x53\xc7\x9e\x63\x5b\x6d\x00\x0f\x57\xb3\xe0\x52\x3e\xc3\x14\x73\xb7\xde\x71\x42\x97\x06\x5d\xe5\x50\xbf\x4b\x1e\x3c\x70\x2e\x98\xac\xfb\x2e\x01\xce\x9d\x63\x57\xc2\xeb\x2b\x35\xa3\x8c\x55\xc0\x7a\x03\x0e\x9a\x26\x89\x1d\x49\x88\xeb\x7b\x7b\x65\x84\x6c\xbe\xbb\xcb\xd2\x73\x19\x3d\xb0\x22\xc6\x5f\xc7\x71\x87\x51\xe5\x40\x5a\xaa\x14\xc1\xc2\x0e\x93\x8a\x11\x02\x25\x7d\xc7\xc1\x3c\xe4\xe5\x6c\x1a\xda\x71\x7c\x89\x33\xe9\x20\x56\xad\x6a\x83\xc3\x4a\xca\x53\xed\x57\x92\x9d\x11\x34\x77\x75\x86\xb1\x2a\xbf\x30\x63\xdd\x96\x04\xd3\xbd\xd6\xdc\x1c\x2f\x9f\x8e\x27\xb2\x6d\x91\xfa\xe3\x56\x18\x91\x6f\xf7\x48\x49\x4c\x0a\x5f\x68\x03\xf1\xea\x0a\x0d\xd7\x08\xa9\x5b\x61\xb9\x57\x12\x73\x49\xa2\xfe\x66\xb1\x65\xbc\xc5\x2b\xe7\xfd\x46\x11\x66\x84\x73\xfc\xcd\x1e\x79\x2a\x75\x99\x15\x4d\x2c\x93\x45\x30\xfe\x7c\xc4\x6f\x51\x0c\x1b\x56\x48\x32\x34\x9b\x66\x92\xee\x82\xa1\xd2\x4c\x65\x55\xfc\x87\x22\xbd\x3d\xb2\x4d\x9e\xc9\x44\xe9\xbf\x9f\xc8\x73\xa0\x76\x68\xa1\xbc\xee\x97\xb9\xef\xc7\x42\x4e\x4f\x14\x37\x67\x54\x28\x52\xb0\xf3\x71\x15\xb9\xf1\x64\xf3\x94\x0c\x7d\x2e\xe6\x0f\x20\x72\x79\x80\x82\xc5\x4b\x64\xd9\xe1\xe8\x83\x38\xc6\x8b\xbb\xdf\xef\xcb\xf5\x7d\x60\x97\xb5\x36\x1f\xc7\xb9\xd3\x21\xdf\xee\x20\x28\xb5\x04\x65\xbb\x51\xa0\x6a\xe8\x71\x3f\x3e\x76\xc5\xdc\x93\x21\xbc\x9c\x95\x87\xae\xc0\x78\xdb\x18\x24\xa1\xe9\x01\x48\x82\xf1\xb0\xed\xfc\x64\xc4\xea\xe0\x21\x2f\x19\xb8\x40\x9b\x97\x76\xc5\xac\x42\xd4\xe9\x3a\xaa\x85\x5e\x95\x45\xf6\x5e\x25\x6c\xb7\x7f\xdf\x94\x32\x98\x65\xeb\xab\xf6\x18\x38\xc8\x68\xf9\x4f\x38\xfc\x36\xc4\x42\xcc\x7e\xc0\x69\xb9\x29\x7d\xe1\x22\x58\xfc\xb1\x8b\xe9\xeb\x28\xee\x68\x5c\x72\x69\x09\xa7\x8d\x4a\xd6\x7d\x0f\xc9\xf5\x0d\x83\x62\x7c\xb4\x98\x71\x24\x88\xaa\x7b\x46\xd7\xdc\x67\xa3\x50\x0a\x2f\xe1\x8e\xb1\x1e\x90\xab\x7c\xe7\xa1\x77\x93\x06\x7b\xae\x7b\x26\x97\x07\x20\xe7\x4c\xf2\x3d\x90\xe1\xc2\xa3\xc7\x4d\x83\x76\x4d\x97\xd8\xbc\xd3\x34\x74\xdc\xff\x17\xd9\xa5\xf5\xea\x15\x81\xc2\x43\xd7\xf2\xf1\x12\xe3\x65\xee\x18\x5c\x23\x74\x1c\x07\x4b\x9c\xe2\xf7\x08\xc5\x85\x50\x29\xb3\xf3\xb2\x75\x24\xc9\x54\x6e\x14\x4d\xce\x95\xf6\xb6\x61\x16\xa9\xdd\x15\xac\x16\xfe\x54\x4b\xad\x76\xcd\x48\x92\x12\x80\xc2\x98\xf8\x07\xb2\x09\x87\x1a\xe3\xac\xe9\x4a\x87\x38\xde\x6d\x90\x70\x2f\x03\x49\x28\x3c\x91\x42\xc0\xe2\xe4\x91\x3c\xa8\x3a\x91\x9b\x6b\x96\xab\x11\xad\x90\xad\x1b\x6b\x1e\x3a\xe6\x1d\xb4\xa8\xae\x16\xbc\x79\x98\x08\x9a\x17\xd1\x3c\x28\xe8\x4f\x01\x28\x10\xeb\xa8\x0a\x81\xd7\x51\x14\xae\xf9\x2e\xa8\xe9\xeb\x53\x47\xb3\x19\x42\xe3\xaa\x9b\x1d\x0f\x68\xd9\xcc\xbc\x97\xcd\x50\x19\xf8\x0e\x02\xf8\x48\x5d\xa0\x90\x0f\xf0\x54\x4c\x69\xf1\xc2\x0e\x4c\x25\x77\x56\xbb\x9a\xba\xb9\x12\x75\xdd\xf1\x3c\x35\x42\xbc\xb4\x47\x10\x2b\x93\xc7\xf4\x69\x2e\x35\xdf\x22\x7c\x26\x2e\x2a\xf1\x8c\xc8\xbe\x12\x61\xbf\x6d\x2c\x4d\x55\xff\x8d\xc2\x69\xaa\x42\xab\x0e\xf2\x6b\xc6\xd6\xd4\x3a\x1a\x36\xc0\x6c\x31\x96\x4e\xdb\x72\x7e\x6a\xae\x63\x44\x02\xba\xdc\xa6\xaa\x62\x5c\xa2\xec\x1f\x9b\x2b\x11\x23\xc6\x90\x04\xc3\x62\x8a\x11\x2a\x07\xcf\x89\xeb\xe5\xd0\xd2\xb8\x3e\x03\xd7\xc9\x9f\x58\x8f\xdb\x64\xc8\x3f\xac\x9d\xa4\xdd\x73\x84\x97\xa1\xf6\x2e\xa8\xf2\x94\x5f\x44\x31\x9c\x53\x9d\xc5\x3b\x2e\xbd\xee\x72\x06\x59\x4b\x0c\x32\x28\x50\xd9\xf6\xa3\xc2\x6d\x55\x6f\x3d\x9e\xc8\x58\x78\x82\x0b\x43\xd0\x59\x37\xb1\xa3\x6d\xc9\x60\x9b\x2f\xb0\x0c\x25\x3d\xcb\xe8\xb4\xb2\xad\xc2\x42\x67\x3f\x58\x2c\xe2\x4b\xe1\xe7\xaa\x11\x61\x75\x6d\x23\x4c\xbe\x05\x58\xcd\xb0\xc4\x1b\xd5\x5d\x33\x0f\x22\x7a\x94\x66\x3c\x3a\x80\xd4\xad\x23\x47\x79\x26\xec\x6b\x05\x8f\x92\xe9\x7a\xc5\x63\x47\x5f\xa5\xe0\xe2\xb0\xa9\x31\x5c\x06\xe8\x4a\xcd\xde\xc9\x2f\x2b\x6e\x8a\x48\x7c\x24\x3a\xa9\xb4\x98\xde\xad\xa5\x83\x2a\xf6\xf9\xa7\x8c\x9c\x25\xcb\x02\x81\x47\xd9\x78\x19\x07\xd9\xfa\xfa\xfa\x7a\x75\xbc\x2c\x49\x41\xbb\x77\x12\x31\x8b\x6b\x7f\x5b\xc3\xed\x27\x7e\xf7\x43\xdb\xf7\xb7\xff\xf7\xb7\xff\x7f\xed\xdb\x7f\x71\xf5\xcf\x60\x65\x44\x33\x7f\x1c\x96\xdf\x2d\xc2\x8a\xcf\xb2\xa0\xda\x10\x60\x6d\x30\x80\x88\x6d\x41\xc6\x48\x99\xed\x60\xcb\xdc\x1c\x22\x23\xb8\x30\x9a\x4c\x68\x46\x93\x82\xd0\xe4\x2c\x87\x42\xa3\x2c\x3d\xcf\x69\xb6\x86\xdc\xd1\x9e\x47\x49\x98\x9e\x83\xc6\x02\xc5\x29\x21\x0f\x1e\x88\x9c\xfe\x3f\xdf\xbc\x7e\x55\x14\x0b\xe1\xe9\x98\x73\x4d\x33\x8d\xec\xf9\x61\x81\xf5\x89\x30\x1b\xd1\x34\x49\x19\x23\x88\xa3\x84\xb2\x9e\x24\x69\x48\xd7\x90\x6f\x3b\xa7\x46\x35\xf0\x8b\x79\xcc\x46\x26\x36\xb6\x76\xb7\x69\x23\xd7\x1c\x93\xff\x7c\xf5\x7e\xdb\xa8\x6e\x96\x6d\xb7\xbb\xa5\xa5\xa4\xe4\xc0\x5a\x78\x27\x91\xe9\x9a\x44\x80\xfc\xc4\x44\x7b\x70\xee\xca\x5d\xc1\xb3\x5e\x2a\x03\x08\xa3\x3c\xde\xf2\x67\x69\x5e\xf4\x48\x11\xcd\x69\xba\x2c\x7a\xac\xc2\xac\x07\x4a\xe6\xf3\x34\x13\x4f\x29\x61\x33\x61\x70\x64\x8f\xc0\x7f\x57\x57\xa4\x2d\x88\x3d\x4e\xc7\x41\xcc\x12\x87\x4f\xbf\x79\xfc\x0d\x84\x45\xe6\x7b\x0f\xaf\x90\xed\x84\xe2\xd7\xd5\x15\xd9\x54\xd9\xac\x19\xb2\x07\xad\xa9\x34\xd9\x28\xd9\x53\xed\xd7\x0a\x4f\x8b\x8c\x2e\x20\xce\x20\x3d\xb7\xa6\xcc\x92\x9d\x04\xe0\x7b\x74\x96\x11\x92\xd3\xf3\x34\x8d\x69\x90\x5c\xc3\x1d\x2b\xdb\x9f\xa5\x04\xa3\xb1\x2c\x9c\x8a\xa2\x03\x9f\xd9\x96\xe1\xb9\x0a\x63\x1a\xc9\x5d\x66\x07\xcc\x8b\x40\x56\x3d\x47\x35\xbf\x41\xe1\x84\xc4\x78\x18\xdc\x00\xea\x6c\x42\xb4\x78\x05\x43\x7e\xf5\x7e\x5b\x47\x25\xe6\x92\x16\xc2\x3c\x9a\x08\x06\x63\xb8\x6e\xb4\x2a\x32\xc6\xc3\xab\x04\x79\x58\xd6\x9a\x2e\x68\xd2\x69\xbf\x3b\xfa\xf0\x51\x06\x52\xe5\x84\xc3\x3b\xb7\xbb\x86\xfc\x40\xc2\xdc\x3e\x78\x60\x4e\xaa\x71\xe8\x5b\x82\x41\x4d\xfb\x79\x90\x47\x63\xd2\x26\x1b\xd0\x85\xe7\x4b\xc6\x1e\x50\x15\x1b\xa4\x3d\x54\x57\x85\xaa\x9e\x7e\x91\x8a\x27\x97\xed\x51\x90\xd3\x27\x8f\xdb\xd6\xf8\xb5\x17\xf4\x57\x34\x08\x69\xd6\x69\xef\x03\x5f\x8d\x7e\x0d\xf8\x69\x0b\xda\xe7\x23\xac\x28\xc4\xe4\x63\x9a\x14\x8f\xd8\x41\xbb\xdd\x23\x6d\x26\xf9\x47\x63\xa8\x62\xf0\x4b\x2e\xd5\x8e\xea\xc6\x4a\x4c\x59\x0d\xb9\xf2\x78\x39\x97\xc9\x18\x1d\xaa\x6d\x4d\xb2\xef\xe2\x79\x81\xae\xaf\xfd\x91\xd1\xab\x48\x2f\xb7\x23\x65\x4a\x5d\x9a\x4d\x72\x92\x66\x4c\x5a\x15\xa1\xb6\x81\x1e\xb5\x76\x5f\x63\x2e\x09\x3b\xf0\x9c\x87\xc7\x40\x8a\x26\x97\xaa\x7e\x81\x64\xa9\xc8\xc7\x4e\xce\x7d\xd6\x00\x07\x69\x92\x50\xf1\xe8\x46\x52\x98\xa6\x44\xe3\x72\x51\xb6\x2e\xc3\x8d\x7c\xa4\x17\x85\xd3\x41\x01\x8b\xde\x1a\x89\xb7\x1d\x66\xb7\xaa\xba\xf4\x5e\xd4\xdf\xf1\x35\x88\x57\x49\xf3\xc8\xd7\x40\x03\x41\x0d\x11\xec\x2b\x8e\x53\x41\x09\x22\xeb\x47\x27\xd6\x0c\x29\xb2\x68\x3a\xa5\x19\x0f\x90\xc5\x66\x1f\xc4\x16\xe5\xed\x96\xe1\xa0\x8e\x60\xa0\x07\x3e\xaa\x31\xe3\x5c\x37\xa1\x1f\x30\x5e\xd9\x35\xb8\x49\x02\x9e\xc9\xf3\x22\x28\xe8\x78\x16\x24\x53\xbf\x02\x81\xb1\x14\x8d\xf8\x20\xbc\xfc\xc0\x0a\xc0\x8d\xf0\x63\xc6\x61\x6c\x96\xb7\x6e\xc6\xa9\x6e\x40\x31\x1a\x50\xde\x2a\xa1\x00\x68\xf6\x65\x56\x0d\x45\xc1\x99\xcc\x7b\x6b\xa5\x6e\xac\x56\xa4\x2d\x82\xaf\xb6\xec\x8b\x2d\xa3\x65\x76\x16\xbc\xb6\x50\xac\x37\x02\x17\xb3\x66\x65\x79\x5f\x2f\xbd\x8f\xbc\x54\x07\x6f\x1e\x62\x21\xdf\x2d\x07\xb0\xbb\x50\xc5\x04\xc4\x4a\xc3\xeb\x4a\x5f\x96\xc7\x97\x8c\xde\xf9\xcb\x68\x58\x5c\x8c\xaa\x4b\xd6\x56\x94\x8b\xfa\xa9\xc9\x4c\x95\x10\x20\x15\x9c\xb6\x30\xc0\xce\x0f\x49\xbb\x20\x93\x20\x8a\x69\xd8\x27\x47\xec\x9c\x76\x1e\xb1\xb3\x47\x00\x31\xed\xca\x57\x13\x6a\xd3\x33\x17\x1a\x9f\x4a\x9f\xa1\x62\xa7\x44\xe1\x90\x7c\xa7\xfe\xa4\xbe\x8f\xed\x3e\xd9\x62\x3c\x24\xed\xed\xfe\xa6\x52\x1e\x4a\xfd\x63\x3b\xa1\xc5\xa7\x38\xca\x0b\x9a\x44\xc9\x54\x65\x2b\xed\xe1\xa9\x61\xd0\x25\x15\x5c\x19\x0f\xd0\xe7\x92\xaf\xb4\x2a\x64\x83\xd4\x93\xe0\xa8\x0b\xf0\xd0\xa5\xaa\xc0\x38\xed\x33\x31\xb7\x35\x7c\xca\x7e\x19\xf2\x73\x6b\xb8\xf5\x2d\x3b\xf9\xef\xdc\x9f\xfc\xef\x4f\xfe\x7f\xf1\x93\xbf\x36\xfc\x87\x27\xb7\x77\x64\xf4\xaf\x0c\x39\xf1\xa9\x72\x14\x4d\xb9\x0d\x6e\xff\x17\x7e\x42\xe7\xf7\x20\xe1\x6b\x3a\x31\x37\x04\x15\xa9\x14\x5e\xce\x21\x21\x5d\x6d\x76\x1c\x82\xb3\x8b\xf3\x19\xeb\x7d\xc7\x34\xd0\xfa\x9e\x17\x26\x0f\xc9\x76\xd7\xb7\x5b\xb6\x37\x99\x14\x6f\xbe\x9e\x25\xfe\x17\x71\x82\xb9\xbf\x13\xa7\xba\x20\x21\x87\xcf\xf7\xdf\x8a\x49\x0e\xc9\x77\xdf\x92\x71\x3a\x5f\x2c\x45\x94\xa0\xd1\x25\x99\xa7\x67\x51\x32\x45\xb1\xf0\x1e\x93\xf1\x2c\xc8\x60\x2f\xe0\x37\xb3\x21\x37\xa5\x92\xe6\xea\x12\x3a\xa6\xfc\xd1\x42\x91\xb2\x06\x39\xae\x72\xd2\xd9\x27\x7b\x64\x6b\xb3\x47\x9e\xb3\xff\xb7\x7a\xa4\xdf\xef\xf7\xc8\xff\x91\x3d\xb2\xf3\x4d\x97\x1d\x76\x48\xbe\xa0\xe3\x68\x12\xf1\x85\x74\xf8\xe1\x68\x6b\xe7\xc9\xd6\x13\xdb\xc4\x2c\xca\x53\x48\x17\xe3\x70\x7d\x22\x5f\xf3\x17\xdd\xac\x23\x6c\x80\xe6\xd5\x1a\xbe\x59\x16\x92\x54\x28\xc1\x84\x63\x0e\xb3\x7e\x63\x42\x59\xc5\x78\x1e\xd9\x88\xda\xfb\xed\x3e\x43\xcb\x41\x1a\xd2\xfd\xa2\xb3\x89\xb4\xd6\x6c\x6c\xed\xff\x73\xb2\x39\x03\xe4\xaf\xce\x81\x58\x8b\xf4\x78\xb1\xa0\xd9\x41\x90\x6b\x55\x36\xca\xce\x97\xa3\xbc\xc8\x3a\x8f\xbb\xf2\x3d\xb9\x48\xd8\xec\x3d\xb6\x6e\xcc\x78\xee\x22\x8e\x8a\x4e\xbb\xdd\x35\x9f\xda\x27\x5d\xd3\xba\x4a\x3c\xb4\x4c\x7c\x9d\x97\xf2\x21\xc0\xfc\xb0\x47\xf6\x99\x40\x08\x1f\xdf\xef\x91\xff\xeb\x3a\x11\x2c\x3c\x33\x2b\x26\xd6\x80\x54\x2e\x91\x43\x4a\x1e\x91\x7d\xb2\x41\xb6\x36\x91\x9d\x91\x2f\xaa\x83\x8c\x9c\x6b\xdb\x30\x5d\x77\xfb\xbf\xa4\x51\xc2\x86\x69\x5b\x2a\x8e\x97\xe0\x2f\x1a\xa6\xf8\xcd\xd1\x0b\x46\xd8\x5b\x9b\x92\x29\x09\x0b\x3f\xa0\x7c\x0f\xc5\x7d\xbb\xf9\xe4\xb1\x4d\x70\xf3\x34\xfc\xee\xdb\xad\xcd\x32\x42\x33\xe9\x4b\x7b\xe1\xe6\xd4\x24\x0a\x57\x52\x51\x46\xe7\x41\x94\x70\xdd\x11\xcb\xd3\x77\x8f\xc2\x35\x91\xc9\x1e\x04\xb0\xb6\x5b\xde\xee\x5a\x4e\x97\x80\x59\x49\x30\x65\xf1\xfa\x9d\x61\x22\xa7\x9b\x04\x59\xfb\x30\x29\xb8\x3f\xa7\x1e\xd9\xda\xec\x92\xff\x3f\xc3\xda\x86\x53\x0b\x77\xe9\x24\xcc\xcf\x7d\xbe\x94\x54\x5d\xaa\xa4\xae\xcf\x98\xa7\xfa\x77\x48\xdc\x04\x1d\xd6\x81\x30\xf8\x87\x0b\x75\x48\x10\x6f\x1d\x04\xfb\x94\xf3\xe5\x9f\x9c\x01\xf6\xd5\xee\x9f\x04\x61\x09\xad\x97\x9c\xdb\x55\x27\x46\x72\x5d\x3f\x29\x84\xd0\x5a\xce\xe5\xeb\x1c\x8b\xa8\x18\xcc\xbe\xca\x71\xfa\x1e\xa0\x2c\x29\x46\xb3\x21\x5c\x2b\xb6\x86\xb5\x62\x2c\xa7\x8f\x6a\xac\xf3\x78\x11\xe4\xcf\xa5\xc7\x0b\xf4\x52\x41\xc4\xb2\x25\x5b\x4f\x10\x0b\x1b\x05\x39\xdd\x79\x42\xf6\xa0\x8c\x56\x0f\xed\x3c\x31\x4c\x00\xc2\x90\x72\xcd\x22\xec\x81\x1d\x5e\xa8\x47\xb6\xbe\x31\x25\x61\xd5\xcf\xe7\xa3\x20\xe9\xf0\x62\x26\xf3\xb3\x16\xb3\x70\xaa\x83\x16\xee\x73\x36\xf4\x22\x35\x76\x2f\x36\x7d\x04\x9c\x1d\x64\x97\x72\x45\x73\x65\x12\xd8\xeb\xbe\xe3\x91\x4c\x92\xb4\x10\x42\xd9\xf7\xd1\x0f\xad\x29\x48\x24\xdc\x59\xd3\x44\x23\x35\x9f\x05\x5c\x5a\x83\xfd\xed\x62\x1c\x2f\xf3\xe8\x4c\x05\x5e\x8d\x46\x51\x1c\x15\x4a\xc0\x19\x05\xc9\xe7\xc1\x28\x0b\x92\xf1\x8c\xe4\x34\x3b\x8b\xc6\x72\x03\x0c\xb8\xef\x85\xd6\xf7\x83\xe8\x87\xbe\x4d\x43\x2a\x08\x4a\x2e\x77\xa1\x09\xcd\xd8\x36\x14\xc4\xd3\x34\x8b\x8a\xd9\x9c\x84\x34\x1f\x67\xd1\x88\xb3\x25\x21\xff\xd0\xa4\x7f\x1e\x7d\x8e\x16\x34\x8c\x02\x10\x82\xd8\xd7\xe0\x30\x29\x68\x96\x04\xfc\xe9\xc4\xa7\xe7\x41\xf2\xf9\x93\x70\xfc\xf0\x89\xcf\xeb\xff\xef\x27\x31\xd2\x64\xfa\x89\x0d\xf1\x13\xbc\x25\xfa\x14\x46\xd3\xc8\x79\xca\x21\xa7\xc6\x47\x91\x23\xb9\xa7\xca\x19\x90\x1e\x8f\x8a\xd4\xb3\xcd\x36\xa0\xd5\xe7\xf6\x8a\x1c\x59\x6c\x51\xcc\xe8\x01\xdf\xa7\xda\xff\x7c\xd9\xde\x5d\xf3\xf2\x4c\xc1\x63\x3b\xd6\xce\xdd\xc1\x15\x6c\x90\xf6\x26\x88\x4a\xd0\x0a\x36\x77\x61\xe8\x78\xc1\xb0\x41\xf6\x48\x87\x8b\x53\x9d\xef\x9e\x92\x47\xba\x89\xae\x7c\x36\xf0\x68\xdb\xda\x6f\x95\xcf\x18\xb3\x29\x54\xa7\x68\xb0\x46\x6d\x25\x98\x08\xc2\x15\x10\x36\x0f\x7f\x1f\x25\x79\x11\x15\xcb\x42\xba\xfa\x8e\x42\x9a\x14\x6c\xd3\xb2\xc3\x46\xf0\x5a\x0e\x93\x30\xca\xa8\x69\xc0\x60\xbe\xb1\xc9\x7b\x52\x96\x55\x8f\x6c\xe0\xd5\x54\x0b\xb5\xd4\x82\xa6\x5a\xba\xad\xd6\x2a\xbc\xc8\xec\x89\xd7\xfd\xb7\x79\x04\x36\x39\x43\xfb\xe5\xc7\x57\x6c\x1e\xe4\xeb\x16\x8c\x01\x94\xaa\xfa\xd6\xb5\xf8\x75\x5a\xc5\xaf\xe5\x53\x3a\x8e\x5c\x11\x5b\x3e\xca\xf9\x4b\x39\xcc\xc7\x1d\xb9\x13\xfc\xff\x94\xca\x9b\x6a\x2f\xf2\x28\x3e\xa4\xc2\x83\x3f\xa7\xe3\x2d\x29\xa1\xf3\x10\x79\x17\xaa\x94\x13\x22\xec\xa5\x28\xe2\x64\x85\x85\x3f\xed\xa2\xa8\x56\x57\xae\xb0\x00\x5d\x2f\x7d\x3d\x88\xc7\xac\x63\x8a\x78\x47\xd5\x23\xa9\x47\x6b\x03\x63\xc3\xda\x1a\x77\x94\x16\x25\x0c\xfe\xf3\xcf\x97\x27\x9b\x8f\xbe\x3b\xfd\xb2\x7d\xdd\x79\xf9\xf1\x15\xfb\xbd\xff\xe8\xff\x4e\xbf\x6c\xed\x5c\x5f\xa9\x8f\x9d\xcd\xde\xce\xd6\x75\xf7\x7f\x06\xfd\x02\x94\xa0\x6a\x03\x37\xde\xe5\x95\x31\x06\x04\xce\x9f\xe7\x6d\xad\x88\x30\xf1\x04\x13\x4e\xff\x5e\xb4\xbd\xd0\x4b\xf0\x6e\xf0\xf6\xc2\x5d\x49\x16\xe2\xf4\xa0\xf0\xe3\x9e\x9d\xc7\xe4\xea\xaa\x2c\xef\x9b\x1b\x0e\x7b\x42\xa2\xa4\x64\xe0\x06\xf7\xb9\x9b\xa1\x7b\xd9\x48\xa3\xc1\x6f\x6f\x36\xb2\xda\xe4\x22\x25\x1b\x69\xbe\x9c\x33\xc0\xe3\x5c\x1c\x1f\xe6\x69\xf8\xe8\xbb\x6f\x1f\x6d\x6d\xaa\x6c\x38\xe3\x42\xef\xc6\x69\x4c\x3a\x87\x1f\x8e\x06\x87\x2f\x0f\x08\x3b\x37\x0c\xb7\x37\x37\x77\xba\x36\x4f\x46\xd5\xba\xa7\x50\x94\xeb\x0c\x5c\xe6\x35\x1c\xb6\x38\x13\x6e\xf7\xc8\x76\x33\x5b\x55\xcc\x54\x8d\x2d\x85\xd0\x69\x9f\xfc\xf3\xfd\xcb\x9f\x1c\x37\x98\xaa\x80\x7f\x34\xa5\x35\xba\x93\x8a\x20\xeb\x86\xa7\x09\xa0\x03\x3e\x12\x9d\x21\x7f\xdb\x23\x8f\xbb\x64\x48\xda\xed\x46\xe3\x1e\xc7\x11\x3c\x24\x53\x1d\x04\xe5\x53\x94\xd8\xe3\x63\x58\xf8\x69\xff\x1f\x47\x3f\xfe\xeb\xe8\xfd\xff\xda\xb3\x0a\x75\x94\xcc\xa9\x5d\xbf\x77\x72\x39\xd0\xad\xc7\xbe\xb5\xb5\xfa\xc8\xc5\x6a\xf2\x9f\x4b\xdc\x83\x87\x3b\x34\xa7\x02\x67\x78\x81\xe7\x1c\x82\xef\x9d\xc4\xe0\x7c\xee\xf3\x8c\x43\x87\x3b\xe0\xc7\xe8\x10\x5b\x7a\x94\x91\xe7\x0f\x75\x4a\x31\x4e\xa8\xfc\x8c\x62\x9e\x67\xb6\x9e\x74\x7b\x64\x7b\x53\x39\xe8\x33\xa4\x3c\x89\x5e\x6b\x90\xb2\x70\xb3\x05\x5a\xe2\x95\xea\x10\xb2\xb8\x52\x1f\xeb\x15\x5b\x43\xf3\xf3\xfa\xb4\xb7\xf3\xf8\x5e\x8d\x7f\xaf\xc6\xff\x8b\xab\xf1\x85\x0a\x7f\x31\xae\xb6\xdf\xbb\x85\xc5\x5d\x4b\x07\xd8\x6c\xed\xae\x14\x18\xb0\xc6\x4e\x8f\xeb\x99\x16\x63\xaf\x25\xd8\x22\x28\x66\x3d\x92\x50\xc3\xfa\xfb\x13\x68\x2e\x9c\x87\xa7\xf2\xaa\x1a\x87\x26\x97\x5e\x0b\x84\xbd\x0e\xd8\xf8\xb0\xff\x78\xaa\xce\x1a\xab\x1b\x5e\xe0\x8a\x85\x4c\xe8\x7c\x61\xd0\x43\x5d\x5e\x39\x52\xb5\x8a\xf5\xd3\xa4\xd3\x86\x51\xb5\x71\x28\xdf\xae\x61\x3f\x9d\xa7\x8c\x89\xf1\xb7\x84\x87\xef\x0e\x88\xbe\x57\xe6\x2f\x0c\xdb\x3d\x42\x11\xeb\xfd\xc4\xd9\xa0\xb8\xf0\xee\xd8\xae\x5c\xbd\x3d\x48\x42\xdc\x3e\x6a\xbe\xb4\x32\xb2\xa6\xde\x18\xbc\x3e\xfc\xf0\xf1\xe5\x5b\x58\x41\x07\x47\x6f\xdf\xbe\x3c\xf8\x78\x78\xf4\x96\xbc\x7f\xf9\xe1\xdd\xd1\xdb\x0f\x2f\x3f\x94\xb6\x1a\x06\x45\x80\x9b\x65\xdf\x78\x73\x1a\x3c\x14\x66\x84\xf3\xe0\x62\x9c\xce\x17\x31\xbd\x88\x8a\xcb\x21\x79\x02\x94\x65\xf5\x10\x74\xa1\xca\x0e\x81\x55\xa5\xf7\x9b\xae\x27\xee\x92\xb0\x39\xf8\x62\x86\x61\x87\x83\x5f\x68\xdb\x4e\x88\xee\xf0\xf0\xf4\xc0\x5f\x42\x72\x3e\x8b\xc6\x33\x32\x0f\x8a\xf1\x4c\x88\xaf\x7c\x13\x62\x0c\x2d\x34\xca\x79\x62\x6e\x40\xd3\xfe\x38\xed\x70\x1d\xe5\xf4\x16\x2c\x10\xfc\x51\x94\xa3\x49\xe7\x93\x9f\x90\x4f\xe0\x6d\x5c\x14\x9e\xba\xce\xfc\x55\x61\x36\x56\x01\xb6\xeb\x40\xd9\x11\xef\x4b\x23\x41\x43\x35\xa2\xef\x76\x45\xd7\x0e\x16\x27\x51\x46\x0d\x8f\x00\x36\xba\xca\xc6\xc3\x86\xe2\x69\xbd\x02\x5c\x87\xa5\xc6\xa6\x2d\xfa\x2f\xa4\x31\x2d\x68\x55\x0d\xf6\x60\x6c\xdc\xe0\x57\xd8\x3f\xb3\x5d\x0b\x08\x51\x10\x04\xaf\x0f\x94\x3b\xdc\x56\x2a\xe1\xce\x72\x48\xca\x1d\x85\x47\x45\x7f\x6d\x4d\x0a\x83\x26\x09\xaf\xd9\x6a\x0f\x78\x91\xc9\x84\x3f\xcd\xf3\x90\x78\x64\x16\xc6\x7e\x81\xf1\xaa\xb2\xd9\x60\xcf\x92\xd7\xfe\xc1\xfd\xf2\x6b\xf7\xd2\x72\x89\xbf\x78\xf9\xe8\xe0\xd5\xf1\xdb\xff\x7d\xf9\x5e\xd5\x13\xd2\xf1\x6c\x99\x7c\xa6\xa1\x78\x55\xc2\x5f\x8c\x8a\xbf\x7e\x46\x17\x71\x30\xa6\x9d\xc1\xbf\xaf\x4f\xfe\x9d\xfc\x3b\x3b\x7d\xf6\xef\x2f\x83\x69\xaf\x7d\x7d\xf5\xe8\xd1\xd5\x97\x76\x17\x1c\x63\x7f\xf1\xc2\xff\xfb\x54\x96\x38\x11\x65\x4e\x59\xa1\x13\x59\xea\xf4\xc4\x5f\xce\x2e\x65\x14\x2a\x29\xa3\xdb\x42\x2d\xa9\x86\x50\x19\x71\xcd\xc7\xb2\xdb\x92\x93\x1a\x18\x70\xd7\x2c\x20\x1e\xf1\x97\xc1\x00\xee\x40\xa9\x70\x87\x01\x9e\x36\xa0\x82\x35\x87\xf4\x59\xde\x01\xcb\x32\x57\xae\xf0\x3b\x63\xc1\x90\x0d\xc2\xdf\xbf\x1a\xa2\xba\xba\xb3\xb6\x38\x99\xeb\xd4\xc0\x67\x0b\x06\x7d\x47\xa5\x84\x35\x0d\x37\xa6\x59\x73\x17\x9f\xee\xcc\x9e\xdd\x19\x31\x74\xf0\x18\xad\x2c\xa8\xc1\xf5\x5d\x32\xa6\x31\x84\x83\x90\x8f\x38\x8d\x32\xe3\x98\x06\x99\x34\xe1\xb2\x5a\x11\xc9\xd6\x82\xf6\x03\x81\xaf\x86\x42\x56\xe4\xdb\xe3\xcc\xf2\xf6\x5e\x87\xff\x2a\xed\x2a\x05\xce\x30\xfc\x75\x8f\x6c\x6d\x6e\x6e\x92\x87\xfc\x72\xc6\x73\xd7\xea\x75\xfc\x00\xef\xf6\x00\x3b\x12\x5f\x8c\x83\xe4\x54\xd0\x0b\x8f\x24\x24\xde\xf5\xad\x8e\x2a\x77\xc6\x2c\x12\x81\x60\x55\xc2\xb2\xd2\xe9\x30\x67\x11\xfd\xc5\x32\x9f\x99\x16\x83\xb6\xaf\x78\x0c\x2e\x9c\xff\x30\x1e\xf9\x93\xd8\x42\x83\x30\xcc\x71\x9c\x7b\x61\xe5\xe0\x4a\x63\x5c\x3d\xdc\x5b\xe3\x1b\xae\x3c\x18\x88\xb3\x76\xc4\x83\x2d\x08\xae\x07\xbb\xb1\xbc\x15\x52\xa9\x87\x21\x2f\x15\x64\x59\x74\x46\x31\xc3\x0d\x42\x35\x7b\xb2\xbd\x0a\x0e\xeb\x81\x36\x62\x2d\xf8\x6d\x4a\x91\x4c\x21\x5f\xab\x47\x21\xb9\xba\x92\x5f\x27\x9b\xa7\x6a\xcb\x84\x2b\x6c\xde\x37\x0d\x2d\x12\xcc\x12\x3c\x11\x4b\x74\xde\xcd\x8b\xec\xa9\xde\x54\x49\xbc\x0c\xb4\xaf\x1a\x96\x75\xcb\x5d\x4d\xae\x23\xbc\x52\xc9\xf9\x8c\x4a\xbf\x03\x21\x17\xcb\xe1\xf4\x05\x1a\x77\xb6\xbf\x87\x08\xcd\x82\x88\x2b\x50\xeb\xda\x77\xaa\xa3\xfd\x24\xcd\x3a\x0c\x2f\x9f\xe9\x25\x3f\x29\xfa\x06\x60\x3a\x81\xe9\xf8\x81\xfa\xb3\x20\x3f\x3a\x4f\xde\x41\x98\xb0\xe2\x12\x22\x6f\x5a\x5c\xa0\x04\x3d\x9f\xe9\xe5\x69\xb9\x6d\x67\x3b\x4d\xc8\xe1\xbb\x83\x76\xd7\x5a\xfc\x42\xb6\xa8\xa8\xd3\x31\xb3\xd0\xcb\xe4\x00\xfb\x20\x14\xce\xf2\x09\x3a\x6e\x44\x39\xc9\x8b\x88\x87\xd2\x89\x42\x44\xd4\xd8\x2c\xb4\x14\xe1\x7e\x3b\xce\x4e\xf9\x69\x49\xca\x01\x6c\xf7\xc8\xa8\xe8\x47\x8f\x53\x81\xd9\xab\x69\x9a\x50\xa1\x79\xea\xac\x7f\xb2\xc5\xfe\xf3\x2c\x2a\xc0\x5f\x8a\xc5\x8d\x10\x88\x75\x84\xfa\xe4\x9e\xa1\xa4\x8b\xc1\xf5\xb2\xda\x85\x02\xc9\x3b\xf4\xaa\x17\x04\x6b\x98\x7e\xac\x7a\xe9\x07\xf4\x74\x85\x18\x9b\xec\xae\xc1\xb9\x57\x40\x91\x44\x53\x3d\x96\x88\xe7\x08\x55\x7b\xd6\x94\xbd\x0c\xd1\xb3\x5f\xdf\xa8\x2a\x2c\x9e\x6f\x26\x36\x28\xaa\xc6\x52\x83\x39\x94\xda\x7d\x94\x58\x7f\xbe\x7d\xd2\x32\xbb\x13\xda\x44\xeb\x8c\xe2\xb8\xe3\xf9\x57\xba\x04\x2b\x6b\xfd\xda\xac\xd5\xde\xb0\xd9\xed\x46\xbb\x45\x72\x6c\x98\xdd\xc7\x76\xda\x9a\x0f\xc2\x8b\xad\xb4\x20\xf9\x72\xb1\x48\xb3\x02\x74\x6b\xfc\xa6\xf6\xdd\x01\x51\x5a\x95\xb6\xe1\x08\xb2\x9c\x30\x1b\xbf\x54\xb8\xc9\x62\xac\xa7\xb2\x95\x28\xcc\x7b\xac\x07\x9a\xaa\xb4\xa0\x47\x0e\x75\xed\xdd\xb4\xd4\xdb\x8d\xab\xc7\xd5\x18\x74\x9c\xb4\x97\xbc\xd2\xbe\x3e\xed\xed\x7c\x73\xaf\xd2\xbd\x57\xe9\xfe\x57\xa8\x74\xc5\xc3\x8a\x5b\x3d\xc7\xde\x0f\xb2\x34\x21\xff\xbb\x9c\x07\x67\x51\x4e\xbe\x0f\xd8\xe7\xdf\x3e\xf3\xcf\xfe\x9c\x7a\xd5\xbd\x83\x01\x39\x4c\xa2\x22\x0a\xe2\xe8\x57\x4a\xfe\xce\x7b\xc1\x08\x35\x20\x39\x58\x62\x49\x83\x1b\x18\x28\x5b\xaa\x86\x93\xf3\x3e\x68\x75\x65\x31\x19\x45\x44\x84\x4f\x3b\x0c\x87\x64\xb3\xee\xe6\x8d\x5b\x7b\xb0\xe1\xdb\x6e\x75\xbd\x66\x26\x5e\x77\xba\xfa\x15\x9a\x8c\xd4\x36\x91\x08\x85\x96\xb4\x41\x8f\xc7\x09\x2f\x7f\x9d\xd2\x43\xaa\x9e\x89\xac\x46\x66\x49\xdf\xbb\x5e\x37\x44\x68\x04\xac\x3d\xa7\xf7\x83\x35\x81\x9e\x12\x57\xbc\xbc\xad\x9e\x68\xcc\x70\x9a\xca\xb3\xba\x65\xaa\x65\xd9\xa4\x63\xcc\xa3\xcc\x76\xd7\xdb\x28\x66\x5a\x10\x9e\xb1\x33\xaa\x9c\x1d\x72\xf8\x02\x72\x64\xef\xd4\xa4\x6d\x6c\x94\xf9\x19\xf2\xbf\xfe\xe1\x6f\x85\x9c\x6a\x74\xb6\x7c\x1e\x24\x46\xaa\xd2\xe5\xbb\x20\xfe\x3f\x3b\x30\xc9\x17\x42\xcd\x0d\x2f\x24\x0e\xd4\xe1\x51\x1a\x10\xf9\x4d\x75\x94\xb2\xae\x2e\x6e\x9f\xe7\x65\xb6\xd5\x80\xdf\x3c\x43\xa2\xc1\x6a\xcf\x0a\xe7\xcd\x13\xad\xcb\x50\xee\xd3\x07\xe9\x9c\x05\xd0\x33\xd5\x76\x9f\x9e\xd1\xec\xb2\x23\xbd\x21\x7f\x88\x92\x69\x4c\xdf\x70\x84\x77\xc9\x90\x78\x33\x74\x4d\x62\x5a\x55\x47\xfc\xe0\x62\x02\xd5\x41\x4b\x09\xef\x92\x6e\x90\x05\x91\x4c\xe3\x14\x69\xd8\x16\x89\x0c\x39\x3f\x7b\x7b\x7b\x9c\x6a\x30\x90\x70\xbb\x20\x61\xd9\x99\x9b\x81\xf1\x6b\xdd\xb6\xaf\x3a\x21\xc3\x5a\x3e\x25\x07\x03\x1e\x58\x52\x25\x09\xaf\xec\x98\xb9\xc8\xf5\xd8\xc8\x9f\x3c\x67\x44\x23\x78\x8f\x56\xc3\x8e\x9e\x33\xa0\x72\x17\xdf\xa2\xe3\x16\x7f\xe1\x75\xe5\x9c\xa9\x8a\xaa\xa4\x80\x13\x76\x41\x79\x24\x16\x45\x47\xf2\x9e\x2e\x99\x44\x34\x0e\x2d\xd3\x03\xd1\x8a\xd1\x53\x8b\xe7\xe0\x0e\x5a\x8c\x87\x77\xcd\x22\x43\x99\x6c\x45\x7d\x90\x64\xe1\x3a\xc2\x72\xd8\x9b\x84\xed\x4b\xd6\x26\xbf\x05\x8b\x33\xf5\xf0\x8e\xac\x28\xea\x13\x72\x22\x13\x03\x9f\xdc\x8b\x81\xf7\x62\xe0\x5f\x5b\x0c\xd4\xef\xf3\xf8\xa2\xb9\xab\x17\x7a\x77\x73\x77\xcf\x40\xde\x48\x75\x63\xa9\xb1\x32\x9c\x13\x45\xa4\x16\x69\x85\xcc\x3e\xd1\x29\x52\xb8\x5c\x93\xb9\xec\xd3\xb8\xb8\x07\x9e\xa7\xf3\xb5\x64\xb0\x89\xc0\xc0\x27\x3f\x0e\xa9\xa9\x0d\xa1\x71\x06\x2a\xc1\x3d\x3d\xfb\x8a\x58\x39\x86\xd2\x15\x34\x06\x6f\x82\x24\x98\x52\xfd\x3a\x9f\xb1\x2c\x8e\x0a\x43\x15\x20\x5d\x78\x68\x70\xb4\xdf\xcf\x0d\x0c\x39\x15\x67\xf3\x1a\xfb\xf7\x90\x32\x0e\x13\x25\xa6\x7f\x4f\x4b\xfc\x1b\x05\x39\xf7\xb9\x50\x16\x89\x62\x4a\xc1\x4b\xa5\x67\x93\x32\x3d\xcd\xdb\x8e\x45\x65\x9b\x66\x7b\x40\x62\x0e\x22\x44\x1b\xa5\xb1\x26\x0c\x77\xa2\x28\x7c\x8e\x22\x0e\x65\xc7\x27\x7d\x19\xe6\x4c\xb0\x51\x29\x75\x6e\x8e\xb9\x33\x4e\x7d\x49\x21\x42\x73\x88\x6d\x57\x8d\xb3\x4f\xde\x30\x56\x1e\xd1\x5c\x84\x40\x07\x7c\x38\x5e\x28\x0d\xcf\x9e\x8d\xf1\x26\x07\x75\xf5\x76\x19\xc7\xda\x31\x46\x8f\x49\x91\xf4\x22\x82\x6b\x33\x1f\xee\xfe\x98\xf1\x87\xee\x2c\xec\x0e\x59\xfb\x5a\x71\x77\x1c\x4c\x36\x8a\xb6\x63\x07\x38\x51\xa1\x64\xcc\x83\x18\xa9\x09\x1f\xf3\xfe\xdd\x81\x88\x30\x51\x1d\x3b\x46\xa3\x4d\xb8\x7a\xe5\x84\x07\x48\x57\x27\x4e\x1b\x4d\x1c\xf4\x90\x41\xba\x58\x32\x88\x4e\x25\x79\xd0\x81\x6a\xa9\xc4\xc6\xba\x87\xbb\x96\x50\x90\xef\x71\xa3\xa7\xb4\x25\x43\x2a\xa7\x8b\x3d\x02\x21\xde\xab\x42\x48\x91\x67\xfa\x37\xa7\x6e\x28\x72\xca\xd8\x01\xfa\xac\xf1\xac\xef\x60\x9d\xf3\x7b\x15\x7b\x19\x63\xde\x45\x3c\x77\xc0\x5b\x7d\x56\x34\xdd\x11\x97\xe0\xde\x13\x23\xc5\x0c\xf5\x8c\x51\x68\x6f\x56\xe0\x6c\x06\x8e\x3d\xcf\xbc\x00\xaa\x2a\x6f\x6c\x12\x81\x0b\x5f\xc8\x22\xf9\x7e\x4a\xd2\xe1\x0a\x91\x8b\x02\xb9\x6e\x1b\x21\xa1\x59\x0c\x22\xec\x8e\x55\xec\x23\xb6\x97\xe4\x95\x9d\x2f\x0b\x79\x02\x80\xd1\x32\xc0\x80\x90\x67\x04\x18\x52\xc7\x14\xbf\x16\x44\xaa\x33\x40\xb3\x54\xa2\xcc\xa8\x72\xab\x8c\x55\x1c\x0e\xaa\xa4\x8b\x5c\x8e\x4f\x53\xda\x1a\xfd\x82\xd1\xc5\x32\xe4\xd0\x46\xcb\x28\x0e\x01\x61\x62\x50\x2c\xd3\xf1\x6f\x0b\x0c\xff\xe3\xd1\x8b\xa3\xf5\xf5\x75\x10\xef\xdb\x39\x59\x4e\xe3\xcb\xbe\x88\x22\xc6\x0e\x04\xcb\x9c\xed\x89\x85\x6a\x25\x41\x2e\x65\xd9\x6f\x69\x57\xa3\x6e\x48\x18\xe3\x80\x0c\xf5\xde\x7a\xcb\x88\xf4\x34\xfa\xe5\x84\x65\x9f\x6c\x9e\x9e\x32\xb1\x0b\x7f\x5e\x5d\x29\xbb\x4d\x1b\x94\xff\xd8\x82\x32\x6c\x2c\xbb\xfe\xab\x22\xab\x76\x80\x24\x88\x0b\x3b\xe8\x55\x88\x2a\xbb\x45\x55\x97\xea\xda\xe8\x94\x87\x40\x49\xfc\xcf\xb2\x88\xe3\xe7\x5b\xc8\xef\xfa\x34\xbc\x8a\x1f\x68\x62\x45\xb0\xf0\x85\x2a\x30\xce\xea\xd0\x96\x29\x51\xea\x8b\x29\x7d\x3f\x63\xc4\x62\x51\xe6\x75\x1e\xd3\x3c\xbb\x61\x0e\x2f\xda\xc1\xcc\x4c\x19\x45\x5a\x06\x34\xde\x70\x2a\x66\x77\x8d\x6a\xca\x87\x60\x5f\x43\x09\x52\x61\x59\x4d\x3d\x3d\xcb\x30\x57\x34\xa9\x77\xe7\x28\x39\xe4\x32\xa3\x70\x43\xfa\xfe\xdd\x81\xf2\xc0\xc4\x4d\x59\xc6\x41\xa2\x84\xcd\x28\x11\x4a\x17\xbf\xaf\xa7\xcc\xf5\xf5\xd8\xef\xf7\xaf\x71\x7c\x37\xdb\x97\x9e\xd6\x64\xca\xa2\x1e\x4e\x5a\xe7\xd3\xbe\xd4\xdd\xfc\x2a\x44\x28\x69\xc0\xf4\x49\x8f\x67\xad\x0c\xd1\xa2\x64\x89\x62\xe7\x8d\xb4\x81\x69\x7a\xfd\xf7\xed\xbd\xde\xe7\x5e\xef\xf3\xd7\xd6\xfb\x08\xa5\x4f\x38\xba\xc5\xcd\x9f\x4f\xef\xa3\xb4\x35\x58\xf1\xc3\x99\x93\xd2\xe8\xbc\x78\x6e\xf0\x11\x36\x0c\xd3\xe5\x87\xa3\xa9\x80\x91\x5a\xc9\xbb\x15\x81\xc2\xd6\xb4\xbc\x94\x77\x3c\x36\xfd\xe2\x82\x8b\x7c\x21\x96\x74\x65\xc9\x41\x1d\x56\x33\xda\x59\x04\x90\xa3\x76\xe9\xf8\x3a\x68\xe9\x9b\xf5\x2e\x5f\x1e\xb0\x68\xb1\x2c\xd4\xe3\xb5\x84\x9e\x0b\x6c\x76\xf4\x76\xc9\x84\x8e\x21\x69\x2b\x38\x2b\x8e\xc6\x90\xb4\xc3\xd1\x27\x5f\xae\x14\x13\x77\x54\x9f\x54\xa3\x53\xda\xac\x51\x05\xe7\x6d\xd4\x97\x2b\x1b\xdd\x76\x1b\x5d\x2c\x8b\x57\xf4\xa2\x7e\x98\xaf\xe8\x45\xd9\x18\xcd\xac\xea\x01\xd6\xb7\xc5\x81\xca\x86\xe6\x6f\xcb\x1a\x97\xd8\x8c\x4e\x34\x9c\x9c\x88\x9e\x46\x72\x4f\x0c\xbd\x27\xba\x05\xc0\xa7\x25\x3b\xd7\x8b\xe7\x7a\xd7\xe2\xb4\xd3\x1a\xee\xc0\x16\xf5\xf4\x7e\x8b\xba\xdf\xa2\xfe\xda\x5b\x94\xbe\x9a\xa0\xc5\xec\x46\xf7\x12\x02\xf8\x6e\x5f\x25\x96\x44\xff\xf7\x85\xff\xf7\x5d\x82\xf8\xef\x41\x6a\xb6\x4d\x06\x22\xcd\x91\x2d\xa0\x85\x48\x96\x60\xe3\xb2\xf6\xc6\x69\x32\x89\xa6\x12\x0c\x85\xc2\xc1\xd0\x32\xb2\x8a\x04\x3b\x17\xcf\xd6\x8c\x0b\x1a\x91\x28\x61\x7e\xe4\xa1\xc0\x2d\x64\x40\xa2\x04\x39\xcc\x3f\x5c\x26\x63\xbe\xc5\x60\xa8\x9c\xa7\x4a\x30\xc6\x8a\x33\x6a\x03\x89\x54\x55\x17\x77\x50\x84\x21\xa2\x51\x90\xc8\x6c\xee\xf5\xd0\xe9\x8f\x4c\x56\x42\x08\xf8\x4c\x6b\x72\x67\xa0\x74\xde\xe2\x8d\x20\x28\x01\x37\x4f\xbb\xe4\xc1\x03\x22\x7e\xf7\x41\x27\x78\x34\xe9\xb4\x37\x2f\xda\xdc\x75\xc9\x66\x97\x3c\x23\x2d\x5a\xcc\xd8\xee\x01\x81\x49\x9f\x5f\xbe\x0a\xf2\x59\x8b\x0c\xed\x64\xae\xd1\x6d\x69\x29\x01\xc5\x7f\xfa\x31\x4b\xe7\xcf\x7f\x83\x9e\xb6\x45\x97\x50\x58\xa1\xe7\x97\xd0\x30\xeb\xf4\x7e\x12\x1e\xb2\x72\x2a\x9a\x97\x17\x92\x8f\x43\xc1\xea\xf1\x2c\x93\x71\x4c\x7f\xa3\x01\x1c\xb3\xb6\x6a\xba\x8e\x61\x4a\x3b\x2d\xe7\x07\x8d\xf3\x20\x5d\x26\x8d\xae\x99\xee\x60\x1c\xde\xb6\x39\x09\xe1\xa1\x94\x80\xf1\x51\x39\x53\xf0\x1b\xf6\xff\x58\x35\x88\x26\xc3\x99\x04\x0c\x60\xf4\x59\x75\xef\x65\x31\xbb\xeb\x03\x42\xe3\xc3\xc1\x1d\x9d\x0d\x20\x00\x70\xf9\xd9\x80\xab\x3e\x38\x17\x8f\xa8\xb7\x47\x0b\xdc\x99\x45\x4d\x3f\x16\x37\xe8\x02\xba\xe3\xe6\xdc\x95\xfb\xbf\x20\xd8\x43\xf7\xe1\xf3\xfd\xb7\x56\x30\x32\xc1\x53\xb9\x56\x86\x3f\xa0\x15\xba\x99\xeb\xb5\x35\xde\xbb\x3e\xb7\x8c\x52\x6f\x69\x5e\x16\x33\xad\x0d\xea\x91\x36\x0e\xdd\xdc\xee\x89\x61\x4e\x69\x31\x2c\xd1\x79\x4a\x5f\xa5\x7d\x5c\x50\x8c\xa4\x27\xf4\x74\x46\xe1\xb3\x20\x36\xa2\x8c\xf5\xad\xc0\xd9\x67\x41\xec\x38\x23\x51\x69\xd7\x6b\x80\x9e\x95\x86\x22\xfc\xfc\xdd\x64\x30\xa2\xe8\x4d\x86\x23\x8a\x36\x1c\x50\x93\xb3\x28\xe3\x2e\x41\x0c\x96\x9b\xb5\x27\x27\x01\xe8\x9e\x9e\x24\x9b\x72\xf2\xd5\x11\x0a\x59\x73\x1a\x57\x78\x43\x72\xa2\x05\x2a\x7e\xbd\x27\xdc\x68\xfe\xa8\x6f\xf3\x6c\x08\x1c\xf9\x9c\xf3\x13\x05\x8c\x42\x47\x5a\xf7\x58\x43\x5c\x0d\xcf\x53\x3e\x6b\x14\x50\xc9\xb1\x39\xcd\x82\x29\xdd\x2f\x9a\x9c\x9c\x05\x68\x29\x8e\x7c\x10\xea\x50\x5b\x81\x25\xbe\xee\x38\xc7\x2e\x52\x38\x59\xae\x82\x16\xef\xc0\x84\x73\xc7\x9a\x31\x31\xa8\xd2\xe1\x58\x99\xbf\xfd\x7c\x7b\x07\x26\x57\x7d\x1d\x3d\x73\x76\x64\x0d\x4d\x89\x8c\xb7\x1b\x96\xaf\xb7\x3d\x67\x89\x6b\xfb\x57\xb6\x78\xc9\xf5\x6a\xf4\xcb\x9a\xa8\xa6\x5d\xd8\x7f\xeb\x31\x01\x60\x0e\x26\x94\x44\xf7\x35\x30\x81\x48\xf9\x16\x83\xee\xad\x95\x50\xf6\x7c\x11\xc5\xfc\xf0\x56\x4b\xde\x02\xb4\x82\xc6\x5d\x08\x89\x87\xcd\x72\xfa\xb3\xe5\xb5\x86\xf4\x68\x17\x73\xba\x55\x25\xb2\xba\x1d\xdc\xba\xe5\x44\x55\xcd\x8d\x9c\xc2\x17\x74\x1c\xcd\x83\xb8\x1c\x15\x5a\x0a\x6c\x88\x04\x5d\xa0\x84\x28\xff\xb8\x03\x36\x85\xa7\x9a\xc1\x96\xc7\x4a\x2e\x39\x82\x81\x7c\x5d\x39\xe8\xfa\x15\x84\x2a\xac\x66\x1e\x1f\x3d\x27\xd4\x95\xc6\xa4\x4a\x39\x83\x2b\x3b\xfc\xfe\x91\x38\xcd\x4d\xf0\xf4\x9e\x8e\x69\xb4\x68\x40\xe6\x6e\x99\x26\x04\xe0\x82\xde\x96\x02\x44\x8d\x8d\x07\xd8\x70\x15\xd7\x72\x31\xcf\xe0\x6c\xc0\x26\x14\xc0\xc5\xa2\x3b\x12\x10\x6b\x97\x37\x3b\x20\xbd\x0f\xce\x9b\x2f\x71\xb7\x80\x1f\x11\x95\x70\x4d\x38\x1b\xc3\x83\x47\x16\x72\x43\x4b\xd7\xf5\xb6\x51\x57\x6f\xde\x4f\x7b\xa6\x7c\x6b\xcc\x37\x8e\x68\x9a\xac\x30\x0e\x13\xba\x64\x1c\xa5\x40\x5f\x79\x1c\x0d\x3a\x5f\xde\xe3\x3b\x97\xb5\x4b\x08\x47\x18\x77\x55\x75\x14\x02\xff\x7b\x3b\x6a\xe5\xdc\xa4\xa3\x6c\x2f\xb8\xb3\x13\x81\x19\x21\xbd\x6a\x4c\x08\xd2\x3f\x34\x3f\xc0\x4d\x28\xc6\x18\xe1\xad\xb8\xd2\x98\xcb\xa7\x32\xae\x79\xdd\xb4\x71\xe8\xbe\x0c\x76\x5e\x32\x85\x66\x9d\xbe\xb1\x96\x76\xe4\xf5\xeb\xd7\x0d\xfb\x10\x97\x52\x90\xaa\x69\xa5\x96\x3f\xd0\x6c\x41\x6b\xb7\x27\x85\x01\x0e\x5d\x8d\x00\x07\xa6\xa2\x17\xf9\x72\x34\x8f\x8a\x9f\xd3\xac\x4e\x4a\xd2\x80\x25\x2b\xdd\x97\x5f\x7d\xf5\xdd\xa0\x55\x01\x55\xba\x15\x97\xb4\x67\x1d\x71\x9c\xeb\x6f\xad\xf8\xe9\xe1\x34\xa5\xe8\x30\x52\x0f\xd2\xd0\x04\x83\x25\x6c\xa4\x80\xec\x6f\x15\x12\x07\x30\xb7\xa4\x2d\x3e\xb8\x10\xfa\x28\x61\xe4\xa1\x82\x65\xe9\x4a\x30\x2d\x03\x10\xb2\x53\x59\xb6\xd5\xa8\x69\xd0\x8b\x18\x89\x4e\x74\xc5\x00\x94\x67\xee\x57\x66\xa1\xd2\x12\xa8\x79\x73\x45\x3b\x19\xaf\x5f\xbf\x76\x81\x39\xf5\xa3\x2a\x15\x61\x1a\x83\x66\x09\xf0\x2d\x2c\x1c\x78\x4c\x36\xa5\xec\xae\xf2\xd1\xac\xe9\x88\x91\xae\xd2\xba\x9a\xa6\xa3\x6a\xe1\x46\xc9\x28\xc8\xb1\xa2\x42\x74\x00\x18\xa5\x58\xb7\x02\x46\x81\x5c\x77\x7b\x2b\xb4\x31\x8f\x12\xd3\xba\xc5\x69\x41\x40\xdc\xb0\xfe\x59\x90\xcf\xb2\xa0\xa8\x1c\x43\x09\x4c\xa3\x9d\x61\xf5\x1e\xc9\xdb\xd9\x8a\x0e\xf9\x41\xea\xcf\x19\xe2\x3a\xd8\x3c\x5c\xac\xde\xc3\x69\x90\xbf\xcb\xa2\x71\x25\xce\x4a\x60\x6e\xac\x04\x5e\xbd\x97\x22\xec\x50\x5e\xd5\x4b\x05\x73\xc3\x36\x46\xe8\x0a\xad\xa2\x99\x72\xb0\xaf\x44\x43\x32\x26\xc3\x3f\xb8\xad\x4d\x55\xdf\x6c\x50\xd4\x22\x66\x21\xc6\xb5\x4b\x7f\xac\xed\x18\xd0\x95\xe6\x28\x32\x5e\x2c\x04\xe3\x22\xcd\xa4\xf8\x23\x2d\x1f\xc0\x8c\xb8\x47\x18\xac\x61\x4b\x2c\xa0\x7d\x8d\x4d\xa4\xa5\x83\xf3\x14\xb5\x87\x9e\xdb\x71\xa8\x83\x8c\x82\xa5\x12\x3c\x1e\x3b\xb0\xcc\xe9\x51\x9c\x22\x6e\x3d\xa1\xeb\x61\xa8\x90\xe1\xe6\xad\x1b\xbb\x9e\x34\xc7\xe8\xd3\x62\xd6\xe9\xf6\x5c\x92\x7d\x9d\x4e\x91\x6c\xdc\xac\x4b\xbe\x81\x6a\x43\x8c\x6a\x17\xfa\x12\xfb\x1d\x51\xa0\x3f\x8d\xd3\x51\x10\xf7\x19\x52\xfb\x81\x9b\x2c\x62\x9e\xf9\x9a\x8c\xc6\xc1\xff\xc7\xde\xbb\xef\xb7\x6d\x33\x8b\xa2\x7f\x27\x4f\x81\x66\x9f\xaf\x91\x63\xc6\x16\x75\xb3\xa3\xc4\x5d\xcb\x91\xed\xd8\x2b\x71\xec\x6d\x3b\x6d\xbf\xed\x9f\x9b\x1f\x25\x42\x16\x1b\x89\xd4\x22\x29\x5f\xda\x78\xbf\xcf\x79\x8e\xf3\x62\xe7\x87\xc1\x85\xb8\x52\x94\x2f\x69\xda\x65\x7f\x6b\x35\x22\x09\x0c\x06\xc0\x60\x30\x18\xcc\x65\xfa\xf1\xb6\xcd\x92\xca\x46\xa3\xf4\x65\x59\x93\x92\x55\x4a\xd1\xa0\xee\xfa\x20\xe7\x94\xe2\x15\x6a\xf6\xe9\x99\x17\x8d\x6a\x3b\x1f\x15\xf6\x7c\x9a\x61\xce\xb3\xae\xbf\xee\x3d\x33\x0c\x84\x98\x81\x7a\x61\x99\xf3\xac\xdb\x68\xc3\x0b\x3a\xa7\xcf\xba\x8d\x57\xf4\x51\xd0\xc2\xb3\x6e\x93\x56\x89\xfa\x41\xfc\xac\xdb\x6c\x7a\xaa\xf9\x20\x3c\xb2\x41\x7a\xd6\x6d\xb5\xe0\x99\x9b\x11\x3d\xeb\xb6\x28\x78\xc6\xd9\x9f\x75\x5b\x14\x2d\x7e\xd9\xfb\xac\xdb\x22\x0d\x72\x23\xa0\x67\xdd\x56\xf3\xe6\xcc\x6b\xbe\x7a\xb4\x47\x7c\xb4\x47\xfc\x67\xdb\x23\xba\x8c\x11\xef\x6c\x33\x5f\xdd\x4c\xb0\x82\x0d\x20\x94\xfb\x88\xf3\x87\x34\xb1\x87\xb7\xf3\x4d\x56\x0a\xe3\xfa\xdb\xd8\xac\x54\x30\xa9\x5f\x5d\x5d\x2d\x62\xd2\xd8\xe2\xdc\xb0\x84\x8d\x84\xc5\x03\x38\x9c\x8f\x50\x30\x8d\x24\xdc\x1f\xe8\x40\x62\x26\xa3\xd7\x04\x1e\x35\x63\xfd\x6d\x85\x2b\x8c\x53\x5d\x37\x6e\xb4\xe2\x2a\xb4\x80\xc0\x27\x8b\x5f\xc6\xa6\xf6\x11\xe7\x96\x4d\x4d\xdd\xbc\xe4\xdd\xe5\xe6\xcc\x6b\xd5\x1f\x77\x8b\xc7\xdd\xe2\x9f\xbd\x5b\x7c\xa7\xd6\xeb\xf7\x67\x68\x5e\xd1\x0e\xbe\x30\xe5\x3c\xc4\x69\x96\xc4\xc1\xf8\xd1\x9e\xf3\xa1\xed\x39\x6f\xaa\x59\xf8\xc5\xf8\xb2\x30\x1b\x2c\xd3\x0f\x17\x05\x4d\x15\xf1\x94\xcd\xea\x67\x6b\xa1\x3b\xdc\x50\x46\x13\xb2\x11\x1c\x05\x97\xef\xf1\xbc\x9b\x0b\xb9\xe8\x73\xef\xe9\x93\x27\x3a\x6e\x46\x81\x12\xcf\xb4\xea\x37\x71\x66\x3b\xe2\x83\x64\xb8\xf7\xe4\x49\xc5\xbb\xe9\xca\x57\x70\x78\x70\x84\x07\xc9\x05\x0d\x0e\x55\x76\x67\xc5\xcb\x59\x71\x55\xbf\x96\x0c\xc8\x2c\x1e\x27\x83\x2f\xd5\x28\x45\x29\x5b\x42\x2c\xae\x72\x55\x0c\x1e\xab\x8d\x9b\x73\xf4\xee\xf9\xe6\xbb\x98\xfb\xb9\xd7\xdf\x8b\x5c\x73\xda\xae\x8d\x9d\x5d\xaa\x3e\x3f\xd5\x66\xa7\x7c\x6e\x16\xb9\xcb\xd4\xe7\x46\x43\xde\x26\x59\xb3\x86\xa5\x46\xa4\xc5\x5b\xbc\x55\x28\x48\xba\x3d\xe1\x54\xed\xba\xed\x70\x5e\x8a\x48\xe0\x64\x79\xf7\xe1\xce\x07\x9b\x73\xd4\xc2\xc5\x74\xc8\x85\x1d\x62\xb9\x29\x97\xf3\xed\xb6\x10\xce\x2d\x2a\x22\x4d\x2b\xa4\xcb\xe9\xfe\xa3\x9c\xfe\x28\xa7\xff\xb3\xe5\x74\x26\xa4\x67\x23\x87\x56\x67\x8e\xf8\x8d\x53\x3c\x9b\x10\xd0\x3f\xcd\x51\x02\x0d\x92\x14\xaf\x44\x89\x2a\xa7\xaf\x55\x0e\x9c\x50\xd1\xd1\x72\x9e\xbf\x26\x14\x3a\x1e\x8d\x1e\x5c\x3b\xf4\xfd\xc8\xe3\x84\x3b\x1e\x8f\x94\xdb\x0d\x7c\xc9\x82\x4e\xef\x7c\x8b\x0b\x9d\x6c\x34\xff\x42\x27\x1b\xc1\x85\x0e\x15\x5c\x16\xb9\xb7\x29\x93\xf3\xdd\x9b\x93\x21\x1e\x48\x5b\xd3\x85\xf5\xa6\x8e\x89\x08\xd9\x68\xf4\xd9\x5e\x40\x35\x0a\x41\x16\x5d\x56\x59\xa3\x51\x3c\x4c\xdc\x2d\x5a\xbe\xde\xad\xb9\x0c\xe7\xfb\xc1\x15\x23\x82\xe3\xe8\x0f\xfd\x72\x58\x6a\x7b\x5e\x51\xd5\xea\xe7\x36\x88\x44\xf1\x61\xf2\x4b\x39\x02\xb6\x22\x77\x6b\x78\x12\xa4\x5f\x4e\xd2\x59\x96\xe3\xf0\x10\x1b\x97\xc1\x52\xf3\xe5\x05\xef\x86\x44\x8c\x89\x4c\x77\x18\x44\x25\xed\x3b\xcb\xdc\x8d\x02\x82\x30\x3c\x4c\xa3\x8b\x20\xc7\xf4\x48\xe8\x68\xbd\xac\xd8\xdd\xfa\x4e\x93\x7e\xcd\xed\x7e\x59\xb1\xbb\x21\x30\x0a\xb2\xb9\xad\x3b\xcb\xdc\xad\xe9\x73\x9c\xd3\x0d\xbd\x74\xec\x4b\x4a\xdd\xbd\xf9\x0a\x73\x5f\x56\xec\xce\x74\x7f\x7c\x3d\x29\x6d\xdc\x55\xe4\xce\x54\x3f\xaf\x61\x57\x91\xbb\x0e\x39\x91\xe3\x72\x4c\x41\xef\xa4\xc9\xe4\x30\xc8\xb2\xcb\x24\x0d\xcb\xc6\xbf\x62\x9d\x3b\xaf\x83\x79\x63\xe2\x2a\x72\x67\x32\x9c\xd7\xb0\xab\xc8\x7d\xb0\x9e\x79\x6d\x97\x94\xb2\x37\x2f\x1e\x56\x57\x51\x36\xeb\xc3\xcd\x1b\x4d\x69\x3c\x8b\x8b\xe7\x49\x94\x65\x51\x7c\xfe\xb4\x32\xb6\xd3\x24\xd3\xaf\xae\x24\x2c\x2d\x5f\x2d\x7a\x0a\x54\xae\x77\x44\xf3\x6f\xb9\x8e\x47\x23\x29\x81\x98\x66\x7b\xa1\x9c\xa2\x35\xcb\x88\x56\xe3\xf1\x0c\xfd\x78\x86\xfe\x67\x9f\xa1\x8b\xbb\xae\xfe\x1f\x7f\x68\x77\x5d\x9b\x63\x7c\x85\xde\xe2\x14\x9f\x67\x7f\x04\xd9\x1f\x11\x7a\x13\x8c\xf1\xd5\x7f\xa6\xf9\x30\x5b\x19\xcd\xd4\xe3\x70\x87\x45\x33\x3d\xc2\x43\x9c\xe2\x78\x80\xbb\x88\xb4\x9f\x75\x57\x57\xcf\xa3\x7c\x34\xeb\xaf\x0c\x92\xc9\x2a\x3f\x75\xaf\x9e\x27\x2f\xc5\xef\xfe\x38\xe9\xaf\x66\x97\x41\x3a\x59\x8d\xe2\x1c\xa7\x71\x30\x5e\x25\x5d\xc2\x57\x39\xff\x77\xe5\x3c\xf9\x5f\x1f\x9a\xcd\x07\xbe\x1a\x2b\xee\xbb\x8e\x09\x36\xff\xf0\xc3\x35\xfc\xf8\x5b\x5c\x76\x51\xcb\x57\x9c\x5f\x26\xe9\x97\x23\x0c\xa1\x6a\xcb\x14\xe5\x7a\x71\x53\x5b\xde\xff\xe3\x8f\xcf\x25\xa5\xee\xe2\x9b\x77\x1d\x0f\xb6\xe3\xa0\x3f\xc6\xf3\xb0\x94\x4a\xda\x11\xb4\x17\xb8\x0b\x6e\x97\xc1\xb4\x22\x6e\x45\x49\x07\x6e\xd6\x02\x77\xc0\x2d\x4c\x2e\x63\x16\x85\xb8\x0c\x31\x5e\xcc\x8e\x95\xe5\x6b\x75\x77\x53\x07\x62\xb3\x69\x05\xb4\x68\x21\x3b\x52\xc6\xb7\x3b\xa3\x94\xe2\x3c\x8d\xf0\xc5\xbc\x08\x10\xbc\x98\x1d\x2d\xcb\xd7\xbb\x90\x56\x4e\x76\xbb\x39\x44\x45\xca\x38\xc8\x49\xfb\x74\xe7\x21\x3a\xc7\x15\xdc\x99\xed\xb8\xa8\x1f\xee\x30\x26\x34\x7b\xc3\x9c\x18\xa9\x76\x1c\xd4\x0f\x77\x1e\x0d\x96\xb0\xa5\x1c\x19\x5a\xc8\x8e\x8f\xf1\x8d\xa3\xd4\xaa\x84\x52\xc9\xad\xae\xa1\xe2\xd4\xd9\xb2\x74\xfb\x57\xf0\x43\xe9\x65\xc1\x88\x8a\x97\x9c\x0f\x48\x37\x8e\x53\xf5\x99\x53\xbf\x04\x88\x90\x60\xf1\x78\x8e\xa5\x8b\xc9\xe9\x4c\x7a\x90\x64\xf1\x07\xbd\x66\x1c\x45\x17\x4e\xdf\x18\x32\x27\xf0\xdd\x79\x86\x2c\x87\x6d\x51\xca\x2a\xb0\xe1\xbb\xe3\x78\x65\x39\x5f\x11\x61\xc9\x16\xec\xd6\x7a\x2f\xd9\x7c\x3c\x53\x3d\x9e\xa9\xfe\xd9\x67\x2a\x76\xa0\xe2\x17\x44\xdf\x36\x4a\xfb\x6d\x0c\xab\xb9\x77\x54\x30\x8d\xb8\x30\x4e\x53\xfc\xe5\xa3\x32\x0b\x34\x7a\x5d\x56\x1a\x95\x92\x97\xce\xaf\xa7\x44\x3e\x60\x11\x28\x5f\x3f\x95\x18\x78\x94\x0f\x46\x35\xf2\x5d\xcf\x2d\x32\x08\x32\x8c\x9e\x13\x8a\xcf\xf2\xe7\x5d\xe5\x13\x4c\x56\x7a\x9e\xad\x64\xa3\x68\x98\xd7\xb4\x84\x22\xc8\x48\x0e\x58\x37\x0b\x30\x96\x0c\xee\x6b\x31\xbe\xa4\x11\xa8\xe8\x85\xec\x6b\x0b\x1a\x53\x1c\x87\x51\x7c\xfe\xe0\x78\x1c\xd2\x76\x64\x1b\x22\x1b\x52\x2c\x74\xa0\x89\x8d\x06\xce\xa8\x4c\x13\xac\xdc\x48\xd2\x81\x28\x35\xdf\x92\x90\x41\xd3\x65\x04\x85\x14\x2c\xb2\x93\x45\xaa\x8e\xa3\x38\xcb\x83\xf1\xb8\x52\xcb\x5a\x69\xbb\xaf\xbb\xbb\x50\x09\x1e\xe7\x38\xff\x90\x9c\x57\x08\x28\x46\x4a\x39\x7d\xec\x69\x8b\x5a\x91\x92\x56\xa7\xc9\xdc\x38\x1c\xa4\xc8\x9c\xf6\x7a\xa3\x20\x3e\xc7\x15\x9a\xb4\x09\x1f\x14\x84\x6c\x92\xa5\x8c\x9e\x22\x08\x91\x8e\x49\x8d\x24\xe3\xb1\x2c\x0f\x2c\xcc\x6f\xb2\xd1\x68\x05\x58\xa3\xc1\x6e\xb2\x91\xc9\x6e\xdc\xe2\xd3\x9c\x5b\x1a\x83\x0c\x90\x71\x4b\xa3\x58\x12\xdc\xab\x9a\xde\x4d\x8c\xc8\xa6\xa9\x7f\x38\x44\x4c\xd2\x45\xc6\x35\x05\x6d\x96\xe1\xa0\x17\xbd\x5b\xf3\x1a\x19\xdf\x43\xdb\x32\xe9\x19\x92\x28\xc5\x01\xe7\xa3\x2e\xf9\x0f\x05\x96\x8d\x46\x5d\xf2\x1f\x2a\xbc\xda\x12\x32\xb4\x5a\x8f\x22\xe9\xa3\x48\xfa\x0f\x17\x49\x0b\x3d\x3f\xf7\xb1\xbe\xa7\x6c\xd1\xd4\x3f\xfc\x08\x9f\x93\x79\x0e\xd2\xcd\x7e\xe4\xc8\x4b\x90\xad\xbe\x53\x8b\x42\xa2\x7f\xae\x9e\x8f\x06\xc1\x54\x06\xe2\x82\xb1\xd7\xdb\x3c\x34\x21\x48\x98\x30\x47\x74\x66\xbd\x8c\x36\xd0\xf3\xfa\xd5\xa0\x13\xbe\x0a\x1b\x83\xb0\xd5\x7a\x15\xac\xb5\x5b\x83\xd6\xab\x56\xa3\xd3\xc2\xfe\x7a\xfd\xd5\xa0\x5d\xc7\xcd\x56\xd8\x69\xb5\x3b\x8d\xfe\xf3\x02\x17\x1b\x98\xc0\x0f\x7c\xdf\xef\x0f\xea\x6b\xad\xc1\xab\xc1\x30\x58\x5b\xf7\x87\xf5\x41\x73\x1d\x77\x9a\xfd\xb0\xed\x0f\x5e\xf9\xfd\xf5\x60\x58\xaf\x3f\x77\xf3\x26\x8a\x63\x57\x92\x74\x83\x7e\xd4\xb5\x0c\x62\xc1\x09\x99\x1b\x7c\xd7\xda\x3f\xba\xd3\xd3\xc2\x04\x6d\x03\xb2\x3e\xae\x16\xb8\x66\x77\x29\x54\x85\x63\x96\xcf\xe2\xb3\xae\xef\x3d\x9b\x33\x4f\xcf\xba\x0d\xc2\x6c\xdb\x8f\xcc\xf6\x91\xd9\xfe\xb3\x99\x6d\xc1\x6b\xb9\xf2\x4b\x63\xb6\x65\x86\xc9\xc3\x34\xf9\x03\x4f\x82\x78\x25\xc4\x3f\x7d\xab\x74\xfe\xfa\x05\xe9\x5d\xd2\xf5\x53\x45\xa2\xf4\x9d\xbe\x50\x32\x12\x68\x25\x32\xbd\xc4\x6d\x72\xef\x2f\x9e\xe1\xbf\x24\x5b\x3f\x1f\x8b\x87\xcf\xd7\x5f\x35\xc7\xf7\x9d\x53\x7c\x5b\xba\x54\x92\xe4\xdb\x16\xba\x45\x1b\xe1\xff\xb0\xbd\xa5\x75\x21\xdd\xf6\x77\x92\x5e\xdb\xd9\xef\x7b\x4a\xb0\xfd\xc3\x06\x25\x1c\xed\x15\xd9\x50\x86\x51\x8c\xc3\xbb\x64\xe0\xe6\x99\x63\xf3\x04\xb1\xb4\xd5\x45\x3a\x6b\x48\xc7\x2d\x0e\xdb\x22\x21\xeb\x0a\xda\x27\x1b\x5b\x84\x33\x46\x49\x30\x4c\xda\x58\x6a\x39\xb0\xe7\x66\xd3\xe7\xe3\xba\xc3\x46\xea\xeb\xc7\xd9\x78\x7c\x23\x19\xbb\x47\x43\x84\xaf\xa2\x0c\x8a\x5b\x87\x5c\x6b\xb1\x34\xa7\x3c\xcf\x60\xc3\x5b\xa3\x39\x6c\xe4\xbc\xfb\x2f\x91\x7f\xb6\xe4\x48\x33\xbf\x32\x4d\xa6\xb5\x25\xc8\x5b\xcd\xee\xbd\x08\xff\x87\xf5\x04\xa3\xf5\x83\x2c\xdc\xa8\xc3\x4d\xed\x1b\x0a\xcc\xf2\xc4\x4e\x8a\xaa\x1d\x84\x8b\x18\xd9\x2b\xde\x0b\x27\x35\x56\x4f\xdf\x0d\x75\x84\x28\x89\x78\x82\x92\x22\x9d\xf7\x3b\x9c\xd7\xa4\xd3\x39\x8e\x67\x13\x9c\x06\xfd\x31\xee\xa2\x3c\x9d\x61\x53\xf5\x17\x4c\x70\x56\x9a\xaa\x5b\xca\xe7\x0d\x85\x41\x79\x8b\xa4\x1c\xde\xd9\x9c\x24\xde\x99\x96\xc5\x3b\x73\xa4\xf1\xd6\x8b\xbc\x56\x34\x62\xa2\x79\x9f\x67\xef\xa7\x9d\xb0\x67\x77\x49\xfa\xbf\x7b\x50\xde\xa3\x43\xc6\xfa\x42\xe0\x07\xd9\x75\x3c\x78\x07\xfb\x0d\x11\x79\xa1\x0b\x4b\x67\x4a\x4e\xf4\x4d\x56\xa4\x26\xb9\x69\x68\xd5\x94\x49\x02\x10\x2a\xcb\x80\xdb\x65\xb4\x0c\x38\xac\x0c\x46\x41\xba\x99\xd7\xea\x4b\x2b\x79\xf2\x69\x3a\xc5\x69\x2f\xc8\x70\x6d\x89\x7f\x86\xac\xca\x35\x7f\xc9\xb9\xf1\xf0\x99\x75\x67\x1e\x2d\x36\xee\x22\x8d\x2a\x8f\x88\xc6\x6b\x9c\x93\x0e\x99\x2b\x46\x08\x28\x4a\x82\x6d\xf1\xd6\x96\x62\x5b\x55\xf4\xf0\xcc\xf6\xa2\x0a\xdd\xee\x25\x8d\x4d\x91\x8a\xbb\xac\x83\x7c\xd4\x17\xeb\x65\x71\xd7\xef\x0e\x02\x86\x0a\x33\x27\x6b\x87\x68\xda\xf3\x05\x7b\x55\x31\x3d\xba\x9a\x12\xdd\x3e\xd8\x66\x52\xf4\x1b\x35\x7b\xf9\x39\xce\x17\x4c\x5e\x7e\x8e\x5d\xdb\xc9\xf7\x9d\xbb\xdc\x42\x1c\xd5\xb3\x97\xeb\x66\x73\x5d\x59\x1e\x35\x95\xe4\xa7\x67\xaa\x7a\x9d\x4c\x13\xab\xa2\x6d\x56\x15\x13\xa1\xcb\x53\xf6\x50\xe9\xd0\xf9\x00\x49\x07\x73\x2d\x66\x0f\x39\x62\x77\x1e\x8f\xd8\x8f\x47\xec\x7f\xf6\x11\x5b\xd2\x67\x32\x0e\x31\x61\x2c\x5d\x3d\x69\xff\x17\x1e\x0e\x53\x7c\x8d\x7e\x89\xc6\x83\x2f\x18\xbd\xf9\x1d\x0f\x87\xae\x68\x3d\x0b\x85\xf6\xd9\x0f\x52\x72\x84\x3f\x08\xe2\x01\x0e\xa0\xac\x2d\xa8\xcf\x2d\xe2\x00\xb1\x2a\xef\x82\x0b\xf4\x4b\x92\x84\xe8\xcd\xb9\xf3\x90\xdf\x2a\x0e\xf9\xff\xc5\xb8\xa9\xe2\x3c\xcc\x58\x6c\x59\x4a\x5b\x4b\xa0\x3a\x3d\x0b\xad\x2d\x05\x2d\x4e\xd3\x44\x0b\x1e\xb4\x4a\xdf\x51\x1b\x04\xba\xed\xec\xe5\xcf\x33\xb2\x31\x4e\x93\x38\x8b\xfa\x63\x4a\x60\xd3\x00\x9c\x48\xd0\x84\xdd\xf9\x90\xbd\x68\x9a\x26\x17\x51\x88\xd3\x4c\xd4\x0a\xc6\x59\x62\x56\x4d\xc6\x63\x52\x95\x50\x1b\xb7\x1e\x47\x71\x12\xd2\xaf\x51\x3c\x48\x26\x32\x64\x02\x8c\xe5\x14\xa0\x57\xae\x79\x34\xc1\x64\xb1\x45\x19\xf2\x51\x86\x07\x49\x1c\xc2\xee\x18\xc5\xe7\x63\x9c\x27\x31\x0c\x27\xe9\x5e\xc9\x41\x9f\xa3\xaa\x1c\xf7\xf9\x4b\xb4\x21\xba\x22\xe9\x19\x48\xdb\xa0\x01\xbe\x91\x5e\x72\x5c\x64\xad\x83\xf3\xf0\x47\x24\x94\x51\x9a\xc4\xc9\x2c\x1b\x5f\x43\x18\x0c\xc7\x3e\x4c\x3e\x59\xce\x23\x28\x0c\xf2\xc0\x79\x42\x56\x7b\xab\xa8\x3c\xe2\x50\xe9\x3c\x01\x23\x9f\xd4\x7e\x50\x7a\xaf\x24\x37\x4c\xe2\x2c\x21\x5b\x17\x21\x8a\x1a\x25\x8d\x95\xbd\xf8\x22\x18\x47\xe1\x21\x2b\x5f\x93\x65\x1e\xee\x85\x0d\x83\x21\x49\xf8\xea\x1e\xcf\xc8\x7c\x25\x4f\x0e\xe9\x3b\x40\x69\x85\xf6\xde\x83\x6e\x32\x63\x0b\xe9\xfc\xc2\x4e\xe5\x1b\xea\x5c\x51\x61\x96\x81\xe6\x57\xe5\xd0\x29\xde\x48\x94\xfd\x4c\xd0\x3d\xa2\x54\x88\x85\xa0\x26\x75\x33\x1f\xa5\xc9\x25\x52\xbb\xa7\x97\x57\xba\xc3\xba\x49\x3f\xad\x54\x3a\xf9\x07\x0b\xcd\x3e\x48\xb3\xa5\x24\xa0\x9f\x4b\x85\xf4\x33\x9f\x18\x00\xb8\x41\x11\x52\xf0\xdc\x4a\xb4\xc1\x53\x67\x4a\xb2\x71\x19\x75\xdc\x0f\x21\x98\x73\x4f\xe5\x7e\x06\xb2\x82\x3c\x4f\x3a\x85\xd3\x54\x17\xf1\x2d\xbd\x59\xd2\xcd\x6d\xc8\x9f\x02\x67\x11\x1a\x9b\x3f\x64\x46\x6d\xb9\x7d\x43\xc8\x65\xd9\x5e\x15\x12\xd4\x83\x73\xba\x8f\x0d\x36\x6a\x2c\x3b\x19\x90\x02\x6f\xc9\x77\x8b\x92\x89\xd6\xbb\x0f\xc2\x84\x16\xbe\x33\xc2\x04\x9c\x64\xea\xe4\x4c\xe6\x76\xa4\x98\xdd\x03\x2d\xaa\x34\xc8\xf5\x6c\x30\x1b\x35\xde\xca\x9d\x48\x2f\x9b\x47\x7b\x4a\x87\x04\xd1\xa1\x39\xdb\x1f\xce\xc5\xbe\x4a\xa4\x4d\x7e\x26\x64\x22\x9f\x41\x71\x39\x9f\x2a\xbb\x6a\xae\x94\x96\x44\x5d\x75\xd7\x77\x6e\xf7\xf3\x76\xee\x9c\x1c\xa9\x98\xe0\xa2\x23\x4a\xbe\x1d\x8a\x4f\x73\x39\x36\x8d\xfd\x7f\x03\xd0\xf6\xc2\xb9\x4b\xc6\xf2\x55\x98\x25\x71\x4c\xf2\x24\x4c\xd0\x60\x8c\x83\x78\x36\x45\x31\xc0\x27\x03\x2c\x8e\xed\x65\x43\x25\x61\x6f\x59\x79\x14\x49\x39\x20\x8a\x68\x5c\x1d\x4b\x22\x1c\x9d\xd2\xd2\x67\x44\x48\x22\xd5\xbb\x88\x02\x89\xc2\xae\x01\xa8\x6b\x03\xd9\x2d\x7e\xde\xf0\x9c\xd8\xab\xab\xfa\xe8\x2b\x0c\x80\x09\x60\xea\x6e\xce\x10\xaa\x89\x15\x3e\x67\x72\x93\xa9\x10\x4a\x89\x08\xca\xcc\x68\xe1\x74\x73\x1e\x91\x23\x5d\xa4\xeb\x8e\x49\x1d\xcb\x9c\x1b\x73\x5b\x3a\xf2\x02\x84\x4a\xa4\x50\x97\x77\x88\x5a\x96\x59\x06\xf9\xb5\x34\x3c\x05\xfe\x6c\x74\x6a\x4c\xa3\xfa\x05\x5f\x67\xb5\xa2\xee\x12\xd7\xf2\x42\xb2\x78\xf4\xe3\x8f\xc8\x35\x86\x84\x98\xd2\x13\xfa\xbe\xa6\x14\x7a\xad\x8e\xb3\x2e\x00\x97\x8c\x77\xb1\xfb\xa4\x98\xf0\x02\x22\xff\xf3\x61\x9f\xe0\xc1\x28\x88\xa3\x6c\xc2\x8f\xa1\xe5\xcc\x01\x00\x94\x0f\x2f\x6d\x43\x1e\xd8\x2f\x18\x4f\x45\xfe\x00\xde\xd9\xd5\x17\xbf\x67\xa3\x28\x26\x0d\x5d\x0d\x92\xc9\x74\x8c\xaf\xa2\xfc\xba\xdb\x86\x23\x19\x29\x40\x08\xa2\x46\x36\x87\x2f\xf8\x9a\x6a\x0a\xc4\x68\x4a\xe3\xb5\xba\x8a\x52\x3c\x49\x2e\x30\x0a\xc6\x63\xe8\x55\xe6\x21\x7c\x35\xc0\xd3\x1c\xc4\x7e\xf6\x4a\x2e\x9f\x8f\xf0\x35\x8a\x31\x1d\x91\x3e\x66\xf5\x43\xd2\xe3\x59\x30\x1e\x5f\xa3\xfe\x35\x0c\x19\x19\x1e\x96\x0a\x00\x68\xe6\x17\xb2\x21\x45\xf1\x79\x6d\x49\xda\x07\x6a\x3f\x28\xbd\x43\x5f\xbf\x12\x7c\x57\xa2\x38\xc4\x57\x07\xc3\x1a\xb8\x29\x12\x62\xfb\xfc\x7c\x09\x26\xff\xa5\xaf\x6f\x10\x12\x85\x7d\xc1\xd7\x67\x2b\x62\x25\xea\xe6\xd0\x26\x45\x92\xf2\x86\x69\xf2\xdf\x98\x3c\xe1\x94\x49\xe6\x7d\x40\x6d\x73\x51\x12\x57\xe1\x09\xd4\xa4\xb6\x8c\x26\x99\xc5\xb0\xa9\x02\x75\x50\x21\xea\x10\x70\x96\xce\x64\x38\x57\x7a\x4f\x00\x4b\xaa\x48\x0f\x0d\x56\xb6\x4f\x76\x3f\x1f\x1e\x7c\xf8\xb0\xf7\xf1\xdd\xe7\x93\xbd\xfd\xed\x83\x4f\x27\xf2\xf1\xa8\xca\x0c\x98\x42\x95\x22\x31\x3d\xc8\xd1\xd1\x94\xc9\x08\x5e\x5b\x41\x1e\xa0\x0d\x74\x7a\xf6\x5a\x7d\xbf\x07\xee\xc6\xfc\x75\xb5\xa5\x2a\x00\xae\x4c\x67\xd9\xa8\xa6\xd3\x3d\x13\xf1\x94\xd2\x7b\x61\x46\x0b\x7f\xc1\xd7\x4b\xc6\x18\x14\x00\x17\x18\xbc\x4a\xe2\xa6\x80\xcc\x1a\xe5\x4b\x6a\x12\x4c\x15\x26\x19\x01\xd9\x02\x43\x01\x12\x23\xa4\xa9\x0e\xd3\x7e\x30\x95\x54\x17\x92\x5e\x5b\xf5\x14\xa7\x82\x2b\x70\x8d\xa5\x3f\xf5\x31\xd8\x0f\xa6\xa7\x50\x2d\x82\x2d\x9e\x8f\xcc\x29\x14\x3f\x93\x3c\xd2\x45\xe3\x8a\xdf\x3c\x5a\x58\x66\x4e\x54\xa9\x59\x09\x6f\x72\x72\xb0\x75\xd0\xe5\x44\x86\xc6\xc9\xf9\x7f\xe8\x52\x75\xe2\x90\xab\xef\x2a\x49\x57\x50\x16\x64\xd6\xa3\x23\xfb\xb6\x32\x09\xa6\x35\x97\xb1\x02\xff\x03\xfb\xc5\xb0\x18\x65\x32\xf6\xec\xa8\x17\x85\xb2\xe3\x8d\xa0\x88\x2f\x18\x65\xb3\x14\xf4\xc4\x9c\x59\x45\x19\xca\xf2\x88\xd0\x03\xe5\xe4\x38\x44\xc1\x10\x1c\x84\xd2\x34\xba\x08\xc6\xda\x5e\xab\xc0\x24\x03\x02\x6e\xff\x74\x69\x44\xe1\x99\x8e\x62\xd1\xa5\x95\x41\x61\x0f\xa0\xd6\x11\x5f\x9c\x0e\x33\x5c\x77\x22\x7f\xba\x41\x78\xcc\xf4\xcc\x96\x1a\xc3\x60\x9c\x61\xf9\x96\x8d\xb9\x3d\xcd\x1d\x53\x91\xce\x9f\xb5\x89\x6e\x01\x83\xcc\x0b\xcc\xb8\xb4\x68\x1d\x87\xff\xd7\xc6\x78\xfe\x00\x35\x2b\x8c\x63\x75\xc5\x00\x52\x28\x4c\xea\x25\x54\x54\x47\x49\x5b\xec\xee\x61\x52\x71\x71\xeb\x19\x90\x7c\xc9\xe9\xca\xb8\x74\xa4\x07\xd5\x50\x6f\xbc\xb4\xd4\x4b\x66\xea\x0a\xa6\x90\x7e\xd6\x6d\x40\x68\x1f\xa6\x0c\x7f\xd6\x6d\x82\x1b\xea\x5a\x95\x3b\x32\x16\x73\x13\xe7\x79\x14\x9f\xdb\x3d\x7b\x81\x31\x85\x52\xe6\x5a\xb4\x21\x7c\xd6\x5e\x1b\x25\x8a\x48\xcf\xc2\x3e\xc8\x15\xb4\x88\x35\xca\xfa\x4d\x50\x5e\x7f\xbc\xd6\x7b\xbc\xd6\xfb\x87\x5f\xeb\xb1\x88\xbe\xec\xd4\x72\x9b\xa8\xbe\xf3\xcc\x61\x1d\xb9\x2f\xb4\xd4\x17\x8b\x18\xce\xf2\x25\xed\xb3\xc3\xc1\x66\x18\x66\x30\x74\x62\x77\x0b\x62\x50\x4b\x65\x68\x46\xc5\x2f\xe6\xf4\xe6\x11\xe1\x2b\xca\x21\x52\x1e\x82\xa4\x00\x74\x53\xa5\xbb\xfd\xd3\xa7\xf2\xf9\x80\x9d\xcf\x9e\xea\x4a\x22\xb2\x6d\x3e\x65\xd7\x56\x52\x39\x89\x57\xd1\x38\x3d\xdc\x95\x8e\x94\x4b\x62\xe6\x70\xa5\x70\x34\x26\x37\x91\xb1\xb7\xa8\x1a\x5d\x42\x11\xdd\xb7\x79\x4f\x33\xcb\x66\x61\xb3\xc7\xe1\x7f\xea\xbe\xa5\x6f\x4f\x2e\xdd\xa5\xb0\x10\xe4\x81\x88\x00\xe5\x1f\x7f\x04\xdc\xa9\x62\x2a\x8a\xcf\x81\x1b\x2f\x29\x10\xf9\xf5\xc5\xbc\x94\xa6\x14\xa2\xec\xa5\x7c\xdb\x4e\x0a\x69\x68\x1c\x64\xd0\xcc\x71\x4e\x26\xfb\x87\x8d\x0d\x63\xa0\xf9\x9f\xf1\x62\x75\x95\x66\x6e\x57\x48\x0a\x96\x5a\x9e\xce\x88\xcc\x96\x66\x39\xca\x12\x6a\xe7\x38\x9d\x02\xeb\x86\xb3\x73\x10\x5f\xe7\xe4\xc0\xef\xa1\x3e\x1e\x12\x06\x40\x97\x38\xbf\x42\x85\xd1\xa0\x4a\x46\xed\x2f\x1a\xd6\x7e\xb0\x60\xfd\xe3\x8f\xc8\x36\xf2\x4b\x46\x7d\x64\x5e\x37\x10\x54\x2d\xee\xd1\xce\xce\x26\x94\x6f\xc6\xf8\x2a\x47\xbd\xc3\x4f\x68\x70\x3d\x18\x63\x4f\x74\x13\x86\x5d\x6c\x36\xd0\x13\xe8\x32\xb3\x59\x9a\xa6\xc9\x80\xf0\xac\x8c\x8e\x8e\xd1\x8a\x74\x0c\x16\xcb\xc4\x36\x17\x96\x8e\x30\xd2\xd0\x4b\xdd\x78\xa8\x5e\xa5\x7f\x96\x61\xa5\xa4\xe0\x12\xcd\x24\x63\xb0\xa7\x02\x80\x6e\xc6\x26\xe9\x62\x6b\xa6\x1d\x94\x23\xdd\xaf\x6e\x09\x75\xe3\x15\x42\xf8\x5e\xe8\x15\x6c\x82\xbd\x97\x75\x48\x54\x67\x00\x9c\x85\xac\x13\x6e\x27\xb9\x67\x4d\xcb\xe9\xcc\xb5\x59\x6e\x32\xaf\xc9\x7f\x48\xd6\x35\xed\x11\x39\x5a\x52\x4e\x2d\x53\x2e\xbc\xbc\x2c\x95\x13\xeb\x55\x3a\xe9\xc3\x87\x20\x0c\x85\x6d\x97\x94\xf7\x53\x7c\xd7\xa7\x47\x3a\x38\x48\x2c\x96\x1b\x6f\xc1\x7b\xc9\x56\x9c\x0a\x74\x62\x24\x64\x4b\xdf\xa2\xdd\x52\x8b\xc5\x68\x58\xbc\x52\xb5\x52\x05\x0b\x02\xad\x82\x86\x7c\x25\x24\xe4\x59\x74\x4b\xb4\x06\x81\x09\x95\x73\x4d\x9a\x83\xa5\x92\xd1\xb6\x4a\xb5\x02\x21\xb7\x01\x1b\x91\xd5\xd5\x6c\x17\x44\xf6\x7d\xcc\x51\xfa\x28\xfb\xfe\xd3\x65\xdf\xc2\xa4\x8d\x27\xec\xbd\x2f\x1f\xdd\xbd\x7e\x10\xab\xd2\x6e\xd4\x0f\x84\xeb\x2d\xbe\xa2\xea\xea\x32\xd7\xdd\xe3\x49\x90\xe6\xdb\xac\x60\xe1\x76\xeb\xbc\x1a\x03\xb5\x12\x34\xcb\xfb\xa2\xe9\xbc\xa5\xd7\xe2\x12\xec\x38\x4f\xa3\xf8\xfc\x06\x5c\x5b\x6c\xef\x89\xb4\xdc\x0f\x62\xf9\xd3\xcf\xc1\x78\x86\x6f\xd0\x05\xf9\x87\x5d\x87\x10\xc8\x43\x9c\xe2\x39\x37\xa4\x9e\x6a\x5e\x00\x41\x6a\x18\x4e\xaa\x58\x9c\x8f\x3c\xc0\x88\x48\xeb\x1e\x6d\xc9\xdc\xc2\x40\xed\x46\x47\x19\xb2\x4d\xf7\x83\xb8\x96\x27\x4b\x4c\x55\x04\x3a\x1c\xf2\x99\xab\x7c\x6a\x16\x2b\x22\x52\x0f\xd2\x44\xd4\x9e\x47\x54\x7d\x43\x21\x32\x3f\xdd\xe7\xa6\xfe\x98\x41\xdc\x8a\x52\x22\x8b\xd9\x1c\x62\x78\x8f\x4e\x12\xe6\xd9\x2b\x77\x07\xaa\x33\xe8\xb5\x25\xb3\x6b\xbc\x3d\x21\xc7\x40\x37\x6c\x92\x2e\xb8\x48\x08\x4f\x69\x9c\x8f\xe4\x94\xe0\xb5\x25\x68\x84\x61\x1b\x67\x79\x94\xcf\xa8\xc0\x65\x9a\x7f\x85\x78\x9a\x64\x51\x2e\x63\xc9\xe0\x0a\xf4\x00\xcc\x60\x1c\xe1\x38\xd7\x2d\x31\x2a\x37\x6c\x98\x58\xf0\x54\xe3\xe6\x08\x2e\x8a\x91\x39\x7e\x5c\x05\x5f\x7a\x95\x2c\x48\x6f\x38\x8b\x43\xb0\x89\x1c\xe0\x34\x0f\x22\x31\xfd\x8e\xe5\x23\x26\x76\xb1\x75\xf4\xe0\x4b\x48\xe0\x75\x8b\xb5\xc4\x46\x9e\xcc\xa6\x96\xf1\x4b\x92\x6d\x85\xf7\x7a\x9e\x14\x12\x2d\x01\xdd\xa5\x0d\x48\xb4\x39\x9e\xe1\x2e\xfd\x87\x8b\xb9\x5a\xb2\x77\xe7\xac\xb0\xc9\x2f\x26\x05\xe2\xda\x47\x03\xc4\x39\x21\xe2\x1c\x12\xd5\x26\xb3\x2c\x87\xad\x0e\x4f\x70\x9c\x0b\xba\xe9\x5f\xe7\x38\x6b\x36\x96\x98\x30\xfe\xc3\x92\x36\x91\xac\xdc\xbd\x4f\x1f\x99\x04\x6d\x02\x79\x7d\x4a\xaa\x68\x16\x47\xff\x3d\xc3\x28\x0a\x71\x9c\x47\xc3\x48\x65\xc5\x95\x26\x9b\x0f\x4f\x85\x29\x86\x26\xed\x6c\x33\x80\x6d\x47\xda\x84\x5e\xeb\x54\xc0\x07\xb9\x16\xf4\xa3\xa5\x95\x20\x27\x9c\x75\x85\x0f\x30\x07\xfd\xe7\x5d\xa9\xc0\x10\x56\xf9\x30\x5a\xa3\x20\x98\x1b\xe2\xb3\x6e\x93\xc8\xae\x3c\x73\xff\xcd\x99\xd7\xae\x94\x2b\x99\xa9\x77\xdb\x95\x12\xb6\xbd\x96\xb5\xf0\x09\x11\x30\x86\xc1\x20\x4f\xd2\x6b\x8f\x6a\x94\xc9\xc0\x3e\x21\x7c\x9a\xc8\xfa\xc9\x10\x89\xde\x6c\x6c\xa0\x67\x34\x22\xd3\x33\x28\xf3\x64\x75\x15\xf5\x92\xc9\x24\x89\xff\xeb\xf8\xe9\x93\x27\x46\xe7\x8b\x5f\xac\x01\x8e\x53\xed\x19\x19\x86\x14\x3f\x5b\xf2\x90\xf4\x0a\xc7\x83\x97\xfd\x20\xc3\x9d\x96\xf6\x61\x12\xb6\xf5\xa2\x17\xd3\x2f\xe1\x50\x7b\x39\x88\xa6\x23\x9c\xbe\xa4\x90\x97\x5e\x3f\x7d\x72\xf3\xf4\x09\x1e\x67\x18\x49\x9d\xa1\x1a\x73\xda\x17\x3e\x0c\xcf\xd0\x8f\x3f\xb2\x0f\x2b\xc1\x24\x14\x7d\xdb\xdc\xdf\x7a\xfa\xe4\x09\xfd\x50\x3b\xe5\x38\x7b\x48\x45\x15\x9e\x09\x86\xf4\x03\x45\x0c\x7e\xcb\xf8\x9c\x89\x51\x96\x11\x63\x0d\xd1\x70\x18\xa8\xd6\x4f\x93\xcb\x0c\xa7\x4b\x4f\x9f\x3c\x11\x23\x96\x24\xf9\x4a\x2f\xbd\x9e\xe6\xc9\x7f\x1d\xd3\xaa\x37\x70\x7c\x92\xf7\x1f\xf1\x1d\xfd\xf9\xf4\xe9\x93\x9a\x7a\x1e\x7b\x82\xa8\x4a\xe4\x78\x94\xa4\xf9\x60\x96\x67\xf4\x0d\x59\x36\x3d\xb4\x81\x78\xdd\xd7\xd2\xeb\xcf\xe3\xa8\x4f\x3e\xad\x8c\xa3\xbe\xf4\x1e\xb4\x61\x3d\xe8\x14\xf9\x4a\x4a\xad\x48\xef\x14\x08\xc1\xf8\x3c\x01\x10\xe4\xc7\xeb\xa7\x02\x8b\x0f\x49\xf2\x65\x36\x45\x79\xd0\x1f\x63\x09\x93\xe3\xb7\x07\xbf\xb2\x43\x9f\x78\xb7\xf7\xf1\xe7\xcf\xb6\xf7\xc7\x9f\xde\x7e\xde\xdf\xfb\xf5\x73\xdd\xf5\xc1\x77\x7d\x68\xb8\x3e\x34\xad\x6d\xbb\xda\x91\x3f\x1a\x6d\xc9\x1f\x8d\xf6\xe4\x8f\xbc\x4d\x31\x34\xbd\x64\x32\x25\x27\xc5\xb1\x39\x44\xb6\x29\xd5\x6a\x85\xc9\xac\x4f\xc4\x7e\x52\xab\x28\x00\x2c\x56\xc6\x02\xc9\xa6\x0a\x11\x84\x13\x44\x11\x7a\x83\x1a\xed\xce\x6b\x14\x2d\x2f\x2b\xe0\x85\x90\x88\xde\x20\xbf\xb1\x6e\x7c\x23\x7f\xe1\x69\x74\x86\x36\x08\x8c\x37\xc8\x7f\xad\x7e\xa7\x77\xa9\x25\xb5\x6a\xb4\xda\x12\xfa\x0d\xd5\xaf\x7c\xbf\xaf\xd7\x2f\x1e\x6f\x9e\x2a\xbd\xfe\x25\x18\x7f\x41\xef\x76\x6a\x8d\xdf\xd6\x97\xd4\xde\x5e\xd1\x10\x89\xea\xbb\x48\x7b\xb9\xd0\x08\x48\x83\x9c\xf5\x93\x2b\xf5\x23\x58\x1a\x90\x36\xaf\x22\xf4\x1b\xaa\x5d\x15\x1d\x62\xbf\x1b\xd2\xef\xa6\xf4\xbb\xb5\xa4\x75\x16\xa0\xd4\xb2\x2b\xf4\xd3\x4f\x3f\xa1\x75\x28\x99\x5d\xa1\x1f\x51\xfd\x6a\x38\xa4\x03\xd4\x69\x6a\x55\xc8\xea\x38\xbd\x22\x03\x99\x5d\x69\x9f\xf8\xe2\x39\xcd\xe0\xfb\xd5\xeb\xa7\xce\x4e\x4d\x66\xe3\x3c\x9a\x8e\xa3\x01\xa8\x09\xcc\xee\x5d\x11\x32\x0e\x4f\xaf\xce\x5e\x5b\xbe\xb5\xe8\xb7\x86\xf5\xe3\x3a\xfd\xd8\x3a\x2b\x69\x3d\x9b\xf5\x11\x08\x38\x1e\x9a\x44\x57\x68\x90\x8c\x67\x93\x38\x53\xa8\x5f\x86\x49\x24\x85\x5a\x08\xbd\x7a\x41\x68\xa6\xee\xf3\x91\x62\x8f\x75\xbf\x5e\xd7\x87\x56\xac\x64\x3a\x58\xb5\x1c\x26\xa6\xb5\x84\xbe\x92\xdf\x74\xbc\x1d\x55\x7c\xb9\x8a\xdf\x91\xaa\xf8\x1d\x57\x9d\x86\x5c\x67\x7d\x09\x15\x75\x1a\xc6\xac\x0b\x6e\x40\xeb\xe4\x25\x23\x15\xc5\x17\xf2\x68\x91\xc7\xca\x23\x76\xb5\x2e\x8d\x0f\x23\xcf\x16\x7b\x55\xe7\x2f\x1a\xca\x90\x96\x8e\xa8\xc2\x1f\x19\x8d\x55\x19\x56\x85\x75\x2a\xf5\xe6\x8c\xad\xc2\x56\x95\x8a\x73\x06\x58\x61\xb9\xac\x62\xd9\x28\xc3\x6d\x01\x28\x82\x71\x6a\x72\xc2\x1f\xae\xac\x4c\x90\x31\x80\x8d\x05\x38\x20\x54\x69\xa0\xdf\x50\x78\x4a\xfe\x77\xb5\x8e\x7e\x43\x57\x8d\xb3\x33\x7d\x21\x41\xd9\x08\xfd\xb6\x01\x05\xaf\x22\xa3\x80\xc2\x24\xe1\xe7\x0d\x1c\x6a\xc5\xbe\x72\x98\xe2\x01\xed\x5c\x88\x8e\x06\x49\xcc\x36\x98\x62\x57\x3a\xea\x1d\x7c\x24\x7b\x44\xfd\xaa\x5e\xf7\x50\xfd\xaa\xee\xc3\x7f\x1b\xf0\xdf\x16\xfc\x77\xdd\x03\x5a\x20\xff\x6d\xc0\x7f\x5b\xf0\xdf\x75\xf8\xaf\xdf\x27\xff\x6d\x76\x8a\xcd\xec\xc5\x0b\x86\xd4\x0b\xb4\xb9\x7d\x4c\x03\xb2\x23\x2a\x0e\x21\x22\x10\xa4\x51\x3e\x9a\xac\xf0\x32\xab\x05\x2a\xa4\xf4\x06\x13\x1f\x56\xe8\x83\x24\x61\xac\xe0\xab\x9c\x86\x0f\x10\x5d\xfe\x1c\x26\x47\x38\xc3\x79\x17\x39\xb6\x48\x36\x08\xc7\x5f\xa2\x29\x33\xfd\x4d\x86\x28\x3e\x4a\xe0\x38\x36\x0a\x32\xd4\xc7\x38\x06\xf7\x00\x76\xc1\x15\xc4\x21\xd8\xf0\x85\x51\x88\xe2\x24\x67\x76\x98\x26\x29\xd0\x6c\x2e\x1c\x12\xb7\x17\xfd\xfc\x05\x5f\x1f\xa6\x51\x92\x1e\x51\x13\xe0\x8d\x8d\xe2\xbd\x95\x74\xb8\x5d\x98\x36\xa7\x66\x07\x54\xf1\x8d\xff\x71\x8b\xc3\x0d\x7b\xf3\xc5\x5b\x0b\x7f\xfe\x82\xaf\x7f\x49\x52\xb0\x62\xfc\x82\xaf\x57\x2e\xc9\x6f\x7b\xb1\xe3\xe8\x0f\xcc\x4a\x65\xd1\xf9\x5b\xc2\x80\xd0\x2a\x6a\x95\x2d\x23\xe1\x08\x90\xc2\x00\x99\x60\xf9\xc8\x71\x1c\x8b\x67\xde\xe0\x32\xea\x54\x6a\x81\xf4\x3f\x1b\x8c\x30\x39\x7e\x20\x22\x42\x5b\xfa\x90\x1d\x25\x97\x04\x76\x8d\x37\xb3\x4c\x76\xe9\x17\xa5\x7d\x90\xe1\xda\x87\x85\x37\x2a\x8d\xb3\xf4\xee\x54\x5f\xaa\x85\x8d\x28\x41\x87\x8a\x1e\xf4\xe7\x1b\x86\x21\x7b\xb6\x48\x21\x88\x91\x9d\x28\x4f\x07\xc9\x5a\x8e\xfc\x49\xa8\x9c\x42\x9d\x33\x3a\xb2\x30\xe3\xec\x8d\x85\xd5\xb8\x19\x16\x92\xf6\x13\x03\x38\x84\xd3\xd1\x87\x52\x46\xfb\x07\x86\xf8\xbf\x04\xe2\x4e\xcc\xd9\x2c\x1c\x25\x39\x22\x24\xe9\x2e\x94\xcb\x7b\x80\xba\x05\x94\x42\x3e\x9e\xf5\xab\x40\x06\xf1\x89\xc3\x3c\x93\xf6\x36\xf8\x50\xec\x54\x4c\x46\x3b\x93\x76\x31\xb9\xc4\xba\x52\x00\x30\x65\x90\xd9\xeb\x39\xd8\xee\x47\x57\xc0\xb6\xcb\xb0\xfd\x6d\x03\x98\xf8\x29\x1b\xe4\xd5\x82\x3a\xbe\xa2\x3a\x43\xdd\x32\xd9\xa8\x98\x70\x20\x2d\xb6\xee\x7e\x42\x1d\xc2\xcf\xb4\x09\x43\x1b\x1b\xa8\x35\x6f\xd2\xbe\xbb\xa1\xb5\xf7\xd9\x31\xe2\xae\x35\x63\xd0\x3a\x1b\x92\x33\xf4\x1b\x91\x25\xcc\x45\x34\x97\x9b\xcb\x32\x5d\x39\x9b\x89\xe2\x8b\xf7\x16\x4e\x63\xbc\x76\x33\x1b\x52\xb4\xe0\x37\xe2\xa9\x60\x39\xfc\x95\x83\xeb\xc8\x0c\x8b\xf1\xd1\x97\xa2\x8e\x8d\x78\xe1\xc8\xc8\x9b\xf9\x57\x09\xd1\x38\xd9\xc9\xfd\x72\xa6\x96\x15\xdc\x3c\xc4\xdf\xa0\x16\x78\xb2\xd0\x87\x32\xda\x57\xe7\xe2\x94\x43\x60\x92\xe6\x82\x1d\x29\x01\xa6\x0a\xdd\xea\x1a\x22\xa4\xa8\x0a\xd7\x8e\xa5\x74\x86\x7e\x73\x2f\x4e\xc7\x9f\x2a\x7c\xdb\x57\xa0\x8e\x40\xf3\x54\x5d\x8a\xf6\x39\x70\x4a\xb2\x9e\x34\x3d\x38\x1e\xa4\xd7\x53\x6a\x1a\x2b\xcb\x79\xfb\x1e\x4a\x86\xc3\x0c\xe7\xc6\xcc\xd0\x35\x12\x26\x3d\x51\xaf\x28\xec\x99\x7b\xb5\x57\x9c\x10\x8b\x9f\x7e\xf1\xb3\x51\xfc\x6c\x7a\xc0\x62\xe4\x53\x86\x82\x6b\x88\x17\xc5\x95\x70\xcd\xcb\x60\x8a\x1a\x71\x08\xb2\x67\x2b\x1f\x39\x84\x18\x42\xdf\xfb\xa7\x14\x0c\x91\x5f\xf4\x21\x55\xbe\xa9\x65\x9b\x25\x65\x9b\xd6\x23\x51\x95\x21\x54\x69\xd5\x53\x09\x54\x7d\xf4\xd5\xc7\x86\xfa\xd8\xf4\x84\xc2\xc2\xd8\xbc\x57\x57\xd1\x1e\x39\xf9\x7e\x17\x63\x64\x9f\x74\x65\x98\xac\xb3\xee\xa1\xbb\x91\x9b\x8d\x68\xd8\x81\xa0\xb2\x64\x6d\x19\xd8\x77\x98\x05\x0b\x85\x1b\x49\x2a\xaa\x13\x4c\x2d\x3a\xae\xba\x34\x58\x67\xf0\xfa\x37\x85\xd9\xd6\x6d\x1a\xa0\xcc\xd7\xa7\x43\xab\x65\xcc\x0f\xd4\x6a\xa8\xb5\x1a\x7a\x2d\xab\xb6\x29\x6b\xea\xd3\xa9\xd5\x6a\xda\xd4\x50\xef\xb5\xb3\x83\xfd\xe8\x2f\x6f\x81\xb6\x13\xc3\x91\xe5\x8c\x23\xf6\x5f\x3a\xaa\x1b\xc8\x7f\xcd\x7e\xbe\xe1\x33\xc4\x5e\x38\xf6\x5d\x98\xe3\x68\x98\x03\xa5\x7b\x0e\x45\x59\xe9\xc4\x71\xd4\x73\x32\x79\x92\xba\xa6\x2e\x24\xaf\xdf\x24\x45\x57\x2d\xf3\x0d\xb9\xeb\x37\x49\xa9\x55\xcb\x1a\xba\xd4\xf5\x9b\xa4\xbf\xca\x9a\xd2\x6b\x63\x1b\x5e\x5e\xb6\x6d\x00\x80\x9c\xaf\x22\xe7\x3b\x90\x6b\xcc\x41\xae\x59\x8a\x5c\xfd\x96\xc8\x35\x54\xe4\x1a\x0e\xe4\x9a\x73\x90\xab\x97\x22\xe7\xdf\x12\xb9\xa6\x8a\x5c\xd3\x81\x5c\x7d\x0e\x72\x7e\x29\x72\x8d\xb9\xc8\x59\x49\xf7\xd3\x14\x8c\x88\xb2\x3c\xc8\xb1\x59\x00\xd8\x49\x5e\xb7\x74\x0c\x58\x46\xae\xeb\xd1\xe0\x0b\x99\x8b\xbc\x61\xfb\x42\x06\x22\xd7\xb5\xe3\x56\x25\x8a\x75\x3d\xcd\xe1\x7d\xb0\x7c\x6a\xf4\xe4\x21\xad\x1d\xfd\xd4\x62\x59\x3e\xfa\xb1\xc5\x5c\x41\xca\xb9\xa5\x58\x42\x4b\xd5\x28\x41\xac\x1f\x8e\x9d\xef\xc6\xce\x5c\x3f\x06\x76\xc6\x12\x52\xb1\xab\xdf\x06\xbb\x86\x84\x5d\xc3\x8d\x9d\xb9\x80\x0c\xec\x8c\x35\xa4\x62\xe7\xdf\x06\xbb\xa6\x84\x5d\xd3\x8d\x9d\xb9\x82\x0c\xec\x8c\x45\xa4\x62\xd7\x98\x8f\x9d\x49\xad\x98\x47\xb6\xb6\xcb\x25\x74\x1b\xb6\xac\x23\x5d\xc8\x31\x96\x93\xba\xb9\x5a\x56\x95\x21\xfa\x34\x5d\xb2\x0f\x3b\x0a\x77\x51\xa3\xdd\x59\x6d\x36\x98\x06\x7a\xc9\xa6\x0a\xe6\x12\x8b\x10\x90\x32\xe6\x39\xcc\x54\xc3\xcf\x33\x96\xf0\x09\x41\x0e\xef\x61\x30\xc0\x42\x47\x2c\x80\xfc\x27\xbe\x0a\x26\x53\x71\x52\x2e\x3e\xf0\x39\xa5\xb0\x72\x7c\x95\x4b\xb7\xdb\x2b\x9b\xdb\xc7\x2b\xec\x1c\x51\x9b\x70\x93\xf4\x2f\xf8\xda\x43\x83\xe1\xb9\x90\xe6\x0b\x28\xd3\x71\x40\x90\xb8\xca\x91\x0e\x85\x49\xf8\xb5\xa2\x1d\x1b\x20\xa6\xd3\xee\x59\x94\xd8\x9f\x69\xd8\xd4\x5d\x3c\x9e\xe2\xb4\xb6\xb9\x4d\xaf\xf5\xa9\xce\xfe\xe9\x13\x66\xb3\x22\x37\xf9\xfa\xe9\x53\x08\x81\x0b\x06\x24\x8a\x55\x41\xb7\xdd\xf0\xb8\x5d\x42\xb7\x0d\xb6\x23\x92\x65\x42\xb7\xdd\xf2\x0a\x93\x84\x6e\x1b\x7c\x18\x27\x61\xfb\x59\xb7\xe3\xdf\x9c\x79\xed\xc6\x9d\xac\x45\xbe\xa5\x99\xc8\x83\x19\x73\x7c\x43\xb3\x0c\xba\x12\x5e\x20\x66\x40\x41\x9a\x47\x83\x64\x32\x4d\x62\x88\xb9\x4e\xbe\xad\x3e\x7d\x22\xe6\x7d\x1c\xf5\x57\x58\xd1\xaf\x5f\x65\x03\x00\xe1\xf5\x79\xcf\xc6\x1d\x41\x86\x0b\xab\x8e\x20\xc3\xd2\xb7\x5f\x92\x34\x04\xbf\x74\x51\x40\xbc\x91\x21\xcc\x86\x60\xf0\x07\xb4\xbe\xc9\x6f\x79\x0a\x98\xd6\xcf\x0a\x66\x18\x5c\xab\x7a\x64\xa1\x4a\xef\x3f\xe5\xc3\x75\x80\x82\xe3\xc1\x0a\x79\xd0\xb0\xee\xb4\xc4\x57\xfa\x58\x66\x88\x22\xbe\x6c\x5f\x4c\xdf\x6f\xed\x14\x97\x4d\xf4\xd9\x7a\x83\xd5\xcf\xa8\x7d\x1e\x59\x56\xfc\x16\x2b\xc7\x93\xe9\x38\xc8\x6d\x0c\x4a\x44\x99\xfe\x33\x66\x11\x79\xb8\x06\x15\xbc\x0a\x04\xaf\x03\xbd\x5f\xf4\x07\x5e\xe1\x11\x26\xbb\xa8\x85\x6a\x7e\x63\x1d\xf5\xa3\x3c\x5b\x2a\x03\x18\x5d\x58\xe0\xed\xfd\x7c\x5b\x70\x9f\xb7\x3f\xf6\x3e\xff\xba\x73\x70\xb4\xff\x79\xff\x60\x6b\x1b\x6d\x42\x6c\x83\x3c\x88\x73\x94\xe2\x69\x8a\x33\x1c\xe7\x51\x7c\xce\x15\x31\x84\x0c\x27\x49\x58\xf4\xdd\x0a\x73\x6b\xbb\x12\x4c\xc6\x4e\x0d\x98\xd2\xa5\xa0\x66\x72\x24\x1e\xed\x14\x65\xb9\x24\x2c\x66\x93\xa2\xdb\x03\xbf\xef\x59\x0a\x06\x0f\x22\xc9\x87\x5c\x44\x29\x2e\xf5\x4e\xd0\x3d\x99\x03\x74\x32\xc2\x64\xd4\xf3\x04\xcd\x98\x9f\x00\x61\x01\x88\x14\x06\xd0\x0a\xc8\xd5\xe2\x61\x30\x3c\xef\x02\xe9\x72\x5c\x97\xe4\x1d\xd5\xc0\x16\xb6\x8b\x8c\xc2\x66\xe4\x17\xc5\xae\xc9\xb0\xa1\x4f\xed\x31\x25\xdc\x09\xe9\x11\xe4\xbf\xe0\xeb\x15\x6b\x59\xee\x1a\x3a\x18\x9e\xa3\xda\x01\xb4\x12\x8c\x97\xa0\xce\xc0\x36\x78\x15\xc7\x40\x6d\x8b\x07\x12\xa5\x13\x7a\x43\x48\x84\xf7\x8e\x10\xca\xa0\xac\x4f\xe4\x5c\x11\x0d\xdc\xdf\x55\x29\xc1\x2c\x80\x14\x69\x41\xde\xe3\xf9\xd5\xf3\x0a\xdd\xa6\xb7\xe9\x30\x27\x69\x8d\x5d\x9e\xc1\x10\x7a\xe8\x4f\x14\x5d\x74\x51\x74\x51\xf0\xc6\x1b\xc5\xf4\x40\x99\x6f\x15\x52\x57\x89\x0b\xc5\x24\x07\x5d\x03\x20\x67\x0e\xa1\xf5\xd9\x8d\xb3\xba\x56\x2d\xb2\x87\x2e\xa1\x55\xa4\x27\xc7\x42\x7c\xa4\xa7\xfb\xa5\xa7\x2d\x7c\x5f\xf4\x24\x20\xdd\x8d\x9e\x54\x3e\x7d\x0b\x7a\xda\x8b\xa3\x3c\x0a\xc6\xd1\x1f\x38\x43\x01\x8a\xf1\xe5\xf8\x9a\x61\x18\xb2\xe1\x98\x4f\x4b\x7c\xd7\xb8\x1a\x26\xe9\x64\x3f\x09\x31\xda\xa6\xce\x6a\x10\xa7\xb9\xe0\x74\x49\x2a\xd3\x29\x58\x57\x83\x9f\x1f\xa7\x5a\xb1\xc9\xd8\xc9\xf0\xbb\x23\xd9\x7b\x23\xab\x9a\xf9\xc1\xc6\x29\x6e\x49\x70\x51\x1c\x29\x16\x36\x62\x9a\x24\x72\xb1\xa8\xa8\x37\xa7\x53\x42\x0b\x30\x5a\x3c\xdd\x74\x66\xb9\x66\x20\x43\xbc\x21\x7e\xf2\x4d\x91\xd2\xa0\x79\x2a\xce\x89\xe4\x4c\x0d\xeb\x93\x74\x42\xa7\x3d\xb0\xe9\x6e\x28\x7d\x17\x24\xb5\x51\x90\xd7\x6b\x5b\x49\x6a\x47\x03\xb6\x32\xd6\xb3\x78\x44\x09\x9d\x7a\x00\xd8\xfa\x01\xf6\x45\xb5\xca\x0b\x07\x6c\x74\x54\x3e\x0c\xc1\x1c\x32\xd1\x12\x68\xcf\xee\x48\x3e\x6c\x09\x9a\xb8\x29\x33\x9c\x56\x31\xa2\xa2\x46\x45\x61\x90\x07\xa8\x0f\xb2\x97\x5a\xc2\x21\x8f\x01\x68\x9a\xea\x82\xbb\x3b\xeb\x80\x0f\x71\x0a\x73\x39\x48\xe2\x41\x8a\x73\xfc\x92\x0d\xc7\x38\x39\x57\x98\xb2\x74\x2f\x75\xb4\xd8\x58\x43\x40\x0d\xc0\x9c\xfa\xb7\x30\x9e\x82\x43\x89\xa5\xe0\x70\x81\x4d\xef\x6b\xc6\x5c\x61\x08\x50\xa6\xec\x24\xbc\x81\xb7\xc1\x1a\x90\xc0\x57\xd8\xb9\x24\xfe\x24\x60\xd1\xa8\x59\x2c\x1a\x41\x14\x9f\xdf\x03\x37\x29\x3a\xbf\xc1\xc9\x83\xc1\xaf\x3d\x27\x6d\x3e\x57\xc9\xa4\x4a\xbd\x4b\x8e\xb9\x93\xc2\x58\xc9\xae\x16\xe6\x95\x0e\x9d\x83\x7b\xe0\x38\xb4\xcd\x7e\x00\x5f\xe4\xea\x36\x9a\xa2\xed\xa1\xe0\x22\x88\xc6\x41\x7f\x8c\xa9\x19\x62\xe6\xde\x16\x3f\xf3\xce\x54\xa6\xaa\x9d\x28\x66\x1b\x5f\xe9\x3e\xc5\xe0\xaa\xfb\xcc\xc7\x24\x67\xee\xd1\x34\x6a\x1a\x85\x54\xec\x1a\x28\xca\x10\x1e\x0e\xf1\x20\x8f\x2e\xf0\xf8\x1a\x05\x28\xc4\x59\x9e\xce\xe0\xd9\x43\x29\x0e\xc2\x97\x49\x3c\xc0\x95\xf6\x99\xaa\xd4\x0b\x68\x3c\x14\x0d\x53\xe0\x0f\x4d\xc9\x7c\x24\x6b\xd5\x89\x58\x54\x59\x94\xfa\x45\xc5\xf9\xe4\xcf\x8b\x56\xa7\xff\x9d\x62\x2e\x66\x50\x48\x2d\x11\x0d\x4b\x01\xa0\xd2\xd5\xa2\x14\xb5\x5c\x94\x2c\xc0\x90\x21\x20\x12\x41\x95\x2d\x38\x1c\xb2\x80\x99\x9c\x53\xef\x48\x13\x62\x5d\x7c\x66\xed\xb9\xca\x66\xbf\xb1\xbe\xda\x6c\xc8\x9f\xa8\x4a\xc4\xf6\x45\x93\x83\xba\xc8\x57\xbe\xaa\xf2\x6f\x17\x35\xaa\x9c\x9d\x32\xab\x2a\x3b\x98\xaf\xc8\x46\xce\xb5\xc9\x4f\x2d\x6c\xa4\x4f\x46\x58\x12\x0a\x58\xa6\xad\x00\x8d\x40\x6b\x4c\x84\xcc\x0a\x4b\x91\x8b\xb0\x9b\x31\xc7\x07\x22\x0c\xf0\x65\x4d\x84\x26\xb6\xae\x2d\x1d\xfa\x06\x87\x25\x66\xed\x6d\xaa\x3c\x35\x1d\xb9\x21\xdb\x3a\x57\x99\x52\xaf\xeb\xf4\x9b\x22\x7f\xe2\x53\x86\xc7\x78\x90\xd3\x86\x8f\xf3\x34\xc8\xf1\xf9\x75\xcd\x65\xae\x2d\x69\x9f\x41\x5c\xdc\x40\xcf\x29\x2b\x7d\xee\x34\x0f\x63\xb3\x71\x18\x64\x19\x61\x13\x6f\x83\x0c\x87\x8a\xc7\x9c\xfc\x57\x6e\x1c\xc6\x40\x1d\xe3\x14\x0e\x5c\x64\x57\x73\x43\x2a\x5f\xe4\x7a\x72\x3f\x76\x9f\x51\x62\xa3\xee\x42\x8a\x91\x93\xcc\xd8\xcc\x1b\x96\x32\xbb\xd1\x22\x0a\x98\x7d\x1e\xc4\xc5\x0d\x45\xd1\x43\xee\x0b\x1c\x7d\x0c\x3c\x87\xa5\x27\x23\xfb\xae\xd1\x7f\xed\x3e\xe7\x4e\x68\xab\x37\x45\x1e\x2a\xbd\x31\xd2\x31\xb7\x4c\xa8\xce\xb6\x65\x2e\x59\x5b\x62\x1a\x5e\xfb\xd5\x9b\xaa\xc3\xce\xf2\x14\x07\x93\x5b\xa9\xb2\x41\x86\x62\xca\x67\xd9\x06\xbf\xd9\x78\xd9\x8f\xa8\xc1\xb6\x7a\xa2\xa1\xd2\x09\xc4\xb1\x96\x34\xd3\x3e\xaa\x35\x1b\xaa\x62\x5a\x52\xf8\x1e\x03\x7e\x9a\xda\x57\x7f\x59\xe2\x11\xb2\x63\xd9\x6b\x6d\x3b\x2c\x17\x11\xa7\x41\x0a\xc7\x2d\x9b\x80\x68\x6e\x6f\x70\xbc\x29\xac\xab\xb8\xd0\xf8\xc3\x0f\xcf\x87\xe3\x59\x36\x7a\x5e\x6d\x9b\xa3\x50\x5c\x1b\x9d\x18\xe6\x2e\xf2\xcb\xe6\x15\xce\xb5\x90\xd6\x74\x2a\xdf\x96\xca\xca\xf3\xcf\x13\x7a\xf6\xed\xad\xb0\x1f\x7f\xde\xcc\xa7\x10\xc5\x63\x07\xea\x19\x54\x22\xb5\x21\xdd\x6e\xb2\x83\xb6\xe1\x1c\xcc\xde\xcb\x4a\xef\x32\x05\xbd\xac\xa2\x9c\xf0\xec\x5c\x85\x7c\xbd\xf0\x6e\xba\xa9\xf6\xc8\xaa\x10\xd4\x53\xcb\x14\x0a\x7e\xa0\xea\x6f\xb0\x1f\xf2\x99\xe2\xdb\x1d\xe8\x61\x7b\x6f\x7b\x86\x2a\x9a\x73\x94\xe8\x82\x7a\xed\xdc\x46\xf3\x5c\xc0\x28\xd5\x15\x8a\xba\x5c\xd1\x24\xd5\xbb\x95\xc6\x59\x4c\x67\x71\x40\xfa\x9f\x39\x9d\x85\x26\x78\xc1\xe9\xb4\x2a\x7e\x2b\x4e\xa7\xa8\x7b\x87\xe9\x2c\x53\xf8\x56\xbb\x3a\xf8\xa6\xd3\x79\xe7\xe9\x2a\x59\x02\x73\xe6\x4b\xd7\x9b\x96\x4c\x12\xdd\x4c\x84\x9e\x77\x60\x13\xeb\x98\xd5\xf5\x05\xda\x40\xd1\x85\x3c\x5b\x65\x5b\x04\xdb\x31\x69\x60\xe9\xde\x28\x88\x62\xc8\x79\xe2\xba\x6b\x7d\x0b\x76\x03\x9f\x79\xe7\xd1\x86\x3b\xf8\x80\xae\x62\x53\x76\x10\x52\xd7\x20\x06\x69\x68\x8a\xc6\xb4\x5d\x42\xdc\x89\xbe\x2e\xe3\x28\x6f\x7b\x7c\x3b\xd0\x4e\x42\x52\x13\xca\xdc\x91\x5e\xbd\xed\x59\xf6\x1e\x13\x3c\x6d\xe2\x50\xc4\xff\xcc\xb9\x1a\x83\x52\x69\x90\x33\xa3\xee\x15\xbd\x8e\x01\x43\xa3\x59\x2a\x1d\x09\xad\x08\x13\x96\x12\x2e\x23\x21\x95\x13\x22\xeb\x0d\x09\xb3\xcb\x22\x40\xd8\xcf\xcb\x11\x66\xa1\xf7\x29\x7e\x10\xc9\x33\xab\x80\x9c\xb9\x30\xec\x05\xc9\x1f\x4c\x25\x13\x75\xa8\x37\x00\xe4\xc7\x83\x2e\x08\xd7\x06\x5d\x96\x95\x27\x03\x15\x2a\x40\xc3\x4c\x5e\x85\xe2\xb4\x85\xb6\x3a\xc0\x22\xfd\x86\x44\x5e\x48\x0e\xc3\xd9\x42\x88\x15\x9a\x1c\xf1\xca\x61\xce\xfa\xeb\xc1\x11\x9c\x97\x19\xd1\x99\x65\xae\x92\x14\xfa\x55\x28\xba\x3d\xa4\xf4\xcb\x2b\x9a\xb5\x09\xfd\x0c\x0f\xd9\xd7\xa5\xa6\x8f\xae\x15\xb3\x23\x3c\xc1\x20\x85\xc3\xee\x4a\x49\x80\x5d\x45\xc1\x69\x1f\x1c\xda\xe1\xb5\x59\x9d\x4b\xb0\xf8\x82\xc7\x9d\xa7\xcc\x94\x26\x94\xe7\x78\x0b\x53\x40\x67\x07\x64\xcf\x9d\xb9\xeb\x36\xc4\x15\xd6\xad\xd8\xa7\x1e\xd7\xed\xe3\xba\x45\xb7\x5f\xb7\x77\x59\x1d\x60\x21\x3c\x8a\xb2\x85\xd7\x86\x15\x13\x46\xd1\xc0\x45\x7e\x3d\x38\x72\x72\x00\xd9\x83\xcc\xe0\x00\x77\x65\x3b\x56\xcc\x4e\x8a\xa1\xe9\xe3\x41\x32\x61\x4b\x87\xb0\x85\x28\x99\x65\xd5\x99\x87\x18\xac\xaa\xec\x41\x90\x12\xef\x46\xcd\x89\xfb\x42\x1e\x50\x20\x22\x71\x69\xc9\xe6\xe1\x3f\x4a\x92\x0c\xa3\x49\x74\x45\x64\x21\x4b\xff\xc0\x13\xd4\x14\xd2\x90\x4c\x88\x4c\x0a\x73\x91\x5d\x72\x01\xd2\x29\x39\xe9\x64\xb3\x7e\x86\xff\x7b\x86\xe3\xdc\xaa\x62\x40\xaa\x68\x27\xa5\xf5\x50\x47\xd1\xa9\x1a\x94\x51\xd2\x66\x65\xbe\xaa\x9f\xec\x6c\x36\xac\x6c\x31\x92\x8a\xd5\x66\x8d\x94\x44\xfe\x60\x02\x0b\xeb\xf1\xe8\x0c\xfd\xb6\x41\xeb\x9d\x46\xa5\xa1\x4b\x8a\xdf\xdc\x04\xfa\x6d\x8f\x95\x57\x02\x9a\x48\xa2\xed\x61\x10\x86\x64\x02\xe7\x28\x40\xa6\x90\xe6\xaa\xb7\x42\xff\xb5\xab\x3f\x0e\xdf\xf7\x8e\xd1\xff\x6a\xaf\xae\xa1\x29\x03\x9a\x31\x5d\x9e\x0d\xe6\xe1\x97\x41\xb6\x06\x72\xf2\x34\x08\x57\xf8\x53\x89\x6c\x7c\x18\xf0\xeb\xe7\x59\xc6\x63\xe7\x8b\x40\x28\xcc\x5c\x19\x02\x27\x0b\x3c\x16\xb2\xbf\x02\xc8\xf2\xed\x33\x41\xcb\x5a\xc9\xae\xc7\x63\x21\xa0\xa4\xfb\x48\x00\x94\x89\x68\x96\x64\x50\x20\x9e\xe5\x03\x1f\x9b\xc5\xe1\x4b\x8c\x2b\xf9\x55\x5c\xaf\x79\x5a\xdc\x2c\xe5\x82\x39\x08\xf5\xcb\xb5\x5b\x33\x10\x51\x8d\xc6\x3a\xd9\x90\xc6\xcb\x15\x33\x64\x16\xe7\x82\x76\xc0\xaf\xc8\x84\x1a\x33\x82\x35\x80\xd2\x17\x2f\x69\xce\x69\x11\x61\xe5\x5f\x5a\x01\x5b\xb3\xf4\x5e\x88\xb7\x6b\x86\x5e\xa0\xa9\xde\xe0\x2b\xa1\x17\x88\x80\xa2\x60\x51\xf8\xba\x18\xef\x99\x83\x8b\xf1\x1e\xdc\x5a\x94\xb7\x73\x31\x2b\x45\x2a\x2b\x0f\x5f\x50\xb0\x1f\xb5\x4d\x14\xa1\x65\x97\x5b\xbe\x0c\x9d\xc6\xb9\x97\xde\x94\x48\xaf\x1a\x76\x68\xa3\xb0\x7d\xe7\x87\x7f\x19\xb4\xa7\xa2\x64\x33\x43\xd8\x0c\x43\xfb\x20\xc0\x5c\x0f\x92\x78\x10\xe4\x1c\x66\x65\x0d\xcc\xa7\x78\x2a\x18\x0a\x2c\xd9\x51\x10\xd2\x40\x46\x6c\xa1\x7e\x1b\x2e\x33\x8b\x75\x3e\xf3\x4d\x38\x02\x34\x5b\xe1\xca\x1d\xca\xe9\x2c\xc1\xc6\x07\xde\xe1\x5c\xc9\x5c\x2c\x2d\x62\x88\x01\x8b\xc6\x41\x96\xc3\xf3\xfc\x35\x5d\x88\xd7\xa7\x35\x75\x39\xbf\x44\xfe\x12\x75\x31\x3b\x63\xce\x60\x36\x4f\x62\x2a\x38\xb8\x29\xa6\x00\xb7\xa1\xaf\x41\x69\x33\xa5\xdb\xe6\x82\x7a\xfe\xbf\xe2\x22\xc8\xe6\xa2\x60\xbf\x59\xb0\xdd\x2a\x94\xdd\x03\xdd\x9f\xd1\xff\x7e\x12\xe2\x1b\xaa\x1e\x3c\x11\xa7\x35\x7a\x29\x02\x27\x09\xa9\x3b\xbd\xb7\x3d\x17\x14\x36\x57\x37\x82\xbe\x08\x2c\x5d\xd8\x30\x21\x02\xc9\x3b\x08\x1c\xfc\x08\xd8\x00\x48\x86\x93\x1a\x81\x13\x4c\x01\x33\x4f\x3b\xd5\xd1\xb6\x8d\x26\x6e\x14\x6f\x84\x05\x0c\x03\xe9\x44\xab\x1f\x7b\x92\xf5\x61\xb9\x0d\x60\x49\x80\x33\xd5\x3e\xd4\xe2\xc7\x09\x72\x33\x19\x01\x45\x2d\x8a\x54\xc5\x2e\xf9\x3e\x01\xdb\x4f\x07\xfe\xc5\xc4\x9a\x87\x01\xc3\x96\x94\x4b\xda\xaa\x71\x89\xf3\xc4\x40\xa0\xc2\x96\x08\x1a\x0d\x38\x95\x6b\x77\x33\x76\x69\x7f\xf5\x45\x79\xf3\xaa\xf5\xca\x12\x7a\xb1\xba\x30\x06\x42\xd5\xe2\x38\xcb\xbc\xc7\x78\x8a\x82\x1c\x8d\x31\xe1\x82\x49\xcc\x57\x00\x4b\xf3\x41\x2d\x41\x61\xbf\x06\x86\x6b\xf2\x2d\x24\xce\x37\x93\x28\xa6\x46\xa2\xec\x10\x6f\x84\x4b\x54\x1f\x59\x25\x3a\x7d\x12\xfe\x94\x90\x26\x60\x7f\x4c\x8f\xbc\xd1\x05\xfa\xf1\x47\xab\x3e\x5e\x0f\xd4\x71\x78\x2b\x5d\x46\x81\x89\xaa\x4c\x71\x9e\xcf\xf5\x66\xab\x5e\x49\xbb\x45\xd2\x42\x24\x11\x86\xd2\xec\x95\x85\xa0\x79\x73\xf7\x4b\xc8\xab\xab\xe4\x20\x43\xf3\x7d\xb9\x44\x2e\x90\xd7\x99\xe9\x17\x48\xe0\xf0\x7b\xae\x0e\x82\x5f\xc5\x53\x1b\x41\xd7\x29\xf9\x56\x97\xf1\x0f\xb7\xac\x1e\x16\x6f\x6b\x7b\x20\xf9\xcd\x99\x01\x2a\x1f\xd9\xda\x9b\x67\xf9\x77\x47\x4b\x05\x30\xbd\x63\xb2\x87\xdd\x0c\x05\x0d\x92\xf1\x18\x53\xfa\x4f\x86\x5c\x34\x00\x51\x13\x43\x32\xbd\x32\xd1\x43\x12\x45\x25\x27\x6f\xb2\x8d\xa6\xc1\xa5\xf4\xca\xea\x97\x68\x77\xfd\xa0\x0e\xe8\x42\x48\xa9\x52\xbb\xb8\x78\x84\x14\x0f\x8c\x0b\xd2\xfa\x64\x7d\x1a\xe6\xb8\x2e\x40\x59\x30\xa6\xd8\xc3\x0f\x00\x06\x2a\xc9\x80\x86\x1f\xc5\x69\x74\x41\x65\x15\xce\x31\xac\x00\xf9\x55\x6a\x21\xe7\x4b\x96\x83\x66\xac\xd5\x6a\x72\xcd\x6d\x7a\x56\x2e\xdf\x0c\x46\x78\x72\x3b\xb8\x76\x81\x93\xa9\xcc\xc1\x62\x7a\x28\xc1\xb3\x82\xa0\x49\x19\x6f\x8a\xa4\x8d\xf4\x14\x43\x45\x2c\xfe\x56\x17\xc3\x06\x49\x7c\x81\xd3\x5c\x91\x61\x69\xba\x3b\x6e\x4c\x09\x16\x9f\xd4\xfa\xcf\xed\xb6\x7a\x48\xab\xa8\xce\xab\xe2\x65\x45\x7b\x98\xf9\x2e\x56\x2a\x6a\xf3\x8f\x75\xc2\xbb\x49\xc6\x47\xb3\x13\x0d\x62\x91\xc5\x6a\x9a\x64\x59\xd4\x1f\x63\xf7\x8a\xb5\x34\xb5\x98\x73\x53\x31\x50\xa6\x3d\x28\xfd\xc6\x4f\xe0\x7f\x1a\x50\x90\x50\x9f\x93\x15\xdc\x95\x7e\x17\x0e\x4f\xd6\x4a\x5f\xf0\x75\x57\xf5\x8b\xb2\x16\xd3\x3c\xa5\xec\x85\xc8\x32\xee\xc2\x7f\xe7\x14\x14\xab\xb2\x6b\xba\x73\xd9\x6b\x30\x11\x5e\xb7\x4c\xb0\x17\x16\x72\xbd\x7a\x74\x7e\xdf\x3b\x5e\xb3\x57\x90\x58\x78\xcb\x5e\x42\x2c\x1c\x09\x28\x7d\xb7\x72\x30\xc5\xf1\xf1\xf1\x07\xa3\x5a\x75\x67\x32\x79\xfa\xed\x82\xd7\x24\xba\xda\x8b\xd5\x72\x95\x4d\x8f\xe8\x2a\xce\x16\x5b\xc6\xc8\xb9\x6e\x4c\x56\xa2\xf9\x06\x3a\xb8\x09\x39\xd4\xb9\x81\x73\x03\x5b\xee\x95\x01\xbb\x02\xfc\x8e\x86\x91\xbe\xc6\x4b\xe0\x40\x16\xb0\x8c\xa6\x00\x83\xf4\x71\xb8\xf0\xa2\x2c\x30\x8e\x13\xfa\x46\x63\x80\x2c\x69\x3f\x2e\xe3\x1e\x55\x97\x34\x45\x5e\x5c\xd3\xb1\xb5\xbd\x8c\x9e\x3f\xb7\xfb\x56\x58\xcb\xaf\xe4\x09\xcd\x37\xe4\x72\xe5\x98\x53\xcb\x41\xaa\x4e\xc2\xe4\x15\x65\xe2\x14\x63\xe3\xb2\xaa\x2a\x4a\xa0\xaf\x5f\x29\xb9\x16\x75\x56\xf8\x24\x5e\xf3\x63\xaf\xa1\xa3\xb1\xca\x49\x94\xca\xe6\xdd\x6b\xd0\x76\xe0\x6a\x43\xfc\xb4\xdf\x6e\xb0\x9e\xdb\x88\xd3\x06\x9a\x15\x17\xb9\x8c\x61\xf7\x52\x07\xb1\xfc\xba\x43\xac\xba\xc0\xbd\xe4\x62\xde\xcc\xcb\x41\x32\x99\x06\x39\x6c\x2f\x55\x97\xa1\xbc\x2d\x68\x9b\x98\x24\xfe\x54\xdd\x13\x6d\xcb\xef\x36\xc8\xdd\x97\xe1\x60\x42\xdb\x3e\xe6\xe4\xed\x20\x64\x89\xba\x5c\xbc\x51\xa1\x6f\x51\xbc\x32\xf7\x9d\xa3\x96\x91\x23\x2d\x29\x4b\xb0\xf8\x62\x0b\xd4\x48\xc4\x5d\xad\x02\x79\x67\x3b\xc6\x42\x7f\xcd\x43\x2c\x29\xee\x54\xb5\x5c\x4a\xd1\x6a\x0c\xed\xfd\x69\xfd\xaa\xdd\xec\xf8\x9d\xc1\x1a\x24\x36\xe8\xb4\x3b\xad\xf6\xb0\x3d\x3c\x5b\xe2\xaa\x78\x00\xcd\x1f\x8a\x7e\x38\xce\x91\x15\x50\x70\x8e\x85\xe3\xf0\x25\xea\x16\x8c\x8c\x86\xb5\x59\x7c\xcf\x2b\x5b\x63\xb2\xbf\xd2\xa2\xc2\x23\x5f\x27\x05\x9d\xde\x7a\xc9\xa8\x31\x1b\xf8\x82\xbe\xc5\x1a\xbe\xdf\x00\x0e\xa6\x30\xaa\x2d\xbd\x69\x90\x66\xb8\xa6\x2c\xd4\x92\x8b\xc9\x34\x53\x14\x3f\x45\x35\xab\x57\x02\x29\x8e\x68\x0c\xaf\x39\x8b\x8e\x12\x86\x81\x4c\x99\x7a\xb5\x0c\x22\xbf\x8c\x93\x0e\xc3\x2c\x29\x84\x01\xee\x04\x67\x39\xb5\x6d\x08\xc6\x96\x05\xaa\xc1\x3c\xad\x9f\xa1\x8d\x0d\x54\xac\x3d\xf4\xe3\x8f\x7a\xbb\xa7\x3e\x2b\xc3\xd7\xa4\x4b\x05\xb5\x7d\x45\x2f\x30\xcc\x96\x91\xca\x61\x8c\xc5\xaf\xb5\xc8\x4c\x79\x1a\x1e\x6a\x2d\x95\x58\xd7\x25\x17\xec\x88\x0e\x57\x41\x05\x0c\xb3\xbc\x01\x7f\x0a\x0d\xd4\xf5\x5b\x6b\xa3\xb8\x72\xab\xe3\x77\xaa\x31\x0a\xeb\xd1\xc8\x71\x0c\xf2\xa4\xd3\x89\x2a\x9a\x97\xde\x15\xf1\x45\x78\x99\x06\xd3\x29\xc8\x91\x41\xce\x9a\x97\x55\x26\x28\x20\x3b\x7d\x26\x79\xa5\x95\xae\x5e\xc5\xd5\xc7\x70\x65\x2b\x1c\x7e\x6c\x9f\xaa\x3a\x90\xdc\xfa\xb2\x47\x08\x3d\x5c\xc6\x2f\x93\xea\xb9\x8e\x40\xee\x2d\xeb\x2c\x75\x08\x8d\x43\x4a\x35\xe2\x80\x51\x5c\xec\x58\x0e\x4e\x65\x21\xa2\x74\xef\x45\x40\xa8\x6b\x88\x6a\xd2\xc4\x96\x06\x95\x62\xd7\x0e\x64\xde\x98\x37\xdd\x5d\x3c\x54\x0b\xe5\x93\xe5\xa8\x53\xe2\x7d\xce\x9a\xa6\x36\x28\xec\x77\xe1\x77\xfe\x37\x89\xe1\x62\xdf\xc2\x36\xff\xda\x0d\x8c\x2c\x4b\xbb\x46\xc5\x5c\x56\xc2\xbf\xd2\xd4\x46\x28\xae\x96\x8e\x53\xd8\xc3\x35\x58\x04\xa9\xd1\xd5\x09\xdf\xb4\x71\x4f\xac\x36\x87\x34\x50\xa2\xec\xb0\x38\xc7\xba\xbd\x58\x6f\x17\x42\x67\xa1\xe8\x39\xdb\x36\xfb\x75\x29\xba\x41\x52\x38\x9f\xd8\x02\xa0\x59\x7d\x56\x0d\xb1\xa4\xf0\xcc\x10\x01\x12\x58\x67\x6f\x23\x99\xf4\xa0\x7f\x05\x4c\xb8\x02\x36\xa0\x30\x7b\x23\xc2\x71\x85\x63\xae\x6b\x3f\xaa\xbe\x9d\x96\x6d\xda\xca\xfe\x6a\x16\xe4\xaa\x45\xcb\x27\x42\x56\xa2\x6f\x2b\xd1\x85\xa5\x88\xa4\x23\x64\xf4\x62\x96\xa1\x5a\xc1\x02\x10\x5c\x88\x9a\xc5\x84\x3e\xb0\x28\xc9\x5e\x59\x0a\x4b\xba\x40\xdd\xc2\xda\x52\x5a\xd2\x0b\x12\xd2\x1b\x5a\x8e\x6b\x37\x95\x8f\x2d\xec\x1e\x3a\x13\x13\x27\x14\x5f\xf2\xb5\x0c\x7a\xb0\xed\x49\x26\x00\xb1\x43\x69\x17\x4d\xd2\x23\xe4\xf6\xfe\x3b\xee\x53\x5a\x80\x16\x11\xe9\xf8\x1b\xec\x4d\x45\x54\xe5\xf9\x6c\x9a\x7b\xcf\x5b\xd8\x34\x27\x3b\x16\x46\x41\xf2\xa8\xbf\x35\xcb\xbe\x6f\x14\xf5\x7d\xe9\x1e\xb7\x14\x67\xec\x02\x47\x84\x81\x6f\xb0\xab\x30\x8d\x83\xa4\x5a\x90\x17\x93\x06\x58\xde\x29\xd8\xed\x37\x9c\x5f\x65\xe4\x0b\x6e\x62\x6b\x8e\x71\x0a\x73\xc3\x90\x27\x4f\xd9\xc4\x94\xa8\x8b\x74\x58\x8a\xbd\x49\x62\x32\x8a\xc2\xc7\xba\x4d\x88\x26\x16\xd6\xc6\x58\xd9\x9a\x3e\x56\xea\xfd\x0b\xe8\x98\x82\x2c\x9b\x4d\x70\xa8\xde\x27\x06\xe3\x14\x07\xe1\xb5\xb4\xdf\x29\x07\xb2\x59\x4c\xd3\x56\x56\x88\x68\xb6\x18\xdb\xb3\xf3\xaf\x85\x0e\x4d\x84\x71\x81\x89\x7a\x9a\xe1\x85\x79\xbd\x5b\x5f\x34\x8b\x17\x85\xf5\x17\x4a\xdc\x06\xc9\x53\x15\xd2\x01\xa7\x02\x24\x88\xdf\xce\x03\x3e\x1b\x3a\x25\x79\xf5\xb0\xca\xb6\x54\xde\x2c\x76\x8d\xbc\x08\xe7\x84\xb0\xe1\x36\x21\x94\x3d\x99\x4b\x55\xbf\xd8\x40\xa5\xda\x51\x06\xad\x44\x29\x6a\x68\x26\xac\x37\x24\xef\xed\x26\x12\xf3\xae\x4c\xbe\x84\x43\xb8\x2f\xa1\xff\x96\x5f\x96\xcc\xb3\xc2\x30\x2f\x4c\xde\x53\xe8\xa4\x95\x6a\xf7\x24\x5b\x04\x3c\xdc\xe9\x93\xc6\xc8\x5a\xde\xfb\x99\x2b\x0c\xa6\x2c\x5e\x50\x75\x75\x2c\xaf\xc1\x2c\x2f\xd8\x03\xc8\x29\xa4\x19\x00\x5c\xee\x15\x52\x04\x2a\xc7\xd4\xb6\x22\x8a\x99\x25\x2f\xb3\x03\x60\x26\x33\xe7\x38\x06\x63\xde\x72\x68\x22\x4a\xb9\x03\x18\x0d\x9d\x5d\x0e\xcb\xd4\x19\x80\x0a\x4b\x12\x92\x36\x51\xa7\x05\x26\xc7\xf0\x81\xdb\xcf\xee\x0d\x51\x32\x89\x88\x8c\xe0\xa1\x80\x7e\xba\x8c\xc6\x63\xd4\xc7\xa2\xc1\x10\xa5\x41\x1c\x26\x93\xf1\xf5\x3d\x1d\xee\xa9\xd5\x04\x1b\x26\x0f\xed\xfd\xec\xc1\x94\x92\xc6\xbf\x01\x17\xa2\x93\x1c\x9a\x2c\x48\xa2\xc6\x15\x7c\x85\x07\xb3\x1c\xd7\x9e\xf3\x68\x54\xcf\x3d\x96\xb8\xc3\x63\xe6\x5b\x0e\xb1\xe8\x9e\xa0\x7b\xe8\x39\x19\x0e\xf2\xff\xcf\xdd\x67\x66\x0a\x46\xe6\x6e\x9c\x9a\x3d\x4e\xa2\x1e\xa3\x2e\xaa\xd8\xb4\x1b\xf5\xd3\x69\x66\xb3\xec\x50\x54\xff\xe0\xbc\x4a\x32\x94\xc8\x14\x4e\xad\xd3\x5a\x35\xd2\x9a\x5b\xdc\xea\xe8\xd2\x96\xd6\xb5\x29\xad\xd0\x78\xb3\x34\xf1\x40\xa1\xc0\x15\x31\xee\x8a\x34\xc8\x6c\x21\xdd\x2c\xad\xb0\x44\xde\xd2\x78\x00\xfe\xd6\x80\xb5\x84\x36\xf3\x72\x0c\xc0\x6e\xda\x50\x93\x8b\x64\xd0\x4c\x41\xce\x93\xc9\xf2\x31\x47\x2f\x4c\x7d\xb6\x92\x1a\xba\x48\xe1\x6c\x77\x96\x3a\x62\xa2\xd4\x82\x87\xf1\xe2\x48\x2d\xa4\xe8\xdb\x69\xb5\x6d\x9a\x01\x45\xc5\x1d\x32\xbe\xcc\x59\x9e\xc6\x92\x3d\x01\xcb\x21\x7e\xdd\x5e\x1f\x6e\x89\x12\x27\x14\xe2\xf6\x6f\x36\x0d\xd7\x03\xea\xc7\xdf\x6f\xed\xdc\x20\xb2\x7d\x72\x0b\x4a\xdb\x2e\x5c\x48\x79\x9c\xd9\x96\x6f\x71\x0b\x69\xc5\x2d\x1d\x76\x3b\x3f\x7c\x09\x87\x5d\x69\x7b\x96\x28\x64\x41\xf5\x38\x73\xa9\x5a\x64\x5f\xfe\x3e\xf4\xe5\xa5\xd2\xc1\x77\xa0\x8e\xf8\x9b\xa8\xcd\x2d\x8b\xaf\x92\x26\xf9\x39\x1f\x6a\x57\x58\xd9\x87\x6f\xd8\x43\x7f\x3e\xb0\x06\xbb\xd8\x8e\xbe\x91\xc2\x41\xdb\x5d\x93\xdc\xa5\xdc\xb5\xc9\x2e\x04\x3c\x11\x5b\xb8\xb8\x22\x61\x4f\x87\x57\xc8\x18\xec\x99\x6e\x7b\x2e\xef\x4e\x2a\xc6\xd2\xbe\x19\x5d\x5a\x81\x2d\x56\xc1\x60\xc5\x1a\x92\xc0\xa9\x98\x57\xf4\x25\xee\xeb\x0c\x39\x00\x84\x31\x3f\x6a\xfb\x92\x1e\xdf\x40\x63\x3f\xba\xa2\xc9\x40\xa0\x82\x75\x48\xa5\xb3\x35\x35\xcc\x54\xa0\xbb\xf4\x26\xd6\x13\xdf\x1d\xf4\xc1\x7f\x01\x3f\xbe\x67\x05\xf1\xf7\xce\x98\xbf\x47\x3d\xb1\x8d\x19\x2e\xaa\x28\xbe\x13\x63\xbc\x77\x14\x4d\x45\xf1\x7d\x31\xee\x8a\x7a\xe2\x6f\xce\xbb\xbf\xb9\xb2\xf8\xdb\x6f\x15\x9e\x62\xdb\xe3\x38\xa1\xdd\xdf\xde\x51\x49\x1f\xee\xbe\xbf\xb0\x6d\x1d\xf2\xf8\x56\xdc\x3d\xca\x14\xe4\x85\x2a\x4f\x64\xba\x94\x53\x5a\xb2\xfc\x95\x37\x67\x5e\xbb\xf9\xbd\x26\xa5\xbc\xf7\x1c\x94\x8b\xe6\x9e\x54\x72\x4e\x1a\x88\x99\xe9\x27\xb5\xb4\x93\xbc\xa2\x23\xf1\x24\xe8\x47\x0b\xe0\xe2\xa7\x9a\x7c\x72\x3f\xc8\x47\x1e\xb2\xa4\xa0\x2c\x8e\xd7\x1f\x92\x41\x30\x46\xd3\x64\x7c\x3d\x8c\xc6\x28\x19\x22\xba\x69\xb1\x53\xbc\xe5\xc8\xcb\x62\xdb\x6f\xa8\x05\xb5\x86\x15\xc6\x24\x5e\xef\x90\xf7\x37\xaf\xcd\xd8\x41\x92\xad\x65\xff\x77\x83\xa9\x81\x8d\xe0\xac\x4f\x66\x50\x27\xe2\x9d\x95\x69\x9a\xe4\x09\xf9\x84\x36\xc8\xe9\x43\x2f\xc0\xea\xa1\x0d\x14\xe3\x4b\x82\x40\x39\x84\x78\x36\x1e\x3b\x16\x8a\xc0\xa0\x58\x26\x52\xbc\x23\x5b\x24\x4f\x3e\x27\xe5\x4a\x6e\xa7\x62\xfb\x43\xd4\x4f\x83\xf4\x7a\x9e\x8e\x5c\xca\x0f\xea\x04\x05\xd9\x42\x99\xd6\x93\x08\x17\xbc\xcb\xc1\x18\x45\xf1\x08\xa7\x91\x12\xc0\x55\x89\xe8\xa0\xe7\x19\x35\x23\x8c\x9a\xd3\x59\x21\xec\x1f\x8f\x31\x0c\xee\x71\xc2\xcf\x60\x14\xe4\x1c\x21\x16\xca\x83\x8a\x41\xc6\xa9\x12\xa1\xb2\x38\x80\x5c\xee\x4a\x2e\x70\x9a\x46\x21\xce\xd0\x21\x55\x88\x44\x38\xa3\x0c\x7c\x7a\x8d\xa2\x98\x65\x33\x2e\x10\xa8\xd0\x82\x9e\xab\xe1\x64\x51\x00\x86\xcc\xe5\x28\xb7\x48\xd4\x40\x32\x51\xfb\xd7\x27\x94\x84\x15\xe9\xa6\xc4\x24\x51\xf6\x17\x8b\xf0\x38\xec\xa2\xe7\x90\x29\xeb\xb9\x6e\x38\x62\x6f\x93\xfc\x4d\x70\x3e\x4a\xc2\x52\x1f\x79\xa9\xb4\x1e\x23\xdf\xe6\x78\x86\x90\x19\xce\x90\xa2\xaf\x18\x64\xf3\x79\x75\x06\x31\x9c\x06\x97\xb1\xf9\x45\x62\x24\x44\x58\x28\xd2\xea\xb9\xcc\x89\x37\x67\xe7\x13\x1c\x5b\x4c\x87\xc9\x8e\x52\x8e\x05\x2a\x98\x0f\x3b\x77\x15\xe5\xad\xe9\x1f\xac\x08\x30\x33\x29\xee\xfa\x15\x09\xc7\xd2\xd4\x8e\xd3\x0f\xbc\xc9\x51\x90\x1d\x5c\xc6\x8c\xec\xaf\x6b\xcf\x49\xcd\xe7\x4b\xc2\xe7\x89\x3c\xc2\x26\xc8\xcb\x93\x17\x73\xfb\x41\x6b\x95\x4e\xb7\xa5\xd6\xff\x93\xcd\xa6\x44\xd4\x8a\xa3\x7c\x25\x20\xc2\x29\xdb\xfa\x82\xf4\x7c\x46\x46\xd7\x3a\x1e\xc8\x92\x41\xa1\x64\x9c\x0a\x8f\xdb\xf4\x79\x86\x0a\x8e\x1e\x51\xa5\x30\x9f\x74\xba\x4a\x4d\x08\x72\x07\x95\xfd\xc0\xb1\xed\x20\xae\x18\x1f\xe2\x14\xc7\x03\xd2\x00\x8c\xf3\x54\x5f\xaf\xc6\x30\x30\xb9\xd8\x06\xd0\xb9\xcf\x20\x5b\x6a\x0c\x1b\x53\xdd\x86\x95\x92\xc9\x4c\x93\xaa\xbc\x67\x31\x1d\x07\x98\x40\xba\x6a\xcd\x10\xa8\x9b\x7c\x3e\x8a\x0c\x36\xb5\x25\x71\x0d\x47\x44\x69\x08\x29\x07\x40\x6a\x4b\x7f\x67\x5e\xc9\x23\x96\xa3\x0d\xc6\x36\xf9\x9d\xc5\x5c\x5e\x44\xcb\x95\x73\x3c\xb3\x11\x58\x72\x45\x9c\x6c\x73\xe5\xf2\x08\xea\xd2\x1a\xe1\xef\xd4\x75\xe2\xa4\x1a\x5e\xfc\x36\x64\x53\xe6\xae\xee\x98\x2b\x74\xc0\x98\x19\x4b\x12\x00\x24\x05\x26\xf4\x61\x88\xb2\x64\x82\x69\xea\x29\x74\x39\xc2\x31\xba\x4e\x66\xa9\x30\xb3\x0f\x88\x38\x4b\x81\xdf\x73\xec\xdc\xbb\xee\x82\xba\xa3\x73\xd9\x5e\x86\x28\x03\x58\x59\x31\x47\x46\x0c\xfd\x2d\xb7\xbb\xb9\x68\x54\x9a\xd3\x5e\x32\x25\xc2\xce\xb4\x90\x7b\x98\xbc\x73\x07\x71\x4a\x02\x06\x1a\x26\x45\xa6\x9a\x80\x26\xf2\x9e\xa7\x94\xad\x4e\xba\x7f\x56\x95\x5f\x6e\x39\xee\xd0\x88\x72\x89\x2d\xfa\x67\x5d\xe3\x22\xe2\x21\xbf\x6c\xfb\x18\x4c\xc0\x68\x62\x4e\x3d\xc4\xb6\xea\xa2\x98\xbe\x59\xcb\x00\x97\x4a\xb7\x58\x32\x9d\xa7\x72\xf1\x33\xb4\x21\xb5\xaf\x7e\x5a\x20\x75\x91\x63\x93\xdd\x46\x97\x49\xfc\x3c\xa7\xf2\x33\x77\x77\x94\x82\x17\x8e\x93\x64\x8a\x82\x7e\x72\x61\xd9\x06\xcb\xbb\xfc\x9c\x43\x7b\xee\xee\x30\x70\x51\xd1\xaa\xdc\x4f\xf1\xb6\x42\x5e\xad\x4a\x8b\x47\x1c\x4e\xa0\xa7\x60\xff\xb2\xc8\xba\xb1\x6d\x7c\x83\x71\x12\xe3\x07\xe0\x78\x00\x17\x6d\x14\x7b\x08\xbc\xa8\xb0\x93\x91\x62\x73\x37\x32\x39\x17\x89\x2a\x1c\x71\x7e\x6a\xb5\x27\xb3\x9f\x91\xad\xb7\xfb\x31\x0a\xc0\xf3\x56\x8b\x45\x58\x1a\x59\xc8\x88\xf3\x5e\x0e\xc2\x16\x9e\x46\x18\x3f\xa8\xe1\x10\xb3\xe8\x3c\x8e\x86\xd1\x20\x88\x73\x16\x50\x32\xa2\xbd\x07\x90\xb4\x1d\xdb\x31\xf9\x17\xc9\x83\x98\x9e\x95\xe5\x37\xf7\x10\x36\xc6\x6c\x5e\x27\x0b\x47\x18\x7c\xd9\xf4\x6a\xce\x58\x23\xab\x59\x98\x18\x29\xed\x06\x63\xee\xa0\xe1\x7b\x4b\xf5\x22\xfb\x67\x2b\x1b\xbb\x61\x0b\xe3\xd0\xfe\x57\x07\x70\x5a\xbf\xaa\xd7\xeb\x7e\xbd\x51\x6f\x7a\xa8\x7e\x55\x6f\xd5\xdb\xf5\x4e\x7d\xed\xec\xc1\x00\x7b\xa8\x53\x39\xf4\x0a\x0b\x5f\xc7\x67\xc4\x58\xb1\x97\xcc\x21\x18\x96\x2b\x7f\xa0\xff\x7e\xfd\x0a\x31\x7b\x35\x51\x63\x88\x6a\x62\x7a\x7f\xd8\xb0\x28\x0a\xe5\x3f\x80\x2a\x19\x0d\xf1\x9f\x95\x8d\x49\x75\x00\x94\x3c\xc6\x38\x3e\xcf\x47\xd4\xf4\xc8\xc9\x45\xaa\xc7\x8c\x29\x16\xca\x62\x91\x62\xb6\xe3\x41\x12\x12\x7a\xc7\xf4\x87\x4e\xee\xf0\xba\x3c\xf6\xa7\x20\x00\x1c\x0f\x56\x76\xf1\x95\xbb\xcd\x79\x01\x64\x2a\xad\xf6\x85\x83\xbb\x14\xc4\x5a\x21\xb2\x8b\x25\xae\xc1\xbc\xb0\x2e\x96\x2a\xca\x90\x7c\xca\x87\xeb\x0b\x45\x73\x61\x53\xe1\x8c\xe5\xc2\xa7\xea\xeb\x57\xb4\x8b\xaf\x4a\xc3\xb7\xcc\x21\xa0\x41\x90\xe3\x98\xed\xf9\x2a\x05\x39\x98\xbf\x9b\x90\xa4\x7b\xd8\x62\xc0\x4f\x18\x37\x94\x28\x13\xd2\xfc\x2e\x7a\xaf\x5b\x15\x97\x2a\xb4\x21\xb0\xf3\x79\xfc\x0c\xf1\xa6\xe1\x4e\x69\x06\x25\x75\xa6\x44\x03\x3b\x2f\x16\x8e\x84\x0c\xec\x2f\x06\xc3\xb2\xf8\x2a\xe6\xa3\x40\x84\x3a\x28\x48\xcc\x5d\x3a\xca\x8e\x0b\x1e\xa3\xf0\x1c\x07\xf0\x63\x95\x25\x51\xf8\x45\x1d\xa3\x53\xbd\x71\x30\x99\x22\x7c\x05\x91\x24\xfb\x91\xde\x39\x7a\xaf\x4a\xca\x98\xb7\x0d\xf4\x3e\x75\x60\x0b\x92\xa2\x20\xfe\x2f\x47\xa0\x74\xa8\x4f\x44\xd2\x18\xc3\x56\x8b\x82\x1c\x05\x28\x8f\x26\x16\x89\xdb\x16\x92\x5d\xee\xae\x3b\x29\x84\x3c\x38\xa4\x28\xda\x20\xe8\xb1\x59\x38\x8d\x78\x54\x6c\xf2\x4f\xad\xd1\x42\x2f\x51\x2d\xa2\x18\xbf\x40\xeb\x4b\x4b\x22\x5a\xb6\x53\x8a\xa7\x70\xd4\x1e\x2f\xa3\x48\x84\xdb\xfe\xba\x51\x34\xfd\xe6\x0d\x6f\xc3\x52\x5e\x34\x5a\x41\xf0\x77\x6e\x4b\xf2\x98\xd2\xc5\x75\xa7\x31\x75\x47\xb9\xaf\xda\xfd\x0d\x64\x0e\x76\x95\x8c\xc1\x26\x15\x8a\xcd\x76\x79\x43\x45\xd3\x96\x63\x25\x88\xe2\xa0\xaf\x9f\x3c\xa4\x03\x40\x55\x76\x4a\x63\x70\x10\x21\x50\x11\x0c\xa3\xfc\xae\xa2\x60\xb1\x38\xc5\xea\x72\x30\x29\xf2\xb9\x6a\xe8\x5e\x0b\x6b\x32\xe5\x28\x5b\x5c\x24\x27\x93\xb1\x33\x0c\x8b\xa8\x76\x2a\x60\xf0\x38\xf3\x1b\xb0\x74\xe8\x1f\x90\x7e\xb3\x41\x48\x3f\x53\xf8\x82\x85\xe0\x15\x51\x6a\x03\xed\x07\xf9\x68\x65\x80\xa3\x71\x51\x73\x15\x2d\x10\x91\xc8\x7e\xfe\xad\xb4\xf3\x38\xcc\x91\x8c\xe3\xef\x6d\xed\x3e\xd9\x71\x57\xa6\x05\xe3\xbc\xab\xd2\xc2\xbc\x73\xae\x0c\x16\x4e\x6a\x14\x57\x39\xfa\xb9\x79\x72\x5e\x31\x69\x84\x99\xdf\xd7\x9d\x26\x75\xa4\xde\xe2\x53\x20\x89\x0d\xc3\x68\x3c\xe6\x61\x67\x99\x9b\x04\x9c\xb7\xe6\x0b\x25\xfc\x30\x17\xdb\x0e\xbd\x32\x28\xa7\x8b\x4f\xa5\x59\x66\x90\x2a\x11\xca\x7d\x19\x9f\x55\x38\x82\x31\x57\x10\xdf\x7d\xd2\xa2\x25\x64\x32\x89\xed\x47\x2c\x99\x3d\x98\x07\x2a\xf2\x35\x55\x6f\xc8\x27\x9f\x2f\xdd\x51\xe6\x3f\x5f\xa2\x0d\xf2\x5f\x47\x02\xb5\xc9\xe7\x3f\xc8\x36\x73\xd5\x0c\x42\xdc\x59\xef\xeb\xe1\xd7\x45\xb1\x20\xfb\x82\x64\xce\x51\x72\x4f\x50\xe1\xee\x8e\xb6\x5a\xab\x5f\xbd\xaa\x77\x5e\xa1\x17\xa4\x0b\x7f\xc0\x9e\xbe\xb3\xb3\xb3\xb3\x84\x96\xe9\x8b\x9f\x7e\x42\xf5\x2b\xbf\x0e\xdb\x3d\x41\xc0\xb1\xdd\xd3\x2e\xd6\xea\x57\xad\x4e\xbb\x4e\x81\x5d\xea\xc0\x2e\xab\x02\x83\xe1\xc5\xd9\x0c\x3c\x7d\x6a\x80\xc6\x9b\x37\xb4\x26\x5a\x46\x30\xd2\xa5\xf5\x59\xdd\xd5\x0d\xa8\xc3\xfe\xca\xcb\x2e\x6f\xa0\xfa\x4a\xdb\x59\x06\xc6\x94\x15\x7d\x41\xed\x6d\x38\xb5\x2d\xa1\x9f\xd0\x4a\x1b\xfd\x07\xf2\x51\x17\xbd\xf4\xab\x88\x28\x06\xe7\x50\xc5\x0d\x0f\xa5\x83\x60\x30\xc2\x2c\xbb\xce\x7c\x81\x83\xd4\xfc\x4c\xe8\x31\xad\xd5\x68\x55\x72\x54\x52\x90\x24\xbb\x89\x34\x18\xf6\x2b\x26\x5a\x75\x03\x7d\x4e\x6b\xb4\x3c\x10\xe4\x5a\x7f\xcd\xd2\xa7\xcb\x22\x87\x4f\x4d\x94\x2f\xe0\xa3\xaf\xa8\x5e\x31\xac\x79\x8c\x2f\x25\x67\x27\xb8\x75\x64\x0a\x90\x98\xa7\xef\x79\xa2\x8d\xa4\xdd\xf9\x94\x1d\xed\xe7\x19\xd2\xe0\x78\x00\x86\x34\xf4\x5f\xbb\x21\xcd\x2e\xbe\x32\x35\x01\x36\x70\xa4\xe0\x06\x05\xba\x42\x7f\x57\x8b\xbf\xa9\xab\x2f\x46\xf8\xaa\xb2\x0a\xa3\xc2\xc9\x73\xc1\xa8\x9a\x95\x5a\xbf\x2f\x46\x3e\xc2\x57\x66\x08\x4d\x36\x7e\xd2\xd1\x7e\x7e\x22\x21\x6b\xe0\xcc\xdb\x1e\x53\x2f\x2b\x9f\x3c\xb3\x45\x8f\x91\x74\xd6\x4d\x40\x23\x7c\xd5\x1b\x05\x69\xe5\x3c\x5b\xd9\xdc\x03\x1d\xe4\x48\x8b\xe8\x41\xee\xf2\x8e\x87\x38\x8e\x1d\x5b\xe3\x00\x96\x00\x69\x2d\x15\x6a\x1f\xbf\xb3\x64\xe3\x77\xb6\xaa\xa4\x9d\xfa\xb0\xbc\xae\x83\x41\x08\x70\xbf\x27\x51\x5c\x7b\xfe\xfc\x16\x11\x37\x25\x0a\xa7\xeb\x6d\x11\x4d\x0f\x5f\x29\x94\x70\xab\x2f\x18\x87\xf0\xf4\xd7\x4b\x4d\x7c\xb1\x51\x9b\x6d\xb1\x1e\xab\x47\xca\xa4\x55\x16\x4b\x94\x42\xeb\x7c\xe0\x47\x17\xfa\xc8\x8e\x32\x8b\xac\x9a\xcb\x45\x52\xd3\xc9\x8d\xb2\x2d\xb4\x51\x92\x1f\x93\xae\x96\x26\x68\x26\xa0\xd3\x7b\x71\xce\x3a\xbb\x92\xcd\xfa\x59\x9e\xd6\x22\x0f\x35\x96\x3c\x48\xc2\x57\xa8\x2c\xc8\x8a\x5a\x5f\xb2\x39\xe0\x2e\xbc\xe7\x29\xc3\xb4\x8a\x1a\x55\xdd\x67\x3f\x04\x79\x14\xfb\xd5\x36\x2d\x56\x96\xef\x5b\xe2\xf1\x76\x5b\x17\xab\xfe\xd7\xed\x5e\x55\x11\xb8\xaf\x35\x35\x86\xf6\xec\x7b\x18\xc5\xe5\x7f\xd4\x36\x46\x87\xe3\x3b\xde\xc9\x24\x04\xe9\x8e\x44\xa7\x6e\x65\x98\x26\x13\xf2\xb6\x97\x84\x18\x36\xa9\xaa\x1b\x92\x0c\xf0\x0e\x7b\x92\x42\xb7\xb7\xdf\x96\x04\x39\x2e\xb4\x18\xbe\xeb\xcd\x89\xad\x22\xba\x3f\xc9\xcb\xad\xfa\x16\x25\x6a\x2d\xb6\x4b\x89\x6a\x62\xa3\x12\x6f\x1e\x7a\xaf\xd2\x9a\x9e\x97\xcb\x39\x92\xb4\xe8\x45\x6f\x57\x06\x8c\xa0\x37\xf3\x5a\xc4\xd7\x84\xbe\x55\xd9\x75\x8b\x0b\x6f\x55\x1a\xc2\x55\x77\xaa\x4f\x27\x3b\x2f\xd7\xab\x6d\x54\x9f\xf2\xe1\xba\xd8\xa6\xd8\xc3\xed\x36\x29\xda\xe8\x5f\xb7\x47\x55\x6c\xff\xbe\x56\xd6\x2c\x1f\xae\xdb\x37\x28\x32\x8a\x0f\xb9\x3d\xe5\xe9\x75\x89\x81\x51\x88\xc9\x11\xfd\xd3\xd1\x5e\x8f\x7b\x3a\xd5\x70\x36\x08\xa6\xb8\x56\xb2\x71\x9a\x6c\x19\x0d\x82\x7c\x30\x42\x35\x33\x7d\x34\xa0\x30\x4a\x93\x4b\xa0\x5b\xc8\xb8\x52\x7b\xbe\x1f\x8c\x87\x49\x3a\xc1\x21\x9b\x86\x30\xc8\x03\x33\x05\xdd\xe2\x0c\x5c\x9e\xd4\xdb\xf3\x6f\x36\x57\x8b\x90\xc9\x77\xcd\xbc\x81\xc2\x28\xeb\x2e\xc8\xb0\x3a\xe3\x66\x75\x5c\xc6\x00\xca\xd6\x30\x8b\x19\xf5\x50\x0b\x01\x85\xae\x38\x9c\xa5\xca\x01\x68\x44\x0a\x5e\xc8\x85\x89\x43\x96\xcd\x4c\xf2\x42\x77\x66\xe2\x95\xec\x64\xaf\xa5\x94\x68\x93\x59\x96\xa3\x3e\x46\x11\x19\xd1\x09\x8e\x73\x9a\x67\x2d\x80\xeb\xf5\x14\xe7\xc2\x63\xa1\x52\x6e\x5f\x2d\x4f\xa7\xaa\xdc\xa7\x39\x0e\xa9\x6b\x55\x91\x20\xfe\x0b\x9e\xe6\x68\x16\x4f\x79\xd2\x40\x35\x3b\xa8\x64\xd3\x52\xb7\x70\xdf\xb7\x6c\x1c\x20\xd3\xe0\xa6\x18\x05\xe1\x25\xe6\xfa\x5c\xd1\x0c\x0e\xb2\xbb\x32\x6b\x1e\x6d\xa4\x9f\xb3\x24\xda\x2c\x89\x69\x9e\xa0\x28\xcf\xb8\x57\x0c\x22\x14\x7c\xd7\x3b\xa6\xbe\x15\x79\x9a\x10\xd7\x7d\xc9\x54\x29\xeb\x2e\x33\xef\x43\x60\xa5\x6c\xb3\x19\x80\x0c\x9c\xcc\x53\x51\xdb\x59\x75\xa6\x44\xcb\xc7\x5b\x41\x1e\x70\x61\xbd\x5e\x55\xd2\xdc\x0c\xc3\x0c\xda\xe0\x79\xc1\x1d\x23\xcd\x68\xa1\xfa\xa6\x28\x82\x2c\x18\x99\xc7\x99\xb1\x0b\xa2\x6b\x9e\x39\x01\x50\x7e\x49\x7d\x4a\x02\xc9\x82\x92\xda\x13\x03\xc7\x7b\x98\xc9\xfc\x4c\xd1\xa9\x3d\x37\xf9\x7d\xa5\x7a\xf3\xf7\x46\x56\xb2\x4a\x32\x73\xd3\xbd\xbe\x48\x47\x27\x07\x14\x95\x06\x88\x05\x13\x55\x41\xc9\x3e\xce\x40\x46\x73\xe2\x44\x32\x5a\x93\x98\x32\x60\x38\x3f\x52\xda\x26\x74\xcd\x45\xbe\xdc\x94\xc8\x06\xcc\x20\xda\xe5\x0d\x35\x49\x7a\x55\x0a\xe6\xb9\x4e\x33\x14\x5c\x04\xd1\x18\x22\x76\x51\xbe\x00\xcc\xce\x4d\x35\x27\x92\xb3\x4a\x14\x5f\x24\x5f\x70\xa6\x27\x19\xae\xb1\xe4\xc0\x1e\xba\x1c\x45\x83\x91\x95\x55\xf7\xaf\x4b\x58\xb5\xd9\x2a\x5f\x28\xfd\x24\x19\xe3\x20\xbe\x41\x61\xb2\x33\x9e\x65\x23\xf4\xcb\x08\xe7\x34\x9e\x09\xcf\x45\x0b\xee\x5a\xd3\x20\x05\x46\xc1\x5e\x15\x5c\x5b\xb0\xeb\x5b\x84\x03\x11\x9c\x1e\x46\xfc\xee\xdb\xbc\x00\xb8\x45\x09\xc9\xb5\x66\x78\xaa\x5c\x57\x5c\x8e\x05\xc1\xd8\x33\x05\xab\xb1\x56\x69\x51\x65\xf1\xd1\x01\x5f\x50\x67\xc2\x96\x48\x41\xdc\x16\x6d\x09\x79\xcd\x8d\xd3\x60\x64\x5d\x6a\x15\xf2\x51\x32\x34\x73\xd1\x3d\x2f\x5e\xc8\x0a\x1b\x5a\x4a\xe6\xb2\xc2\x1c\x7a\x51\xdb\x1e\xd1\xaf\x97\xcc\xe2\x9c\xd3\x97\x85\x99\x10\xa0\x31\x4d\x24\x7c\x04\x71\x8b\x37\x54\xfc\x57\xb5\x26\x5f\x9b\xbc\xc8\x35\xe4\x0c\x83\xa3\x64\x16\x87\x68\x36\xa5\x0e\x85\x83\xf1\x2c\xc4\x1a\xdd\x9b\xd5\x34\x8c\x0a\x23\x17\xf9\x43\xf5\xd8\xb6\x02\x8b\x30\xb9\x8c\x65\x3c\x92\x78\x7c\x8d\x86\x33\xb1\x28\x2d\x91\xf4\x57\x57\xd1\x18\x67\xd4\xa9\xd2\x2e\x6b\x01\xdf\x48\xf1\x24\x88\x62\x55\xb8\xaa\xd6\xaf\x49\x70\x55\x53\xfa\x05\x17\xa7\xe8\xa5\x2d\x33\xbb\x37\xff\x4a\x55\xcc\x39\xd5\x3c\xb8\xa6\x1c\x28\x99\xe3\xa1\xb4\xfe\x02\x49\x04\xe8\xa2\x27\xa0\x0d\x27\x39\x91\xaf\x6a\x1f\xa3\xb8\x26\x37\xf9\x02\xb5\x3c\x85\xce\x6c\xe6\x93\x3c\x83\xb7\x8d\x48\x08\xdd\x49\x00\xcb\xdd\xb6\x28\x9f\xa7\x6a\x16\xf6\xfb\x8d\x3c\x02\xe2\xed\xb2\xb4\x9e\x9c\x46\x13\x04\x33\x9c\x92\xd3\xa4\xd8\x18\x5e\x16\x07\x04\x70\x86\xb4\x57\x64\xdc\x45\xdd\x83\x04\x57\xb1\xe5\xaa\x77\xcd\x31\x52\x52\x60\x15\x0c\x1f\xa6\xdc\x2c\xaa\x70\x5f\x99\x85\xe9\xc9\xb0\xe4\x11\xb5\xa0\xa1\x70\x32\xf4\x72\x43\x9e\xe9\xf9\x54\xc9\x63\x8b\x96\x61\xeb\x56\x38\xa9\xf8\x7b\x72\xd3\x77\x35\x76\xab\x9c\x85\xb2\xd4\xc9\xeb\x8e\x56\x6e\x8e\xdd\xf0\x2f\x32\x79\xfb\x6c\x6c\x88\x05\x26\xd6\x19\x2b\xb5\x78\x53\x79\x98\x38\x69\x3a\x32\xd1\xf3\x33\xf8\x28\xc8\x20\x43\xae\xf3\xc4\x3d\x37\x15\x79\xc1\xae\x65\x1f\x28\x3a\xe9\x0c\x3a\x0d\xbb\x86\x33\x94\xc4\xd2\x51\xd8\xef\xa0\x5a\xdb\x6f\x80\x25\xeb\x92\xe5\x58\xbc\x4b\x2b\xf3\x63\xb0\x78\xb4\x9f\x87\xef\x25\xea\x6b\x59\x06\xb2\xd2\x80\xa9\x65\xae\x66\x74\x10\x16\xc8\x49\x7e\xdb\xe8\x76\xa4\x21\x44\x43\x24\xcf\x0b\x72\x57\xd9\x86\x44\xcc\x81\x12\xba\xed\x78\x77\xb3\xd1\xee\xd8\x9d\xc4\xca\x52\x5d\xdf\x3a\xc2\x1a\x8f\xad\x56\x3d\xcc\xda\x31\x16\xe1\x3d\xdc\x1a\x02\x53\x0d\x31\xc7\x12\xbb\xd0\xa4\xf0\x85\x73\xff\x2a\x13\x46\x2f\xf7\xa1\x22\x01\x84\x65\x15\x8f\x5a\xc2\xb1\x92\x00\xb4\xc2\xbc\x4c\xa9\x41\xdf\x9b\xd9\x70\x58\x36\x66\xbe\x21\x1f\x2d\x36\xd6\x9f\xa6\x21\xb0\x0c\x79\xb0\x69\x5a\xfe\xea\x19\xfb\x9c\x11\x84\x29\x70\x3d\x8e\x70\x65\x17\x22\xca\x8a\x98\xff\xd0\xdc\xe5\xbd\xc0\x9c\xcf\x00\xaf\xda\x73\x86\x94\x4d\x97\xa2\x96\x9c\xaf\x3a\xa1\x05\x65\x42\x51\xc6\xc0\xb1\x1e\x1d\x1a\x09\xa6\xb0\x51\x21\x58\xc8\x83\x8d\x2f\x11\xd2\x09\xbe\x36\x50\xd2\x39\xd6\x14\x7f\xef\xcd\x77\x62\x87\x25\xb9\xc9\x04\x2e\x4e\x06\x89\x3e\x26\x80\x72\x90\xd3\x7c\xf1\xac\x66\x11\x33\x14\x45\x19\xc2\xc3\x21\x1e\xe4\xd1\x05\x1e\x5f\xa3\x00\x85\x38\xcb\xd3\x19\x3c\x7b\x20\xa7\xbf\x4c\xe2\x01\xae\x14\x65\xb4\x22\x85\x2a\x89\x1e\x00\xa5\x22\x20\x37\x94\x58\x5c\x73\x41\x06\xe1\x9e\x76\x06\xb4\xc1\xc9\x51\x24\x13\x72\xa8\x25\x1c\xa5\xcb\x08\xbd\xa4\xda\x7c\xaa\xe7\x45\x17\xa2\xfb\x1d\xcb\xf8\x9a\x07\xa2\x72\x30\x68\xde\x5a\x99\x27\xc0\x2f\xc0\x59\xa5\x11\xe2\x4c\x76\x47\x9a\x07\xeb\xe2\x21\xe5\x5d\x8b\x47\x4a\x7e\xd7\xf6\x1b\xab\xcd\x46\x35\x31\x3f\x63\x1a\x1f\x25\xfe\x7d\xc0\x26\xed\xb9\x08\x9c\x14\xc5\x39\x4e\x87\x92\xb5\x30\x72\xae\x0a\xce\x5f\x59\xd7\x39\xd5\xd2\xed\x96\xc5\x47\x0c\xd0\x08\x8f\xa7\x38\x25\xe2\x4f\x85\x45\xb0\xc3\x70\x63\xbe\xc1\x3a\xca\xdf\xe0\x1e\x8f\xca\x4c\xba\x53\x05\xed\xea\xca\x67\xda\xab\x5d\xe8\x52\xcd\x26\x6c\xb9\xf5\x73\x72\x55\xc5\x78\x10\x40\xbb\xee\xf7\x8c\x75\x61\x0f\x80\x8b\xd4\xf3\x22\x5b\x89\x70\x58\x54\xb3\x88\x15\x19\x2e\x55\x0a\x5f\xfc\xd8\x68\xa5\x27\xc2\x92\x77\xf7\x37\x7b\xf7\x4f\x4f\x44\x84\xe6\x41\x29\x48\x0b\x8c\xae\xfe\x16\x34\xb5\x3b\x09\x06\x95\xe8\x6a\x12\x0c\xee\x42\x5b\xa2\xfa\x9d\xe8\xeb\x0b\xb6\xab\x90\x24\xfa\xea\x7d\x06\xb4\xc8\x3c\x50\x22\xa3\x8d\xd0\xba\x8b\x11\x5b\xe9\xf1\x57\x68\x92\xe6\xf8\x30\x10\x6c\xc0\x89\x81\xfd\x28\xbc\x18\x78\xa6\x16\x08\xe9\xbb\x1f\xe4\x23\x1a\xd6\xf7\x09\x7f\xcf\x86\xf9\x75\x11\xe9\xf7\xe6\xcc\x6b\xb7\xbe\xd7\xf0\xbe\x0c\x99\x1a\x0f\x47\xbc\x74\xef\xf1\x7e\x39\xe4\x45\xe3\xfe\x0a\x0c\xe5\xf8\xbf\xae\xa0\xbf\xe2\x3b\x04\xff\xb5\x05\xd0\x35\xaf\x28\x78\xd4\xd8\x62\xca\x24\x02\x90\xa2\xc1\x4a\xef\x4b\xc2\xd3\x28\xb5\x25\x17\x18\x57\x18\xd9\x4e\xab\x9a\x89\x16\x2b\xcb\x8d\xb4\xc4\xe3\xed\xcc\xb4\x58\xf5\xbf\xce\x4e\xab\x2a\x02\xf7\xc5\x29\xfb\xd0\x9e\xdd\x54\x8b\xe2\xf2\x0f\xb0\x25\x36\xca\x4f\x82\xa9\x10\x0e\x27\xc1\x74\xf1\xd8\x0b\x16\x17\x71\x13\x84\xcb\x2a\x93\x8e\xf9\x6d\x0d\x96\xd1\xf2\x06\x6a\xba\x6d\x96\xaf\x73\xec\x5b\x8c\x96\xe9\x9f\xcb\x74\x99\xfe\x39\x0d\x98\x39\xe0\x46\x01\xb8\x16\xa1\x65\xe4\x2f\x59\x6c\xa2\xf9\x97\x2a\x96\xd1\x1c\x70\x53\x03\xdc\x70\x02\x6e\x58\x01\xdb\x21\xe7\x69\x34\x1d\xc3\xd5\x4b\x8d\x0e\xcb\x9b\x37\xe0\x37\xf1\x95\x3e\x37\xc8\xf3\x3a\x79\x04\x14\x6c\x50\xc4\x54\xfc\x4e\xa7\xa2\xf6\x3b\x7a\x43\x5a\xff\xf1\x47\x04\xd8\xfc\x8e\x5e\xa0\xfa\xca\x5a\x5b\x9a\xa1\xa5\xd7\xe8\xf7\x92\x70\x17\xd2\xdc\x53\x5b\xf0\x49\x30\x05\x9b\xd9\xcd\xbc\x56\xe3\x08\x43\xa7\x3b\xe8\x05\xaa\x35\xd1\x4b\xf4\xfb\x12\xeb\x69\x73\x68\xf5\x76\x32\xe2\x33\x98\x8a\x8b\x30\xe4\xe9\xbe\x4d\x6a\x64\x1f\x08\x4a\x68\x03\x49\xe8\x74\x0c\x67\x12\x88\xad\x57\x14\xb7\x1b\x07\x8f\xa2\x31\x46\x35\xb9\x9f\x2c\x5c\x80\x2b\xd6\x88\x75\x58\xe4\x66\x16\xef\x33\xe3\xac\x32\xd4\x3b\xd8\xc9\x2b\x3c\xf9\xf6\x76\x96\x82\xd5\x2e\xc4\xe8\xbf\x6b\x53\x4b\xb6\x43\x50\xbb\x1e\x79\x2b\xa9\x6e\x6e\x29\x6a\x2d\xb8\x39\x88\x7a\xc2\x50\x5e\xbc\x11\x86\xf2\xf3\xf9\xbe\x51\x22\xc5\x17\x38\xcd\xf0\xbe\x54\xb0\x78\x65\x8b\x6b\xf6\x43\xf1\xd9\x49\xdd\xa5\x40\x6d\x5b\x00\xff\xd3\xf9\x0f\x61\x3f\x64\x85\xb2\x0e\x96\x72\x1a\xb5\xe1\x53\xbe\xb0\x99\x6d\xfe\xef\x4b\x67\x68\x03\xfd\x5e\x2d\x56\xa7\x85\xa5\xec\x9d\xc7\x49\x8a\xbf\x19\x57\x91\x40\xee\xc5\x21\xf8\x39\x17\xd3\x1d\x91\x37\x07\xc3\x79\x3c\x43\x6a\x87\xc2\xf8\x61\x63\x03\xbd\xf4\xe7\xf0\x24\x99\xc2\xe4\xda\xb7\x62\xc4\x56\x91\x20\x15\x69\x2f\x33\xfc\x21\x49\xa6\xc5\x92\xf0\x74\x1c\x3c\x69\x46\x15\x91\x43\xbb\xf1\x0c\xa6\x5d\xf4\x7c\xf3\x6d\x6f\x6b\x7b\xe7\xdd\xee\xde\x7f\xbd\xff\xb0\xff\xf1\xe0\xf0\x7f\x1f\x1d\x9f\x7c\xfa\xf9\x97\x5f\xff\xfd\x7f\x82\xfe\x20\xc4\xc3\xf3\x51\xf4\xfb\x97\xf1\x24\x4e\xa6\xff\x9d\x66\xf9\xec\xe2\xf2\xea\xfa\x8f\xba\xdf\x68\xb6\xda\x9d\xb5\xf5\x57\xcb\xab\x1b\x2c\xc2\xad\x38\xda\x89\x45\xbb\x30\xaa\xc5\x10\x3b\xbc\x52\x0a\xcb\x0d\xc5\xc2\xd4\x26\x0a\x69\xed\xd8\xdc\x54\xc8\x4c\x47\x8e\xfd\x86\x39\x76\x65\x44\x48\x92\x96\x47\x41\x4d\xb2\x03\x0b\x7a\x89\xfc\xa5\x33\xf0\x5e\x29\x04\xa6\x86\x49\x5c\x1c\x68\xa3\x0a\xd0\xa5\x33\xbe\xc1\xcb\x62\x98\x05\x2a\x15\x88\x62\x25\x72\xcf\x57\x22\xcc\x00\xfa\x5f\x69\x8b\xb2\x6f\x4d\x5c\x1e\xbc\x07\xb1\x21\x5e\x5e\x56\x3e\x08\xb2\x15\x3f\x18\x45\x1a\xb1\x25\xad\x61\x11\x6e\x8a\xdc\x3d\xfa\x21\x5f\xda\x23\x5e\x3b\x33\xfb\xb4\x1f\x8f\xfe\x8f\x47\x7f\x71\xf4\xff\x74\xb2\xf3\xd2\xef\xa0\xb7\xdb\x95\x1d\xb4\xfc\xce\xdb\x6d\xd9\x47\xcb\xef\xa8\x4f\xf0\xf5\xf6\x4e\x5b\x14\x99\xbf\xd6\x71\xab\x22\x0e\xf7\xe8\xbc\xe5\x77\x9c\xde\x5b\x7e\xe7\x1f\xa0\x11\xa8\x7e\x58\x87\xc1\xb8\xcb\x59\xdd\xee\xef\x0f\x96\x51\x49\x88\x0f\x93\x28\xce\x5d\x4e\xc6\x7e\xc7\xe1\x64\x6c\x3d\x4c\x17\x98\xba\xbd\x8c\x45\x93\x55\x5d\x8d\x25\xa0\x77\x38\x41\xe9\x44\x7c\x27\x67\x35\xa0\xcd\x45\xd7\xc6\x77\x7d\x8c\xa2\xab\x4a\xb8\xac\xf1\xc5\xb7\x90\xcf\x1a\x54\x5a\xcc\xd7\x98\xd7\x12\xf2\x2d\x7f\xf1\xd0\x9e\xc6\x6a\xc3\xd5\x1c\x8d\x7d\x90\x7d\x04\x86\xaa\x9b\x31\x11\x81\x8a\xc5\xd2\x20\x8b\x45\x0b\xc2\xe6\xa6\x70\x97\x94\xa3\x8d\xce\x8b\xea\xa1\x30\x18\x59\x7e\xa8\xb0\x87\x49\xfb\xd4\x87\x3b\xef\x53\x1f\xbe\x83\x7d\xaa\x0a\x0e\xf7\xbd\x4f\x59\x97\xd3\x87\xed\xc7\x6d\x4a\xfc\xdd\xdb\x36\x95\x5d\x06\xd3\xed\x38\x8c\x82\xb8\xb6\xe8\x8e\x65\x3b\x92\x7f\xff\x5b\xd6\x87\x87\xd9\xb2\xaa\x2c\x93\xef\x7f\xcb\xfa\xb0\xad\x6d\x5a\x8f\x3b\x96\xb1\x63\x49\x2b\x66\xa1\xcd\xeb\x9b\xee\x5e\x62\x5e\x24\x6c\x09\x20\xa5\x8f\x3c\x1a\x3e\x7c\x61\x77\x27\x74\x71\xd7\xeb\xe4\xff\xe1\x62\x85\x7e\x24\xdd\x67\x5f\xe9\xb7\x62\xf9\xcf\x53\x17\x00\x61\xb9\xb5\x05\x9d\x3b\x69\x0b\x58\x8e\xda\x6f\xa9\x34\xf0\x90\xf4\x2a\x1b\x05\xbe\xf6\x6a\x34\x09\x06\x0f\xa8\x5a\xf0\x10\x6f\x16\x7e\x41\x6b\xff\x04\x75\x83\x91\x2f\xf6\x16\xaa\x08\xc5\x88\x45\xfa\xb2\xbf\xd5\x86\x9a\x60\x72\xb3\xbf\xd5\xb6\xc9\x78\x60\xe2\xfc\x05\x5f\xd3\x2c\xd8\xd4\x0e\x56\xf4\x15\x9c\x7f\x83\x38\xe7\x49\xbc\x93\x74\x42\x6d\xb4\xb7\x7f\x3e\xfc\x0c\x9b\xee\x49\xf2\x1e\x17\xc2\x20\xba\xbc\xbc\x5c\x49\xa6\x38\xce\xb2\xf1\x4a\x92\x9e\xaf\x86\xc9\x20\x5b\x85\x24\xdc\xc9\xaa\x56\x67\x94\x4f\xc6\x16\x45\xc8\xf6\xc5\xf4\xfd\xd6\x4e\x81\xb6\x78\xae\x18\x0c\x61\xbe\x0f\x88\xb6\xc7\x19\xde\x2f\x2c\xe5\x39\xec\x51\x64\x60\x32\xf2\x10\xc5\xdc\xed\x45\x0a\xf7\x5c\xb8\xba\xb4\x50\xcd\x6f\xac\x2b\x9e\x2e\x06\x7c\x87\x91\x9a\x1c\x16\x43\x4f\x90\xb2\xbf\xd5\x9e\x87\x6d\x94\x33\x5b\x64\x3d\x48\xb5\xf4\x21\x4f\xd0\x94\x5a\x9d\xca\xde\x39\x8e\x1d\xce\xf0\x8b\xd1\x76\x07\x36\x3c\x5d\xe4\x37\xd6\xc1\x84\x54\xf9\x4a\x3b\x07\x98\x6b\x5f\x0a\x7c\x94\xb6\x6f\x6e\xed\x76\xe3\x20\xda\x87\xf6\xc3\xc1\x52\xa3\xf7\x60\x66\xfd\x25\x1c\x1a\xde\x37\x94\xe6\xe7\xa4\x68\x9a\x5f\xf1\xcf\x62\xae\xd6\xb5\x7c\x7e\xb7\x05\xe3\xa9\xd3\x58\xaf\xd7\x75\xc0\x0b\x7a\x07\xcd\xf5\xfb\xa9\x26\xef\x6e\x41\x0a\x7f\x42\x23\x84\x2a\x20\x11\x76\x00\x19\x58\xc9\xa2\xbd\x8d\x95\x3e\xaf\x4b\x63\x01\xd8\x00\x95\x54\xce\x82\x71\x8e\x36\xe1\x9f\xc5\xc5\x62\xa0\x2e\x4a\xde\xf7\x41\x5e\x98\x6c\x1e\x5f\xc2\xe1\x0a\x75\x8b\xc0\x35\xde\x19\x0f\xf0\x2b\xc9\x5b\x03\xc5\x95\xfc\x8e\x6a\xcd\x85\x04\x5e\x75\x8a\x2d\xe2\x2d\x59\xe9\x8c\x7b\x98\xb5\x85\x97\x1a\x21\x0f\x66\xa2\x5c\xac\x0e\x2b\x2c\x97\x5b\x18\x84\x16\xa0\x43\xfc\x1e\xc6\xc6\x96\x12\x6d\x91\x33\x72\x01\x4c\xf8\x04\x8b\x37\xce\xe3\x32\xdf\x63\x68\x8f\xd8\x93\xa5\x9c\xc4\xc4\x69\xd1\xe2\x85\x05\xcb\x77\x6c\x63\x22\xe0\xd5\x8f\xcc\x98\x45\xc3\x95\x1b\xb4\xbc\xe1\xf8\x58\x8f\x02\x44\x8c\x03\xcf\x01\xe7\x05\xb3\xea\xb2\x44\xcb\xce\xbf\x56\x46\x72\x30\x86\xc2\x09\x84\x41\xe1\xc4\x26\x19\x05\x1b\xf4\xaa\x36\x2f\xfc\xe9\xcc\x12\x84\x26\xc4\xc0\x99\x9f\x95\x83\x92\x4f\x0f\x4a\xd2\x40\x97\xa6\xfd\xd1\xb0\x17\xc8\x3a\x47\xc1\x86\xb1\x65\xa8\xcc\x77\x12\x59\xb1\x98\x31\xd6\x36\xb4\x51\x96\x6a\x49\x3a\x1a\x4e\x7f\x96\x68\x17\x22\xc0\x1c\xaf\x57\xd5\xe6\xba\x12\x0f\x96\xfd\x8e\x6f\xc5\x7b\x17\xe4\xbb\xf7\xe8\x7d\x6b\xf1\x2b\x93\x7a\x53\x9d\x9b\x4b\x95\x14\xed\x86\xf4\x5e\xe5\xee\xc5\x07\xa4\x70\x75\xb1\x69\xd3\xfd\xda\xc5\xd9\x17\xab\xe6\x21\x87\xd8\x70\x17\x30\xa5\x62\x83\x50\x21\x17\xb2\xbe\x6b\xcf\x31\x5d\x58\xd8\xb0\xab\x12\x0b\x38\xae\x94\xef\x77\x37\xaf\x4b\x8e\xef\x14\x9a\xfd\xec\xee\xf1\xc3\x67\xb7\xbd\xee\xf1\x23\x69\x77\x6d\x8d\x9c\xe9\xd7\xfe\xd6\x67\xfa\x41\x34\x1d\xe1\xf4\xe5\x03\x9b\x08\xc0\xe9\x5d\x6e\xea\xaf\x39\xc4\x9b\x99\x3b\xef\xe5\x34\xdf\x83\x8e\x1d\x12\x8e\x93\x89\x43\xbb\xfc\xd2\x6d\x42\x20\xde\x6b\x99\x30\x94\x1a\xe4\x0c\x17\xe4\x50\x89\xfe\xe4\x8c\x98\x55\xdc\x81\x97\x39\x8b\xaa\x40\x8b\x2c\x90\x4e\x83\x9c\x6e\xe8\xdc\xe4\xf8\x2a\x27\xa7\xc8\x80\x3d\xa3\x29\xed\x13\xf3\xcd\xe2\xa9\x36\x82\x10\x0f\xa2\x49\x30\x1e\x5f\xb3\x34\xa0\x61\xe5\x9b\x1b\x79\x54\x6e\x58\x2b\x6c\xe0\x4e\x04\x1a\x6a\xb3\x8b\x27\xe3\xb8\x0d\x7e\x0f\x9a\x9e\xa3\x98\x12\xe9\x56\x47\xee\xfc\x62\x17\x3b\x4a\x4d\x87\xa3\x96\x5c\x66\xa5\x98\xdd\x22\x81\xc4\x2e\xbe\xba\x65\x26\x08\xcb\xf0\x4a\xe4\x23\xdf\x37\x2c\x38\x9d\xda\xcd\x43\x14\x4f\x67\xf9\x5d\xe6\x94\x93\x87\x4a\x74\xb7\xa0\xb3\xfb\x22\x8e\x81\xc6\x28\x2c\xf4\x71\xeb\xa4\x12\x30\x5a\xf6\x10\x36\xc5\xe4\x6c\xa0\xa2\x0d\x5a\xe1\xb5\x95\x7a\x7a\x0a\xf5\x70\x8d\x40\x01\xa8\x2b\x03\xbd\xb1\xeb\xe6\xdd\x3b\x6d\xd1\x5d\x6d\xb7\x95\x36\x88\x6e\xbb\xe1\x69\xca\xf3\xf5\x47\x53\xbb\x7f\xba\xee\xdb\xb5\x3b\x1a\x91\xcc\xcb\x34\xe1\xe6\x21\x05\x1c\x80\x85\xc6\xd5\x9a\x88\x8a\x94\xd8\x90\x1d\x55\xef\x27\x21\x3d\xb8\xbc\xce\xe5\x78\x95\x95\xc4\x15\x55\x51\x44\x56\x07\xe7\x65\x3c\x48\x71\x7e\x4f\x4a\x25\x22\xff\xee\xda\x03\x07\x41\x2f\x19\x9b\xb0\x79\x22\x53\x47\xdf\xaa\x1a\x43\xd9\x39\xd8\x11\x20\xd8\xaa\x33\x12\xfa\x22\xea\xa3\x20\x1e\x75\x0f\xf7\x12\x6f\xb7\xfb\x8c\x2f\x0b\x07\xa6\x39\xe1\x65\xe9\xa1\x4a\x8a\x2e\xab\x8f\x93\xdd\x10\xbf\x44\x31\x45\x3b\xfa\x56\x8a\x8b\xc9\xba\x5e\x16\x19\x53\xab\xc4\xf5\x05\x3a\x2c\x7b\x94\xcc\xcd\xf1\x38\xb9\x44\x41\xda\x8f\xf2\x34\x48\xaf\x11\x53\x2f\x7d\xc1\xd7\x96\xb8\x83\x5f\x64\x8d\xc4\x4f\xd6\x86\x4b\x06\x4a\x57\xb7\x54\x1b\xad\x39\xce\x90\x04\xa5\x12\x37\x48\x88\xff\x06\xba\x8d\x24\x45\x51\x1c\xe3\x14\xa2\xcf\x26\xb3\x1c\x04\x08\x3d\x0a\x1f\xc4\x4c\xa4\x3a\x46\x4a\x86\xec\x81\xb6\x62\x04\xa4\xe3\x1a\x3f\xb9\x46\x64\xa9\xb1\x08\x09\x24\x92\x56\x32\x29\xd3\x47\x46\x52\xc1\x48\x2a\x68\x34\xf6\xeb\xc1\x11\xcc\x27\xbd\x06\x9c\x06\x21\x1a\x24\x71\x96\x07\xb1\xde\xbc\x35\x89\x94\x3a\xc7\x6e\xc5\x9a\xc0\xfb\x34\x3a\x43\xbf\x6d\xa0\xfa\x55\x7b\x40\xff\x67\x73\x87\x31\x0a\x37\x3b\xf4\x7f\xe5\x9a\xb1\x44\xd3\x89\x45\xda\xb3\x8d\x22\xff\x82\x38\x64\xb0\x03\x3d\x44\x14\x32\xc1\xc4\xef\x25\x12\x59\x49\xbe\x32\x1b\x33\xb6\x0c\x24\x74\xda\xc6\xc7\x1d\x7a\x52\x55\x5f\x5c\x2c\x98\xdb\x45\x20\x83\x61\xfe\x6e\xe2\x8f\xed\x6f\xf6\x58\xf4\x31\xc0\x2b\x82\x25\x56\x1a\x09\x65\xc1\x29\xaf\x12\x88\xcc\x28\x7d\xff\xc1\xc8\x64\x92\xe0\xad\xcc\x0d\x3e\xf6\x50\xd1\xc3\x60\xa8\xff\xa7\x47\x0f\x9b\x23\xa6\x2e\x22\x22\x12\x1e\x5a\xd0\xd0\xdc\x08\x62\xee\x1a\x73\xa3\x88\xb9\xab\x3e\x50\x24\xb1\xbb\x73\xbb\x1e\x55\x4f\xc3\x78\x5b\xf6\x63\x22\x5d\xec\xda\x83\xa3\x95\x06\x1c\x2b\xe5\x98\xf2\x58\x69\x40\x0b\x09\x85\x4b\x1a\xfc\x92\x49\xa0\xb2\xe4\x0c\x39\x36\x09\x06\xf6\x4b\x22\x71\xf0\x77\x18\xc1\xbd\xfa\x5b\x2b\xcc\xaf\x3a\xad\x97\x96\xd7\xe3\xa8\xff\x92\xa0\x12\x82\x6d\x6b\xa6\x7d\xc5\xf1\xe0\x25\xd8\x34\x5a\xde\x53\x37\x4b\xed\xc3\x24\x6c\xcf\x37\xbe\xcb\x46\x41\xa3\xad\x83\x24\x2f\x1b\x3a\xb8\x6c\x14\xb4\xfd\x86\xf9\xb2\xb9\x6e\x29\xd9\xd4\x5e\xa5\xd1\x14\x4f\x42\xbf\x53\xb7\xda\xfe\x29\xaf\xa6\xfd\x2f\xe1\x50\x6f\x07\x5f\x4c\xbf\x84\xc3\xb2\x7b\x07\xb5\xeb\x49\x88\x5f\x0e\x86\x7d\xeb\xeb\x3c\x75\xbc\x7e\x79\x3e\x0e\xc2\x49\x10\xdb\x3e\x27\x76\x60\x78\xa0\xbf\x9e\x06\xe1\xcb\x20\xce\xa2\xab\x57\x0d\x7d\x10\xc8\xa7\x28\x4b\xfc\xba\xdf\xd0\x47\x9c\x7d\x7a\xb5\xf6\x6a\x4d\x9f\x21\xf2\xe9\x0f\x9c\x26\xcc\xf5\xda\xf2\x35\x76\x7c\xa3\x3a\xb2\x97\x23\x7c\xa5\x7d\x08\xb0\x4e\x5c\x34\xee\x46\x68\xbc\x4f\x07\xfa\xe4\xa6\x41\xbf\x1f\xe5\xd6\x97\x2f\xc7\xf8\x3c\x18\x5c\x3f\xf4\x1d\x90\x58\x3d\xf0\xa4\x2f\x1a\x78\x59\xac\x15\xf1\xc8\x96\x08\x3c\x93\x95\xa1\x99\x85\xb2\x75\x20\x7e\x37\x5a\xe2\x37\xa1\x7a\xfe\x9b\x10\xbb\xf8\x4d\x7f\x15\xa4\x5d\xd8\x97\xc2\x2f\x46\xc8\x14\x03\x4a\xbf\xc6\x1d\x16\x45\x87\x53\xab\xf4\x94\xa7\xea\x93\xa0\xcd\xe2\x6d\xa2\xd4\x20\x94\x48\x9b\x95\x09\x50\xbc\x11\x74\x27\xbf\xa1\xe4\x26\xde\xc8\x54\x26\x5e\xc6\xea\x2b\x89\xa6\xe0\x99\x90\x12\xfc\x28\x28\x88\x8e\xca\x80\x0d\x14\xa3\x17\xe9\x37\x27\x93\x45\x15\x91\x8a\x02\x52\xe6\xb5\x8b\x2b\x26\xdd\xa1\xd8\x58\x97\xba\x6d\xdf\x2b\xd7\x26\x7b\x2a\x5d\x75\xdb\x2d\x4f\x21\xbc\x6e\xbb\xed\x15\x13\xdf\x6d\x77\x3c\x75\xf4\xba\xed\x35\xfd\x46\x58\x27\xe5\x6e\xa7\xee\x31\x6a\xed\x76\x00\x1f\x41\x29\xdd\x4e\xc3\x93\x69\xa5\xdb\x69\x79\x36\x6a\xe9\x76\x9a\x9e\x4c\x21\xdd\x4e\xdb\x93\xe9\xa7\xdb\x01\xbc\x14\x9a\xe9\x76\xd6\x3c\x9d\x6a\xba\x9d\x75\x4f\xa7\x9b\x6e\xe7\x95\x67\x10\x49\x77\xad\xee\x59\xc8\xa9\xbb\x06\xf8\xb3\x25\xd1\x5d\x03\xec\x19\x69\x74\xd7\x5a\x9e\x41\x1c\xdd\x35\x40\x9c\x90\x51\x77\x0d\x70\x2e\xd6\x59\x77\xad\x23\x5f\xa0\x7b\xc5\x92\xed\xae\xf1\xab\x75\xb2\x98\xbb\x6b\xaf\x3c\xbe\x54\xbb\xeb\x75\xaf\x58\xc2\xdd\x75\xdf\x2b\x16\x77\x77\x1d\xd0\x29\x28\xb8\xbb\x0e\x8d\x0b\x46\xd3\x5d\x6f\xdd\x9c\x79\x9d\xfa\xe3\xe5\xc1\x5f\x7f\x79\xd0\x1b\xe1\xc1\x17\xd2\x29\x58\x29\xd4\x0d\x88\xa6\x39\xcb\x66\x53\x32\x30\x98\xc5\xa7\x96\xfa\x0d\x72\x3c\x0d\x69\x8e\x7e\xd8\x40\xcf\x39\xe4\xe7\x16\x8b\x10\xe1\xa4\x71\x8f\xd7\x15\xa5\xe6\xf8\xa2\x9d\x23\x3c\xc4\x29\x86\x83\x5e\x1a\x9d\xc3\x99\x2c\x8a\xa3\xbc\x00\x93\xcd\xa6\x38\x05\xd5\xf5\x86\x96\x9e\x43\x82\xb2\x39\x3b\x9f\xe0\x38\xd7\x0a\xa0\x3c\x41\xa3\x20\x0e\xc7\x58\x19\x37\x19\x76\xdf\x0a\x59\xb1\xa9\x81\xaa\xa6\x3b\xa0\xa4\xfb\xa6\xb1\xe4\xa9\x09\x54\x14\xe7\xeb\x92\x86\x7e\x28\xd7\x17\x8a\x09\x75\x76\xcc\x63\x7e\x51\x83\x2a\xe1\x3f\x11\xa8\xf0\x42\xc6\x46\x39\x44\x58\x11\x4b\x68\xfa\x2f\x80\x74\x11\xe1\x4b\x17\x8a\xce\xe6\x25\x84\xf7\x38\x0a\xe8\xeb\x57\xb5\x3c\x27\x38\xc0\x12\x74\xc6\xbc\xfa\x0f\x64\xcd\x09\xdb\x11\x58\x74\x76\xe0\x46\xd5\x25\xa3\x15\x27\x56\x7e\xc7\x8e\x96\xbb\xa5\xc5\x6a\xec\xc5\x79\xb3\xb1\x68\x13\x8b\xd5\xd8\x19\x27\xc1\x6d\xaa\x74\x5a\xf0\xbe\x28\x7f\x4b\x52\x5a\xa1\x14\xec\x21\xf9\xd5\x75\x8e\x0f\x20\x39\x90\xf1\xda\x96\x77\x59\xa1\xbf\x5d\xba\xe8\x8a\xb6\xaa\xac\x88\xa2\xf4\x62\x2a\x84\x02\xda\x5b\x81\x1b\xda\xb0\xe3\x6c\xd1\x2c\x6c\x5f\xb1\xec\xab\xd7\xb9\xcd\xf8\x79\x21\x77\x41\x1b\x2a\x8b\xe4\xd3\x2e\xea\x9f\x46\x67\xb7\x4a\x9e\x5d\x98\x73\x47\x7f\x60\xaa\xaa\x2d\x1c\x47\xd5\xa2\x82\xb1\x16\xa9\x2d\x3c\xc4\xdc\x08\x6d\x1d\x51\xe6\xdb\x9a\xf5\x8c\x8c\x26\x79\x4d\xe0\xa1\x98\x48\x7d\x32\x33\x37\xdb\x0d\xa6\xd3\xf1\x35\x6b\x38\x48\xcf\x67\x84\x85\x67\x65\xfe\x8a\x8c\x5f\xaf\x4c\xd3\x24\x4f\x08\x8e\x32\xe7\x2e\x33\x9c\xd0\x77\x1f\xbb\x82\xa5\xe3\x3f\xca\x3a\x7f\x8d\xac\x03\x01\xa3\xff\x82\xb8\x44\xd6\x9c\x4a\x15\x4c\x24\x60\x8b\xa5\xf7\x78\x28\x2f\x74\xeb\xa4\xca\x09\x63\x16\x52\x49\xaa\xba\xd4\x6e\xfe\x6c\x92\x9e\x8b\xaf\x74\x5a\x76\x2e\x72\x42\xd8\xc4\x06\x1d\xbe\x95\xa0\x9f\xd1\x1f\x59\x14\xb3\x60\xac\x84\x65\xd4\xaf\xfc\x3a\xfb\x5b\x42\x5f\xd5\x34\xbe\x6c\x79\xd5\x96\xac\x16\xea\xfb\x5b\x6d\xcd\x9a\xc2\x66\x00\xa2\x7b\x4d\xa2\x0d\x36\xaa\x16\x03\x10\x9e\xf6\xa6\xf4\x76\xac\xd0\x04\xdb\x73\x15\x9f\x9a\x9c\xb4\x7e\xd5\x59\x6b\xb5\x1b\xcd\xba\xef\xa1\xfa\x15\x1e\x0e\xc2\xa0\xbf\xfe\xca\x92\x57\xb1\x7e\xf5\x6a\xbd\x1f\x84\x83\x21\xf6\x60\x60\x9a\x8d\x76\x6b\xad\xa3\x96\x3b\x73\xde\x88\x69\x69\xf4\xe4\x5e\xec\x8b\x4c\x7a\xb6\xbd\xeb\x32\x98\x22\x0c\xee\xd5\xf3\xf7\x10\xbf\xe3\xde\x31\xdc\xd7\xd7\x7c\x36\x28\x12\x9f\x09\x3c\x9e\x5e\x10\x45\x8e\x08\xbc\xfb\x9f\xa5\xd2\xfb\xa7\xfc\xe1\xcc\xe6\x12\x22\x7d\x26\x04\x67\x16\x20\x7f\xb5\x5a\x4d\x82\x49\x3d\xc5\xd1\x57\x24\xbf\x84\xbd\xae\xb5\xa4\xf9\x88\xa3\xaf\x15\x01\x36\x5a\x4b\x16\x80\x10\xca\x58\x71\x49\x37\xc1\xdd\xcd\x38\x64\x57\xb9\xa1\xb0\x5f\xf7\x2b\x43\x5a\x47\xd2\x98\xa2\x65\x54\xd7\xc5\x07\xa5\xb4\xaf\x95\xf6\x4b\x4b\x37\xb4\xd2\x8d\xd2\xd2\x4d\xad\x74\xb3\xb4\x74\x4b\x2b\xdd\x2a\x2d\xdd\xd6\x4a\xb7\x4b\x4b\x77\xb4\xd2\x9d\xd2\xd2\x6b\x5a\xe9\xb5\xd2\xd2\xeb\x5a\xe9\xf5\xd2\xd2\xaf\xb4\xd2\xaf\xca\x67\xa7\xae\xcd\xce\x9c\xc9\xf4\xb5\xe2\xe5\xb3\xe9\x37\xb4\xe2\xe5\xd3\xe9\x37\xb5\xe2\xe5\xf3\xe9\xb7\xb4\xe2\xe5\x13\xea\xb7\xb5\xe2\x6d\x83\x1b\xac\xae\x12\x86\xfc\x25\x8a\xcf\x49\xd5\x28\x18\xf7\x6d\x62\x73\x40\xb6\x81\x53\xeb\x40\xf5\xe1\x93\x75\x50\x06\xf0\xc9\x3a\x00\x21\x7c\x6a\xda\xd0\xe9\x15\x77\xd0\xea\x37\x82\xc4\xce\x4e\x2d\xf0\x50\xdf\x43\x03\x0f\x85\x9e\xb4\x40\x3d\x84\xd6\x3c\xb2\x85\xd6\xcf\x74\xde\x10\xd2\x7a\xa1\x87\x44\xd5\x62\x84\x3c\x84\xfc\x86\x87\x4e\x4e\x7d\xa3\xde\x80\xd6\xa3\x2d\xd1\xaa\xc5\xa2\x25\xf5\xd6\x48\xbd\x86\x51\xaf\x4f\xeb\x09\x24\x03\xa9\x5e\xd3\x43\xa8\x01\xed\x35\x8d\x7a\x65\xfd\x6b\x89\xfe\xb5\x16\xea\x5f\x5b\xf4\xaf\xbd\x50\xff\x3a\xa2\x7f\x9d\x85\xfa\xb7\x26\xfa\xb7\xb6\x50\xff\xd6\x45\xff\xd6\x17\xea\xdf\x2b\xd1\xbf\x57\x0b\xf5\xcf\xaf\x7b\xac\x7f\xbe\x49\x30\x65\x1d\xf4\x7d\x8f\x75\xd0\x37\x29\xa6\xac\x87\x04\x4b\xda\x43\xdf\x24\x99\x52\x12\x6d\x7a\x9c\x44\x4d\x9a\x29\xed\x63\x4b\xf4\xd1\x24\x9a\xd2\x3e\xb6\x45\x1f\x81\x6a\xcc\x4e\xbe\x7b\xe7\xe8\xa4\x87\x50\x9b\x76\xd2\xa4\x9b\x90\x56\xb4\x76\x92\xd0\xdb\x2b\x5a\xd1\x24\x9c\x01\xad\x68\xef\xa4\xef\x21\xd2\xd1\x93\x53\xdf\xa4\x9c\x3e\xad\x68\xed\x24\xe1\x18\x8d\x3a\x54\x34\x49\xa7\xac\x8f\x6d\xd1\xc7\x86\x9d\xd7\xb8\xfa\x48\x68\x8e\xf6\xb1\x61\x67\x36\xce\x3e\xb6\x79\x1f\x1b\x76\x6e\xe3\xea\x63\x4b\xf4\xb1\x61\x67\x37\xae\x3e\xbe\x2a\xfa\x68\xe7\x37\xce\x3e\xb6\x44\x1f\xed\x0c\xc7\xd5\x47\xc2\x18\x59\x1f\xed\x1c\xc7\xd5\xc7\xf5\xa2\x8f\x76\x96\xe3\xa4\xd5\xa6\xc7\xfb\x68\xe7\x39\xae\x3e\x36\x04\xad\x36\xec\x4c\xc7\xd5\xc7\x35\xd1\xc7\xa6\x9d\xe9\xb8\xfa\x48\x96\x3f\xed\x63\xd3\xb7\x2f\xc8\xdd\x5d\x37\xb1\xb6\x00\xd7\xa6\x9d\xeb\xec\xee\xda\x3b\x49\x86\x95\xac\xad\x93\xd3\xa6\x9d\xeb\xec\xee\x96\x2c\xc8\x0e\x54\xb4\x73\x9d\xdd\x5d\x47\x27\x5b\x1e\x6a\x34\xa1\xa2\x49\x3a\x65\x7d\xf4\x8b\x3e\xda\x99\x8e\xab\x8f\xad\xa2\x8f\x76\xa6\xe3\xea\x23\x4c\x24\xed\xa3\x9d\xe9\x38\xfb\x58\x17\x7d\xb4\x33\x1d\x67\x1f\x9b\x1e\xeb\x63\xcb\xce\x74\x5c\x7d\xac\x8b\x3e\xb6\xec\x4c\xc7\xd5\xc7\xa6\xe8\x63\xcb\xce\x74\x5c\x7d\x24\xac\x9c\xf6\xb1\x65\x67\x3a\xae\x3e\xbe\x12\xf3\xd8\xb2\x33\x1d\x57\x1f\xc9\xf2\x60\x7d\xb4\x33\x1d\x27\xad\xb6\x39\xad\xb6\xec\x4c\xc7\xd5\xc7\x46\xd1\xc7\x35\xfb\x82\xdc\xdb\x73\x0b\xaa\x1d\xda\x49\x3b\xd7\xd9\xdb\xb3\x77\x12\x68\x0e\x78\x40\xcb\xce\x75\xf6\xf6\x4a\xc4\x80\x36\x88\x80\x76\xae\xb3\xb7\x67\xef\x24\xe1\x1d\x0d\x18\xd6\xb6\x5d\xd4\x71\xf5\x91\xcc\x07\xed\x63\xdb\xce\x74\x5c\x7d\x6c\x8a\x3e\xb6\xed\x4c\xc7\xd9\xc7\xba\xe8\xa3\x9d\xe9\xb8\xfa\xe8\x17\x7d\xb4\x33\x1d\x57\x1f\xd7\xc5\x3c\xb6\xed\x4c\xc7\xd5\x47\xa0\x39\xda\x47\x3b\xd3\x71\xf5\x11\x44\x72\xda\x47\x3b\xd3\x71\xf6\xb1\xe9\xf1\x3e\xda\x99\x8e\xab\x8f\x2d\xd1\xc7\x8e\x9d\xe9\x38\xfb\xe8\xf3\x3e\x76\xec\x4c\xc7\xd5\xc7\x86\xe8\x63\xc7\xce\x74\x5c\x7d\x7c\x25\xe6\xb1\xd3\x34\x17\x24\x5c\xa3\xe4\x38\x9d\xe0\x30\x0a\x72\xe6\x54\x06\xee\x0a\x6a\x39\x72\xc4\x45\x1b\xa8\x06\xff\x2e\xa3\x40\xd7\xb0\xd2\x32\x3e\x2b\xe3\x93\x32\x7d\x7b\x99\x06\x2b\xd3\x20\x65\x06\xf6\x32\x4d\x56\xa6\x49\xca\x84\x86\x36\x57\x53\x55\xee\x58\x2c\x75\x17\x0c\x68\x0b\x99\xd2\x45\x36\xdd\x20\x0f\x6c\x07\xf3\x20\x0f\x44\x28\x9f\x20\x0f\xdc\xca\xb1\xf8\x6d\x94\x67\x27\x49\x1e\x8c\x05\xcc\x78\x2b\xc8\x03\xea\x41\xf2\x02\xad\x5b\xa0\x43\x9d\x0f\x78\x98\x73\xe8\xc2\xe3\x04\xca\x1b\x9d\x71\xa6\xbc\x12\x68\x9e\x16\x20\x7f\xfa\xe9\x27\xd4\x86\x8b\xb7\xfa\xd5\x7a\xbd\xb8\x6f\x2b\x4a\xfc\x0b\x35\x1b\x06\x71\xa8\x7d\xd9\x45\x1b\x08\xd4\xee\xc3\x71\x92\xa4\x35\xa9\x93\xab\x8a\xee\xdd\xd5\x39\x28\xfb\x01\x6d\x48\x4f\xfa\xc2\x11\xa8\xd7\x6a\xb5\x02\xb7\x65\xd4\x69\xd1\x7c\x69\xaf\x20\x98\x68\x6b\x89\x2a\x6c\xec\xfa\x59\x5e\x95\xe1\x5c\x28\x67\xe5\xb7\xd5\xb5\xb3\x26\x38\xa6\x9a\xd5\xc1\xcd\xd3\xcd\x1a\x5c\x62\x91\xce\xb6\xaa\x74\xf6\x83\xb5\xb3\x1f\x6e\xdb\xd9\x0f\xd6\xce\x7e\xa8\xda\x59\xb3\xb7\xb2\x13\x55\x4d\x74\x9f\x07\x9b\x82\x9c\x7a\x76\xff\x41\x30\x78\xa7\x6e\x0c\xe0\xa3\x68\xf3\xa4\x2a\xcd\x2b\x3f\xc7\x1b\x52\xd1\x79\x5b\xc8\x77\x97\x19\xc6\x3b\xbd\xdf\x16\xba\xf7\x70\x5c\x71\xa1\xb2\xeb\x7f\x81\x09\x5c\x61\xec\x9e\xda\xef\x2e\x76\xd9\x2d\x59\xad\xb6\xab\x5c\x4b\xec\x2e\x7c\x1f\x41\x69\x61\x57\xb9\x8b\xd8\x75\x5e\x42\xcc\xbf\x71\x38\x62\xb9\x81\x61\x0e\x59\x04\x9e\x10\xc6\x54\x2d\x5a\x21\x59\x39\xb8\x21\x94\xb2\x7a\x50\xb0\x82\x53\xa6\xb8\xa1\x83\xc7\xe2\xfa\xdf\xd8\x78\xe1\xf3\x67\x83\x16\x5c\xde\x95\x3c\x82\x06\xf9\x6a\xf7\x70\xa0\xbf\x04\x92\x9a\xea\xeb\xca\x43\x99\x87\xd4\x2b\x34\xe0\x93\x68\x03\x05\x68\x19\xd5\x6a\x7d\xf4\x23\xdd\x1c\x6b\xff\x97\xfc\x0c\x97\x08\x1b\xb8\x42\xcb\x28\x97\xda\x13\x01\x8b\x63\x32\x4d\x19\x5d\xa9\x34\x4e\x79\xb3\x81\x5e\xa2\x6c\x09\xaa\xf5\x35\xa3\x37\x81\x95\x76\xfe\xaf\x86\x15\x6c\xc7\xb5\x01\xfa\x11\xfd\xdf\x87\xc1\x4a\x3b\x04\xcd\xc5\xaa\x8f\x7e\x43\x03\xf4\x1b\x41\xec\xfe\x91\xd1\x04\xc0\xb9\xc8\x10\x44\x6a\x7d\xf4\xf5\x9e\x07\x47\xbe\xad\x3e\x76\xa5\x49\x9f\x9b\x78\xbf\x4a\x90\x35\xee\x27\xa6\xb9\x28\xc2\x6a\x30\xc1\x38\x9c\xc5\x1c\xa5\x6f\x1b\xd6\x8c\xad\x4b\x61\xe4\xb2\xbf\xd5\xb6\xf8\x7e\x95\x97\x37\x1d\xbe\x8a\xf8\x62\xca\x65\xbe\x9a\x91\x7f\x7f\xab\x6d\x35\x19\x70\x4e\xc2\x9c\x5c\xf5\xf7\x35\x05\xb7\x0a\xed\x30\x7f\xe2\x64\x2f\xbf\xfb\x98\x38\xea\x54\x26\x26\x62\x77\x12\x0c\xc8\x64\x28\x99\xe1\xcd\xf9\x60\xc5\xcc\x39\x29\xb2\xd9\xd3\x79\x29\xcd\xc0\xce\x22\x5b\x3b\x2c\xa0\x1a\x7f\x6b\x17\xb3\x7f\x7e\x4c\x36\xba\xd8\x5e\xb0\x38\x43\x68\x07\xe3\xb0\x1f\x0c\xbe\xb0\xb8\x9a\x93\x24\x84\x25\x45\x68\x46\xcc\x37\xbc\xec\xed\xbc\x25\x22\x90\x45\x3c\x00\x33\x27\xf8\xaa\x58\xcb\x81\x85\x0b\x6d\x65\x9f\x00\x60\xc6\x3c\x62\xd5\xf7\x76\xde\xae\x6c\xc7\x34\x56\x39\x18\x50\xed\xbc\xb5\x18\xfc\x4c\x1d\xe6\x32\xcc\xcc\xb0\xc4\x64\xc6\x2d\x9a\xb2\x10\x54\x5c\x20\xa1\x8f\xb6\x7b\x66\x29\x94\x07\x2d\x24\x87\xf2\x50\xcb\xf3\x18\xe5\xef\xf1\x75\x96\xa7\x38\x98\x6c\xc6\x21\xeb\x9d\xc5\x3a\x32\x61\x66\xb1\x02\x9c\xc7\x1a\xb0\x09\xd9\x47\x78\x82\x21\xc8\x38\x18\x63\xd2\x79\x62\xb1\x32\xc1\x7f\x3e\xc6\x57\x39\x7d\x6d\x17\xdf\xf1\xc5\x5b\x16\x33\x15\x5a\x5f\xc9\xc6\xd1\x00\xd7\x38\x0a\xe2\xa6\x5e\xe0\x62\xb3\x9f\x54\x66\x6d\x0b\xff\x53\x66\xed\x0e\xa3\x0b\x86\xc3\xa3\x28\x5b\x78\x6c\xbf\x19\xdd\x9c\x14\x1d\xea\xe3\x41\x32\x61\x5e\xf7\x84\x20\xa2\x64\x96\x55\x23\x19\xd1\xc5\x4a\xe2\x78\x49\x6f\x6a\x73\xbb\xa0\xf9\x46\x98\x07\x36\x38\xef\x5d\x14\xc1\x5a\x2e\x5e\xab\x46\xe3\x72\x38\x66\xda\x7c\xf1\x19\x32\xbb\x5e\x58\x8f\x34\xa2\x34\xda\x40\xd1\x05\x9b\xc2\xba\x63\x25\x26\x17\x18\xed\xfd\x0c\xe7\xcf\x6c\xd6\xcf\xf0\x7f\xcf\x70\x9c\x97\x9c\x9e\x01\x5f\xe1\xc0\x30\xd7\x00\x5a\xc7\x47\x9b\x10\x73\x12\xc8\x1f\xa3\x72\x4c\x07\x1a\x0a\xd6\x04\x10\x0f\xa9\x5d\x59\x5d\x45\x6c\x46\x8a\x77\xd6\x6c\xb9\xe5\x51\x63\xa8\xe9\x79\x61\x21\x08\x91\x60\x44\xa3\x70\x8e\x36\xe8\x85\x61\xc1\xc5\x89\x9d\xb7\x65\x06\xd7\x7c\xd3\x59\x24\x4e\x5d\xa7\xf9\x28\x7c\x7c\xef\xc2\x07\xfa\xcf\x69\x8a\x33\x9c\x5e\x60\x2a\x86\x24\x33\x22\xca\x4b\xe2\x07\xa8\x31\x82\x3c\xea\x8f\x19\x07\x46\x5b\x29\x7a\x9b\x46\x41\x8c\xde\x51\xf7\x4c\x34\x8c\xc6\x18\xc7\x83\x95\x01\x80\xe0\x21\x9f\x21\x02\xb6\x46\x3f\x27\x47\x50\xe4\xbf\x82\x18\xed\xa6\xb3\xfe\x35\xfa\x7d\x44\xfe\x59\xb9\xc4\xfd\xff\x3c\x9f\x04\xd1\x78\x65\x90\x4c\xec\xf2\xce\xc9\x11\x6f\xae\x44\xec\x91\x0b\x55\x96\x7e\x9e\x14\xf9\x5e\xe2\x01\x39\x28\xd0\x94\x49\x4f\x9f\x3c\x21\x83\x0e\xa4\x27\xd2\x21\x81\x92\x88\x2a\x85\x96\x60\xd6\xe9\xaf\x3f\xd1\xea\x6a\x72\x81\xd3\xe1\x38\xb9\x24\x75\x60\xe3\xf3\x79\x3a\x50\x52\xcf\xef\x2c\xfd\x48\xca\xbe\x16\x9f\x1b\xf2\xe7\x75\xfd\x6b\x93\xed\x61\xac\x31\xc0\x13\x50\x21\x60\x45\xbb\xab\xab\x88\x37\x8b\xfa\x3e\x29\x02\x28\x43\xd3\xf5\xd7\xa2\x4a\xa3\xa8\x22\xca\x3c\x01\x04\x68\x21\x5a\xaa\xa9\x96\x62\xc5\x9e\x00\x2a\xac\xdc\x0d\xfc\x97\x10\xa4\x5c\x62\x79\xb9\xdf\x94\xbe\xc3\x7f\x78\x19\x5a\x64\x79\xb9\xdf\x78\xfd\xd4\x5d\x60\x79\xb9\xef\xb3\xef\xe4\xbf\xd0\x71\xde\x28\x3c\x2c\x6f\x40\xcf\xdf\xbc\x61\xf9\x20\xe5\xd7\x0d\xaa\x02\x54\xde\x32\x84\xcc\x96\x44\xb5\xfa\x55\xdd\x67\x5a\xbf\xa2\x28\xe3\x7a\xa4\x10\x79\x79\xa3\x53\x07\x5b\x1e\xb5\x01\xfd\x57\xa5\x11\xf6\x92\xde\x20\x71\x52\x2a\x5e\x2e\x31\x82\x91\xa6\x60\x75\x15\x91\x5d\x02\x6e\x62\x50\x24\x2d\x24\xba\x78\x8c\x95\xf6\x3c\x43\x00\x2f\x43\x49\x3c\xbe\xa6\xcb\x71\xeb\x97\x83\xa3\x2d\xf4\x3b\x7a\x83\xd6\x01\x26\x6f\xd0\xb7\x61\x41\xef\xe2\xd4\xce\xb2\x6f\xbc\xbf\x7c\x2d\x29\x67\x01\xb1\xae\x56\x1c\xaf\xff\x42\x99\x73\x51\x91\xd3\x28\xae\xc9\x30\x66\xab\x8c\x27\x8a\x66\xf9\x80\x19\xa8\x97\x49\x3c\xc8\x2d\xf5\x80\xd0\x60\x6f\xa4\x5c\x06\x42\xb7\x90\x83\xd0\x7c\x59\x88\x4b\x07\x84\xb0\x4d\x9a\xa7\xac\xe8\x89\x2e\x1a\xb1\xcf\x12\xae\xaa\xea\x79\x11\xa1\x08\x39\x04\x23\x74\x3b\xe1\x08\x2d\x28\x20\x21\x55\x9e\x33\x0f\x5d\x05\xdd\xcb\x67\x2f\xb1\x34\x5e\x6b\x92\x95\x28\x2e\x09\x58\x4e\x11\x4b\x2a\xbc\x80\xa4\xd5\x7a\x94\xb4\xbe\x77\x49\xcb\x21\x5f\x39\xd4\x3b\x27\x47\xe5\x72\xce\xa2\xea\x1d\x0b\x4b\xd7\x79\xf9\x23\x13\xff\xe7\x31\xf1\xd2\xd3\xec\x03\xb0\xec\xbd\x78\x90\x62\x88\xdc\xc0\x80\x6b\x20\x99\x1c\x52\x4c\xee\x4b\x44\x8d\x69\x1c\x5f\xe0\xb6\xfc\x2b\xaa\xff\xad\x36\x87\xaa\xbb\xc2\xfc\xf3\x36\x29\xb3\xc0\x2e\xd0\x7e\xdc\x05\xfe\x16\xbb\xc0\xf6\x18\x0f\xf2\x34\x89\xa3\x01\xea\x25\x21\xee\x27\xc9\x7c\x85\xff\x76\xaf\x4c\xe1\x4f\xbf\x2e\xb4\x23\x6c\xf7\x54\x85\x3f\x79\xbe\xaf\x1d\x40\x66\xed\x2a\x03\x51\xeb\x95\x69\x31\x09\x3e\xca\x42\x7a\x28\xfc\x42\x7c\x2b\xfc\x78\xea\xa5\xde\x7c\xbd\x19\x94\x59\x60\x1d\xff\xbd\x93\x23\xff\xcf\x59\xc7\x07\xb3\x7c\x3a\xcb\xab\x5f\xda\x1d\x94\x5e\xda\x1d\x2c\x7e\x69\xa7\x4b\x75\x07\xda\x25\xde\xc1\x5f\x7b\x1d\xf4\xe0\x52\x9d\xa9\x9b\x17\x6f\xee\x57\xb2\x2b\x69\xe8\x7b\x91\xee\xfe\x49\x27\xec\x03\xed\x5a\xd3\x25\x44\x1d\x54\xb8\xb4\x38\x58\xf0\xd2\xe2\x31\x8b\xdd\xdf\x83\xf9\x6e\x7e\x3c\xde\x43\xbf\xae\xbc\x6a\x34\xb9\x81\x38\xca\x72\xb2\xbc\xcf\xaf\x0d\xee\x3b\x0d\xc2\x95\xcd\x38\x8b\x7e\x25\xa5\x45\x2e\xb8\x69\x10\xca\xec\x2f\x0c\xf2\x40\xba\x08\x75\x5d\x80\x66\xea\x0d\x28\xa9\x75\x5c\x18\xfc\x2a\x06\xc0\xaf\xd5\xa2\x7d\x3d\xad\x48\xdf\x95\x50\x04\x88\x62\x16\xe7\xa2\x67\x5a\x30\x2b\xb0\xc5\x3b\xa4\xdf\x0c\x60\xf4\xc5\x4b\x15\xb3\x7f\x69\xdf\x8d\xd6\x68\x4c\x9b\x71\x90\xd1\xc8\x59\x68\x9a\x64\x91\xea\x81\x4f\x1a\x25\xdf\x49\xfd\xc3\x84\x77\x56\xb4\xb0\xac\x61\xf4\x12\xf9\x5a\x23\x87\x41\x58\x3c\xc3\x40\x89\x6c\x23\xea\x6b\xca\x4a\xe4\xb6\x8a\x90\x5a\x6a\x23\x45\x48\x2d\xb9\xb4\x2d\xb8\x96\x6a\x99\xbd\xac\x01\xe2\x76\x88\xdc\x02\x77\x16\x5b\x88\x43\xa7\x88\x77\x38\x97\x12\xce\x2b\x53\x45\x15\xf8\x62\x34\xcb\x67\x4e\xea\x73\x4d\x45\xf3\x25\x39\xfe\xb2\xbe\x17\x17\x41\x12\x0a\x6c\x5f\x31\x3c\x24\x34\x30\x8e\xde\x3e\x7d\x72\x63\xe5\x9b\x7c\xb9\x5c\xbd\x6a\x34\x17\xe2\x9d\x77\x4b\x4c\xf6\xc8\x3b\xbf\x15\xef\xdc\x3b\x3e\x40\x10\x12\xb7\x1a\xeb\xdc\x63\x01\x74\xef\xca\x3a\xff\x72\x76\x58\x2c\x89\x39\xfc\xd0\xc2\xaa\x68\x3a\x00\x7b\x04\xba\x95\x34\x88\xc3\x64\x52\x33\x38\xe0\xd2\xd2\x8a\x26\x29\x95\xc3\x61\xa9\xc3\x4e\x0d\x2e\xd7\x68\x9d\x79\x04\xdc\x23\xa3\xd2\x19\x15\x27\xce\x85\x18\xd5\xdf\x3b\xf3\xc2\xff\x28\x46\xb5\xba\xb7\xdd\x43\xaf\xd6\x5e\xad\xbd\xf4\x11\xa3\x0d\xb4\x8f\xf3\x51\x12\xa2\x86\x8b\x5b\x41\x68\xef\xdb\x72\xab\xcd\x30\xa4\xfe\x83\xea\x82\xa8\xc0\x05\xf8\xea\x25\xb5\xe9\x1f\x5f\xb4\x4a\x03\xff\x07\xa7\x09\xe4\x0e\xcb\x47\x18\xa5\x38\x93\xf8\xa2\xd2\x11\x52\x8e\xf5\x98\x3c\x1b\x78\xdf\x8a\x17\xb0\x85\xf8\x07\xc3\x41\x5d\x8d\xce\xe6\x01\x34\x85\x67\x5f\xd8\x49\x8c\xd1\x24\x49\x31\x15\x1e\x5f\xbe\x84\xbe\xb9\x46\x91\xaf\xf7\x97\x2f\x2b\x2e\x70\x98\xcf\x45\x16\xf8\xda\xdd\xa2\x9c\x3f\x2e\xf0\x6f\x76\x8a\x43\x71\x92\x4c\xab\x89\x21\x1f\x39\x39\x3a\x57\xb6\x20\x76\xf7\x9a\x28\x8a\x94\xd1\x9c\x68\x6a\x21\xa2\xbb\x5b\xb8\xd9\x47\xa2\xfb\x56\x44\xf7\x7f\x24\xe6\x57\x4e\x72\x12\x0f\xfc\x0b\x85\xdf\xca\x07\x67\xf9\x7c\x6b\x08\xc0\xb5\x5a\xb9\x08\xbc\x84\xbe\x7e\xd5\x5f\xdd\x6a\x8b\xb1\xf7\x78\x7e\x5c\x81\xd5\x55\xf4\x89\xc0\x57\xeb\x45\x46\xa4\x00\xd0\x2c\x88\x32\x97\xa3\x68\x8c\x51\xed\x87\x5a\xe1\x6b\x5d\xc4\xe0\x06\x8f\x43\x23\xe6\xb6\x30\xe1\x34\x14\x99\x91\xd8\x92\x90\xaa\xa2\xd4\x1d\xbb\x21\x1e\x6f\x95\xdd\x4b\xa2\xa0\x85\x78\xc9\xdf\xdb\x71\xcb\x92\xa3\x8b\x26\xc9\x7a\x58\xbe\x52\x64\x42\x82\xd6\xfe\xfa\x3c\x1f\x0f\x9b\x24\xbc\x5a\x4c\x6c\x23\xe6\xb5\xf8\x72\xbc\xbb\xe9\x17\xb1\x9e\xc9\x93\xf4\xd1\x4c\x04\x6e\x73\x10\x3d\x0c\xb2\x8c\x2c\xe4\x97\x04\xb5\x10\xbd\xc7\xd7\x68\x0b\xa7\xd1\x05\xcd\x09\xb9\xc3\x07\xa5\x51\x1e\x73\xfa\xf0\xed\xfb\xad\x9d\x46\xd1\x9a\x78\xae\x98\x78\xbc\x97\xc4\xc3\xe8\x7c\xc6\x32\x51\x26\x90\x15\x32\x2b\xcb\x2f\x99\x26\x53\x9c\xe6\xd7\xe8\x4f\x7a\x2c\x06\x6f\x52\x60\xbe\x27\x23\x9a\xe3\x38\x23\x0f\x51\xcc\xd2\x05\xe4\x89\xf0\xa5\x59\x41\x5b\x78\x18\xcc\xc6\x79\x17\xb5\x50\xcd\x6f\xac\x43\x22\xe5\x25\x17\x7c\x47\x42\x73\x9c\xf2\x44\xe6\x05\x38\x32\xfe\xf3\xd0\x8c\x72\x96\x3c\x33\x03\x50\xc5\xa1\x5e\xfa\x90\x27\x68\x8a\xd3\x61\x92\x4e\x24\xe0\x0a\x64\x29\xfd\xe3\x60\x78\xde\x75\x8d\x32\xa2\x17\x5f\xc7\x10\x73\xc6\x6f\xac\xaf\x36\x1b\x5a\x08\x6e\xda\x15\x8a\xba\xf6\xa9\x40\x48\x69\xfc\x66\xa9\x2c\x21\x69\x59\x02\x79\x32\x2b\x61\x41\x5a\x7c\xbd\xcd\xcf\x22\x7a\x00\x7c\xee\x86\x74\x55\xce\x18\x4a\xc6\x6f\x60\xa3\x1b\xee\x6f\x36\x4c\x52\x38\xc5\x14\x8d\xde\x43\x62\xd0\x2f\xe1\xd0\x48\x1a\x4f\xa9\x9d\x9f\x1e\x15\x33\xac\x45\x2a\xfe\x59\x4c\xd6\x3a\x4d\x3f\x79\x67\x30\x9e\x3a\x8d\xf5\x7a\x5d\x07\x5c\x92\xbd\x7e\x30\x3c\xb7\x1b\x5e\x90\x89\xd8\x10\x3f\x39\xe1\x91\xe2\xae\x60\x18\xe6\x7a\x87\xeb\x0a\xea\x41\x57\x95\x05\xdd\x26\xdf\xec\x94\xc1\x06\x6a\xe1\x0f\x2b\x15\x2b\x67\xc1\x38\x47\x9b\xf0\xcf\xe2\x89\x68\xb9\x1b\x8d\xe4\xd7\x7e\x17\xb2\xa3\x89\xd4\xc3\xe1\x0a\x8b\x4a\x52\xe3\x9d\xf1\x00\x3f\xe7\xa4\xb2\xe2\xf2\xbc\x6a\x35\x17\xca\xed\xa2\x4e\xbd\xd5\x80\x30\xca\x1d\x49\x61\x99\x97\x3d\xf8\xee\x33\x5a\x25\xe4\x43\x79\x90\x27\x66\xc7\x6e\x96\xe8\x4e\x50\x0e\xb2\x29\x1d\x6c\x9a\x6e\xde\xd0\xe7\xd8\x42\x3d\x81\x9c\xbc\x17\x87\xf8\xca\x56\xe3\xb4\x7e\xc5\x14\x40\x96\x68\x9d\x73\x42\x74\x09\x54\x84\xb0\x2c\xde\x38\xf3\xd7\x17\xd8\xf0\x4a\xc5\x1b\x67\x25\xbe\xe5\x6d\x90\x59\x59\x61\x4f\x36\x23\x8c\x62\x6b\xa1\x45\x8b\x17\x73\x8c\x2c\xd4\x8f\x4c\x50\xd7\x3a\xc8\xe3\x22\xbd\xe1\xf8\x58\x8d\x0b\x44\x27\x59\x9e\x63\x9e\x2c\x1b\x28\xb0\x48\xe3\x5b\xf4\x5a\x9f\x33\xc4\x32\x7a\x17\xa9\x81\xcd\xef\xf3\xb3\x31\x00\x7c\x65\x88\xad\xa3\x6b\x16\x17\x59\x8c\x8a\x57\xac\xe3\x0e\x44\xf6\xc4\x18\xdb\x41\x47\x72\x34\x3b\x06\xd6\x82\x85\x62\xcb\xe1\x53\x5b\x0e\x69\xfa\x9c\xc6\x1c\x08\xf8\xb9\xd2\x04\x8c\x9e\x18\x69\xf9\xa3\x6d\xac\xab\x8c\x37\x9a\x17\x0a\xca\xd6\x59\x3e\xfa\xf2\x3b\x7b\xc0\x2a\xa9\x89\x5f\x0f\x8e\xd4\xee\x80\xeb\x94\xc5\xe3\xda\x18\xb7\xdf\xa9\x0d\xcc\xef\xdc\x06\x46\x9a\xcd\xd7\xe8\xf7\x92\xd1\x23\x7f\x45\x8d\xd3\xdf\xc1\x1c\xc6\xe8\xc8\xe9\xef\xba\x59\x0c\xff\xbb\x31\x5f\xeb\x01\xa7\xc8\x9f\xc4\x1c\x98\x6e\x1a\x1a\xb5\x4d\x89\xc6\x24\x4e\xeb\x67\xcb\xcb\xe5\x26\x45\x12\x70\xe9\xe8\xcb\xf9\x86\x25\x88\x19\xdb\xcb\x8a\x7a\x65\x06\x94\xf2\x31\xe2\x4e\x1b\x7a\x95\x60\x33\xa5\x1b\xf9\x82\x9b\xf8\x7d\x89\x96\x51\x66\x4b\xb7\x3f\x3f\x7a\x8d\x45\x34\xb8\x87\x20\x36\x54\x44\x10\x92\x21\x15\x0a\x5d\x62\xc2\x62\xd5\x3c\xe4\x90\x4d\xef\x02\xa6\x54\x36\x2d\x82\xec\x88\xa3\xa4\x4b\x80\xf1\x90\x2e\xa8\xb2\x61\x57\xc5\x62\x52\x68\x8e\xf0\x74\x53\x66\x8b\x46\xa1\xd9\x03\xf5\xe8\x29\x74\x79\x4e\xd8\x9b\x33\x6f\xed\xef\xed\x43\xbf\x40\x5a\xf7\xf9\xc9\xd1\x1f\x56\x77\xe4\x4c\xaf\xed\xca\x7a\xfd\x4f\xd0\x2e\x1d\x83\x71\x66\x8f\x1b\xef\x52\x25\x92\xfc\xb2\x4c\x8f\x24\xf0\x38\xc2\xb3\x2c\xe8\x8f\x31\x0b\x07\x26\xa1\x73\x8c\xe4\x54\x8b\x14\x8a\xfe\xe6\x1d\x52\x33\xac\x49\xdb\xc2\x11\x64\x53\x46\xcc\xd0\x96\xd9\x18\x9b\x9a\x24\x51\x1e\x62\xac\x44\x19\x0a\x10\x4d\xc0\x8c\x2e\x70\x9a\x41\xd4\xb2\x51\x90\xa3\x18\x9f\x8f\xf1\x20\xc7\x21\x61\xc3\x03\x96\x52\x35\x67\x0a\x9f\x3c\x41\xe3\x28\xcf\xc7\xf8\x25\x0d\x70\xb9\xa2\x02\xc5\x69\x9a\xa4\x28\x4c\x70\x16\x3f\xcf\x51\x30\x1c\xe2\x01\xad\x4b\x91\x7a\x9e\xa1\x0c\x0f\x66\x69\x94\x5f\x7b\xa2\x62\x7f\x96\xa3\x28\x87\x4a\xbc\x46\x94\x67\x22\xa0\x42\x34\x8e\x72\xe6\xc4\x4d\xf3\xba\x46\x84\x3f\x4f\x70\x4c\xf7\x83\xcc\xa6\x28\xa3\x03\xf2\x81\x76\x4e\xa8\xcb\xb4\xb7\xf2\xfc\xdd\x36\x69\x5b\xf9\x21\xe5\xbd\x6c\x06\xed\x3c\x60\x14\xd6\xdb\x70\x6a\xb8\x28\x3b\x2d\x44\xec\x84\x46\x76\x2f\xec\x3c\xa7\xfd\x2a\xda\x25\xbf\x2c\x89\xe3\xde\x9f\xd6\xcf\x3c\x54\x7b\x7f\xda\x3c\x63\xc1\x02\xd0\x57\xf2\xc8\xae\x02\xfc\xce\x92\x25\x89\xdc\xfb\x53\x9f\x56\xaa\xab\x95\x9a\xe5\x95\x1a\xb4\x92\xaf\x56\xaa\x97\x57\x6a\xd2\x4a\x0d\xb5\x92\x2f\x2a\xa9\x75\x6c\xd9\x91\x8c\x21\xe3\x5e\x86\xae\x41\xeb\x89\x41\xeb\xd9\x07\xcd\xc4\x47\x1a\x2e\xd6\x27\x7a\x61\x32\x1c\xf2\xb4\x83\x14\x69\x1a\x64\xb5\x5e\x27\x5f\x6c\xfd\x35\x27\xa2\xa9\x42\xf6\xad\x90\x1b\x95\x20\xd7\x9d\x03\x2f\xc1\xd0\x20\x37\x2b\x41\xf6\x5d\xb3\xe3\x49\x30\x34\xc8\x75\x0d\xf2\xfc\x89\xec\x05\x69\x7a\x8d\xfa\x7a\x3a\x55\x3a\x55\x7d\x1a\xff\xc2\xd4\x64\xe4\x74\xf2\x09\xeb\xc9\xae\xb3\x1c\x4f\xd0\x30\x99\xa5\x28\x8f\x26\xfa\xdc\x2f\x18\x94\x37\xc6\x57\xf9\x31\x59\x7d\xee\xf8\xb1\x96\x88\xb7\xfb\x49\x18\x0d\xaf\x29\x27\xa4\x74\x58\x01\x8b\x75\x37\x16\xbd\x53\xea\x38\xf0\xeb\x29\xa4\xbc\x84\x68\x2b\x46\xa6\x38\x5b\x92\xdc\x9f\x51\x86\xf3\xd9\x54\xfd\x50\xe2\xd1\x31\xff\xb0\xbf\xf7\x33\x75\xed\x28\x3b\xe1\xef\xfd\xfc\xb9\x8e\x36\xd0\xde\xcf\x66\x6a\x34\xa9\x88\x4f\x8b\xf8\xd6\x68\xc6\xf2\x92\x86\xa9\xcc\x66\xfd\x0b\x4c\x44\x05\xd7\xd1\xbf\x4e\x83\x1f\x43\xdb\x34\xfa\xf1\x57\x44\x9f\x5c\xd1\x8f\xe5\xe2\x2c\xcc\xb1\x28\x5f\x5c\x87\xda\xc3\x1c\x8b\x66\x1b\xa2\x59\x5f\x69\xd6\x9f\xd7\xac\xaf\x36\xeb\x2f\xd6\x2c\x84\xd1\x89\xea\x7c\x09\x12\x20\x51\x43\x5d\x81\xae\xaa\x4d\xa8\xda\xe0\x8b\x19\xaa\xd6\xd5\x65\xea\x98\x11\x46\xd6\x65\xac\x15\x01\xb5\xd6\xe9\xb9\x5e\x8f\xed\x4f\x3f\xfa\xf4\xa3\x6f\xfd\xd8\xa0\x1f\x1b\xd6\x8f\x4d\xfa\xb1\x69\xfd\xd8\x2a\x6b\xb3\x5d\xd6\x66\xa7\xac\xcd\x35\xd1\x66\x89\x46\xaa\x12\xe7\x41\x8b\x73\x1f\x54\x8d\x03\x21\x53\x49\x21\xfb\x11\xdd\x4b\x72\x57\xa7\xf2\x5a\x92\x3e\x2a\x71\x66\xb5\x88\xbd\x77\xee\xed\x1d\x06\xb7\xf0\x32\x03\x2e\xa4\x96\x3e\xa6\xa1\x86\x7e\x05\x22\x44\xb5\x5f\xc9\xdc\xf3\x55\x02\xcf\x62\xef\x7d\xad\x57\xf4\x69\xc5\x06\xab\xb8\xa6\x55\x6c\x3b\x2b\x36\x68\xc5\x16\xab\xe8\x6b\x15\xd7\x9c\x15\x9b\xb4\x62\xe7\x4c\xa0\xa6\x54\xf4\x8b\x8a\x77\xda\xc5\xca\xa2\xd4\x53\x44\x78\xec\xf8\x63\x96\x92\x9d\x05\x8f\x87\xc7\xdb\x44\x8f\xe7\x70\x18\x83\x13\x70\x6c\xf1\xe3\xad\xf8\x5a\x9d\xf0\x90\x94\xa3\x57\x78\xd3\x1d\x97\x7b\xd1\xc9\xd4\x2f\xec\x78\x8a\x9b\xdb\xe2\x63\x74\x41\xbf\x74\x5a\xab\xcd\x86\xae\x96\x13\xcb\x44\x10\x6c\xad\xa2\x2b\x94\xb2\x3e\x94\x2f\x92\x08\xaa\x19\xfc\x1c\x07\x17\x18\x25\xe3\xd0\xc9\x6a\x17\x90\x1f\x7a\x9f\xe9\xe4\xf6\xf4\x78\x87\x4a\x8b\xbd\x60\x3c\x98\x8d\xc9\x0a\x8b\xf1\xa5\xb3\xd9\x1e\x4b\x04\xd3\xa3\x89\x60\xea\x57\xad\xb0\x09\xff\x87\x96\xb9\x84\xa6\xe7\x6b\xe9\xb1\xbc\x30\x3d\x9a\x17\xa6\x7e\xc5\x6a\x34\x21\xa6\x7c\x8f\x0b\xa8\xf5\x25\xf4\x06\xd5\x7a\x9f\xa5\xe7\xff\x40\x3e\xea\xa2\xfa\x92\x09\xb1\xc1\x20\x36\x28\x44\x06\xb0\xc5\x20\xfa\x1a\x44\xbf\x02\xc4\x26\x83\xd8\x34\xba\x55\xa3\xed\x28\x10\x1b\x15\x20\xb6\x18\xc4\x96\xb5\xd7\x4d\x0d\x62\xb3\x02\xc4\x36\x83\xd8\xb6\xf6\xba\xa5\x41\x6c\x55\x80\xd8\x61\x10\x3b\xd6\x5e\xb7\x35\x88\xed\x0a\x10\xd7\x18\xc4\x35\x6b\xaf\x3b\x1a\xc4\xce\x5c\x88\x85\xd8\x4f\x81\x2a\xd5\xd7\xf4\xea\xba\x77\x8c\xa0\x69\xb2\xfb\x9c\xbf\xbc\xc3\x22\x22\xa5\xce\xaf\x80\x57\x47\xa4\x6b\x3d\x4b\x12\x0e\x9e\x2e\x3f\x9d\x0d\x72\x34\x8a\xce\x47\x28\x88\x43\x34\x4e\x2e\x51\x90\x9e\xcf\x20\xfc\x0b\xb8\x39\xff\xf7\x2c\x48\x8d\xc4\x3d\xd0\x40\x80\x36\x48\x2b\x5c\x8a\xb3\x28\x0f\xce\xfb\xb4\x08\xdd\x25\xac\xc7\x27\xde\x67\x05\x83\x14\x67\xb3\x71\x8e\x92\x61\x59\xf3\x23\xba\x05\xd4\xce\x03\xf4\x02\x9d\x07\xd4\x75\xc5\x5f\x5b\x42\xcb\x88\xbe\xea\xb3\x57\x6d\x78\xd5\x87\x57\x36\x24\xc7\x14\x90\xd4\x15\x7a\x24\x7c\x81\xce\xaf\x60\x86\x97\x80\x20\x78\x01\x21\x76\x4a\x05\x6c\x89\x60\x48\x87\x7e\x3d\x38\x42\x10\x4e\x52\xfe\xf8\x8e\x72\xb8\xf3\x11\xfa\x0d\x9d\x8f\xab\x32\x39\xbb\x52\xe5\x57\xc6\xe2\xde\x51\x16\x57\xab\xbd\x2b\xb6\x6f\xb2\x93\xbd\x93\xc4\x82\x25\x56\xa0\xa3\x16\xe8\x14\x05\x74\x7a\xfe\x95\x71\xc3\x77\x94\x1b\xd6\x68\x33\xc5\x7e\xfb\x8e\xf3\x3f\xd8\x6f\x97\x11\x69\xcd\x84\xd1\x60\x30\x1a\x1c\x86\xaf\x22\xe0\x1b\x18\xd6\xd5\x02\xf5\x32\x0c\x9b\x0c\x7a\x93\x43\x6f\xa8\x18\x36\x34\x0c\x7d\x0b\x86\x2d\x06\xa3\xc5\x61\x34\x55\x04\x9a\x06\x86\x0d\xb5\x40\xa3\x0c\xc3\x36\x83\xde\xe6\xd0\x5b\x2a\x86\x2d\x0d\xc3\xa6\x05\xc3\x0e\x83\xd1\xe1\x30\xda\x2a\x02\x6d\x03\xc3\x96\x5a\xa0\x55\x86\xe1\x1a\x83\xbe\x76\xa6\x90\x88\xc0\xb0\xa3\x61\xd8\x56\x30\xac\x94\xf8\x23\xe3\x49\x27\x84\xae\xb5\x42\xda\x89\x79\xd7\x5d\x14\x56\x8e\xaf\x72\xf9\xde\x49\xd6\xa4\xf2\x50\x0a\x4a\x1a\x07\x7a\x5b\x64\xde\x5f\x4d\xc7\x01\xc1\xe6\x2a\x47\x4e\x70\x2c\xce\x4c\xad\x68\xd9\x06\x51\x5c\x5c\x95\x29\x75\xd5\xe4\x1d\x72\xc9\xa5\xb2\x3b\x28\xb9\x60\x65\x63\x64\x4f\xbd\x1b\xe9\xb6\x5b\x5e\x71\x29\xd2\x6d\x77\x3c\x76\x57\xd2\xed\xf8\x37\x67\xde\xda\xdf\x3b\x12\xe1\xe3\x7d\xd5\xe3\x7d\xd5\x83\xdd\x57\x69\x4b\xbc\xb8\xcf\xd1\x6f\x72\xfe\x5e\x77\x38\xf7\x95\x15\xee\xbd\x38\x9a\xbf\x57\x8f\xe6\xef\x6f\x7b\x34\x7f\xaf\x1e\xcd\xdf\x97\x1d\xcd\xe7\x29\x98\x1f\x6f\xaa\x1e\x6f\xaa\x1e\x6f\xaa\x94\x2f\x8f\x37\x55\x8f\x37\x55\x8f\x37\x55\x45\xb3\x8f\x37\x55\xfa\xc7\xc7\x9b\x2a\xc7\xe3\xe3\x4d\xd5\xe3\x4d\xd5\xe3\x4d\x15\xfc\x3d\xde\x54\x55\x53\xe2\x3e\xde\x54\x3d\xde\x54\x3d\xde\x54\x49\x7f\x8f\x37\x55\x8f\x37\x55\x8f\x37\x55\x8f\x37\x55\xff\x93\x6f\xaa\xee\xed\x8e\xea\x76\xb7\x53\x55\xee\xa5\x2a\xdc\x48\x3d\xd4\x5d\xd4\xdf\x3b\x1f\xca\xe3\x5d\xd4\x3f\xff\x2e\x4a\xbe\x3b\xea\xb5\xe6\x3a\x3a\xc9\x37\x47\xbd\x96\x74\x6d\x04\x0f\x0f\x7f\x67\x44\xbd\x34\xc5\xad\x91\x3d\xa8\x00\xf7\xd0\x2e\xbb\x56\x02\x37\x4e\xd9\xa3\x58\x8a\x99\x6e\xea\x2b\xe2\x28\x47\x59\x3f\xb9\x32\xe1\x1c\x0b\x74\x8e\xe5\x6b\x3a\xfe\x67\x93\x26\x1b\xed\x8e\xfb\x50\xce\x0e\xdd\xd1\x7c\x35\xee\x7b\x7c\x6d\xd3\xe3\xaa\x2d\x7a\xdc\x7f\x7c\x6e\xc3\x6c\x50\xc8\x10\xf0\xa8\x12\x11\xfa\x97\x3c\x4e\x0e\xd5\x21\xab\x44\xb6\x36\x3e\xf6\xa7\x0a\x20\x33\x12\x9a\xf2\xd9\x08\x8a\x66\x3b\xfb\x93\x5e\xd4\x7e\x47\xcb\x74\x7c\x96\x79\xa3\x4b\xe8\x5f\xd0\x2b\x47\x2c\x85\xcb\x60\x6a\xc7\x19\xf6\x0d\x53\x43\x20\x4d\xc0\xb1\xdd\x31\x9e\xbc\x26\x33\x3e\x7f\x7a\x7a\x56\x15\x3f\xcb\xaa\x21\x88\xe6\x77\x96\x65\x56\x00\xba\xb3\x5a\x8e\x6b\x42\x40\x0b\x62\xe4\x5f\x27\xd3\x63\x57\x19\x2a\x2d\x0b\x27\xe7\x46\xbb\xe3\x50\x88\xd4\x9d\xca\x10\x6b\xa3\x55\x15\x23\xd2\x7a\xd2\x14\x23\xc5\xa0\x45\xda\x97\xdf\x8b\xe1\x9c\x9b\x01\x1e\x94\x83\x6a\xf5\x2f\x32\x9e\xda\x7c\x88\xd5\x14\xd3\x65\x14\x53\x95\x5a\x6c\x59\x44\x11\x68\xd0\x69\xc2\x38\x46\x95\xca\x77\x85\x84\x1d\x84\x6b\x25\xda\x12\x82\x75\x13\x6b\x41\xa8\xea\x7b\xb5\xb3\x5f\x49\xdd\x1a\x5b\x53\xa4\x0a\xc3\xeb\xac\xc8\x6b\x10\xeb\x79\x0c\xb4\xe3\xd3\x27\x88\x83\x62\xb9\xd1\x2a\x48\x3d\x32\xce\xee\x64\x2c\x94\xb9\x62\x62\x99\x82\xdd\xf7\x2a\xf7\xf6\x5a\xf7\x21\xf4\xf6\x5a\x0b\x4b\xbc\xe6\x1e\xab\x89\xbb\xbd\x96\x35\xb6\x05\xdc\xd0\x44\x38\xbc\xc5\x0e\xbf\x95\x26\x53\x65\x97\x67\x2f\x60\x10\xbe\x41\x54\xbc\x90\x34\xa7\x06\x9a\xd3\xf4\xfc\x64\xe2\x49\x29\x11\x6a\x0e\xf9\xaf\x1a\x32\x58\x3d\xd6\x1c\x41\x5d\x8a\xfa\xa5\xad\x62\x02\xaa\xab\x82\x50\x23\xc6\x55\x12\x62\x48\x1b\xbc\x60\xf9\x1d\x06\x19\xcf\x92\x0d\x5c\x18\xbe\x10\xbc\xc8\x2e\xfe\x13\x6c\xe6\x2f\x5f\x5a\xf7\xf0\x05\xd8\x3d\x9a\x93\x00\xe9\x3b\x5a\x6d\x64\x88\xee\x67\xc5\x01\xa4\xc5\x57\x1d\xa3\xf9\xf2\x95\x47\x0a\x95\x9f\x34\x7b\xad\x87\x3a\x66\xde\x2d\x5d\xdf\xb7\x3c\x5f\x3e\xd8\x29\xf0\xdb\x06\x71\x26\xac\x0a\x67\x38\xbd\xc0\x4f\x9f\xd4\x06\x4b\xa8\x51\xf7\x1b\xa8\x7f\x8d\x7a\xff\xdf\xff\x1b\xa6\xd1\x00\xed\xe3\x2c\x8e\xc6\x2b\x68\x73\x3c\x46\x69\x74\x3e\xca\x33\xc4\xca\x87\x2b\x4f\x9f\x3e\x39\xc2\x61\x94\xe5\x69\xd4\x9f\x01\xfc\x20\x0e\x21\x28\x4f\x14\xa3\x2c\x99\xa5\x03\x0c\x6f\xfa\x51\x1c\xa4\xd7\x84\x1d\x4c\x32\x8f\x45\x69\x48\xe1\xdf\x64\x96\xa3\x09\xf0\xf4\x01\x70\x56\x0f\x05\x29\x46\x53\x9c\x4e\xa2\x3c\xc7\x21\x9a\xa6\xc9\x45\x14\xe2\x90\x06\x9d\x20\xeb\x74\x98\x8c\xc7\xc9\x65\x14\x9f\xa3\x41\x12\x87\x11\x5d\xc3\xa4\xd2\x04\xe7\x5d\xb6\xe2\x5f\x22\x15\xad\x0c\x14\xc3\x14\x9f\x41\x12\x62\x34\x99\x65\x39\xd9\xa8\x83\x28\x06\xa0\x41\x3f\xb9\x20\x9f\xa6\xd7\xd0\x45\x14\x27\x79\x34\xc0\x1e\x8d\x2b\x34\x8e\x32\xd0\x2c\xcb\xed\xc5\xa1\x86\x4c\x18\x65\x83\x71\x10\x4d\x70\xba\xe2\xc2\x21\x8a\xe5\x81\xe0\x38\x4c\xd3\x24\x9c\x0d\xf0\xbd\xa3\x81\x58\xd7\xc2\x64\x30\x13\x71\x30\x48\x8d\xd5\x24\x65\x31\x32\x26\x41\x8e\xd3\x28\x18\x67\xc5\x30\xc3\xdc\x40\x35\x09\x75\x32\xcf\x27\xbb\x7b\xc7\xe8\xf8\x60\xe7\xe4\x97\xcd\xa3\x6d\xb4\x77\x8c\x0e\x8f\x0e\x7e\xde\xdb\xda\xde\x42\x6f\xff\x8d\x4e\x76\xb7\x51\xef\xe0\xf0\xdf\x47\x7b\xef\x76\x4f\xd0\xee\xc1\x87\xad\xed\xa3\x63\xb4\xf9\x71\x0b\xf5\x0e\x3e\x9e\x1c\xed\xbd\xfd\x74\x72\x70\x74\x8c\x9e\x6d\x1e\xa3\xbd\xe3\x67\xf0\x61\xf3\xe3\xbf\xd1\xf6\xaf\x87\x47\xdb\xc7\xc7\xe8\xe0\x08\xed\xed\x1f\x7e\xd8\xdb\xde\x42\xbf\x6c\x1e\x1d\x6d\x7e\x3c\xd9\xdb\x3e\xf6\xd0\xde\xc7\xde\x87\x4f\x5b\x7b\x1f\xdf\x79\xe8\xed\xa7\x13\xf4\xf1\xe0\x04\x7d\xd8\xdb\xdf\x3b\xd9\xde\x42\x27\x07\x1e\x34\x6a\x56\x43\x07\x3b\x68\x7f\xfb\xa8\xb7\xbb\xf9\xf1\x64\xf3\xed\xde\x87\xbd\x93\x7f\x43\x7b\x3b\x7b\x27\x1f\x49\x5b\x3b\x07\x47\x68\x13\x1d\x6e\x1e\x9d\xec\xf5\x3e\x7d\xd8\x3c\x42\x87\x9f\x8e\x0e\x0f\x8e\xb7\x11\xe9\xd6\xd6\xde\x71\xef\xc3\xe6\xde\xfe\xf6\xd6\x0a\xda\xfb\x88\x3e\x1e\xa0\xed\x9f\xb7\x3f\x9e\xa0\xe3\xdd\xcd\x0f\x1f\xac\xbd\x24\xb8\x2b\x7d\x7c\xbb\x8d\x3e\xec\x6d\xbe\xfd\xb0\x4d\x5b\xfa\xf8\x6f\xb4\xb5\x77\xb4\xdd\x3b\x21\xdd\x29\x7e\xf5\xf6\xb6\xb6\x3f\x9e\x6c\x7e\xf0\xd0\xf1\xe1\x76\x6f\x8f\xfc\xd8\xfe\x75\x7b\xff\xf0\xc3\xe6\xd1\xbf\x3d\x06\xf3\x78\xfb\x7f\x7f\xda\xfe\x78\xb2\xb7\xf9\x01\x6d\x6d\xee\x6f\xbe\xdb\x3e\x46\xb5\x39\x43\x72\x78\x74\xd0\xfb\x74\xb4\xbd\x4f\x70\x3e\xd8\x41\xc7\x9f\xde\x1e\x9f\xec\x9d\x7c\x3a\xd9\x46\xef\x0e\x0e\xb6\x60\xa0\x8f\xb7\x8f\x7e\xde\xeb\x6d\x1f\xbf\x46\x1f\x0e\x8e\x61\xb4\x3e\x1d\x6f\x7b\x68\x6b\xf3\x64\x13\x1a\x3e\x3c\x3a\xd8\xd9\x3b\x39\x7e\x4d\x7e\xbf\xfd\x74\xbc\x07\x83\xb6\xf7\xf1\x64\xfb\xe8\xe8\xd3\xe1\xc9\xde\xc1\xc7\x25\xb4\x7b\xf0\xcb\xf6\xcf\xdb\x47\xa8\xb7\xf9\xe9\x78\x7b\x0b\x46\xf7\xe0\x23\x74\xf5\x64\x77\xfb\xe0\xe8\xdf\x04\x28\x19\x03\x18\x7c\x0f\xfd\xb2\xbb\x7d\xb2\xbb\x7d\x44\x06\x14\x46\x6a\x93\x0c\xc1\xf1\xc9\xd1\x5e\xef\x44\x2e\x76\x70\x84\x4e\x0e\x8e\x4e\xa4\x3e\xa2\x8f\xdb\xef\x3e\xec\xbd\xdb\xfe\xd8\xdb\x26\x5f\x0f\x08\x94\x5f\xf6\x8e\xb7\x97\xd0\xe6\xd1\xde\x31\x29\xb0\x47\x9b\xfd\x65\xf3\xdf\xe8\xe0\x13\x74\x99\xcc\xd1\xa7\xe3\x6d\xfa\x53\xa2\x58\x0f\x66\x12\xed\xed\xa0\xcd\xad\x9f\xf7\x08\xda\xac\xf0\xe1\xc1\xf1\xf1\x1e\xa3\x13\x18\xb2\xde\x2e\x1b\xee\x95\xa7\x4f\x5e\xac\xaa\x3a\xaf\xfd\x20\x1f\xdd\xaf\xde\xab\x5a\xd4\x69\x1a\xf8\x58\x14\xa1\x8f\x95\xac\xb3\xe1\xc2\x2e\x88\xf3\x0c\xe5\x41\x9f\x4b\x2c\xa4\xca\xe7\x3f\xc6\xd6\x60\x9b\x85\x1c\x55\xf7\x10\xf2\x3d\x84\x1a\x1e\x42\x4d\x0f\xa1\x96\x87\x50\xdb\x43\xa8\xe3\x21\xb4\xe6\x21\xb4\xee\x21\xf4\xca\x43\x7e\xdd\x43\xbe\xef\x21\xbf\xe1\x21\xbf\xe9\x21\xbf\xe5\x21\xbf\x2d\x59\x58\xae\xd1\xba\xe4\x1b\x81\x47\xca\x13\x18\x7e\x9b\xc2\x25\xf5\xa0\xad\x57\x0c\x7e\x83\xc1\xf0\xa1\x8d\x02\x4e\x93\xb5\xd5\x62\xb8\xbc\x62\x30\xd6\x25\x3c\xd7\x18\xac\x0e\xc3\xc5\xa7\x30\x7d\x39\xd6\xb2\xcf\xea\x72\x5c\xea\x14\x06\xe0\xc1\xf1\x6c\x52\x58\x04\xbe\x2f\xf7\x5b\x86\xd3\x62\x75\xdb\x0c\xf7\x35\x06\xa3\x21\xe1\xe9\x33\x58\xeb\x0c\x17\xd6\x6f\xbf\x79\xb6\xf4\x5a\x9e\x8b\x74\xce\x5c\x70\x3c\xd6\xa4\xb1\x6a\x30\x98\x1c\xe7\x8e\x3a\x1e\xd0\xb7\xa6\xd6\xf7\x0e\xab\xd3\x2c\x60\x41\xdd\x76\x81\x33\x87\xc1\xc7\x03\xda\xf2\xb5\xbe\x43\xa1\xb6\xd4\xc1\x35\x86\x60\xa7\x18\x5c\x01\xa4\x21\x0d\x34\x45\xb6\x00\xb4\xce\xea\x48\x83\x05\x13\xd3\x2e\x06\x57\xc0\x68\x4a\x03\x4d\x91\x95\x10\x6a\xb0\x91\xad\x4b\xc0\xf8\x68\xac\x89\xd9\x13\x14\x8a\xd8\xe8\x50\x64\xd5\xd9\xc8\xe6\xad\x0c\x8a\x22\x1b\x2b\x40\x4f\x6e\x89\xd3\x56\x53\x1a\xcf\x4e\xf1\x4d\xa1\xe9\x35\x0f\x3e\xc1\x50\x71\x7a\x7d\x55\xd0\x1e\xa7\x29\xbf\x2d\x0d\xeb\x1a\x2b\xab\xcc\x87\x5f\x10\x81\x98\x8b\x57\xac\x20\x27\x9e\x75\xa9\x0c\x47\x7c\x0d\x7e\xcb\x67\x29\xb1\x96\x5b\x45\x55\xde\xbe\x58\xf3\xf2\x9a\x58\x57\x40\x16\xa0\xf8\xfa\x6c\x17\xb4\x2f\xfa\xd9\x28\x50\x10\xe3\xc4\x48\x86\xc2\x45\xda\x94\xcc\x5b\x20\x0c\x31\x65\xf0\xdb\x05\x02\xd0\xcf\xb5\x62\x21\x42\x83\x2d\x86\x48\x47\x43\xba\xa9\x0e\xbe\xe8\xb4\x5f\xc0\x11\x63\x27\x16\x34\x7c\x57\xe0\x08\x06\xe2\x4b\x83\xd4\x29\xda\x15\x0b\x8f\x2d\x60\xbf\x69\x99\x0f\xd1\x01\x0d\x71\x0e\x48\x2c\xb8\x86\xf4\x6f\x5b\xac\x62\x75\x80\xda\x96\x72\x2d\x75\x66\xc4\x4c\x16\x9d\x42\xbe\x8f\xce\x94\x2c\xd9\x9f\x47\x64\x85\x58\xe6\x03\x89\x50\xcd\x75\x0f\xd5\xaf\xda\x9b\xeb\x8d\xb5\x57\xaf\x5e\x91\xdf\x9d\xed\xad\x57\xdb\x6f\x37\x7d\xf2\x7b\x7d\xc7\x7f\xfb\xb6\xb7\xd5\x23\xbf\x37\x5f\xb5\x9b\x3b\x5b\xad\x6d\x75\xbe\x47\xa9\xb3\x81\x76\x7d\xb3\xb1\xfe\x76\xbb\x03\x0d\xf4\x5a\x5b\x5b\x7e\xa3\x05\x0d\x6c\xad\xd5\x9b\xdb\x3b\x4d\xf2\x7b\x6d\xb3\xb3\xb5\xd6\xd9\x86\x86\x39\x42\x67\x56\x7d\xc0\xd1\xde\xe1\xf6\xfe\x96\xdf\xa9\x43\xf8\xfd\x39\x3a\x24\x51\xb6\xd0\x22\x49\xaf\xe8\xae\x7c\xdb\xbb\x22\xaa\x4c\x04\x24\x1c\x41\xb0\x3b\x6b\xad\x76\xa3\x59\x87\x11\xdc\xde\xe9\x6d\x6d\xbe\x5d\x87\x0e\xbe\x5a\x7f\xbb\xb9\xd5\xdb\xd9\x26\xbf\xfd\x7a\xb3\xd1\x6e\xad\xc1\xe0\xf4\x9a\x5b\x8d\x6d\x7f\xa7\x7e\xe6\x54\x8d\x57\x55\xca\x5b\x15\xbb\x95\xbd\x94\xfc\x92\x9b\x9a\xf9\xe6\xf8\x14\x0b\xd0\xbd\x16\x66\x91\x8e\xeb\x9b\xfd\xcf\x52\x69\x7e\x79\xf0\xd9\x34\x64\x42\x65\x77\x2a\x52\x3d\xb4\x81\x6a\x66\x01\x44\x0d\x40\xa5\xc6\x0a\xc3\x07\xe9\xe5\x62\x46\xa5\x06\x40\x66\x57\xaa\x01\x34\xad\x4b\x4d\x70\x25\xaa\x31\x34\xcf\xd6\x79\x17\x89\xfb\x07\x42\x8a\xce\x2b\x47\x60\x00\x9f\x47\x63\x77\x81\x14\x0a\xa4\xce\x02\x20\x7e\x7e\xfe\xc3\x0d\x01\x64\xa2\xcf\x7f\xb8\x21\xc0\x36\xfd\x39\x73\x43\x80\x4d\xe3\x73\x96\xda\x23\x5a\xaf\xae\x92\x55\xf6\x85\x1c\x9a\x2f\x82\x34\x22\xd2\xb1\xe5\x92\x36\x18\x7b\xa8\x3f\xf6\xd0\x60\xec\xa1\x70\xec\x21\x3c\xb6\x34\x14\xa4\x1e\xea\xa7\x1e\x1a\xa4\x1e\x0a\x53\x0f\xe1\x54\x6f\x2c\x20\xa8\x04\x04\xe1\x5d\xd3\x65\xa4\x9f\x42\xd0\x71\xf8\xe8\xeb\x1f\x07\xe4\xe3\x80\x7e\x6c\xe8\x1f\x43\xf2\x31\xa4\x1f\x9b\xfa\x47\x38\x30\x60\xfa\xb1\xa5\x7f\x14\x69\xaa\x03\x35\x2f\x35\xef\x92\x7e\x2b\x68\x35\x25\x84\x7f\x97\x37\x90\x6f\x5d\xdb\x39\x59\x3e\xc1\x18\x2d\x17\x6b\x6a\xf9\x8f\xf1\x69\x74\x76\xb6\xf4\xd5\xe6\xc4\x00\x5e\x3b\x6f\xfc\xce\xd2\x9f\x4f\x9f\xa8\xac\x91\xb4\x81\x86\x7e\xad\x3f\xf6\x06\x63\x2f\x1c\x2f\xa1\x65\x34\x1a\xdb\x7d\x6f\x6e\x90\x50\xc8\x45\x6f\x9a\x0d\xaa\x6a\xb3\x40\x6b\xe8\xd0\x8c\x91\x37\xa0\xb5\xd6\x9d\xd0\x9a\x3a\x34\x63\xaa\x0c\x68\x9d\x96\x13\x5a\x4b\x87\x66\xcc\xad\x04\xed\xcf\xd5\x55\x06\x71\xbd\xee\x84\xd8\xd6\x21\x1a\x04\x81\xec\x61\xd2\xc9\x24\xe6\xd6\xe9\x22\x5f\x50\x9a\xe4\xe3\x5a\xee\x65\x64\x5a\x6d\x4e\x1b\x40\x03\xf9\x32\x1e\xdb\xa7\x1c\x56\x84\xb1\xa4\xc8\x1f\xd0\x6d\x68\xfb\x02\xe4\x0e\xed\x92\x35\xe9\x5b\xdd\x80\x60\xbd\xf4\x6d\xb5\x61\x99\x19\x37\x89\x02\xd5\x20\x45\xcb\x12\xb5\xa6\xb7\xa7\xd6\x76\xad\x9f\x7a\x83\xd4\x0b\x53\x18\xf1\xf4\x6e\xd4\xda\xd2\xa1\xdd\x95\x5a\x55\x68\x77\xa2\xd6\x86\x0e\xed\xce\xd4\xea\xeb\x10\xef\x99\x5a\x53\xb8\xb5\x2e\x21\xd7\xd4\x41\xae\xc0\x51\x53\x1b\xb9\x02\x23\xb6\x7d\x01\x16\x4d\xc9\x35\x75\x92\x2b\x6c\x00\xb6\xda\xb0\x35\x98\x16\x1a\x3a\x2b\xdf\x93\xd3\x31\x80\x0c\x09\x56\xbf\x9a\x84\x49\xfe\xb3\x81\x6a\xbb\xd4\x34\x77\x40\x38\x73\x68\xe9\xe9\x2e\x33\xe1\xdd\xa5\xe6\xb7\x21\x29\x67\x1b\x91\x5d\x66\xa6\xbb\x4b\x0d\x69\x31\x29\x17\x58\xcb\x35\x59\x39\x30\x96\x85\x1d\xa1\x6f\x2d\xd7\x62\xe5\xc0\x30\xb9\x4f\xca\x0d\xac\xe5\xc0\x80\x59\x19\x16\x5d\xac\xdd\x61\xa9\x35\xee\x60\x9e\x15\x06\x79\x20\x84\x21\xf2\x60\xd9\xf8\xe7\xa7\x61\xe4\x25\xe3\xb7\x51\x9e\x9d\x24\x39\x70\x3c\x0a\x33\xde\x0a\xf2\x80\x5a\x6d\xbd\x40\xeb\x16\xe8\x50\xe7\x03\x1e\xe6\x46\xd2\x46\x28\x6f\x74\x66\x33\x0c\xcd\x2c\xc4\x88\xe5\x5b\xa4\xc6\x4c\x05\x48\x22\x4d\xb6\xcf\xd0\xd7\x0d\x9a\x58\xb8\xb0\x91\x10\x25\xfe\x85\x9a\x0d\x9d\x5a\x0b\x48\xb5\x5a\xad\x28\xba\x8c\x08\x7f\x20\x20\x5f\x2d\x11\x50\x2d\xb2\x6e\xfd\x96\x43\x80\xe6\x55\xe9\x70\x14\xc2\xb3\xf4\xb2\xba\xf0\x6c\x00\x63\x82\xb3\x06\x6c\x9e\xe0\x6c\xeb\xa8\x9c\xa7\xa3\xc8\x87\xc9\x73\xec\x80\x71\x8c\x25\x6d\xc7\xea\x2a\x9c\x04\x11\x64\x77\xa1\x0e\x59\x56\xc3\xa9\x29\x3d\x79\x99\xd9\x5c\xca\xc9\x12\x56\xb7\x2c\xa3\x5b\x08\x67\x17\x6d\x20\x59\x7c\xbf\xdb\xf9\xad\x5d\xe9\xf8\x66\x3f\x91\xed\xc2\x51\x6c\xd7\xe2\x4c\x82\xca\xce\x60\xbb\xc2\x5d\x6f\x57\x39\x5e\xed\x2e\x7c\xae\xa2\x14\xb2\xab\x9c\xa9\x76\x9d\x87\xa9\xf9\xa6\x70\x47\xf4\x26\x9c\x4e\x2e\xcb\x60\x11\xc2\x60\xab\x45\xd9\x8d\xb9\x36\x41\x0a\x9b\x1a\x8c\x93\xb8\x9c\x41\xfd\xff\xec\x7d\xff\x72\xdc\x36\xd2\xe0\xdf\xf1\x53\x60\xb7\x6a\xed\x51\x34\x96\x08\xf0\x17\x68\x5b\xb9\x4b\x14\xfb\x73\x2e\x76\xec\xb2\xb5\x67\x7f\xe5\xb2\xb3\x20\x09\x6a\x18\x8f\x66\xf4\xcd\x50\xd6\x68\x37\x4e\xdd\x6b\xdc\xeb\xdd\x93\x5c\xa1\x01\x92\x20\x09\x80\x33\xb2\x9c\x6f\xb3\x6b\x6d\xad\x33\x33\x6c\x74\x37\xfa\x17\x9a\xf8\xd1\x80\xad\x04\x02\xaa\x9d\x5d\x80\xaf\xf6\x6d\x10\xf2\xf1\xcf\x03\x23\x91\xed\x86\xb6\xa6\xd8\x84\xa7\x9d\x7d\x51\xf0\xf1\xa3\x5c\xfd\x47\xfa\x8e\xb8\x02\x4f\x36\x53\x74\x35\x45\x7f\x37\x5d\xf3\x31\x99\x6c\xe0\x64\xe7\x15\xfc\xfb\xf7\xf6\xb6\xf6\x8f\x03\x3c\xc4\x8d\x67\xb2\xd9\xbb\x3d\xb9\xda\x93\xc7\xc9\x7f\x13\x5f\xfe\xbe\xb7\xb7\x77\xdf\x86\xcd\x1f\xc5\x26\x10\xfd\x26\x30\xb6\xac\x59\x70\x05\xe3\xb8\x6e\x03\x06\xe0\xed\x6a\xef\xf6\xe4\x37\x60\xce\x8e\x31\xdc\x46\x66\x42\x68\xbf\xb6\xa8\x2c\xb8\x20\x95\xd8\x4c\x17\x46\x4c\x9b\x07\x0f\x16\xc0\xd5\xe6\x9b\x6f\xbe\x99\xf8\xe4\xee\x42\x67\x4a\x7e\x70\xee\x86\xa9\x37\xc3\xc8\x7b\xe0\xb6\xdb\x0c\x63\xbd\xed\x47\xed\x6f\x81\x3d\x4f\xf5\xe7\x6a\x29\x23\xd3\x10\x8d\xe5\x7e\x1e\x0b\xf4\x75\x2f\xe6\x51\x9e\xd1\xee\x64\xa9\x27\xf0\x26\x77\x14\x8b\x77\x0c\xbb\x70\xec\xad\x2e\x6b\x6e\x4d\xdb\x6d\x86\x93\x83\xbd\xad\x36\x35\xc0\x76\x5b\x95\x6a\xe5\x3c\x7e\xfa\xed\xf1\xef\xa0\x1a\x47\xf3\xf7\xfc\x0a\x9a\xae\x79\xb6\xe2\x95\xe5\xee\x24\x8b\x42\xe1\xca\xc1\x1b\x54\xa8\xbc\xc8\xb0\x51\xcd\xe3\x33\x96\xb5\xea\xd1\xb7\x58\x19\x34\xd4\x01\x1e\x6a\xe9\x8c\x65\x06\x4d\x7d\xf5\x51\xae\x03\x5b\xb6\x46\xd5\x90\xe6\xdb\x89\x3e\xbe\x9d\xc6\xf1\x97\x2d\x4e\xff\x0a\x47\x56\x3e\xf7\xd2\x7d\xaf\xb0\x9a\x46\xd8\x5a\x32\xed\xe5\xe3\x6f\xef\xe2\x2d\x56\x32\x86\x77\x55\xdf\xe4\xfa\xc5\x11\x9c\x3e\x6d\x97\x30\xca\x45\x59\x4d\x0c\x05\xa8\xba\x4b\x1a\xbc\xc8\x72\x96\xd2\xc4\x50\x9b\xc9\xdb\x24\x34\x65\x79\x56\xf0\xce\x1a\x87\x09\x30\xf3\x73\xc2\x71\xe1\x75\x9f\x7d\xfa\x12\x88\x2d\x43\x37\x27\xdf\xc3\x19\xf4\x01\x82\x6d\xe6\x9e\xcd\xd3\xc5\xe2\x51\x6a\x9e\x2c\x86\x84\xd1\x3c\x55\x0c\xaf\xab\xe6\x89\x62\xf1\x88\x37\xd3\xc4\x03\x4e\xad\xf3\xc4\xd6\x39\x61\xcb\xdb\x02\xcc\xfb\x20\x79\xc2\xd4\x52\x0b\xe6\x95\x4c\xfc\xbb\x25\x30\xba\x67\x4f\xeb\xbf\x7a\x42\xc9\x8c\xa8\x3e\xe7\xf0\xea\x4d\x89\xee\x22\xff\x2d\x7a\xa7\x3e\xd2\xf6\x23\x0e\xb4\xcf\x91\xed\xee\x48\xc5\xd2\x64\x01\x87\x63\xe5\xbb\x25\xbc\x3e\xf8\xd8\x5c\xa6\xc6\xfc\x26\x04\x53\x4b\x13\x26\x90\x84\x80\x84\xc9\x37\x99\x18\x0e\xc8\x72\xb4\x0f\x84\x6c\x13\x8d\xe8\x01\x22\x9e\x55\x6a\x30\x6d\x36\x99\xa4\xe8\x36\xca\x64\x9e\x2b\x3e\xe6\x80\xd9\xdb\x84\x4c\xae\xc2\x8e\x4c\xf1\xa1\x07\x28\x18\x23\x91\xa2\x77\x28\x43\xef\x50\x2e\x31\x47\x3c\x4f\x78\xca\x4c\x45\x87\x7a\x98\xa3\x1d\x98\x97\xbc\x8b\x4f\x99\xea\xc5\x5d\xe4\x6d\x62\x8f\x07\x81\x4f\x02\x3b\xad\xc3\xaf\x1b\x72\xd4\xdb\x43\x5f\x1f\x6e\xdd\x17\x81\xdf\x0f\x93\xdc\xe7\xa4\x3f\xcb\x83\x2c\x2a\x15\xfe\x92\x9b\xa6\xfb\xd0\x11\xca\x4c\x53\x7c\x08\x48\x3e\x78\x80\x7c\x4f\xf5\x12\xd4\x6f\xbc\x5b\x14\x1d\x21\x13\x1f\x6c\xbb\xd3\x5a\x5b\x4d\x06\xaa\x49\xb4\x7a\xb2\x8d\xf5\x4f\x78\xa3\xce\x44\x20\x4c\x18\x0e\x2a\x9f\xa0\xce\x24\x20\x4c\x16\x66\x66\x18\x5f\x9f\x28\xcc\xcd\x30\x81\x3e\x49\xc8\xfb\x30\x5f\x26\xf8\xfe\x59\x27\xf8\x44\x2e\x7c\x50\xcc\x97\xcb\x95\x3e\xe7\x76\x08\x03\xb5\xfa\xfb\x24\x22\x50\x0b\xa1\xc5\x3c\x32\x4f\x37\x98\xa6\xfb\x4c\x33\x74\x3b\xce\x03\x19\xa7\xeb\xfe\x88\xb3\x41\x5f\xa6\x10\x06\x93\x01\x22\x7d\xde\x69\xf6\x00\x1a\xb8\x26\x0e\xba\x09\x79\x77\xce\x40\x3c\xfb\x32\x5d\x70\xa3\xd3\x05\xa0\x8f\x2d\x66\x0a\xcc\x6a\x69\x27\x09\x94\x6a\xec\xc7\xa6\x04\x80\x7d\x5a\x80\xfe\xa1\x0b\x6c\xac\x67\x8c\x84\xd1\xe7\xae\x8d\xa1\xa8\xfc\xfb\x4c\x1f\x0c\xa6\x07\xf4\x77\x78\x12\x46\x9d\xb7\x78\xed\x14\x76\x7f\x56\x80\x90\x60\xbb\x79\x01\x01\xd8\xc1\x09\xdf\x25\xf2\xdf\x75\x6e\x20\xc3\x5e\x98\xf0\x9c\x8a\x57\x7e\x3f\x8a\xb3\x3c\xf4\x62\xf8\xec\xc5\x5e\x9e\x63\xf8\x5c\xc4\x1e\x0f\x13\xdf\x3c\x67\x50\x14\x99\xe7\xa5\x3e\x4c\x2e\x44\x34\xa4\x38\xc4\xf2\x73\x50\x24\xb4\x60\x80\x20\xe5\x05\x0b\x0a\x16\xec\x30\x5d\xb0\x55\xe6\xa9\x85\x7d\x25\x3a\xad\xa5\xe3\x14\x2d\x44\xd4\x26\x9d\xb9\x7b\x34\x4c\x5e\x2c\x0b\x4b\x5f\x86\xe8\x91\x11\x97\x90\x60\xd7\x41\x5a\x34\x19\x19\xa6\x3b\xde\x31\x18\xa8\x09\x31\x1f\x62\xff\x32\x54\x7f\xc2\x50\x2d\xb4\xb2\xdd\x60\x6d\x54\x4e\x67\xb8\x96\x0a\x72\x0e\xd8\x84\xf4\x8f\x3a\x6b\xe7\x9a\xd5\x70\x74\x2f\x4e\xc4\x00\x9e\x7c\x99\xd7\xff\xef\x19\x98\xff\x78\xc7\xf2\x7e\x90\x97\x38\x94\x7f\x6f\x4e\xe5\xa2\xd5\xf2\x62\x91\xa3\xac\x7b\x5e\x4f\xeb\xc1\xe3\xfe\xd5\x29\x3f\x76\x97\x01\xea\x89\x5a\xde\xe2\x90\x4f\x4c\x19\x0c\xd2\x97\x94\xcb\xf5\xf3\x55\x79\xc6\x27\x0b\xe3\x30\xb6\xfe\xaf\x55\xf5\x53\xfd\x9e\x2f\xbe\x4c\x16\xfd\xf7\xcc\x66\x22\x58\xaa\x13\x1d\x21\x72\xbf\xfe\xfc\xe0\x48\x62\xa8\x7f\x70\xcc\x0d\xff\x69\xb2\x40\x7f\x51\x60\x7b\xd6\xf9\x42\xe5\xa3\x05\x9b\xaf\xf9\xf8\xae\xc0\xfe\xfc\x58\xfd\x3e\xbe\xba\xe8\xbe\xe1\x1a\xc4\x72\xca\xab\x47\x2b\x06\x9f\xd9\xfc\xbb\xb2\x5a\x1b\x04\xd4\x2c\xe1\x2f\xd0\x5d\x34\x59\x40\x65\xcf\x3d\xf4\x75\x67\xf2\xa3\x3f\x93\xa5\xd1\xaa\x67\xa9\xf5\xca\xec\xf0\x1b\x28\xa4\x57\xbf\xe7\x72\x56\xce\x39\x9a\xa8\x67\x0f\x90\xda\x92\xd9\x97\x62\xab\x4d\xab\xa0\x1b\x14\xd4\x2a\xe5\xc7\x6f\x24\x10\x94\x1d\x1d\x08\x02\x6c\xe1\x7c\x79\x39\x59\x4c\x11\x46\x87\x88\xec\x6d\x51\xb1\x1d\xc1\x4d\x28\xbb\xa0\xf5\xf7\x8c\xc5\xb3\x25\x8a\xfd\xfd\x91\xa9\xd0\x45\x07\xa2\xce\x90\x26\x2d\xce\xeb\xaf\xb1\x89\xc4\x7b\xbb\x6c\x7a\x98\xa1\x7f\xf6\x95\xb6\xc7\x07\xeb\x79\x99\xf1\x89\xb7\xf7\x65\xd5\x6b\xeb\x55\xaf\xc1\xa3\x02\x1e\x85\xa6\x47\xa7\xf0\x68\xb0\x60\x04\x39\x0b\x3c\x8a\x3f\x79\x19\x2d\x72\xd4\xba\xff\xbd\x97\xd1\x4e\xd9\xd9\x19\xf3\x36\xcd\x62\x1a\x1e\x08\x65\x08\x0d\x1b\x8d\x27\x75\xcb\x07\x0f\x10\x91\x8b\x5e\xf5\x2f\xdf\x7c\xf3\x0d\x8a\xf7\xf6\x10\x7a\x67\xc6\xd4\xfd\xeb\x60\xc2\xc1\x00\x13\xa6\x7b\x7b\xdb\x61\xea\xb6\xf3\x8d\xe1\xa5\xd3\x13\xdc\xf6\xdb\xb8\x49\xbe\x0b\xac\x75\x1b\x4b\x66\xb5\x6e\xe3\x4d\x5d\x6f\x7a\x4b\x66\xbb\x98\xfc\x21\xa6\x64\xc7\x6e\xd7\xed\xcc\x77\x12\xa0\xd6\x70\x94\x12\xf7\x55\xcf\xa1\xc8\xaf\xea\xe1\xbe\x73\xc1\xd4\xb6\xfa\x99\xc1\xa9\xc6\x09\x47\xb7\x51\x01\x9b\xdd\x7e\x13\x1f\x4f\x6d\x57\xb8\x9c\x31\xa8\x30\xc7\xd0\x6d\x94\x02\x38\x93\xab\x83\xef\x90\x5a\x27\x34\xf1\x0f\xc9\x4a\x79\x2a\x18\x6f\x96\x5a\xd5\x62\x9b\x5a\x6b\x95\x5b\xff\xe4\x13\x9c\x68\x4f\xb0\xdf\x79\xd4\x69\x64\x1e\xdb\x1a\x62\x70\x4f\xcd\x84\x83\x8d\xcb\xca\xc9\x1c\xda\x45\x0a\xa3\x7c\x82\xb5\x27\x18\xeb\x8f\x62\xb9\xb3\x55\x3e\x22\xa1\x79\xc4\x83\x05\x64\x41\x69\x86\xf6\x6b\xb2\xfb\x42\xa8\xfb\xf2\xa2\x37\xeb\xe2\x31\x34\x24\xe8\xa8\x16\xcc\xbe\x10\xad\x89\x82\x08\x5c\xa7\x06\x04\x22\xd6\xf5\xeb\xb4\x8b\x3f\x11\x1e\x4d\xe9\x17\xd4\xce\x84\xdb\x12\xb0\x69\x99\x0f\x8d\x2c\x91\xf6\xab\xad\xa3\x91\xe5\xd0\x49\x25\x04\x51\x11\x13\xad\x7f\x97\xa5\x51\x09\x13\x2a\x18\x28\x19\x5e\x98\x61\x22\x05\x03\x25\xc1\x4f\xcd\x30\xb1\x82\x01\x9f\x9f\x7d\x59\x86\xfd\xb2\x0c\xfb\x65\x19\x76\x98\x6d\x7e\x59\x86\xfd\xa7\x9c\xe3\x0d\xa3\x9d\xe7\x78\xc3\x68\x74\x8e\x57\x7f\x67\x1b\xce\xf1\x86\xd1\x97\x39\xde\x1b\x9f\xe3\x0d\xa3\x6d\xe7\x78\x4d\xca\xe9\xce\xf1\x82\x82\xdc\x9b\xb6\x9b\xb5\x33\xf3\xd2\x2c\xf5\xfe\xd0\x4b\xb3\x9b\x28\xf8\x5d\x2e\x2e\x68\xe8\x7c\x99\x05\xee\xce\x02\x6f\x22\x58\x53\x3d\xd8\x44\x81\xf6\xfb\xeb\x28\x50\x55\xba\x01\xe2\x40\xab\x13\xbd\x53\x4d\x37\xad\x7f\x2f\x1e\x3f\xfb\xf9\xd9\xa3\x47\x2f\x1f\x9e\xbc\xec\xcf\x16\x3f\xff\xe1\xe7\x1f\x7e\xfa\xfe\xe1\xeb\x87\xc3\x5b\xb9\x5f\x3c\xfb\xeb\x4f\xdf\xff\x7c\xfc\xec\xa7\x97\x27\xdf\xfe\xd4\xb4\xd4\xc8\xc9\x69\xe5\xe3\xed\xa6\x95\xb5\x16\xab\xd9\xb2\x2e\xda\xd2\x9b\x93\xae\x49\x8b\xb7\x6b\x3c\x45\x57\xb6\x52\xe5\x95\x9c\x12\xa9\xd0\x03\x44\x82\xfb\xa8\x32\x4c\x89\x68\x7d\x7e\xb3\x41\xfb\x28\x44\x5f\xa3\x2b\x79\x7a\xb0\xaa\x0f\x69\xc2\x27\xb2\x07\x33\x95\xe8\x2f\x28\x1a\xe4\x22\x90\x06\xf2\xcb\xd7\xe8\x08\x5d\xa1\xbf\xa0\xd0\x94\x25\xf2\xcb\xff\x14\x58\x09\xfa\x1a\x09\x3a\xbe\xa0\xb3\x67\x00\xde\xc8\x69\xb9\xd7\xbd\x9f\xaf\xe4\xcf\xff\x69\x99\x0a\xd6\xc4\x76\x5e\xa2\x12\xae\x13\x30\x08\xad\x91\xcc\x46\x4a\x66\x23\x0f\x68\x6e\x0c\x82\x69\x40\xa5\x74\xd1\x95\x04\xbd\xb2\x4c\x2b\xb5\x06\xd2\x15\xe3\x15\x5c\xf0\x33\xec\xb5\x90\x6b\xbf\xeb\x1f\x47\xfb\xd6\x5b\xe5\xe8\x5a\xc3\x93\x47\x2f\x5f\x08\x5e\x37\x1e\x36\x19\x83\x7e\xef\x84\x65\x7e\x4c\x80\x01\x89\xda\x58\x9f\xae\x2f\x7b\xb6\x65\x04\x7b\x52\x83\x59\x44\xa8\x6e\x9e\xf8\x05\x3d\x40\xf1\x7d\xf4\x8b\x63\x66\x0e\xfa\x00\x47\x53\xcd\x55\x51\x6a\xf2\x69\x59\x3d\x5f\xae\xa1\x8e\xab\xb0\x2a\xb8\x2c\xf7\x97\x3d\x74\x17\x99\x76\x53\xd7\xc8\xf5\x46\x0f\x90\xaa\x17\x61\x02\x16\x7f\x83\x0e\xbe\x3b\x42\x40\x46\xc3\x62\xa1\xd5\xdd\x51\xad\x53\xfd\xe6\x08\xc8\xda\x37\x57\x0f\x28\x3f\xd5\x28\x77\x50\xdd\x35\xbc\xf7\x34\x0c\x6c\x37\xb5\xa4\x19\xd6\x82\x6f\x2a\x30\xa0\x11\xb5\x50\xfb\x4e\xf4\xc3\x43\xf4\x7c\x55\x9e\x95\x55\xf9\x81\xa3\xf3\xe5\xfc\x6a\xb1\x3c\x2b\xd9\x1c\x2d\x3f\xf0\x15\xfa\x8f\x47\x13\xb2\x77\x0f\x6d\xde\x51\xb4\x8f\x36\xef\x22\xf8\x37\x84\x7f\x03\x11\x66\xcc\x28\x95\x45\x4b\xf2\xf2\xfc\xc0\x3b\xe4\x6d\x62\xc7\x96\x79\x0b\x73\x0a\xc3\x91\xd1\x3e\x46\x16\xbd\x7a\x01\x5e\xce\xf1\xa9\xe1\xa7\x2e\x30\xd6\xd7\xd9\x74\x60\x3f\x7b\xbb\xae\xa6\xac\xc1\x7f\x2a\x7e\x76\xbe\x5c\xb1\xd5\x55\xe7\x26\x3a\xe1\x02\x27\xfa\x40\x64\x5d\xa5\x34\xde\x3a\x63\xf6\xfe\x13\x63\xcf\xc6\xf8\xee\xad\xed\xf8\xdb\xad\xec\xf8\x9d\x75\x1d\xdf\xb5\xaa\x73\xf3\x57\x09\x2c\x2f\xaa\xf3\x8b\xea\x09\xbc\x5a\x77\x60\x11\x24\xe9\x39\x5f\x97\x2b\x9e\x6b\x17\x0d\xa4\x65\xb5\xae\x0b\x42\xcb\xc6\x9d\xb7\x85\xba\xf1\xb3\xc5\xbc\x56\x93\x56\x83\x9b\xad\xf8\x3d\x44\x48\x30\x45\x24\x8c\xa6\xc8\xa7\xc1\x14\x85\x98\xf4\x1b\xab\x3b\x0b\xee\x89\x67\xfa\xa3\xfe\xa5\x05\xf5\x4b\xb3\xf5\xde\x02\xbd\x77\x3d\x6c\xd7\xb8\xbf\x00\x66\x6a\xe1\x26\xc4\xfa\xdd\xbb\xfe\xf6\xe6\xad\x25\xda\x6f\x61\x6a\xe2\x0f\xf0\x48\x93\x5b\xf0\xcb\xc6\xec\x60\x11\x6e\xac\x94\x00\x70\xd2\xdc\xd6\x0b\x23\x40\xe4\x79\xe8\x2e\x12\x03\x6d\x73\x53\x82\x2e\x09\x91\xbd\xf8\xe4\x73\xad\xe8\x19\x26\xe6\x0c\x42\x33\x4e\x9e\xd5\x9d\x78\xc2\x16\x30\xf7\xd3\xeb\xda\x21\x22\xa6\x39\xb4\x74\xbd\x5c\xa5\xe3\xf2\xef\xa1\xff\x94\x4a\x82\x4f\x49\x89\xba\x8b\x62\x42\xd6\xd6\x69\xf3\xa7\x04\xee\xa0\xef\x83\x8b\x58\xef\x2a\x66\x61\xbd\x82\x5a\x90\x77\xd6\x13\x24\x9d\x42\x82\xe4\x3a\x15\x04\x49\xa7\x74\x20\xb9\x7e\xcd\x40\xc5\x30\x1e\xe3\x18\x77\x59\xc6\xd7\xe2\x19\x77\x99\xc6\xbb\x70\x6d\xd4\x83\x34\xae\x66\x6a\xa4\x5c\x54\x4b\x69\xcd\x66\x4d\xcf\x19\x4c\xe6\xd5\xee\x6c\x10\x85\x80\x38\x80\xfb\x66\xdf\x1d\x81\x5c\x6c\x30\xf3\xe5\x25\x52\x30\xe3\xab\x11\x2f\xc4\x00\xbb\xb6\xf8\x80\x4c\x94\xc1\x0f\xe4\x47\x99\xf4\xc2\x67\xbb\x0b\x9c\xcc\x78\xc5\x86\x4f\x76\x78\x6b\xd0\x90\x3d\x2d\xc5\x2b\xc8\xfc\xe2\x6c\x01\x9d\x33\xb8\x55\x2d\xc1\x3a\xcd\x9e\xa2\x36\x93\x36\x02\xef\xf8\x4e\xa2\xd3\xe8\x68\xa9\x7d\x43\xb1\x10\x12\x7f\x75\xea\xd9\x68\xcf\x05\xfb\x44\x83\x9d\x2f\x2f\xad\x79\xa9\x55\x5a\x27\xc6\x3c\xc7\xd4\x93\x13\xa1\x85\x93\x37\x1b\x1b\xef\x27\x1b\x69\x6b\x47\xd0\x03\x3b\x10\x18\xdb\x11\xb0\xbe\xdd\xee\x9b\xeb\x99\x81\x23\xac\xb6\x3d\x0a\xa0\x4b\x13\xa1\x97\x00\x5e\x0f\x5d\x8b\xe5\x27\x1b\xdc\x82\xe3\x6d\xc0\xa5\x7d\x9d\x6c\xb0\x4b\x8f\x0a\xf6\x49\x03\x0b\x7a\x74\x9a\xf7\xfa\x62\x05\x1e\x25\xaf\x13\x11\xa6\x3e\x6e\xe5\x27\x9b\x40\xc5\x02\x34\x99\x28\xde\x9a\xa3\xc1\x8a\xbe\x3a\x1f\x6c\x7b\xbd\x01\x6c\x4f\x1a\x6c\x32\x6a\x48\x6c\x4f\x7a\xd8\x9e\x8e\x63\xfb\x5d\x9d\xaa\x13\x0a\x1d\xf6\x89\xfa\x21\xd1\x62\xa6\x68\xa7\xb7\xbd\x17\xb3\x25\x7a\x5e\x3a\x2c\x5b\x90\xac\xef\x7c\xc4\xf7\xb5\xaf\x32\x95\x6b\xbe\x7f\xb2\xc9\x77\x24\xd7\xa0\x75\x99\xb1\x00\x92\x16\x34\x16\x90\x6a\xe8\x27\x2d\xb4\x3d\x24\xc1\x60\x31\x5b\x3e\x93\x59\xca\x51\x67\x3e\x4c\xe7\xcb\xda\xd9\x17\x4b\x48\xf4\x1c\x21\x5e\xbc\x40\xb7\x24\x46\x27\x1e\x34\x5f\x99\xd4\x9d\x7e\xf0\xa0\x65\x12\x4c\xbb\xee\x1f\x5c\xa5\xe9\x13\x74\x57\x7b\x6e\x33\x74\xd4\x75\x9d\x06\x87\x11\xf9\xd3\x1d\x91\x77\xe7\x3c\xda\xee\x6e\x35\xe3\xd1\xef\xb2\xe2\x4a\x43\x03\xb3\x1d\x43\xe6\xa2\xe0\xda\x3d\x7f\x3a\x42\xe3\xc9\x8e\x34\x5c\x63\xdb\x8a\x2d\xd6\xe7\xcb\xb5\xd3\x4a\x20\xfc\x3e\x2f\x9f\x48\xc7\x38\x79\xa3\x4d\x28\xb6\x76\x68\x1d\xf3\x64\xc3\x6d\x06\x3e\x05\x39\x36\xfa\x59\xe3\xc7\x79\x89\x58\x05\x43\x20\xc4\x4b\x73\x4e\x78\xe2\x41\x1f\x8c\x45\x5b\x9b\x97\x23\xaf\x09\x00\x46\xb8\x13\xaf\xee\x8e\x84\xb6\xb9\xfc\x89\x57\x77\x46\xc1\x59\xc6\xad\xc3\x43\x74\x3c\x73\x05\xbf\xed\x87\xf5\x6b\x0e\x19\xe3\xa1\x11\x69\xe1\xab\x8e\xc3\xcd\xb8\x32\x62\xdc\xbb\x85\xd4\xba\xd5\x49\x63\x70\xdb\x37\xd9\xe0\xa6\xd1\x44\x4b\x42\xf6\xb6\x19\x00\x25\x02\xd2\x43\x40\x06\x08\x9c\x52\x14\xb9\xc7\x6a\x79\xe9\x10\xe2\x5c\xf3\x86\x93\xd6\x35\xde\xa1\xc9\x6f\x8a\x7d\xf9\xc3\xed\x9a\x19\xf8\xea\x8a\x1f\x73\xcd\x6b\x4e\x5a\x17\xd2\x31\xc2\x0f\x2d\xc6\xf9\xf2\xf2\xd3\x27\x68\x7f\x58\x9a\xde\x48\x06\xfa\xb6\x7a\x5a\x67\x1a\x52\x8c\x6f\xbd\xc9\x4c\x78\x3e\xfa\xd2\xd6\xc1\x62\x73\xc4\x4e\xbe\xd2\x6d\x21\x5c\xd2\xb1\xd8\xf1\xcf\xb5\x2d\xca\x30\x49\x73\xe3\xbb\xa2\x06\xf0\xcd\x8c\x8f\x68\x37\x9c\x06\xfa\x1a\x26\xaf\x86\xf3\x40\xd7\xdd\x4b\x85\xaf\xb3\x95\x0a\x36\x49\x65\xbc\x9c\x77\xf7\x3b\xe1\x3d\x74\xd8\xe5\x7f\x0f\x7d\xdd\xff\x01\x88\xc3\x02\x4d\xb3\x9b\xeb\x9f\x64\x13\xd4\x27\xcf\xe1\xe9\xd3\x8c\x35\xf3\xc6\x39\x48\x74\x68\x54\xbd\x0e\x52\xcf\x02\x0e\x71\x1e\x1a\x37\xd3\xbd\xfc\xaf\x0b\xce\xff\xce\x87\x48\x67\x6c\x3d\xab\x8d\x7b\xab\xbb\xe8\x07\x5c\x7c\xca\x64\xe1\xf8\x9c\xd0\xf6\x29\xbd\x2d\x9d\xdf\x7d\x0e\xb1\xa5\x67\x9f\x95\xd3\x52\x43\x35\x31\xa7\x27\x9c\x3b\xcd\xcd\x69\xa8\xd4\xf4\x9c\x8e\xea\xba\xf3\x8a\xad\x28\xdc\x9d\x78\x32\xe8\xc4\x93\xeb\x76\xe2\xc9\xa0\x13\x4f\x76\xeb\x84\x59\x55\xd2\x74\x95\x93\x55\x4b\xb4\xe2\xd5\xaa\xe4\x1f\xb8\x61\x03\x22\x52\x87\xbb\x65\x3c\x38\xbf\x58\xcf\x6a\x36\x4c\x22\x32\x40\x3e\x1d\x42\x7e\x7a\x79\x62\xc3\xe9\xa1\x86\xf4\x74\xe8\xc2\xd6\xf3\x44\x37\xb4\x6b\xd2\x1e\xbf\xd4\x16\x4a\x43\x38\x6b\x0e\x3b\x6d\x11\x21\xb6\x5c\xcc\xa9\x3f\xb6\xfb\x33\x9d\x62\xff\xb2\x5d\xf3\x9a\xdb\x35\xfd\x5d\x37\x6b\xfa\x63\x5b\x35\x7d\xc7\x46\x4d\xff\xcb\x36\xcd\x9b\xde\xa6\xe9\x6f\xb9\x49\xd3\xa0\x96\xce\x16\x4d\x7f\x9b\x0d\x9a\xbe\xfd\x18\x7e\xb3\xf1\xf0\x1e\x0d\x3e\xbe\x9d\x52\xfc\x2f\xb2\x5d\xb3\x5f\x60\x27\xc4\xe4\x77\xdb\xc3\x59\x97\xdb\x11\x34\xff\x58\xe5\x76\xae\xb5\xdb\x52\x3d\x6e\x77\x7b\xd6\x30\x3b\x15\xe4\x09\x31\xe9\x6c\x0b\x09\x31\xb1\x6e\x33\xa1\x5b\x16\xe4\x11\x80\x9d\xad\x26\x54\x55\xb5\x08\x31\xb9\xb1\x23\xc4\x7a\xf7\xad\x35\x79\x06\x9b\x1c\xbc\x4d\x96\xa6\x69\x92\x87\xf9\x54\x2b\xd8\xb3\x37\x35\x41\x46\x24\x61\x24\x21\x4c\x2f\xe7\xb3\x67\xa8\xdb\x63\x68\x9a\xe0\x30\xf1\x70\xc8\xf4\xea\x3f\x66\x22\x38\x24\x05\xcf\x64\xcd\xa0\xba\x36\xd0\x96\x44\xa2\xd8\xf7\x49\x14\xc9\xb2\x42\xaa\x72\x90\x99\x08\xe5\x69\x10\x30\x1a\xeb\x75\x85\xb6\x24\x92\xa7\x5e\x46\xb8\x97\xeb\x65\x88\xcc\x44\x82\x38\x0d\x03\x8a\x73\xbd\x48\x51\x2f\x35\xbd\xe9\x2a\x45\xc2\x9e\xae\x59\xa5\x08\x47\x5f\xca\x14\xdd\x50\x4e\x44\x77\x2e\x53\x24\x9a\x8c\xe5\x45\x7a\xcc\x18\x66\x46\xf4\x4b\x99\xa2\x9b\xcf\x8d\xe8\xb6\x65\x8a\x8c\xca\xe9\xe6\x47\x74\xb4\x4c\x91\x4f\xdd\x65\x8a\xc4\x30\x7e\x8f\x12\x53\xb6\x44\xfe\x45\xb2\xa5\x7f\xe9\xc3\x2d\x37\x7b\xb0\xe5\x33\x1d\x59\xb9\x7e\x12\x25\x1f\x35\xdd\x55\x88\x7e\xae\x77\xf0\x1a\xee\xba\xe9\x6e\xf2\x3d\x60\xe7\xe7\xf3\xab\x89\xfa\x71\x8a\xd8\xea\xf4\xe2\x8c\x2f\xaa\x75\xff\x4e\x1e\xfd\xf8\x4c\xcb\x0f\x94\x52\x6a\x49\xf4\xc8\x7b\x9b\x80\x50\x46\x8a\x04\xf2\x8a\x3c\x26\x94\x71\x42\xf6\xa6\x43\xb8\x18\xfb\x71\x10\x24\x50\x66\x90\xf8\xbc\x88\xc2\x2c\xd7\x53\x83\x41\x83\x34\xcc\xbc\x22\xcd\x0a\xb8\x00\x21\x0b\x72\x3f\x25\x85\x09\x31\x4f\xd2\x30\x4f\x59\x08\xb7\x67\x63\x9a\xe4\x69\x9a\x39\x11\xfb\x49\x18\x65\x24\x4c\x21\x9d\xf1\x03\x9a\x86\x3e\x35\x21\x0e\x93\x02\x63\x5c\x00\xc7\x69\xe4\x85\xb9\x87\x13\x27\xe2\x84\xf8\x05\x25\x0c\xae\xdc\x66\x05\x4e\x82\x22\x49\x4d\x88\x59\x8a\xb3\x90\xe7\xc0\x71\xce\xa2\x9c\x62\x4c\x9d\x88\x73\xea\xc5\x8c\x49\x19\x33\xdf\xf3\x3d\x12\x18\x65\x8c\x09\xf5\xc3\x54\xde\x19\x11\x84\xb1\x17\x15\x29\x77\x22\x26\x81\x8f\x69\x98\xc2\xdd\x11\x01\xe7\x41\x4a\x68\x66\x14\x45\xe8\x65\x71\x9e\xc1\x05\xe2\x79\x58\x14\x69\xc0\x89\x13\x71\x4c\x52\x1e\xe6\x31\x88\xa2\x20\x71\x4a\x93\xc8\xa8\x3c\xea\xe5\x3c\xc5\xf2\xf2\x0a\x3f\xc5\x51\x12\xa5\xd8\x2d\xe3\x34\xcf\xbc\x48\x56\xa8\x24\x61\x16\x63\xe2\x87\x26\xc4\x19\x4e\xd2\x02\x4b\x06\xb2\x22\x4a\x48\x94\x04\x4e\xc4\x3c\x48\xd2\x28\xc9\x40\x76\x09\x2f\x70\xc0\x72\xa3\x8c\x79\x91\xf2\x20\xa6\x70\x8d\xb8\x4f\x83\x82\x84\xdc\x77\x22\xf6\x8a\x0c\x27\x79\x06\x0d\x68\x4a\xb3\x3c\x4c\x8d\x1c\x93\xc0\xcb\x18\xce\x32\xb8\xa4\x3d\x66\x59\x92\x45\xa1\x5b\x79\x39\x4f\x48\x16\x81\x83\x84\x09\x49\x3d\x12\x1b\x11\x07\x2c\x0e\x68\xc0\xe0\x1d\x21\xe2\x2c\xe2\x01\x75\x73\x1c\x66\xa9\xc7\x92\x1c\x38\x49\xf3\x00\x17\x69\x1e\x18\x5d\x3a\x2a\x12\x4a\x73\x40\x4c\x7d\x8c\x43\x3f\x75\x73\x9c\x50\x9f\x87\x38\x24\xe0\xd2\x3c\x8a\xf2\x82\x99\x1d\x84\xfa\x38\x8b\x22\xc8\xf0\x49\x9e\x06\x3e\xc1\x9e\x3b\x56\x78\x9e\x4f\xe2\x8c\xca\x3b\xdf\x8b\x94\x60\xdf\x68\x6e\x69\x11\x26\x71\x91\xa9\xfa\xa6\xbc\xf0\x38\x77\x5b\x45\x16\x71\xcf\x4b\x0b\x30\x7c\x3f\x67\x94\x16\x99\xd1\x2a\xf2\x90\xc5\x09\x0e\x00\x71\xe2\x7b\x8c\xc5\xc4\x2d\x0a\x2f\xca\x58\xe4\x87\xf2\x7a\x17\xcf\xf3\x29\x31\x3b\x08\x0e\x48\x42\x12\xf9\xee\xe5\x31\x8f\x47\x3c\x76\x8b\x82\xc4\x69\xec\x31\x0a\xc1\x25\x88\x72\x42\x8a\xc2\xe8\xd2\x84\x63\x21\x26\x10\x59\x98\x91\x28\x4b\x48\xe4\x44\x1c\xe4\x24\x8b\xf2\x02\xac\x22\x64\x59\x40\x18\xcf\x8d\xb1\xc2\xf7\xa9\x97\x63\x10\x59\x92\x27\x61\xea\xe7\x85\x13\x71\x14\x7a\x2c\xf6\xc3\x40\x3a\x08\x2b\x22\x3f\xe7\x66\x73\x8b\x98\xc7\x52\x88\xdb\x7e\x16\xc7\x29\x61\xee\xb0\x49\x71\x46\xb2\x84\xc8\xe8\x16\xf3\x9c\x71\x1e\x99\x10\x27\x24\x26\x24\x93\x22\xc3\x01\x25\x7e\xe8\xa7\x4e\xc4\x8c\xa4\x05\xa7\x4c\xc6\xd9\xac\xc0\x9e\x1f\x19\x1d\x84\x51\xcc\xa2\x28\x00\x8e\xd3\x2c\x20\xbe\xe7\xb9\xa3\x5b\x46\x82\x94\xa6\xb1\x07\x71\xd6\x2b\x68\x12\x27\xd8\x18\xdd\xe2\x28\x0b\x31\x03\x19\x7b\x51\x18\xa4\xdc\x77\x5b\x45\x8e\x13\xc2\x29\x4e\x00\x71\xc4\x8b\x90\x60\xe3\x98\x97\x47\x49\xe2\x45\x04\x74\x11\x86\x51\xc8\x92\x11\xcf\x2b\x02\x8f\xfb\xa1\x94\x5d\x18\xc7\x98\x78\x84\x19\xed\xd8\x8b\x18\xf3\x64\xcf\x7c\x92\xa6\x39\x4e\xdd\xca\xc3\x09\x0b\x32\x8c\x21\x6c\xa6\x34\x27\xb9\x97\x19\x39\xc6\xdc\x8f\xa3\xcc\x93\x76\x8c\x03\xcc\xd2\xd0\x1d\xdd\x48\x1c\xd0\x38\x0e\xc0\x8e\xf3\x82\x72\x9e\x26\x89\x09\xb1\x1f\xa4\x5e\x9a\xa5\xd0\x33\x8e\x93\x34\xa0\x23\xe6\xe6\x27\x38\xf3\xb2\x14\x94\x92\x85\x59\x12\xb2\xc8\x37\xc6\x63\x9e\x53\xc6\x02\x08\x9b\xdc\x0f\x30\x65\x99\xdb\xdc\xc2\x34\xc9\x32\x16\x14\x72\x64\x88\x7c\xee\xc7\x46\xc4\x11\x25\x3c\x2a\x64\xb0\xca\xa3\x94\xa4\x94\xb9\x45\x11\x07\xb4\xa0\x84\x83\x83\x84\x39\x2f\x52\x62\x8e\x15\x31\x65\x61\xe4\xcb\x91\x26\xf0\x71\x4c\x8a\xc8\x6d\x15\x34\xc8\x68\x4c\xb1\xcc\x84\x70\xe1\xb1\x34\x36\x86\x4d\x9a\x65\xb1\x47\xa4\xf2\x30\x8b\x02\x3f\xe1\xee\xdc\x2d\xf1\x52\x5e\x14\x05\x93\x59\x64\xe4\x63\x4e\x8c\x56\xc1\x82\xd0\x8b\x32\x0e\x9e\x97\x73\x4a\xd2\x9c\xbb\x73\xb7\x94\x17\x09\xf3\x0b\x39\x32\x90\x2c\x8a\x13\x6c\xce\x2b\xa2\x18\xc7\xb4\x90\x43\x98\x1f\x93\xd0\x27\x6e\xe5\x65\x8c\xc4\x3e\xcf\x40\xc6\x9c\x91\x28\xc2\x89\x51\xc6\x39\xa6\x51\x4a\xe5\xd0\x44\x84\x21\x91\xee\x24\xe0\x30\x11\x61\x39\x8b\xf3\x1c\x1c\x24\xcb\xb9\xc7\x53\x6c\x0c\x9b\x45\x18\xe7\x41\x11\x17\x6a\xd0\xe5\x39\x8e\xdd\x76\xec\x45\x85\x17\xc5\x32\x5f\x88\x09\x8e\xa3\x22\x35\xba\xb4\xc7\x22\x3f\xce\x33\x70\x10\x46\x32\x9a\x50\xe6\x1e\x41\x30\xf6\x8b\x84\x7a\x81\x9a\xb8\x4b\xbc\x9c\x19\x39\xc6\x69\x8c\xbd\xd4\x97\xf1\xd8\xc7\x59\x10\x63\xb7\x8c\x09\xcd\xd3\x38\x2e\x42\x69\x15\x5e\x10\xe7\xd4\x18\x8f\x7d\x92\x31\x96\xc6\x60\x15\x81\x97\xc5\x24\x48\xdc\x0e\xe2\x67\x09\x4f\xb9\x07\xa2\xc0\x61\x96\xa4\x3c\x35\x2a\x2f\xf0\x71\x1e\xc5\x19\xf4\x2c\xc9\xb0\xe7\xe5\x81\xdb\x8e\x83\x2c\x0b\xf3\x40\x26\xde\x59\xea\xf3\x80\xa4\xc6\xa1\x49\xa4\x2b\x24\x49\x20\x58\x15\x59\x14\xc6\x5c\x84\x57\x57\xac\x28\xb2\x34\x2a\x98\x1c\x24\x59\x1e\x15\x8c\x1b\x39\x8e\xb2\x20\xc0\x09\x05\xc4\x01\x0b\xe2\x90\xe2\x58\x4d\xa2\xbe\x75\x1c\x5b\x6d\xdf\x0b\x5f\x5d\xf7\x84\xaa\xed\x1a\xb4\x57\x9d\x13\xaa\x3f\x5f\xef\x84\x6a\x88\xc9\x76\x4b\x07\x86\xe5\x88\x9b\xaf\x3e\x7a\xdd\xa5\x83\x88\x79\x09\xaf\x27\xdc\xfd\x34\xcb\x12\xcf\xb2\x74\x90\xa6\x51\xcc\xb8\x1c\x7e\x69\x90\x31\x16\x77\x53\x17\x07\x11\x3f\x8b\x78\xe1\xc7\x10\xc9\x0a\x9e\x04\x05\x15\x91\xcc\x04\xc9\xc2\xa0\x28\x42\x1f\xbc\x20\x2c\x70\xee\x47\xc5\xb6\xb3\xfa\x21\xf6\x78\x48\x64\xf0\x61\x39\x8f\x28\xc9\x2d\x4b\x07\x49\xea\x85\x11\x95\x06\x49\x52\x9f\x47\x19\x2e\xb6\x24\x82\x0b\xea\xe7\x89\xb4\xf9\x22\x0d\x70\x9a\x47\x96\x9e\x84\x29\xf7\xb2\x5c\xa6\x41\xd8\x8f\x39\xc1\x71\xb2\xcb\xd2\xc1\x4d\x9f\x23\xdd\xa6\x34\x2c\xc0\x79\xf6\xca\xaf\x8f\xb1\xbd\xf4\xeb\x63\x62\xaf\xfd\xfa\xd8\xb7\x17\x7f\x7d\x1c\xd8\xab\xbf\x3e\x0e\xed\xe5\x5f\x1f\x47\xf6\xfa\xaf\x8f\x63\x4b\x01\x58\xd9\x41\x28\x0f\x6b\xdc\x07\x2e\x9f\xcf\xe5\xf3\xe1\x61\x0f\x29\x03\x68\x6e\x3c\x02\x25\x9f\xcf\xe5\x73\x4b\x73\x02\xcd\x89\xb5\x39\x99\xcb\xe7\x96\xe6\x3e\x34\xf7\xad\xcd\xfd\xb9\x7c\x6e\x69\x1e\x40\xf3\xc0\xda\x3c\x98\xcb\xe7\x96\xe6\x21\x34\x0f\xad\xcd\xc3\xb9\x7c\x6e\x69\x1e\x41\xf3\xc8\xda\x3c\x9a\xcb\xe7\x96\xe6\x31\x34\x8f\xad\xcd\xe3\xb9\x7c\x6e\xd8\xd6\xb7\x65\xd1\x63\x69\x19\x26\xe4\x4c\x1a\x45\xbf\xe2\x1e\x6c\xb9\x95\x06\x61\x6a\x95\x4a\x5b\x30\xb5\xca\xa4\x1d\x98\x5a\x65\xd2\x04\x4c\xad\x72\xa9\x7e\x53\xab\x5c\x6a\xde\xd4\x8a\x4b\xad\x9b\x5a\x71\xa9\x70\x53\xab\x42\x2a\xdb\xd4\xaa\x90\x7a\x36\xb5\x3a\x95\x3a\x36\xb5\x3a\x95\xea\x35\xb5\x9a\x49\xd5\x9a\x5a\xcd\xa4\x56\xe7\xa6\xba\x83\xae\xa3\xbb\x5b\x5e\x87\x6a\xad\xa7\x5d\xd3\x7f\x55\xca\xda\xc3\xb6\xe3\xe6\x0f\x61\x04\xaf\x97\xcf\x86\x20\x5b\x14\x8a\x96\x64\x84\x08\x5e\x95\xf5\x69\x03\xbd\x6a\x34\xfa\x1a\x91\xb7\x00\x69\xae\xe5\xda\xe2\x98\x4b\x1c\xea\x7c\x41\x1f\x07\x9c\x9a\xbf\x56\x05\xea\xc3\x43\xf4\x1f\x50\x8d\xd8\x4e\xbc\x2e\xe9\xbc\x53\x85\xea\xcd\xac\xa9\x73\xbc\x19\x3b\x8b\xa7\xc0\xe6\x5a\x0b\xf7\x79\x3c\x09\x35\xeb\x54\xc1\x9e\xc9\xe2\xbf\x7a\xf1\xea\x39\x94\x28\xae\xcb\x01\x77\xe0\xe8\x00\x0e\x36\xbd\xbe\x43\x5d\xb0\xd8\x75\xc2\x54\x42\xce\x3b\x5c\xcc\x87\x5c\xcc\x4c\x5c\xcc\x87\x5c\xcc\x74\x2e\xba\x70\xf1\x10\xce\x52\xc9\x58\x57\xa9\xa5\x66\xce\x07\xad\xf6\xf6\x2e\xc5\xb7\x5b\x8d\xe2\xed\x34\x8a\x5b\x8d\xe2\xad\x34\x8a\x67\x9d\x02\xdf\xb3\xba\x0a\xb7\x56\x98\x7b\xae\x6a\x75\x6b\x42\xc2\x4a\xc2\x5d\x30\xd8\xc7\x9c\x68\x2a\xad\xf1\x45\xa3\x2a\xc5\xf3\x0e\x1b\x73\x03\x1b\x33\x13\x1b\xf3\x01\x1b\xb3\x0e\x1b\x5d\x84\xd1\x00\x1f\x89\x9c\x3a\xdd\xa9\x76\xb8\x2b\x94\xc4\xad\xda\x63\x97\xda\x5f\x95\xb1\x8c\x5c\xc6\x81\xb9\x07\x39\x57\x90\x8e\x33\xe1\x12\x12\x47\x5a\x20\xb1\xde\x0a\x5d\xc3\x4a\x06\xb0\x31\xb3\xe8\xc3\xce\x6b\xd8\x51\x1e\xda\x48\x33\x17\x42\x2b\xe3\xfe\xc8\xd5\x05\x6f\x43\xd9\x4c\x82\xcf\xa0\x66\x9b\xc0\x23\x34\xe9\xed\xa1\x07\xb5\x77\x36\xbf\xfc\x0f\x84\xd1\x3d\x34\xd8\x36\x3d\xe4\x43\xfc\x5b\x6b\x70\x9c\x0d\xf1\xef\x7e\xe3\x2d\x16\x2e\xf0\x75\xb9\x00\x29\x6e\xc9\x83\xd4\xce\x90\x03\xa9\x89\x01\x7d\x33\xd2\x76\x54\x7c\x55\xda\xd4\xdb\x8e\x7a\xaf\x4a\x13\x73\xf6\x9a\xf8\xaa\x28\xfe\x0c\xdd\x46\xc5\x4c\x95\xc5\x17\x5f\xcc\xe7\xf8\x64\x1b\xe9\xfb\x7c\x2e\xda\xcc\x55\x1b\xf1\xe5\x74\xee\x28\xa6\x3f\x83\x6a\xfa\x02\x75\x2a\xe9\xc0\xe7\x4c\x7e\x4e\xd5\x67\x7b\xf3\x39\x34\x17\x54\x52\x49\x12\x3e\x67\xf2\x73\xaa\x3e\xbb\x4b\xf2\xcf\x64\x4d\x7e\x15\x70\xe4\xb8\xc2\xe6\xb2\xbc\xf4\x9e\x2c\x7e\xc0\x66\x75\xc5\x7e\xf5\xb0\x53\xb3\x7f\xa6\xdd\x22\xc1\xea\x51\xc7\x59\x99\x1f\xde\xa6\x26\x0d\x22\x45\x73\xd6\xa5\x39\xef\xd0\x9c\x75\x69\xce\x75\x9a\xb3\x6d\x68\x62\xd9\x4f\xae\x86\x06\x79\xde\x84\xcb\x41\x81\xd6\x65\xff\x67\xf5\xa5\x15\xda\xc3\xa0\x7d\x28\x68\xfa\xf5\x33\x59\x86\xdb\x4d\x53\xf6\x53\x01\xd7\x34\x67\x5d\x9a\xf3\x0e\xcd\x59\x97\xe6\x5c\xa7\x39\x6b\x69\x1a\xb3\xce\xf1\x7b\x08\xcc\xbc\xfe\x08\xd5\x97\x7e\xb4\x1f\xa6\xfa\x11\x9c\xf7\xc7\xd2\x75\x8c\xea\x47\x08\x06\x3f\x96\xb6\x10\xfa\x01\x2e\x4a\x10\x30\xb3\x79\xc3\xa2\xc9\x29\x25\xa0\x20\x38\x6b\xfb\x22\xc3\x45\x85\xf5\x70\x31\xdb\x26\x56\xb5\x64\xc5\xbf\x42\x22\x6e\x9a\x15\x90\xca\x66\x26\x82\xd9\xb5\x28\xfe\x68\x0c\x3d\x7d\x8a\x3f\x96\x26\x8a\x3f\x96\xd7\xa1\x68\x0e\x76\x7d\x8a\xaf\x8c\x14\x5f\x99\x28\x9a\xad\xad\x7f\x79\x85\x85\x24\x4c\x5e\xd4\x6e\x0f\x80\x56\xee\x60\x1e\xa4\x8e\x4a\xfb\x32\x3c\x02\x8b\x44\x67\xb1\xc6\xb5\x1d\x9b\x7f\x3d\xcf\x59\xc5\xd1\xa5\xfb\x4d\x5f\xfc\xc1\xfb\xa6\xd1\xbe\xe1\x75\xf3\xd4\xc4\x36\x0c\x40\x85\xa9\x0d\xbc\xd8\x16\xa6\x36\xf0\x0e\xcd\x4d\x6d\xe0\x15\x9a\x9b\xda\xc0\x2b\xf9\x24\x9f\xc3\xf5\x1d\x73\xdb\xfd\x1d\xf0\x4e\x3f\xc9\x67\x00\x25\x45\xc7\x75\xc9\xe5\x03\xa1\x59\x6f\x02\x11\x98\x32\x13\x8f\x30\xa5\x90\x99\x78\x84\xd9\x8b\xd4\xd4\x06\x26\x2f\x52\x53\x1b\x98\x27\x61\xa6\x36\x30\x4d\x32\xb8\xcd\x40\xfc\xc1\xb4\xcb\x44\x9a\x7a\x45\xac\xc2\x80\x89\x9b\x89\x94\x83\xb0\xac\xfd\x76\xc4\x91\xd2\xa8\x86\xc9\xce\x8d\x5e\x56\xa2\xcd\x19\x42\x66\xf0\x18\xec\x9f\x0d\xb2\x81\xc7\x4d\x31\x8a\xc9\x63\xb0\x7b\x26\x99\x7d\xec\xe9\xdc\xb2\x21\xb3\x7d\x3c\xda\x2c\xa3\x24\x08\x22\x4a\x87\x04\x71\x4b\x10\xc4\x93\x2a\x82\x9d\x48\x90\x8e\x13\xd4\xe6\x25\x25\x41\x02\x21\x76\x48\x90\xb4\x04\xc9\xac\x1e\x97\x26\x00\xaf\x85\xd7\x71\x82\xda\x4c\xa6\x24\xe8\x0b\x82\xf9\x90\xa0\xdf\x12\xf4\x05\xad\x5c\x11\xf4\x47\xdc\xa1\x8f\x47\x9b\xfb\x94\x04\x03\x41\x90\x0f\x09\x06\x2d\xc1\x40\xd0\xe2\x8a\x60\xa0\x13\xe4\xe3\x04\xb5\xd9\x52\x49\x30\x14\x04\x8b\x21\xc1\xb0\x25\x18\x0a\x5a\x85\x22\x18\xea\x04\x8b\x71\x82\xda\xfc\xaa\x24\x18\xc1\x4b\xc5\x90\x60\xd4\x12\x84\xec\xfd\x54\x11\x8c\x3a\x2f\x11\xe3\x04\xb5\x19\x59\x49\x30\x16\x04\x67\x43\x82\x71\x4b\x10\x5e\x9b\xd4\x98\x2c\xe0\x5d\x49\xc0\x27\x9f\xbd\xf8\x72\x29\xce\xcd\x5d\x8a\x83\x45\x72\xaf\x6e\x36\x13\xc8\xa0\x0e\x8b\xef\xdd\xf4\xb5\x38\x66\x32\xf8\x9f\xf2\x62\x9c\xe3\xe5\xe2\x03\x5f\xc9\x2a\xbf\xa8\x5a\x22\x9f\xdc\x4d\xcb\x4a\x24\x28\x39\x62\xb0\x3f\x3b\xe5\xc5\x72\xc5\xd5\x76\xea\x81\xd6\xb4\xb3\x26\xda\xda\x5d\xb5\x7c\xed\x93\x9b\xb8\x88\xe7\x8f\x7a\x05\x8f\xce\x67\x53\x1f\xe4\x1e\xc2\x1e\x09\x0e\x7d\x55\xa7\xf8\xcb\xe9\x26\xeb\x51\xa5\x10\x93\x5d\x4f\x37\x89\x26\x23\xa7\x9b\x3a\xdb\x1a\x06\xa7\x9b\x42\x4c\xbe\x9c\x6e\xba\xe9\xd3\x4d\x42\x2b\xdb\x9d\x6e\x32\x2a\xa7\x73\xba\x49\x2a\xc8\x79\xba\x49\x9e\xa3\xdd\xf2\xf4\xb7\xff\x87\x3e\xcf\xc4\x17\xd9\xdd\x94\xad\x79\x14\xf4\x1e\x9c\xe5\x61\x1f\xf4\xc3\xf9\xfb\xbc\xe8\xfd\x98\x95\xe7\x33\xbe\xfa\x5d\x8e\x44\x69\xac\xc2\x77\xc1\xa1\x7c\x20\x19\x83\xcf\x3a\x3f\xff\x0a\x47\xa7\x5e\x6d\x75\x27\x10\x6c\x9e\x39\x86\xae\x37\x70\xda\x6f\xe3\x47\xa1\x0e\x0f\xd1\x73\xbe\x3a\x83\x51\xf4\x78\xb6\x2c\x33\x8e\x70\xff\xda\x14\xd1\xfc\xf9\x31\xee\x9e\x5d\x0a\xe3\x29\x0a\x92\x29\x0a\xf0\x14\xf9\xfe\x14\x91\x70\x8a\x70\x3c\x45\xc9\x14\x21\xac\x6d\x35\x0a\xe9\x14\x85\xde\x14\x05\x64\x8a\xfc\x60\x8a\x48\x34\x45\x98\x4e\x11\xf6\xa6\x88\xe8\x70\xc9\x14\x85\x78\x8a\x02\x7f\x8a\xfc\x70\x8a\x48\x3c\x45\x38\x99\x22\x2c\xf0\x6b\x70\x91\x37\x45\x21\x99\xa2\x20\x98\x22\x3f\x9a\xa2\xc8\x9f\xa2\x30\x9c\xa2\x20\x9e\x22\x3f\xd1\x00\x7d\x3c\x45\xc4\x9f\x22\x1c\x4e\x51\x3c\x45\x28\x22\x53\x14\x06\x53\x14\xc0\xd5\x02\x3a\xa0\xe0\x84\x4c\x11\x0e\xa6\x28\x12\x80\x78\x8a\x42\x7f\x8a\x82\x70\x8a\xfc\x58\x03\x24\xc9\x14\x11\x3c\x45\x58\x90\x9c\x22\x44\xe8\x14\x11\x6f\x8a\xb0\x60\x47\x82\xbd\x75\xc8\x95\x98\xe5\x4a\xba\x72\x15\x5c\x08\x39\x8a\x7e\x13\xf1\x79\x8a\x50\xa8\x73\xab\x08\x8b\x6e\x09\x6e\x81\x21\x4f\xe7\xd2\x57\x82\x13\x5c\x09\x80\x68\x8a\xf4\xee\xe2\x48\xca\x43\x08\x18\xb8\xf7\xbb\x8a\x10\x0a\x15\x02\x16\xf2\xf3\x63\x29\xd8\x30\xec\xc9\x2b\xf0\x94\xb6\x42\xa9\xfd\x40\xa7\x20\x54\x23\x4c\xc3\x17\x2a\x8d\xa4\xda\x43\x5d\x87\x42\x05\xc2\x1e\x84\x5d\x08\x1d\x0a\xc1\xd6\x59\x4d\xe7\x46\xa8\x8b\xb3\x8b\x39\x83\x6b\x52\x44\x52\xb9\x9e\x95\xc5\xe0\x86\x27\xf0\x82\x1f\x4e\x7e\x7e\xf9\xf8\x87\x47\xf2\x4e\x29\x21\x31\x32\x45\xd0\x79\x21\x21\x2a\x2c\x52\xa9\x09\xa4\xab\x2c\x15\x2b\x75\x12\x65\xbd\x20\x10\xaa\xd3\x7f\xf9\xdd\xb3\xd7\x7c\x8d\xd8\x22\x57\xb5\xd1\xcf\x41\xa5\xf2\x3e\x0d\x03\x1f\x02\xfe\xe7\xe7\x5d\x7d\xf6\x52\x4a\x6f\xe3\xdd\x83\x97\x11\x4a\x3c\x6f\xda\x7f\x56\xbf\x2b\x48\x10\x03\x00\xe9\x00\x50\xcf\x23\x03\x10\x5f\x03\x19\x3e\x0d\xf4\xa7\x06\x02\x61\x97\x00\x31\x10\x88\xba\x4c\x9a\x40\xe2\x5e\x3f\x0c\x84\x68\x87\x91\x21\x8a\xa4\x4f\x65\x88\x82\xe9\x20\x26\x80\xb4\x2f\xad\x21\x48\xd6\x23\x33\x00\xc8\xfb\x5d\x19\x82\x70\x0d\x64\x48\xa1\xe8\x72\x39\x6c\x4e\x5d\xad\x31\x1d\xd5\x07\xa1\x23\x04\x7c\x3a\x62\x55\x41\x9f\x88\xc1\x2e\xa8\xdb\x6e\x22\x3a\x6a\x98\x31\x75\x19\x26\xa5\xa3\xfa\x4e\xe8\x88\xbe\x59\x9f\x09\x83\x49\xf4\xc9\x0c\x39\xc9\xe8\xa8\xc6\x73\x3a\x62\x35\x9c\xba\xad\xbb\xe8\xd3\x30\x68\xde\xaa\x2e\x15\x25\xb0\x59\x90\x44\x7b\x6a\x51\xa6\xdf\x01\x31\x52\x0f\xba\x58\x4c\x7d\x0c\x75\x10\xa3\x4d\xe8\x7c\x1a\x9e\xc7\x5d\x36\x1c\xbe\x81\x1d\xe6\x9f\xf4\x39\xb5\x06\x0a\xec\xd0\x68\xda\xed\x8c\xc1\x2a\x3a\x9d\xb1\xc6\x09\xec\xb0\x5f\xde\x03\xb1\x85\x0a\x6c\x0e\x05\x74\x54\x14\x98\x8e\x8a\x82\xd0\x51\xd5\xfb\xd4\xad\xb6\xa0\x87\xc2\x16\x2b\x5c\xe2\x8e\xa8\xcb\x84\x63\x3a\xa2\x0c\x4a\x47\x24\x99\xd0\x51\xd3\x62\xd4\xad\xd0\xb4\x2f\x6f\xc3\xe0\xd1\xa7\x32\x04\xc9\xa9\x4b\xa5\x9c\x8e\xb8\x50\xd1\xd7\xa8\x7e\x47\xd5\x74\x2c\xcb\x08\x3c\x8f\x06\x1e\xb6\x46\x10\x05\x63\x4d\x33\x1a\x05\xda\x22\x48\x4d\xc4\x33\x11\x09\xba\x44\x8c\x30\x61\x17\x8f\x91\x99\xa8\x8b\xc7\x08\x13\xb7\x30\x06\x2a\x7a\xb0\x35\x36\x4f\xfa\x24\x0c\x48\x58\xbf\x3b\xf6\x84\x43\x11\x32\x20\xc9\x3a\x82\x35\x00\xe4\x2d\x80\x35\x80\x48\x16\x0c\x8d\x8b\xbe\x56\xac\x79\x97\x53\x98\x98\x8e\xf4\x82\x50\x97\xb4\xfd\x3e\x09\x93\x6d\xd0\x9e\xde\x4d\xb6\x41\xc7\x05\x1e\xd1\x11\x43\x8d\xe9\xb8\xa1\x52\x3a\xa2\x94\x84\x3a\x94\xc2\xa8\xdb\x97\xd2\x3e\x07\xf6\x40\xe2\x74\x95\x9c\x8e\x18\x31\xef\xcb\xd4\x1e\x4f\xac\x16\xa4\xbf\x80\x18\x9e\xe2\x2d\xdc\x1e\x93\x2d\x9c\x09\xfb\x5b\x38\x3e\x0e\xb6\xb0\x67\x1c\x3a\x5d\x1f\x47\x63\x2e\x89\xe3\x91\x60\xa8\xa7\xe0\x66\x0c\xc9\x58\xb8\xc4\x6c\xcc\xef\x71\xba\x45\xb4\xc4\xd9\x58\x20\xc3\xf9\x16\xc1\x12\xf3\x2d\x42\x19\x2e\xfa\x1a\x32\x9a\xcb\x58\xa8\xc0\x78\xcc\x43\x31\xd9\xc2\x41\xb0\x3f\xe2\x65\x38\xd8\x26\xb0\x85\x5b\x84\x1d\x1c\x39\xa3\x1b\x8e\xb7\x08\x4b\x98\x6e\xe1\x8b\x38\xd9\xc2\xeb\x31\xdb\x22\x9a\xe2\x74\x2c\x82\xe1\xcc\x15\xc2\x70\x3e\x16\x16\xf8\x16\x61\x14\x17\xbd\x08\xb5\x4b\xaa\x82\xbd\xc0\x12\x8c\xcc\x2c\x93\x8e\x54\xb0\x35\x45\x91\xb8\x4d\xd8\x03\xed\xb9\x67\x78\x1e\xf6\x94\x33\x84\x88\x3a\x42\x33\xd1\x88\x3b\x10\xe3\xc3\xb1\x3d\x37\x69\xa9\xd8\x32\x93\xba\xa7\xb6\xac\xa4\xe5\x62\xc8\x67\xd6\x93\xe6\x10\x22\xef\x48\xcb\x96\x9a\x00\x06\x4b\x5a\xa2\xda\x9a\x25\xe0\xea\x1e\xa6\x63\xec\x13\x6a\x37\x14\x9f\x8e\x19\x4a\x40\xc7\x14\x1d\x52\x77\xe7\x23\xea\x36\xa5\x58\x7b\x3e\x7c\x4a\xa9\x5d\x74\x09\x75\x89\x8e\xd1\x31\xf3\x4a\xa9\xdb\x09\x32\xea\x36\x9d\x9c\x8e\x19\x06\xa7\x63\x4e\x50\xd0\x31\x13\xef\xa4\x15\x16\x23\xc0\x23\xee\x8a\xc9\x88\x85\x62\x7f\x34\x64\xe0\xc0\x69\xa9\x38\x1c\x75\x78\x1c\x8d\x46\x0d\x1c\xbb\x22\x31\x1d\xf5\x44\x9c\x8c\x86\x0c\xcc\x1c\xde\x88\xd3\x91\x70\x81\xb3\xd1\xa8\x85\xf5\x70\x60\x20\xc1\x47\x62\x2f\x2e\x46\x43\x92\x4a\x2d\x9c\xdd\xc4\x4e\xbf\xc2\x64\x3c\xb4\xf8\x8e\xc8\x81\x83\x11\xb7\xc6\xe1\x68\x6c\xc1\x91\xd3\x81\x71\x3c\x1a\xdb\x30\x1d\x09\x3e\x38\x19\xf5\x40\xcc\x46\xc2\x00\x4e\x47\x63\x20\xce\x46\x43\x01\xce\x47\xe3\x11\xe6\x8e\x60\x87\x8b\x6e\x34\xda\x25\x7f\xa0\x9e\x24\x69\x8e\x2d\x75\xf6\x89\xbd\xc0\x92\x4a\xd4\x4c\x1b\x9e\xfb\x2d\x86\xc0\x6c\x88\x81\xdd\x88\xc2\xae\x44\xcc\x39\x44\x93\x1c\x9b\xc8\xc7\x5e\x27\xfd\xb3\x8f\x9f\xf5\x8a\x8a\x39\x83\x68\x75\x6b\xce\x1f\xe4\x73\x73\xee\xd0\x8a\xcf\xb6\x82\xd2\x8a\xc7\x80\x23\xd7\xbc\xd4\x92\x39\xd4\xe6\x6d\xce\x1d\x5a\x05\x5b\xfa\xef\xd4\x2f\xa6\xf6\xee\x11\x3a\xc6\xbc\x4f\xc7\x04\x10\x50\xb7\x8a\x43\x3a\xd6\x85\x88\x5a\xed\x27\xa6\x63\xc6\x47\xa9\x4b\x7e\x49\x97\xb8\x2d\x89\x70\x58\x47\x4a\x5d\xda\xcb\xe8\x98\xf5\xe5\xd4\x6d\xbf\x9c\xba\xdd\xaf\xa0\x63\x1e\x82\xbd\x11\x17\xc1\x78\xc4\x0b\x31\x19\x75\x43\xec\xbb\x46\x0a\xa7\x85\xe3\x70\xd4\x45\x70\xe4\x8d\xe9\x09\xc7\xa3\x91\x0c\xd3\x51\x6f\xc1\xc9\x68\xb8\xc0\x6c\x34\xe0\xe1\x74\x24\x66\xe2\x6c\x34\x6e\xe0\x7c\x24\x2c\x61\xee\x88\x4b\xb8\x70\x86\x0d\x99\x3d\xb8\xfb\x80\x47\xfd\x12\x13\xbb\x63\x62\x7f\xc4\xed\x71\x30\x62\xf8\x38\x1c\xf5\x1d\x1c\x8d\x47\xb7\xd8\x11\xde\x30\x1d\x77\x9e\xc4\x19\x3f\x30\x1b\x8d\x7f\x38\x1d\x0d\xa2\x38\x73\x06\x11\x9c\x8f\x46\x29\xcc\x47\xc2\x14\x2e\xba\x71\x64\xb7\xe4\xc1\x18\x53\x6a\x7e\x6d\x2b\x24\x0d\x37\xc6\x94\xe1\x9e\xb6\x5d\xc3\x98\x31\x28\x00\x98\x4f\x31\xe6\x0d\x4d\xce\x67\x78\x1e\xd5\x08\x6c\x00\x71\xcb\xa0\xe1\xa9\xae\x73\x5b\xca\xd0\xf2\x67\xc9\x19\xda\x1e\x1a\x28\xa4\x2d\x83\x66\x16\xb2\x0e\x80\x69\xe0\xb0\xfa\x1e\xd7\x95\x63\x40\x5d\x74\x84\x63\x9e\x73\x70\xb5\xc7\x74\x44\xb8\x84\x7a\x36\xc3\xf1\xa9\xdb\x70\x02\xea\x32\x9c\x90\x8e\xd8\x45\x44\x47\xa4\x16\xd3\x11\xd3\xa3\x74\x44\xb5\x09\xb5\xc9\x9d\xd1\x11\x9d\xa6\xd4\x6d\xb5\x19\x1d\xb1\x9a\x9c\x8e\x68\x8e\x53\xb7\xe1\x16\xd4\x65\xf6\xd8\x73\xba\x2d\xc6\x9e\x55\xaf\x98\x8c\xf9\x34\xf6\xc7\x7c\x12\x07\x23\x5e\x8d\xc3\x31\xa7\xc0\xd1\x58\xe4\xc0\xf1\x88\x6f\x37\xe3\x9e\x55\x8d\x38\x19\x73\x20\xcc\x46\xe2\x23\x4e\xc7\x22\x08\xce\x9c\x11\x0a\xe7\x63\x11\x06\x73\xfb\xe0\x5c\x8c\x44\x08\xc8\x0f\xdc\xba\xc2\x23\x96\x86\xc9\x88\xa7\x63\x7f\xcc\x99\x71\x30\xe6\xac\x38\x1c\x0b\x55\x91\x3d\x14\xe1\x78\x2c\x58\x60\xea\x76\x97\x64\xcc\xe1\x31\xb3\x06\x0b\x9c\x8e\xf9\x32\xce\x46\xc2\x05\xce\x9d\xc1\x12\xf3\xb1\x50\x86\x8b\x5e\xc0\xd9\x25\x2b\x50\x6c\x53\x53\x14\xa9\x71\x9a\xf2\x02\xd9\x96\x98\xfb\xec\xb7\xcf\x89\x09\x77\xd0\x4a\xc4\x88\x3f\xd4\xfb\x63\xca\x0a\x9a\xa7\x43\xdc\x71\xc7\xa0\xad\xa3\xa2\x31\x1b\xd0\x98\x1a\x22\x66\x35\x59\x23\xcb\xa9\x32\x50\x53\x06\xa0\xc9\x6a\xf8\x3c\xd7\xd0\x0e\x9f\xf2\xa6\xaf\xc3\x67\x45\x47\xca\xa6\x9e\x3a\x95\x84\xa9\x5b\x49\x84\x5a\x7a\xe4\x53\x97\x76\x02\xea\xea\x4f\x48\xdd\x56\x17\x51\xb7\x65\xc4\xd4\x2e\x0f\x4a\x5d\x76\x91\x50\xbb\x3d\x33\xea\x56\x7d\x4a\xdd\x3a\xcc\xa8\xc5\xa6\x72\xea\x56\x11\xa7\x2e\x9b\x2a\xa8\xdb\x94\xb1\x37\xe2\x47\x18\x8f\x18\x1f\x26\x23\x9e\x8a\x7d\x87\x01\xe2\xc0\xe9\xa7\x38\x1c\x71\x45\x1c\x79\x23\x31\x28\x76\xfa\x5c\x93\xc1\x5a\x78\x4f\xac\x51\x9b\xd9\xbc\x15\xa7\x23\xa1\x0d\x67\x8e\xb8\x88\xf3\x91\x18\x82\xf9\x88\xcf\xe2\xc2\x19\xdc\xc4\x88\x6e\x61\x1c\x3b\x4d\x09\x13\xa7\xd3\x62\x7f\xc4\x2f\x71\x30\xe2\x98\x38\x74\x78\x26\x8e\x46\x62\x0d\x8e\x47\x83\xd5\x88\x27\xe1\x64\xc4\x47\x31\x73\x04\x00\x9c\x3a\xa3\x16\xce\x9c\xa1\x05\xe7\x36\xff\xc7\x7c\xcc\x85\x8b\x6e\xe8\xd9\x7d\xe8\x36\xd8\x48\xcd\x6a\xe0\x61\xc3\xd0\xad\x52\x0d\xc3\xa0\xad\x90\x9a\x9a\x05\x4d\x92\x63\x7a\x1a\x5a\xba\x1f\x49\x94\x86\x31\xba\x4d\x99\x86\x4f\xa9\xd6\x01\xd3\x30\xdd\xf4\x7d\xd8\x94\x69\x46\x3e\x7c\x9a\x6a\x9d\x30\xbd\xaa\x6b\x79\x9c\x61\x98\x96\x72\x1b\x62\xe5\xad\xdc\x4c\x2f\xe9\x5a\xe6\x3b\xec\xa9\x4b\x0c\x98\x9a\x85\x4a\xa8\x4b\xbf\x3e\x75\xf5\x31\xa0\x0e\xc3\x09\xa9\x4b\x78\x11\x75\xf5\x24\xa6\x36\xf1\x50\xea\x30\xab\x84\xba\x54\xcd\xa8\x4b\x23\x29\x75\x18\x42\x46\x6d\x66\x9e\x53\x97\x25\x73\x6a\xb6\xd8\x82\x3a\x94\x8c\x3d\xa7\x96\x31\x76\xba\x2b\x71\xfa\x2b\xf6\x9d\xbe\x82\x03\x97\x3b\xe0\xd0\xe9\x4a\x38\x72\x3a\x04\x8e\x5d\x11\x41\x8d\x37\xc6\x47\x89\x33\x5a\x60\xe6\xf2\x18\x9c\x5a\x82\x06\xce\x6c\x41\x36\x77\x7a\x2e\xe6\xce\xa0\x80\x0b\x6b\x44\xc4\x9e\x53\xeb\xd8\xe9\x88\x98\xb8\xbd\xdb\xb7\x58\x1a\x0e\x9c\x8e\x86\x43\x97\x0b\xe3\xc8\xea\x87\x38\x76\x46\x06\x4c\x9d\xde\x8f\x13\xa7\x2f\x62\x66\x09\x56\x38\x75\xba\x1b\xce\x5c\xd1\x01\xe7\x56\x2f\xc6\xdc\x19\x39\x70\xa1\x05\x87\x5d\xc6\x54\x2a\x06\x78\x62\x40\xd8\x08\x67\x18\x8f\xef\xb5\x8b\x1b\xc3\x70\x2c\xdb\x0d\x03\xb1\xc2\x67\x78\x14\x4a\x7c\xc4\xc8\x47\xd4\x3c\x34\x05\x61\xc5\x89\x79\x9c\xa1\x9e\x99\xff\xa4\xe9\xb7\x29\x04\x4b\x3e\x4d\x8f\xd2\x06\xa9\x81\xcf\xec\x9e\x3c\xec\x31\x0c\xbf\x66\x3b\xe1\x8d\x10\x0d\x6d\x0a\xc5\x84\xe1\x51\xbd\xa8\x64\xed\xb9\x7c\x8c\x5d\x32\x55\x30\xc4\xa5\x7f\x05\xe3\xbb\x74\xad\x7e\x0f\x5c\xc2\x56\x30\xa1\x5d\xac\x0a\x22\x1a\xed\x73\x6c\x31\x2d\xf5\x98\xba\x24\xaa\x60\x12\x9b\x96\xd4\x73\x66\xb7\x52\x05\x91\xba\xec\x51\xc1\x64\x66\x95\xab\xa7\xb9\xcb\x8c\x14\x0c\x77\x99\xa8\x82\x29\xec\x1e\x5a\x67\xc4\x46\xc7\xc6\xae\x1e\x60\x62\x11\x32\xf6\x6d\x16\x87\x03\x17\xb3\x38\x74\xa9\x05\x47\x2e\x61\xe0\xd8\xd1\x45\x5b\xfc\x4d\xec\x2a\xc4\xcc\x65\xa9\x38\x75\xc6\xc3\xcc\xe5\x51\x38\xb7\xdb\x37\xe6\x36\xa3\xc3\xc5\xb8\x77\xb5\x2f\x37\x56\x08\xec\x8e\x05\x98\x8c\x1b\x1c\xf6\xc7\xbc\x0f\x07\x4e\xef\xc3\xe1\x78\x10\xa8\x95\xed\xec\x6e\x3c\x1e\x94\x30\x1d\x0f\x6e\x38\x19\x8f\x06\xb5\x39\xb8\xbc\x4c\x1a\x85\xf5\x69\x36\x16\xd6\xa4\x61\x38\xf8\xe4\x63\x11\xa7\x36\x12\xa0\xa2\x8d\xec\xf2\xa3\x5e\xd7\xe0\x29\x5b\xbf\x5f\xa3\x6a\xc6\x2a\xb4\xe6\x73\x9e\x55\x50\x8f\xe8\xe5\x77\xcf\x5e\xa3\x72\x71\x5e\x5f\x13\xd1\x54\x34\x78\xfa\xed\xcb\xde\xc5\xc5\xed\xc1\xc4\x29\x6a\x37\xfe\xc3\x05\x8a\xea\x0b\x7c\x56\x5f\xa6\x7a\x43\x4f\xfd\x2a\x01\xe4\x97\xfa\xb3\xf8\x32\xd5\xfa\xd3\xe7\x5c\xab\xaa\xf4\xfd\xc3\x97\xb2\x30\x16\x92\x85\x5f\xdc\x77\x54\x09\xe8\xe6\x82\x2a\xf9\x45\xab\x92\x72\xdd\x2b\xaa\xdc\xa5\xf5\xde\xf3\xab\xa6\x04\xd8\x7b\x7e\x65\x28\x7d\xf7\x9e\x5f\xd5\x75\xf5\xde\xf3\x2b\x73\x59\x3d\x41\x43\xaa\x28\x8c\x50\x5a\x56\x6b\xc4\xb2\x6c\xb9\xca\xcb\xc5\x29\xaa\x96\xe8\xf9\x31\x36\xe2\xfd\xae\x84\x52\x40\x6f\xfa\x35\x90\x4d\x77\x87\x84\x91\xfd\xee\x90\x16\xdd\xf3\xa5\x40\xf8\xfc\x18\xbf\x29\xdf\xa2\xbb\x08\x1b\x6a\x94\x2a\xba\xb2\x3c\xff\xa4\xee\xdd\x9b\xb6\xbd\x2a\xc7\x27\xfe\x33\xf1\x31\xba\xab\xa1\x86\x3a\x7c\x7b\xe8\xf6\x00\xb1\xa1\x60\xe9\xb7\xeb\x35\x3f\x4b\xe7\x1c\xe1\x08\xad\x2f\xd2\xf7\xfc\xca\x20\xfe\xf5\x45\xfa\x23\xbf\x5a\x37\x2a\x68\xbf\xdb\x85\xb2\x78\x09\x40\x52\x34\xf5\x97\x07\x08\x47\xcd\x37\xfb\x15\x2b\xc7\x50\x71\x4a\xf1\x63\x16\xe4\xba\xc6\xae\x78\x79\xa3\x90\xbe\x55\x4c\x19\xf1\xba\xaf\x6e\x49\xcb\xea\x25\x54\x45\x39\xd2\x8a\xa0\x34\x78\x6d\x28\xa5\x41\x05\xd4\x68\x50\x64\xd8\xc6\x64\x35\x24\xb0\x5b\x4d\x97\x4e\xb1\x5a\x9e\x41\x80\x99\xf3\xa2\x42\x84\x82\x67\x08\xca\xe6\x86\x52\x38\x6f\x26\x25\x3a\x94\x77\x43\x78\x50\xc0\xb1\x36\xae\xc9\xe4\xf9\x31\x51\x36\xb8\x87\xf6\x1b\x09\xec\xa1\xbf\x20\x42\xdf\x42\x8d\x47\xb0\xad\x12\xfd\x05\xee\xb8\xd8\x9a\xbd\x55\x79\x3a\xdb\x9e\xbf\x00\xca\x77\xb6\x4c\xee\x75\xb8\x24\x14\x1e\x4b\x5e\xd1\x3e\x22\x81\x85\xe1\x3d\x03\xc7\x03\xb2\xa6\xca\xfe\xa2\x03\xe5\x22\xe3\x88\xb3\x6c\xa6\xcc\x0e\x95\x6b\xc4\xce\xcf\xe7\x25\xcf\x85\x2e\xd9\x02\xf1\xcd\x39\x5b\xe4\x3c\xaf\xeb\x32\x42\x78\x9f\x1a\xb1\x09\x11\x28\x34\x19\x5b\xa0\x94\xa3\x74\xb5\x7c\xcf\x17\xa8\x5c\x54\x4b\x44\x65\x51\xe0\x35\x5a\x67\x6c\x2e\xd1\x4b\x94\x6b\x33\xb6\xcb\x59\x99\xcd\x10\x9b\xcf\x97\x97\x6b\x40\x2d\xf0\x56\x4b\x81\xf6\x62\xcd\x73\x74\x59\x56\xb3\xe5\x45\x25\x19\x5c\x97\xcb\xc5\x10\x8b\x12\x34\x94\xd7\x9c\xb4\x5f\x1e\x3c\x50\xd7\xca\xb4\x3f\x89\x80\xe2\x63\x93\xe4\x3a\x96\x8b\xa5\xe5\xc6\x6e\xc3\x55\x68\x21\x88\xb5\x9f\x21\x66\x4d\x4a\xa9\xc4\xaf\x91\xd0\xbe\x6f\x56\x95\xad\x1f\xb1\xde\x8f\xf8\xad\x2a\xec\xf9\xab\xfe\x13\x5c\x0a\x30\xb8\x6a\xc7\x10\x01\x8f\x65\xe1\x4b\x54\x2e\x3e\xf0\xd5\x9a\xdb\xa3\x60\xb9\xf8\xf0\xb2\x17\x08\x3b\x3f\x6d\x35\x40\x60\xc7\x00\xd1\x62\xd3\x25\xb6\x7e\x83\x43\x61\xd0\x7d\xec\x1f\x3b\x13\x0e\xed\x17\xbe\xc8\x56\x57\xe7\xd5\x0e\x57\x01\xaa\x8a\xb5\xcb\xe3\xa6\x5d\x0b\x3c\xed\x86\x7c\x6b\x09\xdd\x9c\x7f\x0e\xaa\xad\x44\x5c\xb5\x7b\x8f\xdd\x94\xa7\xb5\x20\x4d\x49\xc7\x7f\xf0\x4a\xcf\xd3\xba\xcc\xcd\x01\xa9\x76\x35\x56\x5f\x07\x12\x6c\xd5\x07\x83\x9b\xb3\x0c\xd9\xc7\x0f\x8b\xb2\x2a\xd9\x5c\x2f\x7d\xd5\x85\xe1\x9b\x6c\xc6\x16\xa7\xfc\xc9\x8b\xb6\x2c\xaa\xac\x3c\xe6\x6d\xbc\x42\xfe\xaf\x6f\xd2\xe6\x36\xf2\x7e\x6a\x78\x63\x2d\x0a\x6b\x9b\x17\x4f\xf4\x36\x04\xe8\xf8\xea\x6f\xbb\x36\x54\xf2\xe6\x15\x85\xf8\xff\x96\xbc\x41\x9b\x50\xfd\x19\x2b\xd3\xba\xae\x6a\x93\xe5\xc3\xc0\xa3\xe4\x47\xe9\x55\xf0\x79\xfc\xda\x36\xc3\x48\x64\xcc\x27\x00\x9d\xed\xda\x8b\xc6\x30\x74\x3b\xb1\xc0\xae\xba\xb0\x2b\x05\x6b\x64\xf2\x11\x2f\xd7\x15\x9f\x37\x56\x6c\xc6\x58\x40\xe7\xb7\x4b\x2d\xa8\x3b\x40\x17\x62\xa0\x95\xa5\xd6\xde\x94\x6f\xdf\x4c\x26\x8a\xdb\x77\x6d\xb8\x16\x89\x64\xf3\xea\x02\xdf\xa1\xac\xb6\x49\x34\x86\x80\xdd\x73\xa4\x95\x4d\x52\x3d\x4f\x9a\xd7\x6c\x14\xe3\x01\xfc\xaf\x8b\x7c\x89\xd6\x97\xec\x5c\xa6\x1f\x73\xb6\xae\xa4\x31\x0c\x43\x78\xe5\x56\x59\x8f\xd9\xae\xc2\x5c\x8e\x5f\x19\x6c\x18\x2a\x8a\xef\xea\xea\x03\xd7\xb8\x31\x17\xbc\x8e\xab\x5f\x27\xa4\x8c\x84\x2e\xc3\x1b\x59\x85\x96\x17\xd5\x20\x02\x37\x21\xd7\xad\xb2\x4e\xc8\xb5\xeb\xac\x33\x64\xbc\xe7\x57\xb2\x04\x74\x14\x1c\xfa\x44\x7f\x52\x7e\xb0\x3c\xd0\xea\x46\x47\xc6\xaa\xd1\x87\xe8\xa5\xb0\x40\xf5\x12\xb0\x5a\xae\xd7\x6d\x9a\x0e\x35\x0f\x21\x21\x86\xd7\x52\xd9\xa2\x19\xa8\x5a\xc1\x4d\xea\xf1\xea\x8c\xad\xdf\x77\x5c\xb6\xb6\xdd\xc9\xa4\x63\xa2\xc2\x11\xeb\xd1\xf5\x5d\xa7\xeb\xc2\x69\x05\x16\x4d\x04\x1d\x93\x7d\x07\x36\xfb\x95\xd1\xf0\xc5\x33\x91\x51\x49\xcc\x0a\xaa\xf6\xbb\x01\xdb\x2f\x9e\x6c\xcf\xf6\xca\xce\xf6\xdc\xcd\xf6\xdc\xc1\xf6\x6a\x0b\xb6\x9d\x45\xa4\xd7\x75\x15\x69\x39\xfd\xb1\x5d\x1d\xe9\xb1\x22\xcc\x12\x57\xc5\x37\x95\x5e\x8a\xf9\xfb\x87\x2f\x0f\x54\x82\xd6\xa9\xc5\x3c\x45\x59\x71\x6a\x28\xae\x7d\x3e\x67\x82\x89\x4d\x85\xfa\x58\x54\xc2\x35\x69\xe9\x98\x10\x35\x95\x9d\x87\x13\x35\xdd\xa2\xdb\xdf\x3f\x7c\x69\xac\xb8\x7d\xb2\x2a\xcf\xe7\xfc\xee\x6e\x53\x44\xb2\x51\x67\xa2\x48\xff\xe9\x8f\x33\x5d\xa4\x26\x22\x04\xdb\x25\x54\x28\xcd\xfa\xd7\x03\xa9\x2c\x96\xaf\x31\x3a\x12\x70\x07\x52\xaa\x0f\xa5\x8e\x97\xab\x49\x7b\xcf\xba\xba\x38\xbe\x26\x7d\xb0\x9e\x97\x19\x9f\x78\x53\x44\xf6\x06\x77\x61\x34\x68\xc9\x35\xd1\x92\x29\x0a\x1c\x68\xfd\x6b\xa2\x0d\xa6\x28\xda\xb3\x5f\xa4\x71\xed\x77\x0f\xbe\xc6\x07\x7a\x63\xad\x85\x55\x32\x07\xfa\x3b\xc7\x16\x0d\xfc\x2d\x28\xdc\xcc\x3b\x8d\xa0\xb5\x23\x73\x64\xd7\xee\xe3\x2d\x28\x98\x47\x3d\x9c\x90\x1b\x1b\xf6\xfe\x49\xc2\x6a\x13\x5d\x6e\x20\xb8\xb6\xb8\x76\x0c\xb1\xb6\x10\xd7\x0d\xb4\x0d\x94\xb3\x7e\x7e\x03\xd5\x2b\xa1\xaf\x15\x66\xbf\x17\x92\x69\xaf\xaa\xbe\x56\xdc\xfd\x5e\x18\x4c\xdb\xaa\xee\xf7\xc2\x68\xaa\x8a\xbd\xdf\x8b\xf0\xc7\xb7\x53\x1a\x7c\x52\xc1\xfd\xdf\xb3\xd2\xfe\x67\xab\x87\xff\xdf\x53\xd9\x1e\x6e\x2a\x28\x17\x3c\xbf\xd9\x12\xf7\xdf\xb1\x35\x6f\xab\xd6\xb3\x35\xd7\x9e\xbd\xf6\x89\xb3\x02\xfe\xd0\x97\x37\x51\x80\x16\xec\x8c\xaf\xcf\x75\x2f\x3d\xd4\xd9\x10\x20\x82\x0d\xf9\xdf\x7f\x7c\x34\xa1\xf9\x16\x45\x41\x73\x85\x8d\x09\xcd\xeb\x28\x10\x7c\x00\x53\x9b\x28\x38\x50\x5f\x04\xff\x86\xcc\xa0\x45\x2d\xd1\xab\xe9\x94\xf2\xef\x7c\x8d\x18\x5a\xf0\xcb\xf9\x15\x92\xbe\x96\x9b\x08\xeb\x01\x05\x75\x6e\xf3\x58\x5c\x9c\xa5\x7c\xf5\x11\xc1\xad\x52\x70\xab\x8a\xf8\xe0\x13\x48\xe7\x0f\x9c\x4d\xe6\xcb\x4b\x68\x21\xfe\x6b\x6a\xd0\x6d\xdc\x8d\x6e\x43\x80\x5a\x2e\x9b\x56\x2e\x75\x44\xa8\xc5\x53\x0f\xcc\x72\xf5\xcf\x23\x9e\x0f\x6f\x65\x81\x17\x7a\x91\xd7\x9d\xef\xac\x25\x0d\x21\x7e\x51\x76\x32\x2a\xd1\xc3\xa9\xe0\xda\x3c\x86\xa9\xfb\xb5\x0c\xb7\x7a\xc2\x63\xd1\xdb\x23\xd4\xbd\x7d\x5b\x7f\x33\xef\x6b\xea\xbb\xb2\xba\x2c\xd7\x1c\xfd\xf4\xec\x64\x0d\x18\xc6\x14\x53\x5f\x94\xa2\x0c\xe4\x23\xfa\x56\xe8\x57\xc8\xe5\x2e\x08\x46\x8d\x24\xac\xa8\xf8\x0a\x2d\xf8\x29\xab\xca\xc5\xe9\x0d\x08\x1e\x50\x71\x21\x78\xa5\x82\x83\xc5\xb2\x9a\x58\xa5\x7a\x78\x88\x16\xcb\xd1\x4c\x15\xee\x64\x91\x02\xfd\xad\x91\xee\x7d\x23\x98\x14\xec\x6f\xb5\x90\x0d\x29\xa9\x92\x8c\x12\x4c\x6d\x0d\xad\x3a\xef\x77\xb8\xeb\x64\x00\x36\xad\x7c\xfb\xd3\xf7\x9a\x56\x60\x39\x01\xc6\xed\x73\xb6\x86\xe5\x85\xad\x7c\xa8\xd1\x14\xe0\x10\x2e\xd1\x28\xab\x5a\x0a\x12\x35\xde\x1b\x56\xfe\xb7\x3f\x7d\x7f\x33\xaa\x97\x6b\x3b\xad\xe2\xd9\x22\x9f\xb0\xc5\xb2\x9a\xf1\x95\x62\xc4\x65\x06\x6c\x91\xeb\x66\x20\x7a\x38\x62\x0a\xad\x9f\xdd\x96\x02\x19\xb3\x8a\xc6\xf3\x14\xfc\xef\x66\x1f\xcf\x5e\x7c\x6e\xf3\x78\xf6\xe2\x33\x59\xc7\xb3\x17\x37\x63\x1c\xcb\x55\xc7\x36\x96\xab\x1d\x4c\x63\xb9\xba\xb6\x65\xfc\xba\xa3\x65\xfc\xfa\x3b\x5b\xc6\xeb\xcf\x6f\x1a\xaf\x3f\x9b\x6d\xbc\xbe\x29\xe3\xd8\xf4\xac\x63\xb3\x93\x79\x6c\x3e\xc1\x3e\xde\xed\x68\x1f\xef\x7e\x27\xfb\x80\x45\x79\xdd\x32\x16\x72\x66\x54\xbd\x10\xce\x79\x51\x6d\x9f\x95\x2d\xc0\x26\xe4\x37\xb4\x2c\x1a\x4c\x70\x85\xcd\x4d\x19\x03\x20\xbb\x19\x73\x00\x54\x1d\x83\x80\x5f\x9e\x4c\x48\xe8\xb2\x03\x09\xa4\x9b\xc2\xc2\x64\x07\xe2\x15\x68\x81\x1e\x20\x9f\xd8\x56\xba\x34\x4b\x99\xb4\xa6\xf2\xe0\x01\x5a\xc0\x12\x79\x63\x0c\x72\xeb\x10\x41\x77\xd1\xc2\x78\x59\xbd\xd9\x84\x04\x9e\xa1\xad\x7d\x44\xf5\xcb\x93\x9b\x21\x1d\xcd\x64\x81\xee\x1a\x6e\x0c\x1d\x90\xee\x2f\x75\x09\x72\xff\x9d\xd6\x0b\x53\xf9\xff\x76\xe6\xfb\x62\x62\x7f\xb9\xa8\xad\xf7\xc5\x0d\x59\xaf\xd4\x7b\xd7\x52\x35\xe3\xad\xed\x79\x0b\xe3\x1d\x44\x4c\x40\x75\x0d\xfb\xd5\xbc\xa0\xc1\x33\x6e\xc0\x8a\xfc\xef\x6e\xc1\x2f\x96\x15\xab\xf8\xe7\x0e\xc0\x2b\xa0\x72\x53\x26\x0c\xd8\x6e\xc6\x84\x25\x63\xba\x09\xaf\x96\xa3\xf1\x57\x80\x8c\xda\xaf\xea\x11\xd8\x81\x8a\xea\x8b\x3d\x91\x0e\xb6\xbf\xbc\x98\x44\xc1\xc0\x2c\x3f\x55\x61\x37\x14\x73\xfe\x58\x1a\x1b\x09\x39\x02\x62\x77\x85\xbd\x18\x28\xec\xc9\x75\x14\xf6\x6d\x9e\x7f\xee\xcc\x97\xe5\xf9\x67\xca\x7c\xe5\x95\xdf\x37\xf1\xce\x9c\xf7\xde\x99\xf3\x9d\xde\x99\xf3\xad\xdf\x99\xfb\x23\xc2\x7e\x93\xc8\xc2\x86\x51\x73\xf2\x9b\xb1\xd5\xea\x4a\x34\xab\xc7\x10\x79\x31\x7c\x67\x58\x69\xaf\x87\x37\xe3\x18\x26\x52\xfb\x6d\xce\x8d\xf6\x25\x0d\xc5\xc3\xa7\x46\x74\xf9\xcd\xbc\xba\xf2\xed\x42\x5d\x01\xbe\x2c\xf4\xb9\xcd\xb5\xe9\x86\xe3\xd5\xf2\x9c\xaf\xaa\x2b\xf4\x0f\x75\xc5\x30\x00\x82\x79\x35\x28\x06\xd3\x8a\xca\x40\xd6\x07\x26\x3c\x75\x58\x69\xee\x44\xef\x46\x97\x75\x79\xba\x28\x8b\x32\x63\x8b\x0a\xa5\xf0\xbc\x5c\x68\xbe\x01\x44\x1d\xb3\xbf\xed\xbc\x74\xcd\x4c\xfd\xcb\x0d\xcc\x03\x0f\x39\xb0\xbb\x63\x47\x5c\x93\x67\xe7\xc2\x2c\xd9\x7c\xaf\x23\xfb\x51\xc1\x21\x63\x40\x6e\x24\xa7\xa1\xdd\x4a\x88\xbc\xab\xe6\x4f\xf0\xd5\x4b\x5d\xd4\xfd\x5e\x74\xd6\x7c\xbb\x3e\xfb\x89\xc8\xde\x0c\xda\x8b\xbf\x5d\xa7\xb5\xa7\xbb\x62\xc1\x14\x27\x98\xe1\x14\xce\xd4\x64\x38\xc7\x1c\x17\x7b\x03\x24\x6f\xff\x8d\xba\x3a\x45\xd8\xdb\x7a\x79\x00\x8c\x6e\xda\x98\xed\x20\x2c\x5f\xaa\xcd\x13\x10\x16\xeb\x2f\xf2\xbf\xbf\xfe\x6a\x38\x80\x21\xf2\xfe\xc6\x07\xfe\x74\x84\x86\xab\x60\xfa\x9f\x1c\x9b\x6b\xf0\xa3\x86\x8d\xfe\x5e\x40\x6b\xd2\xde\x47\x20\x7d\x68\xce\x17\xa7\xd5\x0c\x7d\x8d\xe8\x96\x5b\xa9\xfb\x81\xe6\x78\xb9\xf8\xc0\x57\xf5\xab\xa1\x16\x86\x55\x7c\x10\x83\x76\x7d\x3a\x60\xab\xc0\x53\x8f\xda\x8d\x76\x3b\x2b\x73\x1f\xd1\x49\x37\x88\xde\x59\xa3\x9c\x55\x0c\xb1\xf5\x8e\x74\xb6\x9e\xc9\xea\xae\x14\x6e\xb4\x00\x7d\x50\x2d\x5f\xfb\xc4\xbe\x14\x02\x8f\x3f\x61\xcf\x8e\xa2\xd5\x35\x2a\xc3\xce\x9d\x1a\xee\x89\x54\x66\xc3\x64\xad\x5e\xd3\x2e\x1e\xa9\x36\x03\x2e\xd9\xdd\xad\x37\xef\x77\x69\xbb\x4f\x7a\xb5\x4b\x78\x75\xab\x37\x83\x2d\xfc\xe2\xaf\xe6\xe1\xe0\xfc\x62\x3d\x9b\xd4\x89\x94\xc8\x11\x4c\xef\x95\x66\xe8\x5e\x2e\x81\x0c\xfb\x64\xeb\x54\x44\x53\x70\x1d\x41\x6a\x9c\xd3\xae\xdb\x58\x37\x92\x0c\xbc\x02\xd0\x08\x93\xcc\x96\xe7\x30\x48\x5a\xc6\x7e\x34\x9a\xb6\x36\x66\xcf\x51\x36\x5f\x2e\x5c\x6f\x2a\xdb\x9a\x34\xe0\xe9\xdb\x32\xfc\x68\xb7\x65\x78\xec\xb4\x65\x1d\x33\x64\x29\x92\xdd\x66\xe7\xab\x69\xa7\xeb\x31\xc0\xff\x19\x0c\xfb\xcf\x52\x32\x43\xa4\x75\x2c\x95\xf8\x86\x61\xb6\xde\x35\x66\x27\x00\x67\x98\xea\x85\x75\x99\x9c\x58\xc8\x34\x2e\x74\xd9\xf1\x9f\x51\x37\xb8\xdc\xc6\x07\x2e\x95\xc9\xd7\xe8\xdf\x94\x6f\x4d\x62\xb7\x9b\x2a\x00\x77\xd6\x97\x9b\xf4\xd8\xba\x6f\xa6\xb7\x5b\x46\x6d\x8d\xf9\xf8\x76\x4a\xc3\x6d\xf6\xbb\x1c\x7e\xfd\x27\x34\xab\xaa\xf3\xf5\xbd\xc3\xc3\xb3\x6a\xb6\x3e\x48\xf9\xe1\x45\x55\xd0\x5f\xd6\xe8\x03\x39\xc0\x07\x04\xa5\x57\xe8\x7f\x9e\xb1\x6a\x56\xb2\xb5\xb0\x98\x76\x83\x0c\xec\x0a\x91\x9b\x3d\x0e\x0f\xd1\xf7\xbc\x92\xc7\xe1\x38\x17\xe2\x2e\x59\x3a\xe7\x6b\xf4\x37\x45\xe9\x6f\xb7\xbe\x82\x6d\xfc\x2b\xce\x1f\x36\xfb\x5f\x06\x3b\x69\xd0\x1d\xa9\xbc\x3b\xe8\xf6\xed\xfa\xe7\xfb\x76\xf4\xe8\x6f\xb2\x3b\x1a\xf2\xa7\xf0\x43\x8b\xfb\x4c\x7d\xef\xa2\x56\xbf\xde\xbe\x6d\xd8\x9f\x73\xd4\x61\xb2\x01\x76\xb2\x71\x0a\x3b\x67\xfe\x36\x95\xbb\xf1\x7f\x5a\xe6\xfc\xe0\x97\x35\x5a\xae\xd0\x77\x72\x2b\x4d\x59\x94\x3c\x47\xd9\x32\xe7\x53\xc0\xc2\x16\x39\xba\x58\x73\x54\x56\x62\x5c\xfb\x9b\x90\xa3\xd6\x07\xb5\x0f\xa7\xe9\xc3\xa9\xfa\xde\xed\x83\xfc\xf5\xbe\xdc\x93\xd4\x36\x3b\x68\xa0\x8f\x74\x64\xbf\xfe\xaa\x7d\x3b\xb8\x2c\x17\xb9\x78\xbb\xec\xc0\xc8\xad\x43\x82\x17\xa4\xff\x0c\x9b\x7d\x6e\x7d\x75\xf8\xf5\xdd\x1b\xfb\xfb\xfa\xf0\x96\xec\xed\xba\x5a\x95\x8b\xd3\x47\xab\xe5\xd9\xf1\x8c\xad\x8e\x97\xb9\xd0\xdc\x4b\xf8\xf1\xa0\xd0\x7e\x55\xc2\x3f\x61\xef\xf9\x42\xca\xb8\x6f\xb2\xe7\x17\x8b\x2b\x21\xdf\x5b\x5f\x35\x11\xec\x22\x5b\x93\x9c\x8b\x1f\x27\x92\x8e\xec\x20\x2c\x6d\xc2\xe6\xfb\x7a\x08\x84\x9f\xb2\xe5\xc5\xa2\xe2\x2b\x35\x73\x09\x3f\xcd\xeb\x58\x21\x9b\xb7\xc1\x02\x9e\xc2\x79\xc6\xfa\x0b\xdf\x54\x2b\x26\xbe\x5c\xce\xca\x39\x47\x93\x1a\xdb\x03\x85\x44\x92\xfe\x0a\xda\xb4\x08\x33\xd5\xbd\x6f\xab\xba\xc1\xfe\xbe\x70\xf5\xaf\x40\xa7\x12\xf8\x9b\x23\xe4\x6d\xbe\xa7\x9e\x27\x74\x2e\x7f\x7a\x00\x3f\x7d\xf7\xe8\x91\xf8\xc9\x42\x49\x88\x0b\x5e\xd7\xd7\x17\xab\xd5\xf2\x94\x55\x7c\x0a\x56\x57\xcd\xf8\x8a\xc3\x39\x4f\xb4\xe0\x9b\x0a\x09\x16\x58\x56\xf1\x15\x34\x82\x6e\x6c\xc3\x1f\x30\x38\x91\xe0\xb7\x91\xb7\x79\x74\xec\x79\x7b\xc2\x42\xbd\xcd\xf7\xf0\xf1\x1f\x22\x38\xcf\x97\x97\x2d\x7d\x68\xf6\x95\x94\xbc\x1c\xca\x27\xaa\x8b\x02\x81\xff\xe8\xd1\x1e\x1c\xcd\xf4\xf6\xd0\x3e\xd2\x30\xc3\x83\xfd\xba\xe2\x90\xa2\xde\x66\xc1\xaa\xab\x17\x8b\x33\x56\x65\x33\x9e\xb7\xf4\xee\xa3\xe5\x62\x7e\x85\xd8\xf9\x39\x87\x7e\x97\x6b\x70\x40\x74\xb1\x28\xab\xa9\x78\xd1\xcc\xd8\x9a\xc3\xdb\xa6\x10\x44\x83\xa9\x81\x11\x42\xaa\xea\x7d\x51\x0d\x56\x31\xd4\x33\xed\xeb\x39\x2b\x57\xc3\x9e\x41\xbf\x14\xaf\x5f\x29\xd1\xdd\xbd\xab\x78\xbf\xd5\xef\x80\xa5\xa5\x00\x14\xff\x57\xf1\x5e\x42\xd5\xde\x78\x1d\x67\xe0\x0b\x70\x06\x18\x85\x5b\x5f\x68\xac\x5c\xe6\x2d\x5d\x23\x2f\x17\x39\xdf\xa0\x23\x74\x17\x1b\xcd\xbe\xf1\xa3\x3b\x77\x34\xe3\xdf\xdf\x97\xcd\x2c\xc6\x0f\x74\xde\x00\xc8\xdb\xbe\xb1\x0b\x53\x7a\x24\x34\x2e\x25\x23\x7f\xbd\x7b\x54\xab\xff\xbe\x26\x2f\xb4\x7f\x64\x88\x1f\x35\xa2\x6f\xbe\x41\xd8\xab\x0d\x08\xfd\xaa\x7c\x48\xa9\xa4\xe6\x44\x1a\x2b\xfa\x15\x75\xec\xb0\x11\xfe\x16\x84\x00\xa1\x4d\x49\x8d\xf0\xb3\x19\xcf\xde\xbf\xcc\xd8\x9c\xad\xfe\xb7\x68\x35\x11\x7a\x78\xbe\x2c\x17\x72\x37\x35\x08\xa0\xf9\xa9\xeb\xf1\xed\xcf\xd2\xeb\x5b\xe1\x54\xb3\xd5\xf2\x12\x3d\x5c\xad\x96\xab\x09\xf4\xea\xce\x13\x91\x0a\xb5\xa6\xf9\xd7\xfd\x3b\x68\xbf\x45\x70\x50\x2d\x65\x64\x9d\xe0\x68\xef\xa0\x5a\xfe\xf5\xfc\x9c\xaf\x8e\xd9\x9a\x4f\xf6\xd0\xbe\x44\x20\x4c\x7e\xb1\xac\x84\x81\x03\xb3\x52\x2e\x77\xc4\xc3\xba\xa3\x1f\x3f\xc3\x48\xd0\xca\x09\xb2\x6a\x91\x89\xb7\xe2\x98\xca\x65\x36\x35\x38\x49\x29\x1b\xb4\x31\xd1\x05\xf8\x4d\xdd\x46\x6a\x14\xa6\x2a\x37\xd4\xdb\xeb\xeb\x45\x3a\xc4\x71\xdd\xd0\xa4\x16\x0d\xed\x6d\x65\x9c\x8f\x1e\x51\x15\xeb\x54\x98\xc3\x77\xd3\xab\x8a\xa3\x35\xff\xaf\x0b\xbe\xc8\x20\xd0\xd9\x19\x6d\x69\xd4\xa6\x03\x03\xe1\xd5\x59\xba\x9c\x37\x8e\x64\xa3\x4c\xbd\x2e\x65\x32\xa4\xdc\x60\x1a\x17\x52\x24\x05\x84\x95\x80\x8e\xbd\x86\xa5\x66\xe3\xb1\x81\x09\x08\xc3\x3a\x13\xfe\x90\x09\x87\xc1\xdf\xdf\x91\x49\x4c\x24\x97\x9e\xe2\xf2\xa1\xd7\x41\xb1\x7f\x64\xb1\x9a\x68\x8b\xce\x3c\xf4\x06\x9d\x09\x3e\x49\xa2\x98\x2a\x66\x63\xc9\xec\xa3\x2d\x99\xc5\x64\xd7\x4e\xb5\x90\x26\xae\xba\x1d\xed\x7a\x40\x63\x9b\x80\xa1\xef\x12\x22\xf5\x57\xe3\x44\x3f\x69\x6a\x90\x8a\xd4\x7d\x98\x5c\x0d\xb2\xa6\x16\x7e\x74\x50\x69\x40\xeb\x1f\x84\x12\x64\xb4\xda\x72\x70\x69\x7b\xac\x13\xd6\x47\x19\x0d\xe5\xfe\x91\xc3\xf5\x7b\x11\xbd\x6d\xf6\xb9\x12\xe1\x46\xf6\x2b\xce\xf2\xe3\xe5\xa2\x2a\x17\x17\x70\x78\x16\xb4\xdf\x86\x22\xc1\xc9\x0f\xd0\xf7\x6f\x8e\x80\xad\x63\x91\x58\x18\x46\x83\x3b\x3f\x2c\x3e\xb0\x79\x99\x03\x90\x94\xf6\x1d\xd5\xad\x46\xde\x5d\x2a\x48\x22\x84\x89\x82\x37\x0d\x9d\xb7\xca\x4d\x44\xd3\xe6\xc7\xfd\x7d\x91\x8c\xd7\x11\xaa\x87\xe6\xb6\x0c\x23\x32\x11\x14\x51\xf2\x1f\x5a\x30\x34\x42\xfb\x8f\x1a\xc6\x0e\x0f\xd1\x0f\x05\xba\xe4\x48\xe4\x6b\x17\xe7\x48\x64\xaa\x53\x54\x56\xff\xef\xff\xfc\xdf\x7a\x58\xd2\x51\x00\xc7\xb7\x2c\x3d\x1f\x00\xde\x19\x04\x7f\x69\xbd\x2f\xc1\x0b\x26\xad\x95\x0b\x60\xac\x9b\x21\xd1\xbf\xf8\xfa\x97\xc0\x60\xbe\x43\x5d\x7d\x82\xaa\xba\x98\x8e\x86\x5a\x57\x92\x2d\xd8\x1c\x0e\x3f\x34\x72\x7c\xc1\x59\x8e\x8a\x72\xb5\xae\x6a\x29\x41\xb7\x76\x57\xf3\x70\x74\x43\x93\xc5\x72\x28\xde\xf5\x5e\x6d\x13\x92\xd0\x6d\xa5\x7f\x15\x59\x35\x5e\x1b\xf9\xd6\xbc\x0e\xc7\xb0\x1e\x9e\x87\xb5\x41\x1d\xd7\xa8\x40\x2d\xe8\xc8\xe2\x30\xf7\xfb\xf1\x40\x47\x86\xe5\x6b\x06\xd4\xdc\x69\xb4\x6b\x4a\xc0\x1a\xeb\x6d\xcd\x57\x8b\x51\xdd\x04\x7e\x07\x13\xac\xd3\x7a\xd9\x77\xbf\x2f\xdb\x33\x76\x85\xca\x45\x36\xbf\x80\x97\x10\xf1\x72\xa1\xbf\xd2\x98\xa4\xfc\xa8\x96\xce\xc3\x1d\xa4\x03\xa6\x7c\x3d\x01\x7a\xea\x3d\x8d\xc0\xde\x24\x49\x4b\x17\xa8\x6f\x13\xa8\x07\xc9\x8b\x14\xd8\x58\x7e\xf0\x39\x65\x3e\x1c\xe1\xfb\x12\xa5\x4a\xa2\x8f\x6e\x56\xa2\x10\x32\xae\x29\xf4\x18\x84\xee\x6d\xfa\x62\xf7\x36\xde\xf1\x1e\xfa\x15\x24\x32\x91\x3c\xc8\x5f\x1b\x7d\x04\x56\x7d\xc0\x1b\x95\xe1\x1d\x03\x7b\xfa\x2b\x98\x59\x13\xb5\x3c\x8d\x5a\xf8\xeb\xc9\xa3\xbb\x14\xe5\x30\x53\xc6\xf3\x26\xf2\xd6\x61\x53\x9d\xc0\x6a\xbe\x43\x40\xd3\xbe\x43\xfc\xb9\xdf\xcb\x49\x54\xae\xd1\x8e\xc6\x92\xbf\x06\x5f\x37\x25\xd1\xc0\xea\xa8\x06\x54\xf4\x00\xa8\x25\x25\x5a\x8c\x6d\x67\x7f\x3a\xe9\x4e\x3b\x4f\x54\x9d\x9d\x6b\xd9\xc8\xa4\x3a\x3b\x47\x47\xbd\xb1\x64\x0f\xfd\xe9\xe8\x48\x06\xe5\x7e\x76\xa2\x16\x31\xaa\xb3\xf3\x7e\x9e\xa1\xbd\xa0\xb7\xd0\x7b\x9f\x73\xf2\x4d\x88\x15\x1d\x01\x83\x77\x3e\xf0\xd5\xba\x5c\x2e\xee\xdc\x43\x77\x60\xd2\xf7\xce\x54\xfc\x2a\xf9\xb9\x73\x4f\xcb\x0a\xe1\x77\xd9\x5d\xf5\xbb\xfc\x72\xeb\xab\x8f\x6a\x92\xee\xe5\xf2\x8c\xa3\x6f\x9f\x7e\x8f\xd2\x8b\x72\x9e\xa3\xe5\x79\x55\x9e\x95\x7f\xe7\xab\xf5\x14\xcd\xcb\xf7\x1c\xad\x0e\x7e\x59\x4f\xe5\x2b\x31\xcc\xb4\xaf\xcf\x79\x56\x16\x65\x26\x9c\x37\x2f\x41\xe1\xe7\xac\xaa\xf8\x6a\xb1\x06\x7c\xd0\xa8\x9a\x71\x54\x2c\xe7\xf3\xe5\x65\xb9\x38\xbd\x27\xe7\x3c\x85\xf9\xf5\xce\x45\xa2\x3b\xb5\xd1\xdc\x91\x93\xbb\x1d\x80\x03\x76\x96\xf7\x66\x51\x9b\x23\x92\xe2\xd9\xad\xaf\xa4\xba\xd4\xa1\xc9\x66\x9a\xbb\x3b\x80\x89\x3e\x83\xee\x40\x39\xed\xdb\x45\x6f\xd6\xf8\x4f\xda\xf7\x83\xc5\x32\xe7\x27\x57\xe7\xbc\x4d\xe6\xda\xb9\x6a\xf5\xe2\x51\x2e\xf4\x79\xe3\x17\xe5\xe2\x74\xf9\xbf\x5e\xa2\x0f\xde\x01\x3d\xf0\xe0\xf5\xbc\x6d\xa1\x9d\x25\x6d\x98\x51\xa1\xb1\xc6\xc4\x56\x97\x33\x36\xef\x61\x8a\x0f\xbc\xbb\x72\x22\x66\x55\xef\x8d\x92\xa7\x18\xd5\x6f\x33\xb6\x7e\x76\xb9\x78\x5e\x6f\x81\x39\x52\x40\x07\xdd\xdf\x01\xbc\x59\x22\x81\xaa\x71\x52\x28\x75\xc4\xe8\x82\xcb\xf5\x21\xf1\x1c\x0e\x12\xef\x09\xd9\xe8\xb2\x7a\xf3\x5e\x16\x30\x14\x10\xf0\xb9\x33\xf9\xd5\xeb\xd7\x8b\x59\xb9\x58\x8a\x5e\x31\x74\xc9\x53\xa4\x0e\xaa\xaa\x59\xeb\x03\x65\xd0\x4a\x26\x1f\x6f\xa9\x23\xaa\xb0\x6c\xf2\x71\xfa\x8f\x8f\x6f\xa7\x34\xda\x66\x49\x64\x70\x62\xf7\xf5\xd3\x27\x8f\xab\xea\xfc\x85\x18\x32\xd6\x55\x83\xed\xcf\x69\x79\x2a\x37\xb3\x1c\xfc\xb2\xfe\xf3\x36\x98\xef\x5c\xac\x39\xbc\xb0\x65\xd5\x9d\xfb\xb7\x86\x84\xbe\x2b\x4f\x7f\x02\x84\xf7\x45\x87\x7f\x59\xcf\x44\x50\x2e\x4f\x17\xcb\x15\xbf\x37\x2f\x17\xfc\x56\x43\xfa\x92\xa7\xfe\x56\x24\x85\x92\x5e\xf1\x54\x8e\x4d\xf2\x98\xf1\x9d\x83\xc3\x79\x99\x1e\x0a\x14\x22\x38\xdf\x3a\x3c\x44\xf9\x72\x71\xa7\x42\xcb\x0f\x7c\xb5\x2a\x73\x5e\xaf\x38\xd4\x0b\x1c\xb7\xb4\x33\xc8\x6a\xe9\x40\x44\xb8\x3b\xcd\x8e\x06\x58\x90\xe8\x00\x1c\x48\x9a\x5d\x28\x61\x21\xb0\x4e\xa6\x83\x00\x77\xf7\x6f\x7d\x34\x88\x43\x3e\x51\x2b\x5b\x35\xcb\x7f\xbe\x47\xc8\xc7\xb7\x42\x0c\xd3\x37\x52\x0c\x6f\xf7\x6e\xdd\xfa\xff\x01\x00\x00\xff\xff\x02\x09\x77\x52\x22\x24\x06\x00") func web3JsBytes() ([]byte, error) { return bindataRead( @@ -106,7 +106,7 @@ func web3Js() (*asset, error) { } info := bindataFileInfo{name: "web3.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4c, 0xb2, 0xb5, 0x69, 0x9e, 0x5e, 0xe3, 0x56, 0x47, 0x6, 0x96, 0x4a, 0x7a, 0xcd, 0xdf, 0x79, 0xc5, 0xf2, 0x71, 0x64, 0x77, 0x8a, 0x53, 0x58, 0x6, 0xb1, 0xff, 0x4f, 0x0, 0xd6, 0x7f, 0x61}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x12, 0x22, 0x81, 0x1, 0xe2, 0x72, 0xd3, 0xd5, 0x4d, 0x2d, 0x30, 0xa5, 0x3, 0x90, 0x3a, 0xf8, 0x17, 0x2d, 0xe3, 0x5, 0x44, 0x21, 0x63, 0xba, 0x1a, 0x37, 0x3f, 0x3f, 0xa5, 0x30, 0x5e, 0x6f}} return a, nil } diff --git a/internal/jsre/deps/web3.js b/internal/jsre/deps/web3.js index 3c0b9b3d07..cd9c9fbda2 100644 --- a/internal/jsre/deps/web3.js +++ b/internal/jsre/deps/web3.js @@ -3949,10 +3949,18 @@ var outputSyncingFormatter = function(result) { result.startingBlock = utils.toDecimal(result.startingBlock); result.currentBlock = utils.toDecimal(result.currentBlock); result.highestBlock = utils.toDecimal(result.highestBlock); - if (result.knownStates) { - result.knownStates = utils.toDecimal(result.knownStates); - result.pulledStates = utils.toDecimal(result.pulledStates); - } + result.syncedAccounts = utils.toDecimal(result.syncedAccounts); + result.syncedAccountBytes = utils.toDecimal(result.syncedAccountBytes); + result.syncedBytecodes = utils.toDecimal(result.syncedBytecodes); + result.syncedBytecodeBytes = utils.toDecimal(result.syncedBytecodeBytes); + result.syncedStorage = utils.toDecimal(result.syncedStorage); + result.syncedStorageBytes = utils.toDecimal(result.syncedStorageBytes); + result.healedTrienodes = utils.toDecimal(result.healedTrienodes); + result.healedTrienodeBytes = utils.toDecimal(result.healedTrienodeBytes); + result.healedBytecodes = utils.toDecimal(result.healedBytecodes); + result.healedBytecodeBytes = utils.toDecimal(result.healedBytecodeBytes); + result.healingTrienodes = utils.toDecimal(result.healingTrienodes); + result.healingBytecode = utils.toDecimal(result.healingBytecode); return result; }; diff --git a/internal/jsre/jsre.go b/internal/jsre/jsre.go index bc8869b254..24fedd8d28 100644 --- a/internal/jsre/jsre.go +++ b/internal/jsre/jsre.go @@ -20,6 +20,7 @@ package jsre import ( crand "crypto/rand" "encoding/binary" + "errors" "fmt" "io" "io/ioutil" @@ -220,19 +221,33 @@ loop: } // Do executes the given function on the JS event loop. +// When the runtime is stopped, fn will not execute. func (re *JSRE) Do(fn func(*goja.Runtime)) { done := make(chan bool) req := &evalReq{fn, done} - re.evalQueue <- req - <-done + select { + case re.evalQueue <- req: + <-done + case <-re.closed: + } } -// stops the event loop before exit, optionally waits for all timers to expire +// Stop terminates the event loop, optionally waiting for all timers to expire. func (re *JSRE) Stop(waitForCallbacks bool) { - select { - case <-re.closed: - case re.stopEventLoop <- waitForCallbacks: - <-re.closed + timeout := time.NewTimer(10 * time.Millisecond) + defer timeout.Stop() + + for { + select { + case <-re.closed: + return + case re.stopEventLoop <- waitForCallbacks: + <-re.closed + return + case <-timeout.C: + // JS is blocked, interrupt and try again. + re.vm.Interrupt(errors.New("JS runtime stopped")) + } } } @@ -282,6 +297,19 @@ func (re *JSRE) Evaluate(code string, w io.Writer) { }) } +// Interrupt stops the current JS evaluation. +func (re *JSRE) Interrupt(v interface{}) { + done := make(chan bool) + noop := func(*goja.Runtime) {} + + select { + case re.evalQueue <- &evalReq{noop, done}: + // event loop is not blocked. + default: + re.vm.Interrupt(v) + } +} + // Compile compiles and then runs a piece of JS code. func (re *JSRE) Compile(filename string, src string) (err error) { re.Do(func(vm *goja.Runtime) { _, err = compileAndRun(vm, filename, src) }) diff --git a/internal/shutdowncheck/shutdown_tracker.go b/internal/shutdowncheck/shutdown_tracker.go new file mode 100644 index 0000000000..c95b4f02f4 --- /dev/null +++ b/internal/shutdowncheck/shutdown_tracker.go @@ -0,0 +1,85 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package shutdowncheck + +import ( + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/rawdb" + "github.com/ethereum/go-ethereum/ethdb" + "github.com/ethereum/go-ethereum/log" +) + +// ShutdownTracker is a service that reports previous unclean shutdowns +// upon start. It needs to be started after a successful start-up and stopped +// after a successful shutdown, just before the db is closed. +type ShutdownTracker struct { + db ethdb.Database + stopCh chan struct{} +} + +// NewShutdownTracker creates a new ShutdownTracker instance and has +// no other side-effect. +func NewShutdownTracker(db ethdb.Database) *ShutdownTracker { + return &ShutdownTracker{ + db: db, + stopCh: make(chan struct{}), + } +} + +// MarkStartup is to be called in the beginning when the node starts. It will: +// - Push a new startup marker to the db +// - Report previous unclean shutdowns +func (t *ShutdownTracker) MarkStartup() { + if uncleanShutdowns, discards, err := rawdb.PushUncleanShutdownMarker(t.db); err != nil { + log.Error("Could not update unclean-shutdown-marker list", "error", err) + } else { + if discards > 0 { + log.Warn("Old unclean shutdowns found", "count", discards) + } + for _, tstamp := range uncleanShutdowns { + t := time.Unix(int64(tstamp), 0) + log.Warn("Unclean shutdown detected", "booted", t, + "age", common.PrettyAge(t)) + } + } +} + +// Start runs an event loop that updates the current marker's timestamp every 5 minutes. +func (t *ShutdownTracker) Start() { + go func() { + ticker := time.NewTicker(5 * time.Minute) + defer ticker.Stop() + for { + select { + case <-ticker.C: + rawdb.UpdateUncleanShutdownMarker(t.db) + case <-t.stopCh: + return + } + } + }() +} + +// Stop will stop the update loop and clear the current marker. +func (t *ShutdownTracker) Stop() { + // Stop update loop. + t.stopCh <- struct{}{} + // Clear last marker. + rawdb.PopUncleanShutdownMarker(t.db) +} diff --git a/les/api_backend.go b/les/api_backend.go index 2861e2f9c5..e9e51c4ecc 100644 --- a/les/api_backend.go +++ b/les/api_backend.go @@ -324,7 +324,7 @@ func (b *LesApiBackend) CurrentHeader() *types.Header { return b.eth.blockchain.CurrentHeader() } -func (b *LesApiBackend) StateAtBlock(ctx context.Context, block *types.Block, reexec uint64, base *state.StateDB, checkLive bool) (*state.StateDB, error) { +func (b *LesApiBackend) StateAtBlock(ctx context.Context, block *types.Block, reexec uint64, base *state.StateDB, checkLive bool, preferDisk bool) (*state.StateDB, error) { return b.eth.stateAtBlock(ctx, block, reexec) } diff --git a/les/client.go b/les/client.go index aa3d4cf468..13000488b3 100644 --- a/les/client.go +++ b/les/client.go @@ -35,6 +35,7 @@ import ( "github.com/ethereum/go-ethereum/eth/gasprice" "github.com/ethereum/go-ethereum/event" "github.com/ethereum/go-ethereum/internal/ethapi" + "github.com/ethereum/go-ethereum/internal/shutdowncheck" "github.com/ethereum/go-ethereum/les/downloader" "github.com/ethereum/go-ethereum/les/vflux" vfc "github.com/ethereum/go-ethereum/les/vflux/client" @@ -63,6 +64,7 @@ type LightEthereum struct { serverPool *vfc.ServerPool serverPoolIterator enode.Iterator pruner *pruner + merger *consensus.Merger bloomRequests chan chan *bloombits.Retrieval // Channel receiving bloom data retrieval requests bloomIndexer *core.ChainIndexer // Bloom indexer operating during block imports @@ -76,6 +78,8 @@ type LightEthereum struct { p2pServer *p2p.Server p2pConfig *p2p.Config udpEnabled bool + + shutdownTracker *shutdowncheck.ShutdownTracker // Tracks if and when the node has shutdown ungracefully } // New creates an instance of the light client. @@ -88,13 +92,14 @@ func New(stack *node.Node, config *ethconfig.Config) (*LightEthereum, error) { if err != nil { return nil, err } - chainConfig, genesisHash, genesisErr := core.SetupGenesisBlockWithOverride(chainDb, config.Genesis, config.OverrideLondon) + chainConfig, genesisHash, genesisErr := core.SetupGenesisBlockWithOverride(chainDb, config.Genesis, config.OverrideArrowGlacier, config.OverrideTerminalTotalDifficulty) if _, isCompat := genesisErr.(*params.ConfigCompatError); genesisErr != nil && !isCompat { return nil, genesisErr } log.Info("Initialised chain configuration", "config", chainConfig) peers := newServerPeerSet() + merger := consensus.NewMerger(chainDb) leth := &LightEthereum{ lesCommons: lesCommons{ genesis: genesisHash, @@ -105,16 +110,18 @@ func New(stack *node.Node, config *ethconfig.Config) (*LightEthereum, error) { lesDb: lesDb, closeCh: make(chan struct{}), }, - peers: peers, - eventMux: stack.EventMux(), - reqDist: newRequestDistributor(peers, &mclock.System{}), - accountManager: stack.AccountManager(), - engine: nil, - bloomRequests: make(chan chan *bloombits.Retrieval), - bloomIndexer: core.NewBloomIndexer(chainDb, params.BloomBitsBlocksClient, params.HelperTrieConfirmations), - p2pServer: stack.Server(), - p2pConfig: &stack.Config().P2P, - udpEnabled: stack.Config().P2P.DiscoveryV5, + peers: peers, + eventMux: stack.EventMux(), + reqDist: newRequestDistributor(peers, &mclock.System{}), + accountManager: stack.AccountManager(), + merger: merger, + engine: nil, + bloomRequests: make(chan chan *bloombits.Retrieval), + bloomIndexer: core.NewBloomIndexer(chainDb, params.BloomBitsBlocksClient, params.HelperTrieConfirmations), + p2pServer: stack.Server(), + p2pConfig: &stack.Config().P2P, + udpEnabled: stack.Config().P2P.DiscoveryV5, + shutdownTracker: shutdowncheck.NewShutdownTracker(chainDb), } var prenegQuery vfc.QueryFunc @@ -182,19 +189,9 @@ func New(stack *node.Node, config *ethconfig.Config) (*LightEthereum, error) { stack.RegisterProtocols(leth.Protocols()) stack.RegisterLifecycle(leth) - // Check for unclean shutdown - if uncleanShutdowns, discards, err := rawdb.PushUncleanShutdownMarker(chainDb); err != nil { - log.Error("Could not update unclean-shutdown-marker list", "error", err) - } else { - if discards > 0 { - log.Warn("Old unclean shutdowns found", "count", discards) - } - for _, tstamp := range uncleanShutdowns { - t := time.Unix(int64(tstamp), 0) - log.Warn("Unclean shutdown detected", "booted", t, - "age", common.PrettyAge(t)) - } - } + // Successful startup; push a marker and check previous unclean shutdowns. + leth.shutdownTracker.MarkStartup() + return leth, nil } @@ -332,6 +329,7 @@ func (s *LightEthereum) Engine() consensus.Engine { return s.engine } func (s *LightEthereum) LesVersion() int { return int(ClientProtocolVersions[0]) } func (s *LightEthereum) Downloader() *downloader.Downloader { return s.handler.downloader } func (s *LightEthereum) EventMux() *event.TypeMux { return s.eventMux } +func (s *LightEthereum) Merger() *consensus.Merger { return s.merger } // Protocols returns all the currently configured network protocols to start. func (s *LightEthereum) Protocols() []p2p.Protocol { @@ -348,6 +346,9 @@ func (s *LightEthereum) Protocols() []p2p.Protocol { func (s *LightEthereum) Start() error { log.Warn("Light client mode is an experimental feature") + // Regularly update shutdown marker + s.shutdownTracker.Start() + if s.udpEnabled && s.p2pServer.DiscV5 == nil { s.udpEnabled = false log.Error("Discovery v5 is not initialized") @@ -383,7 +384,9 @@ func (s *LightEthereum) Stop() error { s.engine.Close() s.pruner.close() s.eventMux.Stop() - rawdb.PopUncleanShutdownMarker(s.chainDb) + // Clean shutdown marker as the last thing before closing db + s.shutdownTracker.Stop() + s.chainDb.Close() s.lesDb.Close() s.wg.Wait() diff --git a/les/client_handler.go b/les/client_handler.go index 9583bd57ca..e416f92e29 100644 --- a/les/client_handler.go +++ b/les/client_handler.go @@ -74,7 +74,7 @@ func newClientHandler(ulcServers []string, ulcFraction int, checkpoint *params.T height = (checkpoint.SectionIndex+1)*params.CHTFrequency - 1 } handler.fetcher = newLightFetcher(backend.blockchain, backend.engine, backend.peers, handler.ulc, backend.chainDb, backend.reqDist, handler.synchronise) - handler.downloader = downloader.New(height, backend.chainDb, nil, backend.eventMux, nil, backend.blockchain, handler.removePeer) + handler.downloader = downloader.New(height, backend.chainDb, backend.eventMux, nil, backend.blockchain, handler.removePeer) handler.backend.peers.subscribe((*downloaderPeerNotify)(handler)) return handler } @@ -143,11 +143,13 @@ func (h *clientHandler) handle(p *serverPeer, noInitAnnounce bool) error { connectionTimer.Update(time.Duration(mclock.Now() - connectedAt)) serverConnectionGauge.Update(int64(h.backend.peers.len())) }() - // It's mainly used in testing which requires discarding initial - // signal to prevent syncing. - if !noInitAnnounce { + + // Discard all the announces after the transition + // Also discarding initial signal to prevent syncing during testing. + if !(noInitAnnounce || h.backend.merger.TDDReached()) { h.fetcher.announce(p, &announceData{Hash: p.headInfo.Hash, Number: p.headInfo.Number, Td: p.headInfo.Td}) } + // Mark the peer starts to be served. atomic.StoreUint32(&p.serving, 1) defer atomic.StoreUint32(&p.serving, 0) @@ -212,7 +214,11 @@ func (h *clientHandler) handleMsg(p *serverPeer) error { // Update peer head information first and then notify the announcement p.updateHead(req.Hash, req.Number, req.Td) - h.fetcher.announce(p, &req) + + // Discard all the announces after the transition + if !h.backend.merger.TDDReached() { + h.fetcher.announce(p, &req) + } } case msg.Code == BlockHeadersMsg: p.Log().Trace("Received block header response message") diff --git a/les/downloader/downloader.go b/les/downloader/downloader.go index e7dfc4158e..448a94192b 100644 --- a/les/downloader/downloader.go +++ b/les/downloader/downloader.go @@ -40,7 +40,6 @@ import ( "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/metrics" "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/trie" ) var ( @@ -97,8 +96,7 @@ type Downloader struct { queue *queue // Scheduler for selecting the hashes to download peers *peerSet // Set of active peers from which download can proceed - stateDB ethdb.Database // Database to state sync into (and deduplicate via) - stateBloom *trie.SyncBloom // Bloom filter for fast trie node and contract code existence checks + stateDB ethdb.Database // Database to state sync into (and deduplicate via) // Statistics syncStatsChainOrigin uint64 // Origin block number where syncing started at @@ -207,13 +205,12 @@ type BlockChain interface { } // New creates a new downloader to fetch hashes and blocks from remote peers. -func New(checkpoint uint64, stateDb ethdb.Database, stateBloom *trie.SyncBloom, mux *event.TypeMux, chain BlockChain, lightchain LightChain, dropPeer peerDropFn) *Downloader { +func New(checkpoint uint64, stateDb ethdb.Database, mux *event.TypeMux, chain BlockChain, lightchain LightChain, dropPeer peerDropFn) *Downloader { if lightchain == nil { lightchain = chain } dl := &Downloader{ stateDB: stateDb, - stateBloom: stateBloom, mux: mux, checkpoint: checkpoint, queue: newQueue(blockCacheMaxItems, blockCacheInitialItems), @@ -231,9 +228,9 @@ func New(checkpoint uint64, stateDb ethdb.Database, stateBloom *trie.SyncBloom, stateCh: make(chan dataPack), SnapSyncer: snap.NewSyncer(stateDb), stateSyncStart: make(chan *stateSync), - syncStatsState: stateSyncStats{ - processed: rawdb.ReadFastTrieProgress(stateDb), - }, + //syncStatsState: stateSyncStats{ + // processed: rawdb.ReadFastTrieProgress(stateDb), + //}, trackStateReq: make(chan *stateReq), } go dl.stateFetcher() @@ -268,8 +265,8 @@ func (d *Downloader) Progress() ethereum.SyncProgress { StartingBlock: d.syncStatsChainOrigin, CurrentBlock: current, HighestBlock: d.syncStatsChainHeight, - PulledStates: d.syncStatsState.processed, - KnownStates: d.syncStatsState.processed + d.syncStatsState.pending, + //PulledStates: d.syncStatsState.processed, + //KnownStates: d.syncStatsState.processed + d.syncStatsState.pending, } } @@ -367,12 +364,6 @@ func (d *Downloader) synchronise(id string, hash common.Hash, td *big.Int, mode if atomic.CompareAndSwapInt32(&d.notified, 0, 1) { log.Info("Block synchronisation started") } - // If we are already full syncing, but have a fast-sync bloom filter laying - // around, make sure it doesn't use memory any more. This is a special case - // when the user attempts to fast sync a new empty network. - if mode == FullSync && d.stateBloom != nil { - d.stateBloom.Close() - } // If snap sync was requested, create the snap scheduler and switch to fast // sync mode. Long term we could drop fast sync or merge the two together, // but until snap becomes prevalent, we should support both. TODO(karalabe). @@ -628,9 +619,6 @@ func (d *Downloader) Terminate() { default: close(d.quitCh) } - if d.stateBloom != nil { - d.stateBloom.Close() - } d.quitLock.Unlock() // Cancel any pending download requests @@ -1930,15 +1918,6 @@ func (d *Downloader) commitPivotBlock(result *fetchResult) error { return err } atomic.StoreInt32(&d.committed, 1) - - // If we had a bloom filter for the state sync, deallocate it now. Note, we only - // deallocate internally, but keep the empty wrapper. This ensures that if we do - // a rollback after committing the pivot and restarting fast sync, we don't end - // up using a nil bloom. Empty bloom is fine, it just returns that it does not - // have the info we need, so reach down to the database instead. - if d.stateBloom != nil { - d.stateBloom.Close() - } return nil } diff --git a/les/downloader/downloader_test.go b/les/downloader/downloader_test.go index 17cd3630c9..69bdb90ed2 100644 --- a/les/downloader/downloader_test.go +++ b/les/downloader/downloader_test.go @@ -89,7 +89,7 @@ func newTester() *downloadTester { tester.stateDb = rawdb.NewMemoryDatabase() tester.stateDb.Put(testGenesis.Root().Bytes(), []byte{0x00}) - tester.downloader = New(0, tester.stateDb, trie.NewSyncBloom(1, tester.stateDb), new(event.TypeMux), tester, nil, tester.dropPeer) + tester.downloader = New(0, tester.stateDb, new(event.TypeMux), tester, nil, tester.dropPeer) return tester } @@ -1207,8 +1207,8 @@ func checkProgress(t *testing.T, d *Downloader, stage string, want ethereum.Sync t.Helper() p := d.Progress() - p.KnownStates, p.PulledStates = 0, 0 - want.KnownStates, want.PulledStates = 0, 0 + //p.KnownStates, p.PulledStates = 0, 0 + //want.KnownStates, want.PulledStates = 0, 0 if p != want { t.Fatalf("%s progress mismatch:\nhave %+v\nwant %+v", stage, p, want) } diff --git a/les/downloader/statesync.go b/les/downloader/statesync.go index 6c53e5577a..2b32788229 100644 --- a/les/downloader/statesync.go +++ b/les/downloader/statesync.go @@ -22,7 +22,6 @@ import ( "time" "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/ethdb" @@ -298,7 +297,7 @@ func newStateSync(d *Downloader, root common.Hash) *stateSync { return &stateSync{ d: d, root: root, - sched: state.NewStateSync(root, d.stateDB, d.stateBloom, nil), + sched: state.NewStateSync(root, d.stateDB, nil), keccak: sha3.NewLegacyKeccak256().(crypto.KeccakState), trieTasks: make(map[common.Hash]*trieTask), codeTasks: make(map[common.Hash]*codeTask), @@ -610,6 +609,6 @@ func (s *stateSync) updateStats(written, duplicate, unexpected int, duration tim log.Info("Imported new state entries", "count", written, "elapsed", common.PrettyDuration(duration), "processed", s.d.syncStatsState.processed, "pending", s.d.syncStatsState.pending, "trieretry", len(s.trieTasks), "coderetry", len(s.codeTasks), "duplicate", s.d.syncStatsState.duplicate, "unexpected", s.d.syncStatsState.unexpected) } if written > 0 { - rawdb.WriteFastTrieProgress(s.d.stateDB, s.d.syncStatsState.processed) + //rawdb.WriteFastTrieProgress(s.d.stateDB, s.d.syncStatsState.processed) } } diff --git a/les/fetcher.go b/les/fetcher.go index d944d32858..bfe3aa16ec 100644 --- a/les/fetcher.go +++ b/les/fetcher.go @@ -71,8 +71,8 @@ type fetcherPeer struct { // These following two fields can track the latest announces // from the peer with limited size for caching. We hold the // assumption that all enqueued announces are td-monotonic. - announces map[common.Hash]*announce // Announcement map - announcesList []common.Hash // FIFO announces list + announces map[common.Hash]*announce // Announcement map + fifo []common.Hash // FIFO announces list } // addAnno enqueues an new trusted announcement. If the queued announces overflow, @@ -87,15 +87,15 @@ func (fp *fetcherPeer) addAnno(anno *announce) { return } fp.announces[hash] = anno - fp.announcesList = append(fp.announcesList, hash) + fp.fifo = append(fp.fifo, hash) // Evict oldest if the announces are oversized. - if len(fp.announcesList)-cachedAnnosThreshold > 0 { - for i := 0; i < len(fp.announcesList)-cachedAnnosThreshold; i++ { - delete(fp.announces, fp.announcesList[i]) + if len(fp.fifo)-cachedAnnosThreshold > 0 { + for i := 0; i < len(fp.fifo)-cachedAnnosThreshold; i++ { + delete(fp.announces, fp.fifo[i]) } - copy(fp.announcesList, fp.announcesList[len(fp.announcesList)-cachedAnnosThreshold:]) - fp.announcesList = fp.announcesList[:cachedAnnosThreshold] + copy(fp.fifo, fp.fifo[len(fp.fifo)-cachedAnnosThreshold:]) + fp.fifo = fp.fifo[:cachedAnnosThreshold] } } @@ -106,8 +106,8 @@ func (fp *fetcherPeer) forwardAnno(td *big.Int) []*announce { cutset int evicted []*announce ) - for ; cutset < len(fp.announcesList); cutset++ { - anno := fp.announces[fp.announcesList[cutset]] + for ; cutset < len(fp.fifo); cutset++ { + anno := fp.announces[fp.fifo[cutset]] if anno == nil { continue // In theory it should never ever happen } @@ -118,8 +118,8 @@ func (fp *fetcherPeer) forwardAnno(td *big.Int) []*announce { delete(fp.announces, anno.data.Hash) } if cutset > 0 { - copy(fp.announcesList, fp.announcesList[cutset:]) - fp.announcesList = fp.announcesList[:len(fp.announcesList)-cutset] + copy(fp.fifo, fp.fifo[cutset:]) + fp.fifo = fp.fifo[:len(fp.fifo)-cutset] } return evicted } diff --git a/les/fetcher/block_fetcher_test.go b/les/fetcher/block_fetcher_test.go index b6d1125b56..de066ac26b 100644 --- a/les/fetcher/block_fetcher_test.go +++ b/les/fetcher/block_fetcher_test.go @@ -60,8 +60,8 @@ func makeChain(n int, seed byte, parent *types.Block) ([]common.Hash, map[common block.AddTx(tx) } // If the block number is a multiple of 5, add a bonus uncle to the block - if i%5 == 0 { - block.AddUncle(&types.Header{ParentHash: block.PrevBlock(i - 1).Hash(), Number: big.NewInt(int64(i - 1))}) + if i > 0 && i%5 == 0 { + block.AddUncle(&types.Header{ParentHash: block.PrevBlock(i - 2).Hash(), Number: big.NewInt(int64(i - 1))}) } }) hashes := make([]common.Hash, n+1) diff --git a/les/fetcher_test.go b/les/fetcher_test.go index ef700651e3..a922ab0f83 100644 --- a/les/fetcher_test.go +++ b/les/fetcher_test.go @@ -26,6 +26,7 @@ import ( "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/p2p/enode" + "github.com/ethereum/go-ethereum/params" ) // verifyImportEvent verifies that one single event arrive on an import channel. @@ -247,7 +248,7 @@ func testInvalidAnnounces(t *testing.T, protocol int) { // Prepare announcement by latest header. headerOne := s.backend.Blockchain().GetHeaderByNumber(1) hash, number := headerOne.Hash(), headerOne.Number.Uint64() - td := big.NewInt(200) // bad td + td := big.NewInt(params.GenesisDifficulty.Int64() + 200) // bad td // Sign the announcement if necessary. announce := announceData{hash, number, td, 0, nil} diff --git a/les/server_handler.go b/les/server_handler.go index f36a87a513..da06ac315e 100644 --- a/les/server_handler.go +++ b/les/server_handler.go @@ -421,7 +421,10 @@ func (h *serverHandler) broadcastLoop() { } var reorg uint64 if lastHead != nil { - reorg = lastHead.Number.Uint64() - rawdb.FindCommonAncestor(h.chainDb, header, lastHead).Number.Uint64() + // If a setHead has been performed, the common ancestor can be nil. + if ancestor := rawdb.FindCommonAncestor(h.chainDb, header, lastHead); ancestor != nil { + reorg = lastHead.Number.Uint64() - ancestor.Number.Uint64() + } } lastHead, lastTd = header, td log.Debug("Announcing block to peers", "number", number, "hash", hash, "td", td, "reorg", reorg) diff --git a/les/test_helper.go b/les/test_helper.go index 21d0f191c9..10367ea800 100644 --- a/les/test_helper.go +++ b/les/test_helper.go @@ -33,6 +33,7 @@ import ( "github.com/ethereum/go-ethereum/accounts/abi/bind/backends" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/mclock" + "github.com/ethereum/go-ethereum/consensus" "github.com/ethereum/go-ethereum/consensus/ethash" "github.com/ethereum/go-ethereum/contracts/checkpointoracle/contract" "github.com/ethereum/go-ethereum/core" @@ -239,6 +240,7 @@ func newTestClientHandler(backend *backends.SimulatedBackend, odr *LesOdr, index engine: engine, blockchain: chain, eventMux: evmux, + merger: consensus.NewMerger(rawdb.NewMemoryDatabase()), } client.handler = newClientHandler(ulcServers, ulcFraction, nil, client) diff --git a/les/vflux/client/serverpool.go b/les/vflux/client/serverpool.go index cc0254c127..9703bf4c8d 100644 --- a/les/vflux/client/serverpool.go +++ b/les/vflux/client/serverpool.go @@ -44,7 +44,7 @@ const ( queryWaitStep = 1.02 // exponential multiplier of redial wait time when no value was provided by the server waitThreshold = time.Hour * 2000 // drop node if waiting time is over the threshold nodeWeightMul = 1000000 // multiplier constant for node weight calculation - nodeWeightThreshold = 100 // minimum weight for keeping a node in the the known (valuable) set + nodeWeightThreshold = 100 // minimum weight for keeping a node in the known (valuable) set minRedialWait = 10 // minimum redial wait time in seconds preNegLimit = 5 // maximum number of simultaneous pre-negotiation queries warnQueryFails = 20 // number of consecutive UDP query failures before we print a warning diff --git a/les/vflux/client/serverpool_test.go b/les/vflux/client/serverpool_test.go index c777d6c16d..c7d0245ef2 100644 --- a/les/vflux/client/serverpool_test.go +++ b/les/vflux/client/serverpool_test.go @@ -19,6 +19,7 @@ package client import ( "math/rand" "strconv" + "sync" "sync/atomic" "testing" "time" @@ -52,7 +53,7 @@ func testNodeIndex(id enode.ID) int { type ServerPoolTest struct { db ethdb.KeyValueStore clock *mclock.Simulated - quit chan struct{} + quit chan chan struct{} preNeg, preNegFail bool vt *ValueTracker sp *ServerPool @@ -62,6 +63,12 @@ type ServerPoolTest struct { trusted []string waitCount, waitEnded int32 + // preNegLock protects the cycle counter, testNodes list and its connected field + // (accessed from both the main thread and the preNeg callback) + preNegLock sync.Mutex + queryWg *sync.WaitGroup // a new wait group is created each time the simulation is started + stopping bool // stopping avoid callind queryWg.Add after queryWg.Wait + cycle, conn, servedConn int serviceCycles, dialCount int disconnect map[int][]int @@ -108,11 +115,21 @@ func (s *ServerPoolTest) addTrusted(i int) { func (s *ServerPoolTest) start() { var testQuery QueryFunc + s.queryWg = new(sync.WaitGroup) if s.preNeg { testQuery = func(node *enode.Node) int { + s.preNegLock.Lock() + if s.stopping { + s.preNegLock.Unlock() + return 0 + } + s.queryWg.Add(1) idx := testNodeIndex(node.ID()) n := &s.testNodes[idx] canConnect := !n.connected && n.connectCycles != 0 && s.cycle >= n.nextConnCycle + s.preNegLock.Unlock() + defer s.queryWg.Done() + if s.preNegFail { // simulate a scenario where UDP queries never work s.beginWait() @@ -155,7 +172,7 @@ func (s *ServerPoolTest) start() { s.sp.unixTime = func() int64 { return int64(s.clock.Now()) / int64(time.Second) } s.disconnect = make(map[int][]int) s.sp.Start() - s.quit = make(chan struct{}) + s.quit = make(chan chan struct{}) go func() { last := int32(-1) for { @@ -167,7 +184,8 @@ func (s *ServerPoolTest) start() { s.clock.Run(time.Second) } last = c - case <-s.quit: + case quit := <-s.quit: + close(quit) return } } @@ -175,9 +193,20 @@ func (s *ServerPoolTest) start() { } func (s *ServerPoolTest) stop() { - close(s.quit) + // disable further queries and wait if one is currently running + s.preNegLock.Lock() + s.stopping = true + s.preNegLock.Unlock() + s.queryWg.Wait() + + quit := make(chan struct{}) + s.quit <- quit + <-quit s.sp.Stop() s.spi.Close() + s.preNegLock.Lock() + s.stopping = false + s.preNegLock.Unlock() for i := range s.testNodes { n := &s.testNodes[i] if n.connected { @@ -197,7 +226,9 @@ func (s *ServerPoolTest) run() { n := &s.testNodes[idx] s.sp.UnregisterNode(n.node) n.totalConn += s.cycle + s.preNegLock.Lock() n.connected = false + s.preNegLock.Unlock() n.node = nil s.conn-- if n.service { @@ -222,7 +253,9 @@ func (s *ServerPoolTest) run() { s.servedConn++ } n.totalConn -= s.cycle + s.preNegLock.Lock() n.connected = true + s.preNegLock.Unlock() dc := s.cycle + n.connectCycles s.disconnect[dc] = append(s.disconnect[dc], idx) n.node = dial @@ -234,7 +267,9 @@ func (s *ServerPoolTest) run() { } s.serviceCycles += s.servedConn s.clock.Run(time.Second) + s.preNegLock.Lock() s.cycle++ + s.preNegLock.Unlock() } } @@ -245,11 +280,13 @@ func (s *ServerPoolTest) setNodes(count, conn, wait int, service, trusted bool) idx = rand.Intn(spTestNodes) } res = append(res, idx) + s.preNegLock.Lock() s.testNodes[idx] = spTestNode{ connectCycles: conn, waitCycles: wait, service: service, } + s.preNegLock.Unlock() if trusted { s.addTrusted(idx) } @@ -263,7 +300,9 @@ func (s *ServerPoolTest) resetNodes() { n.totalConn += s.cycle s.sp.UnregisterNode(n.node) } + s.preNegLock.Lock() s.testNodes[i] = spTestNode{totalConn: n.totalConn} + s.preNegLock.Unlock() } s.conn, s.servedConn = 0, 0 s.disconnect = make(map[int][]int) diff --git a/les/vflux/client/valuetracker.go b/les/vflux/client/valuetracker.go index f5390d0920..dcd2fcdfd9 100644 --- a/les/vflux/client/valuetracker.go +++ b/les/vflux/client/valuetracker.go @@ -50,7 +50,7 @@ type NodeValueTracker struct { lastTransfer mclock.AbsTime basket serverBasket reqCosts []uint64 - reqValues *[]float64 + reqValues []float64 } // UpdateCosts updates the node value tracker's request cost table @@ -58,14 +58,14 @@ func (nv *NodeValueTracker) UpdateCosts(reqCosts []uint64) { nv.vt.lock.Lock() defer nv.vt.lock.Unlock() - nv.updateCosts(reqCosts, &nv.vt.refBasket.reqValues, nv.vt.refBasket.reqValueFactor(reqCosts)) + nv.updateCosts(reqCosts, nv.vt.refBasket.reqValues, nv.vt.refBasket.reqValueFactor(reqCosts)) } // updateCosts updates the request cost table of the server. The request value factor // is also updated based on the given cost table and the current reference basket. // Note that the contents of the referenced reqValues slice will not change; a new // reference is passed if the values are updated by ValueTracker. -func (nv *NodeValueTracker) updateCosts(reqCosts []uint64, reqValues *[]float64, rvFactor float64) { +func (nv *NodeValueTracker) updateCosts(reqCosts []uint64, reqValues []float64, rvFactor float64) { nv.lock.Lock() defer nv.lock.Unlock() @@ -112,7 +112,7 @@ func (nv *NodeValueTracker) Served(reqs []ServedRequest, respTime time.Duration) var value float64 for _, r := range reqs { nv.basket.add(r.ReqType, r.Amount, nv.reqCosts[r.ReqType]*uint64(r.Amount), expFactor) - value += (*nv.reqValues)[r.ReqType] * float64(r.Amount) + value += nv.reqValues[r.ReqType] * float64(r.Amount) } nv.rtStats.Add(respTime, value, expFactor) } @@ -356,7 +356,7 @@ func (vt *ValueTracker) Register(id enode.ID) *NodeValueTracker { reqTypeCount := len(vt.refBasket.reqValues) nv.reqCosts = make([]uint64, reqTypeCount) nv.lastTransfer = vt.clock.Now() - nv.reqValues = &vt.refBasket.reqValues + nv.reqValues = vt.refBasket.reqValues nv.basket.init(reqTypeCount) vt.connected[id] = nv @@ -476,7 +476,7 @@ func (vt *ValueTracker) periodicUpdate() { vt.refBasket.normalize() vt.refBasket.updateReqValues() for _, nv := range vt.connected { - nv.updateCosts(nv.reqCosts, &vt.refBasket.reqValues, vt.refBasket.reqValueFactor(nv.reqCosts)) + nv.updateCosts(nv.reqCosts, vt.refBasket.reqValues, vt.refBasket.reqValueFactor(nv.reqCosts)) } vt.saveToDb() } diff --git a/les/vflux/server/balance_tracker.go b/les/vflux/server/balance_tracker.go index 746697a8c7..9695e79638 100644 --- a/les/vflux/server/balance_tracker.go +++ b/les/vflux/server/balance_tracker.go @@ -223,8 +223,9 @@ func (bt *balanceTracker) BalanceOperation(id enode.ID, connAddress string, cb f var nb *nodeBalance if node := bt.ns.GetNode(id); node != nil { nb, _ = bt.ns.GetField(node, bt.setup.balanceField).(*nodeBalance) - } else { - node = enode.SignNull(&enr.Record{}, id) + } + if nb == nil { + node := enode.SignNull(&enr.Record{}, id) nb = bt.newNodeBalance(node, connAddress, false) } cb(nb) diff --git a/light/lightchain.go b/light/lightchain.go index 92e0e6637f..be558e7a56 100644 --- a/light/lightchain.go +++ b/light/lightchain.go @@ -59,6 +59,7 @@ type LightChain struct { chainHeadFeed event.Feed scope event.SubscriptionScope genesisBlock *types.Block + forker *core.ForkChoice bodyCache *lru.Cache // Cache for the most recent block bodies bodyRLPCache *lru.Cache // Cache for the most recent block bodies in RLP encoded format @@ -92,6 +93,7 @@ func NewLightChain(odr OdrBackend, config *params.ChainConfig, engine consensus. blockCache: blockCache, engine: engine, } + bc.forker = core.NewForkChoice(bc, nil) var err error bc.hc, err = core.NewHeaderChain(odr.Database(), config, bc.engine, bc.getProcInterrupt) if err != nil { @@ -369,6 +371,42 @@ func (lc *LightChain) postChainEvents(events []interface{}) { } } +func (lc *LightChain) InsertHeader(header *types.Header) error { + // Verify the header first before obtaining the lock + headers := []*types.Header{header} + if _, err := lc.hc.ValidateHeaderChain(headers, 100); err != nil { + return err + } + // Make sure only one thread manipulates the chain at once + lc.chainmu.Lock() + defer lc.chainmu.Unlock() + + lc.wg.Add(1) + defer lc.wg.Done() + + _, err := lc.hc.WriteHeaders(headers) + log.Info("Inserted header", "number", header.Number, "hash", header.Hash()) + return err +} + +func (lc *LightChain) SetChainHead(header *types.Header) error { + lc.chainmu.Lock() + defer lc.chainmu.Unlock() + + lc.wg.Add(1) + defer lc.wg.Done() + + if err := lc.hc.Reorg([]*types.Header{header}); err != nil { + return err + } + // Emit events + block := types.NewBlockWithHeader(header) + lc.chainFeed.Send(core.ChainEvent{Block: block, Hash: block.Hash()}) + lc.chainHeadFeed.Send(core.ChainHeadEvent{Block: block}) + log.Info("Set the chain head", "number", block.Number(), "hash", block.Hash()) + return nil +} + // InsertHeaderChain attempts to insert the given header chain in to the local // chain, possibly creating a reorg. If an error is returned, it will return the // index number of the failing header as well an error describing what went wrong. @@ -396,25 +434,23 @@ func (lc *LightChain) InsertHeaderChain(chain []*types.Header, checkFreq int) (i lc.wg.Add(1) defer lc.wg.Done() - status, err := lc.hc.InsertHeaderChain(chain, start) + status, err := lc.hc.InsertHeaderChain(chain, start, lc.forker) if err != nil || len(chain) == 0 { return 0, err } // Create chain event for the new head block of this insertion. var ( - events = make([]interface{}, 0, 1) lastHeader = chain[len(chain)-1] block = types.NewBlockWithHeader(lastHeader) ) switch status { case core.CanonStatTy: - events = append(events, core.ChainEvent{Block: block, Hash: block.Hash()}) + lc.chainFeed.Send(core.ChainEvent{Block: block, Hash: block.Hash()}) + lc.chainHeadFeed.Send(core.ChainHeadEvent{Block: block}) case core.SideStatTy: - events = append(events, core.ChainSideEvent{Block: block}) + lc.chainSideFeed.Send(core.ChainSideEvent{Block: block}) } - lc.postChainEvents(events) - return 0, err } diff --git a/miner/miner.go b/miner/miner.go index 1c33b3bd28..c8aaa5b928 100644 --- a/miner/miner.go +++ b/miner/miner.go @@ -68,7 +68,7 @@ type Miner struct { wg sync.WaitGroup } -func New(eth Backend, config *Config, chainConfig *params.ChainConfig, mux *event.TypeMux, engine consensus.Engine, isLocalBlock func(block *types.Block) bool) *Miner { +func New(eth Backend, config *Config, chainConfig *params.ChainConfig, mux *event.TypeMux, engine consensus.Engine, isLocalBlock func(header *types.Header) bool, merger *consensus.Merger) *Miner { miner := &Miner{ eth: eth, mux: mux, @@ -76,7 +76,7 @@ func New(eth Backend, config *Config, chainConfig *params.ChainConfig, mux *even exitCh: make(chan struct{}), startCh: make(chan common.Address), stopCh: make(chan struct{}), - worker: newWorker(config, chainConfig, engine, eth, mux, isLocalBlock, true), + worker: newWorker(config, chainConfig, engine, eth, mux, isLocalBlock, true, merger), } miner.wg.Add(1) go miner.update() diff --git a/miner/miner_test.go b/miner/miner_test.go index da1e472dbd..de7ca73e26 100644 --- a/miner/miner_test.go +++ b/miner/miner_test.go @@ -22,6 +22,7 @@ import ( "time" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/consensus" "github.com/ethereum/go-ethereum/consensus/clique" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/rawdb" @@ -237,7 +238,7 @@ func createMiner(t *testing.T) (*Miner, *event.TypeMux) { // Create chainConfig memdb := memorydb.New() chainDB := rawdb.NewDatabase(memdb) - genesis := core.DeveloperGenesisBlock(15, common.HexToAddress("12345")) + genesis := core.DeveloperGenesisBlock(15, 11_500_000, common.HexToAddress("12345")) chainConfig, _, err := core.SetupGenesisBlock(chainDB, genesis) if err != nil { t.Fatalf("can't create new chain config: %v", err) @@ -245,6 +246,7 @@ func createMiner(t *testing.T) (*Miner, *event.TypeMux) { // Create consensus engine engine := clique.New(chainConfig.Clique, chainDB) // Create Ethereum backend + merger := consensus.NewMerger(rawdb.NewMemoryDatabase()) bc, err := core.NewBlockChain(chainDB, nil, chainConfig, engine, vm.Config{}, nil, nil) if err != nil { t.Fatalf("can't create new chain %v", err) @@ -257,5 +259,5 @@ func createMiner(t *testing.T) (*Miner, *event.TypeMux) { // Create event Mux mux := new(event.TypeMux) // Create Miner - return New(backend, &config, chainConfig, mux, engine, nil), mux + return New(backend, &config, chainConfig, mux, engine, nil, merger), mux } diff --git a/miner/stress/beacon/main.go b/miner/stress/beacon/main.go new file mode 100644 index 0000000000..70005e20db --- /dev/null +++ b/miner/stress/beacon/main.go @@ -0,0 +1,521 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +// This file contains a miner stress test for the eth1/2 transition +package main + +import ( + "crypto/ecdsa" + "errors" + "io/ioutil" + "math/big" + "math/rand" + "os" + "path/filepath" + "time" + + "github.com/ethereum/go-ethereum/accounts/keystore" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/fdlimit" + "github.com/ethereum/go-ethereum/consensus/ethash" + "github.com/ethereum/go-ethereum/core" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/eth" + "github.com/ethereum/go-ethereum/eth/catalyst" + "github.com/ethereum/go-ethereum/eth/downloader" + "github.com/ethereum/go-ethereum/eth/ethconfig" + "github.com/ethereum/go-ethereum/les" + "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/miner" + "github.com/ethereum/go-ethereum/node" + "github.com/ethereum/go-ethereum/p2p" + "github.com/ethereum/go-ethereum/p2p/enode" + "github.com/ethereum/go-ethereum/params" +) + +type nodetype int + +const ( + legacyMiningNode nodetype = iota + legacyNormalNode + eth2MiningNode + eth2NormalNode + eth2LightClient +) + +func (typ nodetype) String() string { + switch typ { + case legacyMiningNode: + return "legacyMiningNode" + case legacyNormalNode: + return "legacyNormalNode" + case eth2MiningNode: + return "eth2MiningNode" + case eth2NormalNode: + return "eth2NormalNode" + case eth2LightClient: + return "eth2LightClient" + default: + return "undefined" + } +} + +var ( + // transitionDifficulty is the target total difficulty for transition + transitionDifficulty = new(big.Int).Mul(big.NewInt(20), params.MinimumDifficulty) + + // blockInterval is the time interval for creating a new eth2 block + blockInterval = time.Second * 3 + blockIntervalInt = 3 + + // finalizationDist is the block distance for finalizing block + finalizationDist = 10 +) + +type ethNode struct { + typ nodetype + api *catalyst.ConsensusAPI + ethBackend *eth.Ethereum + lesBackend *les.LightEthereum + stack *node.Node + enode *enode.Node +} + +func newNode(typ nodetype, genesis *core.Genesis, enodes []*enode.Node) *ethNode { + var ( + err error + api *catalyst.ConsensusAPI + stack *node.Node + ethBackend *eth.Ethereum + lesBackend *les.LightEthereum + ) + // Start the node and wait until it's up + if typ == eth2LightClient { + stack, lesBackend, api, err = makeLightNode(genesis) + } else { + stack, ethBackend, api, err = makeFullNode(genesis) + } + if err != nil { + panic(err) + } + for stack.Server().NodeInfo().Ports.Listener == 0 { + time.Sleep(250 * time.Millisecond) + } + // Connect the node to all the previous ones + for _, n := range enodes { + stack.Server().AddPeer(n) + } + enode := stack.Server().Self() + + // Inject the signer key and start sealing with it + stack.AccountManager().AddBackend(keystore.NewPlaintextKeyStore("beacon-stress")) + store := stack.AccountManager().Backends(keystore.KeyStoreType)[0].(*keystore.KeyStore) + if _, err := store.NewAccount(""); err != nil { + panic(err) + } + return ðNode{ + typ: typ, + api: api, + ethBackend: ethBackend, + lesBackend: lesBackend, + stack: stack, + enode: enode, + } +} + +func (n *ethNode) assembleBlock(parentHash common.Hash, parentTimestamp uint64) (*catalyst.ExecutableDataV1, error) { + if n.typ != eth2MiningNode { + return nil, errors.New("invalid node type") + } + payloadAttribute := catalyst.PayloadAttributesV1{ + Timestamp: uint64(time.Now().Unix()), + } + fcState := catalyst.ForkchoiceStateV1{ + HeadBlockHash: parentHash, + SafeBlockHash: common.Hash{}, + FinalizedBlockHash: common.Hash{}, + } + payload, err := n.api.ForkchoiceUpdatedV1(fcState, &payloadAttribute) + if err != nil { + return nil, err + } + return n.api.GetPayloadV1(*payload.PayloadID) +} + +func (n *ethNode) insertBlock(eb catalyst.ExecutableDataV1) error { + if !eth2types(n.typ) { + return errors.New("invalid node type") + } + newResp, err := n.api.ExecutePayloadV1(eb) + if err != nil { + return err + } else if newResp.Status != "VALID" { + return errors.New("failed to insert block") + } + return nil +} + +func (n *ethNode) insertBlockAndSetHead(parent *types.Header, ed catalyst.ExecutableDataV1) error { + if !eth2types(n.typ) { + return errors.New("invalid node type") + } + if err := n.insertBlock(ed); err != nil { + return err + } + block, err := catalyst.ExecutableDataToBlock(ed) + if err != nil { + return err + } + fcState := catalyst.ForkchoiceStateV1{ + HeadBlockHash: block.ParentHash(), + SafeBlockHash: common.Hash{}, + FinalizedBlockHash: common.Hash{}, + } + if _, err := n.api.ForkchoiceUpdatedV1(fcState, nil); err != nil { + return err + } + return nil +} + +type nodeManager struct { + genesis *core.Genesis + genesisBlock *types.Block + nodes []*ethNode + enodes []*enode.Node + close chan struct{} +} + +func newNodeManager(genesis *core.Genesis) *nodeManager { + return &nodeManager{ + close: make(chan struct{}), + genesis: genesis, + genesisBlock: genesis.ToBlock(nil), + } +} + +func (mgr *nodeManager) createNode(typ nodetype) { + node := newNode(typ, mgr.genesis, mgr.enodes) + mgr.nodes = append(mgr.nodes, node) + mgr.enodes = append(mgr.enodes, node.enode) +} + +func (mgr *nodeManager) getNodes(typ nodetype) []*ethNode { + var ret []*ethNode + for _, node := range mgr.nodes { + if node.typ == typ { + ret = append(ret, node) + } + } + return ret +} + +func (mgr *nodeManager) startMining() { + for _, node := range append(mgr.getNodes(eth2MiningNode), mgr.getNodes(legacyMiningNode)...) { + if err := node.ethBackend.StartMining(1); err != nil { + panic(err) + } + } +} + +func (mgr *nodeManager) shutdown() { + close(mgr.close) + for _, node := range mgr.nodes { + node.stack.Close() + } +} + +func (mgr *nodeManager) run() { + if len(mgr.nodes) == 0 { + return + } + chain := mgr.nodes[0].ethBackend.BlockChain() + sink := make(chan core.ChainHeadEvent, 1024) + sub := chain.SubscribeChainHeadEvent(sink) + defer sub.Unsubscribe() + + var ( + transitioned bool + parentBlock *types.Block + waitFinalise []*types.Block + ) + timer := time.NewTimer(0) + defer timer.Stop() + <-timer.C // discard the initial tick + + // Handle the by default transition. + if transitionDifficulty.Sign() == 0 { + transitioned = true + parentBlock = mgr.genesisBlock + timer.Reset(blockInterval) + log.Info("Enable the transition by default") + } + + // Handle the block finalization. + checkFinalise := func() { + if parentBlock == nil { + return + } + if len(waitFinalise) == 0 { + return + } + oldest := waitFinalise[0] + if oldest.NumberU64() > parentBlock.NumberU64() { + return + } + distance := parentBlock.NumberU64() - oldest.NumberU64() + if int(distance) < finalizationDist { + return + } + nodes := mgr.getNodes(eth2MiningNode) + nodes = append(nodes, mgr.getNodes(eth2NormalNode)...) + nodes = append(nodes, mgr.getNodes(eth2LightClient)...) + for _, node := range append(nodes) { + fcState := catalyst.ForkchoiceStateV1{ + HeadBlockHash: oldest.Hash(), + SafeBlockHash: common.Hash{}, + FinalizedBlockHash: common.Hash{}, + } + node.api.ForkchoiceUpdatedV1(fcState, nil) + } + log.Info("Finalised eth2 block", "number", oldest.NumberU64(), "hash", oldest.Hash()) + waitFinalise = waitFinalise[1:] + } + + for { + checkFinalise() + select { + case <-mgr.close: + return + + case ev := <-sink: + if transitioned { + continue + } + td := chain.GetTd(ev.Block.Hash(), ev.Block.NumberU64()) + if td.Cmp(transitionDifficulty) < 0 { + continue + } + transitioned, parentBlock = true, ev.Block + timer.Reset(blockInterval) + log.Info("Transition difficulty reached", "td", td, "target", transitionDifficulty, "number", ev.Block.NumberU64(), "hash", ev.Block.Hash()) + + case <-timer.C: + producers := mgr.getNodes(eth2MiningNode) + if len(producers) == 0 { + continue + } + hash, timestamp := parentBlock.Hash(), parentBlock.Time() + if parentBlock.NumberU64() == 0 { + timestamp = uint64(time.Now().Unix()) - uint64(blockIntervalInt) + } + ed, err := producers[0].assembleBlock(hash, timestamp) + if err != nil { + log.Error("Failed to assemble the block", "err", err) + continue + } + block, _ := catalyst.ExecutableDataToBlock(*ed) + + nodes := mgr.getNodes(eth2MiningNode) + nodes = append(nodes, mgr.getNodes(eth2NormalNode)...) + nodes = append(nodes, mgr.getNodes(eth2LightClient)...) + + for _, node := range nodes { + if err := node.insertBlockAndSetHead(parentBlock.Header(), *ed); err != nil { + log.Error("Failed to insert block", "type", node.typ, "err", err) + } + } + log.Info("Create and insert eth2 block", "number", ed.Number) + parentBlock = block + waitFinalise = append(waitFinalise, block) + timer.Reset(blockInterval) + } + } +} + +func main() { + log.Root().SetHandler(log.LvlFilterHandler(log.LvlInfo, log.StreamHandler(os.Stderr, log.TerminalFormat(true)))) + fdlimit.Raise(2048) + + // Generate a batch of accounts to seal and fund with + faucets := make([]*ecdsa.PrivateKey, 16) + for i := 0; i < len(faucets); i++ { + faucets[i], _ = crypto.GenerateKey() + } + // Pre-generate the ethash mining DAG so we don't race + ethash.MakeDataset(1, filepath.Join(os.Getenv("HOME"), ".ethash")) + + // Create an Ethash network based off of the Ropsten config + genesis := makeGenesis(faucets) + manager := newNodeManager(genesis) + defer manager.shutdown() + + manager.createNode(eth2NormalNode) + manager.createNode(eth2MiningNode) + manager.createNode(legacyMiningNode) + manager.createNode(legacyNormalNode) + manager.createNode(eth2LightClient) + + // Iterate over all the nodes and start mining + time.Sleep(3 * time.Second) + if transitionDifficulty.Sign() != 0 { + manager.startMining() + } + go manager.run() + + // Start injecting transactions from the faucets like crazy + time.Sleep(3 * time.Second) + nonces := make([]uint64, len(faucets)) + for { + // Pick a random mining node + nodes := manager.getNodes(eth2MiningNode) + + index := rand.Intn(len(faucets)) + node := nodes[index%len(nodes)] + + // Create a self transaction and inject into the pool + tx, err := types.SignTx(types.NewTransaction(nonces[index], crypto.PubkeyToAddress(faucets[index].PublicKey), new(big.Int), 21000, big.NewInt(100000000000+rand.Int63n(65536)), nil), types.HomesteadSigner{}, faucets[index]) + if err != nil { + panic(err) + } + if err := node.ethBackend.TxPool().AddLocal(tx); err != nil { + panic(err) + } + nonces[index]++ + + // Wait if we're too saturated + if pend, _ := node.ethBackend.TxPool().Stats(); pend > 2048 { + time.Sleep(100 * time.Millisecond) + } + } +} + +// makeGenesis creates a custom Ethash genesis block based on some pre-defined +// faucet accounts. +func makeGenesis(faucets []*ecdsa.PrivateKey) *core.Genesis { + genesis := core.DefaultRopstenGenesisBlock() + genesis.Difficulty = params.MinimumDifficulty + genesis.GasLimit = 25000000 + + genesis.Config.ChainID = big.NewInt(18) + genesis.Config.EIP150Hash = common.Hash{} + genesis.BaseFee = big.NewInt(params.InitialBaseFee) + genesis.Config.TerminalTotalDifficulty = transitionDifficulty + + genesis.Alloc = core.GenesisAlloc{} + for _, faucet := range faucets { + genesis.Alloc[crypto.PubkeyToAddress(faucet.PublicKey)] = core.GenesisAccount{ + Balance: new(big.Int).Exp(big.NewInt(2), big.NewInt(128), nil), + } + } + return genesis +} + +func makeFullNode(genesis *core.Genesis) (*node.Node, *eth.Ethereum, *catalyst.ConsensusAPI, error) { + // Define the basic configurations for the Ethereum node + datadir, _ := ioutil.TempDir("", "") + + config := &node.Config{ + Name: "geth", + Version: params.Version, + DataDir: datadir, + P2P: p2p.Config{ + ListenAddr: "0.0.0.0:0", + NoDiscovery: true, + MaxPeers: 25, + }, + UseLightweightKDF: true, + } + // Create the node and configure a full Ethereum node on it + stack, err := node.New(config) + if err != nil { + return nil, nil, nil, err + } + econfig := ðconfig.Config{ + Genesis: genesis, + NetworkId: genesis.Config.ChainID.Uint64(), + SyncMode: downloader.FullSync, + DatabaseCache: 256, + DatabaseHandles: 256, + TxPool: core.DefaultTxPoolConfig, + GPO: ethconfig.Defaults.GPO, + Ethash: ethconfig.Defaults.Ethash, + Miner: miner.Config{ + GasFloor: genesis.GasLimit * 9 / 10, + GasCeil: genesis.GasLimit * 11 / 10, + GasPrice: big.NewInt(1), + Recommit: 10 * time.Second, // Disable the recommit + }, + LightServ: 100, + LightPeers: 10, + LightNoSyncServe: true, + } + ethBackend, err := eth.New(stack, econfig) + if err != nil { + return nil, nil, nil, err + } + _, err = les.NewLesServer(stack, ethBackend, econfig) + if err != nil { + log.Crit("Failed to create the LES server", "err", err) + } + err = stack.Start() + return stack, ethBackend, catalyst.NewConsensusAPI(ethBackend, nil), err +} + +func makeLightNode(genesis *core.Genesis) (*node.Node, *les.LightEthereum, *catalyst.ConsensusAPI, error) { + // Define the basic configurations for the Ethereum node + datadir, _ := ioutil.TempDir("", "") + + config := &node.Config{ + Name: "geth", + Version: params.Version, + DataDir: datadir, + P2P: p2p.Config{ + ListenAddr: "0.0.0.0:0", + NoDiscovery: true, + MaxPeers: 25, + }, + UseLightweightKDF: true, + } + // Create the node and configure a full Ethereum node on it + stack, err := node.New(config) + if err != nil { + return nil, nil, nil, err + } + lesBackend, err := les.New(stack, ðconfig.Config{ + Genesis: genesis, + NetworkId: genesis.Config.ChainID.Uint64(), + SyncMode: downloader.LightSync, + DatabaseCache: 256, + DatabaseHandles: 256, + TxPool: core.DefaultTxPoolConfig, + GPO: ethconfig.Defaults.GPO, + Ethash: ethconfig.Defaults.Ethash, + LightPeers: 10, + }) + if err != nil { + return nil, nil, nil, err + } + err = stack.Start() + return stack, lesBackend, catalyst.NewConsensusAPI(nil, lesBackend), err +} + +func eth2types(typ nodetype) bool { + if typ == eth2LightClient || typ == eth2NormalNode || typ == eth2MiningNode { + return true + } + return false +} diff --git a/miner/worker.go b/miner/worker.go index 8654e439c4..5be6aea3fb 100644 --- a/miner/worker.go +++ b/miner/worker.go @@ -128,6 +128,7 @@ type worker struct { engine consensus.Engine eth Backend chain *core.BlockChain + merger *consensus.Merger // Feeds pendingLogsFeed event.Feed @@ -181,7 +182,7 @@ type worker struct { noempty uint32 // External functions - isLocalBlock func(block *types.Block) bool // Function used to determine whether the specified block is mined by local miner. + isLocalBlock func(header *types.Header) bool // Function used to determine whether the specified block is mined by local miner. // Test hooks newTaskHook func(*task) // Method to call upon receiving a new sealing task. @@ -190,7 +191,7 @@ type worker struct { resubmitHook func(time.Duration, time.Duration) // Method to call upon updating resubmitting interval. } -func newWorker(config *Config, chainConfig *params.ChainConfig, engine consensus.Engine, eth Backend, mux *event.TypeMux, isLocalBlock func(*types.Block) bool, init bool) *worker { +func newWorker(config *Config, chainConfig *params.ChainConfig, engine consensus.Engine, eth Backend, mux *event.TypeMux, isLocalBlock func(header *types.Header) bool, init bool, merger *consensus.Merger) *worker { worker := &worker{ config: config, chainConfig: chainConfig, @@ -198,6 +199,7 @@ func newWorker(config *Config, chainConfig *params.ChainConfig, engine consensus eth: eth, mux: mux, chain: eth.BlockChain(), + merger: merger, isLocalBlock: isLocalBlock, localUncles: make(map[common.Hash]*types.Block), remoteUncles: make(map[common.Hash]*types.Block), @@ -472,7 +474,7 @@ func (w *worker) mainLoop() { continue } // Add side block to possible uncle block set depending on the author. - if w.isLocalBlock != nil && w.isLocalBlock(ev.Block) { + if w.isLocalBlock != nil && w.isLocalBlock(ev.Block.Header()) { w.localUncles[ev.Block.Hash()] = ev.Block } else { w.remoteUncles[ev.Block.Hash()] = ev.Block @@ -593,6 +595,9 @@ func (w *worker) taskLoop() { if err := w.engine.Seal(w.chain, task.block, w.resultCh, stopCh); err != nil { log.Warn("Block sealing failed", "err", err) + w.pendingMu.Lock() + delete(w.pendingTasks, sealHash) + w.pendingMu.Unlock() } case <-w.exitCh: interrupt() @@ -641,23 +646,29 @@ func (w *worker) resultLoop() { receipts = make([]*types.Receipt, len(task.receipts)) logs []*types.Log ) - for i, receipt := range task.receipts { + for i, taskReceipt := range task.receipts { + receipt := new(types.Receipt) + receipts[i] = receipt + *receipt = *taskReceipt + // add block location fields receipt.BlockHash = hash receipt.BlockNumber = block.Number() receipt.TransactionIndex = uint(i) - receipts[i] = new(types.Receipt) - *receipts[i] = *receipt // Update the block hash in all logs since it is now available and not when the // receipt/log of individual transactions were created. - for _, log := range receipt.Logs { + receipt.Logs = make([]*types.Log, len(taskReceipt.Logs)) + for i, taskLog := range taskReceipt.Logs { + log := new(types.Log) + receipt.Logs[i] = log + *log = *taskLog log.BlockHash = hash } logs = append(logs, receipt.Logs...) } // Commit block and state to database. - _, err := w.chain.WriteBlockWithState(block, receipts, logs, task.state, true) + _, err := w.chain.WriteBlockAndSetHead(block, receipts, logs, task.state, true) if err != nil { log.Error("Failed writing block to chain", "err", err) continue @@ -1041,6 +1052,11 @@ func (w *worker) commit(uncles []*types.Header, interval func(), update bool, st if interval != nil { interval() } + // If we're post merge, just ignore + td, ttd := w.chain.GetTd(block.ParentHash(), block.NumberU64()-1), w.chain.Config().TerminalTotalDifficulty + if td != nil && ttd != nil && td.Cmp(ttd) >= 0 { + return nil + } select { case w.taskCh <- &task{receipts: receipts, state: s, block: block, createdAt: time.Now()}: w.unconfirmed.Shift(block.NumberU64() - 1) diff --git a/miner/worker_test.go b/miner/worker_test.go index 5b35c66dce..c8ddd2c320 100644 --- a/miner/worker_test.go +++ b/miner/worker_test.go @@ -197,7 +197,7 @@ func (b *testWorkerBackend) newRandomTx(creation bool) *types.Transaction { func newTestWorker(t *testing.T, chainConfig *params.ChainConfig, engine consensus.Engine, db ethdb.Database, blocks int) (*worker, *testWorkerBackend) { backend := newTestWorkerBackend(t, chainConfig, engine, db, blocks) backend.txPool.AddLocals(pendingTxs) - w := newWorker(testConfig, chainConfig, engine, backend, new(event.TypeMux), nil, false) + w := newWorker(testConfig, chainConfig, engine, backend, new(event.TypeMux), nil, false, consensus.NewMerger(rawdb.NewMemoryDatabase())) w.setEtherbase(testBankAddress) return w, backend } diff --git a/mobile/ethereum.go b/mobile/ethereum.go index 97c46ddca7..d5058e4e20 100644 --- a/mobile/ethereum.go +++ b/mobile/ethereum.go @@ -78,11 +78,21 @@ type SyncProgress struct { progress ethereum.SyncProgress } -func (p *SyncProgress) GetStartingBlock() int64 { return int64(p.progress.StartingBlock) } -func (p *SyncProgress) GetCurrentBlock() int64 { return int64(p.progress.CurrentBlock) } -func (p *SyncProgress) GetHighestBlock() int64 { return int64(p.progress.HighestBlock) } -func (p *SyncProgress) GetPulledStates() int64 { return int64(p.progress.PulledStates) } -func (p *SyncProgress) GetKnownStates() int64 { return int64(p.progress.KnownStates) } +func (p *SyncProgress) GetStartingBlock() int64 { return int64(p.progress.StartingBlock) } +func (p *SyncProgress) GetCurrentBlock() int64 { return int64(p.progress.CurrentBlock) } +func (p *SyncProgress) GetHighestBlock() int64 { return int64(p.progress.HighestBlock) } +func (p *SyncProgress) GetSyncedAccounts() int64 { return int64(p.progress.SyncedAccounts) } +func (p *SyncProgress) GetSyncedAccountBytes() int64 { return int64(p.progress.SyncedAccountBytes) } +func (p *SyncProgress) GetSyncedBytecodes() int64 { return int64(p.progress.SyncedBytecodes) } +func (p *SyncProgress) GetSyncedBytecodeBytes() int64 { return int64(p.progress.SyncedBytecodeBytes) } +func (p *SyncProgress) GetSyncedStorage() int64 { return int64(p.progress.SyncedStorage) } +func (p *SyncProgress) GetSyncedStorageBytes() int64 { return int64(p.progress.SyncedStorageBytes) } +func (p *SyncProgress) GetHealedTrienodes() int64 { return int64(p.progress.HealedTrienodes) } +func (p *SyncProgress) GetHealedTrienodeBytes() int64 { return int64(p.progress.HealedTrienodeBytes) } +func (p *SyncProgress) GetHealedBytecodes() int64 { return int64(p.progress.HealedBytecodes) } +func (p *SyncProgress) GetHealedBytecodeBytes() int64 { return int64(p.progress.HealedBytecodeBytes) } +func (p *SyncProgress) GetHealingTrienodes() int64 { return int64(p.progress.HealingTrienodes) } +func (p *SyncProgress) GetHealingBytecode() int64 { return int64(p.progress.HealingBytecode) } // Topics is a set of topic lists to filter events with. type Topics struct{ topics [][]common.Hash } diff --git a/mobile/geth.go b/mobile/geth.go index 6a9d75c35b..0118f6fc21 100644 --- a/mobile/geth.go +++ b/mobile/geth.go @@ -165,6 +165,13 @@ func NewNode(datadir string, config *NodeConfig) (stack *Node, _ error) { config.EthereumNetworkID = 3 } } + // If we have the Sepolia testnet, hard code the chain configs too + if config.EthereumGenesis == SepoliaGenesis() { + genesis.Config = params.SepoliaChainConfig + if config.EthereumNetworkID == 1 { + config.EthereumNetworkID = 11155111 + } + } // If we have the Rinkeby testnet, hard code the chain configs too if config.EthereumGenesis == RinkebyGenesis() { genesis.Config = params.RinkebyChainConfig diff --git a/mobile/params.go b/mobile/params.go index 71ab014a27..9d68567dbd 100644 --- a/mobile/params.go +++ b/mobile/params.go @@ -41,6 +41,15 @@ func RopstenGenesis() string { return string(enc) } +// SepoliaGenesis returns the JSON spec to use for the Sepolia test network. +func SepoliaGenesis() string { + enc, err := json.Marshal(core.DefaultSepoliaGenesisBlock()) + if err != nil { + panic(err) + } + return string(enc) +} + // RinkebyGenesis returns the JSON spec to use for the Rinkeby test network func RinkebyGenesis() string { enc, err := json.Marshal(core.DefaultRinkebyGenesisBlock()) diff --git a/oss-fuzz.sh b/oss-fuzz.sh index 9a24f6b175..745a5ba7c7 100644 --- a/oss-fuzz.sh +++ b/oss-fuzz.sh @@ -120,5 +120,10 @@ compile_fuzzer tests/fuzzers/bls12381 FuzzCrossG1MultiExp fuzz_cross_g1_multiex compile_fuzzer tests/fuzzers/bls12381 FuzzCrossG2Add fuzz_cross_g2_add compile_fuzzer tests/fuzzers/bls12381 FuzzCrossPairing fuzz_cross_pairing +compile_fuzzer tests/fuzzers/snap FuzzARange fuzz_account_range +compile_fuzzer tests/fuzzers/snap FuzzSRange fuzz_storage_range +compile_fuzzer tests/fuzzers/snap FuzzByteCodes fuzz_byte_codes +compile_fuzzer tests/fuzzers/snap FuzzTrieNodes fuzz_trie_nodes + #TODO: move this to tests/fuzzers, if possible compile_fuzzer crypto/blake2b Fuzz fuzzBlake2b diff --git a/p2p/discover/v4wire/v4wire.go b/p2p/discover/v4wire/v4wire.go index 23e7134414..bc537a4cf7 100644 --- a/p2p/discover/v4wire/v4wire.go +++ b/p2p/discover/v4wire/v4wire.go @@ -102,7 +102,7 @@ type ( } ) -// This number is the maximum number of neighbor nodes in a Neigbors packet. +// This number is the maximum number of neighbor nodes in a Neighbors packet. const MaxNeighbors = 12 // This code computes the MaxNeighbors constant value. diff --git a/p2p/discover/v5wire/encoding_test.go b/p2p/discover/v5wire/encoding_test.go index b13041d1b9..355a8f6913 100644 --- a/p2p/discover/v5wire/encoding_test.go +++ b/p2p/discover/v5wire/encoding_test.go @@ -20,13 +20,13 @@ import ( "bytes" "crypto/ecdsa" "encoding/hex" + "errors" "flag" "fmt" "io/ioutil" "net" "os" "path/filepath" - "reflect" "strings" "testing" @@ -555,7 +555,7 @@ func (n *handshakeTestNode) expectDecode(t *testing.T, ptype byte, p []byte) Pac func (n *handshakeTestNode) expectDecodeErr(t *testing.T, wantErr error, p []byte) { t.Helper() - if _, err := n.decode(p); !reflect.DeepEqual(err, wantErr) { + if _, err := n.decode(p); !errors.Is(err, wantErr) { t.Fatal(fmt.Errorf("(%s) got err %q, want %q", n.ln.ID().TerminalString(), err, wantErr)) } } diff --git a/p2p/discover/v5wire/msg.go b/p2p/discover/v5wire/msg.go index 7c3686111b..c049668477 100644 --- a/p2p/discover/v5wire/msg.go +++ b/p2p/discover/v5wire/msg.go @@ -84,7 +84,7 @@ type ( ReqID []byte ENRSeq uint64 ToIP net.IP // These fields should mirror the UDP envelope address of the ping - ToPort uint16 // packet, which provides a way to discover the the external address (after NAT). + ToPort uint16 // packet, which provides a way to discover the external address (after NAT). } // FINDNODE is a query for nodes in the given bucket. diff --git a/p2p/enode/localnode.go b/p2p/enode/localnode.go index 4827b6c0ae..a18204e752 100644 --- a/p2p/enode/localnode.go +++ b/p2p/enode/localnode.go @@ -63,7 +63,7 @@ type LocalNode struct { type lnEndpoint struct { track *netutil.IPTracker staticIP, fallbackIP net.IP - fallbackUDP int + fallbackUDP uint16 // port } // NewLocalNode creates a local node. @@ -208,8 +208,8 @@ func (ln *LocalNode) SetFallbackUDP(port int) { ln.mu.Lock() defer ln.mu.Unlock() - ln.endpoint4.fallbackUDP = port - ln.endpoint6.fallbackUDP = port + ln.endpoint4.fallbackUDP = uint16(port) + ln.endpoint6.fallbackUDP = uint16(port) ln.updateEndpoints() } @@ -261,7 +261,7 @@ func (ln *LocalNode) updateEndpoints() { } // get returns the endpoint with highest precedence. -func (e *lnEndpoint) get() (newIP net.IP, newPort int) { +func (e *lnEndpoint) get() (newIP net.IP, newPort uint16) { newPort = e.fallbackUDP if e.fallbackIP != nil { newIP = e.fallbackIP @@ -277,15 +277,18 @@ func (e *lnEndpoint) get() (newIP net.IP, newPort int) { // predictAddr wraps IPTracker.PredictEndpoint, converting from its string-based // endpoint representation to IP and port types. -func predictAddr(t *netutil.IPTracker) (net.IP, int) { +func predictAddr(t *netutil.IPTracker) (net.IP, uint16) { ep := t.PredictEndpoint() if ep == "" { return nil, 0 } ipString, portString, _ := net.SplitHostPort(ep) ip := net.ParseIP(ipString) - port, _ := strconv.Atoi(portString) - return ip, port + port, err := strconv.ParseUint(portString, 10, 16) + if err != nil { + return nil, 0 + } + return ip, uint16(port) } func (ln *LocalNode) invalidate() { diff --git a/p2p/enr/enr.go b/p2p/enr/enr.go index 05e43fd805..15891813b4 100644 --- a/p2p/enr/enr.go +++ b/p2p/enr/enr.go @@ -304,7 +304,7 @@ func (r *Record) AppendElements(list []interface{}) []interface{} { } func (r *Record) encode(sig []byte) (raw []byte, err error) { - list := make([]interface{}, 1, 2*len(r.pairs)+1) + list := make([]interface{}, 1, 2*len(r.pairs)+2) list[0] = sig list = r.AppendElements(list) if raw, err = rlp.EncodeToBytes(list); err != nil { diff --git a/p2p/nodestate/nodestate.go b/p2p/nodestate/nodestate.go index 9323d53cbd..2af0d0a6bd 100644 --- a/p2p/nodestate/nodestate.go +++ b/p2p/nodestate/nodestate.go @@ -808,7 +808,14 @@ func (ns *NodeStateMachine) addTimeout(n *enode.Node, mask bitMask, timeout time ns.removeTimeouts(node, mask) t := &nodeStateTimeout{mask: mask} t.timer = ns.clock.AfterFunc(timeout, func() { - ns.SetState(n, Flags{}, Flags{mask: t.mask, setup: ns.setup}, 0) + ns.lock.Lock() + defer ns.lock.Unlock() + + if !ns.opStart() { + return + } + ns.setState(n, Flags{}, Flags{mask: t.mask, setup: ns.setup}, 0) + ns.opFinish() }) node.timeouts = append(node.timeouts, t) if mask&ns.saveFlags != 0 { diff --git a/p2p/peer.go b/p2p/peer.go index b6d0dbd1ae..8f564e776d 100644 --- a/p2p/peer.go +++ b/p2p/peer.go @@ -121,10 +121,18 @@ type Peer struct { // NewPeer returns a peer for testing purposes. func NewPeer(id enode.ID, name string, caps []Cap) *Peer { + // Generate a fake set of local protocols to match as running caps. Almost + // no fields needs to be meaningful here as we're only using it to cross- + // check with the "remote" caps array. + protos := make([]Protocol, len(caps)) + for i, cap := range caps { + protos[i].Name = cap.Name + protos[i].Version = cap.Version + } pipe, _ := net.Pipe() node := enode.SignNull(new(enr.Record), id) conn := &conn{fd: pipe, transport: nil, node: node, caps: caps, name: name} - peer := newPeer(log.Root(), conn, nil) + peer := newPeer(log.Root(), conn, protos) close(peer.closed) // ensures Disconnect doesn't block return peer } diff --git a/p2p/server_test.go b/p2p/server_test.go index a5b3190aed..f6f5700c5e 100644 --- a/p2p/server_test.go +++ b/p2p/server_test.go @@ -370,6 +370,8 @@ func TestServerSetupConn(t *testing.T) { clientkey, srvkey = newkey(), newkey() clientpub = &clientkey.PublicKey srvpub = &srvkey.PublicKey + fooErr = errors.New("foo") + readErr = errors.New("read error") ) tests := []struct { dontstart bool @@ -387,10 +389,10 @@ func TestServerSetupConn(t *testing.T) { wantCloseErr: errServerStopped, }, { - tt: &setupTransport{pubkey: clientpub, encHandshakeErr: errors.New("read error")}, + tt: &setupTransport{pubkey: clientpub, encHandshakeErr: readErr}, flags: inboundConn, wantCalls: "doEncHandshake,close,", - wantCloseErr: errors.New("read error"), + wantCloseErr: readErr, }, { tt: &setupTransport{pubkey: clientpub, phs: protoHandshake{ID: randomID().Bytes()}}, @@ -400,11 +402,11 @@ func TestServerSetupConn(t *testing.T) { wantCloseErr: DiscUnexpectedIdentity, }, { - tt: &setupTransport{pubkey: clientpub, protoHandshakeErr: errors.New("foo")}, + tt: &setupTransport{pubkey: clientpub, protoHandshakeErr: fooErr}, dialDest: enode.NewV4(clientpub, nil, 0, 0), flags: dynDialedConn, wantCalls: "doEncHandshake,doProtoHandshake,close,", - wantCloseErr: errors.New("foo"), + wantCloseErr: fooErr, }, { tt: &setupTransport{pubkey: srvpub, phs: protoHandshake{ID: crypto.FromECDSAPub(srvpub)[1:]}}, @@ -443,7 +445,7 @@ func TestServerSetupConn(t *testing.T) { } p1, _ := net.Pipe() srv.SetupConn(p1, test.flags, test.dialDest) - if !reflect.DeepEqual(test.tt.closeErr, test.wantCloseErr) { + if !errors.Is(test.tt.closeErr, test.wantCloseErr) { t.Errorf("test %d: close error mismatch: got %q, want %q", i, test.tt.closeErr, test.wantCloseErr) } if test.tt.calls != test.wantCalls { diff --git a/p2p/simulations/README.md b/p2p/simulations/README.md index 871d71b2c7..023f73a098 100644 --- a/p2p/simulations/README.md +++ b/p2p/simulations/README.md @@ -1,7 +1,7 @@ # devp2p Simulations -The `p2p/simulations` package implements a simulation framework which supports -creating a collection of devp2p nodes, connecting them together to form a +The `p2p/simulations` package implements a simulation framework that supports +creating a collection of devp2p nodes, connecting them to form a simulation network, performing simulation actions in that network and then extracting useful information. @@ -65,10 +65,10 @@ localhost ports. ## Network -A simulation network is created with an ID and default service (which is used -if a node is created without an explicit service), exposes methods for -creating, starting, stopping, connecting and disconnecting nodes, and emits -events when certain actions occur. +A simulation network is created with an ID and default service. The default +service is used if a node is created without an explicit service. The +network has exposed methods for creating, starting, stopping, connecting +and disconnecting nodes. It also emits events when certain actions occur. ### Events @@ -80,7 +80,7 @@ A simulation network emits the following events: The events have a "control" flag which when set indicates that the event is the outcome of a controlled simulation action (e.g. creating a node or explicitly -connecting two nodes together). +connecting two nodes). This is in contrast to a non-control event, otherwise called a "live" event, which is the outcome of something happening in the network as a result of a @@ -98,12 +98,12 @@ network and then wait for expectations to be met. With a running simulation network, the `Simulation.Run` method can be called with a `Step` which has the following fields: -* `Action` - a function which performs some action in the network +* `Action` - a function that performs some action in the network * `Expect` - an expectation function which returns whether or not a given node meets the expectation -* `Trigger` - a channel which receives node IDs which then trigger a check +* `Trigger` - a channel that receives node IDs which then trigger a check of the expectation function to be performed against that node As a concrete example, consider a simulated network of Ethereum nodes. An @@ -116,7 +116,7 @@ the expectation and what network events were emitted during the step run. ## HTTP API -The simulation framework includes a HTTP API which can be used to control the +The simulation framework includes a HTTP API that can be used to control the simulation. The API is initialised with a particular node adapter and has the following diff --git a/p2p/simulations/adapters/types.go b/p2p/simulations/adapters/types.go index 1da464a10d..aeb8ef7772 100644 --- a/p2p/simulations/adapters/types.go +++ b/p2p/simulations/adapters/types.go @@ -242,7 +242,7 @@ func assignTCPPort() (uint16, error) { if err != nil { return 0, err } - p, err := strconv.ParseInt(port, 10, 32) + p, err := strconv.ParseUint(port, 10, 16) if err != nil { return 0, err } diff --git a/p2p/simulations/network.go b/p2p/simulations/network.go index 9b5e2c37f5..962910dd25 100644 --- a/p2p/simulations/network.go +++ b/p2p/simulations/network.go @@ -22,7 +22,6 @@ import ( "encoding/json" "errors" "fmt" - "io" "math/rand" "sync" "time" @@ -695,12 +694,6 @@ func (net *Network) Shutdown() { if err := node.Stop(); err != nil { log.Warn("Can't stop node", "id", node.ID(), "err", err) } - // If the node has the close method, call it. - if closer, ok := node.Node.(io.Closer); ok { - if err := closer.Close(); err != nil { - log.Warn("Can't close node", "id", node.ID(), "err", err) - } - } } close(net.quitc) } diff --git a/params/bootnodes.go b/params/bootnodes.go index 67adcf0464..5460246626 100644 --- a/params/bootnodes.go +++ b/params/bootnodes.go @@ -41,6 +41,15 @@ var RopstenBootnodes = []string{ "enode://94c15d1b9e2fe7ce56e458b9a3b672ef11894ddedd0c6f247e0f1d3487f52b66208fb4aeb8179fce6e3a749ea93ed147c37976d67af557508d199d9594c35f09@192.81.208.223:30303", // @gpip } +// SepoliaBootnodes are the enode URLs of the P2P bootstrap nodes running on the +// Sepolia test network. +var SepoliaBootnodes = []string{ + // geth + "enode://9246d00bc8fd1742e5ad2428b80fc4dc45d786283e05ef6edbd9002cbc335d40998444732fbe921cb88e1d2c73d1b1de53bae6a2237996e9bfe14f871baf7066@18.168.182.86:30303", + // besu + "enode://ec66ddcf1a974950bd4c782789a7e04f8aa7110a72569b6e65fcd51e937e74eed303b1ea734e4d19cfaec9fbff9b6ee65bf31dcb50ba79acce9dd63a6aca61c7@52.14.151.177:30303", +} + // RinkebyBootnodes are the enode URLs of the P2P bootstrap nodes running on the // Rinkeby test network. var RinkebyBootnodes = []string{ diff --git a/params/config.go b/params/config.go index c01076d28d..a7bc6fde31 100644 --- a/params/config.go +++ b/params/config.go @@ -35,13 +35,14 @@ var ( GoerliGenesisHash = common.HexToHash("0xbf7e331f7f7c1dd2e05159666b3bf8bc7a8a3a9eb1d518969eab529dd9b88c1a") MumbaiGenesisHash = common.HexToHash("0x7b66506a9ebdbf30d32b43c5f15a3b1216269a1ec3a75aa3182b86176a2b1ca7") BorMainnetGenesisHash = common.HexToHash("0xa9c28ce2141b56c474f1dc504bee9b01eb1bd7d1a507580d5519d4437a97de1b") + SepoliaGenesisHash = common.HexToHash("0x25a5cc106eea7138acab33231d7160d69cb777ee0c2c553fcddf5138993e6dd9") ) // TrustedCheckpoints associates each known checkpoint with the genesis hash of -// the chain it belongs to. var TrustedCheckpoints = map[common.Hash]*TrustedCheckpoint{ MainnetGenesisHash: MainnetTrustedCheckpoint, RopstenGenesisHash: RopstenTrustedCheckpoint, + SepoliaGenesisHash: SepoliaTrustedCheckpoint, RinkebyGenesisHash: RinkebyTrustedCheckpoint, GoerliGenesisHash: GoerliTrustedCheckpoint, } @@ -73,15 +74,16 @@ var ( MuirGlacierBlock: big.NewInt(9_200_000), BerlinBlock: big.NewInt(12_244_000), LondonBlock: big.NewInt(12_965_000), + ArrowGlacierBlock: big.NewInt(13_773_000), Ethash: new(EthashConfig), } // MainnetTrustedCheckpoint contains the light client trusted checkpoint for the main network. MainnetTrustedCheckpoint = &TrustedCheckpoint{ - SectionIndex: 395, - SectionHead: common.HexToHash("0xbfca95b8c1de014e252288e9c32029825fadbff58285f5b54556525e480dbb5b"), - CHTRoot: common.HexToHash("0x2ccf3dbb58eb6375e037fdd981ca5778359e4b8fa0270c2878b14361e64161e7"), - BloomRoot: common.HexToHash("0x2d46ec65a6941a2dc1e682f8f81f3d24192021f492fdf6ef0fdd51acb0f4ba0f"), + SectionIndex: 413, + SectionHead: common.HexToHash("0x8aa8e64ceadcdc5f23bc41d2acb7295a261a5cf680bb00a34f0e01af08200083"), + CHTRoot: common.HexToHash("0x008af584d385a2610706c5a439d39f15ddd4b691c5d42603f65ae576f703f477"), + BloomRoot: common.HexToHash("0x5a081af71a588f4d90bced242545b08904ad4fb92f7effff2ceb6e50e6dec157"), } // MainnetCheckpointOracle contains a set of configs for the main network oracle. @@ -119,10 +121,10 @@ var ( // RopstenTrustedCheckpoint contains the light client trusted checkpoint for the Ropsten test network. RopstenTrustedCheckpoint = &TrustedCheckpoint{ - SectionIndex: 329, - SectionHead: common.HexToHash("0xe66f7038333a01fb95dc9ea03e5a2bdaf4b833cdcb9e393b9127e013bd64d39b"), - CHTRoot: common.HexToHash("0x1b0c883338ac0d032122800c155a2e73105fbfebfaa50436893282bc2d9feec5"), - BloomRoot: common.HexToHash("0x3cc98c88d283bf002378246f22c653007655cbcea6ed89f98d739f73bd341a01"), + SectionIndex: 346, + SectionHead: common.HexToHash("0xafa0384ebd13a751fb7475aaa7fc08ac308925c8b2e2195bca2d4ab1878a7a84"), + CHTRoot: common.HexToHash("0x522ae1f334bfa36033b2315d0b9954052780700b69448ecea8d5877e0f7ee477"), + BloomRoot: common.HexToHash("0x4093fd53b0d2cc50181dca353fe66f03ae113e7cb65f869a4dfb5905de6a0493"), } // RopstenCheckpointOracle contains a set of configs for the Ropsten test network oracle. @@ -138,6 +140,33 @@ var ( Threshold: 2, } + // SepoliaChainConfig contains the chain parameters to run a node on the Sepolia test network. + SepoliaChainConfig = &ChainConfig{ + ChainID: big.NewInt(11155111), + HomesteadBlock: big.NewInt(0), + DAOForkBlock: nil, + DAOForkSupport: true, + EIP150Block: big.NewInt(0), + EIP155Block: big.NewInt(0), + EIP158Block: big.NewInt(0), + ByzantiumBlock: big.NewInt(0), + ConstantinopleBlock: big.NewInt(0), + PetersburgBlock: big.NewInt(0), + IstanbulBlock: big.NewInt(0), + MuirGlacierBlock: big.NewInt(0), + BerlinBlock: big.NewInt(0), + LondonBlock: big.NewInt(0), + Ethash: new(EthashConfig), + } + + // SepoliaTrustedCheckpoint contains the light client trusted checkpoint for the Sepolia test network. + SepoliaTrustedCheckpoint = &TrustedCheckpoint{ + SectionIndex: 1, + SectionHead: common.HexToHash("0x5dde65e28745b10ff9e9b86499c3a3edc03587b27a06564a4342baf3a37de869"), + CHTRoot: common.HexToHash("0x042a0d914f7baa4f28f14d12291e5f346e88c5b9d95127bf5422a8afeacd27e8"), + BloomRoot: common.HexToHash("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"), + } + // RinkebyChainConfig contains the chain parameters to run a node on the Rinkeby test network. RinkebyChainConfig = &ChainConfig{ ChainID: big.NewInt(4), @@ -155,6 +184,7 @@ var ( MuirGlacierBlock: nil, BerlinBlock: big.NewInt(8_290_928), LondonBlock: big.NewInt(8_897_988), + ArrowGlacierBlock: nil, Clique: &CliqueConfig{ Period: 15, Epoch: 30000, @@ -163,10 +193,10 @@ var ( // RinkebyTrustedCheckpoint contains the light client trusted checkpoint for the Rinkeby test network. RinkebyTrustedCheckpoint = &TrustedCheckpoint{ - SectionIndex: 276, - SectionHead: common.HexToHash("0xea89a4b04e3da9bd688e316f8de669396b6d4a38a19d2cd96a00b70d58b836aa"), - CHTRoot: common.HexToHash("0xd6889d0bf6673c0d2c1cf6e9098a6fe5b30888a115b6112796aa8ee8efc4a723"), - BloomRoot: common.HexToHash("0x6009a9256b34b8bde3a3f094afb647ba5d73237546017b9025d64ac1ff54c47c"), + SectionIndex: 292, + SectionHead: common.HexToHash("0x4185c2f1bb85ecaa04409d1008ff0761092ea2e94e8a71d64b1a5abc37b81414"), + CHTRoot: common.HexToHash("0x03b0191e6140effe0b88bb7c97bfb794a275d3543cb3190662fb72d9beea423c"), + BloomRoot: common.HexToHash("0x3d5f6edccc87536dcbc0dd3aae97a318205c617dd3957b4261470c71481629e2"), } // RinkebyCheckpointOracle contains a set of configs for the Rinkeby test network oracle. @@ -197,6 +227,7 @@ var ( MuirGlacierBlock: nil, BerlinBlock: big.NewInt(4_460_644), LondonBlock: big.NewInt(5_062_605), + ArrowGlacierBlock: nil, Clique: &CliqueConfig{ Period: 15, Epoch: 30000, @@ -205,10 +236,10 @@ var ( // GoerliTrustedCheckpoint contains the light client trusted checkpoint for the Görli test network. GoerliTrustedCheckpoint = &TrustedCheckpoint{ - SectionIndex: 160, - SectionHead: common.HexToHash("0xb5a666c790dc35a5613d04ebba8ba47a850b45a15d9b95ad7745c35ae034b5a5"), - CHTRoot: common.HexToHash("0x6b4e00df52bdc38fa6c26c8ef595c2ad6184963ea36ab08ee744af460aa735e1"), - BloomRoot: common.HexToHash("0x8fa88f5e50190cb25243aeee262a1a9e4434a06f8d455885dcc1b5fc48c33836"), + SectionIndex: 176, + SectionHead: common.HexToHash("0x2de018858528434f93adb40b1f03f2304a86d31b4ef2b1f930da0134f5c32427"), + CHTRoot: common.HexToHash("0x8c17e497d38088321c147abe4acbdfb3c0cab7d7a2b97e07404540f04d12747e"), + BloomRoot: common.HexToHash("0x02a41b6606bd3f741bd6ae88792d75b1ad8cf0ea5e28fbaa03bc8b95cbd20034"), } // GoerliCheckpointOracle contains a set of configs for the Goerli test network oracle. @@ -360,16 +391,16 @@ var ( // // This configuration is intentionally not using keyed fields to force anyone // adding flags to the config to also have to set these fields. - AllEthashProtocolChanges = &ChainConfig{big.NewInt(1337), big.NewInt(0), nil, false, big.NewInt(0), common.Hash{}, big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), nil, nil, new(EthashConfig), nil, nil} + AllEthashProtocolChanges = &ChainConfig{big.NewInt(1337), big.NewInt(0), nil, false, big.NewInt(0), common.Hash{}, big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), nil, nil, new(EthashConfig), nil, nil} // AllCliqueProtocolChanges contains every protocol change (EIPs) introduced // and accepted by the Ethereum core developers into the Clique consensus. // // This configuration is intentionally not using keyed fields to force anyone // adding flags to the config to also have to set these fields. - AllCliqueProtocolChanges = &ChainConfig{big.NewInt(1337), big.NewInt(0), nil, false, big.NewInt(0), common.Hash{}, big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), nil, nil, nil, &CliqueConfig{Period: 0, Epoch: 30000}, nil} + AllCliqueProtocolChanges = &ChainConfig{big.NewInt(1337), big.NewInt(0), nil, false, big.NewInt(0), common.Hash{}, big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), nil, nil, nil, nil, &CliqueConfig{Period: 0, Epoch: 30000}, nil} - TestChainConfig = &ChainConfig{big.NewInt(1), big.NewInt(0), nil, false, big.NewInt(0), common.Hash{}, big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), nil, nil, new(EthashConfig), nil, nil} + TestChainConfig = &ChainConfig{big.NewInt(1), big.NewInt(0), nil, false, big.NewInt(0), common.Hash{}, big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), nil, nil, new(EthashConfig), nil, nil} TestRules = TestChainConfig.Rules(new(big.Int)) ) @@ -448,6 +479,8 @@ type ChainConfig struct { MuirGlacierBlock *big.Int `json:"muirGlacierBlock,omitempty"` // Eip-2384 (bomb delay) switch block (nil = no fork, 0 = already activated) BerlinBlock *big.Int `json:"berlinBlock,omitempty"` // Berlin switch block (nil = no fork, 0 = already on berlin) LondonBlock *big.Int `json:"londonBlock,omitempty"` // London switch block (nil = no fork, 0 = already on london) + ArrowGlacierBlock *big.Int `json:"arrowGlacierBlock,omitempty"` // Eip-4345 (bomb delay) switch block (nil = no fork, 0 = already activated) + MergeForkBlock *big.Int `json:"mergeForkBlock,omitempty"` // EIP-3675 (TheMerge) switch block (nil = no fork, 0 = already in merge proceedings) // TerminalTotalDifficulty is the amount of total difficulty reached by // the network that triggers the consensus upgrade. @@ -554,7 +587,7 @@ func (c *ChainConfig) String() string { default: engine = "unknown" } - return fmt.Sprintf("{ChainID: %v Homestead: %v DAO: %v DAOSupport: %v EIP150: %v EIP155: %v EIP158: %v Byzantium: %v Constantinople: %v Petersburg: %v Istanbul: %v, Muir Glacier: %v, Berlin: %v, London: %v, Engine: %v}", + return fmt.Sprintf("{ChainID: %v Homestead: %v DAO: %v DAOSupport: %v EIP150: %v EIP155: %v EIP158: %v Byzantium: %v Constantinople: %v Petersburg: %v Istanbul: %v, Muir Glacier: %v, Berlin: %v, London: %v, Arrow Glacier: %v, MergeFork: %v, Engine: %v}", c.ChainID, c.HomesteadBlock, c.DAOForkBlock, @@ -569,6 +602,8 @@ func (c *ChainConfig) String() string { c.MuirGlacierBlock, c.BerlinBlock, c.LondonBlock, + c.ArrowGlacierBlock, + c.MergeForkBlock, engine, ) } @@ -635,6 +670,11 @@ func (c *ChainConfig) IsLondon(num *big.Int) bool { return isForked(c.LondonBlock, num) } +// IsArrowGlacier returns whether num is either equal to the Arrow Glacier (EIP-4345) fork block or greater. +func (c *ChainConfig) IsArrowGlacier(num *big.Int) bool { + return isForked(c.ArrowGlacierBlock, num) +} + // IsTerminalPoWBlock returns whether the given block is the last block of PoW stage. func (c *ChainConfig) IsTerminalPoWBlock(parentTotalDiff *big.Int, totalDiff *big.Int) bool { if c.TerminalTotalDifficulty == nil { @@ -683,6 +723,8 @@ func (c *ChainConfig) CheckConfigForkOrder() error { {name: "muirGlacierBlock", block: c.MuirGlacierBlock, optional: true}, {name: "berlinBlock", block: c.BerlinBlock}, {name: "londonBlock", block: c.LondonBlock}, + {name: "arrowGlacierBlock", block: c.ArrowGlacierBlock, optional: true}, + {name: "mergeStartBlock", block: c.MergeForkBlock, optional: true}, } { if lastFork.name != "" { // Next one must be higher number @@ -752,6 +794,12 @@ func (c *ChainConfig) checkCompatible(newcfg *ChainConfig, head *big.Int) *Confi if isForkIncompatible(c.LondonBlock, newcfg.LondonBlock, head) { return newCompatError("London fork block", c.LondonBlock, newcfg.LondonBlock) } + if isForkIncompatible(c.ArrowGlacierBlock, newcfg.ArrowGlacierBlock, head) { + return newCompatError("Arrow Glacier fork block", c.ArrowGlacierBlock, newcfg.ArrowGlacierBlock) + } + if isForkIncompatible(c.MergeForkBlock, newcfg.MergeForkBlock, head) { + return newCompatError("Merge Start fork block", c.MergeForkBlock, newcfg.MergeForkBlock) + } return nil } diff --git a/params/protocol_params.go b/params/protocol_params.go index 7abb2441bf..5f154597a7 100644 --- a/params/protocol_params.go +++ b/params/protocol_params.go @@ -19,9 +19,10 @@ package params import "math/big" const ( - GasLimitBoundDivisor uint64 = 1024 // The bound divisor of the gas limit, used in update calculations. - MinGasLimit uint64 = 5000 // Minimum the gas limit may ever be. - GenesisGasLimit uint64 = 4712388 // Gas limit of the Genesis block. + GasLimitBoundDivisor uint64 = 1024 // The bound divisor of the gas limit, used in update calculations. + MinGasLimit uint64 = 5000 // Minimum the gas limit may ever be. + MaxGasLimit uint64 = 0x7fffffffffffffff // Maximum the gas limit (2^63-1). + GenesisGasLimit uint64 = 4712388 // Gas limit of the Genesis block. MaximumExtraDataSize uint64 = 32 // Maximum size extra data may be after Genesis. ExpByteGas uint64 = 10 // Times ceil(log256(exponent)) for the EXP instruction. @@ -35,8 +36,8 @@ const ( LogDataGas uint64 = 8 // Per byte in a LOG* operation's data. CallStipend uint64 = 2300 // Free gas given at beginning of call. - Sha3Gas uint64 = 30 // Once per SHA3 operation. - Sha3WordGas uint64 = 6 // Once per word of the SHA3 operation's data. + Keccak256Gas uint64 = 30 // Once per KECCAK256 operation. + Keccak256WordGas uint64 = 6 // Once per word of the KECCAK256 operation's data. SstoreSetGas uint64 = 20000 // Once per SSTORE operation. SstoreResetGas uint64 = 5000 // Once per SSTORE operation if the zeroness changes from zero. diff --git a/params/version.go b/params/version.go index c9f0f7c956..8b8531046f 100644 --- a/params/version.go +++ b/params/version.go @@ -21,10 +21,10 @@ import ( ) const ( - VersionMajor = 0 // Major version component of the current release - VersionMinor = 2 // Minor version component of the current release - VersionPatch = 13 // Patch version component of the current release - VersionMeta = "stable" // Version metadata to append to the version string + VersionMajor = 0 // Major version component of the current release + VersionMinor = 2 // Minor version component of the current release + VersionPatch = 14 // Patch version component of the current release + VersionMeta = "beta-1" // Version metadata to append to the version string ) // Version holds the textual version string. diff --git a/rlp/raw_test.go b/rlp/raw_test.go index 185e269d07..46adff22c5 100644 --- a/rlp/raw_test.go +++ b/rlp/raw_test.go @@ -18,8 +18,8 @@ package rlp import ( "bytes" + "errors" "io" - "reflect" "testing" "testing/quick" ) @@ -54,7 +54,7 @@ func TestCountValues(t *testing.T) { if count != test.count { t.Errorf("test %d: count mismatch, got %d want %d\ninput: %s", i, count, test.count, test.input) } - if !reflect.DeepEqual(err, test.err) { + if !errors.Is(err, test.err) { t.Errorf("test %d: err mismatch, got %q want %q\ninput: %s", i, err, test.err, test.input) } } diff --git a/rpc/client.go b/rpc/client.go index e9deb3f6db..e43760c22c 100644 --- a/rpc/client.go +++ b/rpc/client.go @@ -17,7 +17,6 @@ package rpc import ( - "bytes" "context" "encoding/json" "errors" @@ -360,7 +359,10 @@ func (c *Client) BatchCall(b []BatchElem) error { // // Note that batch calls may not be executed atomically on the server side. func (c *Client) BatchCallContext(ctx context.Context, b []BatchElem) error { - msgs := make([]*jsonrpcMessage, len(b)) + var ( + msgs = make([]*jsonrpcMessage, len(b)) + byID = make(map[string]int, len(b)) + ) op := &requestOp{ ids: make([]json.RawMessage, len(b)), resp: make(chan *jsonrpcMessage, len(b)), @@ -372,6 +374,7 @@ func (c *Client) BatchCallContext(ctx context.Context, b []BatchElem) error { } msgs[i] = msg op.ids[i] = msg.ID + byID[string(msg.ID)] = i } var err error @@ -391,13 +394,7 @@ func (c *Client) BatchCallContext(ctx context.Context, b []BatchElem) error { // Find the element corresponding to this response. // The element is guaranteed to be present because dispatch // only sends valid IDs to our channel. - var elem *BatchElem - for i := range msgs { - if bytes.Equal(msgs[i].ID, resp.ID) { - elem = &b[i] - break - } - } + elem := &b[byID[string(resp.ID)]] if resp.Error != nil { elem.Error = resp.Error continue @@ -426,12 +423,12 @@ func (c *Client) Notify(ctx context.Context, method string, args ...interface{}) return c.send(ctx, op, msg) } -// EthSubscribe registers a subscripion under the "eth" namespace. +// EthSubscribe registers a subscription under the "eth" namespace. func (c *Client) EthSubscribe(ctx context.Context, channel interface{}, args ...interface{}) (*ClientSubscription, error) { return c.Subscribe(ctx, "eth", channel, args...) } -// ShhSubscribe registers a subscripion under the "shh" namespace. +// ShhSubscribe registers a subscription under the "shh" namespace. // Deprecated: use Subscribe(ctx, "shh", ...). func (c *Client) ShhSubscribe(ctx context.Context, channel interface{}, args ...interface{}) (*ClientSubscription, error) { return c.Subscribe(ctx, "shh", channel, args...) diff --git a/rpc/errors.go b/rpc/errors.go index 4c06a745fb..75425b925a 100644 --- a/rpc/errors.go +++ b/rpc/errors.go @@ -54,6 +54,7 @@ var ( _ Error = new(invalidRequestError) _ Error = new(invalidMessageError) _ Error = new(invalidParamsError) + _ Error = new(CustomError) ) const defaultErrorCode = -32000 @@ -101,3 +102,12 @@ type invalidParamsError struct{ message string } func (e *invalidParamsError) ErrorCode() int { return -32602 } func (e *invalidParamsError) Error() string { return e.message } + +type CustomError struct { + Code int + ValidationError string +} + +func (e *CustomError) ErrorCode() int { return e.Code } + +func (e *CustomError) Error() string { return e.ValidationError } diff --git a/rpc/handler.go b/rpc/handler.go index 85f774a1b7..488a29300a 100644 --- a/rpc/handler.go +++ b/rpc/handler.go @@ -240,7 +240,7 @@ func (h *handler) handleImmediate(msg *jsonrpcMessage) bool { return false case msg.isResponse(): h.handleResponse(msg) - h.log.Trace("Handled RPC response", "reqid", idForLog{msg.ID}, "t", time.Since(start)) + h.log.Trace("Handled RPC response", "reqid", idForLog{msg.ID}, "duration", time.Since(start)) return true default: return false @@ -292,12 +292,12 @@ func (h *handler) handleCallMsg(ctx *callProc, msg *jsonrpcMessage) *jsonrpcMess switch { case msg.isNotification(): h.handleCall(ctx, msg) - h.log.Debug("Served "+msg.Method, "t", time.Since(start)) + h.log.Debug("Served "+msg.Method, "duration", time.Since(start)) return nil case msg.isCall(): resp := h.handleCall(ctx, msg) var ctx []interface{} - ctx = append(ctx, "reqid", idForLog{msg.ID}, "t", time.Since(start)) + ctx = append(ctx, "reqid", idForLog{msg.ID}, "duration", time.Since(start)) if resp.Error != nil { ctx = append(ctx, "err", resp.Error.Message) if resp.Error.Data != nil { diff --git a/rpc/types.go b/rpc/types.go index d9c2317a78..ca52d474d9 100644 --- a/rpc/types.go +++ b/rpc/types.go @@ -186,6 +186,16 @@ func (bnh *BlockNumberOrHash) Number() (BlockNumber, bool) { return BlockNumber(0), false } +func (bnh *BlockNumberOrHash) String() string { + if bnh.BlockNumber != nil { + return strconv.Itoa(int(*bnh.BlockNumber)) + } + if bnh.BlockHash != nil { + return bnh.BlockHash.String() + } + return "nil" +} + func (bnh *BlockNumberOrHash) Hash() (common.Hash, bool) { if bnh.BlockHash != nil { return *bnh.BlockHash, true diff --git a/rpc/websocket_test.go b/rpc/websocket_test.go index 2486092836..cf83b621f1 100644 --- a/rpc/websocket_test.go +++ b/rpc/websocket_test.go @@ -18,13 +18,13 @@ package rpc import ( "context" + "errors" "io" "net" "net/http" "net/http/httptest" "net/http/httputil" "net/url" - "reflect" "strings" "sync/atomic" "testing" @@ -69,7 +69,7 @@ func TestWebsocketOriginCheck(t *testing.T) { t.Fatal("no error for wrong origin") } wantErr := wsHandshakeError{websocket.ErrBadHandshake, "403 Forbidden"} - if !reflect.DeepEqual(err, wantErr) { + if !errors.Is(err, wantErr) { t.Fatalf("wrong error for wrong origin: %q", err) } diff --git a/signer/core/api.go b/signer/core/api.go index fb68018a6b..48b54b8f43 100644 --- a/signer/core/api.go +++ b/signer/core/api.go @@ -57,7 +57,7 @@ type ExternalAPI interface { // SignData - request to sign the given data (plus prefix) SignData(ctx context.Context, contentType string, addr common.MixedcaseAddress, data interface{}) (hexutil.Bytes, error) // SignTypedData - request to sign the given structured data (plus prefix) - SignTypedData(ctx context.Context, addr common.MixedcaseAddress, data TypedData) (hexutil.Bytes, error) + SignTypedData(ctx context.Context, addr common.MixedcaseAddress, data apitypes.TypedData) (hexutil.Bytes, error) // EcRecover - recover public key from given message and signature EcRecover(ctx context.Context, data hexutil.Bytes, sig hexutil.Bytes) (common.Address, error) // Version info about the APIs @@ -235,7 +235,7 @@ type ( ContentType string `json:"content_type"` Address common.MixedcaseAddress `json:"address"` Rawdata []byte `json:"raw_data"` - Messages []*NameValueType `json:"messages"` + Messages []*apitypes.NameValueType `json:"messages"` Callinfo []apitypes.ValidationInfo `json:"call_info"` Hash hexutil.Bytes `json:"hash"` Meta Metadata `json:"meta"` diff --git a/signer/core/signed_data_internal_test.go b/signer/core/apitypes/signed_data_internal_test.go similarity index 99% rename from signer/core/signed_data_internal_test.go rename to signer/core/apitypes/signed_data_internal_test.go index 9768ee0b3f..121cc00dec 100644 --- a/signer/core/signed_data_internal_test.go +++ b/signer/core/apitypes/signed_data_internal_test.go @@ -14,7 +14,7 @@ // You should have received a copy of the GNU Lesser General Public License // along with the go-ethereum library. If not, see . -package core +package apitypes import ( "bytes" diff --git a/signer/core/apitypes/types.go b/signer/core/apitypes/types.go index 625959219f..15ab153416 100644 --- a/signer/core/apitypes/types.go +++ b/signer/core/apitypes/types.go @@ -17,16 +17,29 @@ package apitypes import ( + "bytes" "encoding/json" + "errors" "fmt" "math/big" + "reflect" + "regexp" + "sort" + "strconv" "strings" + "unicode" + "unicode/utf8" + "github.com/ethereum/go-ethereum/accounts" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/common/math" "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" ) +var typedDataReferenceTypeRegexp = regexp.MustCompile(`^[A-Z](\w*)(\[\])?$`) + type ValidationInfo struct { Typ string `json:"type"` Message string `json:"message"` @@ -154,3 +167,708 @@ func (args *SendTxArgs) ToTransaction() *types.Transaction { } return types.NewTx(data) } + +type SigFormat struct { + Mime string + ByteVersion byte +} + +var ( + IntendedValidator = SigFormat{ + accounts.MimetypeDataWithValidator, + 0x00, + } + DataTyped = SigFormat{ + accounts.MimetypeTypedData, + 0x01, + } + ApplicationClique = SigFormat{ + accounts.MimetypeClique, + 0x02, + } + TextPlain = SigFormat{ + accounts.MimetypeTextPlain, + 0x45, + } +) + +type ValidatorData struct { + Address common.Address + Message hexutil.Bytes +} + +// TypedData is a type to encapsulate EIP-712 typed messages +type TypedData struct { + Types Types `json:"types"` + PrimaryType string `json:"primaryType"` + Domain TypedDataDomain `json:"domain"` + Message TypedDataMessage `json:"message"` +} + +// Type is the inner type of an EIP-712 message +type Type struct { + Name string `json:"name"` + Type string `json:"type"` +} + +func (t *Type) isArray() bool { + return strings.HasSuffix(t.Type, "[]") +} + +// typeName returns the canonical name of the type. If the type is 'Person[]', then +// this method returns 'Person' +func (t *Type) typeName() string { + if strings.HasSuffix(t.Type, "[]") { + return strings.TrimSuffix(t.Type, "[]") + } + return t.Type +} + +func (t *Type) isReferenceType() bool { + if len(t.Type) == 0 { + return false + } + // Reference types must have a leading uppercase character + r, _ := utf8.DecodeRuneInString(t.Type) + return unicode.IsUpper(r) +} + +type Types map[string][]Type + +type TypePriority struct { + Type string + Value uint +} + +type TypedDataMessage = map[string]interface{} + +// TypedDataDomain represents the domain part of an EIP-712 message. +type TypedDataDomain struct { + Name string `json:"name"` + Version string `json:"version"` + ChainId *math.HexOrDecimal256 `json:"chainId"` + VerifyingContract string `json:"verifyingContract"` + Salt string `json:"salt"` +} + +// HashStruct generates a keccak256 hash of the encoding of the provided data +func (typedData *TypedData) HashStruct(primaryType string, data TypedDataMessage) (hexutil.Bytes, error) { + encodedData, err := typedData.EncodeData(primaryType, data, 1) + if err != nil { + return nil, err + } + return crypto.Keccak256(encodedData), nil +} + +// Dependencies returns an array of custom types ordered by their hierarchical reference tree +func (typedData *TypedData) Dependencies(primaryType string, found []string) []string { + includes := func(arr []string, str string) bool { + for _, obj := range arr { + if obj == str { + return true + } + } + return false + } + + if includes(found, primaryType) { + return found + } + if typedData.Types[primaryType] == nil { + return found + } + found = append(found, primaryType) + for _, field := range typedData.Types[primaryType] { + for _, dep := range typedData.Dependencies(field.Type, found) { + if !includes(found, dep) { + found = append(found, dep) + } + } + } + return found +} + +// EncodeType generates the following encoding: +// `name ‖ "(" ‖ member₁ ‖ "," ‖ member₂ ‖ "," ‖ … ‖ memberₙ ")"` +// +// each member is written as `type ‖ " " ‖ name` encodings cascade down and are sorted by name +func (typedData *TypedData) EncodeType(primaryType string) hexutil.Bytes { + // Get dependencies primary first, then alphabetical + deps := typedData.Dependencies(primaryType, []string{}) + if len(deps) > 0 { + slicedDeps := deps[1:] + sort.Strings(slicedDeps) + deps = append([]string{primaryType}, slicedDeps...) + } + + // Format as a string with fields + var buffer bytes.Buffer + for _, dep := range deps { + buffer.WriteString(dep) + buffer.WriteString("(") + for _, obj := range typedData.Types[dep] { + buffer.WriteString(obj.Type) + buffer.WriteString(" ") + buffer.WriteString(obj.Name) + buffer.WriteString(",") + } + buffer.Truncate(buffer.Len() - 1) + buffer.WriteString(")") + } + return buffer.Bytes() +} + +// TypeHash creates the keccak256 hash of the data +func (typedData *TypedData) TypeHash(primaryType string) hexutil.Bytes { + return crypto.Keccak256(typedData.EncodeType(primaryType)) +} + +// EncodeData generates the following encoding: +// `enc(value₁) ‖ enc(value₂) ‖ … ‖ enc(valueₙ)` +// +// each encoded member is 32-byte long +func (typedData *TypedData) EncodeData(primaryType string, data map[string]interface{}, depth int) (hexutil.Bytes, error) { + if err := typedData.validate(); err != nil { + return nil, err + } + + buffer := bytes.Buffer{} + + // Verify extra data + if exp, got := len(typedData.Types[primaryType]), len(data); exp < got { + return nil, fmt.Errorf("there is extra data provided in the message (%d < %d)", exp, got) + } + + // Add typehash + buffer.Write(typedData.TypeHash(primaryType)) + + // Add field contents. Structs and arrays have special handlers. + for _, field := range typedData.Types[primaryType] { + encType := field.Type + encValue := data[field.Name] + if encType[len(encType)-1:] == "]" { + arrayValue, ok := encValue.([]interface{}) + if !ok { + return nil, dataMismatchError(encType, encValue) + } + + arrayBuffer := bytes.Buffer{} + parsedType := strings.Split(encType, "[")[0] + for _, item := range arrayValue { + if typedData.Types[parsedType] != nil { + mapValue, ok := item.(map[string]interface{}) + if !ok { + return nil, dataMismatchError(parsedType, item) + } + encodedData, err := typedData.EncodeData(parsedType, mapValue, depth+1) + if err != nil { + return nil, err + } + arrayBuffer.Write(encodedData) + } else { + bytesValue, err := typedData.EncodePrimitiveValue(parsedType, item, depth) + if err != nil { + return nil, err + } + arrayBuffer.Write(bytesValue) + } + } + + buffer.Write(crypto.Keccak256(arrayBuffer.Bytes())) + } else if typedData.Types[field.Type] != nil { + mapValue, ok := encValue.(map[string]interface{}) + if !ok { + return nil, dataMismatchError(encType, encValue) + } + encodedData, err := typedData.EncodeData(field.Type, mapValue, depth+1) + if err != nil { + return nil, err + } + buffer.Write(crypto.Keccak256(encodedData)) + } else { + byteValue, err := typedData.EncodePrimitiveValue(encType, encValue, depth) + if err != nil { + return nil, err + } + buffer.Write(byteValue) + } + } + return buffer.Bytes(), nil +} + +// Attempt to parse bytes in different formats: byte array, hex string, hexutil.Bytes. +func parseBytes(encType interface{}) ([]byte, bool) { + switch v := encType.(type) { + case []byte: + return v, true + case hexutil.Bytes: + return v, true + case string: + bytes, err := hexutil.Decode(v) + if err != nil { + return nil, false + } + return bytes, true + default: + return nil, false + } +} + +func parseInteger(encType string, encValue interface{}) (*big.Int, error) { + var ( + length int + signed = strings.HasPrefix(encType, "int") + b *big.Int + ) + if encType == "int" || encType == "uint" { + length = 256 + } else { + lengthStr := "" + if strings.HasPrefix(encType, "uint") { + lengthStr = strings.TrimPrefix(encType, "uint") + } else { + lengthStr = strings.TrimPrefix(encType, "int") + } + atoiSize, err := strconv.Atoi(lengthStr) + if err != nil { + return nil, fmt.Errorf("invalid size on integer: %v", lengthStr) + } + length = atoiSize + } + switch v := encValue.(type) { + case *math.HexOrDecimal256: + b = (*big.Int)(v) + case string: + var hexIntValue math.HexOrDecimal256 + if err := hexIntValue.UnmarshalText([]byte(v)); err != nil { + return nil, err + } + b = (*big.Int)(&hexIntValue) + case float64: + // JSON parses non-strings as float64. Fail if we cannot + // convert it losslessly + if float64(int64(v)) == v { + b = big.NewInt(int64(v)) + } else { + return nil, fmt.Errorf("invalid float value %v for type %v", v, encType) + } + } + if b == nil { + return nil, fmt.Errorf("invalid integer value %v/%v for type %v", encValue, reflect.TypeOf(encValue), encType) + } + if b.BitLen() > length { + return nil, fmt.Errorf("integer larger than '%v'", encType) + } + if !signed && b.Sign() == -1 { + return nil, fmt.Errorf("invalid negative value for unsigned type %v", encType) + } + return b, nil +} + +// EncodePrimitiveValue deals with the primitive values found +// while searching through the typed data +func (typedData *TypedData) EncodePrimitiveValue(encType string, encValue interface{}, depth int) ([]byte, error) { + switch encType { + case "address": + stringValue, ok := encValue.(string) + if !ok || !common.IsHexAddress(stringValue) { + return nil, dataMismatchError(encType, encValue) + } + retval := make([]byte, 32) + copy(retval[12:], common.HexToAddress(stringValue).Bytes()) + return retval, nil + case "bool": + boolValue, ok := encValue.(bool) + if !ok { + return nil, dataMismatchError(encType, encValue) + } + if boolValue { + return math.PaddedBigBytes(common.Big1, 32), nil + } + return math.PaddedBigBytes(common.Big0, 32), nil + case "string": + strVal, ok := encValue.(string) + if !ok { + return nil, dataMismatchError(encType, encValue) + } + return crypto.Keccak256([]byte(strVal)), nil + case "bytes": + bytesValue, ok := parseBytes(encValue) + if !ok { + return nil, dataMismatchError(encType, encValue) + } + return crypto.Keccak256(bytesValue), nil + } + if strings.HasPrefix(encType, "bytes") { + lengthStr := strings.TrimPrefix(encType, "bytes") + length, err := strconv.Atoi(lengthStr) + if err != nil { + return nil, fmt.Errorf("invalid size on bytes: %v", lengthStr) + } + if length < 0 || length > 32 { + return nil, fmt.Errorf("invalid size on bytes: %d", length) + } + if byteValue, ok := parseBytes(encValue); !ok || len(byteValue) != length { + return nil, dataMismatchError(encType, encValue) + } else { + // Right-pad the bits + dst := make([]byte, 32) + copy(dst, byteValue) + return dst, nil + } + } + if strings.HasPrefix(encType, "int") || strings.HasPrefix(encType, "uint") { + b, err := parseInteger(encType, encValue) + if err != nil { + return nil, err + } + return math.U256Bytes(b), nil + } + return nil, fmt.Errorf("unrecognized type '%s'", encType) + +} + +// dataMismatchError generates an error for a mismatch between +// the provided type and data +func dataMismatchError(encType string, encValue interface{}) error { + return fmt.Errorf("provided data '%v' doesn't match type '%s'", encValue, encType) +} + +// validate makes sure the types are sound +func (typedData *TypedData) validate() error { + if err := typedData.Types.validate(); err != nil { + return err + } + if err := typedData.Domain.validate(); err != nil { + return err + } + return nil +} + +// Map generates a map version of the typed data +func (typedData *TypedData) Map() map[string]interface{} { + dataMap := map[string]interface{}{ + "types": typedData.Types, + "domain": typedData.Domain.Map(), + "primaryType": typedData.PrimaryType, + "message": typedData.Message, + } + return dataMap +} + +// Format returns a representation of typedData, which can be easily displayed by a user-interface +// without in-depth knowledge about 712 rules +func (typedData *TypedData) Format() ([]*NameValueType, error) { + domain, err := typedData.formatData("EIP712Domain", typedData.Domain.Map()) + if err != nil { + return nil, err + } + ptype, err := typedData.formatData(typedData.PrimaryType, typedData.Message) + if err != nil { + return nil, err + } + var nvts []*NameValueType + nvts = append(nvts, &NameValueType{ + Name: "EIP712Domain", + Value: domain, + Typ: "domain", + }) + nvts = append(nvts, &NameValueType{ + Name: typedData.PrimaryType, + Value: ptype, + Typ: "primary type", + }) + return nvts, nil +} + +func (typedData *TypedData) formatData(primaryType string, data map[string]interface{}) ([]*NameValueType, error) { + var output []*NameValueType + + // Add field contents. Structs and arrays have special handlers. + for _, field := range typedData.Types[primaryType] { + encName := field.Name + encValue := data[encName] + item := &NameValueType{ + Name: encName, + Typ: field.Type, + } + if field.isArray() { + arrayValue, _ := encValue.([]interface{}) + parsedType := field.typeName() + for _, v := range arrayValue { + if typedData.Types[parsedType] != nil { + mapValue, _ := v.(map[string]interface{}) + mapOutput, err := typedData.formatData(parsedType, mapValue) + if err != nil { + return nil, err + } + item.Value = mapOutput + } else { + primitiveOutput, err := formatPrimitiveValue(field.Type, encValue) + if err != nil { + return nil, err + } + item.Value = primitiveOutput + } + } + } else if typedData.Types[field.Type] != nil { + if mapValue, ok := encValue.(map[string]interface{}); ok { + mapOutput, err := typedData.formatData(field.Type, mapValue) + if err != nil { + return nil, err + } + item.Value = mapOutput + } else { + item.Value = "" + } + } else { + primitiveOutput, err := formatPrimitiveValue(field.Type, encValue) + if err != nil { + return nil, err + } + item.Value = primitiveOutput + } + output = append(output, item) + } + return output, nil +} + +func formatPrimitiveValue(encType string, encValue interface{}) (string, error) { + switch encType { + case "address": + if stringValue, ok := encValue.(string); !ok { + return "", fmt.Errorf("could not format value %v as address", encValue) + } else { + return common.HexToAddress(stringValue).String(), nil + } + case "bool": + if boolValue, ok := encValue.(bool); !ok { + return "", fmt.Errorf("could not format value %v as bool", encValue) + } else { + return fmt.Sprintf("%t", boolValue), nil + } + case "bytes", "string": + return fmt.Sprintf("%s", encValue), nil + } + if strings.HasPrefix(encType, "bytes") { + return fmt.Sprintf("%s", encValue), nil + + } + if strings.HasPrefix(encType, "uint") || strings.HasPrefix(encType, "int") { + if b, err := parseInteger(encType, encValue); err != nil { + return "", err + } else { + return fmt.Sprintf("%d (0x%x)", b, b), nil + } + } + return "", fmt.Errorf("unhandled type %v", encType) +} + +// Validate checks if the types object is conformant to the specs +func (t Types) validate() error { + for typeKey, typeArr := range t { + if len(typeKey) == 0 { + return fmt.Errorf("empty type key") + } + for i, typeObj := range typeArr { + if len(typeObj.Type) == 0 { + return fmt.Errorf("type %q:%d: empty Type", typeKey, i) + } + if len(typeObj.Name) == 0 { + return fmt.Errorf("type %q:%d: empty Name", typeKey, i) + } + if typeKey == typeObj.Type { + return fmt.Errorf("type %q cannot reference itself", typeObj.Type) + } + if typeObj.isReferenceType() { + if _, exist := t[typeObj.typeName()]; !exist { + return fmt.Errorf("reference type %q is undefined", typeObj.Type) + } + if !typedDataReferenceTypeRegexp.MatchString(typeObj.Type) { + return fmt.Errorf("unknown reference type %q", typeObj.Type) + } + } else if !isPrimitiveTypeValid(typeObj.Type) { + return fmt.Errorf("unknown type %q", typeObj.Type) + } + } + } + return nil +} + +// Checks if the primitive value is valid +func isPrimitiveTypeValid(primitiveType string) bool { + if primitiveType == "address" || + primitiveType == "address[]" || + primitiveType == "bool" || + primitiveType == "bool[]" || + primitiveType == "string" || + primitiveType == "string[]" { + return true + } + if primitiveType == "bytes" || + primitiveType == "bytes[]" || + primitiveType == "bytes1" || + primitiveType == "bytes1[]" || + primitiveType == "bytes2" || + primitiveType == "bytes2[]" || + primitiveType == "bytes3" || + primitiveType == "bytes3[]" || + primitiveType == "bytes4" || + primitiveType == "bytes4[]" || + primitiveType == "bytes5" || + primitiveType == "bytes5[]" || + primitiveType == "bytes6" || + primitiveType == "bytes6[]" || + primitiveType == "bytes7" || + primitiveType == "bytes7[]" || + primitiveType == "bytes8" || + primitiveType == "bytes8[]" || + primitiveType == "bytes9" || + primitiveType == "bytes9[]" || + primitiveType == "bytes10" || + primitiveType == "bytes10[]" || + primitiveType == "bytes11" || + primitiveType == "bytes11[]" || + primitiveType == "bytes12" || + primitiveType == "bytes12[]" || + primitiveType == "bytes13" || + primitiveType == "bytes13[]" || + primitiveType == "bytes14" || + primitiveType == "bytes14[]" || + primitiveType == "bytes15" || + primitiveType == "bytes15[]" || + primitiveType == "bytes16" || + primitiveType == "bytes16[]" || + primitiveType == "bytes17" || + primitiveType == "bytes17[]" || + primitiveType == "bytes18" || + primitiveType == "bytes18[]" || + primitiveType == "bytes19" || + primitiveType == "bytes19[]" || + primitiveType == "bytes20" || + primitiveType == "bytes20[]" || + primitiveType == "bytes21" || + primitiveType == "bytes21[]" || + primitiveType == "bytes22" || + primitiveType == "bytes22[]" || + primitiveType == "bytes23" || + primitiveType == "bytes23[]" || + primitiveType == "bytes24" || + primitiveType == "bytes24[]" || + primitiveType == "bytes25" || + primitiveType == "bytes25[]" || + primitiveType == "bytes26" || + primitiveType == "bytes26[]" || + primitiveType == "bytes27" || + primitiveType == "bytes27[]" || + primitiveType == "bytes28" || + primitiveType == "bytes28[]" || + primitiveType == "bytes29" || + primitiveType == "bytes29[]" || + primitiveType == "bytes30" || + primitiveType == "bytes30[]" || + primitiveType == "bytes31" || + primitiveType == "bytes31[]" || + primitiveType == "bytes32" || + primitiveType == "bytes32[]" { + return true + } + if primitiveType == "int" || + primitiveType == "int[]" || + primitiveType == "int8" || + primitiveType == "int8[]" || + primitiveType == "int16" || + primitiveType == "int16[]" || + primitiveType == "int32" || + primitiveType == "int32[]" || + primitiveType == "int64" || + primitiveType == "int64[]" || + primitiveType == "int128" || + primitiveType == "int128[]" || + primitiveType == "int256" || + primitiveType == "int256[]" { + return true + } + if primitiveType == "uint" || + primitiveType == "uint[]" || + primitiveType == "uint8" || + primitiveType == "uint8[]" || + primitiveType == "uint16" || + primitiveType == "uint16[]" || + primitiveType == "uint32" || + primitiveType == "uint32[]" || + primitiveType == "uint64" || + primitiveType == "uint64[]" || + primitiveType == "uint128" || + primitiveType == "uint128[]" || + primitiveType == "uint256" || + primitiveType == "uint256[]" { + return true + } + return false +} + +// validate checks if the given domain is valid, i.e. contains at least +// the minimum viable keys and values +func (domain *TypedDataDomain) validate() error { + if domain.ChainId == nil && len(domain.Name) == 0 && len(domain.Version) == 0 && len(domain.VerifyingContract) == 0 && len(domain.Salt) == 0 { + return errors.New("domain is undefined") + } + + return nil +} + +// Map is a helper function to generate a map version of the domain +func (domain *TypedDataDomain) Map() map[string]interface{} { + dataMap := map[string]interface{}{} + + if domain.ChainId != nil { + dataMap["chainId"] = domain.ChainId + } + + if len(domain.Name) > 0 { + dataMap["name"] = domain.Name + } + + if len(domain.Version) > 0 { + dataMap["version"] = domain.Version + } + + if len(domain.VerifyingContract) > 0 { + dataMap["verifyingContract"] = domain.VerifyingContract + } + + if len(domain.Salt) > 0 { + dataMap["salt"] = domain.Salt + } + return dataMap +} + +// NameValueType is a very simple struct with Name, Value and Type. It's meant for simple +// json structures used to communicate signing-info about typed data with the UI +type NameValueType struct { + Name string `json:"name"` + Value interface{} `json:"value"` + Typ string `json:"type"` +} + +// Pprint returns a pretty-printed version of nvt +func (nvt *NameValueType) Pprint(depth int) string { + output := bytes.Buffer{} + output.WriteString(strings.Repeat("\u00a0", depth*2)) + output.WriteString(fmt.Sprintf("%s [%s]: ", nvt.Name, nvt.Typ)) + if nvts, ok := nvt.Value.([]*NameValueType); ok { + output.WriteString("\n") + for _, next := range nvts { + sublevel := next.Pprint(depth + 1) + output.WriteString(sublevel) + } + } else { + if nvt.Value != nil { + output.WriteString(fmt.Sprintf("%q\n", nvt.Value)) + } else { + output.WriteString("\n") + } + } + return output.String() +} diff --git a/signer/core/auditlog.go b/signer/core/auditlog.go index 84877ee712..663d6d1317 100644 --- a/signer/core/auditlog.go +++ b/signer/core/auditlog.go @@ -89,7 +89,7 @@ func (l *AuditLogger) SignGnosisSafeTx(ctx context.Context, addr common.Mixedcas return res, e } -func (l *AuditLogger) SignTypedData(ctx context.Context, addr common.MixedcaseAddress, data TypedData) (hexutil.Bytes, error) { +func (l *AuditLogger) SignTypedData(ctx context.Context, addr common.MixedcaseAddress, data apitypes.TypedData) (hexutil.Bytes, error) { l.log.Info("SignTypedData", "type", "request", "metadata", MetadataFromContext(ctx).String(), "addr", addr.String(), "data", data) b, e := l.api.SignTypedData(ctx, addr, data) diff --git a/signer/core/gnosis_safe.go b/signer/core/gnosis_safe.go index bdf7f837a0..016b1fff3e 100644 --- a/signer/core/gnosis_safe.go +++ b/signer/core/gnosis_safe.go @@ -34,15 +34,15 @@ type GnosisSafeTx struct { } // ToTypedData converts the tx to a EIP-712 Typed Data structure for signing -func (tx *GnosisSafeTx) ToTypedData() TypedData { +func (tx *GnosisSafeTx) ToTypedData() apitypes.TypedData { var data hexutil.Bytes if tx.Data != nil { data = *tx.Data } - gnosisTypedData := TypedData{ - Types: Types{ - "EIP712Domain": []Type{{Name: "verifyingContract", Type: "address"}}, - "SafeTx": []Type{ + gnosisTypedData := apitypes.TypedData{ + Types: apitypes.Types{ + "EIP712Domain": []apitypes.Type{{Name: "verifyingContract", Type: "address"}}, + "SafeTx": []apitypes.Type{ {Name: "to", Type: "address"}, {Name: "value", Type: "uint256"}, {Name: "data", Type: "bytes"}, @@ -55,11 +55,11 @@ func (tx *GnosisSafeTx) ToTypedData() TypedData { {Name: "nonce", Type: "uint256"}, }, }, - Domain: TypedDataDomain{ + Domain: apitypes.TypedDataDomain{ VerifyingContract: tx.Safe.Address().Hex(), }, PrimaryType: "SafeTx", - Message: TypedDataMessage{ + Message: apitypes.TypedDataMessage{ "to": tx.To.Address().Hex(), "value": tx.Value.String(), "data": data, diff --git a/signer/core/signed_data.go b/signer/core/signed_data.go index 26fd2ec8dc..03494c098d 100644 --- a/signer/core/signed_data.go +++ b/signer/core/signed_data.go @@ -17,24 +17,14 @@ package core import ( - "bytes" "context" "errors" "fmt" - "math/big" "mime" - "reflect" - "regexp" - "sort" - "strconv" - "strings" - "unicode" - "unicode/utf8" "github.com/ethereum/go-ethereum/accounts" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" - "github.com/ethereum/go-ethereum/common/math" "github.com/ethereum/go-ethereum/consensus/clique" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" @@ -42,92 +32,6 @@ import ( "github.com/ethereum/go-ethereum/signer/core/apitypes" ) -type SigFormat struct { - Mime string - ByteVersion byte -} - -var ( - IntendedValidator = SigFormat{ - accounts.MimetypeDataWithValidator, - 0x00, - } - DataTyped = SigFormat{ - accounts.MimetypeTypedData, - 0x01, - } - ApplicationClique = SigFormat{ - accounts.MimetypeClique, - 0x02, - } - ApplicationBor = SigFormat{ - accounts.MimetypeBor, - 0x10, - } - TextPlain = SigFormat{ - accounts.MimetypeTextPlain, - 0x45, - } -) - -type ValidatorData struct { - Address common.Address - Message hexutil.Bytes -} - -type TypedData struct { - Types Types `json:"types"` - PrimaryType string `json:"primaryType"` - Domain TypedDataDomain `json:"domain"` - Message TypedDataMessage `json:"message"` -} - -type Type struct { - Name string `json:"name"` - Type string `json:"type"` -} - -func (t *Type) isArray() bool { - return strings.HasSuffix(t.Type, "[]") -} - -// typeName returns the canonical name of the type. If the type is 'Person[]', then -// this method returns 'Person' -func (t *Type) typeName() string { - if strings.HasSuffix(t.Type, "[]") { - return strings.TrimSuffix(t.Type, "[]") - } - return t.Type -} - -func (t *Type) isReferenceType() bool { - if len(t.Type) == 0 { - return false - } - // Reference types must have a leading uppercase character - r, _ := utf8.DecodeRuneInString(t.Type) - return unicode.IsUpper(r) -} - -type Types map[string][]Type - -type TypePriority struct { - Type string - Value uint -} - -type TypedDataMessage = map[string]interface{} - -type TypedDataDomain struct { - Name string `json:"name"` - Version string `json:"version"` - ChainId *math.HexOrDecimal256 `json:"chainId"` - VerifyingContract string `json:"verifyingContract"` - Salt string `json:"salt"` -} - -var typedDataReferenceTypeRegexp = regexp.MustCompile(`^[A-Z](\w*)(\[\])?$`) - // sign receives a request and produces a signature // // Note, the produced signature conforms to the secp256k1 curve R, S and V values, @@ -199,14 +103,14 @@ func (api *SignerAPI) determineSignatureFormat(ctx context.Context, contentType } switch mediaType { - case IntendedValidator.Mime: + case apitypes.IntendedValidator.Mime: // Data with an intended validator validatorData, err := UnmarshalValidatorData(data) if err != nil { return nil, useEthereumV, err } sighash, msg := SignTextValidator(validatorData) - messages := []*NameValueType{ + messages := []*apitypes.NameValueType{ { Name: "This is a request to sign data intended for a particular validator (see EIP 191 version 0)", Typ: "description", @@ -229,11 +133,11 @@ func (api *SignerAPI) determineSignatureFormat(ctx context.Context, contentType }, } req = &SignDataRequest{ContentType: mediaType, Rawdata: []byte(msg), Messages: messages, Hash: sighash} - case ApplicationClique.Mime: + case apitypes.ApplicationClique.Mime: // Clique is the Ethereum PoA standard stringData, ok := data.(string) if !ok { - return nil, useEthereumV, fmt.Errorf("input for %v must be an hex-encoded string", ApplicationClique.Mime) + return nil, useEthereumV, fmt.Errorf("input for %v must be an hex-encoded string", apitypes.ApplicationClique.Mime) } cliqueData, err := hexutil.Decode(stringData) if err != nil { @@ -255,7 +159,7 @@ func (api *SignerAPI) determineSignatureFormat(ctx context.Context, contentType if err != nil { return nil, useEthereumV, err } - messages := []*NameValueType{ + messages := []*apitypes.NameValueType{ { Name: "Clique header", Typ: "clique", @@ -276,7 +180,7 @@ func (api *SignerAPI) determineSignatureFormat(ctx context.Context, contentType return nil, useEthereumV, err } else { sighash, msg := accounts.TextAndHash(textData) - messages := []*NameValueType{ + messages := []*apitypes.NameValueType{ { Name: "message", Typ: accounts.MimetypeTextPlain, @@ -295,7 +199,7 @@ func (api *SignerAPI) determineSignatureFormat(ctx context.Context, contentType // SignTextWithValidator signs the given message which can be further recovered // with the given validator. // hash = keccak256("\x19\x00"${address}${data}). -func SignTextValidator(validatorData ValidatorData) (hexutil.Bytes, string) { +func SignTextValidator(validatorData apitypes.ValidatorData) (hexutil.Bytes, string) { msg := fmt.Sprintf("\x19\x00%s%s", string(validatorData.Address.Bytes()), string(validatorData.Message)) return crypto.Keccak256([]byte(msg)), msg } @@ -322,7 +226,7 @@ func cliqueHeaderHashAndRlp(header *types.Header) (hash, rlp []byte, err error) // It returns // - the signature, // - and/or any error -func (api *SignerAPI) SignTypedData(ctx context.Context, addr common.MixedcaseAddress, typedData TypedData) (hexutil.Bytes, error) { +func (api *SignerAPI) SignTypedData(ctx context.Context, addr common.MixedcaseAddress, typedData apitypes.TypedData) (hexutil.Bytes, error) { signature, _, err := api.signTypedData(ctx, addr, typedData, nil) return signature, err } @@ -330,7 +234,7 @@ func (api *SignerAPI) SignTypedData(ctx context.Context, addr common.MixedcaseAd // signTypedData is identical to the capitalized version, except that it also returns the hash (preimage) // - the signature preimage (hash) func (api *SignerAPI) signTypedData(ctx context.Context, addr common.MixedcaseAddress, - typedData TypedData, validationMessages *apitypes.ValidationMessages) (hexutil.Bytes, hexutil.Bytes, error) { + typedData apitypes.TypedData, validationMessages *apitypes.ValidationMessages) (hexutil.Bytes, hexutil.Bytes, error) { domainSeparator, err := typedData.HashStruct("EIP712Domain", typedData.Domain.Map()) if err != nil { return nil, nil, err @@ -346,7 +250,7 @@ func (api *SignerAPI) signTypedData(ctx context.Context, addr common.MixedcaseAd return nil, nil, err } req := &SignDataRequest{ - ContentType: DataTyped.Mime, + ContentType: apitypes.DataTyped.Mime, Rawdata: rawData, Messages: messages, Hash: sighash, @@ -362,289 +266,6 @@ func (api *SignerAPI) signTypedData(ctx context.Context, addr common.MixedcaseAd return signature, sighash, nil } -// HashStruct generates a keccak256 hash of the encoding of the provided data -func (typedData *TypedData) HashStruct(primaryType string, data TypedDataMessage) (hexutil.Bytes, error) { - encodedData, err := typedData.EncodeData(primaryType, data, 1) - if err != nil { - return nil, err - } - return crypto.Keccak256(encodedData), nil -} - -// Dependencies returns an array of custom types ordered by their hierarchical reference tree -func (typedData *TypedData) Dependencies(primaryType string, found []string) []string { - includes := func(arr []string, str string) bool { - for _, obj := range arr { - if obj == str { - return true - } - } - return false - } - - if includes(found, primaryType) { - return found - } - if typedData.Types[primaryType] == nil { - return found - } - found = append(found, primaryType) - for _, field := range typedData.Types[primaryType] { - for _, dep := range typedData.Dependencies(field.Type, found) { - if !includes(found, dep) { - found = append(found, dep) - } - } - } - return found -} - -// EncodeType generates the following encoding: -// `name ‖ "(" ‖ member₁ ‖ "," ‖ member₂ ‖ "," ‖ … ‖ memberₙ ")"` -// -// each member is written as `type ‖ " " ‖ name` encodings cascade down and are sorted by name -func (typedData *TypedData) EncodeType(primaryType string) hexutil.Bytes { - // Get dependencies primary first, then alphabetical - deps := typedData.Dependencies(primaryType, []string{}) - if len(deps) > 0 { - slicedDeps := deps[1:] - sort.Strings(slicedDeps) - deps = append([]string{primaryType}, slicedDeps...) - } - - // Format as a string with fields - var buffer bytes.Buffer - for _, dep := range deps { - buffer.WriteString(dep) - buffer.WriteString("(") - for _, obj := range typedData.Types[dep] { - buffer.WriteString(obj.Type) - buffer.WriteString(" ") - buffer.WriteString(obj.Name) - buffer.WriteString(",") - } - buffer.Truncate(buffer.Len() - 1) - buffer.WriteString(")") - } - return buffer.Bytes() -} - -// TypeHash creates the keccak256 hash of the data -func (typedData *TypedData) TypeHash(primaryType string) hexutil.Bytes { - return crypto.Keccak256(typedData.EncodeType(primaryType)) -} - -// EncodeData generates the following encoding: -// `enc(value₁) ‖ enc(value₂) ‖ … ‖ enc(valueₙ)` -// -// each encoded member is 32-byte long -func (typedData *TypedData) EncodeData(primaryType string, data map[string]interface{}, depth int) (hexutil.Bytes, error) { - if err := typedData.validate(); err != nil { - return nil, err - } - - buffer := bytes.Buffer{} - - // Verify extra data - if exp, got := len(typedData.Types[primaryType]), len(data); exp < got { - return nil, fmt.Errorf("there is extra data provided in the message (%d < %d)", exp, got) - } - - // Add typehash - buffer.Write(typedData.TypeHash(primaryType)) - - // Add field contents. Structs and arrays have special handlers. - for _, field := range typedData.Types[primaryType] { - encType := field.Type - encValue := data[field.Name] - if encType[len(encType)-1:] == "]" { - arrayValue, ok := encValue.([]interface{}) - if !ok { - return nil, dataMismatchError(encType, encValue) - } - - arrayBuffer := bytes.Buffer{} - parsedType := strings.Split(encType, "[")[0] - for _, item := range arrayValue { - if typedData.Types[parsedType] != nil { - mapValue, ok := item.(map[string]interface{}) - if !ok { - return nil, dataMismatchError(parsedType, item) - } - encodedData, err := typedData.EncodeData(parsedType, mapValue, depth+1) - if err != nil { - return nil, err - } - arrayBuffer.Write(encodedData) - } else { - bytesValue, err := typedData.EncodePrimitiveValue(parsedType, item, depth) - if err != nil { - return nil, err - } - arrayBuffer.Write(bytesValue) - } - } - - buffer.Write(crypto.Keccak256(arrayBuffer.Bytes())) - } else if typedData.Types[field.Type] != nil { - mapValue, ok := encValue.(map[string]interface{}) - if !ok { - return nil, dataMismatchError(encType, encValue) - } - encodedData, err := typedData.EncodeData(field.Type, mapValue, depth+1) - if err != nil { - return nil, err - } - buffer.Write(crypto.Keccak256(encodedData)) - } else { - byteValue, err := typedData.EncodePrimitiveValue(encType, encValue, depth) - if err != nil { - return nil, err - } - buffer.Write(byteValue) - } - } - return buffer.Bytes(), nil -} - -// Attempt to parse bytes in different formats: byte array, hex string, hexutil.Bytes. -func parseBytes(encType interface{}) ([]byte, bool) { - switch v := encType.(type) { - case []byte: - return v, true - case hexutil.Bytes: - return v, true - case string: - bytes, err := hexutil.Decode(v) - if err != nil { - return nil, false - } - return bytes, true - default: - return nil, false - } -} - -func parseInteger(encType string, encValue interface{}) (*big.Int, error) { - var ( - length int - signed = strings.HasPrefix(encType, "int") - b *big.Int - ) - if encType == "int" || encType == "uint" { - length = 256 - } else { - lengthStr := "" - if strings.HasPrefix(encType, "uint") { - lengthStr = strings.TrimPrefix(encType, "uint") - } else { - lengthStr = strings.TrimPrefix(encType, "int") - } - atoiSize, err := strconv.Atoi(lengthStr) - if err != nil { - return nil, fmt.Errorf("invalid size on integer: %v", lengthStr) - } - length = atoiSize - } - switch v := encValue.(type) { - case *math.HexOrDecimal256: - b = (*big.Int)(v) - case string: - var hexIntValue math.HexOrDecimal256 - if err := hexIntValue.UnmarshalText([]byte(v)); err != nil { - return nil, err - } - b = (*big.Int)(&hexIntValue) - case float64: - // JSON parses non-strings as float64. Fail if we cannot - // convert it losslessly - if float64(int64(v)) == v { - b = big.NewInt(int64(v)) - } else { - return nil, fmt.Errorf("invalid float value %v for type %v", v, encType) - } - } - if b == nil { - return nil, fmt.Errorf("invalid integer value %v/%v for type %v", encValue, reflect.TypeOf(encValue), encType) - } - if b.BitLen() > length { - return nil, fmt.Errorf("integer larger than '%v'", encType) - } - if !signed && b.Sign() == -1 { - return nil, fmt.Errorf("invalid negative value for unsigned type %v", encType) - } - return b, nil -} - -// EncodePrimitiveValue deals with the primitive values found -// while searching through the typed data -func (typedData *TypedData) EncodePrimitiveValue(encType string, encValue interface{}, depth int) ([]byte, error) { - switch encType { - case "address": - stringValue, ok := encValue.(string) - if !ok || !common.IsHexAddress(stringValue) { - return nil, dataMismatchError(encType, encValue) - } - retval := make([]byte, 32) - copy(retval[12:], common.HexToAddress(stringValue).Bytes()) - return retval, nil - case "bool": - boolValue, ok := encValue.(bool) - if !ok { - return nil, dataMismatchError(encType, encValue) - } - if boolValue { - return math.PaddedBigBytes(common.Big1, 32), nil - } - return math.PaddedBigBytes(common.Big0, 32), nil - case "string": - strVal, ok := encValue.(string) - if !ok { - return nil, dataMismatchError(encType, encValue) - } - return crypto.Keccak256([]byte(strVal)), nil - case "bytes": - bytesValue, ok := parseBytes(encValue) - if !ok { - return nil, dataMismatchError(encType, encValue) - } - return crypto.Keccak256(bytesValue), nil - } - if strings.HasPrefix(encType, "bytes") { - lengthStr := strings.TrimPrefix(encType, "bytes") - length, err := strconv.Atoi(lengthStr) - if err != nil { - return nil, fmt.Errorf("invalid size on bytes: %v", lengthStr) - } - if length < 0 || length > 32 { - return nil, fmt.Errorf("invalid size on bytes: %d", length) - } - if byteValue, ok := parseBytes(encValue); !ok || len(byteValue) != length { - return nil, dataMismatchError(encType, encValue) - } else { - // Right-pad the bits - dst := make([]byte, 32) - copy(dst, byteValue) - return dst, nil - } - } - if strings.HasPrefix(encType, "int") || strings.HasPrefix(encType, "uint") { - b, err := parseInteger(encType, encValue) - if err != nil { - return nil, err - } - return math.U256Bytes(b), nil - } - return nil, fmt.Errorf("unrecognized type '%s'", encType) - -} - -// dataMismatchError generates an error for a mismatch between -// the provided type and data -func dataMismatchError(encType string, encValue interface{}) error { - return fmt.Errorf("provided data '%v' doesn't match type '%s'", encValue, encType) -} - // EcRecover recovers the address associated with the given sig. // Only compatible with `text/plain` func (api *SignerAPI) EcRecover(ctx context.Context, data hexutil.Bytes, sig hexutil.Bytes) (common.Address, error) { @@ -675,376 +296,37 @@ func (api *SignerAPI) EcRecover(ctx context.Context, data hexutil.Bytes, sig hex } // UnmarshalValidatorData converts the bytes input to typed data -func UnmarshalValidatorData(data interface{}) (ValidatorData, error) { +func UnmarshalValidatorData(data interface{}) (apitypes.ValidatorData, error) { raw, ok := data.(map[string]interface{}) if !ok { - return ValidatorData{}, errors.New("validator input is not a map[string]interface{}") + return apitypes.ValidatorData{}, errors.New("validator input is not a map[string]interface{}") } addr, ok := raw["address"].(string) if !ok { - return ValidatorData{}, errors.New("validator address is not sent as a string") + return apitypes.ValidatorData{}, errors.New("validator address is not sent as a string") } addrBytes, err := hexutil.Decode(addr) if err != nil { - return ValidatorData{}, err + return apitypes.ValidatorData{}, err } if !ok || len(addrBytes) == 0 { - return ValidatorData{}, errors.New("validator address is undefined") + return apitypes.ValidatorData{}, errors.New("validator address is undefined") } message, ok := raw["message"].(string) if !ok { - return ValidatorData{}, errors.New("message is not sent as a string") + return apitypes.ValidatorData{}, errors.New("message is not sent as a string") } messageBytes, err := hexutil.Decode(message) if err != nil { - return ValidatorData{}, err + return apitypes.ValidatorData{}, err } if !ok || len(messageBytes) == 0 { - return ValidatorData{}, errors.New("message is undefined") + return apitypes.ValidatorData{}, errors.New("message is undefined") } - return ValidatorData{ + return apitypes.ValidatorData{ Address: common.BytesToAddress(addrBytes), Message: messageBytes, }, nil } - -// validate makes sure the types are sound -func (typedData *TypedData) validate() error { - if err := typedData.Types.validate(); err != nil { - return err - } - if err := typedData.Domain.validate(); err != nil { - return err - } - return nil -} - -// Map generates a map version of the typed data -func (typedData *TypedData) Map() map[string]interface{} { - dataMap := map[string]interface{}{ - "types": typedData.Types, - "domain": typedData.Domain.Map(), - "primaryType": typedData.PrimaryType, - "message": typedData.Message, - } - return dataMap -} - -// Format returns a representation of typedData, which can be easily displayed by a user-interface -// without in-depth knowledge about 712 rules -func (typedData *TypedData) Format() ([]*NameValueType, error) { - domain, err := typedData.formatData("EIP712Domain", typedData.Domain.Map()) - if err != nil { - return nil, err - } - ptype, err := typedData.formatData(typedData.PrimaryType, typedData.Message) - if err != nil { - return nil, err - } - var nvts []*NameValueType - nvts = append(nvts, &NameValueType{ - Name: "EIP712Domain", - Value: domain, - Typ: "domain", - }) - nvts = append(nvts, &NameValueType{ - Name: typedData.PrimaryType, - Value: ptype, - Typ: "primary type", - }) - return nvts, nil -} - -func (typedData *TypedData) formatData(primaryType string, data map[string]interface{}) ([]*NameValueType, error) { - var output []*NameValueType - - // Add field contents. Structs and arrays have special handlers. - for _, field := range typedData.Types[primaryType] { - encName := field.Name - encValue := data[encName] - item := &NameValueType{ - Name: encName, - Typ: field.Type, - } - if field.isArray() { - arrayValue, _ := encValue.([]interface{}) - parsedType := field.typeName() - for _, v := range arrayValue { - if typedData.Types[parsedType] != nil { - mapValue, _ := v.(map[string]interface{}) - mapOutput, err := typedData.formatData(parsedType, mapValue) - if err != nil { - return nil, err - } - item.Value = mapOutput - } else { - primitiveOutput, err := formatPrimitiveValue(field.Type, encValue) - if err != nil { - return nil, err - } - item.Value = primitiveOutput - } - } - } else if typedData.Types[field.Type] != nil { - if mapValue, ok := encValue.(map[string]interface{}); ok { - mapOutput, err := typedData.formatData(field.Type, mapValue) - if err != nil { - return nil, err - } - item.Value = mapOutput - } else { - item.Value = "" - } - } else { - primitiveOutput, err := formatPrimitiveValue(field.Type, encValue) - if err != nil { - return nil, err - } - item.Value = primitiveOutput - } - output = append(output, item) - } - return output, nil -} - -func formatPrimitiveValue(encType string, encValue interface{}) (string, error) { - switch encType { - case "address": - if stringValue, ok := encValue.(string); !ok { - return "", fmt.Errorf("could not format value %v as address", encValue) - } else { - return common.HexToAddress(stringValue).String(), nil - } - case "bool": - if boolValue, ok := encValue.(bool); !ok { - return "", fmt.Errorf("could not format value %v as bool", encValue) - } else { - return fmt.Sprintf("%t", boolValue), nil - } - case "bytes", "string": - return fmt.Sprintf("%s", encValue), nil - } - if strings.HasPrefix(encType, "bytes") { - return fmt.Sprintf("%s", encValue), nil - - } - if strings.HasPrefix(encType, "uint") || strings.HasPrefix(encType, "int") { - if b, err := parseInteger(encType, encValue); err != nil { - return "", err - } else { - return fmt.Sprintf("%d (0x%x)", b, b), nil - } - } - return "", fmt.Errorf("unhandled type %v", encType) -} - -// NameValueType is a very simple struct with Name, Value and Type. It's meant for simple -// json structures used to communicate signing-info about typed data with the UI -type NameValueType struct { - Name string `json:"name"` - Value interface{} `json:"value"` - Typ string `json:"type"` -} - -// Pprint returns a pretty-printed version of nvt -func (nvt *NameValueType) Pprint(depth int) string { - output := bytes.Buffer{} - output.WriteString(strings.Repeat("\u00a0", depth*2)) - output.WriteString(fmt.Sprintf("%s [%s]: ", nvt.Name, nvt.Typ)) - if nvts, ok := nvt.Value.([]*NameValueType); ok { - output.WriteString("\n") - for _, next := range nvts { - sublevel := next.Pprint(depth + 1) - output.WriteString(sublevel) - } - } else { - if nvt.Value != nil { - output.WriteString(fmt.Sprintf("%q\n", nvt.Value)) - } else { - output.WriteString("\n") - } - } - return output.String() -} - -// Validate checks if the types object is conformant to the specs -func (t Types) validate() error { - for typeKey, typeArr := range t { - if len(typeKey) == 0 { - return fmt.Errorf("empty type key") - } - for i, typeObj := range typeArr { - if len(typeObj.Type) == 0 { - return fmt.Errorf("type %q:%d: empty Type", typeKey, i) - } - if len(typeObj.Name) == 0 { - return fmt.Errorf("type %q:%d: empty Name", typeKey, i) - } - if typeKey == typeObj.Type { - return fmt.Errorf("type %q cannot reference itself", typeObj.Type) - } - if typeObj.isReferenceType() { - if _, exist := t[typeObj.typeName()]; !exist { - return fmt.Errorf("reference type %q is undefined", typeObj.Type) - } - if !typedDataReferenceTypeRegexp.MatchString(typeObj.Type) { - return fmt.Errorf("unknown reference type %q", typeObj.Type) - } - } else if !isPrimitiveTypeValid(typeObj.Type) { - return fmt.Errorf("unknown type %q", typeObj.Type) - } - } - } - return nil -} - -// Checks if the primitive value is valid -func isPrimitiveTypeValid(primitiveType string) bool { - if primitiveType == "address" || - primitiveType == "address[]" || - primitiveType == "bool" || - primitiveType == "bool[]" || - primitiveType == "string" || - primitiveType == "string[]" { - return true - } - if primitiveType == "bytes" || - primitiveType == "bytes[]" || - primitiveType == "bytes1" || - primitiveType == "bytes1[]" || - primitiveType == "bytes2" || - primitiveType == "bytes2[]" || - primitiveType == "bytes3" || - primitiveType == "bytes3[]" || - primitiveType == "bytes4" || - primitiveType == "bytes4[]" || - primitiveType == "bytes5" || - primitiveType == "bytes5[]" || - primitiveType == "bytes6" || - primitiveType == "bytes6[]" || - primitiveType == "bytes7" || - primitiveType == "bytes7[]" || - primitiveType == "bytes8" || - primitiveType == "bytes8[]" || - primitiveType == "bytes9" || - primitiveType == "bytes9[]" || - primitiveType == "bytes10" || - primitiveType == "bytes10[]" || - primitiveType == "bytes11" || - primitiveType == "bytes11[]" || - primitiveType == "bytes12" || - primitiveType == "bytes12[]" || - primitiveType == "bytes13" || - primitiveType == "bytes13[]" || - primitiveType == "bytes14" || - primitiveType == "bytes14[]" || - primitiveType == "bytes15" || - primitiveType == "bytes15[]" || - primitiveType == "bytes16" || - primitiveType == "bytes16[]" || - primitiveType == "bytes17" || - primitiveType == "bytes17[]" || - primitiveType == "bytes18" || - primitiveType == "bytes18[]" || - primitiveType == "bytes19" || - primitiveType == "bytes19[]" || - primitiveType == "bytes20" || - primitiveType == "bytes20[]" || - primitiveType == "bytes21" || - primitiveType == "bytes21[]" || - primitiveType == "bytes22" || - primitiveType == "bytes22[]" || - primitiveType == "bytes23" || - primitiveType == "bytes23[]" || - primitiveType == "bytes24" || - primitiveType == "bytes24[]" || - primitiveType == "bytes25" || - primitiveType == "bytes25[]" || - primitiveType == "bytes26" || - primitiveType == "bytes26[]" || - primitiveType == "bytes27" || - primitiveType == "bytes27[]" || - primitiveType == "bytes28" || - primitiveType == "bytes28[]" || - primitiveType == "bytes29" || - primitiveType == "bytes29[]" || - primitiveType == "bytes30" || - primitiveType == "bytes30[]" || - primitiveType == "bytes31" || - primitiveType == "bytes31[]" || - primitiveType == "bytes32" || - primitiveType == "bytes32[]" { - return true - } - if primitiveType == "int" || - primitiveType == "int[]" || - primitiveType == "int8" || - primitiveType == "int8[]" || - primitiveType == "int16" || - primitiveType == "int16[]" || - primitiveType == "int32" || - primitiveType == "int32[]" || - primitiveType == "int64" || - primitiveType == "int64[]" || - primitiveType == "int128" || - primitiveType == "int128[]" || - primitiveType == "int256" || - primitiveType == "int256[]" { - return true - } - if primitiveType == "uint" || - primitiveType == "uint[]" || - primitiveType == "uint8" || - primitiveType == "uint8[]" || - primitiveType == "uint16" || - primitiveType == "uint16[]" || - primitiveType == "uint32" || - primitiveType == "uint32[]" || - primitiveType == "uint64" || - primitiveType == "uint64[]" || - primitiveType == "uint128" || - primitiveType == "uint128[]" || - primitiveType == "uint256" || - primitiveType == "uint256[]" { - return true - } - return false -} - -// validate checks if the given domain is valid, i.e. contains at least -// the minimum viable keys and values -func (domain *TypedDataDomain) validate() error { - if domain.ChainId == nil && len(domain.Name) == 0 && len(domain.Version) == 0 && len(domain.VerifyingContract) == 0 && len(domain.Salt) == 0 { - return errors.New("domain is undefined") - } - - return nil -} - -// Map is a helper function to generate a map version of the domain -func (domain *TypedDataDomain) Map() map[string]interface{} { - dataMap := map[string]interface{}{} - - if domain.ChainId != nil { - dataMap["chainId"] = domain.ChainId - } - - if len(domain.Name) > 0 { - dataMap["name"] = domain.Name - } - - if len(domain.Version) > 0 { - dataMap["version"] = domain.Version - } - - if len(domain.VerifyingContract) > 0 { - dataMap["verifyingContract"] = domain.VerifyingContract - } - - if len(domain.Salt) > 0 { - dataMap["salt"] = domain.Salt - } - return dataMap -} diff --git a/signer/core/signed_data_test.go b/signer/core/signed_data_test.go index 23b7b9897b..1d972d2961 100644 --- a/signer/core/signed_data_test.go +++ b/signer/core/signed_data_test.go @@ -32,9 +32,10 @@ import ( "github.com/ethereum/go-ethereum/common/math" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/signer/core" + "github.com/ethereum/go-ethereum/signer/core/apitypes" ) -var typesStandard = core.Types{ +var typesStandard = apitypes.Types{ "EIP712Domain": { { Name: "name", @@ -153,12 +154,12 @@ var jsonTypedData = ` const primaryType = "Mail" -var domainStandard = core.TypedDataDomain{ - "Ether Mail", - "1", - math.NewHexOrDecimal256(1), - "0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC", - "", +var domainStandard = apitypes.TypedDataDomain{ + Name: "Ether Mail", + Version: "1", + ChainId: math.NewHexOrDecimal256(1), + VerifyingContract: "0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC", + Salt: "", } var messageStandard = map[string]interface{}{ @@ -173,7 +174,7 @@ var messageStandard = map[string]interface{}{ "contents": "Hello, Bob!", } -var typedData = core.TypedData{ +var typedData = apitypes.TypedData{ Types: typesStandard, PrimaryType: primaryType, Domain: domainStandard, @@ -194,7 +195,7 @@ func TestSignData(t *testing.T) { control.approveCh <- "Y" control.inputCh <- "wrongpassword" - signature, err := api.SignData(context.Background(), core.TextPlain.Mime, a, hexutil.Encode([]byte("EHLO world"))) + signature, err := api.SignData(context.Background(), apitypes.TextPlain.Mime, a, hexutil.Encode([]byte("EHLO world"))) if signature != nil { t.Errorf("Expected nil-data, got %x", signature) } @@ -202,7 +203,7 @@ func TestSignData(t *testing.T) { t.Errorf("Expected ErrLocked! '%v'", err) } control.approveCh <- "No way" - signature, err = api.SignData(context.Background(), core.TextPlain.Mime, a, hexutil.Encode([]byte("EHLO world"))) + signature, err = api.SignData(context.Background(), apitypes.TextPlain.Mime, a, hexutil.Encode([]byte("EHLO world"))) if signature != nil { t.Errorf("Expected nil-data, got %x", signature) } @@ -212,7 +213,7 @@ func TestSignData(t *testing.T) { // text/plain control.approveCh <- "Y" control.inputCh <- "a_long_password" - signature, err = api.SignData(context.Background(), core.TextPlain.Mime, a, hexutil.Encode([]byte("EHLO world"))) + signature, err = api.SignData(context.Background(), apitypes.TextPlain.Mime, a, hexutil.Encode([]byte("EHLO world"))) if err != nil { t.Fatal(err) } @@ -232,13 +233,13 @@ func TestSignData(t *testing.T) { } func TestDomainChainId(t *testing.T) { - withoutChainID := core.TypedData{ - Types: core.Types{ - "EIP712Domain": []core.Type{ + withoutChainID := apitypes.TypedData{ + Types: apitypes.Types{ + "EIP712Domain": []apitypes.Type{ {Name: "name", Type: "string"}, }, }, - Domain: core.TypedDataDomain{ + Domain: apitypes.TypedDataDomain{ Name: "test", }, } @@ -250,14 +251,14 @@ func TestDomainChainId(t *testing.T) { if _, err := withoutChainID.HashStruct("EIP712Domain", withoutChainID.Domain.Map()); err != nil { t.Errorf("Expected the typedData to encode the domain successfully, got %v", err) } - withChainID := core.TypedData{ - Types: core.Types{ - "EIP712Domain": []core.Type{ + withChainID := apitypes.TypedData{ + Types: apitypes.Types{ + "EIP712Domain": []apitypes.Type{ {Name: "name", Type: "string"}, {Name: "chainId", Type: "uint256"}, }, }, - Domain: core.TypedDataDomain{ + Domain: apitypes.TypedDataDomain{ Name: "test", ChainId: math.NewHexOrDecimal256(1), }, @@ -323,7 +324,7 @@ func TestEncodeData(t *testing.T) { } func TestFormatter(t *testing.T) { - var d core.TypedData + var d apitypes.TypedData err := json.Unmarshal([]byte(jsonTypedData), &d) if err != nil { t.Fatalf("unmarshalling failed '%v'", err) @@ -337,7 +338,7 @@ func TestFormatter(t *testing.T) { t.Logf("'%v'\n", string(j)) } -func sign(typedData core.TypedData) ([]byte, []byte, error) { +func sign(typedData apitypes.TypedData) ([]byte, []byte, error) { domainSeparator, err := typedData.HashStruct("EIP712Domain", typedData.Domain.Map()) if err != nil { return nil, nil, err @@ -366,7 +367,7 @@ func TestJsonFiles(t *testing.T) { t.Errorf("Failed to read file %v: %v", fInfo.Name(), err) continue } - var typedData core.TypedData + var typedData apitypes.TypedData err = json.Unmarshal(data, &typedData) if err != nil { t.Errorf("Test %d, file %v, json unmarshalling failed: %v", i, fInfo.Name(), err) @@ -398,7 +399,7 @@ func TestFuzzerFiles(t *testing.T) { t.Errorf("Failed to read file %v: %v", fInfo.Name(), err) continue } - var typedData core.TypedData + var typedData apitypes.TypedData err = json.Unmarshal(data, &typedData) if err != nil { t.Errorf("Test %d, file %v, json unmarshalling failed: %v", i, fInfo.Name(), err) @@ -498,7 +499,7 @@ var gnosisTx = ` // TestGnosisTypedData tests the scenario where a user submits a full EIP-712 // struct without using the gnosis-specific endpoint func TestGnosisTypedData(t *testing.T) { - var td core.TypedData + var td apitypes.TypedData err := json.Unmarshal([]byte(gnosisTypedData), &td) if err != nil { t.Fatalf("unmarshalling failed '%v'", err) diff --git a/signer/rules/rules_test.go b/signer/rules/rules_test.go index d506ef2db0..0ab246eeaf 100644 --- a/signer/rules/rules_test.go +++ b/signer/rules/rules_test.go @@ -605,7 +605,7 @@ function ApproveSignData(r){ t.Logf("address %v %v\n", addr.String(), addr.Original()) - nvt := []*core.NameValueType{ + nvt := []*apitypes.NameValueType{ { Name: "message", Typ: "text/plain", diff --git a/tests/difficulty_test.go b/tests/difficulty_test.go index acbf96e712..192dff12cc 100644 --- a/tests/difficulty_test.go +++ b/tests/difficulty_test.go @@ -76,6 +76,9 @@ func TestDifficulty(t *testing.T) { dt.config("EIP2384", params.ChainConfig{ MuirGlacierBlock: big.NewInt(0), }) + dt.config("EIP4345", params.ChainConfig{ + ArrowGlacierBlock: big.NewInt(0), + }) dt.config("difficulty.json", mainnetChainConfig) dt.walk(t, difficultyTestDir, func(t *testing.T, name string, test *DifficultyTest) { diff --git a/tests/fuzzers/snap/debug/main.go b/tests/fuzzers/snap/debug/main.go new file mode 100644 index 0000000000..d0d1b49307 --- /dev/null +++ b/tests/fuzzers/snap/debug/main.go @@ -0,0 +1,39 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package main + +import ( + "fmt" + "io/ioutil" + "os" + + "github.com/ethereum/go-ethereum/tests/fuzzers/snap" +) + +func main() { + if len(os.Args) != 2 { + fmt.Fprintf(os.Stderr, "Usage: debug \n") + os.Exit(1) + } + crasher := os.Args[1] + data, err := ioutil.ReadFile(crasher) + if err != nil { + fmt.Fprintf(os.Stderr, "error loading crasher %v: %v", crasher, err) + os.Exit(1) + } + snap.FuzzTrieNodes(data) +} diff --git a/tests/fuzzers/snap/fuzz_handler.go b/tests/fuzzers/snap/fuzz_handler.go new file mode 100644 index 0000000000..1ae61df29d --- /dev/null +++ b/tests/fuzzers/snap/fuzz_handler.go @@ -0,0 +1,164 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package snap + +import ( + "bytes" + "encoding/binary" + "fmt" + "math/big" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/consensus/ethash" + "github.com/ethereum/go-ethereum/core" + "github.com/ethereum/go-ethereum/core/rawdb" + "github.com/ethereum/go-ethereum/core/vm" + "github.com/ethereum/go-ethereum/eth/protocols/snap" + "github.com/ethereum/go-ethereum/p2p" + "github.com/ethereum/go-ethereum/p2p/enode" + "github.com/ethereum/go-ethereum/params" + "github.com/ethereum/go-ethereum/rlp" + fuzz "github.com/google/gofuzz" +) + +var trieRoot common.Hash + +func getChain() *core.BlockChain { + db := rawdb.NewMemoryDatabase() + ga := make(core.GenesisAlloc, 1000) + var a = make([]byte, 20) + var mkStorage = func(k, v int) (common.Hash, common.Hash) { + var kB = make([]byte, 32) + var vB = make([]byte, 32) + binary.LittleEndian.PutUint64(kB, uint64(k)) + binary.LittleEndian.PutUint64(vB, uint64(v)) + return common.BytesToHash(kB), common.BytesToHash(vB) + } + storage := make(map[common.Hash]common.Hash) + for i := 0; i < 10; i++ { + k, v := mkStorage(i, i) + storage[k] = v + } + for i := 0; i < 1000; i++ { + binary.LittleEndian.PutUint64(a, uint64(i+0xff)) + acc := core.GenesisAccount{Balance: big.NewInt(int64(i))} + if i%2 == 1 { + acc.Storage = storage + } + ga[common.BytesToAddress(a)] = acc + } + gspec := core.Genesis{ + Config: params.TestChainConfig, + Alloc: ga, + } + genesis := gspec.MustCommit(db) + blocks, _ := core.GenerateChain(gspec.Config, genesis, ethash.NewFaker(), db, 2, + func(i int, gen *core.BlockGen) {}) + cacheConf := &core.CacheConfig{ + TrieCleanLimit: 0, + TrieDirtyLimit: 0, + TrieTimeLimit: 5 * time.Minute, + TrieCleanNoPrefetch: true, + TrieCleanRejournal: 0, + SnapshotLimit: 100, + SnapshotWait: true, + } + trieRoot = blocks[len(blocks)-1].Root() + bc, _ := core.NewBlockChain(db, cacheConf, gspec.Config, ethash.NewFaker(), vm.Config{}, nil, nil) + if _, err := bc.InsertChain(blocks); err != nil { + panic(err) + } + return bc +} + +type dummyBackend struct { + chain *core.BlockChain +} + +func (d *dummyBackend) Chain() *core.BlockChain { return d.chain } +func (d *dummyBackend) RunPeer(*snap.Peer, snap.Handler) error { return nil } +func (d *dummyBackend) PeerInfo(enode.ID) interface{} { return "Foo" } +func (d *dummyBackend) Handle(*snap.Peer, snap.Packet) error { return nil } + +type dummyRW struct { + code uint64 + data []byte + writeCount int +} + +func (d *dummyRW) ReadMsg() (p2p.Msg, error) { + return p2p.Msg{ + Code: d.code, + Payload: bytes.NewReader(d.data), + ReceivedAt: time.Now(), + Size: uint32(len(d.data)), + }, nil +} + +func (d *dummyRW) WriteMsg(msg p2p.Msg) error { + d.writeCount++ + return nil +} + +func doFuzz(input []byte, obj interface{}, code int) int { + if len(input) > 1024*4 { + return -1 + } + bc := getChain() + defer bc.Stop() + backend := &dummyBackend{bc} + fuzz.NewFromGoFuzz(input).Fuzz(obj) + var data []byte + switch p := obj.(type) { + case *snap.GetTrieNodesPacket: + p.Root = trieRoot + data, _ = rlp.EncodeToBytes(obj) + default: + data, _ = rlp.EncodeToBytes(obj) + } + cli := &dummyRW{ + code: uint64(code), + data: data, + } + peer := snap.NewFakePeer(65, "gazonk01", cli) + err := snap.HandleMessage(backend, peer) + switch { + case err == nil && cli.writeCount != 1: + panic(fmt.Sprintf("Expected 1 response, got %d", cli.writeCount)) + case err != nil && cli.writeCount != 0: + panic(fmt.Sprintf("Expected 0 response, got %d", cli.writeCount)) + } + return 1 +} + +// To run a fuzzer, do +// $ CGO_ENABLED=0 go-fuzz-build -func FuzzTrieNodes +// $ go-fuzz + +func FuzzARange(input []byte) int { + return doFuzz(input, &snap.GetAccountRangePacket{}, snap.GetAccountRangeMsg) +} +func FuzzSRange(input []byte) int { + return doFuzz(input, &snap.GetStorageRangesPacket{}, snap.GetStorageRangesMsg) +} +func FuzzByteCodes(input []byte) int { + return doFuzz(input, &snap.GetByteCodesPacket{}, snap.GetByteCodesMsg) +} +func FuzzTrieNodes(input []byte) int { + return doFuzz(input, &snap.GetTrieNodesPacket{}, snap.GetTrieNodesMsg) +} diff --git a/tests/init.go b/tests/init.go index b0a38e68b0..d6b5b3043d 100644 --- a/tests/init.go +++ b/tests/init.go @@ -151,6 +151,7 @@ var Forks = map[string]*params.ChainConfig{ ConstantinopleBlock: big.NewInt(0), PetersburgBlock: big.NewInt(0), IstanbulBlock: big.NewInt(0), + MuirGlacierBlock: big.NewInt(0), BerlinBlock: big.NewInt(0), }, "BerlinToLondonAt5": { @@ -163,6 +164,7 @@ var Forks = map[string]*params.ChainConfig{ ConstantinopleBlock: big.NewInt(0), PetersburgBlock: big.NewInt(0), IstanbulBlock: big.NewInt(0), + MuirGlacierBlock: big.NewInt(0), BerlinBlock: big.NewInt(0), LondonBlock: big.NewInt(5), }, @@ -176,10 +178,11 @@ var Forks = map[string]*params.ChainConfig{ ConstantinopleBlock: big.NewInt(0), PetersburgBlock: big.NewInt(0), IstanbulBlock: big.NewInt(0), + MuirGlacierBlock: big.NewInt(0), BerlinBlock: big.NewInt(0), LondonBlock: big.NewInt(0), }, - "Aleut": { + "ArrowGlacier": { ChainID: big.NewInt(1), HomesteadBlock: big.NewInt(0), EIP150Block: big.NewInt(0), @@ -189,8 +192,10 @@ var Forks = map[string]*params.ChainConfig{ ConstantinopleBlock: big.NewInt(0), PetersburgBlock: big.NewInt(0), IstanbulBlock: big.NewInt(0), + MuirGlacierBlock: big.NewInt(0), BerlinBlock: big.NewInt(0), LondonBlock: big.NewInt(0), + ArrowGlacierBlock: big.NewInt(0), }, } diff --git a/tests/solidity/contracts/OpCodes.sol b/tests/solidity/contracts/OpCodes.sol index 9e3a0ebb02..2a41a5fc28 100644 --- a/tests/solidity/contracts/OpCodes.sol +++ b/tests/solidity/contracts/OpCodes.sol @@ -206,7 +206,7 @@ contract OpCodes { assembly { let x := mload(0x40) //Find empty storage location using "free memory pointer" - mstore(x,sig) //Place signature at begining of empty storage + mstore(x,sig) //Place signature at beginning of empty storage mstore(add(x,0x04),a) // first address parameter. just after signature mstore(add(x,0x24),a) // 2nd address parameter - first padded. add 32 bytes (not 20 bytes) mstore(0x40,add(x,0x64)) // this is missing in other examples. Set free pointer before function call. so it is used by called function. @@ -225,7 +225,7 @@ contract OpCodes { //callcode assembly { let x := mload(0x40) //Find empty storage location using "free memory pointer" - mstore(x,sig) //Place signature at begining of empty storage + mstore(x,sig) //Place signature at beginning of empty storage mstore(add(x,0x04),a) // first address parameter. just after signature mstore(add(x,0x24),a) // 2nd address parameter - first padded. add 32 bytes (not 20 bytes) mstore(0x40,add(x,0x64)) // this is missing in other examples. Set free pointer before function call. so it is used by called function. @@ -244,7 +244,7 @@ contract OpCodes { //delegatecall assembly { let x := mload(0x40) //Find empty storage location using "free memory pointer" - mstore(x,sig) //Place signature at begining of empty storage + mstore(x,sig) //Place signature at beginning of empty storage mstore(add(x,0x04),a) // first address parameter. just after signature mstore(add(x,0x24),a) // 2nd address parameter - first padded. add 32 bytes (not 20 bytes) mstore(0x40,add(x,0x64)) // this is missing in other examples. Set free pointer before function call. so it is used by called function. diff --git a/tests/state_test.go b/tests/state_test.go index 9554e75630..78ecda0409 100644 --- a/tests/state_test.go +++ b/tests/state_test.go @@ -24,6 +24,7 @@ import ( "testing" "github.com/ethereum/go-ethereum/core/vm" + "github.com/ethereum/go-ethereum/eth/tracers/logger" ) func TestState(t *testing.T) { @@ -115,7 +116,7 @@ func withTrace(t *testing.T, gasLimit uint64, test func(vm.Config) error) { } buf := new(bytes.Buffer) w := bufio.NewWriter(buf) - tracer := vm.NewJSONLogger(&vm.LogConfig{}, w) + tracer := logger.NewJSONLogger(&logger.Config{}, w) config.Debug, config.Tracer = true, tracer err2 := test(config) if !reflect.DeepEqual(err, err2) { diff --git a/trie/database.go b/trie/database.go index f140a56642..58ca4e6f3c 100644 --- a/trie/database.go +++ b/trie/database.go @@ -794,8 +794,8 @@ type cleaner struct { // Put reacts to database writes and implements dirty data uncaching. This is the // post-processing step of a commit operation where the already persisted trie is // removed from the dirty cache and moved into the clean cache. The reason behind -// the two-phase commit is to ensure ensure data availability while moving from -// memory to disk. +// the two-phase commit is to ensure data availability while moving from memory +// to disk. func (c *cleaner) Put(key []byte, rlp []byte) error { hash := common.BytesToHash(key) diff --git a/trie/iterator.go b/trie/iterator.go index 406f216c22..654772aa13 100644 --- a/trie/iterator.go +++ b/trie/iterator.go @@ -275,7 +275,7 @@ func (it *nodeIterator) seek(prefix []byte) error { } } -// init initializes the the iterator. +// init initializes the iterator. func (it *nodeIterator) init() (*nodeIteratorState, error) { root := it.trie.Hash() state := &nodeIteratorState{node: it.trie.root, index: -1} diff --git a/trie/proof.go b/trie/proof.go index 08a9e40422..51ecea0c39 100644 --- a/trie/proof.go +++ b/trie/proof.go @@ -472,12 +472,17 @@ func VerifyRangeProof(rootHash common.Hash, firstKey []byte, lastKey []byte, key if len(keys) != len(values) { return false, fmt.Errorf("inconsistent proof data, keys: %d, values: %d", len(keys), len(values)) } - // Ensure the received batch is monotonic increasing. + // Ensure the received batch is monotonic increasing and contains no deletions for i := 0; i < len(keys)-1; i++ { if bytes.Compare(keys[i], keys[i+1]) >= 0 { return false, errors.New("range is not monotonically increasing") } } + for _, value := range values { + if len(value) == 0 { + return false, errors.New("range contains deletion") + } + } // Special case, there is no edge proof at all. The given range is expected // to be the whole leaf-set in the trie. if proof == nil { diff --git a/trie/proof_test.go b/trie/proof_test.go index a35b7144c0..95ad6169c3 100644 --- a/trie/proof_test.go +++ b/trie/proof_test.go @@ -813,6 +813,85 @@ func TestBloatedProof(t *testing.T) { } } +// TestEmptyValueRangeProof tests normal range proof with both edge proofs +// as the existent proof, but with an extra empty value included, which is a +// noop technically, but practically should be rejected. +func TestEmptyValueRangeProof(t *testing.T) { + trie, values := randomTrie(512) + var entries entrySlice + for _, kv := range values { + entries = append(entries, kv) + } + sort.Sort(entries) + + // Create a new entry with a slightly modified key + mid := len(entries) / 2 + key := common.CopyBytes(entries[mid-1].k) + for n := len(key) - 1; n >= 0; n-- { + if key[n] < 0xff { + key[n]++ + break + } + } + noop := &kv{key, []byte{}, false} + entries = append(append(append([]*kv{}, entries[:mid]...), noop), entries[mid:]...) + + start, end := 1, len(entries)-1 + + proof := memorydb.New() + if err := trie.Prove(entries[start].k, 0, proof); err != nil { + t.Fatalf("Failed to prove the first node %v", err) + } + if err := trie.Prove(entries[end-1].k, 0, proof); err != nil { + t.Fatalf("Failed to prove the last node %v", err) + } + var keys [][]byte + var vals [][]byte + for i := start; i < end; i++ { + keys = append(keys, entries[i].k) + vals = append(vals, entries[i].v) + } + _, err := VerifyRangeProof(trie.Hash(), keys[0], keys[len(keys)-1], keys, vals, proof) + if err == nil { + t.Fatalf("Expected failure on noop entry") + } +} + +// TestAllElementsEmptyValueRangeProof tests the range proof with all elements, +// but with an extra empty value included, which is a noop technically, but +// practically should be rejected. +func TestAllElementsEmptyValueRangeProof(t *testing.T) { + trie, values := randomTrie(512) + var entries entrySlice + for _, kv := range values { + entries = append(entries, kv) + } + sort.Sort(entries) + + // Create a new entry with a slightly modified key + mid := len(entries) / 2 + key := common.CopyBytes(entries[mid-1].k) + for n := len(key) - 1; n >= 0; n-- { + if key[n] < 0xff { + key[n]++ + break + } + } + noop := &kv{key, []byte{}, false} + entries = append(append(append([]*kv{}, entries[:mid]...), noop), entries[mid:]...) + + var keys [][]byte + var vals [][]byte + for i := 0; i < len(entries); i++ { + keys = append(keys, entries[i].k) + vals = append(vals, entries[i].v) + } + _, err := VerifyRangeProof(trie.Hash(), nil, nil, keys, vals, nil) + if err == nil { + t.Fatalf("Expected failure on noop entry") + } +} + // mutateByte changes one byte in b. func mutateByte(b []byte) { for r := mrand.Intn(len(b)); ; { diff --git a/trie/stacktrie.go b/trie/stacktrie.go index f9ff10b62d..76258c3112 100644 --- a/trie/stacktrie.go +++ b/trie/stacktrie.go @@ -54,12 +54,11 @@ func returnToPool(st *StackTrie) { // in order. Once it determines that a subtree will no longer be inserted // into, it will hash it and free up the memory it uses. type StackTrie struct { - nodeType uint8 // node type (as in branch, ext, leaf) - val []byte // value contained by this node if it's a leaf - key []byte // key chunk covered by this (full|ext) node - keyOffset int // offset of the key chunk inside a full key - children [16]*StackTrie // list of children (for fullnodes and exts) - db ethdb.KeyValueWriter // Pointer to the commit db, can be nil + nodeType uint8 // node type (as in branch, ext, leaf) + val []byte // value contained by this node if it's a leaf + key []byte // key chunk covered by this (leaf|ext) node + children [16]*StackTrie // list of children (for branch and exts) + db ethdb.KeyValueWriter // Pointer to the commit db, can be nil } // NewStackTrie allocates and initializes an empty trie. @@ -90,15 +89,13 @@ func (st *StackTrie) MarshalBinary() (data []byte, err error) { w = bufio.NewWriter(&b) ) if err := gob.NewEncoder(w).Encode(struct { - Nodetype uint8 - Val []byte - Key []byte - KeyOffset uint8 + Nodetype uint8 + Val []byte + Key []byte }{ st.nodeType, st.val, st.key, - uint8(st.keyOffset), }); err != nil { return nil, err } @@ -126,16 +123,14 @@ func (st *StackTrie) UnmarshalBinary(data []byte) error { func (st *StackTrie) unmarshalBinary(r io.Reader) error { var dec struct { - Nodetype uint8 - Val []byte - Key []byte - KeyOffset uint8 + Nodetype uint8 + Val []byte + Key []byte } gob.NewDecoder(r).Decode(&dec) st.nodeType = dec.Nodetype st.val = dec.Val st.key = dec.Key - st.keyOffset = int(dec.KeyOffset) var hasChild = make([]byte, 1) for i := range st.children { @@ -160,20 +155,18 @@ func (st *StackTrie) setDb(db ethdb.KeyValueWriter) { } } -func newLeaf(ko int, key, val []byte, db ethdb.KeyValueWriter) *StackTrie { +func newLeaf(key, val []byte, db ethdb.KeyValueWriter) *StackTrie { st := stackTrieFromPool(db) st.nodeType = leafNode - st.keyOffset = ko - st.key = append(st.key, key[ko:]...) + st.key = append(st.key, key...) st.val = val return st } -func newExt(ko int, key []byte, child *StackTrie, db ethdb.KeyValueWriter) *StackTrie { +func newExt(key []byte, child *StackTrie, db ethdb.KeyValueWriter) *StackTrie { st := stackTrieFromPool(db) st.nodeType = extNode - st.keyOffset = ko - st.key = append(st.key, key[ko:]...) + st.key = append(st.key, key...) st.children[0] = child return st } @@ -211,17 +204,18 @@ func (st *StackTrie) Reset() { st.children[i] = nil } st.nodeType = emptyNode - st.keyOffset = 0 } // Helper function that, given a full key, determines the index // at which the chunk pointed by st.keyOffset is different from // the same chunk in the full key. func (st *StackTrie) getDiffIndex(key []byte) int { - diffindex := 0 - for ; diffindex < len(st.key) && st.key[diffindex] == key[st.keyOffset+diffindex]; diffindex++ { + for idx, nibble := range st.key { + if nibble != key[idx] { + return idx + } } - return diffindex + return len(st.key) } // Helper function to that inserts a (key, value) pair into @@ -229,7 +223,7 @@ func (st *StackTrie) getDiffIndex(key []byte) int { func (st *StackTrie) insert(key, value []byte) { switch st.nodeType { case branchNode: /* Branch */ - idx := int(key[st.keyOffset]) + idx := int(key[0]) // Unresolve elder siblings for i := idx - 1; i >= 0; i-- { if st.children[i] != nil { @@ -241,10 +235,10 @@ func (st *StackTrie) insert(key, value []byte) { } // Add new child if st.children[idx] == nil { - st.children[idx] = stackTrieFromPool(st.db) - st.children[idx].keyOffset = st.keyOffset + 1 + st.children[idx] = newLeaf(key[1:], value, st.db) + } else { + st.children[idx].insert(key[1:], value) } - st.children[idx].insert(key, value) case extNode: /* Ext */ // Compare both key chunks and see where they differ diffidx := st.getDiffIndex(key) @@ -257,7 +251,7 @@ func (st *StackTrie) insert(key, value []byte) { if diffidx == len(st.key) { // Ext key and key segment are identical, recurse into // the child node. - st.children[0].insert(key, value) + st.children[0].insert(key[diffidx:], value) return } // Save the original part. Depending if the break is @@ -266,7 +260,7 @@ func (st *StackTrie) insert(key, value []byte) { // node directly. var n *StackTrie if diffidx < len(st.key)-1 { - n = newExt(diffidx+1, st.key, st.children[0], st.db) + n = newExt(st.key[diffidx+1:], st.children[0], st.db) } else { // Break on the last byte, no need to insert // an extension node: reuse the current node @@ -288,15 +282,14 @@ func (st *StackTrie) insert(key, value []byte) { // node. st.children[0] = stackTrieFromPool(st.db) st.children[0].nodeType = branchNode - st.children[0].keyOffset = st.keyOffset + diffidx p = st.children[0] } // Create a leaf for the inserted part - o := newLeaf(st.keyOffset+diffidx+1, key, value, st.db) + o := newLeaf(key[diffidx+1:], value, st.db) // Insert both child leaves where they belong: origIdx := st.key[diffidx] - newIdx := key[diffidx+st.keyOffset] + newIdx := key[diffidx] p.children[origIdx] = n p.children[newIdx] = o st.key = st.key[:diffidx] @@ -330,7 +323,6 @@ func (st *StackTrie) insert(key, value []byte) { st.nodeType = extNode st.children[0] = NewStackTrie(st.db) st.children[0].nodeType = branchNode - st.children[0].keyOffset = st.keyOffset + diffidx p = st.children[0] } @@ -339,11 +331,11 @@ func (st *StackTrie) insert(key, value []byte) { // The child leave will be hashed directly in order to // free up some memory. origIdx := st.key[diffidx] - p.children[origIdx] = newLeaf(diffidx+1, st.key, st.val, st.db) + p.children[origIdx] = newLeaf(st.key[diffidx+1:], st.val, st.db) p.children[origIdx].hash() - newIdx := key[diffidx+st.keyOffset] - p.children[newIdx] = newLeaf(p.keyOffset+1, key, value, st.db) + newIdx := key[diffidx] + p.children[newIdx] = newLeaf(key[diffidx+1:], value, st.db) // Finally, cut off the key part that has been passed // over to the children. @@ -351,7 +343,7 @@ func (st *StackTrie) insert(key, value []byte) { st.val = nil case emptyNode: /* Empty */ st.nodeType = leafNode - st.key = key[st.keyOffset:] + st.key = key st.val = value case hashedNode: panic("trying to insert into hash") diff --git a/trie/stacktrie_test.go b/trie/stacktrie_test.go index bd2574d5d1..fb39e42525 100644 --- a/trie/stacktrie_test.go +++ b/trie/stacktrie_test.go @@ -26,6 +26,166 @@ import ( "github.com/ethereum/go-ethereum/ethdb/memorydb" ) +func TestStackTrieInsertAndHash(t *testing.T) { + type KeyValueHash struct { + K string // Hex string for key. + V string // Value, directly converted to bytes. + H string // Expected root hash after insert of (K, V) to an existing trie. + } + tests := [][]KeyValueHash{ + { // {0:0, 7:0, f:0} + {"00", "v_______________________0___0", "5cb26357b95bb9af08475be00243ceb68ade0b66b5cd816b0c18a18c612d2d21"}, + {"70", "v_______________________0___1", "8ff64309574f7a437a7ad1628e690eb7663cfde10676f8a904a8c8291dbc1603"}, + {"f0", "v_______________________0___2", "9e3a01bd8d43efb8e9d4b5506648150b8e3ed1caea596f84ee28e01a72635470"}, + }, + { // {1:0cc, e:{1:fc, e:fc}} + {"10cc", "v_______________________1___0", "233e9b257843f3dfdb1cce6676cdaf9e595ac96ee1b55031434d852bc7ac9185"}, + {"e1fc", "v_______________________1___1", "39c5e908ae83d0c78520c7c7bda0b3782daf594700e44546e93def8f049cca95"}, + {"eefc", "v_______________________1___2", "d789567559fd76fe5b7d9cc42f3750f942502ac1c7f2a466e2f690ec4b6c2a7c"}, + }, + { // {b:{a:ac, b:ac}, d:acc} + {"baac", "v_______________________2___0", "8be1c86ba7ec4c61e14c1a9b75055e0464c2633ae66a055a24e75450156a5d42"}, + {"bbac", "v_______________________2___1", "8495159b9895a7d88d973171d737c0aace6fe6ac02a4769fff1bc43bcccce4cc"}, + {"dacc", "v_______________________2___2", "9bcfc5b220a27328deb9dc6ee2e3d46c9ebc9c69e78acda1fa2c7040602c63ca"}, + }, + { // {0:0cccc, 2:456{0:0, 2:2} + {"00cccc", "v_______________________3___0", "e57dc2785b99ce9205080cb41b32ebea7ac3e158952b44c87d186e6d190a6530"}, + {"245600", "v_______________________3___1", "0335354adbd360a45c1871a842452287721b64b4234dfe08760b243523c998db"}, + {"245622", "v_______________________3___2", "9e6832db0dca2b5cf81c0e0727bfde6afc39d5de33e5720bccacc183c162104e"}, + }, + { // {1:4567{1:1c, 3:3c}, 3:0cccccc} + {"1456711c", "v_______________________4___0", "f2389e78d98fed99f3e63d6d1623c1d4d9e8c91cb1d585de81fbc7c0e60d3529"}, + {"1456733c", "v_______________________4___1", "101189b3fab852be97a0120c03d95eefcf984d3ed639f2328527de6def55a9c0"}, + {"30cccccc", "v_______________________4___2", "3780ce111f98d15751dfde1eb21080efc7d3914b429e5c84c64db637c55405b3"}, + }, + { // 8800{1:f, 2:e, 3:d} + {"88001f", "v_______________________5___0", "e817db50d84f341d443c6f6593cafda093fc85e773a762421d47daa6ac993bd5"}, + {"88002e", "v_______________________5___1", "d6e3e6047bdc110edd296a4d63c030aec451bee9d8075bc5a198eee8cda34f68"}, + {"88003d", "v_______________________5___2", "b6bdf8298c703342188e5f7f84921a402042d0e5fb059969dd53a6b6b1fb989e"}, + }, + { // 0{1:fc, 2:ec, 4:dc} + {"01fc", "v_______________________6___0", "693268f2ca80d32b015f61cd2c4dba5a47a6b52a14c34f8e6945fad684e7a0d5"}, + {"02ec", "v_______________________6___1", "e24ddd44469310c2b785a2044618874bf486d2f7822603a9b8dce58d6524d5de"}, + {"04dc", "v_______________________6___2", "33fc259629187bbe54b92f82f0cd8083b91a12e41a9456b84fc155321e334db7"}, + }, + { // f{0:fccc, f:ff{0:f, f:f}} + {"f0fccc", "v_______________________7___0", "b0966b5aa469a3e292bc5fcfa6c396ae7a657255eef552ea7e12f996de795b90"}, + {"ffff0f", "v_______________________7___1", "3b1ca154ec2a3d96d8d77bddef0abfe40a53a64eb03cecf78da9ec43799fa3d0"}, + {"ffffff", "v_______________________7___2", "e75463041f1be8252781be0ace579a44ea4387bf5b2739f4607af676f7719678"}, + }, + { // ff{0:f{0:f, f:f}, f:fcc} + {"ff0f0f", "v_______________________8___0", "0928af9b14718ec8262ab89df430f1e5fbf66fac0fed037aff2b6767ae8c8684"}, + {"ff0fff", "v_______________________8___1", "d870f4d3ce26b0bf86912810a1960693630c20a48ba56be0ad04bc3e9ddb01e6"}, + {"ffffcc", "v_______________________8___2", "4239f10dd9d9915ecf2e047d6a576bdc1733ed77a30830f1bf29deaf7d8e966f"}, + }, + { + {"123d", "x___________________________0", "fc453d88b6f128a77c448669710497380fa4588abbea9f78f4c20c80daa797d0"}, + {"123e", "x___________________________1", "5af48f2d8a9a015c1ff7fa8b8c7f6b676233bd320e8fb57fd7933622badd2cec"}, + {"123f", "x___________________________2", "1164d7299964e74ac40d761f9189b2a3987fae959800d0f7e29d3aaf3eae9e15"}, + }, + { + {"123d", "x___________________________0", "fc453d88b6f128a77c448669710497380fa4588abbea9f78f4c20c80daa797d0"}, + {"123e", "x___________________________1", "5af48f2d8a9a015c1ff7fa8b8c7f6b676233bd320e8fb57fd7933622badd2cec"}, + {"124a", "x___________________________2", "661a96a669869d76b7231380da0649d013301425fbea9d5c5fae6405aa31cfce"}, + }, + { + {"123d", "x___________________________0", "fc453d88b6f128a77c448669710497380fa4588abbea9f78f4c20c80daa797d0"}, + {"123e", "x___________________________1", "5af48f2d8a9a015c1ff7fa8b8c7f6b676233bd320e8fb57fd7933622badd2cec"}, + {"13aa", "x___________________________2", "6590120e1fd3ffd1a90e8de5bb10750b61079bb0776cca4414dd79a24e4d4356"}, + }, + { + {"123d", "x___________________________0", "fc453d88b6f128a77c448669710497380fa4588abbea9f78f4c20c80daa797d0"}, + {"123e", "x___________________________1", "5af48f2d8a9a015c1ff7fa8b8c7f6b676233bd320e8fb57fd7933622badd2cec"}, + {"2aaa", "x___________________________2", "f869b40e0c55eace1918332ef91563616fbf0755e2b946119679f7ef8e44b514"}, + }, + { + {"1234da", "x___________________________0", "1c4b4462e9f56a80ca0f5d77c0d632c41b0102290930343cf1791e971a045a79"}, + {"1234ea", "x___________________________1", "2f502917f3ba7d328c21c8b45ee0f160652e68450332c166d4ad02d1afe31862"}, + {"1234fa", "x___________________________2", "4f4e368ab367090d5bc3dbf25f7729f8bd60df84de309b4633a6b69ab66142c0"}, + }, + { + {"1234da", "x___________________________0", "1c4b4462e9f56a80ca0f5d77c0d632c41b0102290930343cf1791e971a045a79"}, + {"1234ea", "x___________________________1", "2f502917f3ba7d328c21c8b45ee0f160652e68450332c166d4ad02d1afe31862"}, + {"1235aa", "x___________________________2", "21840121d11a91ac8bbad9a5d06af902a5c8d56a47b85600ba813814b7bfcb9b"}, + }, + { + {"1234da", "x___________________________0", "1c4b4462e9f56a80ca0f5d77c0d632c41b0102290930343cf1791e971a045a79"}, + {"1234ea", "x___________________________1", "2f502917f3ba7d328c21c8b45ee0f160652e68450332c166d4ad02d1afe31862"}, + {"124aaa", "x___________________________2", "ea4040ddf6ae3fbd1524bdec19c0ab1581015996262006632027fa5cf21e441e"}, + }, + { + {"1234da", "x___________________________0", "1c4b4462e9f56a80ca0f5d77c0d632c41b0102290930343cf1791e971a045a79"}, + {"1234ea", "x___________________________1", "2f502917f3ba7d328c21c8b45ee0f160652e68450332c166d4ad02d1afe31862"}, + {"13aaaa", "x___________________________2", "e4beb66c67e44f2dd8ba36036e45a44ff68f8d52942472b1911a45f886a34507"}, + }, + { + {"1234da", "x___________________________0", "1c4b4462e9f56a80ca0f5d77c0d632c41b0102290930343cf1791e971a045a79"}, + {"1234ea", "x___________________________1", "2f502917f3ba7d328c21c8b45ee0f160652e68450332c166d4ad02d1afe31862"}, + {"2aaaaa", "x___________________________2", "5f5989b820ff5d76b7d49e77bb64f26602294f6c42a1a3becc669cd9e0dc8ec9"}, + }, + { + {"000000", "x___________________________0", "3b32b7af0bddc7940e7364ee18b5a59702c1825e469452c8483b9c4e0218b55a"}, + {"1234da", "x___________________________1", "3ab152a1285dca31945566f872c1cc2f17a770440eda32aeee46a5e91033dde2"}, + {"1234ea", "x___________________________2", "0cccc87f96ddef55563c1b3be3c64fff6a644333c3d9cd99852cb53b6412b9b8"}, + {"1234fa", "x___________________________3", "65bb3aafea8121111d693ffe34881c14d27b128fd113fa120961f251fe28428d"}, + }, + { + {"000000", "x___________________________0", "3b32b7af0bddc7940e7364ee18b5a59702c1825e469452c8483b9c4e0218b55a"}, + {"1234da", "x___________________________1", "3ab152a1285dca31945566f872c1cc2f17a770440eda32aeee46a5e91033dde2"}, + {"1234ea", "x___________________________2", "0cccc87f96ddef55563c1b3be3c64fff6a644333c3d9cd99852cb53b6412b9b8"}, + {"1235aa", "x___________________________3", "f670e4d2547c533c5f21e0045442e2ecb733f347ad6d29ef36e0f5ba31bb11a8"}, + }, + { + {"000000", "x___________________________0", "3b32b7af0bddc7940e7364ee18b5a59702c1825e469452c8483b9c4e0218b55a"}, + {"1234da", "x___________________________1", "3ab152a1285dca31945566f872c1cc2f17a770440eda32aeee46a5e91033dde2"}, + {"1234ea", "x___________________________2", "0cccc87f96ddef55563c1b3be3c64fff6a644333c3d9cd99852cb53b6412b9b8"}, + {"124aaa", "x___________________________3", "c17464123050a9a6f29b5574bb2f92f6d305c1794976b475b7fb0316b6335598"}, + }, + { + {"000000", "x___________________________0", "3b32b7af0bddc7940e7364ee18b5a59702c1825e469452c8483b9c4e0218b55a"}, + {"1234da", "x___________________________1", "3ab152a1285dca31945566f872c1cc2f17a770440eda32aeee46a5e91033dde2"}, + {"1234ea", "x___________________________2", "0cccc87f96ddef55563c1b3be3c64fff6a644333c3d9cd99852cb53b6412b9b8"}, + {"13aaaa", "x___________________________3", "aa8301be8cb52ea5cd249f5feb79fb4315ee8de2140c604033f4b3fff78f0105"}, + }, + { + {"0000", "x___________________________0", "cb8c09ad07ae882136f602b3f21f8733a9f5a78f1d2525a8d24d1c13258000b2"}, + {"123d", "x___________________________1", "8f09663deb02f08958136410dc48565e077f76bb6c9d8c84d35fc8913a657d31"}, + {"123e", "x___________________________2", "0d230561e398c579e09a9f7b69ceaf7d3970f5a436fdb28b68b7a37c5bdd6b80"}, + {"123f", "x___________________________3", "80f7bad1893ca57e3443bb3305a517723a74d3ba831bcaca22a170645eb7aafb"}, + }, + { + {"0000", "x___________________________0", "cb8c09ad07ae882136f602b3f21f8733a9f5a78f1d2525a8d24d1c13258000b2"}, + {"123d", "x___________________________1", "8f09663deb02f08958136410dc48565e077f76bb6c9d8c84d35fc8913a657d31"}, + {"123e", "x___________________________2", "0d230561e398c579e09a9f7b69ceaf7d3970f5a436fdb28b68b7a37c5bdd6b80"}, + {"124a", "x___________________________3", "383bc1bb4f019e6bc4da3751509ea709b58dd1ac46081670834bae072f3e9557"}, + }, + { + {"0000", "x___________________________0", "cb8c09ad07ae882136f602b3f21f8733a9f5a78f1d2525a8d24d1c13258000b2"}, + {"123d", "x___________________________1", "8f09663deb02f08958136410dc48565e077f76bb6c9d8c84d35fc8913a657d31"}, + {"123e", "x___________________________2", "0d230561e398c579e09a9f7b69ceaf7d3970f5a436fdb28b68b7a37c5bdd6b80"}, + {"13aa", "x___________________________3", "ff0dc70ce2e5db90ee42a4c2ad12139596b890e90eb4e16526ab38fa465b35cf"}, + }, + } + st := NewStackTrie(nil) + for i, test := range tests { + // The StackTrie does not allow Insert(), Hash(), Insert(), ... + // so we will create new trie for every sequence length of inserts. + for l := 1; l <= len(test); l++ { + st.Reset() + for j := 0; j < l; j++ { + kv := &test[j] + if err := st.TryUpdate(common.FromHex(kv.K), []byte(kv.V)); err != nil { + t.Fatal(err) + } + } + expected := common.HexToHash(test[l-1].H) + if h := st.Hash(); h != expected { + t.Errorf("%d(%d): root hash mismatch: %x, expected %x", i, l, h, expected) + } + } + } +} + func TestSizeBug(t *testing.T) { st := NewStackTrie(nil) nt, _ := New(common.Hash{}, NewDatabase(memorydb.New())) diff --git a/trie/sync.go b/trie/sync.go index 3a6076ff8f..81d38ee3a6 100644 --- a/trie/sync.go +++ b/trie/sync.go @@ -128,11 +128,10 @@ type Sync struct { codeReqs map[common.Hash]*request // Pending requests pertaining to a code hash queue *prque.Prque // Priority queue with the pending requests fetches map[int]int // Number of active fetches per trie node depth - bloom *SyncBloom // Bloom filter for fast state existence checks } // NewSync creates a new trie data download scheduler. -func NewSync(root common.Hash, database ethdb.KeyValueReader, callback LeafCallback, bloom *SyncBloom) *Sync { +func NewSync(root common.Hash, database ethdb.KeyValueReader, callback LeafCallback) *Sync { ts := &Sync{ database: database, membatch: newSyncMemBatch(), @@ -140,7 +139,6 @@ func NewSync(root common.Hash, database ethdb.KeyValueReader, callback LeafCallb codeReqs: make(map[common.Hash]*request), queue: prque.New(nil), fetches: make(map[int]int), - bloom: bloom, } ts.AddSubTrie(root, nil, common.Hash{}, callback) return ts @@ -155,16 +153,11 @@ func (s *Sync) AddSubTrie(root common.Hash, path []byte, parent common.Hash, cal if s.membatch.hasNode(root) { return } - if s.bloom == nil || s.bloom.Contains(root[:]) { - // Bloom filter says this might be a duplicate, double check. - // If database says yes, then at least the trie node is present - // and we hold the assumption that it's NOT legacy contract code. - blob := rawdb.ReadTrieNode(s.database, root) - if len(blob) > 0 { - return - } - // False positive, bump fault meter - bloomFaultMeter.Mark(1) + // If database says this is a duplicate, then at least the trie node is + // present, and we hold the assumption that it's NOT legacy contract code. + blob := rawdb.ReadTrieNode(s.database, root) + if len(blob) > 0 { + return } // Assemble the new sub-trie sync request req := &request{ @@ -195,18 +188,13 @@ func (s *Sync) AddCodeEntry(hash common.Hash, path []byte, parent common.Hash) { if s.membatch.hasCode(hash) { return } - if s.bloom == nil || s.bloom.Contains(hash[:]) { - // Bloom filter says this might be a duplicate, double check. - // If database says yes, the blob is present for sure. - // Note we only check the existence with new code scheme, fast - // sync is expected to run with a fresh new node. Even there - // exists the code with legacy format, fetch and store with - // new scheme anyway. - if blob := rawdb.ReadCodeWithPrefix(s.database, hash); len(blob) > 0 { - return - } - // False positive, bump fault meter - bloomFaultMeter.Mark(1) + // If database says duplicate, the blob is present for sure. + // Note we only check the existence with new code scheme, fast + // sync is expected to run with a fresh new node. Even there + // exists the code with legacy format, fetch and store with + // new scheme anyway. + if blob := rawdb.ReadCodeWithPrefix(s.database, hash); len(blob) > 0 { + return } // Assemble the new sub-trie sync request req := &request{ @@ -236,7 +224,7 @@ func (s *Sync) Missing(max int) (nodes []common.Hash, paths []SyncPath, codes [] codeHashes []common.Hash ) for !s.queue.Empty() && (max == 0 || len(nodeHashes)+len(codeHashes) < max) { - // Retrieve th enext item in line + // Retrieve the next item in line item, prio := s.queue.Peek() // If we have too many already-pending tasks for this depth, throttle @@ -313,15 +301,9 @@ func (s *Sync) Commit(dbw ethdb.Batch) error { // Dump the membatch into a database dbw for key, value := range s.membatch.nodes { rawdb.WriteTrieNode(dbw, key, value) - if s.bloom != nil { - s.bloom.Add(key[:]) - } } for key, value := range s.membatch.codes { rawdb.WriteCode(dbw, key, value) - if s.bloom != nil { - s.bloom.Add(key[:]) - } } // Drop the membatch data and return s.membatch = newSyncMemBatch() @@ -417,15 +399,10 @@ func (s *Sync) children(req *request, object node) ([]*request, error) { if s.membatch.hasNode(hash) { continue } - if s.bloom == nil || s.bloom.Contains(node) { - // Bloom filter says this might be a duplicate, double check. - // If database says yes, then at least the trie node is present - // and we hold the assumption that it's NOT legacy contract code. - if blob := rawdb.ReadTrieNode(s.database, hash); len(blob) > 0 { - continue - } - // False positive, bump fault meter - bloomFaultMeter.Mark(1) + // If database says duplicate, then at least the trie node is present + // and we hold the assumption that it's NOT legacy contract code. + if blob := rawdb.ReadTrieNode(s.database, hash); len(blob) > 0 { + continue } // Locally unknown node, schedule for retrieval requests = append(requests, &request{ diff --git a/trie/sync_bloom.go b/trie/sync_bloom.go deleted file mode 100644 index 91e5e6711d..0000000000 --- a/trie/sync_bloom.go +++ /dev/null @@ -1,191 +0,0 @@ -// Copyright 2019 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package trie - -import ( - "encoding/binary" - "fmt" - "sync" - "sync/atomic" - "time" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/rawdb" - "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/metrics" - bloomfilter "github.com/holiman/bloomfilter/v2" -) - -var ( - bloomAddMeter = metrics.NewRegisteredMeter("trie/bloom/add", nil) - bloomLoadMeter = metrics.NewRegisteredMeter("trie/bloom/load", nil) - bloomTestMeter = metrics.NewRegisteredMeter("trie/bloom/test", nil) - bloomMissMeter = metrics.NewRegisteredMeter("trie/bloom/miss", nil) - bloomFaultMeter = metrics.NewRegisteredMeter("trie/bloom/fault", nil) - bloomErrorGauge = metrics.NewRegisteredGauge("trie/bloom/error", nil) -) - -// SyncBloom is a bloom filter used during fast sync to quickly decide if a trie -// node or contract code already exists on disk or not. It self populates from the -// provided disk database on creation in a background thread and will only start -// returning live results once that's finished. -type SyncBloom struct { - bloom *bloomfilter.Filter - inited uint32 - closer sync.Once - closed uint32 - pend sync.WaitGroup - closeCh chan struct{} -} - -// NewSyncBloom creates a new bloom filter of the given size (in megabytes) and -// initializes it from the database. The bloom is hard coded to use 3 filters. -func NewSyncBloom(memory uint64, database ethdb.Iteratee) *SyncBloom { - // Create the bloom filter to track known trie nodes - bloom, err := bloomfilter.New(memory*1024*1024*8, 4) - if err != nil { - panic(fmt.Sprintf("failed to create bloom: %v", err)) - } - log.Info("Allocated fast sync bloom", "size", common.StorageSize(memory*1024*1024)) - - // Assemble the fast sync bloom and init it from previous sessions - b := &SyncBloom{ - bloom: bloom, - closeCh: make(chan struct{}), - } - b.pend.Add(2) - go func() { - defer b.pend.Done() - b.init(database) - }() - go func() { - defer b.pend.Done() - b.meter() - }() - return b -} - -// init iterates over the database, pushing every trie hash into the bloom filter. -func (b *SyncBloom) init(database ethdb.Iteratee) { - // Iterate over the database, but restart every now and again to avoid holding - // a persistent snapshot since fast sync can push a ton of data concurrently, - // bloating the disk. - // - // Note, this is fine, because everything inserted into leveldb by fast sync is - // also pushed into the bloom directly, so we're not missing anything when the - // iterator is swapped out for a new one. - it := database.NewIterator(nil, nil) - - var ( - start = time.Now() - swap = time.Now() - ) - for it.Next() && atomic.LoadUint32(&b.closed) == 0 { - // If the database entry is a trie node, add it to the bloom - key := it.Key() - if len(key) == common.HashLength { - b.bloom.AddHash(binary.BigEndian.Uint64(key)) - bloomLoadMeter.Mark(1) - } else if ok, hash := rawdb.IsCodeKey(key); ok { - // If the database entry is a contract code, add it to the bloom - b.bloom.AddHash(binary.BigEndian.Uint64(hash)) - bloomLoadMeter.Mark(1) - } - // If enough time elapsed since the last iterator swap, restart - if time.Since(swap) > 8*time.Second { - key := common.CopyBytes(it.Key()) - - it.Release() - it = database.NewIterator(nil, key) - - log.Info("Initializing state bloom", "items", b.bloom.N(), "errorrate", b.bloom.FalsePosititveProbability(), "elapsed", common.PrettyDuration(time.Since(start))) - swap = time.Now() - } - } - it.Release() - - // Mark the bloom filter inited and return - log.Info("Initialized state bloom", "items", b.bloom.N(), "errorrate", b.bloom.FalsePosititveProbability(), "elapsed", common.PrettyDuration(time.Since(start))) - atomic.StoreUint32(&b.inited, 1) -} - -// meter periodically recalculates the false positive error rate of the bloom -// filter and reports it in a metric. -func (b *SyncBloom) meter() { - // check every second - tick := time.NewTicker(1 * time.Second) - defer tick.Stop() - - for { - select { - case <-tick.C: - // Report the current error ration. No floats, lame, scale it up. - bloomErrorGauge.Update(int64(b.bloom.FalsePosititveProbability() * 100000)) - case <-b.closeCh: - return - } - } -} - -// Close terminates any background initializer still running and releases all the -// memory allocated for the bloom. -func (b *SyncBloom) Close() error { - b.closer.Do(func() { - // Ensure the initializer is stopped - atomic.StoreUint32(&b.closed, 1) - close(b.closeCh) - b.pend.Wait() - - // Wipe the bloom, but mark it "uninited" just in case someone attempts an access - log.Info("Deallocated state bloom", "items", b.bloom.N(), "errorrate", b.bloom.FalsePosititveProbability()) - - atomic.StoreUint32(&b.inited, 0) - b.bloom = nil - }) - return nil -} - -// Add inserts a new trie node hash into the bloom filter. -func (b *SyncBloom) Add(hash []byte) { - if atomic.LoadUint32(&b.closed) == 1 { - return - } - b.bloom.AddHash(binary.BigEndian.Uint64(hash)) - bloomAddMeter.Mark(1) -} - -// Contains tests if the bloom filter contains the given hash: -// - false: the bloom definitely does not contain hash -// - true: the bloom maybe contains hash -// -// While the bloom is being initialized, any query will return true. -func (b *SyncBloom) Contains(hash []byte) bool { - bloomTestMeter.Mark(1) - if atomic.LoadUint32(&b.inited) == 0 { - // We didn't load all the trie nodes from the previous run of Geth yet. As - // such, we can't say for sure if a hash is not present for anything. Until - // the init is done, we're faking "possible presence" for everything. - return true - } - // Bloom initialized, check the real one and report any successful misses - maybe := b.bloom.ContainsHash(binary.BigEndian.Uint64(hash)) - if !maybe { - bloomMissMeter.Mark(1) - } - return maybe -} diff --git a/trie/sync_test.go b/trie/sync_test.go index cb3283875d..970730b671 100644 --- a/trie/sync_test.go +++ b/trie/sync_test.go @@ -95,7 +95,7 @@ func TestEmptySync(t *testing.T) { emptyB, _ := New(emptyRoot, dbB) for i, trie := range []*Trie{emptyA, emptyB} { - sync := NewSync(trie.Hash(), memorydb.New(), nil, NewSyncBloom(1, memorydb.New())) + sync := NewSync(trie.Hash(), memorydb.New(), nil) if nodes, paths, codes := sync.Missing(1); len(nodes) != 0 || len(paths) != 0 || len(codes) != 0 { t.Errorf("test %d: content requested for empty trie: %v, %v, %v", i, nodes, paths, codes) } @@ -116,7 +116,7 @@ func testIterativeSync(t *testing.T, count int, bypath bool) { // Create a destination trie and sync with the scheduler diskdb := memorydb.New() triedb := NewDatabase(diskdb) - sched := NewSync(srcTrie.Hash(), diskdb, nil, NewSyncBloom(1, diskdb)) + sched := NewSync(srcTrie.Hash(), diskdb, nil) nodes, paths, codes := sched.Missing(count) var ( @@ -177,7 +177,7 @@ func TestIterativeDelayedSync(t *testing.T) { // Create a destination trie and sync with the scheduler diskdb := memorydb.New() triedb := NewDatabase(diskdb) - sched := NewSync(srcTrie.Hash(), diskdb, nil, NewSyncBloom(1, diskdb)) + sched := NewSync(srcTrie.Hash(), diskdb, nil) nodes, _, codes := sched.Missing(10000) queue := append(append([]common.Hash{}, nodes...), codes...) @@ -223,7 +223,7 @@ func testIterativeRandomSync(t *testing.T, count int) { // Create a destination trie and sync with the scheduler diskdb := memorydb.New() triedb := NewDatabase(diskdb) - sched := NewSync(srcTrie.Hash(), diskdb, nil, NewSyncBloom(1, diskdb)) + sched := NewSync(srcTrie.Hash(), diskdb, nil) queue := make(map[common.Hash]struct{}) nodes, _, codes := sched.Missing(count) @@ -271,7 +271,7 @@ func TestIterativeRandomDelayedSync(t *testing.T) { // Create a destination trie and sync with the scheduler diskdb := memorydb.New() triedb := NewDatabase(diskdb) - sched := NewSync(srcTrie.Hash(), diskdb, nil, NewSyncBloom(1, diskdb)) + sched := NewSync(srcTrie.Hash(), diskdb, nil) queue := make(map[common.Hash]struct{}) nodes, _, codes := sched.Missing(10000) @@ -324,7 +324,7 @@ func TestDuplicateAvoidanceSync(t *testing.T) { // Create a destination trie and sync with the scheduler diskdb := memorydb.New() triedb := NewDatabase(diskdb) - sched := NewSync(srcTrie.Hash(), diskdb, nil, NewSyncBloom(1, diskdb)) + sched := NewSync(srcTrie.Hash(), diskdb, nil) nodes, _, codes := sched.Missing(0) queue := append(append([]common.Hash{}, nodes...), codes...) @@ -371,7 +371,7 @@ func TestIncompleteSync(t *testing.T) { // Create a destination trie and sync with the scheduler diskdb := memorydb.New() triedb := NewDatabase(diskdb) - sched := NewSync(srcTrie.Hash(), diskdb, nil, NewSyncBloom(1, diskdb)) + sched := NewSync(srcTrie.Hash(), diskdb, nil) var added []common.Hash @@ -431,7 +431,7 @@ func TestSyncOrdering(t *testing.T) { // Create a destination trie and sync with the scheduler, tracking the requests diskdb := memorydb.New() triedb := NewDatabase(diskdb) - sched := NewSync(srcTrie.Hash(), diskdb, nil, NewSyncBloom(1, diskdb)) + sched := NewSync(srcTrie.Hash(), diskdb, nil) nodes, paths, _ := sched.Missing(1) queue := append([]common.Hash{}, nodes...) From 371a411eb405c14b79b38efb8633dc7095063c88 Mon Sep 17 00:00:00 2001 From: Shivam Sharma Date: Wed, 2 Feb 2022 12:22:02 +0530 Subject: [PATCH 02/41] fix: Removed FastSync from cli server --- command/server/config.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/command/server/config.go b/command/server/config.go index c9ffff481d..dfb5909d5f 100644 --- a/command/server/config.go +++ b/command/server/config.go @@ -710,8 +710,6 @@ func (c *Config) buildEth() (*ethconfig.Config, error) { // sync mode. It can either be "fast", "full" or "snap". We disable // for now the "light" mode. switch c.SyncMode { - case "fast": - n.SyncMode = downloader.FastSync case "full": n.SyncMode = downloader.FullSync case "snap": From 2111d4ccdba424b3081cad78c97e4ec145962e62 Mon Sep 17 00:00:00 2001 From: Shivam Sharma Date: Wed, 2 Feb 2022 12:23:05 +0530 Subject: [PATCH 03/41] fix: TestHeadersRLPStorage --- core/rawdb/accessors_chain_test.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/rawdb/accessors_chain_test.go b/core/rawdb/accessors_chain_test.go index d57b9899bf..5d0b257aff 100644 --- a/core/rawdb/accessors_chain_test.go +++ b/core/rawdb/accessors_chain_test.go @@ -913,8 +913,10 @@ func TestHeadersRLPStorage(t *testing.T) { pHash = block.Hash() } var receipts []types.Receipts = make([]types.Receipts, 100) + var borReceipts []types.Receipts = make([]types.Receipts, 100) + // Write first half to ancients - WriteAncientBlocks(db, chain[:50], receipts[:50], big.NewInt(100)) + WriteAncientBlocks(db, chain[:50], receipts[:50], borReceipts[:50], big.NewInt(100)) // Write second half to db for i := 50; i < 100; i++ { WriteCanonicalHash(db, chain[i].Hash(), chain[i].NumberU64()) From 672a15e339808fa716567618351a2e28630ee721 Mon Sep 17 00:00:00 2001 From: Shivam Sharma Date: Wed, 2 Feb 2022 15:49:57 +0530 Subject: [PATCH 04/41] Added t.skip(ETH2 in bor) --- eth/catalyst/api_test.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/eth/catalyst/api_test.go b/eth/catalyst/api_test.go index 6e52c4fea2..1f1f017e5e 100644 --- a/eth/catalyst/api_test.go +++ b/eth/catalyst/api_test.go @@ -44,6 +44,27 @@ var ( testBalance = big.NewInt(2e18) ) +func generateTestChain() (*core.Genesis, []*types.Block) { + db := rawdb.NewMemoryDatabase() + config := params.AllEthashProtocolChanges + genesis := &core.Genesis{ + Config: config, + Alloc: core.GenesisAlloc{testAddr: {Balance: testBalance}}, + ExtraData: []byte("test genesis"), + Timestamp: 9000, + BaseFee: big.NewInt(params.InitialBaseFee), + } + generate := func(i int, g *core.BlockGen) { + g.OffsetTime(5) + g.SetExtra([]byte("test")) + } + gblock := genesis.ToBlock(db) + engine := ethash.NewFaker() + blocks, _ := core.GenerateChain(config, gblock, engine, db, 10, generate) + blocks = append([]*types.Block{gblock}, blocks...) + return genesis, blocks +} + func generatePreMergeChain(n int) (*core.Genesis, []*types.Block) { db := rawdb.NewMemoryDatabase() config := params.AllEthashProtocolChanges @@ -74,6 +95,8 @@ func generatePreMergeChain(n int) (*core.Genesis, []*types.Block) { } func TestEth2AssembleBlock(t *testing.T) { + t.Skip("bor due to burn contract") + genesis, blocks := generatePreMergeChain(10) n, ethservice := startEthService(t, genesis, blocks) defer n.Close() @@ -98,6 +121,8 @@ func TestEth2AssembleBlock(t *testing.T) { } func TestEth2AssembleBlockWithAnotherBlocksTxs(t *testing.T) { + t.Skip("bor due to burn contract") + genesis, blocks := generatePreMergeChain(10) n, ethservice := startEthService(t, genesis, blocks[:9]) defer n.Close() @@ -186,6 +211,8 @@ func checkLogEvents(t *testing.T, logsCh <-chan []*types.Log, rmLogsCh <-chan co } func TestEth2NewBlock(t *testing.T) { + t.Skip("ETH2 in Bor") + genesis, preMergeBlocks := generatePreMergeChain(10) n, ethservice := startEthService(t, genesis, preMergeBlocks) ethservice.Merger().ReachTTD() @@ -357,6 +384,8 @@ func startEthService(t *testing.T, genesis *core.Genesis, blocks []*types.Block) } func TestFullAPI(t *testing.T) { + t.Skip("ETH2 in Bor") + genesis, preMergeBlocks := generatePreMergeChain(10) n, ethservice := startEthService(t, genesis, preMergeBlocks) ethservice.Merger().ReachTTD() From 08509c6882c7bdb0cbbaee896e929d0fb387ba8c Mon Sep 17 00:00:00 2001 From: Manav Darji Date: Wed, 2 Feb 2022 16:42:22 +0530 Subject: [PATCH 05/41] fix: flow in create consensus engine --- eth/ethconfig/config.go | 32 +++++--------------------------- 1 file changed, 5 insertions(+), 27 deletions(-) diff --git a/eth/ethconfig/config.go b/eth/ethconfig/config.go index 898f28d564..1572377f89 100644 --- a/eth/ethconfig/config.go +++ b/eth/ethconfig/config.go @@ -227,38 +227,17 @@ func CreateConsensusEngine(stack *node.Node, chainConfig *params.ChainConfig, et noverify := ethConfig.Miner.Noverify // If proof-of-authority is requested, set it up - var engine consensus.Engine if chainConfig.Clique != nil { - engine = clique.New(chainConfig.Clique, db) - } else { - switch config.PowMode { - case ethash.ModeFake: - log.Warn("Ethash used in fake mode") - case ethash.ModeTest: - log.Warn("Ethash used in test mode") - case ethash.ModeShared: - log.Warn("Ethash used in shared mode") - } - engine = ethash.New(ethash.Config{ - PowMode: config.PowMode, - CacheDir: stack.ResolvePath(config.CacheDir), - CachesInMem: config.CachesInMem, - CachesOnDisk: config.CachesOnDisk, - CachesLockMmap: config.CachesLockMmap, - DatasetDir: config.DatasetDir, - DatasetsInMem: config.DatasetsInMem, - DatasetsOnDisk: config.DatasetsOnDisk, - DatasetsLockMmap: config.DatasetsLockMmap, - NotifyFull: config.NotifyFull, - }, notify, noverify) - engine.(*ethash.Ethash).SetThreads(-1) // Disable CPU mining + return clique.New(chainConfig.Clique, db) } + // If Matic bor consensus is requested, set it up // In order to pass the ethereum transaction tests, we need to set the burn contract which is in the bor config // Then, bor != nil will also be enabled for ethash and clique. Only enable Bor for real if there is a validator contract present. if chainConfig.Bor != nil && chainConfig.Bor.ValidatorContract != "" { return bor.New(chainConfig, db, blockchainAPI, ethConfig.HeimdallURL, ethConfig.WithoutHeimdall) } + // Otherwise assume proof-of-work switch config.PowMode { case ethash.ModeFake: @@ -268,7 +247,7 @@ func CreateConsensusEngine(stack *node.Node, chainConfig *params.ChainConfig, et case ethash.ModeShared: log.Warn("Ethash used in shared mode") } - engine = ethash.New(ethash.Config{ + engine := ethash.New(ethash.Config{ PowMode: config.PowMode, CacheDir: stack.ResolvePath(config.CacheDir), CachesInMem: config.CachesInMem, @@ -280,7 +259,6 @@ func CreateConsensusEngine(stack *node.Node, chainConfig *params.ChainConfig, et DatasetsLockMmap: config.DatasetsLockMmap, NotifyFull: config.NotifyFull, }, notify, noverify) - // TODO - Check this - // engine.SetThreads(-1) // Disable CPU mining + engine.SetThreads(-1) // Disable CPU mining return engine } From c8587b0668230c3a549480dc4005f39af26d7a74 Mon Sep 17 00:00:00 2001 From: Sandeep Sreenath Date: Fri, 11 Feb 2022 16:59:24 +0530 Subject: [PATCH 06/41] bumped version --- params/version.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/params/version.go b/params/version.go index 8b8531046f..fb54d1ace9 100644 --- a/params/version.go +++ b/params/version.go @@ -23,7 +23,7 @@ import ( const ( VersionMajor = 0 // Major version component of the current release VersionMinor = 2 // Minor version component of the current release - VersionPatch = 14 // Patch version component of the current release + VersionPatch = 15 // Patch version component of the current release VersionMeta = "beta-1" // Version metadata to append to the version string ) From 51d17ea43fe7d549e71969a74f8abc049aa2c207 Mon Sep 17 00:00:00 2001 From: Victor Castell Date: Wed, 2 Feb 2022 11:59:17 +0100 Subject: [PATCH 07/41] Fix typo --- .../files/{genesys-testnet-v4.json => genesis-testnet-v4.json} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename builder/files/{genesys-testnet-v4.json => genesis-testnet-v4.json} (100%) diff --git a/builder/files/genesys-testnet-v4.json b/builder/files/genesis-testnet-v4.json similarity index 100% rename from builder/files/genesys-testnet-v4.json rename to builder/files/genesis-testnet-v4.json From 555e2381882c692f1925494717f2a8428edba67d Mon Sep 17 00:00:00 2001 From: Arpit Temani Date: Thu, 24 Feb 2022 18:03:32 +0530 Subject: [PATCH 08/41] increase block time --- builder/files/genesis-testnet-v4.json | 6 +- builder/files/genesys-testnet-v4.json | 82 +++++++++++++++++++++++++++ internal/cli/server/chains/mumbai.go | 6 +- params/config.go | 6 +- params/version.go | 2 +- 5 files changed, 95 insertions(+), 7 deletions(-) create mode 100644 builder/files/genesys-testnet-v4.json diff --git a/builder/files/genesis-testnet-v4.json b/builder/files/genesis-testnet-v4.json index 1d68659bdc..0215aee246 100644 --- a/builder/files/genesis-testnet-v4.json +++ b/builder/files/genesis-testnet-v4.json @@ -16,12 +16,14 @@ "bor": { "jaipurBlock": 22770000, "period": { - "0": 2 + "0": 2, + "25275000": 5 }, "producerDelay": 6, "sprint": 64, "backupMultiplier": { - "0": 2 + "0": 2, + "25275000": 5 }, "validatorContract": "0x0000000000000000000000000000000000001000", "stateReceiverContract": "0x0000000000000000000000000000000000001001", diff --git a/builder/files/genesys-testnet-v4.json b/builder/files/genesys-testnet-v4.json new file mode 100644 index 0000000000..0215aee246 --- /dev/null +++ b/builder/files/genesys-testnet-v4.json @@ -0,0 +1,82 @@ +{ + "config": { + "chainId": 80001, + "homesteadBlock": 0, + "eip150Block": 0, + "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "eip155Block": 0, + "eip158Block": 0, + "byzantiumBlock": 0, + "constantinopleBlock": 0, + "petersburgBlock": 0, + "istanbulBlock": 2722000, + "muirGlacierBlock": 2722000, + "berlinBlock": 13996000, + "londonBlock": 22640000, + "bor": { + "jaipurBlock": 22770000, + "period": { + "0": 2, + "25275000": 5 + }, + "producerDelay": 6, + "sprint": 64, + "backupMultiplier": { + "0": 2, + "25275000": 5 + }, + "validatorContract": "0x0000000000000000000000000000000000001000", + "stateReceiverContract": "0x0000000000000000000000000000000000001001", + "burntContract": { + "22640000": "0x70bcA57F4579f58670aB2d18Ef16e02C17553C38" + }, + "blockAlloc": { + "22244000": { + "0000000000000000000000000000000000001010": { + "balance": "0x0", + "code": "0x60806040526004361061019c5760003560e01c806377d32e94116100ec578063acd06cb31161008a578063e306f77911610064578063e306f77914610a7b578063e614d0d614610aa6578063f2fde38b14610ad1578063fc0c546a14610b225761019c565b8063acd06cb31461097a578063b789543c146109cd578063cc79f97b14610a505761019c565b80639025e64c116100c65780639025e64c146107c957806395d89b4114610859578063a9059cbb146108e9578063abceeba21461094f5761019c565b806377d32e94146106315780638da5cb5b146107435780638f32d59b1461079a5761019c565b806347e7ef24116101595780637019d41a116101335780637019d41a1461053357806370a082311461058a578063715018a6146105ef578063771282f6146106065761019c565b806347e7ef2414610410578063485cc9551461046b57806360f96a8f146104dc5761019c565b806306fdde03146101a15780631499c5921461023157806318160ddd1461028257806319d27d9c146102ad5780632e1a7d4d146103b1578063313ce567146103df575b600080fd5b3480156101ad57600080fd5b506101b6610b79565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023d57600080fd5b506102806004803603602081101561025457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bb6565b005b34801561028e57600080fd5b50610297610c24565b6040518082815260200191505060405180910390f35b3480156102b957600080fd5b5061036f600480360360a08110156102d057600080fd5b81019080803590602001906401000000008111156102ed57600080fd5b8201836020820111156102ff57600080fd5b8035906020019184600183028401116401000000008311171561032157600080fd5b9091929391929390803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c3a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103dd600480360360208110156103c757600080fd5b8101908080359060200190929190505050610caa565b005b3480156103eb57600080fd5b506103f4610dfc565b604051808260ff1660ff16815260200191505060405180910390f35b34801561041c57600080fd5b506104696004803603604081101561043357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e05565b005b34801561047757600080fd5b506104da6004803603604081101561048e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fc1565b005b3480156104e857600080fd5b506104f1611090565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561053f57600080fd5b506105486110b6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059657600080fd5b506105d9600480360360208110156105ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110dc565b6040518082815260200191505060405180910390f35b3480156105fb57600080fd5b506106046110fd565b005b34801561061257600080fd5b5061061b6111cd565b6040518082815260200191505060405180910390f35b34801561063d57600080fd5b506107016004803603604081101561065457600080fd5b81019080803590602001909291908035906020019064010000000081111561067b57600080fd5b82018360208201111561068d57600080fd5b803590602001918460018302840111640100000000831117156106af57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506111d3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561074f57600080fd5b50610758611358565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107a657600080fd5b506107af611381565b604051808215151515815260200191505060405180910390f35b3480156107d557600080fd5b506107de6113d8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561081e578082015181840152602081019050610803565b50505050905090810190601f16801561084b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561086557600080fd5b5061086e611411565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108ae578082015181840152602081019050610893565b50505050905090810190601f1680156108db5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610935600480360360408110156108ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061144e565b604051808215151515815260200191505060405180910390f35b34801561095b57600080fd5b50610964611474565b6040518082815260200191505060405180910390f35b34801561098657600080fd5b506109b36004803603602081101561099d57600080fd5b8101908080359060200190929190505050611501565b604051808215151515815260200191505060405180910390f35b3480156109d957600080fd5b50610a3a600480360360808110156109f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190505050611521565b6040518082815260200191505060405180910390f35b348015610a5c57600080fd5b50610a65611541565b6040518082815260200191505060405180910390f35b348015610a8757600080fd5b50610a90611548565b6040518082815260200191505060405180910390f35b348015610ab257600080fd5b50610abb61154e565b6040518082815260200191505060405180910390f35b348015610add57600080fd5b50610b2060048036036020811015610af457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115db565b005b348015610b2e57600080fd5b50610b376115f8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60606040518060400160405280600b81526020017f4d6174696320546f6b656e000000000000000000000000000000000000000000815250905090565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f44697361626c656420666561747572650000000000000000000000000000000081525060200191505060405180910390fd5b6000601260ff16600a0a6402540be40002905090565b60006040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f44697361626c656420666561747572650000000000000000000000000000000081525060200191505060405180910390fd5b60003390506000610cba826110dc565b9050610cd18360065461161e90919063ffffffff16565b600681905550600083118015610ce657508234145b610d58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496e73756666696369656e7420616d6f756e740000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f8584610dd4876110dc565b60405180848152602001838152602001828152602001935050505060405180910390a3505050565b60006012905090565b610e0d611381565b610e1657600080fd5b600081118015610e535750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b610ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611da96023913960400191505060405180910390fd5b6000610eb3836110dc565b905060008390508073ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015610f00573d6000803e3d6000fd5b50610f168360065461163e90919063ffffffff16565b6006819055508373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f68585610f98896110dc565b60405180848152602001838152602001828152602001935050505060405180910390a350505050565b600760009054906101000a900460ff1615611027576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611d866023913960400191505060405180910390fd5b6001600760006101000a81548160ff02191690831515021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061108c8261165d565b5050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008173ffffffffffffffffffffffffffffffffffffffff16319050919050565b611105611381565b61110e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60065481565b60008060008060418551146111ee5760009350505050611352565b602085015192506040850151915060ff6041860151169050601b8160ff16101561121957601b810190505b601b8160ff16141580156112315750601c8160ff1614155b156112425760009350505050611352565b60018682858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561129f573d6000803e3d6000fd5b505050602060405103519350600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561134e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4572726f7220696e2065637265636f766572000000000000000000000000000081525060200191505060405180910390fd5b5050505b92915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6040518060400160405280600381526020017f013881000000000000000000000000000000000000000000000000000000000081525081565b60606040518060400160405280600581526020017f4d41544943000000000000000000000000000000000000000000000000000000815250905090565b6000813414611460576000905061146e565b61146b338484611755565b90505b92915050565b6040518060800160405280605b8152602001611e1e605b91396040516020018082805190602001908083835b602083106114c357805182526020820191506020810190506020830392506114a0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081565b60056020528060005260406000206000915054906101000a900460ff1681565b600061153761153286868686611b12565b611be8565b9050949350505050565b6201388181565b60015481565b604051806080016040528060528152602001611dcc605291396040516020018082805190602001908083835b6020831061159d578051825260208201915060208101905060208303925061157a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081565b6115e3611381565b6115ec57600080fd5b6115f58161165d565b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008282111561162d57600080fd5b600082840390508091505092915050565b60008082840190508381101561165357600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561169757600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156117d557600080fd5b505afa1580156117e9573d6000803e3d6000fd5b505050506040513d60208110156117ff57600080fd5b8101908080519060200190929190505050905060003073ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561189157600080fd5b505afa1580156118a5573d6000803e3d6000fd5b505050506040513d60208110156118bb57600080fd5b810190808051906020019092919050505090506118d9868686611c32565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fe6497e3ee548a3372136af2fcb0696db31fc6cf20260707645068bd3fe97f3c48786863073ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156119e157600080fd5b505afa1580156119f5573d6000803e3d6000fd5b505050506040513d6020811015611a0b57600080fd5b81019080805190602001909291905050503073ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611a9957600080fd5b505afa158015611aad573d6000803e3d6000fd5b505050506040513d6020811015611ac357600080fd5b8101908080519060200190929190505050604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a46001925050509392505050565b6000806040518060800160405280605b8152602001611e1e605b91396040516020018082805190602001908083835b60208310611b645780518252602082019150602081019050602083039250611b41565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120905060405181815273ffffffffffffffffffffffffffffffffffffffff8716602082015285604082015284606082015283608082015260a0812092505081915050949350505050565b60008060015490506040517f190100000000000000000000000000000000000000000000000000000000000081528160028201528360228201526042812092505081915050919050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cd4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f63616e27742073656e6420746f204d524332300000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d1a573d6000803e3d6000fd5b508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350505056fe54686520636f6e747261637420697320616c726561647920696e697469616c697a6564496e73756666696369656e7420616d6f756e74206f7220696e76616c69642075736572454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429546f6b656e5472616e736665724f726465722861646472657373207370656e6465722c75696e7432353620746f6b656e49644f72416d6f756e742c6279746573333220646174612c75696e743235362065787069726174696f6e29a265627a7a72315820ccd6c2a9c259832bbb367986ee06cd87af23022681b0cb22311a864b701d939564736f6c63430005100032" + } + } + } + } + }, + "nonce": "0x0", + "timestamp": "0x5ce28211", + "extraData": "", + "gasLimit": "0x989680", + "difficulty": "0x1", + "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "coinbase": "0x0000000000000000000000000000000000000000", + "alloc": { + "0000000000000000000000000000000000001000": { + "balance": "0x0", + "code": "0x608060405234801561001057600080fd5b50600436106101f05760003560e01c806360c8614d1161010f578063af26aa96116100a2578063d5b844eb11610071578063d5b844eb14610666578063dcf2793a14610684578063e3b7c924146106b6578063f59cf565146106d4576101f0565b8063af26aa96146105c7578063b71d7a69146105e7578063b7ab4db514610617578063c1b3c91914610636576101f0565b806370ba5707116100de57806370ba57071461052b57806398ab2b621461055b5780639d11b80714610579578063ae756451146105a9576101f0565b806360c8614d1461049c57806365b3a1e2146104bc57806366332354146104db578063687a9bd6146104f9576101f0565b80633434735f1161018757806344d6528f1161015657806344d6528f146103ee5780634dbc959f1461041e57806355614fcc1461043c578063582a8d081461046c576101f0565b80633434735f1461035257806335ddfeea1461037057806343ee8213146103a057806344c15cb1146103be576101f0565b806323f2a73f116101c357806323f2a73f146102a45780632bc06564146102d45780632de3a180146102f25780632eddf35214610322576101f0565b8063047a6c5b146101f55780630c35b1cb146102275780631270b5741461025857806323c2a2b414610288575b600080fd5b61020f600480360361020a9190810190612b24565b610706565b60405161021e93929190613463565b60405180910390f35b610241600480360361023c9190810190612b24565b61075d565b60405161024f929190613284565b60405180910390f35b610272600480360361026d9190810190612b4d565b610939565b60405161027f91906132bb565b60405180910390f35b6102a2600480360361029d9190810190612c2c565b610a91565b005b6102be60048036036102b99190810190612b4d565b61112a565b6040516102cb91906132bb565b60405180910390f35b6102dc611281565b6040516102e99190613411565b60405180910390f35b61030c60048036036103079190810190612a81565b611286565b60405161031991906132d6565b60405180910390f35b61033c60048036036103379190810190612b24565b611307565b6040516103499190613411565b60405180910390f35b61035a611437565b6040516103679190613269565b60405180910390f35b61038a60048036036103859190810190612abd565b61144f565b60405161039791906132bb565b60405180910390f35b6103a861151a565b6040516103b591906132d6565b60405180910390f35b6103d860048036036103d39190810190612b89565b611531565b6040516103e59190613411565b60405180910390f35b61040860048036036104039190810190612b4d565b611619565b60405161041591906133f6565b60405180910390f35b610426611781565b6040516104339190613411565b60405180910390f35b61045660048036036104519190810190612a06565b611791565b60405161046391906132bb565b60405180910390f35b61048660048036036104819190810190612a2f565b6117ab565b60405161049391906132d6565b60405180910390f35b6104a4611829565b6040516104b393929190613463565b60405180910390f35b6104c461189d565b6040516104d2929190613284565b60405180910390f35b6104e3611b6e565b6040516104f09190613411565b60405180910390f35b610513600480360361050e9190810190612bf0565b611b73565b6040516105229392919061342c565b60405180910390f35b61054560048036036105409190810190612a06565b611bd7565b60405161055291906132bb565b60405180910390f35b610563611bf1565b60405161057091906132d6565b60405180910390f35b610593600480360361058e9190810190612b24565b611c08565b6040516105a09190613411565b60405180910390f35b6105b1611d39565b6040516105be91906132d6565b60405180910390f35b6105cf611d50565b6040516105de93929190613463565b60405180910390f35b61060160048036036105fc9190810190612b24565b611db1565b60405161060e9190613411565b60405180910390f35b61061f611eb1565b60405161062d929190613284565b60405180910390f35b610650600480360361064b9190810190612b24565b611ec5565b60405161065d9190613411565b60405180910390f35b61066e611ee6565b60405161067b919061349a565b60405180910390f35b61069e60048036036106999190810190612bf0565b611eeb565b6040516106ad9392919061342c565b60405180910390f35b6106be611f4f565b6040516106cb9190613411565b60405180910390f35b6106ee60048036036106e99190810190612b24565b611f61565b6040516106fd93929190613463565b60405180910390f35b60008060006002600085815260200190815260200160002060000154600260008681526020019081526020016000206001015460026000878152602001908152602001600020600201549250925092509193909250565b60608060ff83116107795761077061189d565b91509150610934565b600061078484611db1565b9050606060016000838152602001908152602001600020805490506040519080825280602002602001820160405280156107cd5781602001602082028038833980820191505090505b509050606060016000848152602001908152602001600020805490506040519080825280602002602001820160405280156108175781602001602082028038833980820191505090505b50905060008090505b60016000858152602001908152602001600020805490508110156109295760016000858152602001908152602001600020818154811061085c57fe5b906000526020600020906003020160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683828151811061089a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001600085815260200190815260200160002081815481106108f257fe5b90600052602060002090600302016001015482828151811061091057fe5b6020026020010181815250508080600101915050610820565b508181945094505050505b915091565b6000606060016000858152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610a0c578382906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190610970565b50505050905060008090505b8151811015610a84578373ffffffffffffffffffffffffffffffffffffffff16828281518110610a4457fe5b60200260200101516040015173ffffffffffffffffffffffffffffffffffffffff161415610a7757600192505050610a8b565b8080600101915050610a18565b5060009150505b92915050565b73fffffffffffffffffffffffffffffffffffffffe73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0a906133d6565b60405180910390fd5b6000610b1d611781565b90506000811415610b3157610b30611f8b565b5b610b456001826122ac90919063ffffffff16565b8814610b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7d90613356565b60405180910390fd5b868611610bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbf906133b6565b60405180910390fd5b6000604060018989030181610bd957fe5b0614610c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1190613396565b60405180910390fd5b8660026000838152602001908152602001600020600101541115610c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6a90613336565b60405180910390fd5b6000600260008a81526020019081526020016000206000015414610ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc390613376565b60405180910390fd5b604051806060016040528089815260200188815260200187815250600260008a8152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050600388908060018154018082558091505090600182039060005260206000200160009091929091909150555060008060008a815260200190815260200160002081610d669190612800565b506000600160008a815260200190815260200160002081610d879190612800565b506060610ddf610dda87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506122cb565b6122f9565b905060008090505b8151811015610f51576060610e0e838381518110610e0157fe5b60200260200101516122f9565b90506000808c81526020019081526020016000208054809190600101610e349190612800565b506040518060600160405280610e5d83600081518110610e5057fe5b60200260200101516123d6565b8152602001610e7f83600181518110610e7257fe5b60200260200101516123d6565b8152602001610ea183600281518110610e9457fe5b6020026020010151612447565b73ffffffffffffffffffffffffffffffffffffffff168152506000808d81526020019081526020016000208381548110610ed757fe5b9060005260206000209060030201600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050508080600101915050610de7565b506060610fa9610fa486868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506122cb565b6122f9565b905060008090505b815181101561111d576060610fd8838381518110610fcb57fe5b60200260200101516122f9565b9050600160008d81526020019081526020016000208054809190600101610fff9190612800565b5060405180606001604052806110288360008151811061101b57fe5b60200260200101516123d6565b815260200161104a8360018151811061103d57fe5b60200260200101516123d6565b815260200161106c8360028151811061105f57fe5b6020026020010151612447565b73ffffffffffffffffffffffffffffffffffffffff16815250600160008e815260200190815260200160002083815481106110a357fe5b9060005260206000209060030201600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050508080600101915050610fb1565b5050505050505050505050565b60006060600080858152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156111fc578382906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611160565b50505050905060008090505b8151811015611274578373ffffffffffffffffffffffffffffffffffffffff1682828151811061123457fe5b60200260200101516040015173ffffffffffffffffffffffffffffffffffffffff1614156112675760019250505061127b565b8080600101915050611208565b5060009150505b92915050565b604081565b60006002600160f81b84846040516020016112a3939291906131d6565b6040516020818303038152906040526040516112bf9190613213565b602060405180830381855afa1580156112dc573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052506112ff9190810190612a58565b905092915050565b60006060600080848152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156113d9578382906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250508152602001906001019061133d565b505050509050600080905060008090505b825181101561142c5761141d83828151811061140257fe5b602002602001015160200151836122ac90919063ffffffff16565b915080806001019150506113ea565b508092505050919050565b73fffffffffffffffffffffffffffffffffffffffe81565b600080600080859050600060218087518161146657fe5b04029050600081111561147f5761147c876117ab565b91505b6000602190505b818111611509576000600182038801519050818801519550806000602081106114ab57fe5b1a60f81b9450600060f81b857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156114f0576114e98685611286565b93506114fd565b6114fa8487611286565b93505b50602181019050611486565b508782149450505050509392505050565b60405161152690613254565b604051809103902081565b60008060009050600080905060008090505b84518167ffffffffffffffff16101561160c57606061156e868367ffffffffffffffff16604161246a565b9050600061158582896124f690919063ffffffff16565b905061158f612832565b6115998a83611619565b90506115a58a8361112a565b80156115dc57508473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16115b156115fe578194506115fb8160200151876122ac90919063ffffffff16565b95505b505050604181019050611543565b5081925050509392505050565b611621612832565b6060600080858152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156116f1578382906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611655565b50505050905060008090505b8151811015611779578373ffffffffffffffffffffffffffffffffffffffff1682828151811061172957fe5b60200260200101516040015173ffffffffffffffffffffffffffffffffffffffff16141561176c5781818151811061175d57fe5b60200260200101519250611779565b80806001019150506116fd565b505092915050565b600061178c43611db1565b905090565b60006117a461179e611781565b8361112a565b9050919050565b60006002600060f81b836040516020016117c69291906131aa565b6040516020818303038152906040526040516117e29190613213565b602060405180830381855afa1580156117ff573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052506118229190810190612a58565b9050919050565b60008060008061184a600161183c611781565b6122ac90919063ffffffff16565b905060026000828152602001908152602001600020600001546002600083815260200190815260200160002060010154600260008481526020019081526020016000206002015493509350935050909192565b606080606060056040519080825280602002602001820160405280156118d25781602001602082028038833980820191505090505b50905073c26880a0af2ea0c7e8130e6ec47af756465452e8816000815181106118f757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073be188d6641e8b680743a4815dfa0f6208038960f8160018151811061195357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c275dc8be39f50d12f66b6a63629c39da5bae5bd816002815181106119af57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073f903ba9e006193c1527bfbe65fe2123704ea3f9981600381518110611a0b57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073928ed6a3e94437bbd316ccad78479f1d163a6a8c81600481518110611a6757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060606005604051908082528060200260200182016040528015611ad35781602001602082028038833980820191505090505b50905061271081600081518110611ae657fe5b60200260200101818152505061271081600181518110611b0257fe5b60200260200101818152505061271081600281518110611b1e57fe5b60200260200101818152505061271081600381518110611b3a57fe5b60200260200101818152505061271081600481518110611b5657fe5b60200260200101818152505081819350935050509091565b60ff81565b60016020528160005260406000208181548110611b8c57fe5b9060005260206000209060030201600091509150508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b6000611bea611be4611781565b83610939565b9050919050565b604051611bfd9061322a565b604051809103902081565b6000606060016000848152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015611cdb578382906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611c3f565b505050509050600080905060008090505b8251811015611d2e57611d1f838281518110611d0457fe5b602002602001015160200151836122ac90919063ffffffff16565b91508080600101915050611cec565b508092505050919050565b604051611d459061323f565b604051809103902081565b600080600080611d5e611781565b905060026000828152602001908152602001600020600001546002600083815260200190815260200160002060010154600260008481526020019081526020016000206002015493509350935050909192565b60008060038054905090505b6000811115611e7157611dce612869565b6002600060036001850381548110611de257fe5b906000526020600020015481526020019081526020016000206040518060600160405290816000820154815260200160018201548152602001600282015481525050905083816020015111158015611e3f57506000816040015114155b8015611e4f575080604001518411155b15611e6257806000015192505050611eac565b50808060019003915050611dbd565b5060006003805490501115611ea757600360016003805490500381548110611e9557fe5b90600052602060002001549050611eac565b600090505b919050565b606080611ebd4361075d565b915091509091565b60038181548110611ed257fe5b906000526020600020016000915090505481565b600281565b60006020528160005260406000208181548110611f0457fe5b9060005260206000209060030201600091509150508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b600060404381611f5b57fe5b04905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b606080611f9661189d565b8092508193505050600080905060405180606001604052808281526020016000815260200160ff81525060026000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050600381908060018154018082558091505090600182039060005260206000200160009091929091909150555060008060008381526020019081526020016000208161203f9190612800565b50600060016000838152602001908152602001600020816120609190612800565b5060008090505b83518110156121825760008083815260200190815260200160002080548091906001016120949190612800565b5060405180606001604052808281526020018483815181106120b257fe5b602002602001015181526020018583815181106120cb57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16815250600080848152602001908152602001600020828154811061210957fe5b9060005260206000209060030201600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050508080600101915050612067565b5060008090505b83518110156122a6576001600083815260200190815260200160002080548091906001016121b79190612800565b5060405180606001604052808281526020018483815181106121d557fe5b602002602001015181526020018583815181106121ee57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1681525060016000848152602001908152602001600020828154811061222d57fe5b9060005260206000209060030201600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050508080600101915050612189565b50505050565b6000808284019050838110156122c157600080fd5b8091505092915050565b6122d361288a565b600060208301905060405180604001604052808451815260200182815250915050919050565b606061230482612600565b61230d57600080fd5b60006123188361264e565b905060608160405190808252806020026020018201604052801561235657816020015b6123436128a4565b81526020019060019003908161233b5790505b509050600061236885602001516126bf565b8560200151019050600080600090505b848110156123c95761238983612748565b91506040518060400160405280838152602001848152508482815181106123ac57fe5b602002602001018190525081830192508080600101915050612378565b5082945050505050919050565b60008082600001511180156123f057506021826000015111155b6123f957600080fd5b600061240883602001516126bf565b9050600081846000015103905060008083866020015101905080519150602083101561243b57826020036101000a820491505b81945050505050919050565b6000601582600001511461245a57600080fd5b612463826123d6565b9050919050565b60608183018451101561247c57600080fd5b6060821560008114612499576040519150602082016040526124ea565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156124d757805183526020830192506020810190506124ba565b50868552601f19601f8301166040525050505b50809150509392505050565b600080600080604185511461251157600093505050506125fa565b602085015192506040850151915060ff6041860151169050601b8160ff16101561253c57601b810190505b601b8160ff16141580156125545750601c8160ff1614155b1561256557600093505050506125fa565b60006001878386866040516000815260200160405260405161258a94939291906132f1565b6020604051602081039080840390855afa1580156125ac573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156125f257600080fd5b809450505050505b92915050565b600080826000015114156126175760009050612649565b60008083602001519050805160001a915060c060ff168260ff16101561264257600092505050612649565b6001925050505b919050565b6000808260000151141561266557600090506126ba565b6000809050600061267984602001516126bf565b84602001510190506000846000015185602001510190505b808210156126b3576126a282612748565b820191508280600101935050612691565b8293505050505b919050565b600080825160001a9050608060ff168110156126df576000915050612743565b60b860ff16811080612704575060c060ff168110158015612703575060f860ff1681105b5b15612713576001915050612743565b60c060ff168110156127335760018060b80360ff16820301915050612743565b60018060f80360ff168203019150505b919050565b6000806000835160001a9050608060ff1681101561276957600191506127f6565b60b860ff16811015612786576001608060ff1682030191506127f5565b60c060ff168110156127b65760b78103600185019450806020036101000a855104600182018101935050506127f4565b60f860ff168110156127d357600160c060ff1682030191506127f3565b60f78103600185019450806020036101000a855104600182018101935050505b5b5b5b8192505050919050565b81548183558181111561282d5760030281600302836000526020600020918201910161282c91906128be565b5b505050565b60405180606001604052806000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b60405180606001604052806000815260200160008152602001600081525090565b604051806040016040528060008152602001600081525090565b604051806040016040528060008152602001600081525090565b61291191905b8082111561290d5760008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506003016128c4565b5090565b90565b60008135905061292381613693565b92915050565b600081359050612938816136aa565b92915050565b60008151905061294d816136aa565b92915050565b60008083601f84011261296557600080fd5b8235905067ffffffffffffffff81111561297e57600080fd5b60208301915083600182028301111561299657600080fd5b9250929050565b600082601f8301126129ae57600080fd5b81356129c16129bc826134e2565b6134b5565b915080825260208301602083018583830111156129dd57600080fd5b6129e883828461363d565b50505092915050565b600081359050612a00816136c1565b92915050565b600060208284031215612a1857600080fd5b6000612a2684828501612914565b91505092915050565b600060208284031215612a4157600080fd5b6000612a4f84828501612929565b91505092915050565b600060208284031215612a6a57600080fd5b6000612a788482850161293e565b91505092915050565b60008060408385031215612a9457600080fd5b6000612aa285828601612929565b9250506020612ab385828601612929565b9150509250929050565b600080600060608486031215612ad257600080fd5b6000612ae086828701612929565b9350506020612af186828701612929565b925050604084013567ffffffffffffffff811115612b0e57600080fd5b612b1a8682870161299d565b9150509250925092565b600060208284031215612b3657600080fd5b6000612b44848285016129f1565b91505092915050565b60008060408385031215612b6057600080fd5b6000612b6e858286016129f1565b9250506020612b7f85828601612914565b9150509250929050565b600080600060608486031215612b9e57600080fd5b6000612bac868287016129f1565b9350506020612bbd86828701612929565b925050604084013567ffffffffffffffff811115612bda57600080fd5b612be68682870161299d565b9150509250925092565b60008060408385031215612c0357600080fd5b6000612c11858286016129f1565b9250506020612c22858286016129f1565b9150509250929050565b600080600080600080600060a0888a031215612c4757600080fd5b6000612c558a828b016129f1565b9750506020612c668a828b016129f1565b9650506040612c778a828b016129f1565b955050606088013567ffffffffffffffff811115612c9457600080fd5b612ca08a828b01612953565b9450945050608088013567ffffffffffffffff811115612cbf57600080fd5b612ccb8a828b01612953565b925092505092959891949750929550565b6000612ce88383612d0c565b60208301905092915050565b6000612d00838361317d565b60208301905092915050565b612d15816135b2565b82525050565b612d24816135b2565b82525050565b6000612d358261352e565b612d3f8185613569565b9350612d4a8361350e565b8060005b83811015612d7b578151612d628882612cdc565b9750612d6d8361354f565b925050600181019050612d4e565b5085935050505092915050565b6000612d9382613539565b612d9d818561357a565b9350612da88361351e565b8060005b83811015612dd9578151612dc08882612cf4565b9750612dcb8361355c565b925050600181019050612dac565b5085935050505092915050565b612def816135c4565b82525050565b612e06612e01826135d0565b61367f565b82525050565b612e15816135fc565b82525050565b612e2c612e27826135fc565b613689565b82525050565b6000612e3d82613544565b612e47818561358b565b9350612e5781856020860161364c565b80840191505092915050565b6000612e706004836135a7565b91507f766f7465000000000000000000000000000000000000000000000000000000006000830152600482019050919050565b6000612eb0602d83613596565b91507f537461727420626c6f636b206d7573742062652067726561746572207468616e60008301527f2063757272656e74207370616e000000000000000000000000000000000000006020830152604082019050919050565b6000612f16600f83613596565b91507f496e76616c6964207370616e20696400000000000000000000000000000000006000830152602082019050919050565b6000612f56601383613596565b91507f5370616e20616c726561647920657869737473000000000000000000000000006000830152602082019050919050565b6000612f96604583613596565b91507f446966666572656e6365206265747765656e20737461727420616e6420656e6460008301527f20626c6f636b206d75737420626520696e206d756c7469706c6573206f66207360208301527f7072696e740000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000613022602a83613596565b91507f456e6420626c6f636b206d7573742062652067726561746572207468616e207360008301527f7461727420626c6f636b000000000000000000000000000000000000000000006020830152604082019050919050565b6000613088601283613596565b91507f4e6f742053797374656d204164646573732100000000000000000000000000006000830152602082019050919050565b60006130c86005836135a7565b91507f38303030310000000000000000000000000000000000000000000000000000006000830152600582019050919050565b6000613108600e836135a7565b91507f6865696d64616c6c2d38303030310000000000000000000000000000000000006000830152600e82019050919050565b606082016000820151613151600085018261317d565b506020820151613164602085018261317d565b5060408201516131776040850182612d0c565b50505050565b61318681613626565b82525050565b61319581613626565b82525050565b6131a481613630565b82525050565b60006131b68285612df5565b6001820191506131c68284612e1b565b6020820191508190509392505050565b60006131e28286612df5565b6001820191506131f28285612e1b565b6020820191506132028284612e1b565b602082019150819050949350505050565b600061321f8284612e32565b915081905092915050565b600061323582612e63565b9150819050919050565b600061324a826130bb565b9150819050919050565b600061325f826130fb565b9150819050919050565b600060208201905061327e6000830184612d1b565b92915050565b6000604082019050818103600083015261329e8185612d2a565b905081810360208301526132b28184612d88565b90509392505050565b60006020820190506132d06000830184612de6565b92915050565b60006020820190506132eb6000830184612e0c565b92915050565b60006080820190506133066000830187612e0c565b613313602083018661319b565b6133206040830185612e0c565b61332d6060830184612e0c565b95945050505050565b6000602082019050818103600083015261334f81612ea3565b9050919050565b6000602082019050818103600083015261336f81612f09565b9050919050565b6000602082019050818103600083015261338f81612f49565b9050919050565b600060208201905081810360008301526133af81612f89565b9050919050565b600060208201905081810360008301526133cf81613015565b9050919050565b600060208201905081810360008301526133ef8161307b565b9050919050565b600060608201905061340b600083018461313b565b92915050565b6000602082019050613426600083018461318c565b92915050565b6000606082019050613441600083018661318c565b61344e602083018561318c565b61345b6040830184612d1b565b949350505050565b6000606082019050613478600083018661318c565b613485602083018561318c565b613492604083018461318c565b949350505050565b60006020820190506134af600083018461319b565b92915050565b6000604051905081810181811067ffffffffffffffff821117156134d857600080fd5b8060405250919050565b600067ffffffffffffffff8211156134f957600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006135bd82613606565b9050919050565b60008115159050919050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b8381101561366a57808201518184015260208101905061364f565b83811115613679576000848401525b50505050565b6000819050919050565b6000819050919050565b61369c816135b2565b81146136a757600080fd5b50565b6136b3816135fc565b81146136be57600080fd5b50565b6136ca81613626565b81146136d557600080fd5b5056fea365627a7a723158208f52ee07630ffe523cc6ad3e15f437f973dcfa36729cd697f9b0fc4a145a48f06c6578706572696d656e74616cf564736f6c634300050b0040" + }, + "0000000000000000000000000000000000001001": { + "balance": "0x0", + "code": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806319494a17146100465780633434735f146100e15780635407ca671461012b575b600080fd5b6100c76004803603604081101561005c57600080fd5b81019080803590602001909291908035906020019064010000000081111561008357600080fd5b82018360208201111561009557600080fd5b803590602001918460018302840111640100000000831117156100b757600080fd5b9091929391929390505050610149565b604051808215151515815260200191505060405180910390f35b6100e961047a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610133610492565b6040518082815260200191505060405180910390f35b600073fffffffffffffffffffffffffffffffffffffffe73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f742053797374656d2041646465737321000000000000000000000000000081525060200191505060405180910390fd5b606061025761025285858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610498565b6104c6565b905060006102788260008151811061026b57fe5b60200260200101516105a3565b905080600160005401146102f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f537461746549647320617265206e6f742073657175656e7469616c000000000081525060200191505060405180910390fd5b600080815480929190600101919050555060006103248360018151811061031757fe5b6020026020010151610614565b905060606103458460028151811061033857fe5b6020026020010151610637565b9050610350826106c3565b1561046f576000624c4b409050606084836040516024018083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156103aa57808201518184015260208101905061038f565b50505050905090810190601f1680156103d75780820380516001836020036101000a031916815260200191505b5093505050506040516020818303038152906040527f26c53bea000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060008082516020840160008887f1965050505b505050509392505050565b73fffffffffffffffffffffffffffffffffffffffe81565b60005481565b6104a0610943565b600060208301905060405180604001604052808451815260200182815250915050919050565b60606104d1826106dc565b6104da57600080fd5b60006104e58361072a565b905060608160405190808252806020026020018201604052801561052357816020015b61051061095d565b8152602001906001900390816105085790505b5090506000610535856020015161079b565b8560200151019050600080600090505b848110156105965761055683610824565b915060405180604001604052808381526020018481525084828151811061057957fe5b602002602001018190525081830192508080600101915050610545565b5082945050505050919050565b60008082600001511180156105bd57506021826000015111155b6105c657600080fd5b60006105d5836020015161079b565b9050600081846000015103905060008083866020015101905080519150602083101561060857826020036101000a820491505b81945050505050919050565b6000601582600001511461062757600080fd5b610630826105a3565b9050919050565b6060600082600001511161064a57600080fd5b6000610659836020015161079b565b905060008184600001510390506060816040519080825280601f01601f19166020018201604052801561069b5781602001600182028038833980820191505090505b50905060008160200190506106b78487602001510182856108dc565b81945050505050919050565b600080823b905060008163ffffffff1611915050919050565b600080826000015114156106f35760009050610725565b60008083602001519050805160001a915060c060ff168260ff16101561071e57600092505050610725565b6001925050505b919050565b600080826000015114156107415760009050610796565b60008090506000610755846020015161079b565b84602001510190506000846000015185602001510190505b8082101561078f5761077e82610824565b82019150828060010193505061076d565b8293505050505b919050565b600080825160001a9050608060ff168110156107bb57600091505061081f565b60b860ff168110806107e0575060c060ff1681101580156107df575060f860ff1681105b5b156107ef57600191505061081f565b60c060ff1681101561080f5760018060b80360ff1682030191505061081f565b60018060f80360ff168203019150505b919050565b6000806000835160001a9050608060ff1681101561084557600191506108d2565b60b860ff16811015610862576001608060ff1682030191506108d1565b60c060ff168110156108925760b78103600185019450806020036101000a855104600182018101935050506108d0565b60f860ff168110156108af57600160c060ff1682030191506108cf565b60f78103600185019450806020036101000a855104600182018101935050505b5b5b5b8192505050919050565b60008114156108ea5761093e565b5b602060ff16811061091a5782518252602060ff1683019250602060ff1682019150602060ff16810390506108eb565b6000600182602060ff16036101000a03905080198451168184511681811785525050505b505050565b604051806040016040528060008152602001600081525090565b60405180604001604052806000815260200160008152509056fea265627a7a7231582083fbdacb76f32b4112d0f7db9a596937925824798a0026ba0232322390b5263764736f6c634300050b0032" + }, + "0000000000000000000000000000000000001010": { + "balance": "0x204fcd4f31349d83b6e00000", + "code": "0x60806040526004361061019c5760003560e01c806377d32e94116100ec578063acd06cb31161008a578063e306f77911610064578063e306f77914610a7b578063e614d0d614610aa6578063f2fde38b14610ad1578063fc0c546a14610b225761019c565b8063acd06cb31461097a578063b789543c146109cd578063cc79f97b14610a505761019c565b80639025e64c116100c65780639025e64c146107c957806395d89b4114610859578063a9059cbb146108e9578063abceeba21461094f5761019c565b806377d32e94146106315780638da5cb5b146107435780638f32d59b1461079a5761019c565b806347e7ef24116101595780637019d41a116101335780637019d41a1461053357806370a082311461058a578063715018a6146105ef578063771282f6146106065761019c565b806347e7ef2414610410578063485cc9551461046b57806360f96a8f146104dc5761019c565b806306fdde03146101a15780631499c5921461023157806318160ddd1461028257806319d27d9c146102ad5780632e1a7d4d146103b1578063313ce567146103df575b600080fd5b3480156101ad57600080fd5b506101b6610b79565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023d57600080fd5b506102806004803603602081101561025457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bb6565b005b34801561028e57600080fd5b50610297610c24565b6040518082815260200191505060405180910390f35b3480156102b957600080fd5b5061036f600480360360a08110156102d057600080fd5b81019080803590602001906401000000008111156102ed57600080fd5b8201836020820111156102ff57600080fd5b8035906020019184600183028401116401000000008311171561032157600080fd5b9091929391929390803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c3a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103dd600480360360208110156103c757600080fd5b8101908080359060200190929190505050610e06565b005b3480156103eb57600080fd5b506103f4610f58565b604051808260ff1660ff16815260200191505060405180910390f35b34801561041c57600080fd5b506104696004803603604081101561043357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f61565b005b34801561047757600080fd5b506104da6004803603604081101561048e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061111d565b005b3480156104e857600080fd5b506104f16111ec565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561053f57600080fd5b50610548611212565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059657600080fd5b506105d9600480360360208110156105ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611238565b6040518082815260200191505060405180910390f35b3480156105fb57600080fd5b50610604611259565b005b34801561061257600080fd5b5061061b611329565b6040518082815260200191505060405180910390f35b34801561063d57600080fd5b506107016004803603604081101561065457600080fd5b81019080803590602001909291908035906020019064010000000081111561067b57600080fd5b82018360208201111561068d57600080fd5b803590602001918460018302840111640100000000831117156106af57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061132f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561074f57600080fd5b506107586114b4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107a657600080fd5b506107af6114dd565b604051808215151515815260200191505060405180910390f35b3480156107d557600080fd5b506107de611534565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561081e578082015181840152602081019050610803565b50505050905090810190601f16801561084b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561086557600080fd5b5061086e61156d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108ae578082015181840152602081019050610893565b50505050905090810190601f1680156108db5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610935600480360360408110156108ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115aa565b604051808215151515815260200191505060405180910390f35b34801561095b57600080fd5b506109646115d0565b6040518082815260200191505060405180910390f35b34801561098657600080fd5b506109b36004803603602081101561099d57600080fd5b810190808035906020019092919050505061165d565b604051808215151515815260200191505060405180910390f35b3480156109d957600080fd5b50610a3a600480360360808110156109f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919050505061167d565b6040518082815260200191505060405180910390f35b348015610a5c57600080fd5b50610a6561169d565b6040518082815260200191505060405180910390f35b348015610a8757600080fd5b50610a906116a4565b6040518082815260200191505060405180910390f35b348015610ab257600080fd5b50610abb6116aa565b6040518082815260200191505060405180910390f35b348015610add57600080fd5b50610b2060048036036020811015610af457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611737565b005b348015610b2e57600080fd5b50610b37611754565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60606040518060400160405280600b81526020017f4d6174696320546f6b656e000000000000000000000000000000000000000000815250905090565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f44697361626c656420666561747572650000000000000000000000000000000081525060200191505060405180910390fd5b6000601260ff16600a0a6402540be40002905090565b6000808511610c4857600080fd5b6000831480610c575750824311155b610cc9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5369676e6174757265206973206578706972656400000000000000000000000081525060200191505060405180910390fd5b6000610cd73387878761167d565b9050600015156005600083815260200190815260200160002060009054906101000a900460ff16151514610d73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f536967206465616374697661746564000000000000000000000000000000000081525060200191505060405180910390fd5b60016005600083815260200190815260200160002060006101000a81548160ff021916908315150217905550610ded8189898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061132f565b9150610dfa82848861177a565b50509695505050505050565b60003390506000610e1682611238565b9050610e2d83600654611b3790919063ffffffff16565b600681905550600083118015610e4257508234145b610eb4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496e73756666696369656e7420616d6f756e740000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f8584610f3087611238565b60405180848152602001838152602001828152602001935050505060405180910390a3505050565b60006012905090565b610f696114dd565b610f7257600080fd5b600081118015610faf5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611e636023913960400191505060405180910390fd5b600061100f83611238565b905060008390508073ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015801561105c573d6000803e3d6000fd5b5061107283600654611b5790919063ffffffff16565b6006819055508373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f685856110f489611238565b60405180848152602001838152602001828152602001935050505060405180910390a350505050565b600760009054906101000a900460ff1615611183576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611e406023913960400191505060405180910390fd5b6001600760006101000a81548160ff02191690831515021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506111e882611b76565b5050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008173ffffffffffffffffffffffffffffffffffffffff16319050919050565b6112616114dd565b61126a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60065481565b600080600080604185511461134a57600093505050506114ae565b602085015192506040850151915060ff6041860151169050601b8160ff16101561137557601b810190505b601b8160ff161415801561138d5750601c8160ff1614155b1561139e57600093505050506114ae565b60018682858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156113fb573d6000803e3d6000fd5b505050602060405103519350600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156114aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4572726f7220696e2065637265636f766572000000000000000000000000000081525060200191505060405180910390fd5b5050505b92915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6040518060400160405280600381526020017f013881000000000000000000000000000000000000000000000000000000000081525081565b60606040518060400160405280600581526020017f4d41544943000000000000000000000000000000000000000000000000000000815250905090565b60008134146115bc57600090506115ca565b6115c733848461177a565b90505b92915050565b6040518060800160405280605b8152602001611ed8605b91396040516020018082805190602001908083835b6020831061161f57805182526020820191506020810190506020830392506115fc565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081565b60056020528060005260406000206000915054906101000a900460ff1681565b600061169361168e86868686611c6e565b611d44565b9050949350505050565b6201388181565b60015481565b604051806080016040528060528152602001611e86605291396040516020018082805190602001908083835b602083106116f957805182526020820191506020810190506020830392506116d6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081565b61173f6114dd565b61174857600080fd5b61175181611b76565b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156117fa57600080fd5b505afa15801561180e573d6000803e3d6000fd5b505050506040513d602081101561182457600080fd5b8101908080519060200190929190505050905060003073ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156118b657600080fd5b505afa1580156118ca573d6000803e3d6000fd5b505050506040513d60208110156118e057600080fd5b810190808051906020019092919050505090506118fe868686611d8e565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fe6497e3ee548a3372136af2fcb0696db31fc6cf20260707645068bd3fe97f3c48786863073ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611a0657600080fd5b505afa158015611a1a573d6000803e3d6000fd5b505050506040513d6020811015611a3057600080fd5b81019080805190602001909291905050503073ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611abe57600080fd5b505afa158015611ad2573d6000803e3d6000fd5b505050506040513d6020811015611ae857600080fd5b8101908080519060200190929190505050604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a46001925050509392505050565b600082821115611b4657600080fd5b600082840390508091505092915050565b600080828401905083811015611b6c57600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bb057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806040518060800160405280605b8152602001611ed8605b91396040516020018082805190602001908083835b60208310611cc05780518252602082019150602081019050602083039250611c9d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120905060405181815273ffffffffffffffffffffffffffffffffffffffff8716602082015285604082015284606082015283608082015260a0812092505081915050949350505050565b60008060015490506040517f190100000000000000000000000000000000000000000000000000000000000081528160028201528360228201526042812092505081915050919050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611dd4573d6000803e3d6000fd5b508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350505056fe54686520636f6e747261637420697320616c726561647920696e697469616c697a6564496e73756666696369656e7420616d6f756e74206f7220696e76616c69642075736572454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429546f6b656e5472616e736665724f726465722861646472657373207370656e6465722c75696e7432353620746f6b656e49644f72416d6f756e742c6279746573333220646174612c75696e743235362065787069726174696f6e29a265627a7a723158208f81700133738d766ae3d68af591ad588b0125bd91449192179f460893f79f6b64736f6c634300050b0032" + }, + "C26880A0AF2EA0c7E8130e6EC47Af756465452E8": { + "balance": "0x3635c9adc5dea00000" + }, + "be188D6641E8b680743A4815dFA0f6208038960F": { + "balance": "0x3635c9adc5dea00000" + }, + "c275DC8bE39f50D12F66B6a63629C39dA5BAe5bd": { + "balance": "0x3635c9adc5dea00000" + }, + "F903ba9E006193c1527BfBe65fe2123704EA3F99": { + "balance": "0x3635c9adc5dea00000" + }, + "928Ed6A3e94437bbd316cCAD78479f1d163A6A8C": { + "balance": "0x3635c9adc5dea00000" + } + }, + "number": "0x0", + "gasUsed": "0x0", + "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000" +} diff --git a/internal/cli/server/chains/mumbai.go b/internal/cli/server/chains/mumbai.go index 4d250dbf2b..1343230b95 100644 --- a/internal/cli/server/chains/mumbai.go +++ b/internal/cli/server/chains/mumbai.go @@ -31,12 +31,14 @@ var mumbaiTestnet = &Chain{ Bor: ¶ms.BorConfig{ JaipurBlock: 22770000, Period: map[string]uint64{ - "0": 2, + "0": 2, + "25275000": 5, }, ProducerDelay: 6, Sprint: 64, BackupMultiplier: map[string]uint64{ - "0": 2, + "0": 2, + "25275000": 5, }, ValidatorContract: "0x0000000000000000000000000000000000001000", StateReceiverContract: "0x0000000000000000000000000000000000001001", diff --git a/params/config.go b/params/config.go index 3c461a8e57..16bac00ddf 100644 --- a/params/config.go +++ b/params/config.go @@ -309,12 +309,14 @@ var ( Bor: &BorConfig{ JaipurBlock: 22770000, Period: map[string]uint64{ - "0": 2, + "0": 2, + "25275000": 5, }, ProducerDelay: 6, Sprint: 64, BackupMultiplier: map[string]uint64{ - "0": 2, + "0": 2, + "25275000": 5, }, ValidatorContract: "0x0000000000000000000000000000000000001000", StateReceiverContract: "0x0000000000000000000000000000000000001001", diff --git a/params/version.go b/params/version.go index fb54d1ace9..c9261a745d 100644 --- a/params/version.go +++ b/params/version.go @@ -24,7 +24,7 @@ const ( VersionMajor = 0 // Major version component of the current release VersionMinor = 2 // Minor version component of the current release VersionPatch = 15 // Patch version component of the current release - VersionMeta = "beta-1" // Version metadata to append to the version string + VersionMeta = "beta-2" // Version metadata to append to the version string ) // Version holds the textual version string. From 111a204bbaa0d6b1e94fa58a56c00dab8adc1652 Mon Sep 17 00:00:00 2001 From: Arpit Temani Date: Thu, 24 Feb 2022 18:04:00 +0530 Subject: [PATCH 09/41] remove file --- builder/files/genesys-testnet-v4.json | 82 --------------------------- 1 file changed, 82 deletions(-) delete mode 100644 builder/files/genesys-testnet-v4.json diff --git a/builder/files/genesys-testnet-v4.json b/builder/files/genesys-testnet-v4.json deleted file mode 100644 index 0215aee246..0000000000 --- a/builder/files/genesys-testnet-v4.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "config": { - "chainId": 80001, - "homesteadBlock": 0, - "eip150Block": 0, - "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "eip155Block": 0, - "eip158Block": 0, - "byzantiumBlock": 0, - "constantinopleBlock": 0, - "petersburgBlock": 0, - "istanbulBlock": 2722000, - "muirGlacierBlock": 2722000, - "berlinBlock": 13996000, - "londonBlock": 22640000, - "bor": { - "jaipurBlock": 22770000, - "period": { - "0": 2, - "25275000": 5 - }, - "producerDelay": 6, - "sprint": 64, - "backupMultiplier": { - "0": 2, - "25275000": 5 - }, - "validatorContract": "0x0000000000000000000000000000000000001000", - "stateReceiverContract": "0x0000000000000000000000000000000000001001", - "burntContract": { - "22640000": "0x70bcA57F4579f58670aB2d18Ef16e02C17553C38" - }, - "blockAlloc": { - "22244000": { - "0000000000000000000000000000000000001010": { - "balance": "0x0", - "code": "0x60806040526004361061019c5760003560e01c806377d32e94116100ec578063acd06cb31161008a578063e306f77911610064578063e306f77914610a7b578063e614d0d614610aa6578063f2fde38b14610ad1578063fc0c546a14610b225761019c565b8063acd06cb31461097a578063b789543c146109cd578063cc79f97b14610a505761019c565b80639025e64c116100c65780639025e64c146107c957806395d89b4114610859578063a9059cbb146108e9578063abceeba21461094f5761019c565b806377d32e94146106315780638da5cb5b146107435780638f32d59b1461079a5761019c565b806347e7ef24116101595780637019d41a116101335780637019d41a1461053357806370a082311461058a578063715018a6146105ef578063771282f6146106065761019c565b806347e7ef2414610410578063485cc9551461046b57806360f96a8f146104dc5761019c565b806306fdde03146101a15780631499c5921461023157806318160ddd1461028257806319d27d9c146102ad5780632e1a7d4d146103b1578063313ce567146103df575b600080fd5b3480156101ad57600080fd5b506101b6610b79565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023d57600080fd5b506102806004803603602081101561025457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bb6565b005b34801561028e57600080fd5b50610297610c24565b6040518082815260200191505060405180910390f35b3480156102b957600080fd5b5061036f600480360360a08110156102d057600080fd5b81019080803590602001906401000000008111156102ed57600080fd5b8201836020820111156102ff57600080fd5b8035906020019184600183028401116401000000008311171561032157600080fd5b9091929391929390803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c3a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103dd600480360360208110156103c757600080fd5b8101908080359060200190929190505050610caa565b005b3480156103eb57600080fd5b506103f4610dfc565b604051808260ff1660ff16815260200191505060405180910390f35b34801561041c57600080fd5b506104696004803603604081101561043357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e05565b005b34801561047757600080fd5b506104da6004803603604081101561048e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fc1565b005b3480156104e857600080fd5b506104f1611090565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561053f57600080fd5b506105486110b6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059657600080fd5b506105d9600480360360208110156105ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110dc565b6040518082815260200191505060405180910390f35b3480156105fb57600080fd5b506106046110fd565b005b34801561061257600080fd5b5061061b6111cd565b6040518082815260200191505060405180910390f35b34801561063d57600080fd5b506107016004803603604081101561065457600080fd5b81019080803590602001909291908035906020019064010000000081111561067b57600080fd5b82018360208201111561068d57600080fd5b803590602001918460018302840111640100000000831117156106af57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506111d3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561074f57600080fd5b50610758611358565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107a657600080fd5b506107af611381565b604051808215151515815260200191505060405180910390f35b3480156107d557600080fd5b506107de6113d8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561081e578082015181840152602081019050610803565b50505050905090810190601f16801561084b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561086557600080fd5b5061086e611411565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108ae578082015181840152602081019050610893565b50505050905090810190601f1680156108db5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610935600480360360408110156108ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061144e565b604051808215151515815260200191505060405180910390f35b34801561095b57600080fd5b50610964611474565b6040518082815260200191505060405180910390f35b34801561098657600080fd5b506109b36004803603602081101561099d57600080fd5b8101908080359060200190929190505050611501565b604051808215151515815260200191505060405180910390f35b3480156109d957600080fd5b50610a3a600480360360808110156109f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190505050611521565b6040518082815260200191505060405180910390f35b348015610a5c57600080fd5b50610a65611541565b6040518082815260200191505060405180910390f35b348015610a8757600080fd5b50610a90611548565b6040518082815260200191505060405180910390f35b348015610ab257600080fd5b50610abb61154e565b6040518082815260200191505060405180910390f35b348015610add57600080fd5b50610b2060048036036020811015610af457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115db565b005b348015610b2e57600080fd5b50610b376115f8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60606040518060400160405280600b81526020017f4d6174696320546f6b656e000000000000000000000000000000000000000000815250905090565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f44697361626c656420666561747572650000000000000000000000000000000081525060200191505060405180910390fd5b6000601260ff16600a0a6402540be40002905090565b60006040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f44697361626c656420666561747572650000000000000000000000000000000081525060200191505060405180910390fd5b60003390506000610cba826110dc565b9050610cd18360065461161e90919063ffffffff16565b600681905550600083118015610ce657508234145b610d58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496e73756666696369656e7420616d6f756e740000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f8584610dd4876110dc565b60405180848152602001838152602001828152602001935050505060405180910390a3505050565b60006012905090565b610e0d611381565b610e1657600080fd5b600081118015610e535750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b610ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611da96023913960400191505060405180910390fd5b6000610eb3836110dc565b905060008390508073ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015610f00573d6000803e3d6000fd5b50610f168360065461163e90919063ffffffff16565b6006819055508373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f68585610f98896110dc565b60405180848152602001838152602001828152602001935050505060405180910390a350505050565b600760009054906101000a900460ff1615611027576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611d866023913960400191505060405180910390fd5b6001600760006101000a81548160ff02191690831515021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061108c8261165d565b5050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008173ffffffffffffffffffffffffffffffffffffffff16319050919050565b611105611381565b61110e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60065481565b60008060008060418551146111ee5760009350505050611352565b602085015192506040850151915060ff6041860151169050601b8160ff16101561121957601b810190505b601b8160ff16141580156112315750601c8160ff1614155b156112425760009350505050611352565b60018682858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561129f573d6000803e3d6000fd5b505050602060405103519350600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561134e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4572726f7220696e2065637265636f766572000000000000000000000000000081525060200191505060405180910390fd5b5050505b92915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6040518060400160405280600381526020017f013881000000000000000000000000000000000000000000000000000000000081525081565b60606040518060400160405280600581526020017f4d41544943000000000000000000000000000000000000000000000000000000815250905090565b6000813414611460576000905061146e565b61146b338484611755565b90505b92915050565b6040518060800160405280605b8152602001611e1e605b91396040516020018082805190602001908083835b602083106114c357805182526020820191506020810190506020830392506114a0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081565b60056020528060005260406000206000915054906101000a900460ff1681565b600061153761153286868686611b12565b611be8565b9050949350505050565b6201388181565b60015481565b604051806080016040528060528152602001611dcc605291396040516020018082805190602001908083835b6020831061159d578051825260208201915060208101905060208303925061157a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081565b6115e3611381565b6115ec57600080fd5b6115f58161165d565b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008282111561162d57600080fd5b600082840390508091505092915050565b60008082840190508381101561165357600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561169757600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156117d557600080fd5b505afa1580156117e9573d6000803e3d6000fd5b505050506040513d60208110156117ff57600080fd5b8101908080519060200190929190505050905060003073ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561189157600080fd5b505afa1580156118a5573d6000803e3d6000fd5b505050506040513d60208110156118bb57600080fd5b810190808051906020019092919050505090506118d9868686611c32565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fe6497e3ee548a3372136af2fcb0696db31fc6cf20260707645068bd3fe97f3c48786863073ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156119e157600080fd5b505afa1580156119f5573d6000803e3d6000fd5b505050506040513d6020811015611a0b57600080fd5b81019080805190602001909291905050503073ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611a9957600080fd5b505afa158015611aad573d6000803e3d6000fd5b505050506040513d6020811015611ac357600080fd5b8101908080519060200190929190505050604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a46001925050509392505050565b6000806040518060800160405280605b8152602001611e1e605b91396040516020018082805190602001908083835b60208310611b645780518252602082019150602081019050602083039250611b41565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120905060405181815273ffffffffffffffffffffffffffffffffffffffff8716602082015285604082015284606082015283608082015260a0812092505081915050949350505050565b60008060015490506040517f190100000000000000000000000000000000000000000000000000000000000081528160028201528360228201526042812092505081915050919050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cd4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f63616e27742073656e6420746f204d524332300000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d1a573d6000803e3d6000fd5b508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350505056fe54686520636f6e747261637420697320616c726561647920696e697469616c697a6564496e73756666696369656e7420616d6f756e74206f7220696e76616c69642075736572454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429546f6b656e5472616e736665724f726465722861646472657373207370656e6465722c75696e7432353620746f6b656e49644f72416d6f756e742c6279746573333220646174612c75696e743235362065787069726174696f6e29a265627a7a72315820ccd6c2a9c259832bbb367986ee06cd87af23022681b0cb22311a864b701d939564736f6c63430005100032" - } - } - } - } - }, - "nonce": "0x0", - "timestamp": "0x5ce28211", - "extraData": "", - "gasLimit": "0x989680", - "difficulty": "0x1", - "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "coinbase": "0x0000000000000000000000000000000000000000", - "alloc": { - "0000000000000000000000000000000000001000": { - "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b50600436106101f05760003560e01c806360c8614d1161010f578063af26aa96116100a2578063d5b844eb11610071578063d5b844eb14610666578063dcf2793a14610684578063e3b7c924146106b6578063f59cf565146106d4576101f0565b8063af26aa96146105c7578063b71d7a69146105e7578063b7ab4db514610617578063c1b3c91914610636576101f0565b806370ba5707116100de57806370ba57071461052b57806398ab2b621461055b5780639d11b80714610579578063ae756451146105a9576101f0565b806360c8614d1461049c57806365b3a1e2146104bc57806366332354146104db578063687a9bd6146104f9576101f0565b80633434735f1161018757806344d6528f1161015657806344d6528f146103ee5780634dbc959f1461041e57806355614fcc1461043c578063582a8d081461046c576101f0565b80633434735f1461035257806335ddfeea1461037057806343ee8213146103a057806344c15cb1146103be576101f0565b806323f2a73f116101c357806323f2a73f146102a45780632bc06564146102d45780632de3a180146102f25780632eddf35214610322576101f0565b8063047a6c5b146101f55780630c35b1cb146102275780631270b5741461025857806323c2a2b414610288575b600080fd5b61020f600480360361020a9190810190612b24565b610706565b60405161021e93929190613463565b60405180910390f35b610241600480360361023c9190810190612b24565b61075d565b60405161024f929190613284565b60405180910390f35b610272600480360361026d9190810190612b4d565b610939565b60405161027f91906132bb565b60405180910390f35b6102a2600480360361029d9190810190612c2c565b610a91565b005b6102be60048036036102b99190810190612b4d565b61112a565b6040516102cb91906132bb565b60405180910390f35b6102dc611281565b6040516102e99190613411565b60405180910390f35b61030c60048036036103079190810190612a81565b611286565b60405161031991906132d6565b60405180910390f35b61033c60048036036103379190810190612b24565b611307565b6040516103499190613411565b60405180910390f35b61035a611437565b6040516103679190613269565b60405180910390f35b61038a60048036036103859190810190612abd565b61144f565b60405161039791906132bb565b60405180910390f35b6103a861151a565b6040516103b591906132d6565b60405180910390f35b6103d860048036036103d39190810190612b89565b611531565b6040516103e59190613411565b60405180910390f35b61040860048036036104039190810190612b4d565b611619565b60405161041591906133f6565b60405180910390f35b610426611781565b6040516104339190613411565b60405180910390f35b61045660048036036104519190810190612a06565b611791565b60405161046391906132bb565b60405180910390f35b61048660048036036104819190810190612a2f565b6117ab565b60405161049391906132d6565b60405180910390f35b6104a4611829565b6040516104b393929190613463565b60405180910390f35b6104c461189d565b6040516104d2929190613284565b60405180910390f35b6104e3611b6e565b6040516104f09190613411565b60405180910390f35b610513600480360361050e9190810190612bf0565b611b73565b6040516105229392919061342c565b60405180910390f35b61054560048036036105409190810190612a06565b611bd7565b60405161055291906132bb565b60405180910390f35b610563611bf1565b60405161057091906132d6565b60405180910390f35b610593600480360361058e9190810190612b24565b611c08565b6040516105a09190613411565b60405180910390f35b6105b1611d39565b6040516105be91906132d6565b60405180910390f35b6105cf611d50565b6040516105de93929190613463565b60405180910390f35b61060160048036036105fc9190810190612b24565b611db1565b60405161060e9190613411565b60405180910390f35b61061f611eb1565b60405161062d929190613284565b60405180910390f35b610650600480360361064b9190810190612b24565b611ec5565b60405161065d9190613411565b60405180910390f35b61066e611ee6565b60405161067b919061349a565b60405180910390f35b61069e60048036036106999190810190612bf0565b611eeb565b6040516106ad9392919061342c565b60405180910390f35b6106be611f4f565b6040516106cb9190613411565b60405180910390f35b6106ee60048036036106e99190810190612b24565b611f61565b6040516106fd93929190613463565b60405180910390f35b60008060006002600085815260200190815260200160002060000154600260008681526020019081526020016000206001015460026000878152602001908152602001600020600201549250925092509193909250565b60608060ff83116107795761077061189d565b91509150610934565b600061078484611db1565b9050606060016000838152602001908152602001600020805490506040519080825280602002602001820160405280156107cd5781602001602082028038833980820191505090505b509050606060016000848152602001908152602001600020805490506040519080825280602002602001820160405280156108175781602001602082028038833980820191505090505b50905060008090505b60016000858152602001908152602001600020805490508110156109295760016000858152602001908152602001600020818154811061085c57fe5b906000526020600020906003020160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683828151811061089a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001600085815260200190815260200160002081815481106108f257fe5b90600052602060002090600302016001015482828151811061091057fe5b6020026020010181815250508080600101915050610820565b508181945094505050505b915091565b6000606060016000858152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610a0c578382906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190610970565b50505050905060008090505b8151811015610a84578373ffffffffffffffffffffffffffffffffffffffff16828281518110610a4457fe5b60200260200101516040015173ffffffffffffffffffffffffffffffffffffffff161415610a7757600192505050610a8b565b8080600101915050610a18565b5060009150505b92915050565b73fffffffffffffffffffffffffffffffffffffffe73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0a906133d6565b60405180910390fd5b6000610b1d611781565b90506000811415610b3157610b30611f8b565b5b610b456001826122ac90919063ffffffff16565b8814610b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7d90613356565b60405180910390fd5b868611610bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbf906133b6565b60405180910390fd5b6000604060018989030181610bd957fe5b0614610c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1190613396565b60405180910390fd5b8660026000838152602001908152602001600020600101541115610c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6a90613336565b60405180910390fd5b6000600260008a81526020019081526020016000206000015414610ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc390613376565b60405180910390fd5b604051806060016040528089815260200188815260200187815250600260008a8152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050600388908060018154018082558091505090600182039060005260206000200160009091929091909150555060008060008a815260200190815260200160002081610d669190612800565b506000600160008a815260200190815260200160002081610d879190612800565b506060610ddf610dda87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506122cb565b6122f9565b905060008090505b8151811015610f51576060610e0e838381518110610e0157fe5b60200260200101516122f9565b90506000808c81526020019081526020016000208054809190600101610e349190612800565b506040518060600160405280610e5d83600081518110610e5057fe5b60200260200101516123d6565b8152602001610e7f83600181518110610e7257fe5b60200260200101516123d6565b8152602001610ea183600281518110610e9457fe5b6020026020010151612447565b73ffffffffffffffffffffffffffffffffffffffff168152506000808d81526020019081526020016000208381548110610ed757fe5b9060005260206000209060030201600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050508080600101915050610de7565b506060610fa9610fa486868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506122cb565b6122f9565b905060008090505b815181101561111d576060610fd8838381518110610fcb57fe5b60200260200101516122f9565b9050600160008d81526020019081526020016000208054809190600101610fff9190612800565b5060405180606001604052806110288360008151811061101b57fe5b60200260200101516123d6565b815260200161104a8360018151811061103d57fe5b60200260200101516123d6565b815260200161106c8360028151811061105f57fe5b6020026020010151612447565b73ffffffffffffffffffffffffffffffffffffffff16815250600160008e815260200190815260200160002083815481106110a357fe5b9060005260206000209060030201600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050508080600101915050610fb1565b5050505050505050505050565b60006060600080858152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156111fc578382906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611160565b50505050905060008090505b8151811015611274578373ffffffffffffffffffffffffffffffffffffffff1682828151811061123457fe5b60200260200101516040015173ffffffffffffffffffffffffffffffffffffffff1614156112675760019250505061127b565b8080600101915050611208565b5060009150505b92915050565b604081565b60006002600160f81b84846040516020016112a3939291906131d6565b6040516020818303038152906040526040516112bf9190613213565b602060405180830381855afa1580156112dc573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052506112ff9190810190612a58565b905092915050565b60006060600080848152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156113d9578382906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250508152602001906001019061133d565b505050509050600080905060008090505b825181101561142c5761141d83828151811061140257fe5b602002602001015160200151836122ac90919063ffffffff16565b915080806001019150506113ea565b508092505050919050565b73fffffffffffffffffffffffffffffffffffffffe81565b600080600080859050600060218087518161146657fe5b04029050600081111561147f5761147c876117ab565b91505b6000602190505b818111611509576000600182038801519050818801519550806000602081106114ab57fe5b1a60f81b9450600060f81b857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156114f0576114e98685611286565b93506114fd565b6114fa8487611286565b93505b50602181019050611486565b508782149450505050509392505050565b60405161152690613254565b604051809103902081565b60008060009050600080905060008090505b84518167ffffffffffffffff16101561160c57606061156e868367ffffffffffffffff16604161246a565b9050600061158582896124f690919063ffffffff16565b905061158f612832565b6115998a83611619565b90506115a58a8361112a565b80156115dc57508473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16115b156115fe578194506115fb8160200151876122ac90919063ffffffff16565b95505b505050604181019050611543565b5081925050509392505050565b611621612832565b6060600080858152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156116f1578382906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611655565b50505050905060008090505b8151811015611779578373ffffffffffffffffffffffffffffffffffffffff1682828151811061172957fe5b60200260200101516040015173ffffffffffffffffffffffffffffffffffffffff16141561176c5781818151811061175d57fe5b60200260200101519250611779565b80806001019150506116fd565b505092915050565b600061178c43611db1565b905090565b60006117a461179e611781565b8361112a565b9050919050565b60006002600060f81b836040516020016117c69291906131aa565b6040516020818303038152906040526040516117e29190613213565b602060405180830381855afa1580156117ff573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052506118229190810190612a58565b9050919050565b60008060008061184a600161183c611781565b6122ac90919063ffffffff16565b905060026000828152602001908152602001600020600001546002600083815260200190815260200160002060010154600260008481526020019081526020016000206002015493509350935050909192565b606080606060056040519080825280602002602001820160405280156118d25781602001602082028038833980820191505090505b50905073c26880a0af2ea0c7e8130e6ec47af756465452e8816000815181106118f757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073be188d6641e8b680743a4815dfa0f6208038960f8160018151811061195357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c275dc8be39f50d12f66b6a63629c39da5bae5bd816002815181106119af57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073f903ba9e006193c1527bfbe65fe2123704ea3f9981600381518110611a0b57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073928ed6a3e94437bbd316ccad78479f1d163a6a8c81600481518110611a6757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060606005604051908082528060200260200182016040528015611ad35781602001602082028038833980820191505090505b50905061271081600081518110611ae657fe5b60200260200101818152505061271081600181518110611b0257fe5b60200260200101818152505061271081600281518110611b1e57fe5b60200260200101818152505061271081600381518110611b3a57fe5b60200260200101818152505061271081600481518110611b5657fe5b60200260200101818152505081819350935050509091565b60ff81565b60016020528160005260406000208181548110611b8c57fe5b9060005260206000209060030201600091509150508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b6000611bea611be4611781565b83610939565b9050919050565b604051611bfd9061322a565b604051809103902081565b6000606060016000848152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015611cdb578382906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611c3f565b505050509050600080905060008090505b8251811015611d2e57611d1f838281518110611d0457fe5b602002602001015160200151836122ac90919063ffffffff16565b91508080600101915050611cec565b508092505050919050565b604051611d459061323f565b604051809103902081565b600080600080611d5e611781565b905060026000828152602001908152602001600020600001546002600083815260200190815260200160002060010154600260008481526020019081526020016000206002015493509350935050909192565b60008060038054905090505b6000811115611e7157611dce612869565b6002600060036001850381548110611de257fe5b906000526020600020015481526020019081526020016000206040518060600160405290816000820154815260200160018201548152602001600282015481525050905083816020015111158015611e3f57506000816040015114155b8015611e4f575080604001518411155b15611e6257806000015192505050611eac565b50808060019003915050611dbd565b5060006003805490501115611ea757600360016003805490500381548110611e9557fe5b90600052602060002001549050611eac565b600090505b919050565b606080611ebd4361075d565b915091509091565b60038181548110611ed257fe5b906000526020600020016000915090505481565b600281565b60006020528160005260406000208181548110611f0457fe5b9060005260206000209060030201600091509150508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b600060404381611f5b57fe5b04905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b606080611f9661189d565b8092508193505050600080905060405180606001604052808281526020016000815260200160ff81525060026000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050600381908060018154018082558091505090600182039060005260206000200160009091929091909150555060008060008381526020019081526020016000208161203f9190612800565b50600060016000838152602001908152602001600020816120609190612800565b5060008090505b83518110156121825760008083815260200190815260200160002080548091906001016120949190612800565b5060405180606001604052808281526020018483815181106120b257fe5b602002602001015181526020018583815181106120cb57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16815250600080848152602001908152602001600020828154811061210957fe5b9060005260206000209060030201600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050508080600101915050612067565b5060008090505b83518110156122a6576001600083815260200190815260200160002080548091906001016121b79190612800565b5060405180606001604052808281526020018483815181106121d557fe5b602002602001015181526020018583815181106121ee57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1681525060016000848152602001908152602001600020828154811061222d57fe5b9060005260206000209060030201600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050508080600101915050612189565b50505050565b6000808284019050838110156122c157600080fd5b8091505092915050565b6122d361288a565b600060208301905060405180604001604052808451815260200182815250915050919050565b606061230482612600565b61230d57600080fd5b60006123188361264e565b905060608160405190808252806020026020018201604052801561235657816020015b6123436128a4565b81526020019060019003908161233b5790505b509050600061236885602001516126bf565b8560200151019050600080600090505b848110156123c95761238983612748565b91506040518060400160405280838152602001848152508482815181106123ac57fe5b602002602001018190525081830192508080600101915050612378565b5082945050505050919050565b60008082600001511180156123f057506021826000015111155b6123f957600080fd5b600061240883602001516126bf565b9050600081846000015103905060008083866020015101905080519150602083101561243b57826020036101000a820491505b81945050505050919050565b6000601582600001511461245a57600080fd5b612463826123d6565b9050919050565b60608183018451101561247c57600080fd5b6060821560008114612499576040519150602082016040526124ea565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156124d757805183526020830192506020810190506124ba565b50868552601f19601f8301166040525050505b50809150509392505050565b600080600080604185511461251157600093505050506125fa565b602085015192506040850151915060ff6041860151169050601b8160ff16101561253c57601b810190505b601b8160ff16141580156125545750601c8160ff1614155b1561256557600093505050506125fa565b60006001878386866040516000815260200160405260405161258a94939291906132f1565b6020604051602081039080840390855afa1580156125ac573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156125f257600080fd5b809450505050505b92915050565b600080826000015114156126175760009050612649565b60008083602001519050805160001a915060c060ff168260ff16101561264257600092505050612649565b6001925050505b919050565b6000808260000151141561266557600090506126ba565b6000809050600061267984602001516126bf565b84602001510190506000846000015185602001510190505b808210156126b3576126a282612748565b820191508280600101935050612691565b8293505050505b919050565b600080825160001a9050608060ff168110156126df576000915050612743565b60b860ff16811080612704575060c060ff168110158015612703575060f860ff1681105b5b15612713576001915050612743565b60c060ff168110156127335760018060b80360ff16820301915050612743565b60018060f80360ff168203019150505b919050565b6000806000835160001a9050608060ff1681101561276957600191506127f6565b60b860ff16811015612786576001608060ff1682030191506127f5565b60c060ff168110156127b65760b78103600185019450806020036101000a855104600182018101935050506127f4565b60f860ff168110156127d357600160c060ff1682030191506127f3565b60f78103600185019450806020036101000a855104600182018101935050505b5b5b5b8192505050919050565b81548183558181111561282d5760030281600302836000526020600020918201910161282c91906128be565b5b505050565b60405180606001604052806000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b60405180606001604052806000815260200160008152602001600081525090565b604051806040016040528060008152602001600081525090565b604051806040016040528060008152602001600081525090565b61291191905b8082111561290d5760008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506003016128c4565b5090565b90565b60008135905061292381613693565b92915050565b600081359050612938816136aa565b92915050565b60008151905061294d816136aa565b92915050565b60008083601f84011261296557600080fd5b8235905067ffffffffffffffff81111561297e57600080fd5b60208301915083600182028301111561299657600080fd5b9250929050565b600082601f8301126129ae57600080fd5b81356129c16129bc826134e2565b6134b5565b915080825260208301602083018583830111156129dd57600080fd5b6129e883828461363d565b50505092915050565b600081359050612a00816136c1565b92915050565b600060208284031215612a1857600080fd5b6000612a2684828501612914565b91505092915050565b600060208284031215612a4157600080fd5b6000612a4f84828501612929565b91505092915050565b600060208284031215612a6a57600080fd5b6000612a788482850161293e565b91505092915050565b60008060408385031215612a9457600080fd5b6000612aa285828601612929565b9250506020612ab385828601612929565b9150509250929050565b600080600060608486031215612ad257600080fd5b6000612ae086828701612929565b9350506020612af186828701612929565b925050604084013567ffffffffffffffff811115612b0e57600080fd5b612b1a8682870161299d565b9150509250925092565b600060208284031215612b3657600080fd5b6000612b44848285016129f1565b91505092915050565b60008060408385031215612b6057600080fd5b6000612b6e858286016129f1565b9250506020612b7f85828601612914565b9150509250929050565b600080600060608486031215612b9e57600080fd5b6000612bac868287016129f1565b9350506020612bbd86828701612929565b925050604084013567ffffffffffffffff811115612bda57600080fd5b612be68682870161299d565b9150509250925092565b60008060408385031215612c0357600080fd5b6000612c11858286016129f1565b9250506020612c22858286016129f1565b9150509250929050565b600080600080600080600060a0888a031215612c4757600080fd5b6000612c558a828b016129f1565b9750506020612c668a828b016129f1565b9650506040612c778a828b016129f1565b955050606088013567ffffffffffffffff811115612c9457600080fd5b612ca08a828b01612953565b9450945050608088013567ffffffffffffffff811115612cbf57600080fd5b612ccb8a828b01612953565b925092505092959891949750929550565b6000612ce88383612d0c565b60208301905092915050565b6000612d00838361317d565b60208301905092915050565b612d15816135b2565b82525050565b612d24816135b2565b82525050565b6000612d358261352e565b612d3f8185613569565b9350612d4a8361350e565b8060005b83811015612d7b578151612d628882612cdc565b9750612d6d8361354f565b925050600181019050612d4e565b5085935050505092915050565b6000612d9382613539565b612d9d818561357a565b9350612da88361351e565b8060005b83811015612dd9578151612dc08882612cf4565b9750612dcb8361355c565b925050600181019050612dac565b5085935050505092915050565b612def816135c4565b82525050565b612e06612e01826135d0565b61367f565b82525050565b612e15816135fc565b82525050565b612e2c612e27826135fc565b613689565b82525050565b6000612e3d82613544565b612e47818561358b565b9350612e5781856020860161364c565b80840191505092915050565b6000612e706004836135a7565b91507f766f7465000000000000000000000000000000000000000000000000000000006000830152600482019050919050565b6000612eb0602d83613596565b91507f537461727420626c6f636b206d7573742062652067726561746572207468616e60008301527f2063757272656e74207370616e000000000000000000000000000000000000006020830152604082019050919050565b6000612f16600f83613596565b91507f496e76616c6964207370616e20696400000000000000000000000000000000006000830152602082019050919050565b6000612f56601383613596565b91507f5370616e20616c726561647920657869737473000000000000000000000000006000830152602082019050919050565b6000612f96604583613596565b91507f446966666572656e6365206265747765656e20737461727420616e6420656e6460008301527f20626c6f636b206d75737420626520696e206d756c7469706c6573206f66207360208301527f7072696e740000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000613022602a83613596565b91507f456e6420626c6f636b206d7573742062652067726561746572207468616e207360008301527f7461727420626c6f636b000000000000000000000000000000000000000000006020830152604082019050919050565b6000613088601283613596565b91507f4e6f742053797374656d204164646573732100000000000000000000000000006000830152602082019050919050565b60006130c86005836135a7565b91507f38303030310000000000000000000000000000000000000000000000000000006000830152600582019050919050565b6000613108600e836135a7565b91507f6865696d64616c6c2d38303030310000000000000000000000000000000000006000830152600e82019050919050565b606082016000820151613151600085018261317d565b506020820151613164602085018261317d565b5060408201516131776040850182612d0c565b50505050565b61318681613626565b82525050565b61319581613626565b82525050565b6131a481613630565b82525050565b60006131b68285612df5565b6001820191506131c68284612e1b565b6020820191508190509392505050565b60006131e28286612df5565b6001820191506131f28285612e1b565b6020820191506132028284612e1b565b602082019150819050949350505050565b600061321f8284612e32565b915081905092915050565b600061323582612e63565b9150819050919050565b600061324a826130bb565b9150819050919050565b600061325f826130fb565b9150819050919050565b600060208201905061327e6000830184612d1b565b92915050565b6000604082019050818103600083015261329e8185612d2a565b905081810360208301526132b28184612d88565b90509392505050565b60006020820190506132d06000830184612de6565b92915050565b60006020820190506132eb6000830184612e0c565b92915050565b60006080820190506133066000830187612e0c565b613313602083018661319b565b6133206040830185612e0c565b61332d6060830184612e0c565b95945050505050565b6000602082019050818103600083015261334f81612ea3565b9050919050565b6000602082019050818103600083015261336f81612f09565b9050919050565b6000602082019050818103600083015261338f81612f49565b9050919050565b600060208201905081810360008301526133af81612f89565b9050919050565b600060208201905081810360008301526133cf81613015565b9050919050565b600060208201905081810360008301526133ef8161307b565b9050919050565b600060608201905061340b600083018461313b565b92915050565b6000602082019050613426600083018461318c565b92915050565b6000606082019050613441600083018661318c565b61344e602083018561318c565b61345b6040830184612d1b565b949350505050565b6000606082019050613478600083018661318c565b613485602083018561318c565b613492604083018461318c565b949350505050565b60006020820190506134af600083018461319b565b92915050565b6000604051905081810181811067ffffffffffffffff821117156134d857600080fd5b8060405250919050565b600067ffffffffffffffff8211156134f957600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006135bd82613606565b9050919050565b60008115159050919050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b8381101561366a57808201518184015260208101905061364f565b83811115613679576000848401525b50505050565b6000819050919050565b6000819050919050565b61369c816135b2565b81146136a757600080fd5b50565b6136b3816135fc565b81146136be57600080fd5b50565b6136ca81613626565b81146136d557600080fd5b5056fea365627a7a723158208f52ee07630ffe523cc6ad3e15f437f973dcfa36729cd697f9b0fc4a145a48f06c6578706572696d656e74616cf564736f6c634300050b0040" - }, - "0000000000000000000000000000000000001001": { - "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806319494a17146100465780633434735f146100e15780635407ca671461012b575b600080fd5b6100c76004803603604081101561005c57600080fd5b81019080803590602001909291908035906020019064010000000081111561008357600080fd5b82018360208201111561009557600080fd5b803590602001918460018302840111640100000000831117156100b757600080fd5b9091929391929390505050610149565b604051808215151515815260200191505060405180910390f35b6100e961047a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610133610492565b6040518082815260200191505060405180910390f35b600073fffffffffffffffffffffffffffffffffffffffe73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f742053797374656d2041646465737321000000000000000000000000000081525060200191505060405180910390fd5b606061025761025285858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610498565b6104c6565b905060006102788260008151811061026b57fe5b60200260200101516105a3565b905080600160005401146102f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f537461746549647320617265206e6f742073657175656e7469616c000000000081525060200191505060405180910390fd5b600080815480929190600101919050555060006103248360018151811061031757fe5b6020026020010151610614565b905060606103458460028151811061033857fe5b6020026020010151610637565b9050610350826106c3565b1561046f576000624c4b409050606084836040516024018083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156103aa57808201518184015260208101905061038f565b50505050905090810190601f1680156103d75780820380516001836020036101000a031916815260200191505b5093505050506040516020818303038152906040527f26c53bea000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060008082516020840160008887f1965050505b505050509392505050565b73fffffffffffffffffffffffffffffffffffffffe81565b60005481565b6104a0610943565b600060208301905060405180604001604052808451815260200182815250915050919050565b60606104d1826106dc565b6104da57600080fd5b60006104e58361072a565b905060608160405190808252806020026020018201604052801561052357816020015b61051061095d565b8152602001906001900390816105085790505b5090506000610535856020015161079b565b8560200151019050600080600090505b848110156105965761055683610824565b915060405180604001604052808381526020018481525084828151811061057957fe5b602002602001018190525081830192508080600101915050610545565b5082945050505050919050565b60008082600001511180156105bd57506021826000015111155b6105c657600080fd5b60006105d5836020015161079b565b9050600081846000015103905060008083866020015101905080519150602083101561060857826020036101000a820491505b81945050505050919050565b6000601582600001511461062757600080fd5b610630826105a3565b9050919050565b6060600082600001511161064a57600080fd5b6000610659836020015161079b565b905060008184600001510390506060816040519080825280601f01601f19166020018201604052801561069b5781602001600182028038833980820191505090505b50905060008160200190506106b78487602001510182856108dc565b81945050505050919050565b600080823b905060008163ffffffff1611915050919050565b600080826000015114156106f35760009050610725565b60008083602001519050805160001a915060c060ff168260ff16101561071e57600092505050610725565b6001925050505b919050565b600080826000015114156107415760009050610796565b60008090506000610755846020015161079b565b84602001510190506000846000015185602001510190505b8082101561078f5761077e82610824565b82019150828060010193505061076d565b8293505050505b919050565b600080825160001a9050608060ff168110156107bb57600091505061081f565b60b860ff168110806107e0575060c060ff1681101580156107df575060f860ff1681105b5b156107ef57600191505061081f565b60c060ff1681101561080f5760018060b80360ff1682030191505061081f565b60018060f80360ff168203019150505b919050565b6000806000835160001a9050608060ff1681101561084557600191506108d2565b60b860ff16811015610862576001608060ff1682030191506108d1565b60c060ff168110156108925760b78103600185019450806020036101000a855104600182018101935050506108d0565b60f860ff168110156108af57600160c060ff1682030191506108cf565b60f78103600185019450806020036101000a855104600182018101935050505b5b5b5b8192505050919050565b60008114156108ea5761093e565b5b602060ff16811061091a5782518252602060ff1683019250602060ff1682019150602060ff16810390506108eb565b6000600182602060ff16036101000a03905080198451168184511681811785525050505b505050565b604051806040016040528060008152602001600081525090565b60405180604001604052806000815260200160008152509056fea265627a7a7231582083fbdacb76f32b4112d0f7db9a596937925824798a0026ba0232322390b5263764736f6c634300050b0032" - }, - "0000000000000000000000000000000000001010": { - "balance": "0x204fcd4f31349d83b6e00000", - "code": "0x60806040526004361061019c5760003560e01c806377d32e94116100ec578063acd06cb31161008a578063e306f77911610064578063e306f77914610a7b578063e614d0d614610aa6578063f2fde38b14610ad1578063fc0c546a14610b225761019c565b8063acd06cb31461097a578063b789543c146109cd578063cc79f97b14610a505761019c565b80639025e64c116100c65780639025e64c146107c957806395d89b4114610859578063a9059cbb146108e9578063abceeba21461094f5761019c565b806377d32e94146106315780638da5cb5b146107435780638f32d59b1461079a5761019c565b806347e7ef24116101595780637019d41a116101335780637019d41a1461053357806370a082311461058a578063715018a6146105ef578063771282f6146106065761019c565b806347e7ef2414610410578063485cc9551461046b57806360f96a8f146104dc5761019c565b806306fdde03146101a15780631499c5921461023157806318160ddd1461028257806319d27d9c146102ad5780632e1a7d4d146103b1578063313ce567146103df575b600080fd5b3480156101ad57600080fd5b506101b6610b79565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023d57600080fd5b506102806004803603602081101561025457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bb6565b005b34801561028e57600080fd5b50610297610c24565b6040518082815260200191505060405180910390f35b3480156102b957600080fd5b5061036f600480360360a08110156102d057600080fd5b81019080803590602001906401000000008111156102ed57600080fd5b8201836020820111156102ff57600080fd5b8035906020019184600183028401116401000000008311171561032157600080fd5b9091929391929390803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c3a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103dd600480360360208110156103c757600080fd5b8101908080359060200190929190505050610e06565b005b3480156103eb57600080fd5b506103f4610f58565b604051808260ff1660ff16815260200191505060405180910390f35b34801561041c57600080fd5b506104696004803603604081101561043357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f61565b005b34801561047757600080fd5b506104da6004803603604081101561048e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061111d565b005b3480156104e857600080fd5b506104f16111ec565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561053f57600080fd5b50610548611212565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059657600080fd5b506105d9600480360360208110156105ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611238565b6040518082815260200191505060405180910390f35b3480156105fb57600080fd5b50610604611259565b005b34801561061257600080fd5b5061061b611329565b6040518082815260200191505060405180910390f35b34801561063d57600080fd5b506107016004803603604081101561065457600080fd5b81019080803590602001909291908035906020019064010000000081111561067b57600080fd5b82018360208201111561068d57600080fd5b803590602001918460018302840111640100000000831117156106af57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061132f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561074f57600080fd5b506107586114b4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107a657600080fd5b506107af6114dd565b604051808215151515815260200191505060405180910390f35b3480156107d557600080fd5b506107de611534565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561081e578082015181840152602081019050610803565b50505050905090810190601f16801561084b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561086557600080fd5b5061086e61156d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108ae578082015181840152602081019050610893565b50505050905090810190601f1680156108db5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610935600480360360408110156108ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115aa565b604051808215151515815260200191505060405180910390f35b34801561095b57600080fd5b506109646115d0565b6040518082815260200191505060405180910390f35b34801561098657600080fd5b506109b36004803603602081101561099d57600080fd5b810190808035906020019092919050505061165d565b604051808215151515815260200191505060405180910390f35b3480156109d957600080fd5b50610a3a600480360360808110156109f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919050505061167d565b6040518082815260200191505060405180910390f35b348015610a5c57600080fd5b50610a6561169d565b6040518082815260200191505060405180910390f35b348015610a8757600080fd5b50610a906116a4565b6040518082815260200191505060405180910390f35b348015610ab257600080fd5b50610abb6116aa565b6040518082815260200191505060405180910390f35b348015610add57600080fd5b50610b2060048036036020811015610af457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611737565b005b348015610b2e57600080fd5b50610b37611754565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60606040518060400160405280600b81526020017f4d6174696320546f6b656e000000000000000000000000000000000000000000815250905090565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f44697361626c656420666561747572650000000000000000000000000000000081525060200191505060405180910390fd5b6000601260ff16600a0a6402540be40002905090565b6000808511610c4857600080fd5b6000831480610c575750824311155b610cc9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5369676e6174757265206973206578706972656400000000000000000000000081525060200191505060405180910390fd5b6000610cd73387878761167d565b9050600015156005600083815260200190815260200160002060009054906101000a900460ff16151514610d73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f536967206465616374697661746564000000000000000000000000000000000081525060200191505060405180910390fd5b60016005600083815260200190815260200160002060006101000a81548160ff021916908315150217905550610ded8189898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061132f565b9150610dfa82848861177a565b50509695505050505050565b60003390506000610e1682611238565b9050610e2d83600654611b3790919063ffffffff16565b600681905550600083118015610e4257508234145b610eb4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496e73756666696369656e7420616d6f756e740000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f8584610f3087611238565b60405180848152602001838152602001828152602001935050505060405180910390a3505050565b60006012905090565b610f696114dd565b610f7257600080fd5b600081118015610faf5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611e636023913960400191505060405180910390fd5b600061100f83611238565b905060008390508073ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015801561105c573d6000803e3d6000fd5b5061107283600654611b5790919063ffffffff16565b6006819055508373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f685856110f489611238565b60405180848152602001838152602001828152602001935050505060405180910390a350505050565b600760009054906101000a900460ff1615611183576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611e406023913960400191505060405180910390fd5b6001600760006101000a81548160ff02191690831515021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506111e882611b76565b5050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008173ffffffffffffffffffffffffffffffffffffffff16319050919050565b6112616114dd565b61126a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60065481565b600080600080604185511461134a57600093505050506114ae565b602085015192506040850151915060ff6041860151169050601b8160ff16101561137557601b810190505b601b8160ff161415801561138d5750601c8160ff1614155b1561139e57600093505050506114ae565b60018682858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156113fb573d6000803e3d6000fd5b505050602060405103519350600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156114aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4572726f7220696e2065637265636f766572000000000000000000000000000081525060200191505060405180910390fd5b5050505b92915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6040518060400160405280600381526020017f013881000000000000000000000000000000000000000000000000000000000081525081565b60606040518060400160405280600581526020017f4d41544943000000000000000000000000000000000000000000000000000000815250905090565b60008134146115bc57600090506115ca565b6115c733848461177a565b90505b92915050565b6040518060800160405280605b8152602001611ed8605b91396040516020018082805190602001908083835b6020831061161f57805182526020820191506020810190506020830392506115fc565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081565b60056020528060005260406000206000915054906101000a900460ff1681565b600061169361168e86868686611c6e565b611d44565b9050949350505050565b6201388181565b60015481565b604051806080016040528060528152602001611e86605291396040516020018082805190602001908083835b602083106116f957805182526020820191506020810190506020830392506116d6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081565b61173f6114dd565b61174857600080fd5b61175181611b76565b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156117fa57600080fd5b505afa15801561180e573d6000803e3d6000fd5b505050506040513d602081101561182457600080fd5b8101908080519060200190929190505050905060003073ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156118b657600080fd5b505afa1580156118ca573d6000803e3d6000fd5b505050506040513d60208110156118e057600080fd5b810190808051906020019092919050505090506118fe868686611d8e565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fe6497e3ee548a3372136af2fcb0696db31fc6cf20260707645068bd3fe97f3c48786863073ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611a0657600080fd5b505afa158015611a1a573d6000803e3d6000fd5b505050506040513d6020811015611a3057600080fd5b81019080805190602001909291905050503073ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611abe57600080fd5b505afa158015611ad2573d6000803e3d6000fd5b505050506040513d6020811015611ae857600080fd5b8101908080519060200190929190505050604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a46001925050509392505050565b600082821115611b4657600080fd5b600082840390508091505092915050565b600080828401905083811015611b6c57600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bb057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806040518060800160405280605b8152602001611ed8605b91396040516020018082805190602001908083835b60208310611cc05780518252602082019150602081019050602083039250611c9d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120905060405181815273ffffffffffffffffffffffffffffffffffffffff8716602082015285604082015284606082015283608082015260a0812092505081915050949350505050565b60008060015490506040517f190100000000000000000000000000000000000000000000000000000000000081528160028201528360228201526042812092505081915050919050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611dd4573d6000803e3d6000fd5b508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350505056fe54686520636f6e747261637420697320616c726561647920696e697469616c697a6564496e73756666696369656e7420616d6f756e74206f7220696e76616c69642075736572454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429546f6b656e5472616e736665724f726465722861646472657373207370656e6465722c75696e7432353620746f6b656e49644f72416d6f756e742c6279746573333220646174612c75696e743235362065787069726174696f6e29a265627a7a723158208f81700133738d766ae3d68af591ad588b0125bd91449192179f460893f79f6b64736f6c634300050b0032" - }, - "C26880A0AF2EA0c7E8130e6EC47Af756465452E8": { - "balance": "0x3635c9adc5dea00000" - }, - "be188D6641E8b680743A4815dFA0f6208038960F": { - "balance": "0x3635c9adc5dea00000" - }, - "c275DC8bE39f50D12F66B6a63629C39dA5BAe5bd": { - "balance": "0x3635c9adc5dea00000" - }, - "F903ba9E006193c1527BfBe65fe2123704EA3F99": { - "balance": "0x3635c9adc5dea00000" - }, - "928Ed6A3e94437bbd316cCAD78479f1d163A6A8C": { - "balance": "0x3635c9adc5dea00000" - } - }, - "number": "0x0", - "gasUsed": "0x0", - "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000" -} From ebf95b98d076572e5f42dfff3277c27d9907f184 Mon Sep 17 00:00:00 2001 From: Manav Darji Date: Wed, 30 Mar 2022 21:04:24 +0530 Subject: [PATCH 10/41] bumped version --- params/version.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/params/version.go b/params/version.go index c9261a745d..2fea76942d 100644 --- a/params/version.go +++ b/params/version.go @@ -24,7 +24,7 @@ const ( VersionMajor = 0 // Major version component of the current release VersionMinor = 2 // Minor version component of the current release VersionPatch = 15 // Patch version component of the current release - VersionMeta = "beta-2" // Version metadata to append to the version string + VersionMeta = "beta-3" // Version metadata to append to the version string ) // Version holds the textual version string. From a551f01ab85287a24ae98a0fbd3e91b56a745a1a Mon Sep 17 00:00:00 2001 From: Manav Darji Date: Mon, 4 Apr 2022 16:39:55 +0530 Subject: [PATCH 11/41] merge gethv1.10.17 --- .gitmodules | 4 + .golangci.yml | 2 +- .travis.yml | 24 +- Dockerfile.alltools | 2 +- SECURITY.md | 2 +- accounts/abi/argument.go | 8 +- accounts/abi/bind/backends/simulated.go | 10 +- accounts/abi/bind/util.go | 11 +- accounts/abi/selector_parser.go | 152 +++ accounts/abi/selector_parser_test.go | 54 + accounts/accounts.go | 10 +- accounts/errors.go | 2 +- accounts/scwallet/wallet.go | 2 +- accounts/usbwallet/wallet.go | 2 +- appveyor.yml | 2 +- build/checksums.txt | 89 +- build/ci.go | 38 +- cmd/clef/main.go | 2 +- cmd/devp2p/internal/ethtest/chain.go | 8 + cmd/devp2p/internal/ethtest/helpers.go | 44 +- cmd/devp2p/internal/ethtest/snap.go | 675 +++++++++++ cmd/devp2p/internal/ethtest/snapTypes.go | 36 + cmd/devp2p/internal/ethtest/suite.go | 10 + cmd/devp2p/internal/ethtest/suite_test.go | 21 + cmd/devp2p/internal/ethtest/types.go | 58 +- cmd/devp2p/rlpxcmd.go | 23 + cmd/ethkey/utils.go | 2 +- cmd/evm/internal/t8ntool/execution.go | 7 + cmd/evm/internal/t8ntool/gen_stenv.go | 6 + cmd/evm/internal/t8ntool/transition.go | 4 + cmd/evm/testdata/15/exp3.json | 10 +- cmd/geth/accountcmd_test.go | 2 +- cmd/geth/config.go | 19 +- cmd/geth/dbcmd.go | 174 ++- cmd/geth/main.go | 12 +- cmd/geth/snapshot.go | 16 +- cmd/geth/usage.go | 10 +- cmd/geth/version_check_test.go | 38 + cmd/utils/flags.go | 143 ++- consensus/beacon/consensus.go | 6 +- consensus/ethash/ethash.go | 5 + core/beacon/errors.go | 50 + .../beacon}/gen_blockparams.go | 8 +- {eth/catalyst => core/beacon}/gen_ed.go | 12 +- core/beacon/types.go | 194 +++ core/blockchain.go | 91 +- core/blockchain_insert.go | 9 +- core/blockchain_repair_test.go | 19 +- core/blockchain_test.go | 4 +- core/evm.go | 5 + core/genesis.go | 122 +- core/genesis_alloc.go | 865 ++++++++++++++ core/genesis_test.go | 60 + core/rawdb/accessors_chain.go | 4 +- core/rawdb/accessors_metadata.go | 13 + core/rawdb/accessors_snapshot.go | 2 +- core/rawdb/accessors_state.go | 94 +- core/rawdb/accessors_sync.go | 80 ++ core/rawdb/database.go | 30 +- core/rawdb/freezer.go | 212 +++- core/rawdb/freezer_batch.go | 2 +- core/rawdb/freezer_meta.go | 109 ++ core/rawdb/freezer_meta_test.go | 61 + core/rawdb/freezer_table.go | 387 ++++-- core/rawdb/freezer_table_test.go | 543 ++++++++- core/rawdb/freezer_test.go | 134 ++- core/rawdb/freezer_utils.go | 120 ++ core/rawdb/freezer_utils_test.go | 76 ++ core/rawdb/key_length_iterator.go | 47 + core/rawdb/key_length_iterator_test.go | 60 + core/rawdb/schema.go | 19 +- core/rawdb/table.go | 36 +- core/state/pruner/pruner.go | 4 +- core/state/snapshot/journal.go | 23 + core/state/snapshot/snapshot.go | 23 +- core/state/state_object.go | 35 +- core/state/statedb.go | 25 +- core/state_transition.go | 2 +- core/types/access_list_tx.go | 2 +- core/types/block.go | 3 +- core/types/block_test.go | 6 +- core/types/gen_account_rlp.go | 27 + core/types/gen_header_rlp.go | 56 + core/types/gen_log_rlp.go | 23 + core/types/legacy.go | 53 + core/types/log.go | 19 +- core/types/receipt.go | 48 +- core/types/receipt_test.go | 2 +- core/types/state_account.go | 2 + core/types/transaction.go | 10 +- core/types/transaction_test.go | 2 +- core/vm/evm.go | 3 +- core/vm/instructions.go | 6 + core/vm/instructions_test.go | 34 + core/vm/interpreter.go | 2 + core/vm/jump_table.go | 12 + core/vm/opcodes.go | 3 +- core/vm/operations_acl.go | 2 +- core/vm/runtime/runtime.go | 6 +- crypto/bls12381/bls12_381.go | 48 +- crypto/bls12381/isogeny.go | 176 +-- crypto/bls12381/swu.go | 2 +- crypto/bn256/cloudflare/gfp_amd64.s | 14 +- crypto/bn256/cloudflare/mul_amd64.h | 6 +- crypto/bn256/cloudflare/mul_bmi2_amd64.h | 12 +- crypto/ecies/ecies_test.go | 2 +- crypto/ecies/params.go | 10 +- crypto/signature_nocgo.go | 74 +- .../2021-08-22-split-postmortem.md | 4 +- eth/backend.go | 24 +- eth/catalyst/api.go | 697 ++++------- eth/catalyst/api_test.go | 250 ++-- eth/catalyst/api_types.go | 114 -- eth/catalyst/gen_payload.go | 36 - eth/catalyst/queue.go | 135 +++ eth/downloader/beaconsync.go | 308 +++++ eth/downloader/downloader.go | 306 +++-- eth/downloader/downloader_test.go | 6 +- eth/downloader/fetchers_concurrent.go | 6 +- eth/downloader/peer.go | 12 +- eth/downloader/skeleton.go | 1063 +++++++++++++++++ eth/downloader/skeleton_test.go | 896 ++++++++++++++ eth/ethconfig/config.go | 59 +- eth/ethconfig/gen_config.go | 10 +- eth/fetcher/block_fetcher_test.go | 4 +- eth/gasprice/feehistory.go | 2 +- eth/handler.go | 65 +- eth/handler_eth_test.go | 2 +- eth/peerset.go | 2 +- eth/protocols/eth/handler_test.go | 22 +- eth/protocols/eth/peer.go | 10 +- eth/protocols/snap/handler.go | 7 +- eth/protocols/snap/sync.go | 11 +- eth/protocols/snap/sync_test.go | 10 +- eth/sync.go | 39 +- eth/tracers/api.go | 5 +- .../internal/tracetest/calltrace_test.go | 4 - eth/tracers/js/internal/tracers/assets.go | 93 +- .../js/internal/tracers/noop_tracer_legacy.js | 29 + .../js/internal/tracers/prestate_tracer.js | 9 +- .../tracers/prestate_tracer_legacy.js | 115 ++ eth/tracers/js/tracer.go | 2 +- eth/tracers/native/4byte.go | 2 +- eth/tracers/native/call.go | 3 +- eth/tracers/native/noop.go | 2 +- eth/tracers/native/prestate.go | 186 +++ ethclient/ethclient.go | 11 + ethclient/ethclient_test.go | 30 + ethdb/batch.go | 3 + ethdb/database.go | 23 +- ethdb/dbtest/testsuite.go | 62 + ethdb/leveldb/leveldb.go | 44 + ethdb/memorydb/memorydb.go | 76 +- ethdb/snapshot.go | 41 + go.mod | 25 +- go.sum | 96 +- graphql/graphql.go | 53 + graphql/graphql_test.go | 1 + graphql/schema.go | 26 +- graphql/service.go | 2 +- internal/build/azure.go | 90 +- internal/build/download.go | 2 +- internal/build/util.go | 36 +- internal/cli/server/config.go | 4 +- internal/ethapi/api.go | 13 +- internal/ethapi/transaction_args.go | 16 +- internal/flags/helpers.go | 5 +- internal/jsre/jsre_test.go | 8 +- internal/web3ext/web3ext.go | 5 + les/catalyst/api.go | 189 +++ les/catalyst/api_test.go | 244 ++++ les/client.go | 2 +- les/peer.go | 6 +- les/test_helper.go | 4 +- les/vflux/client/fillset_test.go | 12 +- les/vflux/server/clientpool.go | 4 +- light/lightchain.go | 3 + miner/miner.go | 14 +- miner/miner_test.go | 41 +- miner/stress/beacon/main.go | 103 +- miner/worker.go | 570 +++++---- miner/worker_test.go | 148 ++- mobile/geth.go | 8 - node/api.go | 5 +- node/config.go | 16 +- node/defaults.go | 13 + node/endpoints.go | 6 +- node/jwt_handler.go | 78 ++ node/node.go | 172 ++- node/node_test.go | 6 +- node/rpcstack.go | 28 +- node/rpcstack_test.go | 95 +- p2p/peer.go | 6 +- p2p/peer_error.go | 2 +- p2p/server.go | 3 +- p2p/simulations/http_test.go | 2 +- params/bootnodes.go | 11 +- params/config.go | 10 +- params/version.go | 4 +- rlp/decode.go | 180 ++- rlp/decode_test.go | 43 +- rlp/encbuffer.go | 382 ++++++ rlp/encbuffer_example_test.go | 45 + rlp/encode.go | 364 +----- rlp/encode_test.go | 18 +- rlp/encoder_example_test.go | 10 +- rlp/internal/rlpstruct/rlpstruct.go | 213 ++++ rlp/rlpgen/gen.go | 735 ++++++++++++ rlp/rlpgen/gen_test.go | 92 ++ rlp/rlpgen/main.go | 148 +++ rlp/rlpgen/testdata/bigint.in.txt | 10 + rlp/rlpgen/testdata/bigint.out.txt | 49 + rlp/rlpgen/testdata/nil.in.txt | 30 + rlp/rlpgen/testdata/nil.out.txt | 289 +++++ rlp/rlpgen/testdata/optional.in.txt | 17 + rlp/rlpgen/testdata/optional.out.txt | 153 +++ rlp/rlpgen/testdata/rawvalue.in.txt | 11 + rlp/rlpgen/testdata/rawvalue.out.txt | 64 + rlp/rlpgen/testdata/uints.in.txt | 10 + rlp/rlpgen/testdata/uints.out.txt | 53 + rlp/rlpgen/types.go | 98 ++ rlp/typecache.go | 199 ++- rpc/client.go | 56 +- rpc/client_test.go | 1 + rpc/http.go | 31 +- rpc/http_test.go | 36 + rpc/json.go | 5 + rpc/server.go | 36 + rpc/server_test.go | 6 +- rpc/subscription.go | 2 +- rpc/testservice_test.go | 4 + rpc/types.go | 11 +- rpc/websocket.go | 20 +- rpc/websocket_test.go | 37 +- signer/core/api.go | 26 +- signer/core/api_test.go | 3 + signer/core/apitypes/types.go | 3 +- signer/core/gnosis_safe.go | 10 +- signer/core/signed_data_test.go | 280 +++++ signer/fourbyte/abi.go | 36 +- tests/evm-benchmarks | 1 + tests/fuzzers/bn256/bn256_fuzz.go | 1 + tests/fuzzers/secp256k1/secp_fuzzer.go | 2 +- tests/fuzzers/stacktrie/trie_fuzzer.go | 2 + tests/fuzzers/vflux/clientpool-fuzzer.go | 4 +- tests/gen_stenv.go | 15 +- tests/init_test.go | 1 + tests/state_test.go | 121 ++ tests/state_test_util.go | 20 +- trie/committer.go | 2 - trie/database.go | 19 +- trie/hasher.go | 56 +- trie/iterator.go | 61 +- trie/iterator_test.go | 74 +- trie/node.go | 16 +- trie/node_enc.go | 87 ++ trie/proof.go | 9 +- trie/proof_test.go | 33 + trie/stacktrie.go | 226 ++-- trie/sync.go | 7 +- trie/trie.go | 9 + trie/trie_test.go | 10 +- 262 files changed, 14660 insertions(+), 2949 deletions(-) create mode 100644 accounts/abi/selector_parser.go create mode 100644 accounts/abi/selector_parser_test.go create mode 100644 cmd/devp2p/internal/ethtest/snap.go create mode 100644 cmd/devp2p/internal/ethtest/snapTypes.go create mode 100644 core/beacon/errors.go rename {eth/catalyst => core/beacon}/gen_blockparams.go (85%) rename {eth/catalyst => core/beacon}/gen_ed.go (93%) create mode 100644 core/beacon/types.go create mode 100644 core/rawdb/accessors_sync.go create mode 100644 core/rawdb/freezer_meta.go create mode 100644 core/rawdb/freezer_meta_test.go create mode 100644 core/rawdb/freezer_utils.go create mode 100644 core/rawdb/freezer_utils_test.go create mode 100644 core/rawdb/key_length_iterator.go create mode 100644 core/rawdb/key_length_iterator_test.go create mode 100644 core/types/gen_account_rlp.go create mode 100644 core/types/gen_header_rlp.go create mode 100644 core/types/gen_log_rlp.go create mode 100644 core/types/legacy.go delete mode 100644 eth/catalyst/api_types.go delete mode 100644 eth/catalyst/gen_payload.go create mode 100644 eth/catalyst/queue.go create mode 100644 eth/downloader/beaconsync.go create mode 100644 eth/downloader/skeleton.go create mode 100644 eth/downloader/skeleton_test.go create mode 100644 eth/tracers/js/internal/tracers/noop_tracer_legacy.js create mode 100644 eth/tracers/js/internal/tracers/prestate_tracer_legacy.js create mode 100644 eth/tracers/native/prestate.go create mode 100644 ethdb/snapshot.go create mode 100644 les/catalyst/api.go create mode 100644 les/catalyst/api_test.go create mode 100644 node/jwt_handler.go create mode 100644 rlp/encbuffer.go create mode 100644 rlp/encbuffer_example_test.go create mode 100644 rlp/internal/rlpstruct/rlpstruct.go create mode 100644 rlp/rlpgen/gen.go create mode 100644 rlp/rlpgen/gen_test.go create mode 100644 rlp/rlpgen/main.go create mode 100644 rlp/rlpgen/testdata/bigint.in.txt create mode 100644 rlp/rlpgen/testdata/bigint.out.txt create mode 100644 rlp/rlpgen/testdata/nil.in.txt create mode 100644 rlp/rlpgen/testdata/nil.out.txt create mode 100644 rlp/rlpgen/testdata/optional.in.txt create mode 100644 rlp/rlpgen/testdata/optional.out.txt create mode 100644 rlp/rlpgen/testdata/rawvalue.in.txt create mode 100644 rlp/rlpgen/testdata/rawvalue.out.txt create mode 100644 rlp/rlpgen/testdata/uints.in.txt create mode 100644 rlp/rlpgen/testdata/uints.out.txt create mode 100644 rlp/rlpgen/types.go create mode 160000 tests/evm-benchmarks create mode 100644 trie/node_enc.go diff --git a/.gitmodules b/.gitmodules index 90d1be0a3d..241c169c47 100644 --- a/.gitmodules +++ b/.gitmodules @@ -2,3 +2,7 @@ path = tests/testdata url = https://github.com/ethereum/tests shallow = true +[submodule "evm-benchmarks"] + path = tests/evm-benchmarks + url = https://github.com/ipsilon/evm-benchmarks + shallow = true diff --git a/.golangci.yml b/.golangci.yml index 395a91fe1b..4950b98c21 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,7 +1,7 @@ # This file configures github.com/golangci/golangci-lint. run: - timeout: 5m + timeout: 20m tests: true # default is true. Enables skipping of directories: # vendor$, third_party$, testdata$, examples$, Godeps$, builtin$ diff --git a/.travis.yml b/.travis.yml index 3f92221758..5bd7beed83 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,7 +16,7 @@ jobs: - stage: lint os: linux dist: bionic - go: 1.17.x + go: 1.18.x env: - lint git: @@ -31,7 +31,7 @@ jobs: os: linux arch: amd64 dist: bionic - go: 1.17.x + go: 1.18.x env: - docker services: @@ -48,7 +48,7 @@ jobs: os: linux arch: arm64 dist: bionic - go: 1.17.x + go: 1.18.x env: - docker services: @@ -65,7 +65,7 @@ jobs: if: type = push os: linux dist: bionic - go: 1.17.x + go: 1.18.x env: - ubuntu-ppa - GO111MODULE=on @@ -90,7 +90,7 @@ jobs: os: linux dist: bionic sudo: required - go: 1.17.x + go: 1.18.x env: - azure-linux - GO111MODULE=on @@ -148,7 +148,7 @@ jobs: - sdkmanager "platform-tools" "platforms;android-15" "platforms;android-19" "platforms;android-24" "ndk-bundle" # Install Go to allow building with - - curl https://dl.google.com/go/go1.16.linux-amd64.tar.gz | tar -xz + - curl https://dl.google.com/go/go1.18.linux-amd64.tar.gz | tar -xz - export PATH=`pwd`/go/bin:$PATH - export GOROOT=`pwd`/go - export GOPATH=$HOME/go @@ -162,7 +162,7 @@ jobs: - stage: build if: type = push os: osx - go: 1.17.x + go: 1.18.x env: - azure-osx - azure-ios @@ -194,7 +194,7 @@ jobs: os: linux arch: amd64 dist: bionic - go: 1.17.x + go: 1.18.x env: - GO111MODULE=on script: @@ -205,7 +205,7 @@ jobs: os: linux arch: arm64 dist: bionic - go: 1.17.x + go: 1.18.x env: - GO111MODULE=on script: @@ -214,7 +214,7 @@ jobs: - stage: build os: linux dist: bionic - go: 1.16.x + go: 1.17.x env: - GO111MODULE=on script: @@ -225,7 +225,7 @@ jobs: if: type = cron os: linux dist: bionic - go: 1.17.x + go: 1.18.x env: - azure-purge - GO111MODULE=on @@ -239,7 +239,7 @@ jobs: if: type = cron os: linux dist: bionic - go: 1.17.x + go: 1.18.x env: - GO111MODULE=on script: diff --git a/Dockerfile.alltools b/Dockerfile.alltools index 53be8bc950..b702d332b9 100644 --- a/Dockerfile.alltools +++ b/Dockerfile.alltools @@ -1,5 +1,5 @@ # Build Geth in a stock Go builder container -FROM golang:1.17-alpine as builder +FROM golang:1.18-alpine as builder RUN apk add --no-cache make gcc musl-dev linux-headers git diff --git a/SECURITY.md b/SECURITY.md index 88b3f8fe17..41b900d5e9 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -19,7 +19,7 @@ Audit reports are published in the `docs` folder: https://github.com/ethereum/go **Please do not file a public ticket** mentioning the vulnerability. -To find out how to disclose a vulnerability in Ethereum visit [https://bounty.ethereum.org](https://bounty.ethereum.org) or email bounty@ethereum.org. Please read the [disclosure page](https://github.com/ethereum/go-ethereum/security/advisories?state=published) for more information about publically disclosed security vulnerabilities. +To find out how to disclose a vulnerability in Ethereum visit [https://bounty.ethereum.org](https://bounty.ethereum.org) or email bounty@ethereum.org. Please read the [disclosure page](https://github.com/ethereum/go-ethereum/security/advisories?state=published) for more information about publicly disclosed security vulnerabilities. Use the built-in `geth version-check` feature to check whether the software is affected by any known vulnerability. This command will fetch the latest [`vulnerabilities.json`](https://geth.ethereum.org/docs/vulnerabilities/vulnerabilities.json) file which contains known security vulnerabilities concerning `geth`, and cross-check the data against its own version number. diff --git a/accounts/abi/argument.go b/accounts/abi/argument.go index 261b4d1b86..e6c117fe5f 100644 --- a/accounts/abi/argument.go +++ b/accounts/abi/argument.go @@ -81,13 +81,7 @@ func (arguments Arguments) Unpack(data []byte) ([]interface{}, error) { if len(arguments) != 0 { return nil, fmt.Errorf("abi: attempting to unmarshall an empty string while arguments are expected") } - // Nothing to unmarshal, return default variables - nonIndexedArgs := arguments.NonIndexed() - defaultVars := make([]interface{}, len(nonIndexedArgs)) - for index, arg := range nonIndexedArgs { - defaultVars[index] = reflect.New(arg.Type.GetType()) - } - return defaultVars, nil + return make([]interface{}, 0), nil } return arguments.UnpackValues(data) } diff --git a/accounts/abi/bind/backends/simulated.go b/accounts/abi/bind/backends/simulated.go index 27d40f1d66..ac696f446b 100644 --- a/accounts/abi/bind/backends/simulated.go +++ b/accounts/abi/bind/backends/simulated.go @@ -230,6 +230,9 @@ func (b *SimulatedBackend) TransactionReceipt(ctx context.Context, txHash common defer b.mu.Unlock() receipt, _, _, _ := rawdb.ReadReceipt(b.database, txHash, b.config) + if receipt == nil { + return nil, ethereum.NotFound + } return receipt, nil } @@ -639,7 +642,6 @@ func (b *SimulatedBackend) callContract(ctx context.Context, call ethereum.CallM } // SendTransaction updates the pending block to include the given transaction. -// It panics if the transaction is invalid. func (b *SimulatedBackend) SendTransaction(ctx context.Context, tx *types.Transaction) error { b.mu.Lock() defer b.mu.Unlock() @@ -647,17 +649,17 @@ func (b *SimulatedBackend) SendTransaction(ctx context.Context, tx *types.Transa // Get the last block block, err := b.blockByHash(ctx, b.pendingBlock.ParentHash()) if err != nil { - panic("could not fetch parent") + return fmt.Errorf("could not fetch parent") } // Check transaction validity signer := types.MakeSigner(b.blockchain.Config(), block.Number()) sender, err := types.Sender(signer, tx) if err != nil { - panic(fmt.Errorf("invalid transaction: %v", err)) + return fmt.Errorf("invalid transaction: %v", err) } nonce := b.pendingState.GetNonce(sender) if tx.Nonce() != nonce { - panic(fmt.Errorf("invalid transaction nonce: got %d, want %d", tx.Nonce(), nonce)) + return fmt.Errorf("invalid transaction nonce: got %d, want %d", tx.Nonce(), nonce) } // Include tx in chain blocks, _ := core.GenerateChain(b.config, block, ethash.NewFaker(), b.database, 1, func(number int, block *core.BlockGen) { diff --git a/accounts/abi/bind/util.go b/accounts/abi/bind/util.go index 118abc59a7..b931fbb04d 100644 --- a/accounts/abi/bind/util.go +++ b/accounts/abi/bind/util.go @@ -21,6 +21,7 @@ import ( "errors" "time" + "github.com/ethereum/go-ethereum" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/log" @@ -35,14 +36,16 @@ func WaitMined(ctx context.Context, b DeployBackend, tx *types.Transaction) (*ty logger := log.New("hash", tx.Hash()) for { receipt, err := b.TransactionReceipt(ctx, tx.Hash()) - if receipt != nil { + if err == nil { return receipt, nil } - if err != nil { - logger.Trace("Receipt retrieval failed", "err", err) - } else { + + if errors.Is(err, ethereum.NotFound) { logger.Trace("Transaction not yet mined") + } else { + logger.Trace("Receipt retrieval failed", "err", err) } + // Wait for the next round. select { case <-ctx.Done(): diff --git a/accounts/abi/selector_parser.go b/accounts/abi/selector_parser.go new file mode 100644 index 0000000000..75609b28a6 --- /dev/null +++ b/accounts/abi/selector_parser.go @@ -0,0 +1,152 @@ +package abi + +import ( + "fmt" +) + +type SelectorMarshaling struct { + Name string `json:"name"` + Type string `json:"type"` + Inputs []ArgumentMarshaling `json:"inputs"` +} + +func isDigit(c byte) bool { + return c >= '0' && c <= '9' +} + +func isAlpha(c byte) bool { + return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') +} + +func isIdentifierSymbol(c byte) bool { + return c == '$' || c == '_' +} + +func parseToken(unescapedSelector string, isIdent bool) (string, string, error) { + if len(unescapedSelector) == 0 { + return "", "", fmt.Errorf("empty token") + } + firstChar := unescapedSelector[0] + position := 1 + if !(isAlpha(firstChar) || (isIdent && isIdentifierSymbol(firstChar))) { + return "", "", fmt.Errorf("invalid token start: %c", firstChar) + } + for position < len(unescapedSelector) { + char := unescapedSelector[position] + if !(isAlpha(char) || isDigit(char) || (isIdent && isIdentifierSymbol(char))) { + break + } + position++ + } + return unescapedSelector[:position], unescapedSelector[position:], nil +} + +func parseIdentifier(unescapedSelector string) (string, string, error) { + return parseToken(unescapedSelector, true) +} + +func parseElementaryType(unescapedSelector string) (string, string, error) { + parsedType, rest, err := parseToken(unescapedSelector, false) + if err != nil { + return "", "", fmt.Errorf("failed to parse elementary type: %v", err) + } + // handle arrays + for len(rest) > 0 && rest[0] == '[' { + parsedType = parsedType + string(rest[0]) + rest = rest[1:] + for len(rest) > 0 && isDigit(rest[0]) { + parsedType = parsedType + string(rest[0]) + rest = rest[1:] + } + if len(rest) == 0 || rest[0] != ']' { + return "", "", fmt.Errorf("failed to parse array: expected ']', got %c", unescapedSelector[0]) + } + parsedType = parsedType + string(rest[0]) + rest = rest[1:] + } + return parsedType, rest, nil +} + +func parseCompositeType(unescapedSelector string) ([]interface{}, string, error) { + if len(unescapedSelector) == 0 || unescapedSelector[0] != '(' { + return nil, "", fmt.Errorf("expected '(', got %c", unescapedSelector[0]) + } + parsedType, rest, err := parseType(unescapedSelector[1:]) + if err != nil { + return nil, "", fmt.Errorf("failed to parse type: %v", err) + } + result := []interface{}{parsedType} + for len(rest) > 0 && rest[0] != ')' { + parsedType, rest, err = parseType(rest[1:]) + if err != nil { + return nil, "", fmt.Errorf("failed to parse type: %v", err) + } + result = append(result, parsedType) + } + if len(rest) == 0 || rest[0] != ')' { + return nil, "", fmt.Errorf("expected ')', got '%s'", rest) + } + return result, rest[1:], nil +} + +func parseType(unescapedSelector string) (interface{}, string, error) { + if len(unescapedSelector) == 0 { + return nil, "", fmt.Errorf("empty type") + } + if unescapedSelector[0] == '(' { + return parseCompositeType(unescapedSelector) + } else { + return parseElementaryType(unescapedSelector) + } +} + +func assembleArgs(args []interface{}) ([]ArgumentMarshaling, error) { + arguments := make([]ArgumentMarshaling, 0) + for i, arg := range args { + // generate dummy name to avoid unmarshal issues + name := fmt.Sprintf("name%d", i) + if s, ok := arg.(string); ok { + arguments = append(arguments, ArgumentMarshaling{name, s, s, nil, false}) + } else if components, ok := arg.([]interface{}); ok { + subArgs, err := assembleArgs(components) + if err != nil { + return nil, fmt.Errorf("failed to assemble components: %v", err) + } + arguments = append(arguments, ArgumentMarshaling{name, "tuple", "tuple", subArgs, false}) + } else { + return nil, fmt.Errorf("failed to assemble args: unexpected type %T", arg) + } + } + return arguments, nil +} + +// ParseSelector converts a method selector into a struct that can be JSON encoded +// and consumed by other functions in this package. +// Note, although uppercase letters are not part of the ABI spec, this function +// still accepts it as the general format is valid. +func ParseSelector(unescapedSelector string) (SelectorMarshaling, error) { + name, rest, err := parseIdentifier(unescapedSelector) + if err != nil { + return SelectorMarshaling{}, fmt.Errorf("failed to parse selector '%s': %v", unescapedSelector, err) + } + args := []interface{}{} + if len(rest) >= 2 && rest[0] == '(' && rest[1] == ')' { + rest = rest[2:] + } else { + args, rest, err = parseCompositeType(rest) + if err != nil { + return SelectorMarshaling{}, fmt.Errorf("failed to parse selector '%s': %v", unescapedSelector, err) + } + } + if len(rest) > 0 { + return SelectorMarshaling{}, fmt.Errorf("failed to parse selector '%s': unexpected string '%s'", unescapedSelector, rest) + } + + // Reassemble the fake ABI and constuct the JSON + fakeArgs, err := assembleArgs(args) + if err != nil { + return SelectorMarshaling{}, fmt.Errorf("failed to parse selector: %v", err) + } + + return SelectorMarshaling{name, "function", fakeArgs}, nil +} diff --git a/accounts/abi/selector_parser_test.go b/accounts/abi/selector_parser_test.go new file mode 100644 index 0000000000..9720c9d530 --- /dev/null +++ b/accounts/abi/selector_parser_test.go @@ -0,0 +1,54 @@ +package abi + +import ( + "fmt" + "log" + "reflect" + "testing" +) + +func TestParseSelector(t *testing.T) { + mkType := func(types ...interface{}) []ArgumentMarshaling { + var result []ArgumentMarshaling + for i, typeOrComponents := range types { + name := fmt.Sprintf("name%d", i) + if typeName, ok := typeOrComponents.(string); ok { + result = append(result, ArgumentMarshaling{name, typeName, typeName, nil, false}) + } else if components, ok := typeOrComponents.([]ArgumentMarshaling); ok { + result = append(result, ArgumentMarshaling{name, "tuple", "tuple", components, false}) + } else { + log.Fatalf("unexpected type %T", typeOrComponents) + } + } + return result + } + tests := []struct { + input string + name string + args []ArgumentMarshaling + }{ + {"noargs()", "noargs", []ArgumentMarshaling{}}, + {"simple(uint256,uint256,uint256)", "simple", mkType("uint256", "uint256", "uint256")}, + {"other(uint256,address)", "other", mkType("uint256", "address")}, + {"withArray(uint256[],address[2],uint8[4][][5])", "withArray", mkType("uint256[]", "address[2]", "uint8[4][][5]")}, + {"singleNest(bytes32,uint8,(uint256,uint256),address)", "singleNest", mkType("bytes32", "uint8", mkType("uint256", "uint256"), "address")}, + {"multiNest(address,(uint256[],uint256),((address,bytes32),uint256))", "multiNest", + mkType("address", mkType("uint256[]", "uint256"), mkType(mkType("address", "bytes32"), "uint256"))}, + } + for i, tt := range tests { + selector, err := ParseSelector(tt.input) + if err != nil { + t.Errorf("test %d: failed to parse selector '%v': %v", i, tt.input, err) + } + if selector.Name != tt.name { + t.Errorf("test %d: unexpected function name: '%s' != '%s'", i, selector.Name, tt.name) + } + + if selector.Type != "function" { + t.Errorf("test %d: unexpected type: '%s' != '%s'", i, selector.Type, "function") + } + if !reflect.DeepEqual(selector.Inputs, tt.args) { + t.Errorf("test %d: unexpected args: '%v' != '%v'", i, selector.Inputs, tt.args) + } + } +} diff --git a/accounts/accounts.go b/accounts/accounts.go index c1b5f31235..4b10f3332e 100644 --- a/accounts/accounts.go +++ b/accounts/accounts.go @@ -47,7 +47,7 @@ const ( // accounts (derived from the same seed). type Wallet interface { // URL retrieves the canonical path under which this wallet is reachable. It is - // user by upper layers to define a sorting order over all wallets from multiple + // used by upper layers to define a sorting order over all wallets from multiple // backends. URL() URL @@ -90,7 +90,7 @@ type Wallet interface { // accounts. // // Note, self derivation will increment the last component of the specified path - // opposed to decending into a child path to allow discovering accounts starting + // opposed to descending into a child path to allow discovering accounts starting // from non zero components. // // Some hardware wallets switched derivation paths through their evolution, so @@ -106,7 +106,7 @@ type Wallet interface { // or optionally with the aid of any location metadata from the embedded URL field. // // If the wallet requires additional authentication to sign the request (e.g. - // a password to decrypt the account, or a PIN code o verify the transaction), + // a password to decrypt the account, or a PIN code to verify the transaction), // an AuthNeededError instance will be returned, containing infos for the user // about which fields or actions are needed. The user may retry by providing // the needed details via SignDataWithPassphrase, or by other means (e.g. unlock @@ -125,13 +125,13 @@ type Wallet interface { // or optionally with the aid of any location metadata from the embedded URL field. // // If the wallet requires additional authentication to sign the request (e.g. - // a password to decrypt the account, or a PIN code o verify the transaction), + // a password to decrypt the account, or a PIN code to verify the transaction), // an AuthNeededError instance will be returned, containing infos for the user // about which fields or actions are needed. The user may retry by providing // the needed details via SignTextWithPassphrase, or by other means (e.g. unlock // the account in a keystore). // - // This method should return the signature in 'canonical' format, with v 0 or 1 + // This method should return the signature in 'canonical' format, with v 0 or 1. SignText(account Account, text []byte) ([]byte, error) // SignTextWithPassphrase is identical to Signtext, but also takes a password diff --git a/accounts/errors.go b/accounts/errors.go index 2fed35f9d0..727e5329be 100644 --- a/accounts/errors.go +++ b/accounts/errors.go @@ -42,7 +42,7 @@ var ErrInvalidPassphrase = errors.New("invalid password") var ErrWalletAlreadyOpen = errors.New("wallet already open") // ErrWalletClosed is returned if a wallet is attempted to be opened the -// secodn time. +// second time. var ErrWalletClosed = errors.New("wallet closed") // AuthNeededError is returned by backends for signing requests where the user diff --git a/accounts/scwallet/wallet.go b/accounts/scwallet/wallet.go index b4d229bc0b..2a2b83bd1b 100644 --- a/accounts/scwallet/wallet.go +++ b/accounts/scwallet/wallet.go @@ -638,7 +638,7 @@ func (w *Wallet) Derive(path accounts.DerivationPath, pin bool) (accounts.Accoun // accounts. // // Note, self derivation will increment the last component of the specified path -// opposed to decending into a child path to allow discovering accounts starting +// opposed to descending into a child path to allow discovering accounts starting // from non zero components. // // Some hardware wallets switched derivation paths through their evolution, so diff --git a/accounts/usbwallet/wallet.go b/accounts/usbwallet/wallet.go index b6f1814488..382f3ddaee 100644 --- a/accounts/usbwallet/wallet.go +++ b/accounts/usbwallet/wallet.go @@ -496,7 +496,7 @@ func (w *wallet) Derive(path accounts.DerivationPath, pin bool) (accounts.Accoun // accounts. // // Note, self derivation will increment the last component of the specified path -// opposed to decending into a child path to allow discovering accounts starting +// opposed to descending into a child path to allow discovering accounts starting // from non zero components. // // Some hardware wallets switched derivation paths through their evolution, so diff --git a/appveyor.yml b/appveyor.yml index 65b5f96841..d477e6db9f 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -13,7 +13,7 @@ environment: GETH_MINGW: 'C:\msys64\mingw32' install: - - git submodule update --init --depth 1 + - git submodule update --init --depth 1 --recursive - go version for: diff --git a/build/checksums.txt b/build/checksums.txt index 5df27bbf61..6e43e9cbe0 100644 --- a/build/checksums.txt +++ b/build/checksums.txt @@ -1,37 +1,58 @@ # This file contains sha256 checksums of optional build dependencies. -3defb9a09bed042403195e872dcbc8c6fae1485963332279668ec52e80a95a2d go1.17.5.src.tar.gz -2db6a5d25815b56072465a2cacc8ed426c18f1d5fc26c1fc8c4f5a7188658264 go1.17.5.darwin-amd64.tar.gz -111f71166de0cb8089bb3e8f9f5b02d76e1bf1309256824d4062a47b0e5f98e0 go1.17.5.darwin-arm64.tar.gz -443c1cd9768df02085014f1eb034ebc7dbe032ffc8a9bb9f2e6617d037eee23c go1.17.5.freebsd-386.tar.gz -17180bdc4126acffd0ebf86d66ef5cbc3488b6734e93374fb00eb09494e006d3 go1.17.5.freebsd-amd64.tar.gz -4f4914303bc18f24fd137a97e595735308f5ce81323c7224c12466fd763fc59f go1.17.5.linux-386.tar.gz -bd78114b0d441b029c8fe0341f4910370925a4d270a6a590668840675b0c653e go1.17.5.linux-amd64.tar.gz -6f95ce3da40d9ce1355e48f31f4eb6508382415ca4d7413b1e7a3314e6430e7e go1.17.5.linux-arm64.tar.gz -aa1fb6c53b4fe72f159333362a10aca37ae938bde8adc9c6eaf2a8e87d1e47de go1.17.5.linux-armv6l.tar.gz -3d4be616e568f0a02cb7f7769bcaafda4b0969ed0f9bb4277619930b96847e70 go1.17.5.linux-ppc64le.tar.gz -8087d4fe991e82804e6485c26568c2e0ee0bfde00ceb9015dc86cb6bf84ef40b go1.17.5.linux-s390x.tar.gz -6d7b9948ee14a906b14f5cbebdfab63cd6828b0b618160847ecd3cc3470a26fe go1.17.5.windows-386.zip -671faf99cd5d81cd7e40936c0a94363c64d654faa0148d2af4bbc262555620b9 go1.17.5.windows-amd64.zip -45e88676b68e9cf364be469b5a27965397f4e339aa622c2f52c10433c56e5030 go1.17.5.windows-arm64.zip +38f423db4cc834883f2b52344282fa7a39fbb93650dc62a11fdf0be6409bdad6 go1.18.src.tar.gz +70bb4a066997535e346c8bfa3e0dfe250d61100b17ccc5676274642447834969 go1.18.darwin-amd64.tar.gz +9cab6123af9ffade905525d79fc9ee76651e716c85f1f215872b5f2976782480 go1.18.darwin-arm64.tar.gz +e63492d4f38487331518eb4b50e670d853bb8d67e88596269af84bb9aca0b381 go1.18.freebsd-386.tar.gz +01cd67bbc12e659ff236ecebde1806f76452f7ca145c172d5ecdbf4f4803daae go1.18.freebsd-amd64.tar.gz +1c04cf4440b323a66328e0df95d409f955b9b475e58eae235fdd3d1f1cf02f4f go1.18.linux-386.tar.gz +e85278e98f57cdb150fe8409e6e5df5343ecb13cebf03a5d5ff12bd55a80264f go1.18.linux-amd64.tar.gz +7ac7b396a691e588c5fb57687759e6c4db84a2a3bbebb0765f4b38e5b1c5b00e go1.18.linux-arm64.tar.gz +a80fa43d1f4575fb030adbfbaa94acd860c6847820764eecb06c63b7c103612b go1.18.linux-armv6l.tar.gz +070351edac192483c074b38d08ec19251a83f8210765a532a84c3dcf8aec04d8 go1.18.linux-ppc64le.tar.gz +ea265f5e62fcaf941d53f0cdb81222d9668e1672a0d39d992f16ff0e87c0ee6b go1.18.linux-s390x.tar.gz +e23fd2a0509690fe7e63b2b1bcd4c39ed57b46ccde76f35dc0d16ca7fdbc5aaa go1.18.windows-386.zip +65c5c0c709a7ca1b357091b10b795b439d8b50e579d3893edab4c7e9b384f435 go1.18.windows-amd64.zip +1c454eb60c64d481965a165c623ff1ed6cf32d68c6b31f36069c8768d908f093 go1.18.windows-arm64.zip -d4bd25b9814eeaa2134197dd2c7671bb791eae786d42010d9d788af20dee4bfa golangci-lint-1.42.0-darwin-amd64.tar.gz -e56859c04a2ad5390c6a497b1acb1cc9329ecb1010260c6faae9b5a4c35b35ea golangci-lint-1.42.0-darwin-arm64.tar.gz -14d912a3fa856830339472fc4dc341933adf15f37bdb7130bbbfcf960ecf4809 golangci-lint-1.42.0-freebsd-386.tar.gz -337257fccc9baeb5ee1cd7e70c153e9d9f59d3afde46d631659500048afbdf80 golangci-lint-1.42.0-freebsd-amd64.tar.gz -6debcc266b629359fdd8eef4f4abb05a621604079d27016265afb5b4593b0eff golangci-lint-1.42.0-freebsd-armv6.tar.gz -878f0e190169db2ce9dde8cefbd99adc4fe28b90b68686bbfcfcc2085e6d693e golangci-lint-1.42.0-freebsd-armv7.tar.gz -42c78e31faf62b225363eff1b1d2aa74f9dbcb75686c8914aa3e90d6af65cece golangci-lint-1.42.0-linux-386.tar.gz -6937f62f8e2329e94822dc11c10b871ace5557ae1fcc4ee2f9980cd6aecbc159 golangci-lint-1.42.0-linux-amd64.tar.gz -2cf8d23d96cd854a537b355dab2962b960b88a06b615232599f066afd233f246 golangci-lint-1.42.0-linux-arm64.tar.gz -08b003d1ed61367473886defc957af5301066e62338e5d96a319c34dadc4c1d1 golangci-lint-1.42.0-linux-armv6.tar.gz -c7c00ec4845e806a1f32685f5b150219e180bd6d6a9d584be8d27f0c41d7a1bf golangci-lint-1.42.0-linux-armv7.tar.gz -3650fcf29eb3d8ee326d77791a896b15259eb2d5bf77437dc72e7efe5af6bd40 golangci-lint-1.42.0-linux-mips64.tar.gz -f51ae003fdbca4fef78ba73e2eb736a939c8eaa178cd452234213b489da5a420 golangci-lint-1.42.0-linux-mips64le.tar.gz -1b0bb7b8b22cc4ea7da44fd5ad5faaf6111d0677e01cc6f961b62a96537de2c6 golangci-lint-1.42.0-linux-ppc64le.tar.gz -8cb56927eb75e572450efbe0ff0f9cf3f56dc9faa81d9e8d30d6559fc1d06e6d golangci-lint-1.42.0-linux-riscv64.tar.gz -5ac41cd31825a176b21505a371a7b307cd9cdf17df0f35bbb3bf1466f9356ccc golangci-lint-1.42.0-linux-s390x.tar.gz -e1cebd2af621ac4b64c20937df92c3819264f2174c92f51e196db1e64ae097e0 golangci-lint-1.42.0-windows-386.zip -7e70fcde8e87a17cae0455df07d257ebc86669f3968d568e12727fa24bbe9883 golangci-lint-1.42.0-windows-amd64.zip -59da7ce1bda432616bfc28ae663e52c3675adee8d9bf5959fafd657c159576ab golangci-lint-1.42.0-windows-armv6.zip -65f62dda937bfcede0326ac77abe947ce1548931e6e13298ca036cb31f224db5 golangci-lint-1.42.0-windows-armv7.zip +03c181fc1bb29ea3e73cbb23399c43b081063833a7cf7554b94e5a98308df53e golangci-lint-1.45.2-linux-riscv64.deb +08a50bbbf451ede6d5354179eb3e14a5634e156dfa92cb9a2606f855a637e35b golangci-lint-1.45.2-linux-ppc64le.rpm +0d12f6ec1296b5a70e392aa88cd2295cceef266165eb7028e675f455515dd1c9 golangci-lint-1.45.2-linux-armv7.deb +10f2846e2e50e4ea8ae426ee62dcd2227b23adddd8e991aa3c065927ac948735 golangci-lint-1.45.2-linux-ppc64le.deb +1463049b744871168095e3e8f687247d6040eeb895955b869889ea151e0603ab golangci-lint-1.45.2-linux-arm64.tar.gz +15720f9c4c6f9324af695f081dc189adc7751b255759e78d7b2df1d7e9192533 golangci-lint-1.45.2-linux-amd64.deb +166d922e4d3cfe3d47786c590154a9c8ea689dff0aa92b73d2f5fc74fc570c29 golangci-lint-1.45.2-linux-arm64.rpm +1a3754c69f7cc19ab89cbdcc2550da4cf9abb3120383c6b3bd440c1ec22da2e6 golangci-lint-1.45.2-freebsd-386.tar.gz +1dec0aa46d4f0d241863b573f70129bdf1de9c595cf51172a840a588a4cd9fc5 golangci-lint-1.45.2-windows-amd64.zip +3198453806517c1ad988229f5e758ef850e671203f46d6905509df5bdf4dc24b golangci-lint-1.45.2-freebsd-armv7.tar.gz +46a3cd1749d7b98adc2dc01510ddbe21abe42689c8a53fb0e81662713629f215 golangci-lint-1.45.2-linux-386.deb +4e28bfb593d464b9e160f2acd5b71993836a183270bf8299b78ad31f7a168c0d golangci-lint-1.45.2-linux-arm64.deb +5157a58c8f9ab85c33af2e46f0d7c57a3b1e8953b81d61130e292e09f545cfab golangci-lint-1.45.2-linux-mips64le.tar.gz +518cd027644129fbf8ec4f02bd6f9ad7278aae826f92b63c80d4d0819ddde49a golangci-lint-1.45.2-linux-armv6.rpm +595ad6c6dade4c064351bc309f411703e457f8ffbb7a1806b3d8ee713333427f golangci-lint-1.45.2-linux-amd64.tar.gz +6994d6c80f0730751090986184a3481b4be2e6b6e84416238a2b857910045a4f golangci-lint-1.45.2-windows-arm64.zip +6c81652fc340118811b487f713c441fc6f527800bf5fd11b8929d08124efa015 golangci-lint-1.45.2-linux-armv7.tar.gz +726cb045559b7518bafdd3459de70a0647c087eb1b4634627a4b2e95b1258580 golangci-lint-1.45.2-freebsd-amd64.tar.gz +77df3774cdfda49b956d4a0e676da9a9b883f496ee37293c530770fef6b1d24e golangci-lint-1.45.2-linux-mips64.deb +7a9840f279a7d5d405bb434e101c2290964b3729630ac2add29280b962b7b9a5 golangci-lint-1.45.2-windows-armv6.zip +7d4bf9a5d80ec467aaaf66e78dbdcab567bbc6ba8151334c714eee58766aae32 golangci-lint-1.45.2-windows-armv7.zip +7e5f8821d39bb11d273b0841b34355f56bd5a45a2d5179f0d09e614e0efc0482 golangci-lint-1.45.2-linux-s390x.rpm +828de1bde796b23d8656b17a8885fbd879ef612795d62d1e4618126b419728b5 golangci-lint-1.45.2-linux-mips64.rpm +879a52107a797678a03c175cc7cf441411a14a01f66dc87f70bdfa304a4129a6 golangci-lint-1.45.2-windows-386.zip +87b6c7e3a3769f7d9abeb3bb82119b3c91e3c975300f6834fdeef8b2e37c98ff golangci-lint-1.45.2-linux-amd64.rpm +8b605c6d686c8af53ecc4ef39544541eeb1644d34cc10f9ffc5087808210c4ff golangci-lint-1.45.2-linux-s390x.deb +9427dbf51d0ac6f73a0f992838bd40c817470cc5bf6c8e2e2bea6fac46d7af6e golangci-lint-1.45.2-linux-ppc64le.tar.gz +995e509e895ca6a64ffc7395ac884d5961bdec98423cb896b17f345a9b4a19cf golangci-lint-1.45.2-darwin-amd64.tar.gz +a3f36278f2ea5516341e9071a2df6e65df272be80230b5406a12b72c6d425bee golangci-lint-1.45.2-linux-armv7.rpm +a5e12c50c23e87ac1deffc872f92ae85427b1198604969399805ae47cfe43f08 golangci-lint-1.45.2-linux-riscv64.tar.gz +aa8fa1be0729dbc2fbc4e01e82027097613eee74bd686ebef20f860b01fff8b3 golangci-lint-1.45.2-freebsd-armv6.tar.gz +c2b9669decc1b638cf2ee9060571af4e255f6dfcbb225c293e3a7ee4bb2c7217 golangci-lint-1.45.2-darwin-arm64.tar.gz +dfa8bdaf0387aec1cd5c1aa8857f67b2bbdfc2e42efce540c8fb9bbe3e8af302 golangci-lint-1.45.2-linux-armv6.tar.gz +eb8b8539dd017eee5c131ea9b875893ab2cebeeca41e8c6624907fb02224d643 golangci-lint-1.45.2-linux-386.rpm +ed6c7e17a857f30d715c5302fa250d95936936b277024bffea201187a257d7a7 golangci-lint-1.45.2-linux-armv6.deb +ef4d0154ace4001f01b288baeb118176242efb4fd163e178763e3213b77ef30b golangci-lint-1.45.2-linux-mips64le.deb +ef7002a2229f5ff5ba201a715fcf877664ea88decbe58e69d163293913024955 golangci-lint-1.45.2-linux-s390x.tar.gz +f13ecbd09228632e6bbe91a8324bd675c406eed22eb6d2c1e8192eed9ec4f914 golangci-lint-1.45.2-linux-386.tar.gz +f4cd9cfb09252f51699407277512263cae8409b665dd764f55a34738d0e89edc golangci-lint-1.45.2-linux-riscv64.rpm +fb1945dc59d37c9d14bf0a4aea11ea8651fa0e1d582ea80c4c44d0a536c08893 golangci-lint-1.45.2-linux-mips64.tar.gz +fe542c22738010f453c735a3c410decfd3784d1bd394b395c298ee298fc4c606 golangci-lint-1.45.2-linux-mips64le.rpm diff --git a/build/ci.go b/build/ci.go index 8b302511a7..c3dccfc588 100644 --- a/build/ci.go +++ b/build/ci.go @@ -130,13 +130,14 @@ var ( // Distros for which packages are created. // Note: vivid is unsupported because there is no golang-1.6 package for it. // Note: the following Ubuntu releases have been officially deprecated on Launchpad: - // wily, yakkety, zesty, artful, cosmic, disco, eoan, groovy + // wily, yakkety, zesty, artful, cosmic, disco, eoan, groovy, hirsuite debDistroGoBoots = map[string]string{ - "trusty": "golang-1.11", - "xenial": "golang-go", - "bionic": "golang-go", - "focal": "golang-go", - "hirsute": "golang-go", + "trusty": "golang-1.11", // EOL: 04/2024 + "xenial": "golang-go", // EOL: 04/2026 + "bionic": "golang-go", // EOL: 04/2028 + "focal": "golang-go", // EOL: 04/2030 + "impish": "golang-go", // EOL: 07/2022 + // "jammy": "golang-go", // EOL: 04/2027 } debGoBootPaths = map[string]string{ @@ -147,7 +148,7 @@ var ( // This is the version of go that will be downloaded by // // go run ci.go install -dlgo - dlgoVersion = "1.17.5" + dlgoVersion = "1.18" ) var GOBIN, _ = filepath.Abs(filepath.Join("build", "bin")) @@ -331,12 +332,21 @@ func doLint(cmdline []string) { // downloadLinter downloads and unpacks golangci-lint. func downloadLinter(cachedir string) string { - const version = "1.42.0" + const version = "1.45.2" csdb := build.MustLoadChecksums("build/checksums.txt") - base := fmt.Sprintf("golangci-lint-%s-%s-%s", version, runtime.GOOS, runtime.GOARCH) - url := fmt.Sprintf("https://github.com/golangci/golangci-lint/releases/download/v%s/%s.tar.gz", version, base) - archivePath := filepath.Join(cachedir, base+".tar.gz") + arch := runtime.GOARCH + ext := ".tar.gz" + + if runtime.GOOS == "windows" { + ext = ".zip" + } + if arch == "arm" { + arch += "v" + os.Getenv("GOARM") + } + base := fmt.Sprintf("golangci-lint-%s-%s-%s", version, runtime.GOOS, arch) + url := fmt.Sprintf("https://github.com/golangci/golangci-lint/releases/download/v%s/%s%s", version, base, ext) + archivePath := filepath.Join(cachedir, base+ext) if err := csdb.DownloadFile(url, archivePath); err != nil { log.Fatal(err) } @@ -1233,21 +1243,21 @@ func doPurge(cmdline []string) { // Iterate over the blobs, collect and sort all unstable builds for i := 0; i < len(blobs); i++ { - if !strings.Contains(blobs[i].Name, "unstable") { + if !strings.Contains(*blobs[i].Name, "unstable") { blobs = append(blobs[:i], blobs[i+1:]...) i-- } } for i := 0; i < len(blobs); i++ { for j := i + 1; j < len(blobs); j++ { - if blobs[i].Properties.LastModified.After(blobs[j].Properties.LastModified) { + if blobs[i].Properties.LastModified.After(*blobs[j].Properties.LastModified) { blobs[i], blobs[j] = blobs[j], blobs[i] } } } // Filter out all archives more recent that the given threshold for i, blob := range blobs { - if time.Since(blob.Properties.LastModified) < time.Duration(*limit)*24*time.Hour { + if time.Since(*blob.Properties.LastModified) < time.Duration(*limit)*24*time.Hour { blobs = blobs[:i] break } diff --git a/cmd/clef/main.go b/cmd/clef/main.go index 3aaf898db2..f7c3adebc4 100644 --- a/cmd/clef/main.go +++ b/cmd/clef/main.go @@ -661,7 +661,7 @@ func signer(c *cli.Context) error { if err != nil { utils.Fatalf("Could not register API: %w", err) } - handler := node.NewHTTPHandlerStack(srv, cors, vhosts) + handler := node.NewHTTPHandlerStack(srv, cors, vhosts, nil) // set port port := c.Int(rpcPortFlag.Name) diff --git a/cmd/devp2p/internal/ethtest/chain.go b/cmd/devp2p/internal/ethtest/chain.go index 7dcb412b53..d0d55a455d 100644 --- a/cmd/devp2p/internal/ethtest/chain.go +++ b/cmd/devp2p/internal/ethtest/chain.go @@ -26,6 +26,7 @@ import ( "os" "strings" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/forkid" "github.com/ethereum/go-ethereum/core/types" @@ -67,6 +68,13 @@ func (c *Chain) TotalDifficultyAt(height int) *big.Int { return sum } +func (c *Chain) RootAt(height int) common.Hash { + if height < c.Len() { + return c.blocks[height].Root() + } + return common.Hash{} +} + // ForkID gets the fork id of the chain. func (c *Chain) ForkID() forkid.ID { return forkid.NewID(c.chainConfig, c.blocks[0].Hash(), uint64(c.Len())) diff --git a/cmd/devp2p/internal/ethtest/helpers.go b/cmd/devp2p/internal/ethtest/helpers.go index e695cd42d6..dd9dfd8619 100644 --- a/cmd/devp2p/internal/ethtest/helpers.go +++ b/cmd/devp2p/internal/ethtest/helpers.go @@ -96,6 +96,19 @@ func (s *Suite) dial66() (*Conn, error) { return conn, nil } +// dial66 attempts to dial the given node and perform a handshake, +// returning the created Conn with additional snap/1 capabilities if +// successful. +func (s *Suite) dialSnap() (*Conn, error) { + conn, err := s.dial66() + if err != nil { + return nil, fmt.Errorf("dial failed: %v", err) + } + conn.caps = append(conn.caps, p2p.Cap{Name: "snap", Version: 1}) + conn.ourHighestSnapProtoVersion = 1 + return conn, nil +} + // peer performs both the protocol handshake and the status message // exchange with the node in order to peer with it. func (c *Conn) peer(chain *Chain, status *Status) error { @@ -131,7 +144,11 @@ func (c *Conn) handshake() error { } c.negotiateEthProtocol(msg.Caps) if c.negotiatedProtoVersion == 0 { - return fmt.Errorf("could not negotiate protocol (remote caps: %v, local eth version: %v)", msg.Caps, c.ourHighestProtoVersion) + return fmt.Errorf("could not negotiate eth protocol (remote caps: %v, local eth version: %v)", msg.Caps, c.ourHighestProtoVersion) + } + // If we require snap, verify that it was negotiated + if c.ourHighestSnapProtoVersion != c.negotiatedSnapProtoVersion { + return fmt.Errorf("could not negotiate snap protocol (remote caps: %v, local snap version: %v)", msg.Caps, c.ourHighestSnapProtoVersion) } return nil default: @@ -143,15 +160,21 @@ func (c *Conn) handshake() error { // advertised capability from peer. func (c *Conn) negotiateEthProtocol(caps []p2p.Cap) { var highestEthVersion uint + var highestSnapVersion uint for _, capability := range caps { - if capability.Name != "eth" { - continue - } - if capability.Version > highestEthVersion && capability.Version <= c.ourHighestProtoVersion { - highestEthVersion = capability.Version + switch capability.Name { + case "eth": + if capability.Version > highestEthVersion && capability.Version <= c.ourHighestProtoVersion { + highestEthVersion = capability.Version + } + case "snap": + if capability.Version > highestSnapVersion && capability.Version <= c.ourHighestSnapProtoVersion { + highestSnapVersion = capability.Version + } } } c.negotiatedProtoVersion = highestEthVersion + c.negotiatedSnapProtoVersion = highestSnapVersion } // statusExchange performs a `Status` message exchange with the given node. @@ -325,6 +348,15 @@ func (c *Conn) headersRequest(request *GetBlockHeaders, chain *Chain, isEth66 bo } } +func (c *Conn) snapRequest(msg Message, id uint64, chain *Chain) (Message, error) { + defer c.SetReadDeadline(time.Time{}) + c.SetReadDeadline(time.Now().Add(5 * time.Second)) + if err := c.Write(msg); err != nil { + return nil, fmt.Errorf("could not write to connection: %v", err) + } + return c.ReadSnap(id) +} + // getBlockHeaders66 executes the given `GetBlockHeaders` request over the eth66 protocol. func getBlockHeaders66(chain *Chain, conn *Conn, request *GetBlockHeaders, id uint64) (BlockHeaders, error) { // write request diff --git a/cmd/devp2p/internal/ethtest/snap.go b/cmd/devp2p/internal/ethtest/snap.go new file mode 100644 index 0000000000..95dd90fd3b --- /dev/null +++ b/cmd/devp2p/internal/ethtest/snap.go @@ -0,0 +1,675 @@ +// Copyright 2014 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package ethtest + +import ( + "bytes" + "errors" + "fmt" + "math/rand" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/eth/protocols/snap" + "github.com/ethereum/go-ethereum/internal/utesting" + "github.com/ethereum/go-ethereum/light" + "github.com/ethereum/go-ethereum/trie" + "golang.org/x/crypto/sha3" +) + +func (s *Suite) TestSnapStatus(t *utesting.T) { + conn, err := s.dialSnap() + if err != nil { + t.Fatalf("dial failed: %v", err) + } + defer conn.Close() + if err := conn.peer(s.chain, nil); err != nil { + t.Fatalf("peering failed: %v", err) + } +} + +type accRangeTest struct { + nBytes uint64 + root common.Hash + origin common.Hash + limit common.Hash + + expAccounts int + expFirst common.Hash + expLast common.Hash +} + +// TestSnapGetAccountRange various forms of GetAccountRange requests. +func (s *Suite) TestSnapGetAccountRange(t *utesting.T) { + var ( + root = s.chain.RootAt(999) + ffHash = common.HexToHash("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff") + zero = common.Hash{} + firstKeyMinus1 = common.HexToHash("0x00bf49f440a1cd0527e4d06e2765654c0f56452257516d793a9b8d604dcfdf29") + firstKey = common.HexToHash("0x00bf49f440a1cd0527e4d06e2765654c0f56452257516d793a9b8d604dcfdf2a") + firstKeyPlus1 = common.HexToHash("0x00bf49f440a1cd0527e4d06e2765654c0f56452257516d793a9b8d604dcfdf2b") + secondKey = common.HexToHash("0x09e47cd5056a689e708f22fe1f932709a320518e444f5f7d8d46a3da523d6606") + storageRoot = common.HexToHash("0xbe3d75a1729be157e79c3b77f00206db4d54e3ea14375a015451c88ec067c790") + ) + for i, tc := range []accRangeTest{ + // Tests decreasing the number of bytes + {4000, root, zero, ffHash, 76, firstKey, common.HexToHash("0xd2669dcf3858e7f1eecb8b5fedbf22fbea3e9433848a75035f79d68422c2dcda")}, + {3000, root, zero, ffHash, 57, firstKey, common.HexToHash("0x9b63fa753ece5cb90657d02ecb15df4dc1508d8c1d187af1bf7f1a05e747d3c7")}, + {2000, root, zero, ffHash, 38, firstKey, common.HexToHash("0x5e6140ecae4354a9e8f47559a8c6209c1e0e69cb077b067b528556c11698b91f")}, + {1, root, zero, ffHash, 1, firstKey, firstKey}, + + // Tests variations of the range + // + // [00b to firstkey]: should return [firstkey, secondkey], where secondkey is out of bounds + {4000, root, common.HexToHash("0x00bf000000000000000000000000000000000000000000000000000000000000"), common.HexToHash("0x00bf49f440a1cd0527e4d06e2765654c0f56452257516d793a9b8d604dcfdf2b"), 2, firstKey, secondKey}, + // [00b0 to 0bf0]: where both are before firstkey. Should return firstKey (even though it's out of bounds) + {4000, root, common.HexToHash("0x00b0000000000000000000000000000000000000000000000000000000000000"), common.HexToHash("0x00bf100000000000000000000000000000000000000000000000000000000000"), 1, firstKey, firstKey}, + {4000, root, zero, zero, 1, firstKey, firstKey}, + {4000, root, firstKey, ffHash, 76, firstKey, common.HexToHash("0xd2669dcf3858e7f1eecb8b5fedbf22fbea3e9433848a75035f79d68422c2dcda")}, + {4000, root, firstKeyPlus1, ffHash, 76, secondKey, common.HexToHash("0xd28f55d3b994f16389f36944ad685b48e0fc3f8fbe86c3ca92ebecadf16a783f")}, + + // Test different root hashes + // + // A stateroot that does not exist + {4000, common.Hash{0x13, 37}, zero, ffHash, 0, zero, zero}, + // The genesis stateroot (we expect it to not be served) + {4000, s.chain.RootAt(0), zero, ffHash, 0, zero, zero}, + // A 127 block old stateroot, expected to be served + {4000, s.chain.RootAt(999 - 127), zero, ffHash, 77, firstKey, common.HexToHash("0xe4c6fdef5dd4e789a2612390806ee840b8ec0fe52548f8b4efe41abb20c37aac")}, + // A root which is not actually an account root, but a storage orot + {4000, storageRoot, zero, ffHash, 0, zero, zero}, + + // And some non-sensical requests + // + // range from [0xFF to 0x00], wrong order. Expect not to be serviced + {4000, root, ffHash, zero, 0, zero, zero}, + // range from [firstkey, firstkey-1], wrong order. Expect to get first key. + {4000, root, firstKey, firstKeyMinus1, 1, firstKey, firstKey}, + // range from [firstkey, 0], wrong order. Expect to get first key. + {4000, root, firstKey, zero, 1, firstKey, firstKey}, + // Max bytes: 0. Expect to deliver one account. + {0, root, zero, ffHash, 1, firstKey, firstKey}, + } { + if err := s.snapGetAccountRange(t, &tc); err != nil { + t.Errorf("test %d \n root: %x\n range: %#x - %#x\n bytes: %d\nfailed: %v", i, tc.root, tc.origin, tc.limit, tc.nBytes, err) + } + } +} + +type stRangesTest struct { + root common.Hash + accounts []common.Hash + origin []byte + limit []byte + nBytes uint64 + + expSlots int +} + +// TestSnapGetStorageRange various forms of GetStorageRanges requests. +func (s *Suite) TestSnapGetStorageRanges(t *utesting.T) { + var ( + ffHash = common.HexToHash("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff") + zero = common.Hash{} + firstKey = common.HexToHash("0x00bf49f440a1cd0527e4d06e2765654c0f56452257516d793a9b8d604dcfdf2a") + secondKey = common.HexToHash("0x09e47cd5056a689e708f22fe1f932709a320518e444f5f7d8d46a3da523d6606") + ) + for i, tc := range []stRangesTest{ + { + root: s.chain.RootAt(999), + accounts: []common.Hash{secondKey, firstKey}, + origin: zero[:], + limit: ffHash[:], + nBytes: 500, + expSlots: 0, + }, + + /* + Some tests against this account: + { + "balance": "0", + "nonce": 1, + "root": "0xbe3d75a1729be157e79c3b77f00206db4d54e3ea14375a015451c88ec067c790", + "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "storage": { + "0x405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace": "02", + "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6": "01", + "0xc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b": "03" + }, + "key": "0xf493f79c43bd747129a226ad42529885a4b108aba6046b2d12071695a6627844" + } + */ + { // [:] -> [slot1, slot2, slot3] + root: s.chain.RootAt(999), + accounts: []common.Hash{common.HexToHash("0xf493f79c43bd747129a226ad42529885a4b108aba6046b2d12071695a6627844")}, + origin: zero[:], + limit: ffHash[:], + nBytes: 500, + expSlots: 3, + }, + { // [slot1:] -> [slot1, slot2, slot3] + root: s.chain.RootAt(999), + accounts: []common.Hash{common.HexToHash("0xf493f79c43bd747129a226ad42529885a4b108aba6046b2d12071695a6627844")}, + origin: common.FromHex("0x405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace"), + limit: ffHash[:], + nBytes: 500, + expSlots: 3, + }, + { // [slot1+ :] -> [slot2, slot3] + root: s.chain.RootAt(999), + accounts: []common.Hash{common.HexToHash("0xf493f79c43bd747129a226ad42529885a4b108aba6046b2d12071695a6627844")}, + origin: common.FromHex("0x405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf"), + limit: ffHash[:], + nBytes: 500, + expSlots: 2, + }, + { // [slot1:slot2] -> [slot1, slot2] + root: s.chain.RootAt(999), + accounts: []common.Hash{common.HexToHash("0xf493f79c43bd747129a226ad42529885a4b108aba6046b2d12071695a6627844")}, + origin: common.FromHex("0x405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace"), + limit: common.FromHex("0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6"), + nBytes: 500, + expSlots: 2, + }, + { // [slot1+:slot2+] -> [slot2, slot3] + root: s.chain.RootAt(999), + accounts: []common.Hash{common.HexToHash("0xf493f79c43bd747129a226ad42529885a4b108aba6046b2d12071695a6627844")}, + origin: common.FromHex("0x4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), + limit: common.FromHex("0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf7"), + nBytes: 500, + expSlots: 2, + }, + } { + if err := s.snapGetStorageRanges(t, &tc); err != nil { + t.Errorf("test %d \n root: %x\n range: %#x - %#x\n bytes: %d\n #accounts: %d\nfailed: %v", + i, tc.root, tc.origin, tc.limit, tc.nBytes, len(tc.accounts), err) + } + } +} + +type byteCodesTest struct { + nBytes uint64 + hashes []common.Hash + + expHashes int +} + +var ( + // emptyRoot is the known root hash of an empty trie. + emptyRoot = common.HexToHash("56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421") + // emptyCode is the known hash of the empty EVM bytecode. + emptyCode = common.HexToHash("c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470") +) + +// TestSnapGetByteCodes various forms of GetByteCodes requests. +func (s *Suite) TestSnapGetByteCodes(t *utesting.T) { + // The halfchain import should yield these bytecodes + var hcBytecodes []common.Hash + for _, s := range []string{ + "0x200c90460d8b0063210d5f5b9918e053c8f2c024485e0f1b48be8b1fc71b1317", + "0x20ba67ed4ac6aff626e0d1d4db623e2fada9593daeefc4a6eb4b70e6cff986f3", + "0x24b5b4902cb3d897c1cee9f16be8e897d8fa277c04c6dc8214f18295fca5de44", + "0x320b9d0a2be39b8a1c858f9f8cb96b1df0983071681de07ded3a7c0d05db5fd6", + "0x48cb0d5275936a24632babc7408339f9f7b051274809de565b8b0db76e97e03c", + "0x67c7a6f5cdaa43b4baa0e15b2be63346d1b9ce9f2c3d7e5804e0cacd44ee3b04", + "0x6d8418059bdc8c3fabf445e6bfc662af3b6a4ae45999b953996e42c7ead2ab49", + "0x7043422e5795d03f17ee0463a37235258e609fdd542247754895d72695e3e142", + "0x727f9e6f0c4bac1ff8d72c2972122d9c8d37ccb37e04edde2339e8da193546f1", + "0x86ccd5e23c78568a8334e0cebaf3e9f48c998307b0bfb1c378cee83b4bfb29cb", + "0x8fc89b00d6deafd4c4279531e743365626dbfa28845ec697919d305c2674302d", + "0x92cfc353bcb9746bb6f9996b6b9df779c88af2e9e0eeac44879ca19887c9b732", + "0x941b4872104f0995a4898fcf0f615ea6bf46bfbdfcf63ea8f2fd45b3f3286b77", + "0xa02fe8f41159bb39d2b704c633c3d6389cf4bfcb61a2539a9155f60786cf815f", + "0xa4b94e0afdffcb0af599677709dac067d3145489ea7aede57672bee43e3b7373", + "0xaf4e64edd3234c1205b725e42963becd1085f013590bd7ed93f8d711c5eb65fb", + "0xb69a18fa855b742031420081999086f6fb56c3930ae8840944e8b8ae9931c51e", + "0xc246c217bc73ce6666c93a93a94faa5250564f50a3fdc27ea74c231c07fe2ca6", + "0xcd6e4ab2c3034df2a8a1dfaaeb1c4baecd162a93d22de35e854ee2945cbe0c35", + "0xe24b692d09d6fc2f3d1a6028c400a27c37d7cbb11511907c013946d6ce263d3b", + "0xe440c5f0e8603fd1ed25976eee261ccee8038cf79d6a4c0eb31b2bf883be737f", + "0xe6eacbc509203d21ac814b350e72934fde686b7f673c19be8cf956b0c70078ce", + "0xe8530de4371467b5be7ea0e69e675ab36832c426d6c1ce9513817c0f0ae1486b", + "0xe85d487abbbc83bf3423cf9731360cf4f5a37220e18e5add54e72ee20861196a", + "0xf195ea389a5eea28db0be93660014275b158963dec44af1dfa7d4743019a9a49", + } { + hcBytecodes = append(hcBytecodes, common.HexToHash(s)) + } + + for i, tc := range []byteCodesTest{ + // A few stateroots + { + nBytes: 10000, hashes: []common.Hash{s.chain.RootAt(0), s.chain.RootAt(999)}, + expHashes: 0, + }, + { + nBytes: 10000, hashes: []common.Hash{s.chain.RootAt(0), s.chain.RootAt(0)}, + expHashes: 0, + }, + // Empties + { + nBytes: 10000, hashes: []common.Hash{emptyRoot}, + expHashes: 0, + }, + { + nBytes: 10000, hashes: []common.Hash{emptyCode}, + expHashes: 1, + }, + { + nBytes: 10000, hashes: []common.Hash{emptyCode, emptyCode, emptyCode}, + expHashes: 3, + }, + // The existing bytecodes + { + nBytes: 10000, hashes: hcBytecodes, + expHashes: len(hcBytecodes), + }, + // The existing, with limited byte arg + { + nBytes: 1, hashes: hcBytecodes, + expHashes: 1, + }, + { + nBytes: 0, hashes: hcBytecodes, + expHashes: 1, + }, + { + nBytes: 1000, hashes: []common.Hash{hcBytecodes[0], hcBytecodes[0], hcBytecodes[0], hcBytecodes[0]}, + expHashes: 4, + }, + } { + if err := s.snapGetByteCodes(t, &tc); err != nil { + t.Errorf("test %d \n bytes: %d\n #hashes: %d\nfailed: %v", i, tc.nBytes, len(tc.hashes), err) + } + } +} + +type trieNodesTest struct { + root common.Hash + paths []snap.TrieNodePathSet + nBytes uint64 + + expHashes []common.Hash + expReject bool +} + +func decodeNibbles(nibbles []byte, bytes []byte) { + for bi, ni := 0, 0; ni < len(nibbles); bi, ni = bi+1, ni+2 { + bytes[bi] = nibbles[ni]<<4 | nibbles[ni+1] + } +} + +// hasTerm returns whether a hex key has the terminator flag. +func hasTerm(s []byte) bool { + return len(s) > 0 && s[len(s)-1] == 16 +} + +func keybytesToHex(str []byte) []byte { + l := len(str)*2 + 1 + var nibbles = make([]byte, l) + for i, b := range str { + nibbles[i*2] = b / 16 + nibbles[i*2+1] = b % 16 + } + nibbles[l-1] = 16 + return nibbles +} + +func hexToCompact(hex []byte) []byte { + terminator := byte(0) + if hasTerm(hex) { + terminator = 1 + hex = hex[:len(hex)-1] + } + buf := make([]byte, len(hex)/2+1) + buf[0] = terminator << 5 // the flag byte + if len(hex)&1 == 1 { + buf[0] |= 1 << 4 // odd flag + buf[0] |= hex[0] // first nibble is contained in the first byte + hex = hex[1:] + } + decodeNibbles(hex, buf[1:]) + return buf +} + +// TestSnapTrieNodes various forms of GetTrieNodes requests. +func (s *Suite) TestSnapTrieNodes(t *utesting.T) { + + key := common.FromHex("0x00bf49f440a1cd0527e4d06e2765654c0f56452257516d793a9b8d604dcfdf2a") + // helper function to iterate the key, and generate the compact-encoded + // trie paths along the way. + pathTo := func(length int) snap.TrieNodePathSet { + hex := keybytesToHex(key)[:length] + hex[len(hex)-1] = 0 // remove term flag + hKey := hexToCompact(hex) + return snap.TrieNodePathSet{hKey} + } + var accPaths []snap.TrieNodePathSet + for i := 1; i <= 65; i++ { + accPaths = append(accPaths, pathTo(i)) + } + empty := emptyCode + for i, tc := range []trieNodesTest{ + { + root: s.chain.RootAt(999), + paths: nil, + nBytes: 500, + expHashes: nil, + }, + { + root: s.chain.RootAt(999), + paths: []snap.TrieNodePathSet{ + snap.TrieNodePathSet{}, // zero-length pathset should 'abort' and kick us off + snap.TrieNodePathSet{[]byte{0}}, + }, + nBytes: 5000, + expHashes: []common.Hash{}, + expReject: true, + }, + { + root: s.chain.RootAt(999), + paths: []snap.TrieNodePathSet{ + snap.TrieNodePathSet{[]byte{0}}, + snap.TrieNodePathSet{[]byte{1}, []byte{0}}, + }, + nBytes: 5000, + //0x6b3724a41b8c38b46d4d02fba2bb2074c47a507eb16a9a4b978f91d32e406faf + expHashes: []common.Hash{s.chain.RootAt(999)}, + }, + { // nonsensically long path + root: s.chain.RootAt(999), + paths: []snap.TrieNodePathSet{ + snap.TrieNodePathSet{[]byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8}}, + }, + nBytes: 5000, + expHashes: []common.Hash{common.HexToHash("0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470")}, + }, + { + root: s.chain.RootAt(0), + paths: []snap.TrieNodePathSet{ + snap.TrieNodePathSet{[]byte{0}}, + snap.TrieNodePathSet{[]byte{1}, []byte{0}}, + }, + nBytes: 5000, + expHashes: []common.Hash{}, + }, + { + // The leaf is only a couple of levels down, so the continued trie traversal causes lookup failures. + root: s.chain.RootAt(999), + paths: accPaths, + nBytes: 5000, + expHashes: []common.Hash{ + common.HexToHash("0xbcefee69b37cca1f5bf3a48aebe08b35f2ea1864fa958bb0723d909a0e0d28d8"), + common.HexToHash("0x4fb1e4e2391e4b4da471d59641319b8fa25d76c973d4bec594d7b00a69ae5135"), + empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, + empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, + empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, + empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, + empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, + empty, empty, empty}, + }, + { + // Basically the same as above, with different ordering + root: s.chain.RootAt(999), + paths: []snap.TrieNodePathSet{ + accPaths[10], accPaths[1], accPaths[0], + }, + nBytes: 5000, + expHashes: []common.Hash{ + empty, + common.HexToHash("0x4fb1e4e2391e4b4da471d59641319b8fa25d76c973d4bec594d7b00a69ae5135"), + common.HexToHash("0xbcefee69b37cca1f5bf3a48aebe08b35f2ea1864fa958bb0723d909a0e0d28d8"), + }, + }, + } { + if err := s.snapGetTrieNodes(t, &tc); err != nil { + t.Errorf("test %d \n #hashes %x\n root: %#x\n bytes: %d\nfailed: %v", i, len(tc.expHashes), tc.root, tc.nBytes, err) + } + } +} + +func (s *Suite) snapGetAccountRange(t *utesting.T, tc *accRangeTest) error { + conn, err := s.dialSnap() + if err != nil { + t.Fatalf("dial failed: %v", err) + } + defer conn.Close() + if err = conn.peer(s.chain, nil); err != nil { + t.Fatalf("peering failed: %v", err) + } + // write request + req := &GetAccountRange{ + ID: uint64(rand.Int63()), + Root: tc.root, + Origin: tc.origin, + Limit: tc.limit, + Bytes: tc.nBytes, + } + resp, err := conn.snapRequest(req, req.ID, s.chain) + if err != nil { + return fmt.Errorf("account range request failed: %v", err) + } + var res *snap.AccountRangePacket + if r, ok := resp.(*AccountRange); !ok { + return fmt.Errorf("account range response wrong: %T %v", resp, resp) + } else { + res = (*snap.AccountRangePacket)(r) + } + if exp, got := tc.expAccounts, len(res.Accounts); exp != got { + return fmt.Errorf("expected %d accounts, got %d", exp, got) + } + // Check that the encoding order is correct + for i := 1; i < len(res.Accounts); i++ { + if bytes.Compare(res.Accounts[i-1].Hash[:], res.Accounts[i].Hash[:]) >= 0 { + return fmt.Errorf("accounts not monotonically increasing: #%d [%x] vs #%d [%x]", i-1, res.Accounts[i-1].Hash[:], i, res.Accounts[i].Hash[:]) + } + } + var ( + hashes []common.Hash + accounts [][]byte + proof = res.Proof + ) + hashes, accounts, err = res.Unpack() + if err != nil { + return err + } + if len(hashes) == 0 && len(accounts) == 0 && len(proof) == 0 { + return nil + } + if len(hashes) > 0 { + if exp, got := tc.expFirst, res.Accounts[0].Hash; exp != got { + return fmt.Errorf("expected first account 0x%x, got 0x%x", exp, got) + } + if exp, got := tc.expLast, res.Accounts[len(res.Accounts)-1].Hash; exp != got { + return fmt.Errorf("expected last account 0x%x, got 0x%x", exp, got) + } + } + // Reconstruct a partial trie from the response and verify it + keys := make([][]byte, len(hashes)) + for i, key := range hashes { + keys[i] = common.CopyBytes(key[:]) + } + nodes := make(light.NodeList, len(proof)) + for i, node := range proof { + nodes[i] = node + } + proofdb := nodes.NodeSet() + + var end []byte + if len(keys) > 0 { + end = keys[len(keys)-1] + } + _, err = trie.VerifyRangeProof(tc.root, tc.origin[:], end, keys, accounts, proofdb) + return err +} + +func (s *Suite) snapGetStorageRanges(t *utesting.T, tc *stRangesTest) error { + conn, err := s.dialSnap() + if err != nil { + t.Fatalf("dial failed: %v", err) + } + defer conn.Close() + if err = conn.peer(s.chain, nil); err != nil { + t.Fatalf("peering failed: %v", err) + } + // write request + req := &GetStorageRanges{ + ID: uint64(rand.Int63()), + Root: tc.root, + Accounts: tc.accounts, + Origin: tc.origin, + Limit: tc.limit, + Bytes: tc.nBytes, + } + resp, err := conn.snapRequest(req, req.ID, s.chain) + if err != nil { + return fmt.Errorf("account range request failed: %v", err) + } + var res *snap.StorageRangesPacket + if r, ok := resp.(*StorageRanges); !ok { + return fmt.Errorf("account range response wrong: %T %v", resp, resp) + } else { + res = (*snap.StorageRangesPacket)(r) + } + gotSlots := 0 + // Ensure the ranges are monotonically increasing + for i, slots := range res.Slots { + gotSlots += len(slots) + for j := 1; j < len(slots); j++ { + if bytes.Compare(slots[j-1].Hash[:], slots[j].Hash[:]) >= 0 { + return fmt.Errorf("storage slots not monotonically increasing for account #%d: #%d [%x] vs #%d [%x]", i, j-1, slots[j-1].Hash[:], j, slots[j].Hash[:]) + } + } + } + if exp, got := tc.expSlots, gotSlots; exp != got { + return fmt.Errorf("expected %d slots, got %d", exp, got) + } + return nil +} + +func (s *Suite) snapGetByteCodes(t *utesting.T, tc *byteCodesTest) error { + conn, err := s.dialSnap() + if err != nil { + t.Fatalf("dial failed: %v", err) + } + defer conn.Close() + if err = conn.peer(s.chain, nil); err != nil { + t.Fatalf("peering failed: %v", err) + } + // write request + req := &GetByteCodes{ + ID: uint64(rand.Int63()), + Hashes: tc.hashes, + Bytes: tc.nBytes, + } + resp, err := conn.snapRequest(req, req.ID, s.chain) + if err != nil { + return fmt.Errorf("getBytecodes request failed: %v", err) + } + var res *snap.ByteCodesPacket + if r, ok := resp.(*ByteCodes); !ok { + return fmt.Errorf("bytecodes response wrong: %T %v", resp, resp) + } else { + res = (*snap.ByteCodesPacket)(r) + } + if exp, got := tc.expHashes, len(res.Codes); exp != got { + for i, c := range res.Codes { + fmt.Printf("%d. %#x\n", i, c) + } + return fmt.Errorf("expected %d bytecodes, got %d", exp, got) + } + // Cross reference the requested bytecodes with the response to find gaps + // that the serving node is missing + var ( + bytecodes = res.Codes + hasher = sha3.NewLegacyKeccak256().(crypto.KeccakState) + hash = make([]byte, 32) + codes = make([][]byte, len(req.Hashes)) + ) + + for i, j := 0, 0; i < len(bytecodes); i++ { + // Find the next hash that we've been served, leaving misses with nils + hasher.Reset() + hasher.Write(bytecodes[i]) + hasher.Read(hash) + + for j < len(req.Hashes) && !bytes.Equal(hash, req.Hashes[j][:]) { + j++ + } + if j < len(req.Hashes) { + codes[j] = bytecodes[i] + j++ + continue + } + // We've either ran out of hashes, or got unrequested data + return errors.New("unexpected bytecode") + } + + return nil +} + +func (s *Suite) snapGetTrieNodes(t *utesting.T, tc *trieNodesTest) error { + conn, err := s.dialSnap() + if err != nil { + t.Fatalf("dial failed: %v", err) + } + defer conn.Close() + if err = conn.peer(s.chain, nil); err != nil { + t.Fatalf("peering failed: %v", err) + } + // write request + req := &GetTrieNodes{ + ID: uint64(rand.Int63()), + Root: tc.root, + Paths: tc.paths, + Bytes: tc.nBytes, + } + resp, err := conn.snapRequest(req, req.ID, s.chain) + if err != nil { + if tc.expReject { + return nil + } + return fmt.Errorf("trienodes request failed: %v", err) + } + var res *snap.TrieNodesPacket + if r, ok := resp.(*TrieNodes); !ok { + return fmt.Errorf("trienodes response wrong: %T %v", resp, resp) + } else { + res = (*snap.TrieNodesPacket)(r) + } + + // Check the correctness + + // Cross reference the requested trienodes with the response to find gaps + // that the serving node is missing + hasher := sha3.NewLegacyKeccak256().(crypto.KeccakState) + hash := make([]byte, 32) + trienodes := res.Nodes + if got, want := len(trienodes), len(tc.expHashes); got != want { + return fmt.Errorf("wrong trienode count, got %d, want %d\n", got, want) + } + for i, trienode := range trienodes { + hasher.Reset() + hasher.Write(trienode) + hasher.Read(hash) + if got, want := hash, tc.expHashes[i]; !bytes.Equal(got, want[:]) { + fmt.Printf("hash %d wrong, got %#x, want %#x\n", i, got, want) + err = fmt.Errorf("hash %d wrong, got %#x, want %#x", i, got, want) + } + } + return err +} diff --git a/cmd/devp2p/internal/ethtest/snapTypes.go b/cmd/devp2p/internal/ethtest/snapTypes.go new file mode 100644 index 0000000000..bb8638c3d8 --- /dev/null +++ b/cmd/devp2p/internal/ethtest/snapTypes.go @@ -0,0 +1,36 @@ +package ethtest + +import "github.com/ethereum/go-ethereum/eth/protocols/snap" + +// GetAccountRange represents an account range query. +type GetAccountRange snap.GetAccountRangePacket + +func (g GetAccountRange) Code() int { return 33 } + +type AccountRange snap.AccountRangePacket + +func (g AccountRange) Code() int { return 34 } + +type GetStorageRanges snap.GetStorageRangesPacket + +func (g GetStorageRanges) Code() int { return 35 } + +type StorageRanges snap.StorageRangesPacket + +func (g StorageRanges) Code() int { return 36 } + +type GetByteCodes snap.GetByteCodesPacket + +func (g GetByteCodes) Code() int { return 37 } + +type ByteCodes snap.ByteCodesPacket + +func (g ByteCodes) Code() int { return 38 } + +type GetTrieNodes snap.GetTrieNodesPacket + +func (g GetTrieNodes) Code() int { return 39 } + +type TrieNodes snap.TrieNodesPacket + +func (g TrieNodes) Code() int { return 40 } diff --git a/cmd/devp2p/internal/ethtest/suite.go b/cmd/devp2p/internal/ethtest/suite.go index 28ba4aa767..dee59bc579 100644 --- a/cmd/devp2p/internal/ethtest/suite.go +++ b/cmd/devp2p/internal/ethtest/suite.go @@ -125,6 +125,16 @@ func (s *Suite) Eth66Tests() []utesting.Test { } } +func (s *Suite) SnapTests() []utesting.Test { + return []utesting.Test{ + {Name: "TestSnapStatus", Fn: s.TestSnapStatus}, + {Name: "TestSnapAccountRange", Fn: s.TestSnapGetAccountRange}, + {Name: "TestSnapGetByteCodes", Fn: s.TestSnapGetByteCodes}, + {Name: "TestSnapGetTrieNodes", Fn: s.TestSnapTrieNodes}, + {Name: "TestSnapGetStorageRanges", Fn: s.TestSnapGetStorageRanges}, + } +} + var ( eth66 = true // indicates whether suite should negotiate eth66 connection eth65 = false // indicates whether suite should negotiate eth65 connection or below. diff --git a/cmd/devp2p/internal/ethtest/suite_test.go b/cmd/devp2p/internal/ethtest/suite_test.go index 6d14404e66..9bc55bc0ab 100644 --- a/cmd/devp2p/internal/ethtest/suite_test.go +++ b/cmd/devp2p/internal/ethtest/suite_test.go @@ -55,6 +55,27 @@ func TestEthSuite(t *testing.T) { } } +func TestSnapSuite(t *testing.T) { + geth, err := runGeth() + if err != nil { + t.Fatalf("could not run geth: %v", err) + } + defer geth.Close() + + suite, err := NewSuite(geth.Server().Self(), fullchainFile, genesisFile) + if err != nil { + t.Fatalf("could not create new test suite: %v", err) + } + for _, test := range suite.SnapTests() { + t.Run(test.Name, func(t *testing.T) { + result := utesting.RunTAP([]utesting.Test{{Name: test.Name, Fn: test.Fn}}, os.Stdout) + if result[0].Failed { + t.Fatal() + } + }) + } +} + // runGeth creates and starts a geth node func runGeth() (*node.Node, error) { stack, err := node.New(&node.Config{ diff --git a/cmd/devp2p/internal/ethtest/types.go b/cmd/devp2p/internal/ethtest/types.go index e49ea284e9..09bb218d51 100644 --- a/cmd/devp2p/internal/ethtest/types.go +++ b/cmd/devp2p/internal/ethtest/types.go @@ -19,6 +19,7 @@ package ethtest import ( "crypto/ecdsa" "fmt" + "time" "github.com/ethereum/go-ethereum/eth/protocols/eth" "github.com/ethereum/go-ethereum/p2p" @@ -126,10 +127,12 @@ func (pt PooledTransactions) Code() int { return 26 } // Conn represents an individual connection with a peer type Conn struct { *rlpx.Conn - ourKey *ecdsa.PrivateKey - negotiatedProtoVersion uint - ourHighestProtoVersion uint - caps []p2p.Cap + ourKey *ecdsa.PrivateKey + negotiatedProtoVersion uint + negotiatedSnapProtoVersion uint + ourHighestProtoVersion uint + ourHighestSnapProtoVersion uint + caps []p2p.Cap } // Read reads an eth packet from the connection. @@ -259,12 +262,7 @@ func (c *Conn) Read66() (uint64, Message) { // Write writes a eth packet to the connection. func (c *Conn) Write(msg Message) error { - // check if message is eth protocol message - var ( - payload []byte - err error - ) - payload, err = rlp.EncodeToBytes(msg) + payload, err := rlp.EncodeToBytes(msg) if err != nil { return err } @@ -281,3 +279,43 @@ func (c *Conn) Write66(req eth.Packet, code int) error { _, err = c.Conn.Write(uint64(code), payload) return err } + +// ReadSnap reads a snap/1 response with the given id from the connection. +func (c *Conn) ReadSnap(id uint64) (Message, error) { + respId := id + 1 + start := time.Now() + for respId != id && time.Since(start) < timeout { + code, rawData, _, err := c.Conn.Read() + if err != nil { + return nil, fmt.Errorf("could not read from connection: %v", err) + } + var snpMsg interface{} + switch int(code) { + case (GetAccountRange{}).Code(): + snpMsg = new(GetAccountRange) + case (AccountRange{}).Code(): + snpMsg = new(AccountRange) + case (GetStorageRanges{}).Code(): + snpMsg = new(GetStorageRanges) + case (StorageRanges{}).Code(): + snpMsg = new(StorageRanges) + case (GetByteCodes{}).Code(): + snpMsg = new(GetByteCodes) + case (ByteCodes{}).Code(): + snpMsg = new(ByteCodes) + case (GetTrieNodes{}).Code(): + snpMsg = new(GetTrieNodes) + case (TrieNodes{}).Code(): + snpMsg = new(TrieNodes) + default: + //return nil, fmt.Errorf("invalid message code: %d", code) + continue + } + if err := rlp.DecodeBytes(rawData, snpMsg); err != nil { + return nil, fmt.Errorf("could not rlp decode message: %v", err) + } + return snpMsg.(Message), nil + + } + return nil, fmt.Errorf("request timed out") +} diff --git a/cmd/devp2p/rlpxcmd.go b/cmd/devp2p/rlpxcmd.go index 24a16f0b3c..6557a239da 100644 --- a/cmd/devp2p/rlpxcmd.go +++ b/cmd/devp2p/rlpxcmd.go @@ -36,6 +36,7 @@ var ( Subcommands: []cli.Command{ rlpxPingCommand, rlpxEthTestCommand, + rlpxSnapTestCommand, }, } rlpxPingCommand = cli.Command{ @@ -53,6 +54,16 @@ var ( testTAPFlag, }, } + rlpxSnapTestCommand = cli.Command{ + Name: "snap-test", + Usage: "Runs tests against a node", + ArgsUsage: " ", + Action: rlpxSnapTest, + Flags: []cli.Flag{ + testPatternFlag, + testTAPFlag, + }, + } ) func rlpxPing(ctx *cli.Context) error { @@ -106,3 +117,15 @@ func rlpxEthTest(ctx *cli.Context) error { } return runTests(ctx, suite.AllEthTests()) } + +// rlpxSnapTest runs the snap protocol test suite. +func rlpxSnapTest(ctx *cli.Context) error { + if ctx.NArg() < 3 { + exit("missing path to chain.rlp as command-line argument") + } + suite, err := ethtest.NewSuite(getNodeArg(ctx), ctx.Args()[1], ctx.Args()[2]) + if err != nil { + exit(err) + } + return runTests(ctx, suite.SnapTests()) +} diff --git a/cmd/ethkey/utils.go b/cmd/ethkey/utils.go index f2986e8ee9..70baae92f4 100644 --- a/cmd/ethkey/utils.go +++ b/cmd/ethkey/utils.go @@ -49,7 +49,7 @@ func getPassphrase(ctx *cli.Context, confirmation bool) string { // signHash is a helper function that calculates a hash for the given message // that can be safely used to calculate a signature from. // -// The hash is calulcated as +// The hash is calculated as // keccak256("\x19Ethereum Signed Message:\n"${message length}${message}). // // This gives context to the signed message and prevents signing of transactions. diff --git a/cmd/evm/internal/t8ntool/execution.go b/cmd/evm/internal/t8ntool/execution.go index dfdde42173..874685f15e 100644 --- a/cmd/evm/internal/t8ntool/execution.go +++ b/cmd/evm/internal/t8ntool/execution.go @@ -67,6 +67,7 @@ type ommer struct { type stEnv struct { Coinbase common.Address `json:"currentCoinbase" gencodec:"required"` Difficulty *big.Int `json:"currentDifficulty"` + Random *big.Int `json:"currentRandom"` ParentDifficulty *big.Int `json:"parentDifficulty"` GasLimit uint64 `json:"currentGasLimit" gencodec:"required"` Number uint64 `json:"currentNumber" gencodec:"required"` @@ -81,6 +82,7 @@ type stEnv struct { type stEnvMarshaling struct { Coinbase common.UnprefixedAddress Difficulty *math.HexOrDecimal256 + Random *math.HexOrDecimal256 ParentDifficulty *math.HexOrDecimal256 GasLimit math.HexOrDecimal64 Number math.HexOrDecimal64 @@ -139,6 +141,11 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig, if pre.Env.BaseFee != nil { vmContext.BaseFee = new(big.Int).Set(pre.Env.BaseFee) } + // If random is defined, add it to the vmContext. + if pre.Env.Random != nil { + rnd := common.BigToHash(pre.Env.Random) + vmContext.Random = &rnd + } // If DAO is supported/enabled, we need to handle it here. In geth 'proper', it's // done in StateProcessor.Process(block, ...), right before transactions are applied. if chainConfig.DAOForkSupport && diff --git a/cmd/evm/internal/t8ntool/gen_stenv.go b/cmd/evm/internal/t8ntool/gen_stenv.go index 1bb3c6a46b..a6d774cdab 100644 --- a/cmd/evm/internal/t8ntool/gen_stenv.go +++ b/cmd/evm/internal/t8ntool/gen_stenv.go @@ -18,6 +18,7 @@ func (s stEnv) MarshalJSON() ([]byte, error) { type stEnv struct { Coinbase common.UnprefixedAddress `json:"currentCoinbase" gencodec:"required"` Difficulty *math.HexOrDecimal256 `json:"currentDifficulty"` + Random *math.HexOrDecimal256 `json:"currentRandom"` ParentDifficulty *math.HexOrDecimal256 `json:"parentDifficulty"` GasLimit math.HexOrDecimal64 `json:"currentGasLimit" gencodec:"required"` Number math.HexOrDecimal64 `json:"currentNumber" gencodec:"required"` @@ -31,6 +32,7 @@ func (s stEnv) MarshalJSON() ([]byte, error) { var enc stEnv enc.Coinbase = common.UnprefixedAddress(s.Coinbase) enc.Difficulty = (*math.HexOrDecimal256)(s.Difficulty) + enc.Random = (*math.HexOrDecimal256)(s.Random) enc.ParentDifficulty = (*math.HexOrDecimal256)(s.ParentDifficulty) enc.GasLimit = math.HexOrDecimal64(s.GasLimit) enc.Number = math.HexOrDecimal64(s.Number) @@ -48,6 +50,7 @@ func (s *stEnv) UnmarshalJSON(input []byte) error { type stEnv struct { Coinbase *common.UnprefixedAddress `json:"currentCoinbase" gencodec:"required"` Difficulty *math.HexOrDecimal256 `json:"currentDifficulty"` + Random *math.HexOrDecimal256 `json:"currentRandom"` ParentDifficulty *math.HexOrDecimal256 `json:"parentDifficulty"` GasLimit *math.HexOrDecimal64 `json:"currentGasLimit" gencodec:"required"` Number *math.HexOrDecimal64 `json:"currentNumber" gencodec:"required"` @@ -69,6 +72,9 @@ func (s *stEnv) UnmarshalJSON(input []byte) error { if dec.Difficulty != nil { s.Difficulty = (*big.Int)(dec.Difficulty) } + if dec.Random != nil { + s.Random = (*big.Int)(dec.Random) + } if dec.ParentDifficulty != nil { s.ParentDifficulty = (*big.Int)(dec.ParentDifficulty) } diff --git a/cmd/evm/internal/t8ntool/transition.go b/cmd/evm/internal/t8ntool/transition.go index 11d71e4ce5..097f9ce65c 100644 --- a/cmd/evm/internal/t8ntool/transition.go +++ b/cmd/evm/internal/t8ntool/transition.go @@ -252,6 +252,10 @@ func Transition(ctx *cli.Context) error { return NewError(ErrorConfig, errors.New("EIP-1559 config but missing 'currentBaseFee' in env section")) } } + // Sanity check, to not `panic` in state_transition + if prestate.Env.Random != nil && !chainConfig.IsLondon(big.NewInt(int64(prestate.Env.Number))) { + return NewError(ErrorConfig, errors.New("can only apply RANDOM on top of London chainrules")) + } if env := prestate.Env; env.Difficulty == nil { // If difficulty was not provided by caller, we need to calculate it. switch { diff --git a/cmd/evm/testdata/15/exp3.json b/cmd/evm/testdata/15/exp3.json index 6c46d267cf..d7606a2073 100644 --- a/cmd/evm/testdata/15/exp3.json +++ b/cmd/evm/testdata/15/exp3.json @@ -21,19 +21,19 @@ "error": "transaction type not supported" }, { - "error": "rlp: expected List" + "error": "typed transaction too short" }, { - "error": "rlp: expected List" + "error": "typed transaction too short" }, { - "error": "rlp: expected List" + "error": "typed transaction too short" }, { - "error": "rlp: expected List" + "error": "typed transaction too short" }, { - "error": "rlp: expected List" + "error": "typed transaction too short" }, { "error": "rlp: expected input list for types.AccessListTx" diff --git a/cmd/geth/accountcmd_test.go b/cmd/geth/accountcmd_test.go index 9455eeda36..3a71b85716 100644 --- a/cmd/geth/accountcmd_test.go +++ b/cmd/geth/accountcmd_test.go @@ -120,7 +120,7 @@ func importAccountWithExpect(t *testing.T, key string, expected string) { if err := ioutil.WriteFile(passwordFile, []byte("foobar"), 0600); err != nil { t.Error(err) } - geth := runGeth(t, "account", "import", keyfile, "-password", passwordFile) + geth := runGeth(t, "--lightkdf", "account", "import", keyfile, "-password", passwordFile) defer geth.ExpectExit() geth.Expect(expected) } diff --git a/cmd/geth/config.go b/cmd/geth/config.go index 6be6480a09..d8ba5366fe 100644 --- a/cmd/geth/config.go +++ b/cmd/geth/config.go @@ -33,6 +33,7 @@ import ( "github.com/ethereum/go-ethereum/accounts/scwallet" "github.com/ethereum/go-ethereum/accounts/usbwallet" "github.com/ethereum/go-ethereum/cmd/utils" + "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/eth/downloader" "github.com/ethereum/go-ethereum/eth/ethconfig" "github.com/ethereum/go-ethereum/internal/ethapi" @@ -174,7 +175,23 @@ func makeFullNode(ctx *cli.Context) (*node.Node, ethapi.Backend) { if ctx.GlobalIsSet(utils.OverrideTerminalTotalDifficulty.Name) { cfg.Eth.OverrideTerminalTotalDifficulty = new(big.Int).SetUint64(ctx.GlobalUint64(utils.OverrideTerminalTotalDifficulty.Name)) } - backend, _ := utils.RegisterEthService(stack, &cfg.Eth, ctx.GlobalBool(utils.CatalystFlag.Name)) + backend, eth := utils.RegisterEthService(stack, &cfg.Eth) + // Warn users to migrate if they have a legacy freezer format. + if eth != nil { + firstIdx := uint64(0) + // Hack to speed up check for mainnet because we know + // the first non-empty block. + ghash := rawdb.ReadCanonicalHash(eth.ChainDb(), 0) + if cfg.Eth.NetworkId == 1 && ghash == params.MainnetGenesisHash { + firstIdx = 46147 + } + isLegacy, _, err := dbHasLegacyReceipts(eth.ChainDb(), firstIdx) + if err != nil { + log.Error("Failed to check db for legacy receipts", "err", err) + } else if isLegacy { + log.Warn("Database has receipts with a legacy format. Please run `geth db freezer-migrate`.") + } + } // Configure GraphQL if requested if ctx.GlobalIsSet(utils.GraphQLEnabledFlag.Name) { diff --git a/cmd/geth/dbcmd.go b/cmd/geth/dbcmd.go index 37ed0dcc69..9784a3efb9 100644 --- a/cmd/geth/dbcmd.go +++ b/cmd/geth/dbcmd.go @@ -34,9 +34,12 @@ import ( "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/console/prompt" "github.com/ethereum/go-ethereum/core/rawdb" + "github.com/ethereum/go-ethereum/core/state/snapshot" + "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/trie" + "github.com/olekukonko/tablewriter" "gopkg.in/urfave/cli.v1" ) @@ -69,6 +72,8 @@ Remove blockchain and state databases`, dbDumpFreezerIndex, dbImportCmd, dbExportCmd, + dbMetadataCmd, + dbMigrateFreezerCmd, }, } dbInspectCmd = cli.Command{ @@ -249,6 +254,38 @@ WARNING: This is a low-level operation which may cause database corruption!`, }, Description: "Exports the specified chain data to an RLP encoded stream, optionally gzip-compressed.", } + dbMetadataCmd = cli.Command{ + Action: utils.MigrateFlags(showMetaData), + Name: "metadata", + Usage: "Shows metadata about the chain status.", + Flags: []cli.Flag{ + utils.DataDirFlag, + utils.SyncModeFlag, + utils.MainnetFlag, + utils.RopstenFlag, + utils.SepoliaFlag, + utils.RinkebyFlag, + utils.GoerliFlag, + }, + Description: "Shows metadata about the chain status.", + } + dbMigrateFreezerCmd = cli.Command{ + Action: utils.MigrateFlags(freezerMigrate), + Name: "freezer-migrate", + Usage: "Migrate legacy parts of the freezer. (WARNING: may take a long time)", + ArgsUsage: "", + Flags: []cli.Flag{ + utils.DataDirFlag, + utils.SyncModeFlag, + utils.MainnetFlag, + utils.RopstenFlag, + utils.SepoliaFlag, + utils.RinkebyFlag, + utils.GoerliFlag, + }, + Description: `The freezer-migrate command checks your database for receipts in a legacy format and updates those. +WARNING: please back-up the receipt files in your ancients before running this command.`, + } ) func removeDB(ctx *cli.Context) error { @@ -555,7 +592,7 @@ func freezerInspect(ctx *cli.Context) error { defer stack.Close() path := filepath.Join(stack.ResolvePath("chaindata"), "ancient") log.Info("Opening freezer", "location", path, "name", kind) - if f, err := rawdb.NewFreezerTable(path, kind, disableSnappy); err != nil { + if f, err := rawdb.NewFreezerTable(path, kind, disableSnappy, true); err != nil { return err } else { f.DumpIndex(start, end) @@ -701,3 +738,138 @@ func exportChaindata(ctx *cli.Context) error { db := utils.MakeChainDatabase(ctx, stack, true) return utils.ExportChaindata(ctx.Args().Get(1), kind, exporter(db), stop) } + +func showMetaData(ctx *cli.Context) error { + stack, _ := makeConfigNode(ctx) + defer stack.Close() + db := utils.MakeChainDatabase(ctx, stack, true) + ancients, err := db.Ancients() + if err != nil { + fmt.Fprintf(os.Stderr, "Error accessing ancients: %v", err) + } + pp := func(val *uint64) string { + if val == nil { + return "" + } + return fmt.Sprintf("%d (0x%x)", *val, *val) + } + data := [][]string{ + {"databaseVersion", pp(rawdb.ReadDatabaseVersion(db))}, + {"headBlockHash", fmt.Sprintf("%v", rawdb.ReadHeadBlockHash(db))}, + {"headFastBlockHash", fmt.Sprintf("%v", rawdb.ReadHeadFastBlockHash(db))}, + {"headHeaderHash", fmt.Sprintf("%v", rawdb.ReadHeadHeaderHash(db))}} + if b := rawdb.ReadHeadBlock(db); b != nil { + data = append(data, []string{"headBlock.Hash", fmt.Sprintf("%v", b.Hash())}) + data = append(data, []string{"headBlock.Root", fmt.Sprintf("%v", b.Root())}) + data = append(data, []string{"headBlock.Number", fmt.Sprintf("%d (0x%x)", b.Number(), b.Number())}) + } + if b := rawdb.ReadSkeletonSyncStatus(db); b != nil { + data = append(data, []string{"SkeletonSyncStatus", string(b)}) + } + if h := rawdb.ReadHeadHeader(db); h != nil { + data = append(data, []string{"headHeader.Hash", fmt.Sprintf("%v", h.Hash())}) + data = append(data, []string{"headHeader.Root", fmt.Sprintf("%v", h.Root)}) + data = append(data, []string{"headHeader.Number", fmt.Sprintf("%d (0x%x)", h.Number, h.Number)}) + } + data = append(data, [][]string{{"frozen", fmt.Sprintf("%d items", ancients)}, + {"lastPivotNumber", pp(rawdb.ReadLastPivotNumber(db))}, + {"len(snapshotSyncStatus)", fmt.Sprintf("%d bytes", len(rawdb.ReadSnapshotSyncStatus(db)))}, + {"snapshotGenerator", snapshot.ParseGeneratorStatus(rawdb.ReadSnapshotGenerator(db))}, + {"snapshotDisabled", fmt.Sprintf("%v", rawdb.ReadSnapshotDisabled(db))}, + {"snapshotJournal", fmt.Sprintf("%d bytes", len(rawdb.ReadSnapshotJournal(db)))}, + {"snapshotRecoveryNumber", pp(rawdb.ReadSnapshotRecoveryNumber(db))}, + {"snapshotRoot", fmt.Sprintf("%v", rawdb.ReadSnapshotRoot(db))}, + {"txIndexTail", pp(rawdb.ReadTxIndexTail(db))}, + {"fastTxLookupLimit", pp(rawdb.ReadFastTxLookupLimit(db))}, + }...) + table := tablewriter.NewWriter(os.Stdout) + table.SetHeader([]string{"Field", "Value"}) + table.AppendBulk(data) + table.Render() + return nil +} + +func freezerMigrate(ctx *cli.Context) error { + stack, _ := makeConfigNode(ctx) + defer stack.Close() + + db := utils.MakeChainDatabase(ctx, stack, false) + defer db.Close() + + // Check first block for legacy receipt format + numAncients, err := db.Ancients() + if err != nil { + return err + } + if numAncients < 1 { + log.Info("No receipts in freezer to migrate") + return nil + } + + isFirstLegacy, firstIdx, err := dbHasLegacyReceipts(db, 0) + if err != nil { + return err + } + if !isFirstLegacy { + log.Info("No legacy receipts to migrate") + return nil + } + + log.Info("Starting migration", "ancients", numAncients, "firstLegacy", firstIdx) + start := time.Now() + if err := db.MigrateTable("receipts", types.ConvertLegacyStoredReceipts); err != nil { + return err + } + if err := db.Close(); err != nil { + return err + } + log.Info("Migration finished", "duration", time.Since(start)) + + return nil +} + +// dbHasLegacyReceipts checks freezer entries for legacy receipts. It stops at the first +// non-empty receipt and checks its format. The index of this first non-empty element is +// the second return parameter. +func dbHasLegacyReceipts(db ethdb.Database, firstIdx uint64) (bool, uint64, error) { + // Check first block for legacy receipt format + numAncients, err := db.Ancients() + if err != nil { + return false, 0, err + } + if numAncients < 1 { + return false, 0, nil + } + if firstIdx >= numAncients { + return false, firstIdx, nil + } + var ( + legacy bool + blob []byte + emptyRLPList = []byte{192} + ) + // Find first block with non-empty receipt, only if + // the index is not already provided. + if firstIdx == 0 { + for i := uint64(0); i < numAncients; i++ { + blob, err = db.Ancient("receipts", i) + if err != nil { + return false, 0, err + } + if len(blob) == 0 { + continue + } + if !bytes.Equal(blob, emptyRLPList) { + firstIdx = i + break + } + } + } + // Is first non-empty receipt legacy? + first, err := db.Ancient("receipts", firstIdx) + if err != nil { + return false, 0, err + } + legacy, err = types.IsLegacyStoredReceipts(first) + return legacy, firstIdx, err +} diff --git a/cmd/geth/main.go b/cmd/geth/main.go index 756a397d32..600e929706 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -109,7 +109,8 @@ var ( utils.UltraLightFractionFlag, utils.UltraLightOnlyAnnounceFlag, utils.LightNoSyncServeFlag, - utils.WhitelistFlag, + utils.EthPeerRequiredBlocksFlag, + utils.LegacyWhitelistFlag, utils.BloomFilterSizeFlag, utils.CacheFlag, utils.CacheDatabaseFlag, @@ -120,6 +121,7 @@ var ( utils.CacheSnapshotFlag, utils.CacheNoPrefetchFlag, utils.CachePreimagesFlag, + utils.FDLimitFlag, utils.ListenPortFlag, utils.MaxPeersFlag, utils.MaxPendingPeersFlag, @@ -150,6 +152,7 @@ var ( utils.GoerliFlag, utils.MumbaiFlag, utils.BorMainnetFlag, + utils.KilnFlag, utils.VMEnableDebugFlag, utils.NetworkIdFlag, utils.EthStatsURLFlag, @@ -161,7 +164,6 @@ var ( utils.GpoIgnoreGasPriceFlag, utils.MinerNotifyFullFlag, configFileFlag, - utils.CatalystFlag, } rpcFlags = []cli.Flag{ @@ -169,6 +171,10 @@ var ( utils.HTTPListenAddrFlag, utils.HTTPPortFlag, utils.HTTPCORSDomainFlag, + utils.AuthListenFlag, + utils.AuthPortFlag, + utils.AuthVirtualHostsFlag, + utils.JWTSecretFlag, utils.HTTPVirtualHostsFlag, utils.GraphQLEnabledFlag, utils.GraphQLCORSDomainFlag, @@ -212,7 +218,7 @@ func init() { // Initialize the CLI app and start Geth app.Action = geth app.HideVersion = true // we have a command to print the version - app.Copyright = "Copyright 2013-2021 The go-ethereum Authors" + app.Copyright = "Copyright 2013-2022 The go-ethereum Authors" app.Commands = []cli.Command{ // See chaincmd.go: initCommand, diff --git a/cmd/geth/snapshot.go b/cmd/geth/snapshot.go index 6ca8b768a3..d8bdd3769d 100644 --- a/cmd/geth/snapshot.go +++ b/cmd/geth/snapshot.go @@ -324,8 +324,7 @@ func traverseState(ctx *cli.Context) error { } } if !bytes.Equal(acc.CodeHash, emptyCode) { - code := rawdb.ReadCode(chaindb, common.BytesToHash(acc.CodeHash)) - if len(code) == 0 { + if !rawdb.HasCode(chaindb, common.BytesToHash(acc.CodeHash)) { log.Error("Code is missing", "hash", common.BytesToHash(acc.CodeHash)) return errors.New("missing code") } @@ -396,11 +395,10 @@ func traverseRawState(ctx *cli.Context) error { nodes += 1 node := accIter.Hash() + // Check the present for non-empty hash node(embedded node doesn't + // have their own hash). if node != (common.Hash{}) { - // Check the present for non-empty hash node(embedded node doesn't - // have their own hash). - blob := rawdb.ReadTrieNode(chaindb, node) - if len(blob) == 0 { + if !rawdb.HasTrieNode(chaindb, node) { log.Error("Missing trie node(account)", "hash", node) return errors.New("missing account") } @@ -428,8 +426,7 @@ func traverseRawState(ctx *cli.Context) error { // Check the present for non-empty hash node(embedded node doesn't // have their own hash). if node != (common.Hash{}) { - blob := rawdb.ReadTrieNode(chaindb, node) - if len(blob) == 0 { + if !rawdb.HasTrieNode(chaindb, node) { log.Error("Missing trie node(storage)", "hash", node) return errors.New("missing storage") } @@ -445,8 +442,7 @@ func traverseRawState(ctx *cli.Context) error { } } if !bytes.Equal(acc.CodeHash, emptyCode) { - code := rawdb.ReadCode(chaindb, common.BytesToHash(acc.CodeHash)) - if len(code) == 0 { + if !rawdb.HasCode(chaindb, common.BytesToHash(acc.CodeHash)) { log.Error("Code is missing", "account", common.BytesToHash(accIter.LeafKey())) return errors.New("missing code") } diff --git a/cmd/geth/usage.go b/cmd/geth/usage.go index 17d93f06e0..af5175cd63 100644 --- a/cmd/geth/usage.go +++ b/cmd/geth/usage.go @@ -48,6 +48,7 @@ var AppHelpFlagGroups = []flags.FlagGroup{ utils.RinkebyFlag, utils.RopstenFlag, utils.SepoliaFlag, + utils.KilnFlag, utils.SyncModeFlag, utils.ExitWhenSyncedFlag, utils.GCModeFlag, @@ -55,7 +56,7 @@ var AppHelpFlagGroups = []flags.FlagGroup{ utils.EthStatsURLFlag, utils.IdentityFlag, utils.LightKDFFlag, - utils.WhitelistFlag, + utils.EthPeerRequiredBlocksFlag, }, }, { @@ -121,6 +122,7 @@ var AppHelpFlagGroups = []flags.FlagGroup{ utils.CacheSnapshotFlag, utils.CacheNoPrefetchFlag, utils.CachePreimagesFlag, + utils.FDLimitFlag, }, }, { @@ -150,6 +152,10 @@ var AppHelpFlagGroups = []flags.FlagGroup{ utils.WSApiFlag, utils.WSPathPrefixFlag, utils.WSAllowedOriginsFlag, + utils.JWTSecretFlag, + utils.AuthListenFlag, + utils.AuthPortFlag, + utils.AuthVirtualHostsFlag, utils.GraphQLEnabledFlag, utils.GraphQLCORSDomainFlag, utils.GraphQLVirtualHostsFlag, @@ -223,6 +229,7 @@ var AppHelpFlagGroups = []flags.FlagGroup{ Name: "ALIASED (deprecated)", Flags: []cli.Flag{ utils.NoUSBFlag, + utils.LegacyWhitelistFlag, }, }, { @@ -231,7 +238,6 @@ var AppHelpFlagGroups = []flags.FlagGroup{ utils.SnapshotFlag, utils.BloomFilterSizeFlag, cli.HelpFlag, - utils.CatalystFlag, }, }, } diff --git a/cmd/geth/version_check_test.go b/cmd/geth/version_check_test.go index 0f056d1967..4be32d5e4f 100644 --- a/cmd/geth/version_check_test.go +++ b/cmd/geth/version_check_test.go @@ -25,6 +25,8 @@ import ( "strconv" "strings" "testing" + + "github.com/jedisct1/go-minisign" ) func TestVerification(t *testing.T) { @@ -128,3 +130,39 @@ func TestMatching(t *testing.T) { } } } + +func TestGethPubKeysParseable(t *testing.T) { + for _, pubkey := range gethPubKeys { + _, err := minisign.NewPublicKey(pubkey) + if err != nil { + t.Errorf("Should be parseable") + } + } +} + +func TestKeyID(t *testing.T) { + type args struct { + id [8]byte + } + tests := []struct { + name string + args args + want string + }{ + {"@holiman key", args{id: extractKeyId(gethPubKeys[0])}, "FB1D084D39BAEC24"}, + {"second key", args{id: extractKeyId(gethPubKeys[1])}, "138B1CA303E51687"}, + {"third key", args{id: extractKeyId(gethPubKeys[2])}, "FD9813B2D2098484"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := keyID(tt.args.id); got != tt.want { + t.Errorf("keyID() = %v, want %v", got, tt.want) + } + }) + } +} + +func extractKeyId(pubkey string) [8]byte { + p, _ := minisign.NewPublicKey(pubkey) + return p.KeyId +} diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 40c8db4cc2..fc5c300ab4 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -45,7 +45,7 @@ import ( "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/eth" - "github.com/ethereum/go-ethereum/eth/catalyst" + ethcatalyst "github.com/ethereum/go-ethereum/eth/catalyst" "github.com/ethereum/go-ethereum/eth/downloader" "github.com/ethereum/go-ethereum/eth/ethconfig" "github.com/ethereum/go-ethereum/eth/gasprice" @@ -56,6 +56,7 @@ import ( "github.com/ethereum/go-ethereum/internal/ethapi" "github.com/ethereum/go-ethereum/internal/flags" "github.com/ethereum/go-ethereum/les" + lescatalyst "github.com/ethereum/go-ethereum/les/catalyst" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/metrics" "github.com/ethereum/go-ethereum/metrics/exp" @@ -168,6 +169,10 @@ var ( Name: "sepolia", Usage: "Sepolia network: pre-configured proof-of-work test network", } + KilnFlag = cli.BoolFlag{ + Name: "kiln", + Usage: "Kiln network: pre-configured proof-of-work to proof-of-stake test network", + } DeveloperFlag = cli.BoolFlag{ Name: "dev", Usage: "Ephemeral proof-of-authority network with a pre-funded developer account, mining enabled", @@ -244,9 +249,13 @@ var ( Name: "lightkdf", Usage: "Reduce key-derivation RAM & CPU usage at some expense of KDF strength", } - WhitelistFlag = cli.StringFlag{ + EthPeerRequiredBlocksFlag = cli.StringFlag{ + Name: "eth.requiredblocks", + Usage: "Comma separated block number-to-hash mappings to require for peering (=)", + } + LegacyWhitelistFlag = cli.StringFlag{ Name: "whitelist", - Usage: "Comma separated block number-to-hash mappings to enforce (=)", + Usage: "Comma separated block number-to-hash mappings to enforce (=) (deprecated in favor of --peer.requiredblocks)", } BloomFilterSizeFlag = cli.Uint64Flag{ Name: "bloomfilter.size", @@ -444,6 +453,10 @@ var ( Name: "cache.preimages", Usage: "Enable recording the SHA3/keccak preimages of trie keys", } + FDLimitFlag = cli.IntFlag{ + Name: "fdlimit", + Usage: "Raise the open file descriptor resource limit (default = system fd limit)", + } // Miner settings MiningEnabledFlag = cli.BoolFlag{ Name: "mine", @@ -529,6 +542,26 @@ var ( Usage: "Sets a cap on transaction fee (in ether) that can be sent via the RPC APIs (0 = no cap)", Value: ethconfig.Defaults.RPCTxFeeCap, } + // Authenticated RPC HTTP settings + AuthListenFlag = cli.StringFlag{ + Name: "authrpc.addr", + Usage: "Listening address for authenticated APIs", + Value: node.DefaultConfig.AuthAddr, + } + AuthPortFlag = cli.IntFlag{ + Name: "authrpc.port", + Usage: "Listening port for authenticated APIs", + Value: node.DefaultConfig.AuthPort, + } + AuthVirtualHostsFlag = cli.StringFlag{ + Name: "authrpc.vhosts", + Usage: "Comma separated list of virtual hostnames from which to accept requests (server enforced). Accepts '*' wildcard.", + Value: strings.Join(node.DefaultConfig.AuthVirtualHosts, ","), + } + JWTSecretFlag = cli.StringFlag{ + Name: "authrpc.jwtsecret", + Usage: "Path to a JWT secret to use for authenticated RPC endpoints", + } // Logging and debug settings EthStatsURLFlag = cli.StringFlag{ Name: "ethstats", @@ -801,11 +834,6 @@ var ( Usage: "InfluxDB organization name (v2 only)", Value: metrics.DefaultConfig.InfluxDBOrganization, } - - CatalystFlag = cli.BoolFlag{ - Name: "catalyst", - Usage: "Catalyst mode (eth2 integration testing)", - } ) // MakeDataDir retrieves the currently requested data directory, terminating @@ -831,6 +859,9 @@ func MakeDataDir(ctx *cli.Context) string { if ctx.GlobalBool(SepoliaFlag.Name) { return filepath.Join(path, "sepolia") } + if ctx.GlobalBool(KilnFlag.Name) { + return filepath.Join(path, "kiln") + } return path } Fatalf("Cannot determine default data directory, please set manually (--datadir)") @@ -889,6 +920,8 @@ func setBootstrapNodes(ctx *cli.Context, cfg *p2p.Config) { urls = params.MumbaiBootnodes case ctx.GlobalBool(BorMainnetFlag.Name): urls = params.BorMainnetBootnodes + case ctx.GlobalBool(KilnFlag.Name): + urls = params.KilnBootnodes case cfg.BootstrapNodes != nil: return // already set, don't apply defaults. } @@ -975,6 +1008,18 @@ func setHTTP(ctx *cli.Context, cfg *node.Config) { cfg.HTTPPort = ctx.GlobalInt(HTTPPortFlag.Name) } + if ctx.GlobalIsSet(AuthListenFlag.Name) { + cfg.AuthAddr = ctx.GlobalString(AuthListenFlag.Name) + } + + if ctx.GlobalIsSet(AuthPortFlag.Name) { + cfg.AuthPort = ctx.GlobalInt(AuthPortFlag.Name) + } + + if ctx.GlobalIsSet(AuthVirtualHostsFlag.Name) { + cfg.AuthVirtualHosts = SplitAndTrim(ctx.GlobalString(AuthVirtualHostsFlag.Name)) + } + if ctx.GlobalIsSet(HTTPCORSDomainFlag.Name) { cfg.HTTPCors = SplitAndTrim(ctx.GlobalString(HTTPCORSDomainFlag.Name)) } @@ -1081,11 +1126,24 @@ func setLes(ctx *cli.Context, cfg *ethconfig.Config) { // MakeDatabaseHandles raises out the number of allowed file handles per process // for Geth and returns half of the allowance to assign to the database. -func MakeDatabaseHandles() int { +func MakeDatabaseHandles(max int) int { limit, err := fdlimit.Maximum() if err != nil { Fatalf("Failed to retrieve file descriptor allowance: %v", err) } + switch { + case max == 0: + // User didn't specify a meaningful value, use system limits + case max < 128: + // User specified something unhealthy, just use system defaults + log.Error("File descriptor limit invalid (<128)", "had", max, "updated", limit) + case max > limit: + // User requested more than the OS allows, notify that we can't allocate it + log.Warn("Requested file descriptors denied by OS", "req", max, "limit", limit) + default: + // User limit is meaningful and within allowed range, use that + limit = max + } raised, err := fdlimit.Raise(uint64(limit)) if err != nil { Fatalf("Failed to raise file descriptor allowance: %v", err) @@ -1242,6 +1300,10 @@ func SetNodeConfig(ctx *cli.Context, cfg *node.Config) { setDataDir(ctx, cfg) setSmartCard(ctx, cfg) + if ctx.GlobalIsSet(JWTSecretFlag.Name) { + cfg.JWTSecret = ctx.GlobalString(JWTSecretFlag.Name) + } + if ctx.GlobalIsSet(ExternalSignerFlag.Name) { cfg.ExternalSigner = ctx.GlobalString(ExternalSignerFlag.Name) } @@ -1316,6 +1378,8 @@ func setDataDir(ctx *cli.Context, cfg *node.Config) { cfg.DataDir = filepath.Join(homeDir, "/.bor/data") case ctx.GlobalBool(SepoliaFlag.Name) && cfg.DataDir == node.DefaultDataDir(): cfg.DataDir = filepath.Join(node.DefaultDataDir(), "sepolia") + case ctx.GlobalBool(KilnFlag.Name) && cfg.DataDir == node.DefaultDataDir(): + cfg.DataDir = filepath.Join(node.DefaultDataDir(), "kiln") } } @@ -1434,26 +1498,33 @@ func setMiner(ctx *cli.Context, cfg *miner.Config) { } } -func setWhitelist(ctx *cli.Context, cfg *ethconfig.Config) { - whitelist := ctx.GlobalString(WhitelistFlag.Name) - if whitelist == "" { - return +func setPeerRequiredBlocks(ctx *cli.Context, cfg *ethconfig.Config) { + peerRequiredBlocks := ctx.GlobalString(EthPeerRequiredBlocksFlag.Name) + + if peerRequiredBlocks == "" { + if ctx.GlobalIsSet(LegacyWhitelistFlag.Name) { + log.Warn("The flag --rpc is deprecated and will be removed, please use --peer.requiredblocks") + peerRequiredBlocks = ctx.GlobalString(LegacyWhitelistFlag.Name) + } else { + return + } } - cfg.Whitelist = make(map[uint64]common.Hash) - for _, entry := range strings.Split(whitelist, ",") { + + cfg.PeerRequiredBlocks = make(map[uint64]common.Hash) + for _, entry := range strings.Split(peerRequiredBlocks, ",") { parts := strings.Split(entry, "=") if len(parts) != 2 { - Fatalf("Invalid whitelist entry: %s", entry) + Fatalf("Invalid peer required block entry: %s", entry) } number, err := strconv.ParseUint(parts[0], 0, 64) if err != nil { - Fatalf("Invalid whitelist block number %s: %v", parts[0], err) + Fatalf("Invalid peer required block number %s: %v", parts[0], err) } var hash common.Hash if err = hash.UnmarshalText([]byte(parts[1])); err != nil { - Fatalf("Invalid whitelist hash %s: %v", parts[1], err) + Fatalf("Invalid peer required block hash %s: %v", parts[1], err) } - cfg.Whitelist[number] = hash + cfg.PeerRequiredBlocks[number] = hash } } @@ -1501,7 +1572,7 @@ func CheckExclusive(ctx *cli.Context, args ...interface{}) { // SetEthConfig applies eth-related command line flags to the config. func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) { // Avoid conflicting network flags - CheckExclusive(ctx, MainnetFlag, DeveloperFlag, RopstenFlag, RinkebyFlag, GoerliFlag, MumbaiFlag, BorMainnetFlag, SepoliaFlag) + CheckExclusive(ctx, MainnetFlag, DeveloperFlag, RopstenFlag, RinkebyFlag, GoerliFlag, MumbaiFlag, BorMainnetFlag, SepoliaFlag, KilnFlag) CheckExclusive(ctx, LightServeFlag, SyncModeFlag, "light") CheckExclusive(ctx, DeveloperFlag, ExternalSignerFlag) // Can't use both ephemeral unlocked and external signer if ctx.GlobalString(GCModeFlag.Name) == "archive" && ctx.GlobalUint64(TxLookupLimitFlag.Name) != 0 { @@ -1520,7 +1591,7 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) { setTxPool(ctx, &cfg.TxPool) setEthash(ctx, cfg) setMiner(ctx, &cfg.Miner) - setWhitelist(ctx, cfg) + setPeerRequiredBlocks(ctx, cfg) setLes(ctx, cfg) if ctx.GlobalIsSet(BorLogsFlag.Name) { @@ -1556,7 +1627,7 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) { if ctx.GlobalIsSet(CacheFlag.Name) || ctx.GlobalIsSet(CacheDatabaseFlag.Name) { cfg.DatabaseCache = ctx.GlobalInt(CacheFlag.Name) * ctx.GlobalInt(CacheDatabaseFlag.Name) / 100 } - cfg.DatabaseHandles = MakeDatabaseHandles() + cfg.DatabaseHandles = MakeDatabaseHandles(ctx.GlobalInt(FDLimitFlag.Name)) if ctx.GlobalIsSet(AncientFlag.Name) { cfg.DatabaseFreezer = ctx.GlobalString(AncientFlag.Name) } @@ -1677,6 +1748,12 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) { cfg.NetworkId = 137 } cfg.Genesis = core.DefaultBorMainnetGenesisBlock() + case ctx.GlobalBool(KilnFlag.Name): + if !ctx.GlobalIsSet(NetworkIdFlag.Name) { + cfg.NetworkId = 1337802 + } + cfg.Genesis = core.DefaultKilnGenesisBlock() + SetDNSDiscoveryDefaults(cfg, params.KilnGenesisHash) case ctx.GlobalBool(DeveloperFlag.Name): if !ctx.GlobalIsSet(NetworkIdFlag.Name) { cfg.NetworkId = 1337 @@ -1713,9 +1790,15 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) { // Create a new developer genesis block or reuse existing one cfg.Genesis = core.DeveloperGenesisBlock(uint64(ctx.GlobalInt(DeveloperPeriodFlag.Name)), ctx.GlobalUint64(DeveloperGasLimitFlag.Name), developer.Address) if ctx.GlobalIsSet(DataDirFlag.Name) { + // If datadir doesn't exist we need to open db in write-mode + // so leveldb can create files. + readonly := true + if !common.FileExist(stack.ResolvePath("chaindata")) { + readonly = false + } // Check if we have an already initialized chain and fall back to // that if so. Otherwise we need to generate a new genesis spec. - chaindb := MakeChainDatabase(ctx, stack, false) // TODO (MariusVanDerWijden) make this read only + chaindb := MakeChainDatabase(ctx, stack, readonly) if rawdb.ReadCanonicalHash(chaindb, 0) != (common.Hash{}) { cfg.Genesis = nil // fallback to db content } @@ -1750,15 +1833,15 @@ func SetDNSDiscoveryDefaults(cfg *ethconfig.Config, genesis common.Hash) { // RegisterEthService adds an Ethereum client to the stack. // The second return value is the full node instance, which may be nil if the // node is running as a light client. -func RegisterEthService(stack *node.Node, cfg *ethconfig.Config, isCatalyst bool) (ethapi.Backend, *eth.Ethereum) { +func RegisterEthService(stack *node.Node, cfg *ethconfig.Config) (ethapi.Backend, *eth.Ethereum) { if cfg.SyncMode == downloader.LightSync { backend, err := les.New(stack, cfg) if err != nil { Fatalf("Failed to register the Ethereum service: %v", err) } stack.RegisterAPIs(tracers.APIs(backend.ApiBackend)) - if isCatalyst { - if err := catalyst.RegisterLight(stack, backend); err != nil { + if backend.BlockChain().Config().TerminalTotalDifficulty != nil { + if err := lescatalyst.Register(stack, backend); err != nil { Fatalf("Failed to register the catalyst service: %v", err) } } @@ -1774,8 +1857,8 @@ func RegisterEthService(stack *node.Node, cfg *ethconfig.Config, isCatalyst bool Fatalf("Failed to create the LES server: %v", err) } } - if isCatalyst { - if err := catalyst.Register(stack, backend); err != nil { + if backend.BlockChain().Config().TerminalTotalDifficulty != nil { + if err := ethcatalyst.Register(stack, backend); err != nil { Fatalf("Failed to register the catalyst service: %v", err) } } @@ -1878,7 +1961,7 @@ func SplitTagsFlag(tagsFlag string) map[string]string { func MakeChainDatabase(ctx *cli.Context, stack *node.Node, readonly bool) ethdb.Database { var ( cache = ctx.GlobalInt(CacheFlag.Name) * ctx.GlobalInt(CacheDatabaseFlag.Name) / 100 - handles = MakeDatabaseHandles() + handles = MakeDatabaseHandles(ctx.GlobalInt(FDLimitFlag.Name)) err error chainDb ethdb.Database @@ -1913,6 +1996,8 @@ func MakeGenesis(ctx *cli.Context) *core.Genesis { genesis = core.DefaultMumbaiGenesisBlock() case ctx.GlobalBool(BorMainnetFlag.Name): genesis = core.DefaultBorMainnetGenesisBlock() + case ctx.GlobalBool(KilnFlag.Name): + genesis = core.DefaultKilnGenesisBlock() case ctx.GlobalBool(DeveloperFlag.Name): Fatalf("Developer chains are ephemeral") } diff --git a/consensus/beacon/consensus.go b/consensus/beacon/consensus.go index 9467fea67b..1fd7deb872 100644 --- a/consensus/beacon/consensus.go +++ b/consensus/beacon/consensus.go @@ -43,7 +43,6 @@ var ( // error types into the consensus package. var ( errTooManyUncles = errors.New("too many uncles") - errInvalidMixDigest = errors.New("invalid mix digest") errInvalidNonce = errors.New("invalid nonce") errInvalidUncleHash = errors.New("invalid uncle hash") ) @@ -182,10 +181,7 @@ func (beacon *Beacon) verifyHeader(chain consensus.ChainHeaderReader, header, pa if len(header.Extra) > 32 { return fmt.Errorf("extra-data longer than 32 bytes (%d)", len(header.Extra)) } - // Verify the seal parts. Ensure the mixhash, nonce and uncle hash are the expected value. - if header.MixDigest != (common.Hash{}) { - return errInvalidMixDigest - } + // Verify the seal parts. Ensure the nonce and uncle hash are the expected value. if header.Nonce != beaconNonce { return errInvalidNonce } diff --git a/consensus/ethash/ethash.go b/consensus/ethash/ethash.go index 4e33d99c8d..c196ad0621 100644 --- a/consensus/ethash/ethash.go +++ b/consensus/ethash/ethash.go @@ -549,6 +549,11 @@ func NewShared() *Ethash { // Close closes the exit channel to notify all backend threads exiting. func (ethash *Ethash) Close() error { + return ethash.StopRemoteSealer() +} + +// StopRemoteSealer stops the remote sealer +func (ethash *Ethash) StopRemoteSealer() error { ethash.closeOnce.Do(func() { // Short circuit if the exit channel is not allocated. if ethash.remote == nil { diff --git a/core/beacon/errors.go b/core/beacon/errors.go new file mode 100644 index 0000000000..83d5eebd5f --- /dev/null +++ b/core/beacon/errors.go @@ -0,0 +1,50 @@ +// Copyright 2022 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see + +package beacon + +import "github.com/ethereum/go-ethereum/rpc" + +var ( + // VALID is returned by the engine API in the following calls: + // - newPayloadV1: if the payload was already known or was just validated and executed + // - forkchoiceUpdateV1: if the chain accepted the reorg (might ignore if it's stale) + VALID = "VALID" + + // INVALID is returned by the engine API in the following calls: + // - newPayloadV1: if the payload failed to execute on top of the local chain + // - forkchoiceUpdateV1: if the new head is unknown, pre-merge, or reorg to it fails + INVALID = "INVALID" + + // SYNCING is returned by the engine API in the following calls: + // - newPayloadV1: if the payload was accepted on top of an active sync + // - forkchoiceUpdateV1: if the new head was seen before, but not part of the chain + SYNCING = "SYNCING" + + // ACCEPTED is returned by the engine API in the following calls: + // - newPayloadV1: if the payload was accepted, but not processed (side chain) + ACCEPTED = "ACCEPTED" + + INVALIDBLOCKHASH = "INVALID_BLOCK_HASH" + INVALIDTERMINALBLOCK = "INVALID_TERMINAL_BLOCK" + + GenericServerError = rpc.CustomError{Code: -32000, ValidationError: "Server error"} + UnknownPayload = rpc.CustomError{Code: -32001, ValidationError: "Unknown payload"} + InvalidTB = rpc.CustomError{Code: -32002, ValidationError: "Invalid terminal block"} + + STATUS_INVALID = ForkChoiceResponse{PayloadStatus: PayloadStatusV1{Status: INVALID}, PayloadID: nil} + STATUS_SYNCING = ForkChoiceResponse{PayloadStatus: PayloadStatusV1{Status: SYNCING}, PayloadID: nil} +) diff --git a/eth/catalyst/gen_blockparams.go b/core/beacon/gen_blockparams.go similarity index 85% rename from eth/catalyst/gen_blockparams.go rename to core/beacon/gen_blockparams.go index ccf5c327ff..0e2ea4bb13 100644 --- a/eth/catalyst/gen_blockparams.go +++ b/core/beacon/gen_blockparams.go @@ -1,6 +1,6 @@ // Code generated by github.com/fjl/gencodec. DO NOT EDIT. -package catalyst +package beacon import ( "encoding/json" @@ -16,7 +16,7 @@ var _ = (*payloadAttributesMarshaling)(nil) func (p PayloadAttributesV1) MarshalJSON() ([]byte, error) { type PayloadAttributesV1 struct { Timestamp hexutil.Uint64 `json:"timestamp" gencodec:"required"` - Random common.Hash `json:"random" gencodec:"required"` + Random common.Hash `json:"prevRandao" gencodec:"required"` SuggestedFeeRecipient common.Address `json:"suggestedFeeRecipient" gencodec:"required"` } var enc PayloadAttributesV1 @@ -30,7 +30,7 @@ func (p PayloadAttributesV1) MarshalJSON() ([]byte, error) { func (p *PayloadAttributesV1) UnmarshalJSON(input []byte) error { type PayloadAttributesV1 struct { Timestamp *hexutil.Uint64 `json:"timestamp" gencodec:"required"` - Random *common.Hash `json:"random" gencodec:"required"` + Random *common.Hash `json:"prevRandao" gencodec:"required"` SuggestedFeeRecipient *common.Address `json:"suggestedFeeRecipient" gencodec:"required"` } var dec PayloadAttributesV1 @@ -42,7 +42,7 @@ func (p *PayloadAttributesV1) UnmarshalJSON(input []byte) error { } p.Timestamp = uint64(*dec.Timestamp) if dec.Random == nil { - return errors.New("missing required field 'random' for PayloadAttributesV1") + return errors.New("missing required field 'prevRandao' for PayloadAttributesV1") } p.Random = *dec.Random if dec.SuggestedFeeRecipient == nil { diff --git a/eth/catalyst/gen_ed.go b/core/beacon/gen_ed.go similarity index 93% rename from eth/catalyst/gen_ed.go rename to core/beacon/gen_ed.go index 46eb45808b..dcee3bf18c 100644 --- a/eth/catalyst/gen_ed.go +++ b/core/beacon/gen_ed.go @@ -1,6 +1,6 @@ // Code generated by github.com/fjl/gencodec. DO NOT EDIT. -package catalyst +package beacon import ( "encoding/json" @@ -19,9 +19,9 @@ func (e ExecutableDataV1) MarshalJSON() ([]byte, error) { ParentHash common.Hash `json:"parentHash" gencodec:"required"` FeeRecipient common.Address `json:"feeRecipient" gencodec:"required"` StateRoot common.Hash `json:"stateRoot" gencodec:"required"` - ReceiptsRoot common.Hash `json:"receiptsRoot" gencodec:"required"` + ReceiptsRoot common.Hash `json:"receiptsRoot" gencodec:"required"` LogsBloom hexutil.Bytes `json:"logsBloom" gencodec:"required"` - Random common.Hash `json:"random" gencodec:"required"` + Random common.Hash `json:"prevRandao" gencodec:"required"` Number hexutil.Uint64 `json:"blockNumber" gencodec:"required"` GasLimit hexutil.Uint64 `json:"gasLimit" gencodec:"required"` GasUsed hexutil.Uint64 `json:"gasUsed" gencodec:"required"` @@ -60,9 +60,9 @@ func (e *ExecutableDataV1) UnmarshalJSON(input []byte) error { ParentHash *common.Hash `json:"parentHash" gencodec:"required"` FeeRecipient *common.Address `json:"feeRecipient" gencodec:"required"` StateRoot *common.Hash `json:"stateRoot" gencodec:"required"` - ReceiptsRoot *common.Hash `json:"receiptsRoot" gencodec:"required"` + ReceiptsRoot *common.Hash `json:"receiptsRoot" gencodec:"required"` LogsBloom *hexutil.Bytes `json:"logsBloom" gencodec:"required"` - Random *common.Hash `json:"random" gencodec:"required"` + Random *common.Hash `json:"prevRandao" gencodec:"required"` Number *hexutil.Uint64 `json:"blockNumber" gencodec:"required"` GasLimit *hexutil.Uint64 `json:"gasLimit" gencodec:"required"` GasUsed *hexutil.Uint64 `json:"gasUsed" gencodec:"required"` @@ -97,7 +97,7 @@ func (e *ExecutableDataV1) UnmarshalJSON(input []byte) error { } e.LogsBloom = *dec.LogsBloom if dec.Random == nil { - return errors.New("missing required field 'random' for ExecutableDataV1") + return errors.New("missing required field 'prevRandao' for ExecutableDataV1") } e.Random = *dec.Random if dec.Number == nil { diff --git a/core/beacon/types.go b/core/beacon/types.go new file mode 100644 index 0000000000..18d5d2ab78 --- /dev/null +++ b/core/beacon/types.go @@ -0,0 +1,194 @@ +// Copyright 2022 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package beacon + +import ( + "fmt" + "math/big" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/trie" +) + +//go:generate go run github.com/fjl/gencodec -type PayloadAttributesV1 -field-override payloadAttributesMarshaling -out gen_blockparams.go + +// PayloadAttributesV1 structure described at https://github.com/ethereum/execution-apis/pull/74 +type PayloadAttributesV1 struct { + Timestamp uint64 `json:"timestamp" gencodec:"required"` + Random common.Hash `json:"prevRandao" gencodec:"required"` + SuggestedFeeRecipient common.Address `json:"suggestedFeeRecipient" gencodec:"required"` +} + +// JSON type overrides for PayloadAttributesV1. +type payloadAttributesMarshaling struct { + Timestamp hexutil.Uint64 +} + +//go:generate go run github.com/fjl/gencodec -type ExecutableDataV1 -field-override executableDataMarshaling -out gen_ed.go + +// ExecutableDataV1 structure described at https://github.com/ethereum/execution-apis/src/engine/specification.md +type ExecutableDataV1 struct { + ParentHash common.Hash `json:"parentHash" gencodec:"required"` + FeeRecipient common.Address `json:"feeRecipient" gencodec:"required"` + StateRoot common.Hash `json:"stateRoot" gencodec:"required"` + ReceiptsRoot common.Hash `json:"receiptsRoot" gencodec:"required"` + LogsBloom []byte `json:"logsBloom" gencodec:"required"` + Random common.Hash `json:"prevRandao" gencodec:"required"` + Number uint64 `json:"blockNumber" gencodec:"required"` + GasLimit uint64 `json:"gasLimit" gencodec:"required"` + GasUsed uint64 `json:"gasUsed" gencodec:"required"` + Timestamp uint64 `json:"timestamp" gencodec:"required"` + ExtraData []byte `json:"extraData" gencodec:"required"` + BaseFeePerGas *big.Int `json:"baseFeePerGas" gencodec:"required"` + BlockHash common.Hash `json:"blockHash" gencodec:"required"` + Transactions [][]byte `json:"transactions" gencodec:"required"` +} + +// JSON type overrides for executableData. +type executableDataMarshaling struct { + Number hexutil.Uint64 + GasLimit hexutil.Uint64 + GasUsed hexutil.Uint64 + Timestamp hexutil.Uint64 + BaseFeePerGas *hexutil.Big + ExtraData hexutil.Bytes + LogsBloom hexutil.Bytes + Transactions []hexutil.Bytes +} + +type PayloadStatusV1 struct { + Status string `json:"status"` + LatestValidHash *common.Hash `json:"latestValidHash"` + ValidationError *string `json:"validationError"` +} + +type TransitionConfigurationV1 struct { + TerminalTotalDifficulty *hexutil.Big `json:"terminalTotalDifficulty"` + TerminalBlockHash common.Hash `json:"terminalBlockHash"` + TerminalBlockNumber hexutil.Uint64 `json:"terminalBlockNumber"` +} + +// PayloadID is an identifier of the payload build process +type PayloadID [8]byte + +func (b PayloadID) String() string { + return hexutil.Encode(b[:]) +} + +func (b PayloadID) MarshalText() ([]byte, error) { + return hexutil.Bytes(b[:]).MarshalText() +} + +func (b *PayloadID) UnmarshalText(input []byte) error { + err := hexutil.UnmarshalFixedText("PayloadID", input, b[:]) + if err != nil { + return fmt.Errorf("invalid payload id %q: %w", input, err) + } + return nil +} + +type ForkChoiceResponse struct { + PayloadStatus PayloadStatusV1 `json:"payloadStatus"` + PayloadID *PayloadID `json:"payloadId"` +} + +type ForkchoiceStateV1 struct { + HeadBlockHash common.Hash `json:"headBlockHash"` + SafeBlockHash common.Hash `json:"safeBlockHash"` + FinalizedBlockHash common.Hash `json:"finalizedBlockHash"` +} + +func encodeTransactions(txs []*types.Transaction) [][]byte { + var enc = make([][]byte, len(txs)) + for i, tx := range txs { + enc[i], _ = tx.MarshalBinary() + } + return enc +} + +func decodeTransactions(enc [][]byte) ([]*types.Transaction, error) { + var txs = make([]*types.Transaction, len(enc)) + for i, encTx := range enc { + var tx types.Transaction + if err := tx.UnmarshalBinary(encTx); err != nil { + return nil, fmt.Errorf("invalid transaction %d: %v", i, err) + } + txs[i] = &tx + } + return txs, nil +} + +// ExecutableDataToBlock constructs a block from executable data. +// It verifies that the following fields: +// len(extraData) <= 32 +// uncleHash = emptyUncleHash +// difficulty = 0 +// and that the blockhash of the constructed block matches the parameters. +func ExecutableDataToBlock(params ExecutableDataV1) (*types.Block, error) { + txs, err := decodeTransactions(params.Transactions) + if err != nil { + return nil, err + } + if len(params.ExtraData) > 32 { + return nil, fmt.Errorf("invalid extradata length: %v", len(params.ExtraData)) + } + header := &types.Header{ + ParentHash: params.ParentHash, + UncleHash: types.EmptyUncleHash, + Coinbase: params.FeeRecipient, + Root: params.StateRoot, + TxHash: types.DeriveSha(types.Transactions(txs), trie.NewStackTrie(nil)), + ReceiptHash: params.ReceiptsRoot, + Bloom: types.BytesToBloom(params.LogsBloom), + Difficulty: common.Big0, + Number: new(big.Int).SetUint64(params.Number), + GasLimit: params.GasLimit, + GasUsed: params.GasUsed, + Time: params.Timestamp, + BaseFee: params.BaseFeePerGas, + Extra: params.ExtraData, + MixDigest: params.Random, + } + block := types.NewBlockWithHeader(header).WithBody(txs, nil /* uncles */) + if block.Hash() != params.BlockHash { + return nil, fmt.Errorf("blockhash mismatch, want %x, got %x", params.BlockHash, block.Hash()) + } + return block, nil +} + +// BlockToExecutableData constructs the executableDataV1 structure by filling the +// fields from the given block. It assumes the given block is post-merge block. +func BlockToExecutableData(block *types.Block) *ExecutableDataV1 { + return &ExecutableDataV1{ + BlockHash: block.Hash(), + ParentHash: block.ParentHash(), + FeeRecipient: block.Coinbase(), + StateRoot: block.Root(), + Number: block.NumberU64(), + GasLimit: block.GasLimit(), + GasUsed: block.GasUsed(), + BaseFeePerGas: block.BaseFee(), + Timestamp: block.Time(), + ReceiptsRoot: block.ReceiptHash(), + LogsBloom: block.Bloom().Bytes(), + Transactions: encodeTransactions(block.Transactions()), + Random: block.MixDigest(), + ExtraData: block.Extra(), + } +} diff --git a/core/blockchain.go b/core/blockchain.go index 6ee62a5d52..a57a2f7f78 100644 --- a/core/blockchain.go +++ b/core/blockchain.go @@ -552,6 +552,19 @@ func (bc *BlockChain) setHeadBeyondRoot(head uint64, root common.Hash, repair bo } } if beyondRoot || newHeadBlock.NumberU64() == 0 { + if newHeadBlock.NumberU64() == 0 { + // Recommit the genesis state into disk in case the rewinding destination + // is genesis block and the relevant state is gone. In the future this + // rewinding destination can be the earliest block stored in the chain + // if the historical chain pruning is enabled. In that case the logic + // needs to be improved here. + if !bc.HasState(bc.genesisBlock.Root()) { + if err := CommitGenesisState(bc.db, bc.genesisBlock.Hash()); err != nil { + log.Crit("Failed to commit genesis state", "err", err) + } + log.Debug("Recommitted genesis state to disk") + } + } log.Debug("Rewound to block with state", "number", newHeadBlock.NumberU64(), "hash", newHeadBlock.Hash()) break } @@ -564,7 +577,7 @@ func (bc *BlockChain) setHeadBeyondRoot(head uint64, root common.Hash, repair bo // Degrade the chain markers if they are explicitly reverted. // In theory we should update all in-memory markers in the // last step, however the direction of SetHead is from high - // to low, so it's safe the update in-memory markers directly. + // to low, so it's safe to update in-memory markers directly. bc.currentBlock.Store(newHeadBlock) headBlockGauge.Update(int64(newHeadBlock.NumberU64())) } @@ -602,7 +615,7 @@ func (bc *BlockChain) setHeadBeyondRoot(head uint64, root common.Hash, repair bo if num+1 <= frozen { // Truncate all relative data(header, total difficulty, body, receipt // and canonical hash) from ancient store. - if err := bc.db.TruncateAncients(num); err != nil { + if err := bc.db.TruncateHead(num); err != nil { log.Crit("Failed to truncate ancient data", "number", num, "err", err) } // Remove the hash <-> number mapping from the active store. @@ -998,38 +1011,37 @@ func (bc *BlockChain) InsertReceiptChain(blockChain types.Blocks, receiptChain [ // range. In this case, all tx indices of newly imported blocks should be // generated. var batch = bc.db.NewBatch() - for _, block := range blockChain { + for i, block := range blockChain { if bc.txLookupLimit == 0 || ancientLimit <= bc.txLookupLimit || block.NumberU64() >= ancientLimit-bc.txLookupLimit { rawdb.WriteTxLookupEntriesByBlock(batch, block) } else if rawdb.ReadTxIndexTail(bc.db) != nil { rawdb.WriteTxLookupEntriesByBlock(batch, block) } stats.processed++ - } - // Flush all tx-lookup index data. - size += int64(batch.ValueSize()) - if err := batch.Write(); err != nil { - // The tx index data could not be written. - // Roll back the ancient store update. - fastBlock := bc.CurrentFastBlock().NumberU64() - if err := bc.db.TruncateAncients(fastBlock + 1); err != nil { - log.Error("Can't truncate ancient store after failed insert", "err", err) + if batch.ValueSize() > ethdb.IdealBatchSize || i == len(blockChain)-1 { + size += int64(batch.ValueSize()) + if err = batch.Write(); err != nil { + fastBlock := bc.CurrentFastBlock().NumberU64() + if err := bc.db.TruncateHead(fastBlock + 1); err != nil { + log.Error("Can't truncate ancient store after failed insert", "err", err) + } + return 0, err + } + batch.Reset() } - return 0, err } // Sync the ancient store explicitly to ensure all data has been flushed to disk. if err := bc.db.Sync(); err != nil { return 0, err } - // Update the current fast block because all block data is now present in DB. previousFastBlock := bc.CurrentFastBlock().NumberU64() if !updateHead(blockChain[len(blockChain)-1]) { // We end up here if the header chain has reorg'ed, and the blocks/receipts // don't match the canonical chain. - if err := bc.db.TruncateAncients(previousFastBlock + 1); err != nil { + if err := bc.db.TruncateHead(previousFastBlock + 1); err != nil { log.Error("Can't truncate ancient store after failed insert", "err", err) } return 0, errSideChainReceipts @@ -1733,12 +1745,16 @@ func (bc *BlockChain) insertChain(chain types.Blocks, verifySeals, setHead bool) blockWriteTimer.Update(time.Since(substart) - statedb.AccountCommits - statedb.StorageCommits - statedb.SnapshotCommits) blockInsertTimer.UpdateSince(start) - if !setHead { - // We did not setHead, so we don't have any stats to update - log.Info("Inserted block", "number", block.Number(), "hash", block.Hash(), "txs", len(block.Transactions()), "elapsed", common.PrettyDuration(time.Since(start))) - return it.index, nil - } + // Report the import stats before returning the various results + stats.processed++ + stats.usedGas += usedGas + dirty, _ := bc.stateCache.TrieDB().Size() + stats.report(chain, it.index, dirty, setHead) + + if !setHead { + return it.index, nil // Direct block insertion of a single block + } switch status { case CanonStatTy: log.Debug("Inserted new block", "number", block.Number(), "hash", block.Hash(), @@ -1765,11 +1781,6 @@ func (bc *BlockChain) insertChain(chain types.Blocks, verifySeals, setHead bool) "txs", len(block.Transactions()), "gas", block.GasUsed(), "uncles", len(block.Uncles()), "root", block.Root()) } - stats.processed++ - stats.usedGas += usedGas - - dirty, _ := bc.stateCache.TrieDB().Size() - stats.report(chain, it.index, dirty) } // Any blocks remaining here? The only ones we care about are the future ones @@ -2179,28 +2190,39 @@ func (bc *BlockChain) InsertBlockWithoutSetHead(block *types.Block) error { // block. It's possible that after the reorg the relevant state of head // is missing. It can be fixed by inserting a new block which triggers // the re-execution. -func (bc *BlockChain) SetChainHead(newBlock *types.Block) error { +func (bc *BlockChain) SetChainHead(head *types.Block) error { if !bc.chainmu.TryLock() { return errChainStopped } defer bc.chainmu.Unlock() // Run the reorg if necessary and set the given block as new head. - if newBlock.ParentHash() != bc.CurrentBlock().Hash() { - if err := bc.reorg(bc.CurrentBlock(), newBlock); err != nil { + start := time.Now() + if head.ParentHash() != bc.CurrentBlock().Hash() { + if err := bc.reorg(bc.CurrentBlock(), head); err != nil { return err } } - bc.writeHeadBlock(newBlock) + bc.writeHeadBlock(head) // Emit events - logs := bc.collectLogs(newBlock.Hash(), false) - bc.chainFeed.Send(ChainEvent{Block: newBlock, Hash: newBlock.Hash(), Logs: logs}) + logs := bc.collectLogs(head.Hash(), false) + bc.chainFeed.Send(ChainEvent{Block: head, Hash: head.Hash(), Logs: logs}) if len(logs) > 0 { bc.logsFeed.Send(logs) } - bc.chainHeadFeed.Send(ChainHeadEvent{Block: newBlock}) - log.Info("Set the chain head", "number", newBlock.Number(), "hash", newBlock.Hash()) + bc.chainHeadFeed.Send(ChainHeadEvent{Block: head}) + + context := []interface{}{ + "number", head.Number(), + "hash", head.Hash(), + "root", head.Root(), + "elapsed", time.Since(start), + } + if timestamp := time.Unix(int64(head.Time()), 0); time.Since(timestamp) > time.Minute { + context = append(context, []interface{}{"age", common.PrettyAge(timestamp)}...) + } + log.Info("Chain head was updated", context...) return nil } @@ -2386,6 +2408,9 @@ Error: %v // of the header retrieval mechanisms already need to verify nonces, as well as // because nonces can be verified sparsely, not needing to check each. func (bc *BlockChain) InsertHeaderChain(chain []*types.Header, checkFreq int) (int, error) { + if len(chain) == 0 { + return 0, nil + } start := time.Now() if i, err := bc.hc.ValidateHeaderChain(chain, checkFreq); err != nil { return i, err diff --git a/core/blockchain_insert.go b/core/blockchain_insert.go index 4464870279..479eccc83e 100644 --- a/core/blockchain_insert.go +++ b/core/blockchain_insert.go @@ -39,7 +39,7 @@ const statsReportLimit = 8 * time.Second // report prints statistics if some number of blocks have been processed // or more than a few seconds have passed since the last message. -func (st *insertStats) report(chain []*types.Block, index int, dirty common.StorageSize) { +func (st *insertStats) report(chain []*types.Block, index int, dirty common.StorageSize, setHead bool) { // Fetch the timings for the batch var ( now = mclock.Now() @@ -71,8 +71,11 @@ func (st *insertStats) report(chain []*types.Block, index int, dirty common.Stor if st.ignored > 0 { context = append(context, []interface{}{"ignored", st.ignored}...) } - log.Info("Imported new chain segment", context...) - + if setHead { + log.Info("Imported new chain segment", context...) + } else { + log.Info("Imported new potential chain segment", context...) + } // Bump the stats reported to the next section *st = insertStats{startTime: now, lastIndex: index + 1} } diff --git a/core/blockchain_repair_test.go b/core/blockchain_repair_test.go index eb5025ed55..9133671796 100644 --- a/core/blockchain_repair_test.go +++ b/core/blockchain_repair_test.go @@ -1779,6 +1779,7 @@ func testRepair(t *testing.T, tt *rewindTest, snapshots bool) { SnapshotLimit: 0, // Disable snapshot by default } ) + defer engine.Close() if snapshots { config.SnapshotLimit = 256 config.SnapshotWait = true @@ -1836,25 +1837,25 @@ func testRepair(t *testing.T, tt *rewindTest, snapshots bool) { } defer db.Close() - chain, err = NewBlockChain(db, nil, params.AllEthashProtocolChanges, engine, vm.Config{}, nil, nil) + newChain, err := NewBlockChain(db, nil, params.AllEthashProtocolChanges, engine, vm.Config{}, nil, nil) if err != nil { t.Fatalf("Failed to recreate chain: %v", err) } - defer chain.Stop() + defer newChain.Stop() // Iterate over all the remaining blocks and ensure there are no gaps - verifyNoGaps(t, chain, true, canonblocks) - verifyNoGaps(t, chain, false, sideblocks) - verifyCutoff(t, chain, true, canonblocks, tt.expCanonicalBlocks) - verifyCutoff(t, chain, false, sideblocks, tt.expSidechainBlocks) + verifyNoGaps(t, newChain, true, canonblocks) + verifyNoGaps(t, newChain, false, sideblocks) + verifyCutoff(t, newChain, true, canonblocks, tt.expCanonicalBlocks) + verifyCutoff(t, newChain, false, sideblocks, tt.expSidechainBlocks) - if head := chain.CurrentHeader(); head.Number.Uint64() != tt.expHeadHeader { + if head := newChain.CurrentHeader(); head.Number.Uint64() != tt.expHeadHeader { t.Errorf("Head header mismatch: have %d, want %d", head.Number, tt.expHeadHeader) } - if head := chain.CurrentFastBlock(); head.NumberU64() != tt.expHeadFastBlock { + if head := newChain.CurrentFastBlock(); head.NumberU64() != tt.expHeadFastBlock { t.Errorf("Head fast block mismatch: have %d, want %d", head.NumberU64(), tt.expHeadFastBlock) } - if head := chain.CurrentBlock(); head.NumberU64() != tt.expHeadBlock { + if head := newChain.CurrentBlock(); head.NumberU64() != tt.expHeadBlock { t.Errorf("Head block mismatch: have %d, want %d", head.NumberU64(), tt.expHeadBlock) } if frozen, err := db.(freezer).Ancients(); err != nil { diff --git a/core/blockchain_test.go b/core/blockchain_test.go index 6e542fe2f4..37a1a42d0c 100644 --- a/core/blockchain_test.go +++ b/core/blockchain_test.go @@ -2987,10 +2987,10 @@ func TestDeleteRecreateSlots(t *testing.T) { initCode := []byte{ byte(vm.PUSH1), 0x3, // value byte(vm.PUSH1), 0x3, // location - byte(vm.SSTORE), // Set slot[3] = 1 + byte(vm.SSTORE), // Set slot[3] = 3 byte(vm.PUSH1), 0x4, // value byte(vm.PUSH1), 0x4, // location - byte(vm.SSTORE), // Set slot[4] = 1 + byte(vm.SSTORE), // Set slot[4] = 4 // Slots are set, now return the code byte(vm.PUSH2), byte(vm.PC), byte(vm.SELFDESTRUCT), // Push code on stack byte(vm.PUSH1), 0x0, // memory start on stack diff --git a/core/evm.go b/core/evm.go index 4d2c11f4f0..bb3afc0006 100644 --- a/core/evm.go +++ b/core/evm.go @@ -40,6 +40,7 @@ func NewEVMBlockContext(header *types.Header, chain ChainContext, author *common var ( beneficiary common.Address baseFee *big.Int + random *common.Hash ) // If we don't have an explicit author (i.e. not mining), extract from the header @@ -51,6 +52,9 @@ func NewEVMBlockContext(header *types.Header, chain ChainContext, author *common if header.BaseFee != nil { baseFee = new(big.Int).Set(header.BaseFee) } + if header.Difficulty.Cmp(common.Big0) == 0 { + random = &header.MixDigest + } return vm.BlockContext{ CanTransfer: CanTransfer, Transfer: Transfer, @@ -61,6 +65,7 @@ func NewEVMBlockContext(header *types.Header, chain ChainContext, author *common Difficulty: new(big.Int).Set(header.Difficulty), BaseFee: baseFee, GasLimit: header.GasLimit, + Random: random, } } diff --git a/core/genesis.go b/core/genesis.go index 49c3e47298..1314463ea0 100644 --- a/core/genesis.go +++ b/core/genesis.go @@ -84,6 +84,81 @@ func (ga *GenesisAlloc) UnmarshalJSON(data []byte) error { return nil } +// flush adds allocated genesis accounts into a fresh new statedb and +// commit the state changes into the given database handler. +func (ga *GenesisAlloc) flush(db ethdb.Database) (common.Hash, error) { + statedb, err := state.New(common.Hash{}, state.NewDatabase(db), nil) + if err != nil { + return common.Hash{}, err + } + for addr, account := range *ga { + statedb.AddBalance(addr, account.Balance) + statedb.SetCode(addr, account.Code) + statedb.SetNonce(addr, account.Nonce) + for key, value := range account.Storage { + statedb.SetState(addr, key, value) + } + } + root, err := statedb.Commit(false) + if err != nil { + return common.Hash{}, err + } + err = statedb.Database().TrieDB().Commit(root, true, nil) + if err != nil { + return common.Hash{}, err + } + return root, nil +} + +// write writes the json marshaled genesis state into database +// with the given block hash as the unique identifier. +func (ga *GenesisAlloc) write(db ethdb.KeyValueWriter, hash common.Hash) error { + blob, err := json.Marshal(ga) + if err != nil { + return err + } + rawdb.WriteGenesisState(db, hash, blob) + return nil +} + +// CommitGenesisState loads the stored genesis state with the given block +// hash and commits them into the given database handler. +func CommitGenesisState(db ethdb.Database, hash common.Hash) error { + var alloc GenesisAlloc + blob := rawdb.ReadGenesisState(db, hash) + if len(blob) != 0 { + if err := alloc.UnmarshalJSON(blob); err != nil { + return err + } + } else { + // Genesis allocation is missing and there are several possibilities: + // the node is legacy which doesn't persist the genesis allocation or + // the persisted allocation is just lost. + // - supported networks(mainnet, testnets), recover with defined allocations + // - private network, can't recover + var genesis *Genesis + switch hash { + case params.MainnetGenesisHash: + genesis = DefaultGenesisBlock() + case params.RopstenGenesisHash: + genesis = DefaultRopstenGenesisBlock() + case params.RinkebyGenesisHash: + genesis = DefaultRinkebyGenesisBlock() + case params.GoerliGenesisHash: + genesis = DefaultGoerliGenesisBlock() + case params.SepoliaGenesisHash: + genesis = DefaultSepoliaGenesisBlock() + } + if genesis != nil { + alloc = genesis.Alloc + } else { + return errors.New("not found") + } + } + _, err := alloc.flush(db) + return err +} + // GenesisAccount is an account in the state of the genesis block. type GenesisAccount struct { Code []byte `json:"code,omitempty"` @@ -224,11 +299,19 @@ func SetupGenesisBlockWithOverride(db ethdb.Database, genesis *Genesis, override rawdb.WriteChainConfig(db, stored, newcfg) return newcfg, stored, nil } - // Special case: don't change the existing config of a non-mainnet chain if no new - // config is supplied. These chains would get AllProtocolChanges (and a compat error) - // if we just continued here. + // Special case: if a private network is being used (no genesis and also no + // mainnet hash in the database), we must not apply the `configOrDefault` + // chain config as that would be AllProtocolChanges (applying any new fork + // on top of an existing private network genesis block). In that case, only + // apply the overrides. if genesis == nil && stored != params.MainnetGenesisHash { - return storedcfg, stored, nil + newcfg = storedcfg + if overrideArrowGlacier != nil { + newcfg.ArrowGlacierBlock = overrideArrowGlacier + } + if overrideTerminalTotalDifficulty != nil { + newcfg.TerminalTotalDifficulty = overrideTerminalTotalDifficulty + } } // Check config compatibility and write the config. Compatibility errors // are returned to the caller unless we're already at block zero. @@ -263,6 +346,8 @@ func (g *Genesis) configOrDefault(ghash common.Hash) *params.ChainConfig { return params.MumbaiChainConfig case ghash == params.BorMainnetGenesisHash: return params.BorMainnetChainConfig + case ghash == params.KilnGenesisHash: + return DefaultKilnGenesisBlock().Config default: return params.AllEthashProtocolChanges } @@ -274,20 +359,10 @@ func (g *Genesis) ToBlock(db ethdb.Database) *types.Block { if db == nil { db = rawdb.NewMemoryDatabase() } - statedb, err := state.New(common.Hash{}, state.NewDatabase(db), nil) + root, err := g.Alloc.flush(db) if err != nil { panic(err) } - for addr, account := range g.Alloc { - statedb.AddBalance(addr, account.Balance) - statedb.SetCode(addr, account.Code) - statedb.SetNonce(addr, account.Nonce) - for key, value := range account.Storage { - statedb.SetState(addr, key, value) - } - } - - root := statedb.IntermediateRoot(false) head := &types.Header{ Number: new(big.Int).SetUint64(g.Number), Nonce: types.EncodeNonce(g.Nonce), @@ -305,7 +380,7 @@ func (g *Genesis) ToBlock(db ethdb.Database) *types.Block { if g.GasLimit == 0 { head.GasLimit = params.GenesisGasLimit } - if g.Difficulty == nil { + if g.Difficulty == nil && g.Mixhash == (common.Hash{}) { head.Difficulty = params.GenesisDifficulty } if g.Config != nil && g.Config.IsLondon(common.Big0) { @@ -315,9 +390,6 @@ func (g *Genesis) ToBlock(db ethdb.Database) *types.Block { head.BaseFee = new(big.Int).SetUint64(params.InitialBaseFee) } } - statedb.Commit(false) - statedb.Database().TrieDB().Commit(root, true, nil) - return types.NewBlock(head, nil, nil, nil, trie.NewStackTrie(nil)) } @@ -338,6 +410,9 @@ func (g *Genesis) Commit(db ethdb.Database) (*types.Block, error) { if config.Clique != nil && len(block.Extra()) == 0 { return nil, errors.New("can't start clique chain without signers") } + if err := g.Alloc.write(db, block.Hash()); err != nil { + return nil, err + } rawdb.WriteTd(db, block.Hash(), block.NumberU64(), block.Difficulty()) rawdb.WriteBlock(db, block) rawdb.WriteReceipts(db, block.Hash(), block.NumberU64(), nil) @@ -457,6 +532,15 @@ func DefaultSepoliaGenesisBlock() *Genesis { } } +func DefaultKilnGenesisBlock() *Genesis { + g := new(Genesis) + reader := strings.NewReader(KilnAllocData) + if err := json.NewDecoder(reader).Decode(g); err != nil { + panic(err) + } + return g +} + // DeveloperGenesisBlock returns the 'geth --dev' genesis block. func DeveloperGenesisBlock(period uint64, gasLimit uint64, faucet common.Address) *Genesis { // Override the default period to the user requested one diff --git a/core/genesis_alloc.go b/core/genesis_alloc.go index 3d053904e7..041c554242 100644 --- a/core/genesis_alloc.go +++ b/core/genesis_alloc.go @@ -27,3 +27,868 @@ const rinkebyAllocData = "\xf9\x03\xb7\u0080\x01\xc2\x01\x01\xc2\x02\x01\xc2\x03 const goerliAllocData = "\xf9\x04\x06\u0080\x01\xc2\x01\x01\xc2\x02\x01\xc2\x03\x01\xc2\x04\x01\xc2\x05\x01\xc2\x06\x01\xc2\a\x01\xc2\b\x01\xc2\t\x01\xc2\n\x01\xc2\v\x01\xc2\f\x01\xc2\r\x01\xc2\x0e\x01\xc2\x0f\x01\xc2\x10\x01\xc2\x11\x01\xc2\x12\x01\xc2\x13\x01\xc2\x14\x01\xc2\x15\x01\xc2\x16\x01\xc2\x17\x01\xc2\x18\x01\xc2\x19\x01\xc2\x1a\x01\xc2\x1b\x01\xc2\x1c\x01\xc2\x1d\x01\xc2\x1e\x01\xc2\x1f\x01\xc2 \x01\xc2!\x01\xc2\"\x01\xc2#\x01\xc2$\x01\xc2%\x01\xc2&\x01\xc2'\x01\xc2(\x01\xc2)\x01\xc2*\x01\xc2+\x01\xc2,\x01\xc2-\x01\xc2.\x01\xc2/\x01\xc20\x01\xc21\x01\xc22\x01\xc23\x01\xc24\x01\xc25\x01\xc26\x01\xc27\x01\xc28\x01\xc29\x01\xc2:\x01\xc2;\x01\xc2<\x01\xc2=\x01\xc2>\x01\xc2?\x01\xc2@\x01\xc2A\x01\xc2B\x01\xc2C\x01\xc2D\x01\xc2E\x01\xc2F\x01\xc2G\x01\xc2H\x01\xc2I\x01\xc2J\x01\xc2K\x01\xc2L\x01\xc2M\x01\xc2N\x01\xc2O\x01\xc2P\x01\xc2Q\x01\xc2R\x01\xc2S\x01\xc2T\x01\xc2U\x01\xc2V\x01\xc2W\x01\xc2X\x01\xc2Y\x01\xc2Z\x01\xc2[\x01\xc2\\\x01\xc2]\x01\xc2^\x01\xc2_\x01\xc2`\x01\xc2a\x01\xc2b\x01\xc2c\x01\xc2d\x01\xc2e\x01\xc2f\x01\xc2g\x01\xc2h\x01\xc2i\x01\xc2j\x01\xc2k\x01\xc2l\x01\xc2m\x01\xc2n\x01\xc2o\x01\xc2p\x01\xc2q\x01\xc2r\x01\xc2s\x01\xc2t\x01\xc2u\x01\xc2v\x01\xc2w\x01\xc2x\x01\xc2y\x01\xc2z\x01\xc2{\x01\xc2|\x01\xc2}\x01\xc2~\x01\xc2\u007f\x01\u00c1\x80\x01\u00c1\x81\x01\u00c1\x82\x01\u00c1\x83\x01\u00c1\x84\x01\u00c1\x85\x01\u00c1\x86\x01\u00c1\x87\x01\u00c1\x88\x01\u00c1\x89\x01\u00c1\x8a\x01\u00c1\x8b\x01\u00c1\x8c\x01\u00c1\x8d\x01\u00c1\x8e\x01\u00c1\x8f\x01\u00c1\x90\x01\u00c1\x91\x01\u00c1\x92\x01\u00c1\x93\x01\u00c1\x94\x01\u00c1\x95\x01\u00c1\x96\x01\u00c1\x97\x01\u00c1\x98\x01\u00c1\x99\x01\u00c1\x9a\x01\u00c1\x9b\x01\u00c1\x9c\x01\u00c1\x9d\x01\u00c1\x9e\x01\u00c1\x9f\x01\u00c1\xa0\x01\u00c1\xa1\x01\u00c1\xa2\x01\u00c1\xa3\x01\u00c1\xa4\x01\u00c1\xa5\x01\u00c1\xa6\x01\u00c1\xa7\x01\u00c1\xa8\x01\u00c1\xa9\x01\u00c1\xaa\x01\u00c1\xab\x01\u00c1\xac\x01\u00c1\xad\x01\u00c1\xae\x01\u00c1\xaf\x01\u00c1\xb0\x01\u00c1\xb1\x01\u00c1\xb2\x01\u00c1\xb3\x01\u00c1\xb4\x01\u00c1\xb5\x01\u00c1\xb6\x01\u00c1\xb7\x01\u00c1\xb8\x01\u00c1\xb9\x01\u00c1\xba\x01\u00c1\xbb\x01\u00c1\xbc\x01\u00c1\xbd\x01\u00c1\xbe\x01\u00c1\xbf\x01\u00c1\xc0\x01\u00c1\xc1\x01\u00c1\xc2\x01\u00c1\xc3\x01\u00c1\xc4\x01\u00c1\xc5\x01\u00c1\xc6\x01\u00c1\xc7\x01\u00c1\xc8\x01\u00c1\xc9\x01\u00c1\xca\x01\u00c1\xcb\x01\u00c1\xcc\x01\u00c1\xcd\x01\u00c1\xce\x01\u00c1\xcf\x01\u00c1\xd0\x01\u00c1\xd1\x01\u00c1\xd2\x01\u00c1\xd3\x01\u00c1\xd4\x01\u00c1\xd5\x01\u00c1\xd6\x01\u00c1\xd7\x01\u00c1\xd8\x01\u00c1\xd9\x01\u00c1\xda\x01\u00c1\xdb\x01\u00c1\xdc\x01\u00c1\xdd\x01\u00c1\xde\x01\u00c1\xdf\x01\u00c1\xe0\x01\u00c1\xe1\x01\u00c1\xe2\x01\u00c1\xe3\x01\u00c1\xe4\x01\u00c1\xe5\x01\u00c1\xe6\x01\u00c1\xe7\x01\u00c1\xe8\x01\u00c1\xe9\x01\u00c1\xea\x01\u00c1\xeb\x01\u00c1\xec\x01\u00c1\xed\x01\u00c1\xee\x01\u00c1\xef\x01\u00c1\xf0\x01\u00c1\xf1\x01\u00c1\xf2\x01\u00c1\xf3\x01\u00c1\xf4\x01\u00c1\xf5\x01\u00c1\xf6\x01\u00c1\xf7\x01\u00c1\xf8\x01\u00c1\xf9\x01\u00c1\xfa\x01\u00c1\xfb\x01\u00c1\xfc\x01\u00c1\xfd\x01\u00c1\xfe\x01\u00c1\xff\x01\xe0\x94L*\xe4\x82Y5\x05\xf0\x16<\xde\xfc\a>\x81\xc6<\xdaA\a\x8a\x15-\x02\xc7\xe1J\xf6\x80\x00\x00\xe0\x94\xa8\xe8\xf1G2e\x8eKQ\xe8q\x191\x05:\x8ai\xba\xf2\xb1\x8a\x15-\x02\xc7\xe1J\xf6\x80\x00\x00\xe1\x94\u0665\x17\x9f\t\x1d\x85\x05\x1d<\x98'\x85\xef\xd1E\\\uc199\x8b\bE\x95\x16\x14\x01HJ\x00\x00\x00\xe1\x94\u08bdBX\xd2v\x887\xba\xa2j(\xfeq\xdc\a\x9f\x84\u01cbJG\xe3\xc1$H\xf4\xad\x00\x00\x00" const calaverasAllocData = "\xf9\x06\x14\u0080\x01\xc2\x01\x01\xc2\x02\x01\xc2\x03\x01\xc2\x04\x01\xc2\x05\x01\xc2\x06\x01\xc2\a\x01\xc2\b\x01\xc2\t\x01\xc2\n\x01\xc2\v\x01\xc2\f\x01\xc2\r\x01\xc2\x0e\x01\xc2\x0f\x01\xc2\x10\x01\xc2\x11\x01\xc2\x12\x01\xc2\x13\x01\xc2\x14\x01\xc2\x15\x01\xc2\x16\x01\xc2\x17\x01\xc2\x18\x01\xc2\x19\x01\xc2\x1a\x01\xc2\x1b\x01\xc2\x1c\x01\xc2\x1d\x01\xc2\x1e\x01\xc2\x1f\x01\xc2 \x01\xc2!\x01\xc2\"\x01\xc2#\x01\xc2$\x01\xc2%\x01\xc2&\x01\xc2'\x01\xc2(\x01\xc2)\x01\xc2*\x01\xc2+\x01\xc2,\x01\xc2-\x01\xc2.\x01\xc2/\x01\xc20\x01\xc21\x01\xc22\x01\xc23\x01\xc24\x01\xc25\x01\xc26\x01\xc27\x01\xc28\x01\xc29\x01\xc2:\x01\xc2;\x01\xc2<\x01\xc2=\x01\xc2>\x01\xc2?\x01\xc2@\x01\xc2A\x01\xc2B\x01\xc2C\x01\xc2D\x01\xc2E\x01\xc2F\x01\xc2G\x01\xc2H\x01\xc2I\x01\xc2J\x01\xc2K\x01\xc2L\x01\xc2M\x01\xc2N\x01\xc2O\x01\xc2P\x01\xc2Q\x01\xc2R\x01\xc2S\x01\xc2T\x01\xc2U\x01\xc2V\x01\xc2W\x01\xc2X\x01\xc2Y\x01\xc2Z\x01\xc2[\x01\xc2\\\x01\xc2]\x01\xc2^\x01\xc2_\x01\xc2`\x01\xc2a\x01\xc2b\x01\xc2c\x01\xc2d\x01\xc2e\x01\xc2f\x01\xc2g\x01\xc2h\x01\xc2i\x01\xc2j\x01\xc2k\x01\xc2l\x01\xc2m\x01\xc2n\x01\xc2o\x01\xc2p\x01\xc2q\x01\xc2r\x01\xc2s\x01\xc2t\x01\xc2u\x01\xc2v\x01\xc2w\x01\xc2x\x01\xc2y\x01\xc2z\x01\xc2{\x01\xc2|\x01\xc2}\x01\xc2~\x01\xc2\u007f\x01\u00c1\x80\x01\u00c1\x81\x01\u00c1\x82\x01\u00c1\x83\x01\u00c1\x84\x01\u00c1\x85\x01\u00c1\x86\x01\u00c1\x87\x01\u00c1\x88\x01\u00c1\x89\x01\u00c1\x8a\x01\u00c1\x8b\x01\u00c1\x8c\x01\u00c1\x8d\x01\u00c1\x8e\x01\u00c1\x8f\x01\u00c1\x90\x01\u00c1\x91\x01\u00c1\x92\x01\u00c1\x93\x01\u00c1\x94\x01\u00c1\x95\x01\u00c1\x96\x01\u00c1\x97\x01\u00c1\x98\x01\u00c1\x99\x01\u00c1\x9a\x01\u00c1\x9b\x01\u00c1\x9c\x01\u00c1\x9d\x01\u00c1\x9e\x01\u00c1\x9f\x01\u00c1\xa0\x01\u00c1\xa1\x01\u00c1\xa2\x01\u00c1\xa3\x01\u00c1\xa4\x01\u00c1\xa5\x01\u00c1\xa6\x01\u00c1\xa7\x01\u00c1\xa8\x01\u00c1\xa9\x01\u00c1\xaa\x01\u00c1\xab\x01\u00c1\xac\x01\u00c1\xad\x01\u00c1\xae\x01\u00c1\xaf\x01\u00c1\xb0\x01\u00c1\xb1\x01\u00c1\xb2\x01\u00c1\xb3\x01\u00c1\xb4\x01\u00c1\xb5\x01\u00c1\xb6\x01\u00c1\xb7\x01\u00c1\xb8\x01\u00c1\xb9\x01\u00c1\xba\x01\u00c1\xbb\x01\u00c1\xbc\x01\u00c1\xbd\x01\u00c1\xbe\x01\u00c1\xbf\x01\u00c1\xc0\x01\u00c1\xc1\x01\u00c1\xc2\x01\u00c1\xc3\x01\u00c1\xc4\x01\u00c1\xc5\x01\u00c1\xc6\x01\u00c1\xc7\x01\u00c1\xc8\x01\u00c1\xc9\x01\u00c1\xca\x01\u00c1\xcb\x01\u00c1\xcc\x01\u00c1\xcd\x01\u00c1\xce\x01\u00c1\xcf\x01\u00c1\xd0\x01\u00c1\xd1\x01\u00c1\xd2\x01\u00c1\xd3\x01\u00c1\xd4\x01\u00c1\xd5\x01\u00c1\xd6\x01\u00c1\xd7\x01\u00c1\xd8\x01\u00c1\xd9\x01\u00c1\xda\x01\u00c1\xdb\x01\u00c1\xdc\x01\u00c1\xdd\x01\u00c1\xde\x01\u00c1\xdf\x01\u00c1\xe0\x01\u00c1\xe1\x01\u00c1\xe2\x01\u00c1\xe3\x01\u00c1\xe4\x01\u00c1\xe5\x01\u00c1\xe6\x01\u00c1\xe7\x01\u00c1\xe8\x01\u00c1\xe9\x01\u00c1\xea\x01\u00c1\xeb\x01\u00c1\xec\x01\u00c1\xed\x01\u00c1\xee\x01\u00c1\xef\x01\u00c1\xf0\x01\u00c1\xf1\x01\u00c1\xf2\x01\u00c1\xf3\x01\u00c1\xf4\x01\u00c1\xf5\x01\u00c1\xf6\x01\u00c1\xf7\x01\u00c1\xf8\x01\u00c1\xf9\x01\u00c1\xfa\x01\u00c1\xfb\x01\u00c1\xfc\x01\u00c1\xfd\x01\u00c1\xfe\x01\u00c1\xff\x01\xf6\x94\x0e\x89\xe2\xae\xdb\x1c\xfc\u06d4$\xd4\x1a\x1f!\x8fA2s\x81r\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94\x10A\xaf\xbc\xb3Y\u0568\xdcX\xc1[/\xf5\x13T\xff\x8a!}\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94#o\xf1\xe9t\x19\xae\x93\xad\x80\xca\xfb\xaa!\"\f]x\xfb}\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94`\xad\xc0\xf8\x9aA\xaf#|\xe75T\xed\xe1p\xd73\xec\x14\xe0\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94y\x9d2\x9e_X4\x19\x16|\xd7\"\x96$\x85\x92n3\x8fJ\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94|\xf5\xb7\x9b\xfe)\x1ag\xab\x02\xb3\x93\xe4V\xcc\xc4\xc2f\xf7S\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94\x8a\x8e\xaf\xb1\xcfb\xbf\xbe\xb1t\x17i\xda\xe1\xa9\xddG\x99a\x92\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94\x8b\xa1\xf1\tU\x1b\xd42\x800\x12dZ\xc16\xdd\xd6M\xbar\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94\xb0*.\xda\x1b1\u007f\xbd\x16v\x01(\x83k\n\u015bV\x0e\x9d\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94\xba\xdc\r\xe9\xe0yK\x04\x9b^\xa6<>\x1ei\x8a4v\xc1r\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94\xf00\v\ue24a\xe2r\xeb4~\x83i\xac\fv\xdfB\xc9?\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94\xfe;U~\x8f\xb6+\x89\xf4\x91kr\x1b\xe5\\\ub08d\xbds\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" const sepoliaAllocData = "\xf9\x01\xee\u0791i\x16\xa8{\x823?BE\x04f#\xb27\x94\xc6\\\x8b\bE\x95\x16\x14\x01HJ\x00\x00\x00\xe1\x94\x10\xf5\xd4XT\xe08\a\x14\x85\xac\x9e@#\b\u03c0\xd2\xd2\xfe\x8bR\xb7\xd2\xdc\xc8\f\xd2\xe4\x00\x00\x00\u0794y\x9d2\x9e_X4\x19\x16|\xd7\"\x96$\x85\x92n3\x8fJ\x88\r\u0db3\xa7d\x00\x00\xe0\x94|\xf5\xb7\x9b\xfe)\x1ag\xab\x02\xb3\x93\xe4V\xcc\xc4\xc2f\xf7S\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\x8b\u007f\tw\xbbO\x0f\xbepv\xfa\"\xbc$\xac\xa0CX?^\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\xa2\xa6\xd949\x14O\xfeM'\xc9\xe0\x88\xdc\u0637\x83\x94bc\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\xaa\xec\x869DA\xf9\x15\xbc\xe3\xe6\xab9\x99w\xe9\x90o;i\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\u1532\x1c3\xde\x1f\xab?\xa1T\x99\xc6+Y\xfe\f\xc3%\x00 \u044bR\xb7\xd2\xdc\xc8\f\xd2\xe4\x00\x00\x00\xe0\x94\xbc\x11)Y6\xaay\u0554\x13\x9d\xe1\xb2\xe1&)AO;\u06ca\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\xbe\xef2\xca[\x9a\x19\x8d'\xb4\xe0/LpC\x9f\xe6\x03V\u03ca\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe1\x94\xd7\xd7lX\xb3\xa5\x19\xe9\xfal\xc4\xd2-\xc0\x17%\x9b\u011f\x1e\x8bR\xb7\xd2\xdc\xc8\f\xd2\xe4\x00\x00\x00\xe0\x94\xd7\xed\xdbx\xed)[<\x96)$\x0e\x89$\xfb\x8d\x88t\xdd\u060a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\u0665\x17\x9f\t\x1d\x85\x05\x1d<\x98'\x85\xef\xd1E\\\uc199\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\xe2\xe2e\x90(\x147\x84\xd5W\xbc\xeco\xf3\xa0r\x10H\x88\n\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\xf4|\xae\x1c\xf7\x9c\xa6u\x8b\xfcx}\xbd!\u6f7eq\x12\xb8\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00" +const KilnAllocData = `{ + "config": { + "chainId": 1337802, + "homesteadBlock": 0, + "eip150Block": 0, + "eip155Block": 0, + "eip158Block": 0, + "byzantiumBlock": 0, + "constantinopleBlock": 0, + "petersburgBlock": 0, + "istanbulBlock": 0, + "berlinBlock": 0, + "londonBlock": 0, + "mergeForkBlock": 1000, + "terminalTotalDifficulty": 20000000000000 + }, + "alloc": { + "0x0000000000000000000000000000000000000000": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000001": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000002": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000003": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000004": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000005": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000006": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000007": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000008": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000009": { + "balance": "1" + }, + "0x000000000000000000000000000000000000000a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000000b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000000c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000000d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000000e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000000f": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000010": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000011": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000012": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000013": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000014": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000015": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000016": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000017": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000018": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000019": { + "balance": "1" + }, + "0x000000000000000000000000000000000000001a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000001b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000001c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000001d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000001e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000001f": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000020": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000021": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000022": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000023": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000024": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000025": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000026": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000027": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000028": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000029": { + "balance": "1" + }, + "0x000000000000000000000000000000000000002a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000002b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000002c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000002d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000002e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000002f": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000030": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000031": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000032": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000033": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000034": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000035": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000036": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000037": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000038": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000039": { + "balance": "1" + }, + "0x000000000000000000000000000000000000003a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000003b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000003c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000003d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000003e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000003f": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000040": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000041": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000042": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000043": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000044": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000045": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000046": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000047": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000048": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000049": { + "balance": "1" + }, + "0x000000000000000000000000000000000000004a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000004b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000004c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000004d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000004e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000004f": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000050": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000051": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000052": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000053": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000054": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000055": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000056": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000057": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000058": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000059": { + "balance": "1" + }, + "0x000000000000000000000000000000000000005a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000005b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000005c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000005d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000005e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000005f": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000060": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000061": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000062": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000063": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000064": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000065": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000066": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000067": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000068": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000069": { + "balance": "1" + }, + "0x000000000000000000000000000000000000006a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000006b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000006c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000006d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000006e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000006f": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000070": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000071": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000072": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000073": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000074": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000075": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000076": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000077": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000078": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000079": { + "balance": "1" + }, + "0x000000000000000000000000000000000000007a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000007b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000007c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000007d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000007e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000007f": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000080": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000081": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000082": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000083": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000084": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000085": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000086": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000087": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000088": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000089": { + "balance": "1" + }, + "0x000000000000000000000000000000000000008a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000008b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000008c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000008d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000008e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000008f": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000090": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000091": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000092": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000093": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000094": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000095": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000096": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000097": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000098": { + "balance": "1" + }, + "0x0000000000000000000000000000000000000099": { + "balance": "1" + }, + "0x000000000000000000000000000000000000009a": { + "balance": "1" + }, + "0x000000000000000000000000000000000000009b": { + "balance": "1" + }, + "0x000000000000000000000000000000000000009c": { + "balance": "1" + }, + "0x000000000000000000000000000000000000009d": { + "balance": "1" + }, + "0x000000000000000000000000000000000000009e": { + "balance": "1" + }, + "0x000000000000000000000000000000000000009f": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a0": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a1": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a2": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a3": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a4": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a5": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a6": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a7": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a8": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000a9": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000aa": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ab": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ac": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ad": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ae": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000af": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b0": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b1": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b2": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b3": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b4": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b5": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b6": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b7": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b8": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000b9": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ba": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000bb": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000bc": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000bd": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000be": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000bf": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c0": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c1": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c2": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c3": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c4": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c5": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c6": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c7": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c8": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000c9": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ca": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000cb": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000cc": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000cd": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ce": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000cf": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d0": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d1": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d2": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d3": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d4": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d5": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d6": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d7": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d8": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000d9": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000da": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000db": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000dc": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000dd": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000de": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000df": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e0": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e1": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e2": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e3": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e4": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e5": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e6": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e7": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e8": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000e9": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ea": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000eb": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ec": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ed": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ee": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ef": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f0": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f1": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f2": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f3": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f4": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f5": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f6": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f7": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f8": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000f9": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000fa": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000fb": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000fc": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000fd": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000fe": { + "balance": "1" + }, + "0x00000000000000000000000000000000000000ff": { + "balance": "1" + }, + "0x4242424242424242424242424242424242424242": { + "balance": "0", + "code": "0x60806040526004361061003f5760003560e01c806301ffc9a71461004457806322895118146100a4578063621fd130146101ba578063c5f2892f14610244575b600080fd5b34801561005057600080fd5b506100906004803603602081101561006757600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661026b565b604080519115158252519081900360200190f35b6101b8600480360360808110156100ba57600080fd5b8101906020810181356401000000008111156100d557600080fd5b8201836020820111156100e757600080fd5b8035906020019184600183028401116401000000008311171561010957600080fd5b91939092909160208101903564010000000081111561012757600080fd5b82018360208201111561013957600080fd5b8035906020019184600183028401116401000000008311171561015b57600080fd5b91939092909160208101903564010000000081111561017957600080fd5b82018360208201111561018b57600080fd5b803590602001918460018302840111640100000000831117156101ad57600080fd5b919350915035610304565b005b3480156101c657600080fd5b506101cf6110b5565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102095781810151838201526020016101f1565b50505050905090810190601f1680156102365780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025057600080fd5b506102596110c7565b60408051918252519081900360200190f35b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806102fe57507fffffffff0000000000000000000000000000000000000000000000000000000082167f8564090700000000000000000000000000000000000000000000000000000000145b92915050565b6030861461035d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118056026913960400191505060405180910390fd5b602084146103b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603681526020018061179c6036913960400191505060405180910390fd5b6060821461040f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806118786029913960400191505060405180910390fd5b670de0b6b3a7640000341015610470576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118526026913960400191505060405180910390fd5b633b9aca003406156104cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806117d26033913960400191505060405180910390fd5b633b9aca00340467ffffffffffffffff811115610535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061182b6027913960400191505060405180910390fd5b6060610540826114ba565b90507f649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c589898989858a8a6105756020546114ba565b6040805160a0808252810189905290819060208201908201606083016080840160c085018e8e80828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910187810386528c815260200190508c8c808284376000838201819052601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690920188810386528c5181528c51602091820193918e019250908190849084905b83811015610648578181015183820152602001610630565b50505050905090810190601f1680156106755780820380516001836020036101000a031916815260200191505b5086810383528881526020018989808284376000838201819052601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018881038452895181528951602091820193918b019250908190849084905b838110156106ef5781810151838201526020016106d7565b50505050905090810190601f16801561071c5780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390a1600060028a8a600060801b604051602001808484808284377fffffffffffffffffffffffffffffffff0000000000000000000000000000000090941691909301908152604080517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0818403018152601090920190819052815191955093508392506020850191508083835b602083106107fc57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016107bf565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610859573d6000803e3d6000fd5b5050506040513d602081101561086e57600080fd5b5051905060006002806108846040848a8c6116fe565b6040516020018083838082843780830192505050925050506040516020818303038152906040526040518082805190602001908083835b602083106108f857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016108bb565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610955573d6000803e3d6000fd5b5050506040513d602081101561096a57600080fd5b5051600261097b896040818d6116fe565b60405160009060200180848480828437919091019283525050604080518083038152602092830191829052805190945090925082918401908083835b602083106109f457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016109b7565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610a51573d6000803e3d6000fd5b5050506040513d6020811015610a6657600080fd5b5051604080516020818101949094528082019290925280518083038201815260609092019081905281519192909182918401908083835b60208310610ada57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610a9d565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610b37573d6000803e3d6000fd5b5050506040513d6020811015610b4c57600080fd5b50516040805160208101858152929350600092600292839287928f928f92018383808284378083019250505093505050506040516020818303038152906040526040518082805190602001908083835b60208310610bd957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b9c565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610c36573d6000803e3d6000fd5b5050506040513d6020811015610c4b57600080fd5b50516040518651600291889160009188916020918201918291908601908083835b60208310610ca957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610c6c565b6001836020036101000a0380198251168184511680821785525050505050509050018367ffffffffffffffff191667ffffffffffffffff1916815260180182815260200193505050506040516020818303038152906040526040518082805190602001908083835b60208310610d4e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610d11565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610dab573d6000803e3d6000fd5b5050506040513d6020811015610dc057600080fd5b5051604080516020818101949094528082019290925280518083038201815260609092019081905281519192909182918401908083835b60208310610e3457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610df7565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610e91573d6000803e3d6000fd5b5050506040513d6020811015610ea657600080fd5b50519050858114610f02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260548152602001806117486054913960600191505060405180910390fd5b60205463ffffffff11610f60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806117276021913960400191505060405180910390fd5b602080546001019081905560005b60208110156110a9578160011660011415610fa0578260008260208110610f9157fe5b0155506110ac95505050505050565b600260008260208110610faf57fe5b01548460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061102557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610fe8565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015611082573d6000803e3d6000fd5b5050506040513d602081101561109757600080fd5b50519250600282049150600101610f6e565b50fe5b50505050505050565b60606110c26020546114ba565b905090565b6020546000908190815b60208110156112f05781600116600114156111e6576002600082602081106110f557fe5b01548460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061116b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161112e565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa1580156111c8573d6000803e3d6000fd5b5050506040513d60208110156111dd57600080fd5b505192506112e2565b600283602183602081106111f657fe5b015460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061126b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161122e565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa1580156112c8573d6000803e3d6000fd5b5050506040513d60208110156112dd57600080fd5b505192505b6002820491506001016110d1565b506002826112ff6020546114ba565b600060401b6040516020018084815260200183805190602001908083835b6020831061135a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161131d565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790527fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000095909516920191825250604080518083037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8018152601890920190819052815191955093508392850191508083835b6020831061143f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611402565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa15801561149c573d6000803e3d6000fd5b5050506040513d60208110156114b157600080fd5b50519250505090565b60408051600880825281830190925260609160208201818036833701905050905060c082901b8060071a60f81b826000815181106114f457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060061a60f81b8260018151811061153757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060051a60f81b8260028151811061157a57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060041a60f81b826003815181106115bd57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060031a60f81b8260048151811061160057fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060021a60f81b8260058151811061164357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060011a60f81b8260068151811061168657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060001a60f81b826007815181106116c957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535050919050565b6000808585111561170d578182fd5b83861115611719578182fd5b505082019391909203915056fe4465706f736974436f6e74726163743a206d65726b6c6520747265652066756c6c4465706f736974436f6e74726163743a207265636f6e7374727563746564204465706f7369744461746120646f6573206e6f74206d6174636820737570706c696564206465706f7369745f646174615f726f6f744465706f736974436f6e74726163743a20696e76616c6964207769746864726177616c5f63726564656e7469616c73206c656e6774684465706f736974436f6e74726163743a206465706f7369742076616c7565206e6f74206d756c7469706c65206f6620677765694465706f736974436f6e74726163743a20696e76616c6964207075626b6579206c656e6774684465706f736974436f6e74726163743a206465706f7369742076616c756520746f6f20686967684465706f736974436f6e74726163743a206465706f7369742076616c756520746f6f206c6f774465706f736974436f6e74726163743a20696e76616c6964207369676e6174757265206c656e677468a26469706673582212201dd26f37a621703009abf16e77e69c93dc50c79db7f6cc37543e3e0e3decdc9764736f6c634300060b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000022": "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0x0000000000000000000000000000000000000000000000000000000000000023": "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x0000000000000000000000000000000000000000000000000000000000000024": "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x0000000000000000000000000000000000000000000000000000000000000025": "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x0000000000000000000000000000000000000000000000000000000000000026": "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0x0000000000000000000000000000000000000000000000000000000000000027": "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x0000000000000000000000000000000000000000000000000000000000000028": "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x0000000000000000000000000000000000000000000000000000000000000029": "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x000000000000000000000000000000000000000000000000000000000000002a": "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0x000000000000000000000000000000000000000000000000000000000000002b": "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x000000000000000000000000000000000000000000000000000000000000002c": "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0x000000000000000000000000000000000000000000000000000000000000002d": "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0x000000000000000000000000000000000000000000000000000000000000002e": "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0x000000000000000000000000000000000000000000000000000000000000002f": "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0x0000000000000000000000000000000000000000000000000000000000000030": "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x0000000000000000000000000000000000000000000000000000000000000031": "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x0000000000000000000000000000000000000000000000000000000000000032": "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0x0000000000000000000000000000000000000000000000000000000000000034": "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0x0000000000000000000000000000000000000000000000000000000000000035": "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x0000000000000000000000000000000000000000000000000000000000000036": "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0x0000000000000000000000000000000000000000000000000000000000000037": "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0x0000000000000000000000000000000000000000000000000000000000000038": "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x0000000000000000000000000000000000000000000000000000000000000039": "0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0", + "0x000000000000000000000000000000000000000000000000000000000000003a": "0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544", + "0x000000000000000000000000000000000000000000000000000000000000003b": "0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765", + "0x000000000000000000000000000000000000000000000000000000000000003c": "0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4", + "0x000000000000000000000000000000000000000000000000000000000000003d": "0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1", + "0x000000000000000000000000000000000000000000000000000000000000003e": "0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636", + "0x000000000000000000000000000000000000000000000000000000000000003f": "0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c", + "0x0000000000000000000000000000000000000000000000000000000000000040": "0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7" + } + }, + "0xf97e180c050e5Ab072211Ad2C213Eb5AEE4DF134": { + "balance": "10000000000000000000000000" + }, + "0x2cA5F489CC1Fd1CEC24747B64E8dE0F4A6A850E1": { + "balance": "10000000000000000000000000" + }, + "0x7203bd333a874D9d329050ecE393820fCD501eaA": { + "balance": "10000000000000000000000000" + }, + "0xA51918aA40D78Ff8be939bf0E8404252875c6aDF": { + "balance": "10000000000000000000000000" + }, + "0xAA81078e6b2121dd7A846690DFdD6b10d7658d8B": { + "balance": "10000000000000000000000000" + }, + "0xFA2d31D8f21c1D1633E9BEB641dF77D21D63ccDd": { + "balance": "10000000000000000000000000" + }, + "0xf751C9c6d60614226fE57D2cAD6e10C856a2ddA3": { + "balance": "10000000000000000000000000" + }, + "0x9cD16887f6A808AEaa65D3c840f059EeA4ca1319": { + "balance": "10000000000000000000000000" + }, + "0x2E07043584F11BFF0AC39c927665DF6c6ebaffFB": { + "balance": "10000000000000000000000000" + }, + "0x60e771E5eCA8E26690920de669520Da210D64A9B": { + "balance": "10000000000000000000000000" + }, + "0xFC4db92C2Cf77CE02fBfd7Da0346d2CbFA66aD59": { + "balance": "10000000000000000000000000" + } + }, + "coinbase": "0x0000000000000000000000000000000000000000", + "difficulty": "0x01", + "extraData": "", + "gasLimit": "0x400000", + "nonce": "0x1234", + "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "timestamp": "0" + }` diff --git a/core/genesis_test.go b/core/genesis_test.go index f3d6b23e5f..cf49de7ff1 100644 --- a/core/genesis_test.go +++ b/core/genesis_test.go @@ -213,3 +213,63 @@ func TestGenesis_Commit(t *testing.T) { t.Errorf("inequal difficulty; stored: %v, genesisBlock: %v", stored, genesisBlock.Difficulty()) } } + +func TestReadWriteGenesisAlloc(t *testing.T) { + var ( + db = rawdb.NewMemoryDatabase() + alloc = &GenesisAlloc{ + {1}: {Balance: big.NewInt(1), Storage: map[common.Hash]common.Hash{{1}: {1}}}, + {2}: {Balance: big.NewInt(2), Storage: map[common.Hash]common.Hash{{2}: {2}}}, + } + hash = common.HexToHash("0xdeadbeef") + ) + alloc.write(db, hash) + + var reload GenesisAlloc + err := reload.UnmarshalJSON(rawdb.ReadGenesisState(db, hash)) + if err != nil { + t.Fatalf("Failed to load genesis state %v", err) + } + if len(reload) != len(*alloc) { + t.Fatal("Unexpected genesis allocation") + } + for addr, account := range reload { + want, ok := (*alloc)[addr] + if !ok { + t.Fatal("Account is not found") + } + if !reflect.DeepEqual(want, account) { + t.Fatal("Unexpected account") + } + } +} + +func TestGenesis_Commit(t *testing.T) { + genesis := &Genesis{ + BaseFee: big.NewInt(params.InitialBaseFee), + Config: params.TestChainConfig, + // difficulty is nil + } + + db := rawdb.NewMemoryDatabase() + genesisBlock, err := genesis.Commit(db) + if err != nil { + t.Fatal(err) + } + + if genesis.Difficulty != nil { + t.Fatalf("assumption wrong") + } + + // This value should have been set as default in the ToBlock method. + if genesisBlock.Difficulty().Cmp(params.GenesisDifficulty) != 0 { + t.Errorf("assumption wrong: want: %d, got: %v", params.GenesisDifficulty, genesisBlock.Difficulty()) + } + + // Expect the stored total difficulty to be the difficulty of the genesis block. + stored := rawdb.ReadTd(db, genesisBlock.Hash(), genesisBlock.NumberU64()) + + if stored.Cmp(genesisBlock.Difficulty()) != 0 { + t.Errorf("inequal difficulty; stored: %v, genesisBlock: %v", stored, genesisBlock.Difficulty()) + } +} diff --git a/core/rawdb/accessors_chain.go b/core/rawdb/accessors_chain.go index 2c285c60e7..9dcdd43430 100644 --- a/core/rawdb/accessors_chain.go +++ b/core/rawdb/accessors_chain.go @@ -83,8 +83,8 @@ type NumberHash struct { Hash common.Hash } -// ReadAllHashes retrieves all the hashes assigned to blocks at a certain heights, -// both canonical and reorged forks included. +// ReadAllHashesInRange retrieves all the hashes assigned to blocks at certain +// heights, both canonical and reorged forks included. // This method considers both limits to be _inclusive_. func ReadAllHashesInRange(db ethdb.Iteratee, first, last uint64) []*NumberHash { var ( diff --git a/core/rawdb/accessors_metadata.go b/core/rawdb/accessors_metadata.go index 3b0fcf0f2d..f5a161adb6 100644 --- a/core/rawdb/accessors_metadata.go +++ b/core/rawdb/accessors_metadata.go @@ -81,6 +81,19 @@ func WriteChainConfig(db ethdb.KeyValueWriter, hash common.Hash, cfg *params.Cha } } +// ReadGenesisState retrieves the genesis state based on the given genesis hash. +func ReadGenesisState(db ethdb.KeyValueReader, hash common.Hash) []byte { + data, _ := db.Get(genesisKey(hash)) + return data +} + +// WriteGenesisState writes the genesis state into the disk. +func WriteGenesisState(db ethdb.KeyValueWriter, hash common.Hash, data []byte) { + if err := db.Put(genesisKey(hash), data); err != nil { + log.Crit("Failed to store genesis state", "err", err) + } +} + // crashList is a list of unclean-shutdown-markers, for rlp-encoding to the // database type crashList struct { diff --git a/core/rawdb/accessors_snapshot.go b/core/rawdb/accessors_snapshot.go index 1c828662c1..3c82b3f731 100644 --- a/core/rawdb/accessors_snapshot.go +++ b/core/rawdb/accessors_snapshot.go @@ -115,7 +115,7 @@ func DeleteStorageSnapshot(db ethdb.KeyValueWriter, accountHash, storageHash com // IterateStorageSnapshots returns an iterator for walking the entire storage // space of a specific account. func IterateStorageSnapshots(db ethdb.Iteratee, accountHash common.Hash) ethdb.Iterator { - return db.NewIterator(storageSnapshotsKey(accountHash), nil) + return NewKeyLengthIterator(db.NewIterator(storageSnapshotsKey(accountHash), nil), len(SnapshotStoragePrefix)+2*common.HashLength) } // ReadSnapshotJournal retrieves the serialized in-memory diff layers saved at diff --git a/core/rawdb/accessors_state.go b/core/rawdb/accessors_state.go index 6112de03ad..41e21b6ca4 100644 --- a/core/rawdb/accessors_state.go +++ b/core/rawdb/accessors_state.go @@ -28,6 +28,58 @@ func ReadPreimage(db ethdb.KeyValueReader, hash common.Hash) []byte { return data } +// ReadCode retrieves the contract code of the provided code hash. +func ReadCode(db ethdb.KeyValueReader, hash common.Hash) []byte { + // Try with the prefixed code scheme first, if not then try with legacy + // scheme. + data := ReadCodeWithPrefix(db, hash) + if len(data) != 0 { + return data + } + data, _ = db.Get(hash.Bytes()) + return data +} + +// ReadCodeWithPrefix retrieves the contract code of the provided code hash. +// The main difference between this function and ReadCode is this function +// will only check the existence with latest scheme(with prefix). +func ReadCodeWithPrefix(db ethdb.KeyValueReader, hash common.Hash) []byte { + data, _ := db.Get(codeKey(hash)) + return data +} + +// ReadTrieNode retrieves the trie node of the provided hash. +func ReadTrieNode(db ethdb.KeyValueReader, hash common.Hash) []byte { + data, _ := db.Get(hash.Bytes()) + return data +} + +// HasCode checks if the contract code corresponding to the +// provided code hash is present in the db. +func HasCode(db ethdb.KeyValueReader, hash common.Hash) bool { + // Try with the prefixed code scheme first, if not then try with legacy + // scheme. + if ok := HasCodeWithPrefix(db, hash); ok { + return true + } + ok, _ := db.Has(hash.Bytes()) + return ok +} + +// HasCodeWithPrefix checks if the contract code corresponding to the +// provided code hash is present in the db. This function will only check +// presence using the prefix-scheme. +func HasCodeWithPrefix(db ethdb.KeyValueReader, hash common.Hash) bool { + ok, _ := db.Has(codeKey(hash)) + return ok +} + +// HasTrieNode checks if the trie node with the provided hash is present in db. +func HasTrieNode(db ethdb.KeyValueReader, hash common.Hash) bool { + ok, _ := db.Has(hash.Bytes()) + return ok +} + // WritePreimages writes the provided set of preimages to the database. func WritePreimages(db ethdb.KeyValueWriter, preimages map[common.Hash][]byte) { for hash, preimage := range preimages { @@ -39,28 +91,6 @@ func WritePreimages(db ethdb.KeyValueWriter, preimages map[common.Hash][]byte) { preimageHitCounter.Inc(int64(len(preimages))) } -// ReadCode retrieves the contract code of the provided code hash. -func ReadCode(db ethdb.KeyValueReader, hash common.Hash) []byte { - // Try with the legacy code scheme first, if not then try with current - // scheme. Since most of the code will be found with legacy scheme. - // - // todo(rjl493456442) change the order when we forcibly upgrade the code - // scheme with snapshot. - data, _ := db.Get(hash[:]) - if len(data) != 0 { - return data - } - return ReadCodeWithPrefix(db, hash) -} - -// ReadCodeWithPrefix retrieves the contract code of the provided code hash. -// The main difference between this function and ReadCode is this function -// will only check the existence with latest scheme(with prefix). -func ReadCodeWithPrefix(db ethdb.KeyValueReader, hash common.Hash) []byte { - data, _ := db.Get(codeKey(hash)) - return data -} - // WriteCode writes the provided contract code database. func WriteCode(db ethdb.KeyValueWriter, hash common.Hash, code []byte) { if err := db.Put(codeKey(hash), code); err != nil { @@ -68,6 +98,13 @@ func WriteCode(db ethdb.KeyValueWriter, hash common.Hash, code []byte) { } } +// WriteTrieNode writes the provided trie node database. +func WriteTrieNode(db ethdb.KeyValueWriter, hash common.Hash, node []byte) { + if err := db.Put(hash.Bytes(), node); err != nil { + log.Crit("Failed to store trie node", "err", err) + } +} + // DeleteCode deletes the specified contract code from the database. func DeleteCode(db ethdb.KeyValueWriter, hash common.Hash) { if err := db.Delete(codeKey(hash)); err != nil { @@ -75,19 +112,6 @@ func DeleteCode(db ethdb.KeyValueWriter, hash common.Hash) { } } -// ReadTrieNode retrieves the trie node of the provided hash. -func ReadTrieNode(db ethdb.KeyValueReader, hash common.Hash) []byte { - data, _ := db.Get(hash.Bytes()) - return data -} - -// WriteTrieNode writes the provided trie node database. -func WriteTrieNode(db ethdb.KeyValueWriter, hash common.Hash, node []byte) { - if err := db.Put(hash.Bytes(), node); err != nil { - log.Crit("Failed to store trie node", "err", err) - } -} - // DeleteTrieNode deletes the specified trie node from the database. func DeleteTrieNode(db ethdb.KeyValueWriter, hash common.Hash) { if err := db.Delete(hash.Bytes()); err != nil { diff --git a/core/rawdb/accessors_sync.go b/core/rawdb/accessors_sync.go new file mode 100644 index 0000000000..50dfb848e4 --- /dev/null +++ b/core/rawdb/accessors_sync.go @@ -0,0 +1,80 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package rawdb + +import ( + "bytes" + + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/ethdb" + "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/rlp" +) + +// ReadSkeletonSyncStatus retrieves the serialized sync status saved at shutdown. +func ReadSkeletonSyncStatus(db ethdb.KeyValueReader) []byte { + data, _ := db.Get(skeletonSyncStatusKey) + return data +} + +// WriteSkeletonSyncStatus stores the serialized sync status to save at shutdown. +func WriteSkeletonSyncStatus(db ethdb.KeyValueWriter, status []byte) { + if err := db.Put(skeletonSyncStatusKey, status); err != nil { + log.Crit("Failed to store skeleton sync status", "err", err) + } +} + +// DeleteSkeletonSyncStatus deletes the serialized sync status saved at the last +// shutdown +func DeleteSkeletonSyncStatus(db ethdb.KeyValueWriter) { + if err := db.Delete(skeletonSyncStatusKey); err != nil { + log.Crit("Failed to remove skeleton sync status", "err", err) + } +} + +// ReadSkeletonHeader retrieves a block header from the skeleton sync store, +func ReadSkeletonHeader(db ethdb.KeyValueReader, number uint64) *types.Header { + data, _ := db.Get(skeletonHeaderKey(number)) + if len(data) == 0 { + return nil + } + header := new(types.Header) + if err := rlp.Decode(bytes.NewReader(data), header); err != nil { + log.Error("Invalid skeleton header RLP", "number", number, "err", err) + return nil + } + return header +} + +// WriteSkeletonHeader stores a block header into the skeleton sync store. +func WriteSkeletonHeader(db ethdb.KeyValueWriter, header *types.Header) { + data, err := rlp.EncodeToBytes(header) + if err != nil { + log.Crit("Failed to RLP encode header", "err", err) + } + key := skeletonHeaderKey(header.Number.Uint64()) + if err := db.Put(key, data); err != nil { + log.Crit("Failed to store skeleton header", "err", err) + } +} + +// DeleteSkeletonHeader removes all block header data associated with a hash. +func DeleteSkeletonHeader(db ethdb.KeyValueWriter, number uint64) { + if err := db.Delete(skeletonHeaderKey(number)); err != nil { + log.Crit("Failed to delete skeleton header", "err", err) + } +} diff --git a/core/rawdb/database.go b/core/rawdb/database.go index 5ef64d26a2..5d645b61db 100644 --- a/core/rawdb/database.go +++ b/core/rawdb/database.go @@ -99,6 +99,11 @@ func (db *nofreezedb) Ancients() (uint64, error) { return 0, errNotSupported } +// Tail returns an error as we don't have a backing chain freezer. +func (db *nofreezedb) Tail() (uint64, error) { + return 0, errNotSupported +} + // AncientSize returns an error as we don't have a backing chain freezer. func (db *nofreezedb) AncientSize(kind string) (uint64, error) { return 0, errNotSupported @@ -109,8 +114,13 @@ func (db *nofreezedb) ModifyAncients(func(ethdb.AncientWriteOp) error) (int64, e return 0, errNotSupported } -// TruncateAncients returns an error as we don't have a backing chain freezer. -func (db *nofreezedb) TruncateAncients(items uint64) error { +// TruncateHead returns an error as we don't have a backing chain freezer. +func (db *nofreezedb) TruncateHead(items uint64) error { + return errNotSupported +} + +// TruncateTail returns an error as we don't have a backing chain freezer. +func (db *nofreezedb) TruncateTail(items uint64) error { return errNotSupported } @@ -135,6 +145,12 @@ func (db *nofreezedb) ReadAncients(fn func(reader ethdb.AncientReader) error) (e return fn(db) } +// MigrateTable processes the entries in a given table in sequence +// converting them to a new format if they're of an old format. +func (db *nofreezedb) MigrateTable(kind string, convert convertLegacyFn) error { + return errNotSupported +} + // NewDatabase creates a high level database on top of a given key-value data // store without a freezer moving immutable chain segments into cold storage. func NewDatabase(db ethdb.KeyValueStore) ethdb.Database { @@ -211,7 +227,7 @@ func NewDatabaseWithFreezer(db ethdb.KeyValueStore, freezer string, namespace st // Block #1 is still in the database, we're allowed to init a new feezer } // Otherwise, the head header is still the genesis, we're allowed to init a new - // feezer. + // freezer. } } // Freezer is consistent with the key-value database, permit combining the two @@ -321,6 +337,7 @@ func InspectDatabase(db ethdb.Database, keyPrefix, keyStart []byte) error { storageSnaps stat preimages stat bloomBits stat + beaconHeaders stat cliqueSnaps stat // Ancient store statistics @@ -375,10 +392,14 @@ func InspectDatabase(db ethdb.Database, keyPrefix, keyStart []byte) error { preimages.Add(size) case bytes.HasPrefix(key, configPrefix) && len(key) == (len(configPrefix)+common.HashLength): metadata.Add(size) + case bytes.HasPrefix(key, genesisPrefix) && len(key) == (len(genesisPrefix)+common.HashLength): + metadata.Add(size) case bytes.HasPrefix(key, bloomBitsPrefix) && len(key) == (len(bloomBitsPrefix)+10+common.HashLength): bloomBits.Add(size) case bytes.HasPrefix(key, BloomBitsIndexPrefix): bloomBits.Add(size) + case bytes.HasPrefix(key, skeletonHeaderPrefix) && len(key) == (len(skeletonHeaderPrefix)+8): + beaconHeaders.Add(size) case bytes.HasPrefix(key, []byte("clique-")) && len(key) == 7+common.HashLength: cliqueSnaps.Add(size) case bytes.HasPrefix(key, []byte("cht-")) || @@ -395,7 +416,7 @@ func InspectDatabase(db ethdb.Database, keyPrefix, keyStart []byte) error { databaseVersionKey, headHeaderKey, headBlockKey, headFastBlockKey, lastPivotKey, fastTrieProgressKey, snapshotDisabledKey, SnapshotRootKey, snapshotJournalKey, snapshotGeneratorKey, snapshotRecoveryKey, txIndexTailKey, fastTxLookupLimitKey, - uncleanShutdownKey, badBlockKey, transitionStatusKey, + uncleanShutdownKey, badBlockKey, transitionStatusKey, skeletonSyncStatusKey, } { if bytes.Equal(key, meta) { metadata.Add(size) @@ -441,6 +462,7 @@ func InspectDatabase(db ethdb.Database, keyPrefix, keyStart []byte) error { {"Key-Value store", "Trie preimages", preimages.Size(), preimages.Count()}, {"Key-Value store", "Account snapshot", accountSnaps.Size(), accountSnaps.Count()}, {"Key-Value store", "Storage snapshot", storageSnaps.Size(), storageSnaps.Count()}, + {"Key-Value store", "Beacon sync headers", beaconHeaders.Size(), beaconHeaders.Count()}, {"Key-Value store", "Clique snapshots", cliqueSnaps.Size(), cliqueSnaps.Count()}, {"Key-Value store", "Singleton metadata", metadata.Size(), metadata.Count()}, {"Ancient store", "Headers", ancientHeadersSize.String(), ancients.String()}, diff --git a/core/rawdb/freezer.go b/core/rawdb/freezer.go index 9eb3bfeea5..b0cfeb679f 100644 --- a/core/rawdb/freezer.go +++ b/core/rawdb/freezer.go @@ -19,6 +19,7 @@ package rawdb import ( "errors" "fmt" + "io/ioutil" "math" "os" "path/filepath" @@ -66,7 +67,7 @@ const ( freezerTableSize = 2 * 1000 * 1000 * 1000 ) -// freezer is an memory mapped append-only database to store immutable chain data +// freezer is a memory mapped append-only database to store immutable chain data // into flat files: // // - The append only nature ensures that disk writes are minimized. @@ -78,6 +79,7 @@ type freezer struct { // 64-bit aligned fields can be atomic. The struct is guaranteed to be so aligned, // so take advantage of that (https://golang.org/pkg/sync/atomic/#pkg-note-BUG). frozen uint64 // Number of blocks already frozen + tail uint64 // Number of the first stored item in the freezer threshold uint64 // Number of recent blocks not to freeze (params.FullImmutabilityThreshold apart from tests) // This lock synchronizes writers and the truncate operation, as well as @@ -133,7 +135,7 @@ func newFreezer(datadir string, namespace string, readonly bool, maxTableSize ui // Create the tables. for name, disableSnappy := range tables { - table, err := newTable(datadir, name, readMeter, writeMeter, sizeGauge, maxTableSize, disableSnappy) + table, err := newTable(datadir, name, readMeter, writeMeter, sizeGauge, maxTableSize, disableSnappy, readonly) if err != nil { for _, table := range freezer.tables { table.Close() @@ -157,9 +159,15 @@ func newFreezer(datadir string, namespace string, readonly bool, maxTableSize ui return nil, err } } - - // Truncate all tables to common length. - if err := freezer.repair(); err != nil { + if freezer.readonly { + // In readonly mode only validate, don't truncate. + // validate also sets `freezer.frozen`. + err = freezer.validate() + } else { + // Truncate all tables to common length. + err = freezer.repair() + } + if err != nil { for _, table := range freezer.tables { table.Close() } @@ -233,6 +241,11 @@ func (f *freezer) Ancients() (uint64, error) { return atomic.LoadUint64(&f.frozen), nil } +// Tail returns the number of first stored item in the freezer. +func (f *freezer) Tail() (uint64, error) { + return atomic.LoadUint64(&f.tail), nil +} + // AncientSize returns the ancient size of the specified category. func (f *freezer) AncientSize(kind string) (uint64, error) { // This needs the write lock to avoid data races on table fields. @@ -268,7 +281,7 @@ func (f *freezer) ModifyAncients(fn func(ethdb.AncientWriteOp) error) (writeSize if err != nil { // The write operation has failed. Go back to the previous item position. for name, table := range f.tables { - err := table.truncate(prevItem) + err := table.truncateHead(prevItem) if err != nil { log.Error("Freezer table roll-back failed", "table", name, "index", prevItem, "err", err) } @@ -288,8 +301,8 @@ func (f *freezer) ModifyAncients(fn func(ethdb.AncientWriteOp) error) (writeSize return writeSize, nil } -// TruncateAncients discards any recent data above the provided threshold number. -func (f *freezer) TruncateAncients(items uint64) error { +// TruncateHead discards any recent data above the provided threshold number. +func (f *freezer) TruncateHead(items uint64) error { if f.readonly { return errReadOnly } @@ -300,7 +313,7 @@ func (f *freezer) TruncateAncients(items uint64) error { return nil } for _, table := range f.tables { - if err := table.truncate(items); err != nil { + if err := table.truncateHead(items); err != nil { return err } } @@ -308,6 +321,26 @@ func (f *freezer) TruncateAncients(items uint64) error { return nil } +// TruncateTail discards any recent data below the provided threshold number. +func (f *freezer) TruncateTail(tail uint64) error { + if f.readonly { + return errReadOnly + } + f.writeLock.Lock() + defer f.writeLock.Unlock() + + if atomic.LoadUint64(&f.tail) >= tail { + return nil + } + for _, table := range f.tables { + if err := table.truncateTail(tail); err != nil { + return err + } + } + atomic.StoreUint64(&f.tail, tail) + return nil +} + // Sync flushes all data tables to disk. func (f *freezer) Sync() error { var errs []error @@ -322,21 +355,59 @@ func (f *freezer) Sync() error { return nil } +// validate checks that every table has the same length. +// Used instead of `repair` in readonly mode. +func (f *freezer) validate() error { + if len(f.tables) == 0 { + return nil + } + var ( + length uint64 + name string + ) + // Hack to get length of any table + for kind, table := range f.tables { + length = atomic.LoadUint64(&table.items) + name = kind + break + } + // Now check every table against that length + for kind, table := range f.tables { + items := atomic.LoadUint64(&table.items) + if length != items { + return fmt.Errorf("freezer tables %s and %s have differing lengths: %d != %d", kind, name, items, length) + } + } + atomic.StoreUint64(&f.frozen, length) + return nil +} + // repair truncates all data tables to the same length. func (f *freezer) repair() error { - min := uint64(math.MaxUint64) + var ( + head = uint64(math.MaxUint64) + tail = uint64(0) + ) for _, table := range f.tables { items := atomic.LoadUint64(&table.items) - if min > items { - min = items + if head > items { + head = items + } + hidden := atomic.LoadUint64(&table.itemHidden) + if hidden > tail { + tail = hidden } } for _, table := range f.tables { - if err := table.truncate(min); err != nil { + if err := table.truncateHead(head); err != nil { + return err + } + if err := table.truncateTail(tail); err != nil { return err } } - atomic.StoreUint64(&f.frozen, min) + atomic.StoreUint64(&f.frozen, head) + atomic.StoreUint64(&f.tail, tail) return nil } @@ -566,3 +637,116 @@ func (f *freezer) freezeRange(nfdb *nofreezedb, number, limit uint64) (hashes [] return hashes, err } + +// convertLegacyFn takes a raw freezer entry in an older format and +// returns it in the new format. +type convertLegacyFn = func([]byte) ([]byte, error) + +// MigrateTable processes the entries in a given table in sequence +// converting them to a new format if they're of an old format. +func (f *freezer) MigrateTable(kind string, convert convertLegacyFn) error { + if f.readonly { + return errReadOnly + } + f.writeLock.Lock() + defer f.writeLock.Unlock() + + table, ok := f.tables[kind] + if !ok { + return errUnknownTable + } + // forEach iterates every entry in the table serially and in order, calling `fn` + // with the item as argument. If `fn` returns an error the iteration stops + // and that error will be returned. + forEach := func(t *freezerTable, offset uint64, fn func(uint64, []byte) error) error { + var ( + items = atomic.LoadUint64(&t.items) + batchSize = uint64(1024) + maxBytes = uint64(1024 * 1024) + ) + for i := offset; i < items; { + if i+batchSize > items { + batchSize = items - i + } + data, err := t.RetrieveItems(i, batchSize, maxBytes) + if err != nil { + return err + } + for j, item := range data { + if err := fn(i+uint64(j), item); err != nil { + return err + } + } + i += uint64(len(data)) + } + return nil + } + // TODO(s1na): This is a sanity-check since as of now no process does tail-deletion. But the migration + // process assumes no deletion at tail and needs to be modified to account for that. + if table.itemOffset > 0 || table.itemHidden > 0 { + return fmt.Errorf("migration not supported for tail-deleted freezers") + } + ancientsPath := filepath.Dir(table.index.Name()) + // Set up new dir for the migrated table, the content of which + // we'll at the end move over to the ancients dir. + migrationPath := filepath.Join(ancientsPath, "migration") + newTable, err := NewFreezerTable(migrationPath, kind, FreezerNoSnappy[kind], false) + if err != nil { + return err + } + var ( + batch = newTable.newBatch() + out []byte + start = time.Now() + logged = time.Now() + offset = newTable.items + ) + if offset > 0 { + log.Info("found previous migration attempt", "migrated", offset) + } + // Iterate through entries and transform them + if err := forEach(table, offset, func(i uint64, blob []byte) error { + if i%10000 == 0 && time.Since(logged) > 16*time.Second { + log.Info("Processing legacy elements", "count", i, "elapsed", common.PrettyDuration(time.Since(start))) + logged = time.Now() + } + out, err = convert(blob) + if err != nil { + return err + } + if err := batch.AppendRaw(i, out); err != nil { + return err + } + return nil + }); err != nil { + return err + } + if err := batch.commit(); err != nil { + return err + } + log.Info("Replacing old table files with migrated ones", "elapsed", common.PrettyDuration(time.Since(start))) + // Release and delete old table files. Note this won't + // delete the index file. + table.releaseFilesAfter(0, true) + + if err := newTable.Close(); err != nil { + return err + } + files, err := ioutil.ReadDir(migrationPath) + if err != nil { + return err + } + // Move migrated files to ancients dir. + for _, f := range files { + // This will replace the old index file as a side-effect. + if err := os.Rename(filepath.Join(migrationPath, f.Name()), filepath.Join(ancientsPath, f.Name())); err != nil { + return err + } + } + // Delete by now empty dir. + if err := os.Remove(migrationPath); err != nil { + return err + } + + return nil +} diff --git a/core/rawdb/freezer_batch.go b/core/rawdb/freezer_batch.go index 762fa8f25f..864a7f5e98 100644 --- a/core/rawdb/freezer_batch.go +++ b/core/rawdb/freezer_batch.go @@ -191,7 +191,7 @@ func (batch *freezerTableBatch) commit() error { dataSize := int64(len(batch.dataBuffer)) batch.dataBuffer = batch.dataBuffer[:0] - // Write index. + // Write indices. _, err = batch.t.index.Write(batch.indexBuffer) if err != nil { return err diff --git a/core/rawdb/freezer_meta.go b/core/rawdb/freezer_meta.go new file mode 100644 index 0000000000..d0bd2f9544 --- /dev/null +++ b/core/rawdb/freezer_meta.go @@ -0,0 +1,109 @@ +// Copyright 2022 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see + +package rawdb + +import ( + "io" + "os" + + "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/rlp" +) + +const freezerVersion = 1 // The initial version tag of freezer table metadata + +// freezerTableMeta wraps all the metadata of the freezer table. +type freezerTableMeta struct { + // Version is the versioning descriptor of the freezer table. + Version uint16 + + // VirtualTail indicates how many items have been marked as deleted. + // Its value is equal to the number of items removed from the table + // plus the number of items hidden in the table, so it should never + // be lower than the "actual tail". + VirtualTail uint64 +} + +// newMetadata initializes the metadata object with the given virtual tail. +func newMetadata(tail uint64) *freezerTableMeta { + return &freezerTableMeta{ + Version: freezerVersion, + VirtualTail: tail, + } +} + +// readMetadata reads the metadata of the freezer table from the +// given metadata file. +func readMetadata(file *os.File) (*freezerTableMeta, error) { + _, err := file.Seek(0, io.SeekStart) + if err != nil { + return nil, err + } + var meta freezerTableMeta + if err := rlp.Decode(file, &meta); err != nil { + return nil, err + } + return &meta, nil +} + +// writeMetadata writes the metadata of the freezer table into the +// given metadata file. +func writeMetadata(file *os.File, meta *freezerTableMeta) error { + _, err := file.Seek(0, io.SeekStart) + if err != nil { + return err + } + return rlp.Encode(file, meta) +} + +// loadMetadata loads the metadata from the given metadata file. +// Initializes the metadata file with the given "actual tail" if +// it's empty. +func loadMetadata(file *os.File, tail uint64) (*freezerTableMeta, error) { + stat, err := file.Stat() + if err != nil { + return nil, err + } + // Write the metadata with the given actual tail into metadata file + // if it's non-existent. There are two possible scenarios here: + // - the freezer table is empty + // - the freezer table is legacy + // In both cases, write the meta into the file with the actual tail + // as the virtual tail. + if stat.Size() == 0 { + m := newMetadata(tail) + if err := writeMetadata(file, m); err != nil { + return nil, err + } + return m, nil + } + m, err := readMetadata(file) + if err != nil { + return nil, err + } + // Update the virtual tail with the given actual tail if it's even + // lower than it. Theoretically it shouldn't happen at all, print + // a warning here. + if m.VirtualTail < tail { + log.Warn("Updated virtual tail", "have", m.VirtualTail, "now", tail) + m.VirtualTail = tail + if err := writeMetadata(file, m); err != nil { + return nil, err + } + } + return m, nil +} diff --git a/core/rawdb/freezer_meta_test.go b/core/rawdb/freezer_meta_test.go new file mode 100644 index 0000000000..191744a754 --- /dev/null +++ b/core/rawdb/freezer_meta_test.go @@ -0,0 +1,61 @@ +// Copyright 2022 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see + +package rawdb + +import ( + "io/ioutil" + "os" + "testing" +) + +func TestReadWriteFreezerTableMeta(t *testing.T) { + f, err := ioutil.TempFile(os.TempDir(), "*") + if err != nil { + t.Fatalf("Failed to create file %v", err) + } + err = writeMetadata(f, newMetadata(100)) + if err != nil { + t.Fatalf("Failed to write metadata %v", err) + } + meta, err := readMetadata(f) + if err != nil { + t.Fatalf("Failed to read metadata %v", err) + } + if meta.Version != freezerVersion { + t.Fatalf("Unexpected version field") + } + if meta.VirtualTail != uint64(100) { + t.Fatalf("Unexpected virtual tail field") + } +} + +func TestInitializeFreezerTableMeta(t *testing.T) { + f, err := ioutil.TempFile(os.TempDir(), "*") + if err != nil { + t.Fatalf("Failed to create file %v", err) + } + meta, err := loadMetadata(f, uint64(100)) + if err != nil { + t.Fatalf("Failed to read metadata %v", err) + } + if meta.Version != freezerVersion { + t.Fatalf("Unexpected version field") + } + if meta.VirtualTail != uint64(100) { + t.Fatalf("Unexpected virtual tail field") + } +} diff --git a/core/rawdb/freezer_table.go b/core/rawdb/freezer_table.go index 44aaadc2a9..a076ded067 100644 --- a/core/rawdb/freezer_table.go +++ b/core/rawdb/freezer_table.go @@ -47,20 +47,19 @@ var ( ) // indexEntry contains the number/id of the file that the data resides in, aswell as the -// offset within the file to the end of the data +// offset within the file to the end of the data. // In serialized form, the filenum is stored as uint16. type indexEntry struct { - filenum uint32 // stored as uint16 ( 2 bytes) - offset uint32 // stored as uint32 ( 4 bytes) + filenum uint32 // stored as uint16 ( 2 bytes ) + offset uint32 // stored as uint32 ( 4 bytes ) } const indexEntrySize = 6 // unmarshalBinary deserializes binary b into the rawIndex entry. -func (i *indexEntry) unmarshalBinary(b []byte) error { +func (i *indexEntry) unmarshalBinary(b []byte) { i.filenum = uint32(binary.BigEndian.Uint16(b[:2])) i.offset = binary.BigEndian.Uint32(b[2:6]) - return nil } // append adds the encoded entry to the end of b. @@ -75,14 +74,14 @@ func (i *indexEntry) append(b []byte) []byte { // bounds returns the start- and end- offsets, and the file number of where to // read there data item marked by the two index entries. The two entries are // assumed to be sequential. -func (start *indexEntry) bounds(end *indexEntry) (startOffset, endOffset, fileId uint32) { - if start.filenum != end.filenum { +func (i *indexEntry) bounds(end *indexEntry) (startOffset, endOffset, fileId uint32) { + if i.filenum != end.filenum { // If a piece of data 'crosses' a data-file, // it's actually in one piece on the second data-file. // We return a zero-indexEntry for the second file as start return 0, end.offset, end.filenum } - return start.offset, end.offset, end.filenum + return i.offset, end.offset, end.filenum } // freezerTable represents a single chained data table within the freezer (e.g. blocks). @@ -92,22 +91,28 @@ type freezerTable struct { // WARNING: The `items` field is accessed atomically. On 32 bit platforms, only // 64-bit aligned fields can be atomic. The struct is guaranteed to be so aligned, // so take advantage of that (https://golang.org/pkg/sync/atomic/#pkg-note-BUG). - items uint64 // Number of items stored in the table (including items removed from tail) + items uint64 // Number of items stored in the table (including items removed from tail) + itemOffset uint64 // Number of items removed from the table - noCompression bool // if true, disables snappy compression. Note: does not work retroactively + // itemHidden is the number of items marked as deleted. Tail deletion is + // only supported at file level which means the actual deletion will be + // delayed until the entire data file is marked as deleted. Before that + // these items will be hidden to prevent being visited again. The value + // should never be lower than itemOffset. + itemHidden uint64 + + noCompression bool // if true, disables snappy compression. Note: does not work retroactively + readonly bool maxFileSize uint32 // Max file size for data-files name string path string head *os.File // File descriptor for the data head of the table + index *os.File // File descriptor for the indexEntry file of the table + meta *os.File // File descriptor for metadata of the table files map[uint32]*os.File // open files headId uint32 // number of the currently active head file tailId uint32 // number of the earliest file - index *os.File // File descriptor for the indexEntry file of the table - - // In the case that old items are deleted (from the tail), we use itemOffset - // to count how many historic items have gone missing. - itemOffset uint32 // Offset (number of discarded items) headBytes int64 // Number of bytes written to the head file readMeter metrics.Meter // Meter for measuring the effective amount of data read @@ -119,71 +124,61 @@ type freezerTable struct { } // NewFreezerTable opens the given path as a freezer table. -func NewFreezerTable(path, name string, disableSnappy bool) (*freezerTable, error) { - return newTable(path, name, metrics.NilMeter{}, metrics.NilMeter{}, metrics.NilGauge{}, freezerTableSize, disableSnappy) -} - -// openFreezerFileForAppend opens a freezer table file and seeks to the end -func openFreezerFileForAppend(filename string) (*os.File, error) { - // Open the file without the O_APPEND flag - // because it has differing behaviour during Truncate operations - // on different OS's - file, err := os.OpenFile(filename, os.O_RDWR|os.O_CREATE, 0644) - if err != nil { - return nil, err - } - // Seek to end for append - if _, err = file.Seek(0, io.SeekEnd); err != nil { - return nil, err - } - return file, nil -} - -// openFreezerFileForReadOnly opens a freezer table file for read only access -func openFreezerFileForReadOnly(filename string) (*os.File, error) { - return os.OpenFile(filename, os.O_RDONLY, 0644) -} - -// openFreezerFileTruncated opens a freezer table making sure it is truncated -func openFreezerFileTruncated(filename string) (*os.File, error) { - return os.OpenFile(filename, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644) -} - -// truncateFreezerFile resizes a freezer table file and seeks to the end -func truncateFreezerFile(file *os.File, size int64) error { - if err := file.Truncate(size); err != nil { - return err - } - // Seek to end for append - if _, err := file.Seek(0, io.SeekEnd); err != nil { - return err - } - return nil +func NewFreezerTable(path, name string, disableSnappy, readonly bool) (*freezerTable, error) { + return newTable(path, name, metrics.NilMeter{}, metrics.NilMeter{}, metrics.NilGauge{}, freezerTableSize, disableSnappy, readonly) } // newTable opens a freezer table, creating the data and index files if they are -// non existent. Both files are truncated to the shortest common length to ensure +// non-existent. Both files are truncated to the shortest common length to ensure // they don't go out of sync. -func newTable(path string, name string, readMeter metrics.Meter, writeMeter metrics.Meter, sizeGauge metrics.Gauge, maxFilesize uint32, noCompression bool) (*freezerTable, error) { +func newTable(path string, name string, readMeter metrics.Meter, writeMeter metrics.Meter, sizeGauge metrics.Gauge, maxFilesize uint32, noCompression, readonly bool) (*freezerTable, error) { // Ensure the containing directory exists and open the indexEntry file if err := os.MkdirAll(path, 0755); err != nil { return nil, err } var idxName string if noCompression { - // Raw idx - idxName = fmt.Sprintf("%s.ridx", name) + idxName = fmt.Sprintf("%s.ridx", name) // raw index file } else { - // Compressed idx - idxName = fmt.Sprintf("%s.cidx", name) + idxName = fmt.Sprintf("%s.cidx", name) // compressed index file } - offsets, err := openFreezerFileForAppend(filepath.Join(path, idxName)) - if err != nil { - return nil, err + var ( + err error + index *os.File + meta *os.File + ) + if readonly { + // Will fail if table doesn't exist + index, err = openFreezerFileForReadOnly(filepath.Join(path, idxName)) + if err != nil { + return nil, err + } + // TODO(rjl493456442) change it to read-only mode. Open the metadata file + // in rw mode. It's a temporary solution for now and should be changed + // whenever the tail deletion is actually used. The reason for this hack is + // the additional meta file for each freezer table is added in order to support + // tail deletion, but for most legacy nodes this file is missing. This check + // will suddenly break lots of database relevant commands. So the metadata file + // is always opened for mutation and nothing else will be written except + // the initialization. + meta, err = openFreezerFileForAppend(filepath.Join(path, fmt.Sprintf("%s.meta", name))) + if err != nil { + return nil, err + } + } else { + index, err = openFreezerFileForAppend(filepath.Join(path, idxName)) + if err != nil { + return nil, err + } + meta, err = openFreezerFileForAppend(filepath.Join(path, fmt.Sprintf("%s.meta", name))) + if err != nil { + return nil, err + } } // Create the table and repair any past inconsistency tab := &freezerTable{ - index: offsets, + index: index, + meta: meta, files: make(map[uint32]*os.File), readMeter: readMeter, writeMeter: writeMeter, @@ -192,6 +187,7 @@ func newTable(path string, name string, readMeter metrics.Meter, writeMeter metr path: path, logger: log.New("database", path, "table", name), noCompression: noCompression, + readonly: readonly, maxFileSize: maxFilesize, } if err := tab.repair(); err != nil { @@ -209,7 +205,7 @@ func newTable(path string, name string, readMeter metrics.Meter, writeMeter metr return tab, nil } -// repair cross checks the head and the index file and truncates them to +// repair cross-checks the head and the index file and truncates them to // be in sync with each other after a potential crash / data loss. func (t *freezerTable) repair() error { // Create a temporary offset buffer to init files with and read indexEntry into @@ -247,12 +243,32 @@ func (t *freezerTable) repair() error { t.index.ReadAt(buffer, 0) firstIndex.unmarshalBinary(buffer) + // Assign the tail fields with the first stored index. + // The total removed items is represented with an uint32, + // which is not enough in theory but enough in practice. + // TODO: use uint64 to represent total removed items. t.tailId = firstIndex.filenum - t.itemOffset = firstIndex.offset + t.itemOffset = uint64(firstIndex.offset) - t.index.ReadAt(buffer, offsetsSize-indexEntrySize) - lastIndex.unmarshalBinary(buffer) - t.head, err = t.openFile(lastIndex.filenum, openFreezerFileForAppend) + // Load metadata from the file + meta, err := loadMetadata(t.meta, t.itemOffset) + if err != nil { + return err + } + t.itemHidden = meta.VirtualTail + + // Read the last index, use the default value in case the freezer is empty + if offsetsSize == indexEntrySize { + lastIndex = indexEntry{filenum: t.tailId, offset: 0} + } else { + t.index.ReadAt(buffer, offsetsSize-indexEntrySize) + lastIndex.unmarshalBinary(buffer) + } + if t.readonly { + t.head, err = t.openFile(lastIndex.filenum, openFreezerFileForReadOnly) + } else { + t.head, err = t.openFile(lastIndex.filenum, openFreezerFileForAppend) + } if err != nil { return err } @@ -263,7 +279,6 @@ func (t *freezerTable) repair() error { // Keep truncating both files until they come in sync contentExp = int64(lastIndex.offset) - for contentExp != contentSize { // Truncate the head file to the last offset pointer if contentExp < contentSize { @@ -280,9 +295,16 @@ func (t *freezerTable) repair() error { return err } offsetsSize -= indexEntrySize - t.index.ReadAt(buffer, offsetsSize-indexEntrySize) + + // Read the new head index, use the default value in case + // the freezer is already empty. var newLastIndex indexEntry - newLastIndex.unmarshalBinary(buffer) + if offsetsSize == indexEntrySize { + newLastIndex = indexEntry{filenum: t.tailId, offset: 0} + } else { + t.index.ReadAt(buffer, offsetsSize-indexEntrySize) + newLastIndex.unmarshalBinary(buffer) + } // We might have slipped back into an earlier head-file here if newLastIndex.filenum != lastIndex.filenum { // Release earlier opened file @@ -301,18 +323,30 @@ func (t *freezerTable) repair() error { contentExp = int64(lastIndex.offset) } } - // Ensure all reparation changes have been written to disk - if err := t.index.Sync(); err != nil { - return err - } - if err := t.head.Sync(); err != nil { - return err + // Sync() fails for read-only files on windows. + if !t.readonly { + // Ensure all reparation changes have been written to disk + if err := t.index.Sync(); err != nil { + return err + } + if err := t.head.Sync(); err != nil { + return err + } + if err := t.meta.Sync(); err != nil { + return err + } } // Update the item and byte counters and return - t.items = uint64(t.itemOffset) + uint64(offsetsSize/indexEntrySize-1) // last indexEntry points to the end of the data file + t.items = t.itemOffset + uint64(offsetsSize/indexEntrySize-1) // last indexEntry points to the end of the data file t.headBytes = contentSize t.headId = lastIndex.filenum + // Delete the leftover files because of head deletion + t.releaseFilesAfter(t.headId, true) + + // Delete the leftover files because of tail deletion + t.releaseFilesBefore(t.tailId, true) + // Close opened files and preopen all files if err := t.preopen(); err != nil { return err @@ -328,27 +362,35 @@ func (t *freezerTable) repair() error { func (t *freezerTable) preopen() (err error) { // The repair might have already opened (some) files t.releaseFilesAfter(0, false) + // Open all except head in RDONLY for i := t.tailId; i < t.headId; i++ { if _, err = t.openFile(i, openFreezerFileForReadOnly); err != nil { return err } } - // Open head in read/write - t.head, err = t.openFile(t.headId, openFreezerFileForAppend) + if t.readonly { + t.head, err = t.openFile(t.headId, openFreezerFileForReadOnly) + } else { + // Open head in read/write + t.head, err = t.openFile(t.headId, openFreezerFileForAppend) + } return err } -// truncate discards any recent data above the provided threshold number. -func (t *freezerTable) truncate(items uint64) error { +// truncateHead discards any recent data above the provided threshold number. +func (t *freezerTable) truncateHead(items uint64) error { t.lock.Lock() defer t.lock.Unlock() - // If our item count is correct, don't do anything + // Ensure the given truncate target falls in the correct range existing := atomic.LoadUint64(&t.items) if existing <= items { return nil } + if items < atomic.LoadUint64(&t.itemHidden) { + return errors.New("truncation below tail") + } // We need to truncate, save the old size for metrics tracking oldSize, err := t.sizeNolock() if err != nil { @@ -360,17 +402,24 @@ func (t *freezerTable) truncate(items uint64) error { log = t.logger.Warn // Only loud warn if we delete multiple items } log("Truncating freezer table", "items", existing, "limit", items) - if err := truncateFreezerFile(t.index, int64(items+1)*indexEntrySize); err != nil { + + // Truncate the index file first, the tail position is also considered + // when calculating the new freezer table length. + length := items - atomic.LoadUint64(&t.itemOffset) + if err := truncateFreezerFile(t.index, int64(length+1)*indexEntrySize); err != nil { return err } // Calculate the new expected size of the data file and truncate it - buffer := make([]byte, indexEntrySize) - if _, err := t.index.ReadAt(buffer, int64(items*indexEntrySize)); err != nil { - return err - } var expected indexEntry - expected.unmarshalBinary(buffer) - + if length == 0 { + expected = indexEntry{filenum: t.tailId, offset: 0} + } else { + buffer := make([]byte, indexEntrySize) + if _, err := t.index.ReadAt(buffer, int64(length*indexEntrySize)); err != nil { + return err + } + expected.unmarshalBinary(buffer) + } // We might need to truncate back to older files if expected.filenum != t.headId { // If already open for reading, force-reopen for writing @@ -399,7 +448,110 @@ func (t *freezerTable) truncate(items uint64) error { return err } t.sizeGauge.Dec(int64(oldSize - newSize)) + return nil +} +// truncateTail discards any recent data before the provided threshold number. +func (t *freezerTable) truncateTail(items uint64) error { + t.lock.Lock() + defer t.lock.Unlock() + + // Ensure the given truncate target falls in the correct range + if atomic.LoadUint64(&t.itemHidden) >= items { + return nil + } + if atomic.LoadUint64(&t.items) < items { + return errors.New("truncation above head") + } + // Load the new tail index by the given new tail position + var ( + newTailId uint32 + buffer = make([]byte, indexEntrySize) + ) + if atomic.LoadUint64(&t.items) == items { + newTailId = t.headId + } else { + offset := items - atomic.LoadUint64(&t.itemOffset) + if _, err := t.index.ReadAt(buffer, int64((offset+1)*indexEntrySize)); err != nil { + return err + } + var newTail indexEntry + newTail.unmarshalBinary(buffer) + newTailId = newTail.filenum + } + // Update the virtual tail marker and hidden these entries in table. + atomic.StoreUint64(&t.itemHidden, items) + if err := writeMetadata(t.meta, newMetadata(items)); err != nil { + return err + } + // Hidden items still fall in the current tail file, no data file + // can be dropped. + if t.tailId == newTailId { + return nil + } + // Hidden items fall in the incorrect range, returns the error. + if t.tailId > newTailId { + return fmt.Errorf("invalid index, tail-file %d, item-file %d", t.tailId, newTailId) + } + // Hidden items exceed the current tail file, drop the relevant + // data files. We need to truncate, save the old size for metrics + // tracking. + oldSize, err := t.sizeNolock() + if err != nil { + return err + } + // Count how many items can be deleted from the file. + var ( + newDeleted = items + deleted = atomic.LoadUint64(&t.itemOffset) + ) + for current := items - 1; current >= deleted; current -= 1 { + if _, err := t.index.ReadAt(buffer, int64((current-deleted+1)*indexEntrySize)); err != nil { + return err + } + var pre indexEntry + pre.unmarshalBinary(buffer) + if pre.filenum != newTailId { + break + } + newDeleted = current + } + // Commit the changes of metadata file first before manipulating + // the indexes file. + if err := t.meta.Sync(); err != nil { + return err + } + // Truncate the deleted index entries from the index file. + err = copyFrom(t.index.Name(), t.index.Name(), indexEntrySize*(newDeleted-deleted+1), func(f *os.File) error { + tailIndex := indexEntry{ + filenum: newTailId, + offset: uint32(newDeleted), + } + _, err := f.Write(tailIndex.append(nil)) + return err + }) + if err != nil { + return err + } + // Reopen the modified index file to load the changes + if err := t.index.Close(); err != nil { + return err + } + t.index, err = openFreezerFileForAppend(t.index.Name()) + if err != nil { + return err + } + // Release any files before the current tail + t.tailId = newTailId + atomic.StoreUint64(&t.itemOffset, newDeleted) + t.releaseFilesBefore(t.tailId, true) + + // Retrieve the new size and update the total size counter + newSize, err := t.sizeNolock() + if err != nil { + return err + } + t.sizeGauge.Dec(int64(oldSize - newSize)) return nil } @@ -414,6 +566,11 @@ func (t *freezerTable) Close() error { } t.index = nil + if err := t.meta.Close(); err != nil { + errs = append(errs, err) + } + t.meta = nil + for _, f := range t.files { if err := f.Close(); err != nil { errs = append(errs, err) @@ -468,6 +625,19 @@ func (t *freezerTable) releaseFilesAfter(num uint32, remove bool) { } } +// releaseFilesBefore closes all open files with a lower number, and optionally also deletes the files +func (t *freezerTable) releaseFilesBefore(num uint32, remove bool) { + for fnum, f := range t.files { + if fnum < num { + delete(t.files, fnum) + f.Close() + if remove { + os.Remove(f.Name()) + } + } + } +} + // getIndices returns the index entries for the given from-item, covering 'count' items. // N.B: The actual number of returned indices for N items will always be N+1 (unless an // error is returned). @@ -476,7 +646,7 @@ func (t *freezerTable) releaseFilesAfter(num uint32, remove bool) { // it will return error. func (t *freezerTable) getIndices(from, count uint64) ([]*indexEntry, error) { // Apply the table-offset - from = from - uint64(t.itemOffset) + from = from - t.itemOffset // For reading N items, we need N+1 indices. buffer := make([]byte, (count+1)*indexEntrySize) if _, err := t.index.ReadAt(buffer, int64(from*indexEntrySize)); err != nil { @@ -561,18 +731,21 @@ func (t *freezerTable) retrieveItems(start, count, maxBytes uint64) ([]byte, []i t.lock.RLock() defer t.lock.RUnlock() - // Ensure the table and the item is accessible + // Ensure the table and the item are accessible if t.index == nil || t.head == nil { return nil, nil, errClosed } - itemCount := atomic.LoadUint64(&t.items) // max number + var ( + items = atomic.LoadUint64(&t.items) // the total items(head + 1) + hidden = atomic.LoadUint64(&t.itemHidden) // the number of hidden items + ) // Ensure the start is written, not deleted from the tail, and that the // caller actually wants something - if itemCount <= start || uint64(t.itemOffset) > start || count == 0 { + if items <= start || hidden > start || count == 0 { return nil, nil, errOutOfBounds } - if start+count > itemCount { - count = itemCount - start + if start+count > items { + count = items - start } var ( output = make([]byte, maxBytes) // Buffer to read data into @@ -648,10 +821,10 @@ func (t *freezerTable) retrieveItems(start, count, maxBytes uint64) ([]byte, []i return output[:outputSize], sizes, nil } -// has returns an indicator whether the specified number data -// exists in the freezer table. +// has returns an indicator whether the specified number data is still accessible +// in the freezer table. func (t *freezerTable) has(number uint64) bool { - return atomic.LoadUint64(&t.items) > number + return atomic.LoadUint64(&t.items) > number && atomic.LoadUint64(&t.itemHidden) <= number } // size returns the total data size in the freezer table. @@ -705,6 +878,9 @@ func (t *freezerTable) Sync() error { if err := t.index.Sync(); err != nil { return err } + if err := t.meta.Sync(); err != nil { + return err + } return t.head.Sync() } @@ -722,13 +898,20 @@ func (t *freezerTable) dumpIndexString(start, stop int64) string { } func (t *freezerTable) dumpIndex(w io.Writer, start, stop int64) { + meta, err := readMetadata(t.meta) + if err != nil { + fmt.Fprintf(w, "Failed to decode freezer table %v\n", err) + return + } + fmt.Fprintf(w, "Version %d deleted %d, hidden %d\n", meta.Version, atomic.LoadUint64(&t.itemOffset), atomic.LoadUint64(&t.itemHidden)) + buf := make([]byte, indexEntrySize) fmt.Fprintf(w, "| number | fileno | offset |\n") fmt.Fprintf(w, "|--------|--------|--------|\n") for i := uint64(start); ; i++ { - if _, err := t.index.ReadAt(buf, int64(i*indexEntrySize)); err != nil { + if _, err := t.index.ReadAt(buf, int64((i+1)*indexEntrySize)); err != nil { break } var entry indexEntry diff --git a/core/rawdb/freezer_table_test.go b/core/rawdb/freezer_table_test.go index 803809b520..0bddcf7211 100644 --- a/core/rawdb/freezer_table_test.go +++ b/core/rawdb/freezer_table_test.go @@ -18,13 +18,18 @@ package rawdb import ( "bytes" + "encoding/binary" "fmt" "math/rand" "os" "path/filepath" + "reflect" + "sync/atomic" "testing" + "testing/quick" "time" + "github.com/davecgh/go-spew/spew" "github.com/ethereum/go-ethereum/metrics" "github.com/stretchr/testify/require" ) @@ -40,7 +45,7 @@ func TestFreezerBasics(t *testing.T) { // set cutoff at 50 bytes f, err := newTable(os.TempDir(), fmt.Sprintf("unittest-%d", rand.Uint64()), - metrics.NewMeter(), metrics.NewMeter(), metrics.NewGauge(), 50, true) + metrics.NewMeter(), metrics.NewMeter(), metrics.NewGauge(), 50, true, false) if err != nil { t.Fatal(err) } @@ -85,7 +90,7 @@ func TestFreezerBasicsClosing(t *testing.T) { f *freezerTable err error ) - f, err = newTable(os.TempDir(), fname, rm, wm, sg, 50, true) + f, err = newTable(os.TempDir(), fname, rm, wm, sg, 50, true, false) if err != nil { t.Fatal(err) } @@ -99,7 +104,7 @@ func TestFreezerBasicsClosing(t *testing.T) { require.NoError(t, batch.commit()) f.Close() - f, err = newTable(os.TempDir(), fname, rm, wm, sg, 50, true) + f, err = newTable(os.TempDir(), fname, rm, wm, sg, 50, true, false) if err != nil { t.Fatal(err) } @@ -116,7 +121,7 @@ func TestFreezerBasicsClosing(t *testing.T) { t.Fatalf("test %d, got \n%x != \n%x", y, got, exp) } f.Close() - f, err = newTable(os.TempDir(), fname, rm, wm, sg, 50, true) + f, err = newTable(os.TempDir(), fname, rm, wm, sg, 50, true, false) if err != nil { t.Fatal(err) } @@ -131,7 +136,7 @@ func TestFreezerRepairDanglingHead(t *testing.T) { // Fill table { - f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true) + f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true, false) if err != nil { t.Fatal(err) } @@ -160,7 +165,7 @@ func TestFreezerRepairDanglingHead(t *testing.T) { // Now open it again { - f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true) + f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true, false) if err != nil { t.Fatal(err) } @@ -183,7 +188,7 @@ func TestFreezerRepairDanglingHeadLarge(t *testing.T) { // Fill a table and close it { - f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true) + f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true, false) if err != nil { t.Fatal(err) } @@ -204,12 +209,12 @@ func TestFreezerRepairDanglingHeadLarge(t *testing.T) { } // Remove everything but the first item, and leave data unaligned // 0-indexEntry, 1-indexEntry, corrupt-indexEntry - idxFile.Truncate(indexEntrySize + indexEntrySize + indexEntrySize/2) + idxFile.Truncate(2*indexEntrySize + indexEntrySize/2) idxFile.Close() // Now open it again { - f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true) + f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true, false) if err != nil { t.Fatal(err) } @@ -232,7 +237,7 @@ func TestFreezerRepairDanglingHeadLarge(t *testing.T) { // And if we open it, we should now be able to read all of them (new values) { - f, _ := newTable(os.TempDir(), fname, rm, wm, sg, 50, true) + f, _ := newTable(os.TempDir(), fname, rm, wm, sg, 50, true, false) for y := 1; y < 255; y++ { exp := getChunk(15, ^y) got, err := f.Retrieve(uint64(y)) @@ -254,7 +259,7 @@ func TestSnappyDetection(t *testing.T) { // Open with snappy { - f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true) + f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true, false) if err != nil { t.Fatal(err) } @@ -265,7 +270,7 @@ func TestSnappyDetection(t *testing.T) { // Open without snappy { - f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, false) + f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, false, false) if err != nil { t.Fatal(err) } @@ -277,7 +282,7 @@ func TestSnappyDetection(t *testing.T) { // Open with snappy { - f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true) + f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true, false) if err != nil { t.Fatal(err) } @@ -309,7 +314,7 @@ func TestFreezerRepairDanglingIndex(t *testing.T) { // Fill a table and close it { - f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true) + f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true, false) if err != nil { t.Fatal(err) } @@ -345,7 +350,7 @@ func TestFreezerRepairDanglingIndex(t *testing.T) { // 45, 45, 15 // with 3+3+1 items { - f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true) + f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true, false) if err != nil { t.Fatal(err) } @@ -366,7 +371,7 @@ func TestFreezerTruncate(t *testing.T) { // Fill table { - f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true) + f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true, false) if err != nil { t.Fatal(err) } @@ -382,12 +387,12 @@ func TestFreezerTruncate(t *testing.T) { // Reopen, truncate { - f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true) + f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true, false) if err != nil { t.Fatal(err) } defer f.Close() - f.truncate(10) // 150 bytes + f.truncateHead(10) // 150 bytes if f.items != 10 { t.Fatalf("expected %d items, got %d", 10, f.items) } @@ -407,7 +412,7 @@ func TestFreezerRepairFirstFile(t *testing.T) { // Fill table { - f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true) + f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true, false) if err != nil { t.Fatal(err) } @@ -440,7 +445,7 @@ func TestFreezerRepairFirstFile(t *testing.T) { // Reopen { - f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true) + f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true, false) if err != nil { t.Fatal(err) } @@ -475,7 +480,7 @@ func TestFreezerReadAndTruncate(t *testing.T) { // Fill table { - f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true) + f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true, false) if err != nil { t.Fatal(err) } @@ -491,7 +496,7 @@ func TestFreezerReadAndTruncate(t *testing.T) { // Reopen and read all files { - f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true) + f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true, false) if err != nil { t.Fatal(err) } @@ -504,7 +509,7 @@ func TestFreezerReadAndTruncate(t *testing.T) { } // Now, truncate back to zero - f.truncate(0) + f.truncateHead(0) // Write the data again batch := f.newBatch() @@ -523,7 +528,7 @@ func TestFreezerOffset(t *testing.T) { // Fill table { - f, err := newTable(os.TempDir(), fname, rm, wm, sg, 40, true) + f, err := newTable(os.TempDir(), fname, rm, wm, sg, 40, true, false) if err != nil { t.Fatal(err) } @@ -565,18 +570,19 @@ func TestFreezerOffset(t *testing.T) { // Update the index file, so that we store // [ file = 2, offset = 4 ] at index zero - tailId := uint32(2) // First file is 2 - itemOffset := uint32(4) // We have removed four items zeroIndex := indexEntry{ - filenum: tailId, - offset: itemOffset, + filenum: uint32(2), // First file is 2 + offset: uint32(4), // We have removed four items } buf := zeroIndex.append(nil) + // Overwrite index zero copy(indexBuf, buf) + // Remove the four next indices by overwriting copy(indexBuf[indexEntrySize:], indexBuf[indexEntrySize*5:]) indexFile.WriteAt(indexBuf, 0) + // Need to truncate the moved index items indexFile.Truncate(indexEntrySize * (1 + 2)) indexFile.Close() @@ -584,7 +590,7 @@ func TestFreezerOffset(t *testing.T) { // Now open again { - f, err := newTable(os.TempDir(), fname, rm, wm, sg, 40, true) + f, err := newTable(os.TempDir(), fname, rm, wm, sg, 40, true, false) if err != nil { t.Fatal(err) } @@ -623,13 +629,12 @@ func TestFreezerOffset(t *testing.T) { // Update the index file, so that we store // [ file = 2, offset = 1M ] at index zero - tailId := uint32(2) // First file is 2 - itemOffset := uint32(1000000) // We have removed 1M items zeroIndex := indexEntry{ - offset: itemOffset, - filenum: tailId, + offset: uint32(1000000), // We have removed 1M items + filenum: uint32(2), // First file is 2 } buf := zeroIndex.append(nil) + // Overwrite index zero copy(indexBuf, buf) indexFile.WriteAt(indexBuf, 0) @@ -638,7 +643,7 @@ func TestFreezerOffset(t *testing.T) { // Check that existing items have been moved to index 1M. { - f, err := newTable(os.TempDir(), fname, rm, wm, sg, 40, true) + f, err := newTable(os.TempDir(), fname, rm, wm, sg, 40, true, false) if err != nil { t.Fatal(err) } @@ -659,6 +664,171 @@ func TestFreezerOffset(t *testing.T) { } } +func TestTruncateTail(t *testing.T) { + t.Parallel() + rm, wm, sg := metrics.NewMeter(), metrics.NewMeter(), metrics.NewGauge() + fname := fmt.Sprintf("truncate-tail-%d", rand.Uint64()) + + // Fill table + f, err := newTable(os.TempDir(), fname, rm, wm, sg, 40, true, false) + if err != nil { + t.Fatal(err) + } + + // Write 7 x 20 bytes, splitting out into four files + batch := f.newBatch() + require.NoError(t, batch.AppendRaw(0, getChunk(20, 0xFF))) + require.NoError(t, batch.AppendRaw(1, getChunk(20, 0xEE))) + require.NoError(t, batch.AppendRaw(2, getChunk(20, 0xdd))) + require.NoError(t, batch.AppendRaw(3, getChunk(20, 0xcc))) + require.NoError(t, batch.AppendRaw(4, getChunk(20, 0xbb))) + require.NoError(t, batch.AppendRaw(5, getChunk(20, 0xaa))) + require.NoError(t, batch.AppendRaw(6, getChunk(20, 0x11))) + require.NoError(t, batch.commit()) + + // nothing to do, all the items should still be there. + f.truncateTail(0) + fmt.Println(f.dumpIndexString(0, 1000)) + checkRetrieve(t, f, map[uint64][]byte{ + 0: getChunk(20, 0xFF), + 1: getChunk(20, 0xEE), + 2: getChunk(20, 0xdd), + 3: getChunk(20, 0xcc), + 4: getChunk(20, 0xbb), + 5: getChunk(20, 0xaa), + 6: getChunk(20, 0x11), + }) + + // truncate single element( item 0 ), deletion is only supported at file level + f.truncateTail(1) + fmt.Println(f.dumpIndexString(0, 1000)) + checkRetrieveError(t, f, map[uint64]error{ + 0: errOutOfBounds, + }) + checkRetrieve(t, f, map[uint64][]byte{ + 1: getChunk(20, 0xEE), + 2: getChunk(20, 0xdd), + 3: getChunk(20, 0xcc), + 4: getChunk(20, 0xbb), + 5: getChunk(20, 0xaa), + 6: getChunk(20, 0x11), + }) + + // Reopen the table, the deletion information should be persisted as well + f.Close() + f, err = newTable(os.TempDir(), fname, rm, wm, sg, 40, true, false) + if err != nil { + t.Fatal(err) + } + checkRetrieveError(t, f, map[uint64]error{ + 0: errOutOfBounds, + }) + checkRetrieve(t, f, map[uint64][]byte{ + 1: getChunk(20, 0xEE), + 2: getChunk(20, 0xdd), + 3: getChunk(20, 0xcc), + 4: getChunk(20, 0xbb), + 5: getChunk(20, 0xaa), + 6: getChunk(20, 0x11), + }) + + // truncate two elements( item 0, item 1 ), the file 0 should be deleted + f.truncateTail(2) + checkRetrieveError(t, f, map[uint64]error{ + 0: errOutOfBounds, + 1: errOutOfBounds, + }) + checkRetrieve(t, f, map[uint64][]byte{ + 2: getChunk(20, 0xdd), + 3: getChunk(20, 0xcc), + 4: getChunk(20, 0xbb), + 5: getChunk(20, 0xaa), + 6: getChunk(20, 0x11), + }) + + // Reopen the table, the above testing should still pass + f.Close() + f, err = newTable(os.TempDir(), fname, rm, wm, sg, 40, true, false) + if err != nil { + t.Fatal(err) + } + defer f.Close() + + checkRetrieveError(t, f, map[uint64]error{ + 0: errOutOfBounds, + 1: errOutOfBounds, + }) + checkRetrieve(t, f, map[uint64][]byte{ + 2: getChunk(20, 0xdd), + 3: getChunk(20, 0xcc), + 4: getChunk(20, 0xbb), + 5: getChunk(20, 0xaa), + 6: getChunk(20, 0x11), + }) + + // truncate all, the entire freezer should be deleted + f.truncateTail(7) + checkRetrieveError(t, f, map[uint64]error{ + 0: errOutOfBounds, + 1: errOutOfBounds, + 2: errOutOfBounds, + 3: errOutOfBounds, + 4: errOutOfBounds, + 5: errOutOfBounds, + 6: errOutOfBounds, + }) +} + +func TestTruncateHead(t *testing.T) { + t.Parallel() + rm, wm, sg := metrics.NewMeter(), metrics.NewMeter(), metrics.NewGauge() + fname := fmt.Sprintf("truncate-head-blow-tail-%d", rand.Uint64()) + + // Fill table + f, err := newTable(os.TempDir(), fname, rm, wm, sg, 40, true, false) + if err != nil { + t.Fatal(err) + } + + // Write 7 x 20 bytes, splitting out into four files + batch := f.newBatch() + require.NoError(t, batch.AppendRaw(0, getChunk(20, 0xFF))) + require.NoError(t, batch.AppendRaw(1, getChunk(20, 0xEE))) + require.NoError(t, batch.AppendRaw(2, getChunk(20, 0xdd))) + require.NoError(t, batch.AppendRaw(3, getChunk(20, 0xcc))) + require.NoError(t, batch.AppendRaw(4, getChunk(20, 0xbb))) + require.NoError(t, batch.AppendRaw(5, getChunk(20, 0xaa))) + require.NoError(t, batch.AppendRaw(6, getChunk(20, 0x11))) + require.NoError(t, batch.commit()) + + f.truncateTail(4) // Tail = 4 + + // NewHead is required to be 3, the entire table should be truncated + f.truncateHead(4) + checkRetrieveError(t, f, map[uint64]error{ + 0: errOutOfBounds, // Deleted by tail + 1: errOutOfBounds, // Deleted by tail + 2: errOutOfBounds, // Deleted by tail + 3: errOutOfBounds, // Deleted by tail + 4: errOutOfBounds, // Deleted by Head + 5: errOutOfBounds, // Deleted by Head + 6: errOutOfBounds, // Deleted by Head + }) + + // Append new items + batch = f.newBatch() + require.NoError(t, batch.AppendRaw(4, getChunk(20, 0xbb))) + require.NoError(t, batch.AppendRaw(5, getChunk(20, 0xaa))) + require.NoError(t, batch.AppendRaw(6, getChunk(20, 0x11))) + require.NoError(t, batch.commit()) + + checkRetrieve(t, f, map[uint64][]byte{ + 4: getChunk(20, 0xbb), + 5: getChunk(20, 0xaa), + 6: getChunk(20, 0x11), + }) +} + func checkRetrieve(t *testing.T, f *freezerTable, items map[uint64][]byte) { t.Helper() @@ -726,7 +896,7 @@ func TestSequentialRead(t *testing.T) { rm, wm, sg := metrics.NewMeter(), metrics.NewMeter(), metrics.NewGauge() fname := fmt.Sprintf("batchread-%d", rand.Uint64()) { // Fill table - f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true) + f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true, false) if err != nil { t.Fatal(err) } @@ -736,7 +906,7 @@ func TestSequentialRead(t *testing.T) { f.Close() } { // Open it, iterate, verify iteration - f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true) + f, err := newTable(os.TempDir(), fname, rm, wm, sg, 50, true, false) if err != nil { t.Fatal(err) } @@ -757,7 +927,7 @@ func TestSequentialRead(t *testing.T) { } { // Open it, iterate, verify byte limit. The byte limit is less than item // size, so each lookup should only return one item - f, err := newTable(os.TempDir(), fname, rm, wm, sg, 40, true) + f, err := newTable(os.TempDir(), fname, rm, wm, sg, 40, true, false) if err != nil { t.Fatal(err) } @@ -786,7 +956,7 @@ func TestSequentialReadByteLimit(t *testing.T) { rm, wm, sg := metrics.NewMeter(), metrics.NewMeter(), metrics.NewGauge() fname := fmt.Sprintf("batchread-2-%d", rand.Uint64()) { // Fill table - f, err := newTable(os.TempDir(), fname, rm, wm, sg, 100, true) + f, err := newTable(os.TempDir(), fname, rm, wm, sg, 100, true, false) if err != nil { t.Fatal(err) } @@ -808,7 +978,7 @@ func TestSequentialReadByteLimit(t *testing.T) { {100, 109, 10}, } { { - f, err := newTable(os.TempDir(), fname, rm, wm, sg, 100, true) + f, err := newTable(os.TempDir(), fname, rm, wm, sg, 100, true, false) if err != nil { t.Fatal(err) } @@ -829,3 +999,298 @@ func TestSequentialReadByteLimit(t *testing.T) { } } } + +func TestFreezerReadonly(t *testing.T) { + tmpdir := os.TempDir() + // Case 1: Check it fails on non-existent file. + _, err := newTable(tmpdir, + fmt.Sprintf("readonlytest-%d", rand.Uint64()), + metrics.NewMeter(), metrics.NewMeter(), metrics.NewGauge(), 50, true, true) + if err == nil { + t.Fatal("readonly table instantiation should fail for non-existent table") + } + + // Case 2: Check that it fails on invalid index length. + fname := fmt.Sprintf("readonlytest-%d", rand.Uint64()) + idxFile, err := openFreezerFileForAppend(filepath.Join(tmpdir, fmt.Sprintf("%s.ridx", fname))) + if err != nil { + t.Errorf("Failed to open index file: %v\n", err) + } + // size should not be a multiple of indexEntrySize. + idxFile.Write(make([]byte, 17)) + idxFile.Close() + _, err = newTable(tmpdir, fname, + metrics.NewMeter(), metrics.NewMeter(), metrics.NewGauge(), 50, true, true) + if err == nil { + t.Errorf("readonly table instantiation should fail for invalid index size") + } + + // Case 3: Open table non-readonly table to write some data. + // Then corrupt the head file and make sure opening the table + // again in readonly triggers an error. + fname = fmt.Sprintf("readonlytest-%d", rand.Uint64()) + f, err := newTable(tmpdir, fname, + metrics.NewMeter(), metrics.NewMeter(), metrics.NewGauge(), 50, true, false) + if err != nil { + t.Fatalf("failed to instantiate table: %v", err) + } + writeChunks(t, f, 8, 32) + // Corrupt table file + if _, err := f.head.Write([]byte{1, 1}); err != nil { + t.Fatal(err) + } + if err := f.Close(); err != nil { + t.Fatal(err) + } + _, err = newTable(tmpdir, fname, + metrics.NewMeter(), metrics.NewMeter(), metrics.NewGauge(), 50, true, true) + if err == nil { + t.Errorf("readonly table instantiation should fail for corrupt table file") + } + + // Case 4: Write some data to a table and later re-open it as readonly. + // Should be successful. + fname = fmt.Sprintf("readonlytest-%d", rand.Uint64()) + f, err = newTable(tmpdir, fname, + metrics.NewMeter(), metrics.NewMeter(), metrics.NewGauge(), 50, true, false) + if err != nil { + t.Fatalf("failed to instantiate table: %v\n", err) + } + writeChunks(t, f, 32, 128) + if err := f.Close(); err != nil { + t.Fatal(err) + } + f, err = newTable(tmpdir, fname, + metrics.NewMeter(), metrics.NewMeter(), metrics.NewGauge(), 50, true, true) + if err != nil { + t.Fatal(err) + } + v, err := f.Retrieve(10) + if err != nil { + t.Fatal(err) + } + exp := getChunk(128, 10) + if !bytes.Equal(v, exp) { + t.Errorf("retrieved value is incorrect") + } + + // Case 5: Now write some data via a batch. + // This should fail either during AppendRaw or Commit + batch := f.newBatch() + writeErr := batch.AppendRaw(32, make([]byte, 1)) + if writeErr == nil { + writeErr = batch.commit() + } + if writeErr == nil { + t.Fatalf("Writing to readonly table should fail") + } +} + +// randTest performs random freezer table operations. +// Instances of this test are created by Generate. +type randTest []randTestStep + +type randTestStep struct { + op int + items []uint64 // for append and retrieve + blobs [][]byte // for append + target uint64 // for truncate(head/tail) + err error // for debugging +} + +const ( + opReload = iota + opAppend + opRetrieve + opTruncateHead + opTruncateHeadAll + opTruncateTail + opTruncateTailAll + opCheckAll + opMax // boundary value, not an actual op +) + +func getVals(first uint64, n int) [][]byte { + var ret [][]byte + for i := 0; i < n; i++ { + val := make([]byte, 8) + binary.BigEndian.PutUint64(val, first+uint64(i)) + ret = append(ret, val) + } + return ret +} + +func (randTest) Generate(r *rand.Rand, size int) reflect.Value { + var ( + deleted uint64 // The number of deleted items from tail + items []uint64 // The index of entries in table + + // getItems retrieves the indexes for items in table. + getItems = func(n int) []uint64 { + length := len(items) + if length == 0 { + return nil + } + var ret []uint64 + index := rand.Intn(length) + for i := index; len(ret) < n && i < length; i++ { + ret = append(ret, items[i]) + } + return ret + } + + // addItems appends the given length items into the table. + addItems = func(n int) []uint64 { + var first = deleted + if len(items) != 0 { + first = items[len(items)-1] + 1 + } + var ret []uint64 + for i := 0; i < n; i++ { + ret = append(ret, first+uint64(i)) + } + items = append(items, ret...) + return ret + } + ) + + var steps randTest + for i := 0; i < size; i++ { + step := randTestStep{op: r.Intn(opMax)} + switch step.op { + case opReload, opCheckAll: + case opAppend: + num := r.Intn(3) + step.items = addItems(num) + if len(step.items) == 0 { + step.blobs = nil + } else { + step.blobs = getVals(step.items[0], num) + } + case opRetrieve: + step.items = getItems(r.Intn(3)) + case opTruncateHead: + if len(items) == 0 { + step.target = deleted + } else { + index := r.Intn(len(items)) + items = items[:index] + step.target = deleted + uint64(index) + } + case opTruncateHeadAll: + step.target = deleted + items = items[:0] + case opTruncateTail: + if len(items) == 0 { + step.target = deleted + } else { + index := r.Intn(len(items)) + items = items[index:] + deleted += uint64(index) + step.target = deleted + } + case opTruncateTailAll: + step.target = deleted + uint64(len(items)) + items = items[:0] + deleted = step.target + } + steps = append(steps, step) + } + return reflect.ValueOf(steps) +} + +func runRandTest(rt randTest) bool { + fname := fmt.Sprintf("randtest-%d", rand.Uint64()) + f, err := newTable(os.TempDir(), fname, metrics.NewMeter(), metrics.NewMeter(), metrics.NewGauge(), 50, true, false) + if err != nil { + panic("failed to initialize table") + } + var values [][]byte + for i, step := range rt { + switch step.op { + case opReload: + f.Close() + f, err = newTable(os.TempDir(), fname, metrics.NewMeter(), metrics.NewMeter(), metrics.NewGauge(), 50, true, false) + if err != nil { + rt[i].err = fmt.Errorf("failed to reload table %v", err) + } + case opCheckAll: + tail := atomic.LoadUint64(&f.itemHidden) + head := atomic.LoadUint64(&f.items) + + if tail == head { + continue + } + got, err := f.RetrieveItems(atomic.LoadUint64(&f.itemHidden), head-tail, 100000) + if err != nil { + rt[i].err = err + } else { + if !reflect.DeepEqual(got, values) { + rt[i].err = fmt.Errorf("mismatch on retrieved values %v %v", got, values) + } + } + + case opAppend: + batch := f.newBatch() + for i := 0; i < len(step.items); i++ { + batch.AppendRaw(step.items[i], step.blobs[i]) + } + batch.commit() + values = append(values, step.blobs...) + + case opRetrieve: + var blobs [][]byte + if len(step.items) == 0 { + continue + } + tail := atomic.LoadUint64(&f.itemHidden) + for i := 0; i < len(step.items); i++ { + blobs = append(blobs, values[step.items[i]-tail]) + } + got, err := f.RetrieveItems(step.items[0], uint64(len(step.items)), 100000) + if err != nil { + rt[i].err = err + } else { + if !reflect.DeepEqual(got, blobs) { + rt[i].err = fmt.Errorf("mismatch on retrieved values %v %v %v", got, blobs, step.items) + } + } + + case opTruncateHead: + f.truncateHead(step.target) + + length := atomic.LoadUint64(&f.items) - atomic.LoadUint64(&f.itemHidden) + values = values[:length] + + case opTruncateHeadAll: + f.truncateHead(step.target) + values = nil + + case opTruncateTail: + prev := atomic.LoadUint64(&f.itemHidden) + f.truncateTail(step.target) + + truncated := atomic.LoadUint64(&f.itemHidden) - prev + values = values[truncated:] + + case opTruncateTailAll: + f.truncateTail(step.target) + values = nil + } + // Abort the test on error. + if rt[i].err != nil { + return false + } + } + f.Close() + return true +} + +func TestRandom(t *testing.T) { + if err := quick.Check(runRandTest, nil); err != nil { + if cerr, ok := err.(*quick.CheckError); ok { + t.Fatalf("random test iteration %d failed: %s", cerr.Count, spew.Sdump(cerr.In)) + } + t.Fatal(err) + } +} diff --git a/core/rawdb/freezer_test.go b/core/rawdb/freezer_test.go index fa84f80306..b3fd3059e7 100644 --- a/core/rawdb/freezer_test.go +++ b/core/rawdb/freezer_test.go @@ -24,6 +24,7 @@ import ( "math/big" "math/rand" "os" + "path" "sync" "testing" @@ -186,7 +187,7 @@ func TestFreezerConcurrentModifyRetrieve(t *testing.T) { wg.Wait() } -// This test runs ModifyAncients and TruncateAncients concurrently with each other. +// This test runs ModifyAncients and TruncateHead concurrently with each other. func TestFreezerConcurrentModifyTruncate(t *testing.T) { f, dir := newFreezerForTesting(t, freezerTestTableDef) defer os.RemoveAll(dir) @@ -196,7 +197,7 @@ func TestFreezerConcurrentModifyTruncate(t *testing.T) { for i := 0; i < 1000; i++ { // First reset and write 100 items. - if err := f.TruncateAncients(0); err != nil { + if err := f.TruncateHead(0); err != nil { t.Fatal("truncate failed:", err) } _, err := f.ModifyAncients(func(op ethdb.AncientWriteOp) error { @@ -231,7 +232,7 @@ func TestFreezerConcurrentModifyTruncate(t *testing.T) { wg.Done() }() go func() { - truncateErr = f.TruncateAncients(10) + truncateErr = f.TruncateHead(10) wg.Done() }() go func() { @@ -253,6 +254,44 @@ func TestFreezerConcurrentModifyTruncate(t *testing.T) { } } +func TestFreezerReadonlyValidate(t *testing.T) { + tables := map[string]bool{"a": true, "b": true} + dir, err := ioutil.TempDir("", "freezer") + if err != nil { + t.Fatal(err) + } + defer os.RemoveAll(dir) + // Open non-readonly freezer and fill individual tables + // with different amount of data. + f, err := newFreezer(dir, "", false, 2049, tables) + if err != nil { + t.Fatal("can't open freezer", err) + } + var item = make([]byte, 1024) + aBatch := f.tables["a"].newBatch() + require.NoError(t, aBatch.AppendRaw(0, item)) + require.NoError(t, aBatch.AppendRaw(1, item)) + require.NoError(t, aBatch.AppendRaw(2, item)) + require.NoError(t, aBatch.commit()) + bBatch := f.tables["b"].newBatch() + require.NoError(t, bBatch.AppendRaw(0, item)) + require.NoError(t, bBatch.commit()) + if f.tables["a"].items != 3 { + t.Fatalf("unexpected number of items in table") + } + if f.tables["b"].items != 1 { + t.Fatalf("unexpected number of items in table") + } + require.NoError(t, f.Close()) + + // Re-openening as readonly should fail when validating + // table lengths. + f, err = newFreezer(dir, "", true, 2049, tables) + if err == nil { + t.Fatal("readonly freezer should fail with differing table lengths") + } +} + func newFreezerForTesting(t *testing.T, tables map[string]bool) (*freezer, string) { t.Helper() @@ -299,3 +338,92 @@ func checkAncientCount(t *testing.T, f *freezer, kind string, n uint64) { t.Errorf("Ancient(%q, %d) returned unexpected error %q", kind, index, err) } } + +func TestRenameWindows(t *testing.T) { + var ( + fname = "file.bin" + fname2 = "file2.bin" + data = []byte{1, 2, 3, 4} + data2 = []byte{2, 3, 4, 5} + data3 = []byte{3, 5, 6, 7} + dataLen = 4 + ) + + // Create 2 temp dirs + dir1, err := os.MkdirTemp("", "rename-test") + if err != nil { + t.Fatal(err) + } + defer os.Remove(dir1) + dir2, err := os.MkdirTemp("", "rename-test") + if err != nil { + t.Fatal(err) + } + defer os.Remove(dir2) + + // Create file in dir1 and fill with data + f, err := os.Create(path.Join(dir1, fname)) + if err != nil { + t.Fatal(err) + } + f2, err := os.Create(path.Join(dir1, fname2)) + if err != nil { + t.Fatal(err) + } + f3, err := os.Create(path.Join(dir2, fname2)) + if err != nil { + t.Fatal(err) + } + if _, err := f.Write(data); err != nil { + t.Fatal(err) + } + if _, err := f2.Write(data2); err != nil { + t.Fatal(err) + } + if _, err := f3.Write(data3); err != nil { + t.Fatal(err) + } + if err := f.Close(); err != nil { + t.Fatal(err) + } + if err := f2.Close(); err != nil { + t.Fatal(err) + } + if err := f3.Close(); err != nil { + t.Fatal(err) + } + if err := os.Rename(f.Name(), path.Join(dir2, fname)); err != nil { + t.Fatal(err) + } + if err := os.Rename(f2.Name(), path.Join(dir2, fname2)); err != nil { + t.Fatal(err) + } + + // Check file contents + f, err = os.Open(path.Join(dir2, fname)) + if err != nil { + t.Fatal(err) + } + defer f.Close() + defer os.Remove(f.Name()) + buf := make([]byte, dataLen) + if _, err := f.Read(buf); err != nil { + t.Fatal(err) + } + if !bytes.Equal(buf, data) { + t.Errorf("unexpected file contents. Got %v\n", buf) + } + + f, err = os.Open(path.Join(dir2, fname2)) + if err != nil { + t.Fatal(err) + } + defer f.Close() + defer os.Remove(f.Name()) + if _, err := f.Read(buf); err != nil { + t.Fatal(err) + } + if !bytes.Equal(buf, data2) { + t.Errorf("unexpected file contents. Got %v\n", buf) + } +} diff --git a/core/rawdb/freezer_utils.go b/core/rawdb/freezer_utils.go new file mode 100644 index 0000000000..5695fc0fa8 --- /dev/null +++ b/core/rawdb/freezer_utils.go @@ -0,0 +1,120 @@ +// Copyright 2022 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package rawdb + +import ( + "io" + "io/ioutil" + "os" + "path/filepath" +) + +// copyFrom copies data from 'srcPath' at offset 'offset' into 'destPath'. +// The 'destPath' is created if it doesn't exist, otherwise it is overwritten. +// Before the copy is executed, there is a callback can be registered to +// manipulate the dest file. +// It is perfectly valid to have destPath == srcPath. +func copyFrom(srcPath, destPath string, offset uint64, before func(f *os.File) error) error { + // Create a temp file in the same dir where we want it to wind up + f, err := ioutil.TempFile(filepath.Dir(destPath), "*") + if err != nil { + return err + } + fname := f.Name() + + // Clean up the leftover file + defer func() { + if f != nil { + f.Close() + } + os.Remove(fname) + }() + // Apply the given function if it's not nil before we copy + // the content from the src. + if before != nil { + if err := before(f); err != nil { + return err + } + } + // Open the source file + src, err := os.Open(srcPath) + if err != nil { + return err + } + if _, err = src.Seek(int64(offset), 0); err != nil { + src.Close() + return err + } + // io.Copy uses 32K buffer internally. + _, err = io.Copy(f, src) + if err != nil { + src.Close() + return err + } + // Rename the temporary file to the specified dest name. + // src may be same as dest, so needs to be closed before + // we do the final move. + src.Close() + + if err := f.Close(); err != nil { + return err + } + f = nil + + if err := os.Rename(fname, destPath); err != nil { + return err + } + return nil +} + +// openFreezerFileForAppend opens a freezer table file and seeks to the end +func openFreezerFileForAppend(filename string) (*os.File, error) { + // Open the file without the O_APPEND flag + // because it has differing behaviour during Truncate operations + // on different OS's + file, err := os.OpenFile(filename, os.O_RDWR|os.O_CREATE, 0644) + if err != nil { + return nil, err + } + // Seek to end for append + if _, err = file.Seek(0, io.SeekEnd); err != nil { + return nil, err + } + return file, nil +} + +// openFreezerFileForReadOnly opens a freezer table file for read only access +func openFreezerFileForReadOnly(filename string) (*os.File, error) { + return os.OpenFile(filename, os.O_RDONLY, 0644) +} + +// openFreezerFileTruncated opens a freezer table making sure it is truncated +func openFreezerFileTruncated(filename string) (*os.File, error) { + return os.OpenFile(filename, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644) +} + +// truncateFreezerFile resizes a freezer table file and seeks to the end +func truncateFreezerFile(file *os.File, size int64) error { + if err := file.Truncate(size); err != nil { + return err + } + // Seek to end for append + if _, err := file.Seek(0, io.SeekEnd); err != nil { + return err + } + return nil +} diff --git a/core/rawdb/freezer_utils_test.go b/core/rawdb/freezer_utils_test.go new file mode 100644 index 0000000000..de8087f9b9 --- /dev/null +++ b/core/rawdb/freezer_utils_test.go @@ -0,0 +1,76 @@ +// Copyright 2022 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package rawdb + +import ( + "bytes" + "io/ioutil" + "os" + "testing" +) + +func TestCopyFrom(t *testing.T) { + var ( + content = []byte{0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8} + prefix = []byte{0x9, 0xa, 0xb, 0xc, 0xd, 0xf} + ) + var cases = []struct { + src, dest string + offset uint64 + writePrefix bool + }{ + {"foo", "bar", 0, false}, + {"foo", "bar", 1, false}, + {"foo", "bar", 8, false}, + {"foo", "foo", 0, false}, + {"foo", "foo", 1, false}, + {"foo", "foo", 8, false}, + {"foo", "bar", 0, true}, + {"foo", "bar", 1, true}, + {"foo", "bar", 8, true}, + } + for _, c := range cases { + ioutil.WriteFile(c.src, content, 0644) + + if err := copyFrom(c.src, c.dest, c.offset, func(f *os.File) error { + if !c.writePrefix { + return nil + } + f.Write(prefix) + return nil + }); err != nil { + os.Remove(c.src) + t.Fatalf("Failed to copy %v", err) + } + + blob, err := ioutil.ReadFile(c.dest) + if err != nil { + os.Remove(c.src) + os.Remove(c.dest) + t.Fatalf("Failed to read %v", err) + } + want := content[c.offset:] + if c.writePrefix { + want = append(prefix, want...) + } + if !bytes.Equal(blob, want) { + t.Fatal("Unexpected value") + } + os.Remove(c.src) + os.Remove(c.dest) + } +} diff --git a/core/rawdb/key_length_iterator.go b/core/rawdb/key_length_iterator.go new file mode 100644 index 0000000000..d1c5af269a --- /dev/null +++ b/core/rawdb/key_length_iterator.go @@ -0,0 +1,47 @@ +// Copyright 2022 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package rawdb + +import "github.com/ethereum/go-ethereum/ethdb" + +// KeyLengthIterator is a wrapper for a database iterator that ensures only key-value pairs +// with a specific key length will be returned. +type KeyLengthIterator struct { + requiredKeyLength int + ethdb.Iterator +} + +// NewKeyLengthIterator returns a wrapped version of the iterator that will only return key-value +// pairs where keys with a specific key length will be returned. +func NewKeyLengthIterator(it ethdb.Iterator, keyLen int) ethdb.Iterator { + return &KeyLengthIterator{ + Iterator: it, + requiredKeyLength: keyLen, + } +} + +func (it *KeyLengthIterator) Next() bool { + // Return true as soon as a key with the required key length is discovered + for it.Iterator.Next() { + if len(it.Iterator.Key()) == it.requiredKeyLength { + return true + } + } + + // Return false when we exhaust the keys in the underlying iterator. + return false +} diff --git a/core/rawdb/key_length_iterator_test.go b/core/rawdb/key_length_iterator_test.go new file mode 100644 index 0000000000..654efc5b55 --- /dev/null +++ b/core/rawdb/key_length_iterator_test.go @@ -0,0 +1,60 @@ +// Copyright 2022 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package rawdb + +import ( + "encoding/binary" + "testing" +) + +func TestKeyLengthIterator(t *testing.T) { + db := NewMemoryDatabase() + + keyLen := 8 + expectedKeys := make(map[string]struct{}) + for i := 0; i < 100; i++ { + key := make([]byte, keyLen) + binary.BigEndian.PutUint64(key, uint64(i)) + if err := db.Put(key, []byte{0x1}); err != nil { + t.Fatal(err) + } + expectedKeys[string(key)] = struct{}{} + + longerKey := make([]byte, keyLen*2) + binary.BigEndian.PutUint64(longerKey, uint64(i)) + if err := db.Put(longerKey, []byte{0x1}); err != nil { + t.Fatal(err) + } + } + + it := NewKeyLengthIterator(db.NewIterator(nil, nil), keyLen) + for it.Next() { + key := it.Key() + _, exists := expectedKeys[string(key)] + if !exists { + t.Fatalf("Found unexpected key %d", binary.BigEndian.Uint64(key)) + } + delete(expectedKeys, string(key)) + if len(key) != keyLen { + t.Fatalf("Found unexpected key in key length iterator with length %d", len(key)) + } + } + + if len(expectedKeys) != 0 { + t.Fatalf("Expected all keys of length %d to be removed from expected keys during iteration", keyLen) + } +} diff --git a/core/rawdb/schema.go b/core/rawdb/schema.go index 942b8199e8..1533211fc7 100644 --- a/core/rawdb/schema.go +++ b/core/rawdb/schema.go @@ -63,6 +63,9 @@ var ( // snapshotSyncStatusKey tracks the snapshot sync status across restarts. snapshotSyncStatusKey = []byte("SnapshotSyncStatus") + // skeletonSyncStatusKey tracks the skeleton sync status across restarts. + skeletonSyncStatusKey = []byte("SkeletonSyncStatus") + // txIndexTailKey tracks the oldest block whose transactions have been indexed. txIndexTailKey = []byte("TransactionIndexTail") @@ -92,9 +95,11 @@ var ( SnapshotAccountPrefix = []byte("a") // SnapshotAccountPrefix + account hash -> account trie value SnapshotStoragePrefix = []byte("o") // SnapshotStoragePrefix + account hash + storage hash -> storage trie value CodePrefix = []byte("c") // CodePrefix + code hash -> account code + skeletonHeaderPrefix = []byte("S") // skeletonHeaderPrefix + num (uint64 big endian) -> header - PreimagePrefix = []byte("secure-key-") // PreimagePrefix + hash -> preimage - configPrefix = []byte("ethereum-config-") // config prefix for the db + PreimagePrefix = []byte("secure-key-") // PreimagePrefix + hash -> preimage + configPrefix = []byte("ethereum-config-") // config prefix for the db + genesisPrefix = []byte("ethereum-genesis-") // genesis state prefix for the db // Chain index prefixes (use `i` + single byte to avoid mixing data types). BloomBitsIndexPrefix = []byte("iB") // BloomBitsIndexPrefix is the data table of a chain indexer to track its progress @@ -211,6 +216,11 @@ func bloomBitsKey(bit uint, section uint64, hash common.Hash) []byte { return key } +// skeletonHeaderKey = skeletonHeaderPrefix + num (uint64 big endian) +func skeletonHeaderKey(number uint64) []byte { + return append(skeletonHeaderPrefix, encodeBlockNumber(number)...) +} + // preimageKey = PreimagePrefix + hash func preimageKey(hash common.Hash) []byte { return append(PreimagePrefix, hash.Bytes()...) @@ -234,3 +244,8 @@ func IsCodeKey(key []byte) (bool, []byte) { func configKey(hash common.Hash) []byte { return append(configPrefix, hash.Bytes()...) } + +// genesisKey = genesisPrefix + hash +func genesisKey(hash common.Hash) []byte { + return append(genesisPrefix, hash.Bytes()...) +} diff --git a/core/rawdb/table.go b/core/rawdb/table.go index 91fc31b660..5eadf5f7c1 100644 --- a/core/rawdb/table.go +++ b/core/rawdb/table.go @@ -74,6 +74,12 @@ func (t *table) Ancients() (uint64, error) { return t.db.Ancients() } +// Tail is a noop passthrough that just forwards the request to the underlying +// database. +func (t *table) Tail() (uint64, error) { + return t.db.Tail() +} + // AncientSize is a noop passthrough that just forwards the request to the underlying // database. func (t *table) AncientSize(kind string) (uint64, error) { @@ -89,10 +95,16 @@ func (t *table) ReadAncients(fn func(reader ethdb.AncientReader) error) (err err return t.db.ReadAncients(fn) } -// TruncateAncients is a noop passthrough that just forwards the request to the underlying +// TruncateHead is a noop passthrough that just forwards the request to the underlying // database. -func (t *table) TruncateAncients(items uint64) error { - return t.db.TruncateAncients(items) +func (t *table) TruncateHead(items uint64) error { + return t.db.TruncateHead(items) +} + +// TruncateTail is a noop passthrough that just forwards the request to the underlying +// database. +func (t *table) TruncateTail(items uint64) error { + return t.db.TruncateTail(items) } // Sync is a noop passthrough that just forwards the request to the underlying @@ -101,6 +113,12 @@ func (t *table) Sync() error { return t.db.Sync() } +// MigrateTable processes the entries in a given table in sequence +// converting them to a new format if they're of an old format. +func (t *table) MigrateTable(kind string, convert convertLegacyFn) error { + return t.db.MigrateTable(kind, convert) +} + // Put inserts the given value into the database at a prefixed version of the // provided key. func (t *table) Put(key []byte, value []byte) error { @@ -172,6 +190,18 @@ func (t *table) NewBatch() ethdb.Batch { return &tableBatch{t.db.NewBatch(), t.prefix} } +// NewBatchWithSize creates a write-only database batch with pre-allocated buffer. +func (t *table) NewBatchWithSize(size int) ethdb.Batch { + return &tableBatch{t.db.NewBatchWithSize(size), t.prefix} +} + +// NewSnapshot creates a database snapshot based on the current state. +// The created snapshot will not be affected by all following mutations +// happened on the database. +func (t *table) NewSnapshot() (ethdb.Snapshot, error) { + return t.db.NewSnapshot() +} + // tableBatch is a wrapper around a database batch that prefixes each key access // with a pre-configured string. type tableBatch struct { diff --git a/core/state/pruner/pruner.go b/core/state/pruner/pruner.go index 37772ca35c..4e3daac669 100644 --- a/core/state/pruner/pruner.go +++ b/core/state/pruner/pruner.go @@ -265,7 +265,7 @@ func (p *Pruner) Prune(root common.Hash) error { // Ensure the root is really present. The weak assumption // is the presence of root can indicate the presence of the // entire trie. - if blob := rawdb.ReadTrieNode(p.db, root); len(blob) == 0 { + if !rawdb.HasTrieNode(p.db, root) { // The special case is for clique based networks(rinkeby, goerli // and some other private networks), it's possible that two // consecutive blocks will have same root. In this case snapshot @@ -279,7 +279,7 @@ func (p *Pruner) Prune(root common.Hash) error { // as the pruning target. var found bool for i := len(layers) - 2; i >= 2; i-- { - if blob := rawdb.ReadTrieNode(p.db, layers[i].Root()); len(blob) != 0 { + if rawdb.HasTrieNode(p.db, layers[i].Root()) { root = layers[i].Root() found = true log.Info("Selecting middle-layer as the pruning target", "root", root, "depth", i) diff --git a/core/state/snapshot/journal.go b/core/state/snapshot/journal.go index 5cfb9a9f2a..6836a57409 100644 --- a/core/state/snapshot/journal.go +++ b/core/state/snapshot/journal.go @@ -66,6 +66,29 @@ type journalStorage struct { Vals [][]byte } +func ParseGeneratorStatus(generatorBlob []byte) string { + if len(generatorBlob) == 0 { + return "" + } + var generator journalGenerator + if err := rlp.DecodeBytes(generatorBlob, &generator); err != nil { + log.Warn("failed to decode snapshot generator", "err", err) + return "" + } + // Figure out whether we're after or within an account + var m string + switch marker := generator.Marker; len(marker) { + case common.HashLength: + m = fmt.Sprintf("at %#x", marker) + case 2 * common.HashLength: + m = fmt.Sprintf("in %#x at %#x", marker[:common.HashLength], marker[common.HashLength:]) + default: + m = fmt.Sprintf("%#x", marker) + } + return fmt.Sprintf(`Done: %v, Accounts: %d, Slots: %d, Storage: %d, Marker: %s`, + generator.Done, generator.Accounts, generator.Slots, generator.Storage, m) +} + // loadAndParseJournal tries to parse the snapshot journal in latest format. func loadAndParseJournal(db ethdb.KeyValueStore, base *diskLayer) (snapshot, journalGenerator, error) { // Retrieve the disk layer generator. It must exist, no matter the diff --git a/core/state/snapshot/snapshot.go b/core/state/snapshot/snapshot.go index 6ee6b06bb5..76200851e4 100644 --- a/core/state/snapshot/snapshot.go +++ b/core/state/snapshot/snapshot.go @@ -546,20 +546,19 @@ func diffToDisk(bottom *diffLayer) *diskLayer { it := rawdb.IterateStorageSnapshots(base.diskdb, hash) for it.Next() { - if key := it.Key(); len(key) == 65 { // TODO(karalabe): Yuck, we should move this into the iterator - batch.Delete(key) - base.cache.Del(key[1:]) - snapshotFlushStorageItemMeter.Mark(1) + key := it.Key() + batch.Delete(key) + base.cache.Del(key[1:]) + snapshotFlushStorageItemMeter.Mark(1) - // Ensure we don't delete too much data blindly (contract can be - // huge). It's ok to flush, the root will go missing in case of a - // crash and we'll detect and regenerate the snapshot. - if batch.ValueSize() > ethdb.IdealBatchSize { - if err := batch.Write(); err != nil { - log.Crit("Failed to write storage deletions", "err", err) - } - batch.Reset() + // Ensure we don't delete too much data blindly (contract can be + // huge). It's ok to flush, the root will go missing in case of a + // crash and we'll detect and regenerate the snapshot. + if batch.ValueSize() > ethdb.IdealBatchSize { + if err := batch.Write(); err != nil { + log.Crit("Failed to write storage deletions", "err", err) } + batch.Reset() } } it.Release() diff --git a/core/state/state_object.go b/core/state/state_object.go index 138fcbdecd..bcb6dca4f5 100644 --- a/core/state/state_object.go +++ b/core/state/state_object.go @@ -198,25 +198,10 @@ func (s *stateObject) GetCommittedState(db Database, key common.Hash) common.Has } // If no live objects are available, attempt to use snapshots var ( - enc []byte - err error - meter *time.Duration + enc []byte + err error ) - readStart := time.Now() - if metrics.EnabledExpensive { - // If the snap is 'under construction', the first lookup may fail. If that - // happens, we don't want to double-count the time elapsed. Thus this - // dance with the metering. - defer func() { - if meter != nil { - *meter += time.Since(readStart) - } - }() - } if s.db.snap != nil { - if metrics.EnabledExpensive { - meter = &s.db.SnapshotStorageReads - } // If the object was destructed in *this* block (and potentially resurrected), // the storage has been cleared out, and we should *not* consult the previous // snapshot about any storage values. The only possible alternatives are: @@ -226,20 +211,20 @@ func (s *stateObject) GetCommittedState(db Database, key common.Hash) common.Has if _, destructed := s.db.snapDestructs[s.addrHash]; destructed { return common.Hash{} } + start := time.Now() enc, err = s.db.snap.Storage(s.addrHash, crypto.Keccak256Hash(key.Bytes())) + if metrics.EnabledExpensive { + s.db.SnapshotStorageReads += time.Since(start) + } } // If the snapshot is unavailable or reading from it fails, load from the database. if s.db.snap == nil || err != nil { - if meter != nil { - // If we already spent time checking the snapshot, account for it - // and reset the readStart - *meter += time.Since(readStart) - readStart = time.Now() - } + start := time.Now() + enc, err = s.getTrie(db).TryGet(key.Bytes()) if metrics.EnabledExpensive { - meter = &s.db.StorageReads + s.db.StorageReads += time.Since(start) } - if enc, err = s.getTrie(db).TryGet(key.Bytes()); err != nil { + if err != nil { s.setError(err) return common.Hash{} } diff --git a/core/state/statedb.go b/core/state/statedb.go index e3541339ea..1d31cf470b 100644 --- a/core/state/statedb.go +++ b/core/state/statedb.go @@ -506,16 +506,14 @@ func (s *StateDB) getDeletedStateObject(addr common.Address) *stateObject { return obj } // If no live objects are available, attempt to use snapshots - var ( - data *types.StateAccount - err error - ) + var data *types.StateAccount if s.snap != nil { + start := time.Now() + acc, err := s.snap.Account(crypto.HashData(s.hasher, addr.Bytes())) if metrics.EnabledExpensive { - defer func(start time.Time) { s.SnapshotAccountReads += time.Since(start) }(time.Now()) + s.SnapshotAccountReads += time.Since(start) } - var acc *snapshot.Account - if acc, err = s.snap.Account(crypto.HashData(s.hasher, addr.Bytes())); err == nil { + if err == nil { if acc == nil { return nil } @@ -534,11 +532,12 @@ func (s *StateDB) getDeletedStateObject(addr common.Address) *stateObject { } } // If snapshot unavailable or reading from it failed, load from the database - if s.snap == nil || err != nil { - if metrics.EnabledExpensive { - defer func(start time.Time) { s.AccountReads += time.Since(start) }(time.Now()) - } + if data == nil { + start := time.Now() enc, err := s.trie.TryGet(addr.Bytes()) + if metrics.EnabledExpensive { + s.AccountReads += time.Since(start) + } if err != nil { s.setError(fmt.Errorf("getDeleteStateObject (%x) error: %v", addr.Bytes(), err)) return nil @@ -885,7 +884,6 @@ func (s *StateDB) IntermediateRoot(deleteEmptyObjects bool) common.Hash { func (s *StateDB) Prepare(thash common.Hash, ti int) { s.thash = thash s.txIndex = ti - s.accessList = newAccessList() } func (s *StateDB) clearJournalAndRefund() { @@ -995,6 +993,9 @@ func (s *StateDB) Commit(deleteEmptyObjects bool) (common.Hash, error) { // // This method should only be called if Berlin/2929+2930 is applicable at the current number. func (s *StateDB) PrepareAccessList(sender common.Address, dst *common.Address, precompiles []common.Address, list types.AccessList) { + // Clear out any leftover from previous executions + s.accessList = newAccessList() + s.AddAddressToAccessList(sender) if dst != nil { s.AddAddressToAccessList(*dst) diff --git a/core/state_transition.go b/core/state_transition.go index 81c56fb42f..e867d032bf 100644 --- a/core/state_transition.go +++ b/core/state_transition.go @@ -313,7 +313,7 @@ func (st *StateTransition) TransitionDb() (*ExecutionResult, error) { } // Set up the initial access list. - if rules := st.evm.ChainConfig().Rules(st.evm.Context.BlockNumber); rules.IsBerlin { + if rules := st.evm.ChainConfig().Rules(st.evm.Context.BlockNumber, st.evm.Context.Random != nil); rules.IsBerlin { st.state.PrepareAccessList(msg.From(), msg.To(), vm.ActivePrecompiles(rules), msg.AccessList()) } var ( diff --git a/core/types/access_list_tx.go b/core/types/access_list_tx.go index ee5f194b77..8ad5e739e9 100644 --- a/core/types/access_list_tx.go +++ b/core/types/access_list_tx.go @@ -22,7 +22,7 @@ import ( "github.com/ethereum/go-ethereum/common" ) -//go:generate gencodec -type AccessTuple -out gen_access_tuple.go +//go:generate go run github.com/fjl/gencodec@latest -type AccessTuple -out gen_access_tuple.go // AccessList is an EIP-2930 access list. type AccessList []AccessTuple diff --git a/core/types/block.go b/core/types/block.go index f38c55c1ff..314990dc99 100644 --- a/core/types/block.go +++ b/core/types/block.go @@ -63,7 +63,8 @@ func (n *BlockNonce) UnmarshalText(input []byte) error { return hexutil.UnmarshalFixedText("BlockNonce", input, n[:]) } -//go:generate gencodec -type Header -field-override headerMarshaling -out gen_header_json.go +//go:generate go run github.com/fjl/gencodec@latest -type Header -field-override headerMarshaling -out gen_header_json.go +//go:generate go run ../../rlp/rlpgen -type Header -out gen_header_rlp.go // Header represents a block header in the Ethereum blockchain. type Header struct { diff --git a/core/types/block_test.go b/core/types/block_test.go index 5cdea3fc06..aa1db2f4fa 100644 --- a/core/types/block_test.go +++ b/core/types/block_test.go @@ -285,7 +285,7 @@ func makeBenchBlock() *Block { func TestRlpDecodeParentHash(t *testing.T) { // A minimum one want := common.HexToHash("0x112233445566778899001122334455667788990011223344556677889900aabb") - if rlpData, err := rlp.EncodeToBytes(Header{ParentHash: want}); err != nil { + if rlpData, err := rlp.EncodeToBytes(&Header{ParentHash: want}); err != nil { t.Fatal(err) } else { if have := HeaderParentHashFromRLP(rlpData); have != want { @@ -299,7 +299,7 @@ func TestRlpDecodeParentHash(t *testing.T) { // | BaseFee | dynamic| *big.Int | 64 bits | mainnetTd := new(big.Int) mainnetTd.SetString("5ad3c2c71bbff854908", 16) - if rlpData, err := rlp.EncodeToBytes(Header{ + if rlpData, err := rlp.EncodeToBytes(&Header{ ParentHash: want, Difficulty: mainnetTd, Number: new(big.Int).SetUint64(math.MaxUint64), @@ -316,7 +316,7 @@ func TestRlpDecodeParentHash(t *testing.T) { { // The rlp-encoding of the heder belowCauses _total_ length of 65540, // which is the first to blow the fast-path. - h := Header{ + h := &Header{ ParentHash: want, Extra: make([]byte, 65041), } diff --git a/core/types/gen_account_rlp.go b/core/types/gen_account_rlp.go new file mode 100644 index 0000000000..5181d88411 --- /dev/null +++ b/core/types/gen_account_rlp.go @@ -0,0 +1,27 @@ +// Code generated by rlpgen. DO NOT EDIT. + +//go:build !norlpgen +// +build !norlpgen + +package types + +import "github.com/ethereum/go-ethereum/rlp" +import "io" + +func (obj *StateAccount) EncodeRLP(_w io.Writer) error { + w := rlp.NewEncoderBuffer(_w) + _tmp0 := w.List() + w.WriteUint64(obj.Nonce) + if obj.Balance == nil { + w.Write(rlp.EmptyString) + } else { + if obj.Balance.Sign() == -1 { + return rlp.ErrNegativeBigInt + } + w.WriteBigInt(obj.Balance) + } + w.WriteBytes(obj.Root[:]) + w.WriteBytes(obj.CodeHash) + w.ListEnd(_tmp0) + return w.Flush() +} diff --git a/core/types/gen_header_rlp.go b/core/types/gen_header_rlp.go new file mode 100644 index 0000000000..e1a6873318 --- /dev/null +++ b/core/types/gen_header_rlp.go @@ -0,0 +1,56 @@ +// Code generated by rlpgen. DO NOT EDIT. + +//go:build !norlpgen +// +build !norlpgen + +package types + +import "github.com/ethereum/go-ethereum/rlp" +import "io" + +func (obj *Header) EncodeRLP(_w io.Writer) error { + w := rlp.NewEncoderBuffer(_w) + _tmp0 := w.List() + w.WriteBytes(obj.ParentHash[:]) + w.WriteBytes(obj.UncleHash[:]) + w.WriteBytes(obj.Coinbase[:]) + w.WriteBytes(obj.Root[:]) + w.WriteBytes(obj.TxHash[:]) + w.WriteBytes(obj.ReceiptHash[:]) + w.WriteBytes(obj.Bloom[:]) + if obj.Difficulty == nil { + w.Write(rlp.EmptyString) + } else { + if obj.Difficulty.Sign() == -1 { + return rlp.ErrNegativeBigInt + } + w.WriteBigInt(obj.Difficulty) + } + if obj.Number == nil { + w.Write(rlp.EmptyString) + } else { + if obj.Number.Sign() == -1 { + return rlp.ErrNegativeBigInt + } + w.WriteBigInt(obj.Number) + } + w.WriteUint64(obj.GasLimit) + w.WriteUint64(obj.GasUsed) + w.WriteUint64(obj.Time) + w.WriteBytes(obj.Extra) + w.WriteBytes(obj.MixDigest[:]) + w.WriteBytes(obj.Nonce[:]) + _tmp1 := obj.BaseFee != nil + if _tmp1 { + if obj.BaseFee == nil { + w.Write(rlp.EmptyString) + } else { + if obj.BaseFee.Sign() == -1 { + return rlp.ErrNegativeBigInt + } + w.WriteBigInt(obj.BaseFee) + } + } + w.ListEnd(_tmp0) + return w.Flush() +} diff --git a/core/types/gen_log_rlp.go b/core/types/gen_log_rlp.go new file mode 100644 index 0000000000..4a6c6b0094 --- /dev/null +++ b/core/types/gen_log_rlp.go @@ -0,0 +1,23 @@ +// Code generated by rlpgen. DO NOT EDIT. + +//go:build !norlpgen +// +build !norlpgen + +package types + +import "github.com/ethereum/go-ethereum/rlp" +import "io" + +func (obj *rlpLog) EncodeRLP(_w io.Writer) error { + w := rlp.NewEncoderBuffer(_w) + _tmp0 := w.List() + w.WriteBytes(obj.Address[:]) + _tmp1 := w.List() + for _, _tmp2 := range obj.Topics { + w.WriteBytes(_tmp2[:]) + } + w.ListEnd(_tmp1) + w.WriteBytes(obj.Data) + w.ListEnd(_tmp0) + return w.Flush() +} diff --git a/core/types/legacy.go b/core/types/legacy.go new file mode 100644 index 0000000000..9254381b1e --- /dev/null +++ b/core/types/legacy.go @@ -0,0 +1,53 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package types + +import ( + "errors" + + "github.com/ethereum/go-ethereum/rlp" +) + +// IsLegacyStoredReceipts tries to parse the RLP-encoded blob +// first as an array of v3 stored receipt, then v4 stored receipt and +// returns true if successful. +func IsLegacyStoredReceipts(raw []byte) (bool, error) { + var v3 []v3StoredReceiptRLP + if err := rlp.DecodeBytes(raw, &v3); err == nil { + return true, nil + } + var v4 []v4StoredReceiptRLP + if err := rlp.DecodeBytes(raw, &v4); err == nil { + return true, nil + } + var v5 []storedReceiptRLP + // Check to see valid fresh stored receipt + if err := rlp.DecodeBytes(raw, &v5); err == nil { + return false, nil + } + return false, errors.New("value is not a valid receipt encoding") +} + +// ConvertLegacyStoredReceipts takes the RLP encoding of an array of legacy +// stored receipts and returns a fresh RLP-encoded stored receipt. +func ConvertLegacyStoredReceipts(raw []byte) ([]byte, error) { + var receipts []ReceiptForStorage + if err := rlp.DecodeBytes(raw, &receipts); err != nil { + return nil, err + } + return rlp.EncodeToBytes(&receipts) +} diff --git a/core/types/log.go b/core/types/log.go index 88274e39da..b27c7ccbd3 100644 --- a/core/types/log.go +++ b/core/types/log.go @@ -24,7 +24,7 @@ import ( "github.com/ethereum/go-ethereum/rlp" ) -//go:generate gencodec -type Log -field-override logMarshaling -out gen_log_json.go +//go:generate go run github.com/fjl/gencodec@latest -type Log -field-override logMarshaling -out gen_log_json.go // Log represents a contract log event. These events are generated by the LOG opcode and // stored/indexed by the node. @@ -62,15 +62,14 @@ type logMarshaling struct { Index hexutil.Uint } +//go:generate go run ../../rlp/rlpgen -type rlpLog -out gen_log_rlp.go + type rlpLog struct { Address common.Address Topics []common.Hash Data []byte } -// rlpStorageLog is the storage encoding of a log. -type rlpStorageLog rlpLog - // legacyRlpStorageLog is the previous storage encoding of a log including some redundant fields. type legacyRlpStorageLog struct { Address common.Address @@ -85,7 +84,8 @@ type legacyRlpStorageLog struct { // EncodeRLP implements rlp.Encoder. func (l *Log) EncodeRLP(w io.Writer) error { - return rlp.Encode(w, rlpLog{Address: l.Address, Topics: l.Topics, Data: l.Data}) + rl := rlpLog{Address: l.Address, Topics: l.Topics, Data: l.Data} + return rlp.Encode(w, &rl) } // DecodeRLP implements rlp.Decoder. @@ -104,11 +104,8 @@ type LogForStorage Log // EncodeRLP implements rlp.Encoder. func (l *LogForStorage) EncodeRLP(w io.Writer) error { - return rlp.Encode(w, rlpStorageLog{ - Address: l.Address, - Topics: l.Topics, - Data: l.Data, - }) + rl := rlpLog{Address: l.Address, Topics: l.Topics, Data: l.Data} + return rlp.Encode(w, &rl) } // DecodeRLP implements rlp.Decoder. @@ -119,7 +116,7 @@ func (l *LogForStorage) DecodeRLP(s *rlp.Stream) error { if err != nil { return err } - var dec rlpStorageLog + var dec rlpLog err = rlp.DecodeBytes(blob, &dec) if err == nil { *l = LogForStorage{ diff --git a/core/types/receipt.go b/core/types/receipt.go index c3588990c0..03e2d7500e 100644 --- a/core/types/receipt.go +++ b/core/types/receipt.go @@ -31,15 +31,14 @@ import ( "github.com/ethereum/go-ethereum/rlp" ) -//go:generate gencodec -type Receipt -field-override receiptMarshaling -out gen_receipt_json.go +//go:generate go run github.com/fjl/gencodec@latest -type Receipt -field-override receiptMarshaling -out gen_receipt_json.go var ( receiptStatusFailedRLP = []byte{} receiptStatusSuccessfulRLP = []byte{0x01} ) -// This error is returned when a typed receipt is decoded, but the string is empty. -var errEmptyTypedReceipt = errors.New("empty typed receipt bytes") +var errShortTypedReceipt = errors.New("typed receipt too short") const ( // ReceiptStatusFailed is the status code of a transaction if execution failed. @@ -182,26 +181,13 @@ func (r *Receipt) DecodeRLP(s *rlp.Stream) error { } r.Type = LegacyTxType return r.setFromRLP(dec) - case kind == rlp.String: + default: // It's an EIP-2718 typed tx receipt. b, err := s.Bytes() if err != nil { return err } - if len(b) == 0 { - return errEmptyTypedReceipt - } - r.Type = b[0] - if r.Type == AccessListTxType || r.Type == DynamicFeeTxType { - var dec receiptRLP - if err := rlp.DecodeBytes(b[1:], &dec); err != nil { - return err - } - return r.setFromRLP(dec) - } - return ErrTxTypeNotSupported - default: - return rlp.ErrExpectedList + return r.decodeTyped(b) } } @@ -224,8 +210,8 @@ func (r *Receipt) UnmarshalBinary(b []byte) error { // decodeTyped decodes a typed receipt from the canonical format. func (r *Receipt) decodeTyped(b []byte) error { - if len(b) == 0 { - return errEmptyTypedReceipt + if len(b) <= 1 { + return errShortTypedReceipt } switch b[0] { case DynamicFeeTxType, AccessListTxType: @@ -287,16 +273,20 @@ type ReceiptForStorage Receipt // EncodeRLP implements rlp.Encoder, and flattens all content fields of a receipt // into an RLP stream. -func (r *ReceiptForStorage) EncodeRLP(w io.Writer) error { - enc := &storedReceiptRLP{ - PostStateOrStatus: (*Receipt)(r).statusEncoding(), - CumulativeGasUsed: r.CumulativeGasUsed, - Logs: make([]*LogForStorage, len(r.Logs)), +func (r *ReceiptForStorage) EncodeRLP(_w io.Writer) error { + w := rlp.NewEncoderBuffer(_w) + outerList := w.List() + w.WriteBytes((*Receipt)(r).statusEncoding()) + w.WriteUint64(r.CumulativeGasUsed) + logList := w.List() + for _, log := range r.Logs { + if err := rlp.Encode(w, log); err != nil { + return err + } } - for i, log := range r.Logs { - enc.Logs[i] = (*LogForStorage)(log) - } - return rlp.Encode(w, enc) + w.ListEnd(logList) + w.ListEnd(outerList) + return w.Flush() } // DecodeRLP implements rlp.Decoder, and loads both consensus and implementation diff --git a/core/types/receipt_test.go b/core/types/receipt_test.go index 613559a658..bba18d2a7b 100644 --- a/core/types/receipt_test.go +++ b/core/types/receipt_test.go @@ -86,7 +86,7 @@ func TestDecodeEmptyTypedReceipt(t *testing.T) { input := []byte{0x80} var r Receipt err := rlp.DecodeBytes(input, &r) - if err != errEmptyTypedReceipt { + if err != errShortTypedReceipt { t.Fatal("wrong error:", err) } } diff --git a/core/types/state_account.go b/core/types/state_account.go index 68804bf311..3b01be4519 100644 --- a/core/types/state_account.go +++ b/core/types/state_account.go @@ -22,6 +22,8 @@ import ( "github.com/ethereum/go-ethereum/common" ) +//go:generate go run ../../rlp/rlpgen -type StateAccount -out gen_account_rlp.go + // StateAccount is the Ethereum consensus representation of accounts. // These objects are stored in the main account trie. type StateAccount struct { diff --git a/core/types/transaction.go b/core/types/transaction.go index 83f1766e67..29820a0d78 100644 --- a/core/types/transaction.go +++ b/core/types/transaction.go @@ -37,7 +37,7 @@ var ( ErrInvalidTxType = errors.New("transaction type not valid in this context") ErrTxTypeNotSupported = errors.New("transaction type not supported") ErrGasFeeCapTooLow = errors.New("fee cap less than base fee") - errEmptyTypedTx = errors.New("empty typed transaction bytes") + errShortTypedTx = errors.New("typed transaction too short") ) // Transaction types. @@ -134,7 +134,7 @@ func (tx *Transaction) DecodeRLP(s *rlp.Stream) error { tx.setDecoded(&inner, int(rlp.ListSize(size))) } return err - case kind == rlp.String: + default: // It's an EIP-2718 typed TX envelope. var b []byte if b, err = s.Bytes(); err != nil { @@ -145,8 +145,6 @@ func (tx *Transaction) DecodeRLP(s *rlp.Stream) error { tx.setDecoded(inner, len(b)) } return err - default: - return rlp.ErrExpectedList } } @@ -174,8 +172,8 @@ func (tx *Transaction) UnmarshalBinary(b []byte) error { // decodeTyped decodes a typed transaction from the canonical format. func (tx *Transaction) decodeTyped(b []byte) (TxData, error) { - if len(b) == 0 { - return nil, errEmptyTypedTx + if len(b) <= 1 { + return nil, errShortTypedTx } switch b[0] { case AccessListTxType: diff --git a/core/types/transaction_test.go b/core/types/transaction_test.go index 58c95071b2..a4755675cd 100644 --- a/core/types/transaction_test.go +++ b/core/types/transaction_test.go @@ -76,7 +76,7 @@ func TestDecodeEmptyTypedTx(t *testing.T) { input := []byte{0x80} var tx Transaction err := rlp.DecodeBytes(input, &tx) - if err != errEmptyTypedTx { + if err != errShortTypedTx { t.Fatal("wrong error:", err) } } diff --git a/core/vm/evm.go b/core/vm/evm.go index 2c7880b3bf..dd55618bf8 100644 --- a/core/vm/evm.go +++ b/core/vm/evm.go @@ -75,6 +75,7 @@ type BlockContext struct { Time *big.Int // Provides information for TIME Difficulty *big.Int // Provides information for DIFFICULTY BaseFee *big.Int // Provides information for BASEFEE + Random *common.Hash // Provides information for RANDOM } // TxContext provides the EVM with information about a transaction. @@ -131,7 +132,7 @@ func NewEVM(blockCtx BlockContext, txCtx TxContext, statedb StateDB, chainConfig StateDB: statedb, Config: config, chainConfig: chainConfig, - chainRules: chainConfig.Rules(blockCtx.BlockNumber), + chainRules: chainConfig.Rules(blockCtx.BlockNumber, blockCtx.Random != nil), } evm.interpreter = NewEVMInterpreter(evm, config) return evm diff --git a/core/vm/instructions.go b/core/vm/instructions.go index 4eda3bf531..db507c4811 100644 --- a/core/vm/instructions.go +++ b/core/vm/instructions.go @@ -477,6 +477,12 @@ func opDifficulty(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) return nil, nil } +func opRandom(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]byte, error) { + v := new(uint256.Int).SetBytes((interpreter.evm.Context.Random.Bytes())) + scope.Stack.push(v) + return nil, nil +} + func opGasLimit(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]byte, error) { scope.Stack.push(new(uint256.Int).SetUint64(interpreter.evm.Context.GasLimit)) return nil, nil diff --git a/core/vm/instructions_test.go b/core/vm/instructions_test.go index e67acd8327..36589a1269 100644 --- a/core/vm/instructions_test.go +++ b/core/vm/instructions_test.go @@ -21,6 +21,7 @@ import ( "encoding/json" "fmt" "io/ioutil" + "math/big" "testing" "github.com/ethereum/go-ethereum/common" @@ -654,3 +655,36 @@ func TestCreate2Addreses(t *testing.T) { } } } + +func TestRandom(t *testing.T) { + type testcase struct { + name string + random common.Hash + } + + for _, tt := range []testcase{ + {name: "empty hash", random: common.Hash{}}, + {name: "1", random: common.Hash{0}}, + {name: "emptyCodeHash", random: emptyCodeHash}, + {name: "hash(0x010203)", random: crypto.Keccak256Hash([]byte{0x01, 0x02, 0x03})}, + } { + var ( + env = NewEVM(BlockContext{Random: &tt.random}, TxContext{}, nil, params.TestChainConfig, Config{}) + stack = newstack() + pc = uint64(0) + evmInterpreter = env.interpreter + ) + opRandom(&pc, evmInterpreter, &ScopeContext{nil, stack, nil}) + if len(stack.data) != 1 { + t.Errorf("Expected one item on stack after %v, got %d: ", tt.name, len(stack.data)) + } + actual := stack.pop() + expected, overflow := uint256.FromBig(new(big.Int).SetBytes(tt.random.Bytes())) + if overflow { + t.Errorf("Testcase %v: invalid overflow", tt.name) + } + if actual.Cmp(expected) != 0 { + t.Errorf("Testcase %v: expected %x, got %x", tt.name, expected, actual) + } + } +} diff --git a/core/vm/interpreter.go b/core/vm/interpreter.go index 1660e3ce0f..21e3c914e1 100644 --- a/core/vm/interpreter.go +++ b/core/vm/interpreter.go @@ -69,6 +69,8 @@ func NewEVMInterpreter(evm *EVM, cfg Config) *EVMInterpreter { // If jump table was not initialised we set the default one. if cfg.JumpTable == nil { switch { + case evm.chainRules.IsMerge: + cfg.JumpTable = &mergeInstructionSet case evm.chainRules.IsLondon: cfg.JumpTable = &londonInstructionSet case evm.chainRules.IsBerlin: diff --git a/core/vm/jump_table.go b/core/vm/jump_table.go index 6dea5d81f3..eef3b53d8c 100644 --- a/core/vm/jump_table.go +++ b/core/vm/jump_table.go @@ -54,6 +54,7 @@ var ( istanbulInstructionSet = newIstanbulInstructionSet() berlinInstructionSet = newBerlinInstructionSet() londonInstructionSet = newLondonInstructionSet() + mergeInstructionSet = newMergeInstructionSet() ) // JumpTable contains the EVM opcodes supported at a given fork. @@ -77,6 +78,17 @@ func validate(jt JumpTable) JumpTable { return jt } +func newMergeInstructionSet() JumpTable { + instructionSet := newLondonInstructionSet() + instructionSet[RANDOM] = &operation{ + execute: opRandom, + constantGas: GasQuickStep, + minStack: minStack(0, 1), + maxStack: maxStack(0, 1), + } + return validate(instructionSet) +} + // newLondonInstructionSet returns the frontier, homestead, byzantium, // contantinople, istanbul, petersburg, berlin and london instructions. func newLondonInstructionSet() JumpTable { diff --git a/core/vm/opcodes.go b/core/vm/opcodes.go index a1833e5109..ba70fa09d4 100644 --- a/core/vm/opcodes.go +++ b/core/vm/opcodes.go @@ -95,6 +95,7 @@ const ( TIMESTAMP OpCode = 0x42 NUMBER OpCode = 0x43 DIFFICULTY OpCode = 0x44 + RANDOM OpCode = 0x44 // Same as DIFFICULTY GASLIMIT OpCode = 0x45 CHAINID OpCode = 0x46 SELFBALANCE OpCode = 0x47 @@ -275,7 +276,7 @@ var opCodeToString = map[OpCode]string{ COINBASE: "COINBASE", TIMESTAMP: "TIMESTAMP", NUMBER: "NUMBER", - DIFFICULTY: "DIFFICULTY", + DIFFICULTY: "DIFFICULTY", // TODO (MariusVanDerWijden) rename to RANDOM post merge GASLIMIT: "GASLIMIT", CHAINID: "CHAINID", SELFBALANCE: "SELFBALANCE", diff --git a/core/vm/operations_acl.go b/core/vm/operations_acl.go index 483226eefa..551e1f5f11 100644 --- a/core/vm/operations_acl.go +++ b/core/vm/operations_acl.go @@ -214,7 +214,7 @@ var ( // see gasSStoreEIP2200(...) in core/vm/gas_table.go for more info about how EIP 2200 is specified gasSStoreEIP2929 = makeGasSStoreFunc(params.SstoreClearsScheduleRefundEIP2200) - // gasSStoreEIP2539 implements gas cost for SSTORE according to EPI-2539 + // gasSStoreEIP2539 implements gas cost for SSTORE according to EIP-2539 // Replace `SSTORE_CLEARS_SCHEDULE` with `SSTORE_RESET_GAS + ACCESS_LIST_STORAGE_KEY_COST` (4,800) gasSStoreEIP3529 = makeGasSStoreFunc(params.SstoreClearsScheduleRefundEIP3529) ) diff --git a/core/vm/runtime/runtime.go b/core/vm/runtime/runtime.go index 103ce3e175..7861fb92db 100644 --- a/core/vm/runtime/runtime.go +++ b/core/vm/runtime/runtime.go @@ -118,7 +118,7 @@ func Execute(code, input []byte, cfg *Config) ([]byte, *state.StateDB, error) { vmenv = NewEnv(cfg) sender = vm.AccountRef(cfg.Origin) ) - if rules := cfg.ChainConfig.Rules(vmenv.Context.BlockNumber); rules.IsBerlin { + if rules := cfg.ChainConfig.Rules(vmenv.Context.BlockNumber, vmenv.Context.Random != nil); rules.IsBerlin { cfg.State.PrepareAccessList(cfg.Origin, &address, vm.ActivePrecompiles(rules), nil) } cfg.State.CreateAccount(address) @@ -150,7 +150,7 @@ func Create(input []byte, cfg *Config) ([]byte, common.Address, uint64, error) { vmenv = NewEnv(cfg) sender = vm.AccountRef(cfg.Origin) ) - if rules := cfg.ChainConfig.Rules(vmenv.Context.BlockNumber); rules.IsBerlin { + if rules := cfg.ChainConfig.Rules(vmenv.Context.BlockNumber, vmenv.Context.Random != nil); rules.IsBerlin { cfg.State.PrepareAccessList(cfg.Origin, nil, vm.ActivePrecompiles(rules), nil) } // Call the code with the given configuration. @@ -176,7 +176,7 @@ func Call(address common.Address, input []byte, cfg *Config) ([]byte, uint64, er sender := cfg.State.GetOrNewStateObject(cfg.Origin) statedb := cfg.State - if rules := cfg.ChainConfig.Rules(vmenv.Context.BlockNumber); rules.IsBerlin { + if rules := cfg.ChainConfig.Rules(vmenv.Context.BlockNumber, vmenv.Context.Random != nil); rules.IsBerlin { statedb.PrepareAccessList(cfg.Origin, &address, vm.ActivePrecompiles(rules), nil) } // Call the code with the given configuration. diff --git a/crypto/bls12381/bls12_381.go b/crypto/bls12381/bls12_381.go index e204a927d1..1c1c97765f 100644 --- a/crypto/bls12381/bls12_381.go +++ b/crypto/bls12381/bls12_381.go @@ -119,105 +119,105 @@ var g2One = PointG2{ */ var frobeniusCoeffs61 = [6]fe2{ - fe2{ + { fe{0x760900000002fffd, 0xebf4000bc40c0002, 0x5f48985753c758ba, 0x77ce585370525745, 0x5c071a97a256ec6d, 0x15f65ec3fa80e493}, fe{0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000}, }, - fe2{ + { fe{0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000}, fe{0xcd03c9e48671f071, 0x5dab22461fcda5d2, 0x587042afd3851b95, 0x8eb60ebe01bacb9e, 0x03f97d6e83d050d2, 0x18f0206554638741}, }, - fe2{ + { fe{0x30f1361b798a64e8, 0xf3b8ddab7ece5a2a, 0x16a8ca3ac61577f7, 0xc26a2ff874fd029b, 0x3636b76660701c6e, 0x051ba4ab241b6160}, fe{0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000}, }, - fe2{ + { fe{0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000}, fe{0x760900000002fffd, 0xebf4000bc40c0002, 0x5f48985753c758ba, 0x77ce585370525745, 0x5c071a97a256ec6d, 0x15f65ec3fa80e493}, }, - fe2{ + { fe{0xcd03c9e48671f071, 0x5dab22461fcda5d2, 0x587042afd3851b95, 0x8eb60ebe01bacb9e, 0x03f97d6e83d050d2, 0x18f0206554638741}, fe{0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000}, }, - fe2{ + { fe{0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000}, fe{0x30f1361b798a64e8, 0xf3b8ddab7ece5a2a, 0x16a8ca3ac61577f7, 0xc26a2ff874fd029b, 0x3636b76660701c6e, 0x051ba4ab241b6160}, }, } var frobeniusCoeffs62 = [6]fe2{ - fe2{ + { fe{0x760900000002fffd, 0xebf4000bc40c0002, 0x5f48985753c758ba, 0x77ce585370525745, 0x5c071a97a256ec6d, 0x15f65ec3fa80e493}, fe{0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000}, }, - fe2{ + { fe{0x890dc9e4867545c3, 0x2af322533285a5d5, 0x50880866309b7e2c, 0xa20d1b8c7e881024, 0x14e4f04fe2db9068, 0x14e56d3f1564853a}, fe{0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000}, }, - fe2{ + { fe{0xcd03c9e48671f071, 0x5dab22461fcda5d2, 0x587042afd3851b95, 0x8eb60ebe01bacb9e, 0x03f97d6e83d050d2, 0x18f0206554638741}, fe{0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000}, }, - fe2{ + { fe{0x43f5fffffffcaaae, 0x32b7fff2ed47fffd, 0x07e83a49a2e99d69, 0xeca8f3318332bb7a, 0xef148d1ea0f4c069, 0x040ab3263eff0206}, fe{0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000}, }, - fe2{ + { fe{0x30f1361b798a64e8, 0xf3b8ddab7ece5a2a, 0x16a8ca3ac61577f7, 0xc26a2ff874fd029b, 0x3636b76660701c6e, 0x051ba4ab241b6160}, fe{0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000}, }, - fe2{ + { fe{0xecfb361b798dba3a, 0xc100ddb891865a2c, 0x0ec08ff1232bda8e, 0xd5c13cc6f1ca4721, 0x47222a47bf7b5c04, 0x0110f184e51c5f59}, fe{0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000}, }, } var frobeniusCoeffs12 = [12]fe2{ - fe2{ + { fe{0x760900000002fffd, 0xebf4000bc40c0002, 0x5f48985753c758ba, 0x77ce585370525745, 0x5c071a97a256ec6d, 0x15f65ec3fa80e493}, fe{0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000}, }, - fe2{ + { fe{0x07089552b319d465, 0xc6695f92b50a8313, 0x97e83cccd117228f, 0xa35baecab2dc29ee, 0x1ce393ea5daace4d, 0x08f2220fb0fb66eb}, fe{0xb2f66aad4ce5d646, 0x5842a06bfc497cec, 0xcf4895d42599d394, 0xc11b9cba40a8e8d0, 0x2e3813cbe5a0de89, 0x110eefda88847faf}, }, - fe2{ + { fe{0xecfb361b798dba3a, 0xc100ddb891865a2c, 0x0ec08ff1232bda8e, 0xd5c13cc6f1ca4721, 0x47222a47bf7b5c04, 0x0110f184e51c5f59}, fe{0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000}, }, - fe2{ + { fe{0x3e2f585da55c9ad1, 0x4294213d86c18183, 0x382844c88b623732, 0x92ad2afd19103e18, 0x1d794e4fac7cf0b9, 0x0bd592fc7d825ec8}, fe{0x7bcfa7a25aa30fda, 0xdc17dec12a927e7c, 0x2f088dd86b4ebef1, 0xd1ca2087da74d4a7, 0x2da2596696cebc1d, 0x0e2b7eedbbfd87d2}, }, - fe2{ + { fe{0x30f1361b798a64e8, 0xf3b8ddab7ece5a2a, 0x16a8ca3ac61577f7, 0xc26a2ff874fd029b, 0x3636b76660701c6e, 0x051ba4ab241b6160}, fe{0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000}, }, - fe2{ + { fe{0x3726c30af242c66c, 0x7c2ac1aad1b6fe70, 0xa04007fbba4b14a2, 0xef517c3266341429, 0x0095ba654ed2226b, 0x02e370eccc86f7dd}, fe{0x82d83cf50dbce43f, 0xa2813e53df9d018f, 0xc6f0caa53c65e181, 0x7525cf528d50fe95, 0x4a85ed50f4798a6b, 0x171da0fd6cf8eebd}, }, - fe2{ + { fe{0x43f5fffffffcaaae, 0x32b7fff2ed47fffd, 0x07e83a49a2e99d69, 0xeca8f3318332bb7a, 0xef148d1ea0f4c069, 0x040ab3263eff0206}, fe{0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000}, }, - fe2{ + { fe{0xb2f66aad4ce5d646, 0x5842a06bfc497cec, 0xcf4895d42599d394, 0xc11b9cba40a8e8d0, 0x2e3813cbe5a0de89, 0x110eefda88847faf}, fe{0x07089552b319d465, 0xc6695f92b50a8313, 0x97e83cccd117228f, 0xa35baecab2dc29ee, 0x1ce393ea5daace4d, 0x08f2220fb0fb66eb}, }, - fe2{ + { fe{0xcd03c9e48671f071, 0x5dab22461fcda5d2, 0x587042afd3851b95, 0x8eb60ebe01bacb9e, 0x03f97d6e83d050d2, 0x18f0206554638741}, fe{0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000}, }, - fe2{ + { fe{0x7bcfa7a25aa30fda, 0xdc17dec12a927e7c, 0x2f088dd86b4ebef1, 0xd1ca2087da74d4a7, 0x2da2596696cebc1d, 0x0e2b7eedbbfd87d2}, fe{0x3e2f585da55c9ad1, 0x4294213d86c18183, 0x382844c88b623732, 0x92ad2afd19103e18, 0x1d794e4fac7cf0b9, 0x0bd592fc7d825ec8}, }, - fe2{ + { fe{0x890dc9e4867545c3, 0x2af322533285a5d5, 0x50880866309b7e2c, 0xa20d1b8c7e881024, 0x14e4f04fe2db9068, 0x14e56d3f1564853a}, fe{0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000}, }, - fe2{ + { fe{0x82d83cf50dbce43f, 0xa2813e53df9d018f, 0xc6f0caa53c65e181, 0x7525cf528d50fe95, 0x4a85ed50f4798a6b, 0x171da0fd6cf8eebd}, fe{0x3726c30af242c66c, 0x7c2ac1aad1b6fe70, 0xa04007fbba4b14a2, 0xef517c3266341429, 0x0095ba654ed2226b, 0x02e370eccc86f7dd}, }, diff --git a/crypto/bls12381/isogeny.go b/crypto/bls12381/isogeny.go index 91e03936d5..c3cb0a6f7b 100644 --- a/crypto/bls12381/isogeny.go +++ b/crypto/bls12381/isogeny.go @@ -77,149 +77,149 @@ func isogenyMapG2(e *fp2, x, y *fe2) { } var isogenyConstansG1 = [4][16]*fe{ - [16]*fe{ - &fe{0x4d18b6f3af00131c, 0x19fa219793fee28c, 0x3f2885f1467f19ae, 0x23dcea34f2ffb304, 0xd15b58d2ffc00054, 0x0913be200a20bef4}, - &fe{0x898985385cdbbd8b, 0x3c79e43cc7d966aa, 0x1597e193f4cd233a, 0x8637ef1e4d6623ad, 0x11b22deed20d827b, 0x07097bc5998784ad}, - &fe{0xa542583a480b664b, 0xfc7169c026e568c6, 0x5ba2ef314ed8b5a6, 0x5b5491c05102f0e7, 0xdf6e99707d2a0079, 0x0784151ed7605524}, - &fe{0x494e212870f72741, 0xab9be52fbda43021, 0x26f5577994e34c3d, 0x049dfee82aefbd60, 0x65dadd7828505289, 0x0e93d431ea011aeb}, - &fe{0x90ee774bd6a74d45, 0x7ada1c8a41bfb185, 0x0f1a8953b325f464, 0x104c24211be4805c, 0x169139d319ea7a8f, 0x09f20ead8e532bf6}, - &fe{0x6ddd93e2f43626b7, 0xa5482c9aa1ccd7bd, 0x143245631883f4bd, 0x2e0a94ccf77ec0db, 0xb0282d480e56489f, 0x18f4bfcbb4368929}, - &fe{0x23c5f0c953402dfd, 0x7a43ff6958ce4fe9, 0x2c390d3d2da5df63, 0xd0df5c98e1f9d70f, 0xffd89869a572b297, 0x1277ffc72f25e8fe}, - &fe{0x79f4f0490f06a8a6, 0x85f894a88030fd81, 0x12da3054b18b6410, 0xe2a57f6505880d65, 0xbba074f260e400f1, 0x08b76279f621d028}, - &fe{0xe67245ba78d5b00b, 0x8456ba9a1f186475, 0x7888bff6e6b33bb4, 0xe21585b9a30f86cb, 0x05a69cdcef55feee, 0x09e699dd9adfa5ac}, - &fe{0x0de5c357bff57107, 0x0a0db4ae6b1a10b2, 0xe256bb67b3b3cd8d, 0x8ad456574e9db24f, 0x0443915f50fd4179, 0x098c4bf7de8b6375}, - &fe{0xe6b0617e7dd929c7, 0xfe6e37d442537375, 0x1dafdeda137a489e, 0xe4efd1ad3f767ceb, 0x4a51d8667f0fe1cf, 0x054fdf4bbf1d821c}, - &fe{0x72db2a50658d767b, 0x8abf91faa257b3d5, 0xe969d6833764ab47, 0x464170142a1009eb, 0xb14f01aadb30be2f, 0x18ae6a856f40715d}, - &fe{0, 0, 0, 0, 0, 0}, - &fe{0, 0, 0, 0, 0, 0}, - &fe{0, 0, 0, 0, 0, 0}, - &fe{0, 0, 0, 0, 0, 0}, + { + {0x4d18b6f3af00131c, 0x19fa219793fee28c, 0x3f2885f1467f19ae, 0x23dcea34f2ffb304, 0xd15b58d2ffc00054, 0x0913be200a20bef4}, + {0x898985385cdbbd8b, 0x3c79e43cc7d966aa, 0x1597e193f4cd233a, 0x8637ef1e4d6623ad, 0x11b22deed20d827b, 0x07097bc5998784ad}, + {0xa542583a480b664b, 0xfc7169c026e568c6, 0x5ba2ef314ed8b5a6, 0x5b5491c05102f0e7, 0xdf6e99707d2a0079, 0x0784151ed7605524}, + {0x494e212870f72741, 0xab9be52fbda43021, 0x26f5577994e34c3d, 0x049dfee82aefbd60, 0x65dadd7828505289, 0x0e93d431ea011aeb}, + {0x90ee774bd6a74d45, 0x7ada1c8a41bfb185, 0x0f1a8953b325f464, 0x104c24211be4805c, 0x169139d319ea7a8f, 0x09f20ead8e532bf6}, + {0x6ddd93e2f43626b7, 0xa5482c9aa1ccd7bd, 0x143245631883f4bd, 0x2e0a94ccf77ec0db, 0xb0282d480e56489f, 0x18f4bfcbb4368929}, + {0x23c5f0c953402dfd, 0x7a43ff6958ce4fe9, 0x2c390d3d2da5df63, 0xd0df5c98e1f9d70f, 0xffd89869a572b297, 0x1277ffc72f25e8fe}, + {0x79f4f0490f06a8a6, 0x85f894a88030fd81, 0x12da3054b18b6410, 0xe2a57f6505880d65, 0xbba074f260e400f1, 0x08b76279f621d028}, + {0xe67245ba78d5b00b, 0x8456ba9a1f186475, 0x7888bff6e6b33bb4, 0xe21585b9a30f86cb, 0x05a69cdcef55feee, 0x09e699dd9adfa5ac}, + {0x0de5c357bff57107, 0x0a0db4ae6b1a10b2, 0xe256bb67b3b3cd8d, 0x8ad456574e9db24f, 0x0443915f50fd4179, 0x098c4bf7de8b6375}, + {0xe6b0617e7dd929c7, 0xfe6e37d442537375, 0x1dafdeda137a489e, 0xe4efd1ad3f767ceb, 0x4a51d8667f0fe1cf, 0x054fdf4bbf1d821c}, + {0x72db2a50658d767b, 0x8abf91faa257b3d5, 0xe969d6833764ab47, 0x464170142a1009eb, 0xb14f01aadb30be2f, 0x18ae6a856f40715d}, + {0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0}, }, - [16]*fe{ - &fe{0xb962a077fdb0f945, 0xa6a9740fefda13a0, 0xc14d568c3ed6c544, 0xb43fc37b908b133e, 0x9c0b3ac929599016, 0x0165aa6c93ad115f}, - &fe{0x23279a3ba506c1d9, 0x92cfca0a9465176a, 0x3b294ab13755f0ff, 0x116dda1c5070ae93, 0xed4530924cec2045, 0x083383d6ed81f1ce}, - &fe{0x9885c2a6449fecfc, 0x4a2b54ccd37733f0, 0x17da9ffd8738c142, 0xa0fba72732b3fafd, 0xff364f36e54b6812, 0x0f29c13c660523e2}, - &fe{0xe349cc118278f041, 0xd487228f2f3204fb, 0xc9d325849ade5150, 0x43a92bd69c15c2df, 0x1c2c7844bc417be4, 0x12025184f407440c}, - &fe{0x587f65ae6acb057b, 0x1444ef325140201f, 0xfbf995e71270da49, 0xccda066072436a42, 0x7408904f0f186bb2, 0x13b93c63edf6c015}, - &fe{0xfb918622cd141920, 0x4a4c64423ecaddb4, 0x0beb232927f7fb26, 0x30f94df6f83a3dc2, 0xaeedd424d780f388, 0x06cc402dd594bbeb}, - &fe{0xd41f761151b23f8f, 0x32a92465435719b3, 0x64f436e888c62cb9, 0xdf70a9a1f757c6e4, 0x6933a38d5b594c81, 0x0c6f7f7237b46606}, - &fe{0x693c08747876c8f7, 0x22c9850bf9cf80f0, 0x8e9071dab950c124, 0x89bc62d61c7baf23, 0xbc6be2d8dad57c23, 0x17916987aa14a122}, - &fe{0x1be3ff439c1316fd, 0x9965243a7571dfa7, 0xc7f7f62962f5cd81, 0x32c6aa9af394361c, 0xbbc2ee18e1c227f4, 0x0c102cbac531bb34}, - &fe{0x997614c97bacbf07, 0x61f86372b99192c0, 0x5b8c95fc14353fc3, 0xca2b066c2a87492f, 0x16178f5bbf698711, 0x12a6dcd7f0f4e0e8}, - &fe{0x760900000002fffd, 0xebf4000bc40c0002, 0x5f48985753c758ba, 0x77ce585370525745, 0x5c071a97a256ec6d, 0x15f65ec3fa80e493}, - &fe{0, 0, 0, 0, 0, 0}, - &fe{0, 0, 0, 0, 0, 0}, - &fe{0, 0, 0, 0, 0, 0}, - &fe{0, 0, 0, 0, 0, 0}, - &fe{0, 0, 0, 0, 0, 0}, + { + {0xb962a077fdb0f945, 0xa6a9740fefda13a0, 0xc14d568c3ed6c544, 0xb43fc37b908b133e, 0x9c0b3ac929599016, 0x0165aa6c93ad115f}, + {0x23279a3ba506c1d9, 0x92cfca0a9465176a, 0x3b294ab13755f0ff, 0x116dda1c5070ae93, 0xed4530924cec2045, 0x083383d6ed81f1ce}, + {0x9885c2a6449fecfc, 0x4a2b54ccd37733f0, 0x17da9ffd8738c142, 0xa0fba72732b3fafd, 0xff364f36e54b6812, 0x0f29c13c660523e2}, + {0xe349cc118278f041, 0xd487228f2f3204fb, 0xc9d325849ade5150, 0x43a92bd69c15c2df, 0x1c2c7844bc417be4, 0x12025184f407440c}, + {0x587f65ae6acb057b, 0x1444ef325140201f, 0xfbf995e71270da49, 0xccda066072436a42, 0x7408904f0f186bb2, 0x13b93c63edf6c015}, + {0xfb918622cd141920, 0x4a4c64423ecaddb4, 0x0beb232927f7fb26, 0x30f94df6f83a3dc2, 0xaeedd424d780f388, 0x06cc402dd594bbeb}, + {0xd41f761151b23f8f, 0x32a92465435719b3, 0x64f436e888c62cb9, 0xdf70a9a1f757c6e4, 0x6933a38d5b594c81, 0x0c6f7f7237b46606}, + {0x693c08747876c8f7, 0x22c9850bf9cf80f0, 0x8e9071dab950c124, 0x89bc62d61c7baf23, 0xbc6be2d8dad57c23, 0x17916987aa14a122}, + {0x1be3ff439c1316fd, 0x9965243a7571dfa7, 0xc7f7f62962f5cd81, 0x32c6aa9af394361c, 0xbbc2ee18e1c227f4, 0x0c102cbac531bb34}, + {0x997614c97bacbf07, 0x61f86372b99192c0, 0x5b8c95fc14353fc3, 0xca2b066c2a87492f, 0x16178f5bbf698711, 0x12a6dcd7f0f4e0e8}, + {0x760900000002fffd, 0xebf4000bc40c0002, 0x5f48985753c758ba, 0x77ce585370525745, 0x5c071a97a256ec6d, 0x15f65ec3fa80e493}, + {0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0}, }, - [16]*fe{ - &fe{0x2b567ff3e2837267, 0x1d4d9e57b958a767, 0xce028fea04bd7373, 0xcc31a30a0b6cd3df, 0x7d7b18a682692693, 0x0d300744d42a0310}, - &fe{0x99c2555fa542493f, 0xfe7f53cc4874f878, 0x5df0608b8f97608a, 0x14e03832052b49c8, 0x706326a6957dd5a4, 0x0a8dadd9c2414555}, - &fe{0x13d942922a5cf63a, 0x357e33e36e261e7d, 0xcf05a27c8456088d, 0x0000bd1de7ba50f0, 0x83d0c7532f8c1fde, 0x13f70bf38bbf2905}, - &fe{0x5c57fd95bfafbdbb, 0x28a359a65e541707, 0x3983ceb4f6360b6d, 0xafe19ff6f97e6d53, 0xb3468f4550192bf7, 0x0bb6cde49d8ba257}, - &fe{0x590b62c7ff8a513f, 0x314b4ce372cacefd, 0x6bef32ce94b8a800, 0x6ddf84a095713d5f, 0x64eace4cb0982191, 0x0386213c651b888d}, - &fe{0xa5310a31111bbcdd, 0xa14ac0f5da148982, 0xf9ad9cc95423d2e9, 0xaa6ec095283ee4a7, 0xcf5b1f022e1c9107, 0x01fddf5aed881793}, - &fe{0x65a572b0d7a7d950, 0xe25c2d8183473a19, 0xc2fcebe7cb877dbd, 0x05b2d36c769a89b0, 0xba12961be86e9efb, 0x07eb1b29c1dfde1f}, - &fe{0x93e09572f7c4cd24, 0x364e929076795091, 0x8569467e68af51b5, 0xa47da89439f5340f, 0xf4fa918082e44d64, 0x0ad52ba3e6695a79}, - &fe{0x911429844e0d5f54, 0xd03f51a3516bb233, 0x3d587e5640536e66, 0xfa86d2a3a9a73482, 0xa90ed5adf1ed5537, 0x149c9c326a5e7393}, - &fe{0x462bbeb03c12921a, 0xdc9af5fa0a274a17, 0x9a558ebde836ebed, 0x649ef8f11a4fae46, 0x8100e1652b3cdc62, 0x1862bd62c291dacb}, - &fe{0x05c9b8ca89f12c26, 0x0194160fa9b9ac4f, 0x6a643d5a6879fa2c, 0x14665bdd8846e19d, 0xbb1d0d53af3ff6bf, 0x12c7e1c3b28962e5}, - &fe{0xb55ebf900b8a3e17, 0xfedc77ec1a9201c4, 0x1f07db10ea1a4df4, 0x0dfbd15dc41a594d, 0x389547f2334a5391, 0x02419f98165871a4}, - &fe{0xb416af000745fc20, 0x8e563e9d1ea6d0f5, 0x7c763e17763a0652, 0x01458ef0159ebbef, 0x8346fe421f96bb13, 0x0d2d7b829ce324d2}, - &fe{0x93096bb538d64615, 0x6f2a2619951d823a, 0x8f66b3ea59514fa4, 0xf563e63704f7092f, 0x724b136c4cf2d9fa, 0x046959cfcfd0bf49}, - &fe{0xea748d4b6e405346, 0x91e9079c2c02d58f, 0x41064965946d9b59, 0xa06731f1d2bbe1ee, 0x07f897e267a33f1b, 0x1017290919210e5f}, - &fe{0x872aa6c17d985097, 0xeecc53161264562a, 0x07afe37afff55002, 0x54759078e5be6838, 0xc4b92d15db8acca8, 0x106d87d1b51d13b9}, + { + {0x2b567ff3e2837267, 0x1d4d9e57b958a767, 0xce028fea04bd7373, 0xcc31a30a0b6cd3df, 0x7d7b18a682692693, 0x0d300744d42a0310}, + {0x99c2555fa542493f, 0xfe7f53cc4874f878, 0x5df0608b8f97608a, 0x14e03832052b49c8, 0x706326a6957dd5a4, 0x0a8dadd9c2414555}, + {0x13d942922a5cf63a, 0x357e33e36e261e7d, 0xcf05a27c8456088d, 0x0000bd1de7ba50f0, 0x83d0c7532f8c1fde, 0x13f70bf38bbf2905}, + {0x5c57fd95bfafbdbb, 0x28a359a65e541707, 0x3983ceb4f6360b6d, 0xafe19ff6f97e6d53, 0xb3468f4550192bf7, 0x0bb6cde49d8ba257}, + {0x590b62c7ff8a513f, 0x314b4ce372cacefd, 0x6bef32ce94b8a800, 0x6ddf84a095713d5f, 0x64eace4cb0982191, 0x0386213c651b888d}, + {0xa5310a31111bbcdd, 0xa14ac0f5da148982, 0xf9ad9cc95423d2e9, 0xaa6ec095283ee4a7, 0xcf5b1f022e1c9107, 0x01fddf5aed881793}, + {0x65a572b0d7a7d950, 0xe25c2d8183473a19, 0xc2fcebe7cb877dbd, 0x05b2d36c769a89b0, 0xba12961be86e9efb, 0x07eb1b29c1dfde1f}, + {0x93e09572f7c4cd24, 0x364e929076795091, 0x8569467e68af51b5, 0xa47da89439f5340f, 0xf4fa918082e44d64, 0x0ad52ba3e6695a79}, + {0x911429844e0d5f54, 0xd03f51a3516bb233, 0x3d587e5640536e66, 0xfa86d2a3a9a73482, 0xa90ed5adf1ed5537, 0x149c9c326a5e7393}, + {0x462bbeb03c12921a, 0xdc9af5fa0a274a17, 0x9a558ebde836ebed, 0x649ef8f11a4fae46, 0x8100e1652b3cdc62, 0x1862bd62c291dacb}, + {0x05c9b8ca89f12c26, 0x0194160fa9b9ac4f, 0x6a643d5a6879fa2c, 0x14665bdd8846e19d, 0xbb1d0d53af3ff6bf, 0x12c7e1c3b28962e5}, + {0xb55ebf900b8a3e17, 0xfedc77ec1a9201c4, 0x1f07db10ea1a4df4, 0x0dfbd15dc41a594d, 0x389547f2334a5391, 0x02419f98165871a4}, + {0xb416af000745fc20, 0x8e563e9d1ea6d0f5, 0x7c763e17763a0652, 0x01458ef0159ebbef, 0x8346fe421f96bb13, 0x0d2d7b829ce324d2}, + {0x93096bb538d64615, 0x6f2a2619951d823a, 0x8f66b3ea59514fa4, 0xf563e63704f7092f, 0x724b136c4cf2d9fa, 0x046959cfcfd0bf49}, + {0xea748d4b6e405346, 0x91e9079c2c02d58f, 0x41064965946d9b59, 0xa06731f1d2bbe1ee, 0x07f897e267a33f1b, 0x1017290919210e5f}, + {0x872aa6c17d985097, 0xeecc53161264562a, 0x07afe37afff55002, 0x54759078e5be6838, 0xc4b92d15db8acca8, 0x106d87d1b51d13b9}, }, - [16]*fe{ - &fe{0xeb6c359d47e52b1c, 0x18ef5f8a10634d60, 0xddfa71a0889d5b7e, 0x723e71dcc5fc1323, 0x52f45700b70d5c69, 0x0a8b981ee47691f1}, - &fe{0x616a3c4f5535b9fb, 0x6f5f037395dbd911, 0xf25f4cc5e35c65da, 0x3e50dffea3c62658, 0x6a33dca523560776, 0x0fadeff77b6bfe3e}, - &fe{0x2be9b66df470059c, 0x24a2c159a3d36742, 0x115dbe7ad10c2a37, 0xb6634a652ee5884d, 0x04fe8bb2b8d81af4, 0x01c2a7a256fe9c41}, - &fe{0xf27bf8ef3b75a386, 0x898b367476c9073f, 0x24482e6b8c2f4e5f, 0xc8e0bbd6fe110806, 0x59b0c17f7631448a, 0x11037cd58b3dbfbd}, - &fe{0x31c7912ea267eec6, 0x1dbf6f1c5fcdb700, 0xd30d4fe3ba86fdb1, 0x3cae528fbee9a2a4, 0xb1cce69b6aa9ad9a, 0x044393bb632d94fb}, - &fe{0xc66ef6efeeb5c7e8, 0x9824c289dd72bb55, 0x71b1a4d2f119981d, 0x104fc1aafb0919cc, 0x0e49df01d942a628, 0x096c3a09773272d4}, - &fe{0x9abc11eb5fadeff4, 0x32dca50a885728f0, 0xfb1fa3721569734c, 0xc4b76271ea6506b3, 0xd466a75599ce728e, 0x0c81d4645f4cb6ed}, - &fe{0x4199f10e5b8be45b, 0xda64e495b1e87930, 0xcb353efe9b33e4ff, 0x9e9efb24aa6424c6, 0xf08d33680a237465, 0x0d3378023e4c7406}, - &fe{0x7eb4ae92ec74d3a5, 0xc341b4aa9fac3497, 0x5be603899e907687, 0x03bfd9cca75cbdeb, 0x564c2935a96bfa93, 0x0ef3c33371e2fdb5}, - &fe{0x7ee91fd449f6ac2e, 0xe5d5bd5cb9357a30, 0x773a8ca5196b1380, 0xd0fda172174ed023, 0x6cb95e0fa776aead, 0x0d22d5a40cec7cff}, - &fe{0xf727e09285fd8519, 0xdc9d55a83017897b, 0x7549d8bd057894ae, 0x178419613d90d8f8, 0xfce95ebdeb5b490a, 0x0467ffaef23fc49e}, - &fe{0xc1769e6a7c385f1b, 0x79bc930deac01c03, 0x5461c75a23ede3b5, 0x6e20829e5c230c45, 0x828e0f1e772a53cd, 0x116aefa749127bff}, - &fe{0x101c10bf2744c10a, 0xbbf18d053a6a3154, 0xa0ecf39ef026f602, 0xfc009d4996dc5153, 0xb9000209d5bd08d3, 0x189e5fe4470cd73c}, - &fe{0x7ebd546ca1575ed2, 0xe47d5a981d081b55, 0x57b2b625b6d4ca21, 0xb0a1ba04228520cc, 0x98738983c2107ff3, 0x13dddbc4799d81d6}, - &fe{0x09319f2e39834935, 0x039e952cbdb05c21, 0x55ba77a9a2f76493, 0xfd04e3dfc6086467, 0xfb95832e7d78742e, 0x0ef9c24eccaf5e0e}, - &fe{0x760900000002fffd, 0xebf4000bc40c0002, 0x5f48985753c758ba, 0x77ce585370525745, 0x5c071a97a256ec6d, 0x15f65ec3fa80e493}, + { + {0xeb6c359d47e52b1c, 0x18ef5f8a10634d60, 0xddfa71a0889d5b7e, 0x723e71dcc5fc1323, 0x52f45700b70d5c69, 0x0a8b981ee47691f1}, + {0x616a3c4f5535b9fb, 0x6f5f037395dbd911, 0xf25f4cc5e35c65da, 0x3e50dffea3c62658, 0x6a33dca523560776, 0x0fadeff77b6bfe3e}, + {0x2be9b66df470059c, 0x24a2c159a3d36742, 0x115dbe7ad10c2a37, 0xb6634a652ee5884d, 0x04fe8bb2b8d81af4, 0x01c2a7a256fe9c41}, + {0xf27bf8ef3b75a386, 0x898b367476c9073f, 0x24482e6b8c2f4e5f, 0xc8e0bbd6fe110806, 0x59b0c17f7631448a, 0x11037cd58b3dbfbd}, + {0x31c7912ea267eec6, 0x1dbf6f1c5fcdb700, 0xd30d4fe3ba86fdb1, 0x3cae528fbee9a2a4, 0xb1cce69b6aa9ad9a, 0x044393bb632d94fb}, + {0xc66ef6efeeb5c7e8, 0x9824c289dd72bb55, 0x71b1a4d2f119981d, 0x104fc1aafb0919cc, 0x0e49df01d942a628, 0x096c3a09773272d4}, + {0x9abc11eb5fadeff4, 0x32dca50a885728f0, 0xfb1fa3721569734c, 0xc4b76271ea6506b3, 0xd466a75599ce728e, 0x0c81d4645f4cb6ed}, + {0x4199f10e5b8be45b, 0xda64e495b1e87930, 0xcb353efe9b33e4ff, 0x9e9efb24aa6424c6, 0xf08d33680a237465, 0x0d3378023e4c7406}, + {0x7eb4ae92ec74d3a5, 0xc341b4aa9fac3497, 0x5be603899e907687, 0x03bfd9cca75cbdeb, 0x564c2935a96bfa93, 0x0ef3c33371e2fdb5}, + {0x7ee91fd449f6ac2e, 0xe5d5bd5cb9357a30, 0x773a8ca5196b1380, 0xd0fda172174ed023, 0x6cb95e0fa776aead, 0x0d22d5a40cec7cff}, + {0xf727e09285fd8519, 0xdc9d55a83017897b, 0x7549d8bd057894ae, 0x178419613d90d8f8, 0xfce95ebdeb5b490a, 0x0467ffaef23fc49e}, + {0xc1769e6a7c385f1b, 0x79bc930deac01c03, 0x5461c75a23ede3b5, 0x6e20829e5c230c45, 0x828e0f1e772a53cd, 0x116aefa749127bff}, + {0x101c10bf2744c10a, 0xbbf18d053a6a3154, 0xa0ecf39ef026f602, 0xfc009d4996dc5153, 0xb9000209d5bd08d3, 0x189e5fe4470cd73c}, + {0x7ebd546ca1575ed2, 0xe47d5a981d081b55, 0x57b2b625b6d4ca21, 0xb0a1ba04228520cc, 0x98738983c2107ff3, 0x13dddbc4799d81d6}, + {0x09319f2e39834935, 0x039e952cbdb05c21, 0x55ba77a9a2f76493, 0xfd04e3dfc6086467, 0xfb95832e7d78742e, 0x0ef9c24eccaf5e0e}, + {0x760900000002fffd, 0xebf4000bc40c0002, 0x5f48985753c758ba, 0x77ce585370525745, 0x5c071a97a256ec6d, 0x15f65ec3fa80e493}, }, } var isogenyConstantsG2 = [4][4]*fe2{ - [4]*fe2{ - &fe2{ + { + { fe{0x47f671c71ce05e62, 0x06dd57071206393e, 0x7c80cd2af3fd71a2, 0x048103ea9e6cd062, 0xc54516acc8d037f6, 0x13808f550920ea41}, fe{0x47f671c71ce05e62, 0x06dd57071206393e, 0x7c80cd2af3fd71a2, 0x048103ea9e6cd062, 0xc54516acc8d037f6, 0x13808f550920ea41}, }, - &fe2{ + { fe{0, 0, 0, 0, 0, 0}, fe{0x5fe55555554c71d0, 0x873fffdd236aaaa3, 0x6a6b4619b26ef918, 0x21c2888408874945, 0x2836cda7028cabc5, 0x0ac73310a7fd5abd}, }, - &fe2{ + { fe{0x0a0c5555555971c3, 0xdb0c00101f9eaaae, 0xb1fb2f941d797997, 0xd3960742ef416e1c, 0xb70040e2c20556f4, 0x149d7861e581393b}, fe{0xaff2aaaaaaa638e8, 0x439fffee91b55551, 0xb535a30cd9377c8c, 0x90e144420443a4a2, 0x941b66d3814655e2, 0x0563998853fead5e}, }, - &fe2{ + { fe{0x40aac71c71c725ed, 0x190955557a84e38e, 0xd817050a8f41abc3, 0xd86485d4c87f6fb1, 0x696eb479f885d059, 0x198e1a74328002d2}, fe{0, 0, 0, 0, 0, 0}, }, }, - [4]*fe2{ - &fe2{ + { + { fe{0, 0, 0, 0, 0, 0}, fe{0x1f3affffff13ab97, 0xf25bfc611da3ff3e, 0xca3757cb3819b208, 0x3e6427366f8cec18, 0x03977bc86095b089, 0x04f69db13f39a952}, }, - &fe2{ + { fe{0x447600000027552e, 0xdcb8009a43480020, 0x6f7ee9ce4a6e8b59, 0xb10330b7c0a95bc6, 0x6140b1fcfb1e54b7, 0x0381be097f0bb4e1}, fe{0x7588ffffffd8557d, 0x41f3ff646e0bffdf, 0xf7b1e8d2ac426aca, 0xb3741acd32dbb6f8, 0xe9daf5b9482d581f, 0x167f53e0ba7431b8}, }, - &fe2{ + { fe{0x760900000002fffd, 0xebf4000bc40c0002, 0x5f48985753c758ba, 0x77ce585370525745, 0x5c071a97a256ec6d, 0x15f65ec3fa80e493}, fe{0, 0, 0, 0, 0, 0}, }, - &fe2{ + { fe{0, 0, 0, 0, 0, 0}, fe{0, 0, 0, 0, 0, 0}, }, }, - [4]*fe2{ - &fe2{ + { + { fe{0x96d8f684bdfc77be, 0xb530e4f43b66d0e2, 0x184a88ff379652fd, 0x57cb23ecfae804e1, 0x0fd2e39eada3eba9, 0x08c8055e31c5d5c3}, fe{0x96d8f684bdfc77be, 0xb530e4f43b66d0e2, 0x184a88ff379652fd, 0x57cb23ecfae804e1, 0x0fd2e39eada3eba9, 0x08c8055e31c5d5c3}, }, - &fe2{ + { fe{0, 0, 0, 0, 0, 0}, fe{0xbf0a71c71c91b406, 0x4d6d55d28b7638fd, 0x9d82f98e5f205aee, 0xa27aa27b1d1a18d5, 0x02c3b2b2d2938e86, 0x0c7d13420b09807f}, }, - &fe2{ + { fe{0xd7f9555555531c74, 0x21cffff748daaaa8, 0x5a9ad1866c9bbe46, 0x4870a2210221d251, 0x4a0db369c0a32af1, 0x02b1ccc429ff56af}, fe{0xe205aaaaaaac8e37, 0xfcdc000768795556, 0x0c96011a8a1537dd, 0x1c06a963f163406e, 0x010df44c82a881e6, 0x174f45260f808feb}, }, - &fe2{ + { fe{0xa470bda12f67f35c, 0xc0fe38e23327b425, 0xc9d3d0f2c6f0678d, 0x1c55c9935b5a982e, 0x27f6c0e2f0746764, 0x117c5e6e28aa9054}, fe{0, 0, 0, 0, 0, 0}, }, }, - [4]*fe2{ - &fe2{ + { + { fe{0x0162fffffa765adf, 0x8f7bea480083fb75, 0x561b3c2259e93611, 0x11e19fc1a9c875d5, 0xca713efc00367660, 0x03c6a03d41da1151}, fe{0x0162fffffa765adf, 0x8f7bea480083fb75, 0x561b3c2259e93611, 0x11e19fc1a9c875d5, 0xca713efc00367660, 0x03c6a03d41da1151}, }, - &fe2{ + { fe{0, 0, 0, 0, 0, 0}, fe{0x5db0fffffd3b02c5, 0xd713f52358ebfdba, 0x5ea60761a84d161a, 0xbb2c75a34ea6c44a, 0x0ac6735921c1119b, 0x0ee3d913bdacfbf6}, }, - &fe2{ + { fe{0x66b10000003affc5, 0xcb1400e764ec0030, 0xa73e5eb56fa5d106, 0x8984c913a0fe09a9, 0x11e10afb78ad7f13, 0x05429d0e3e918f52}, fe{0x534dffffffc4aae6, 0x5397ff174c67ffcf, 0xbff273eb870b251d, 0xdaf2827152870915, 0x393a9cbaca9e2dc3, 0x14be74dbfaee5748}, }, - &fe2{ + { fe{0x760900000002fffd, 0xebf4000bc40c0002, 0x5f48985753c758ba, 0x77ce585370525745, 0x5c071a97a256ec6d, 0x15f65ec3fa80e493}, fe{0, 0, 0, 0, 0, 0}, }, diff --git a/crypto/bls12381/swu.go b/crypto/bls12381/swu.go index 40d8c9154d..e78753b240 100644 --- a/crypto/bls12381/swu.go +++ b/crypto/bls12381/swu.go @@ -17,7 +17,7 @@ package bls12381 // swuMapG1 is implementation of Simplified Shallue-van de Woestijne-Ulas Method -// follows the implmentation at draft-irtf-cfrg-hash-to-curve-06. +// follows the implementation at draft-irtf-cfrg-hash-to-curve-06. func swuMapG1(u *fe) (*fe, *fe) { var params = swuParamsForG1 var tv [4]*fe diff --git a/crypto/bn256/cloudflare/gfp_amd64.s b/crypto/bn256/cloudflare/gfp_amd64.s index bdb4ffb787..64c97eaed9 100644 --- a/crypto/bn256/cloudflare/gfp_amd64.s +++ b/crypto/bn256/cloudflare/gfp_amd64.s @@ -49,7 +49,7 @@ TEXT ·gfpNeg(SB),0,$0-16 SBBQ 24(DI), R11 MOVQ $0, AX - gfpCarry(R8,R9,R10,R11,AX, R12,R13,R14,R15,BX) + gfpCarry(R8,R9,R10,R11,AX, R12,R13,R14,CX,BX) MOVQ c+0(FP), DI storeBlock(R8,R9,R10,R11, 0(DI)) @@ -68,7 +68,7 @@ TEXT ·gfpAdd(SB),0,$0-24 ADCQ 24(SI), R11 ADCQ $0, R12 - gfpCarry(R8,R9,R10,R11,R12, R13,R14,R15,AX,BX) + gfpCarry(R8,R9,R10,R11,R12, R13,R14,CX,AX,BX) MOVQ c+0(FP), DI storeBlock(R8,R9,R10,R11, 0(DI)) @@ -83,7 +83,7 @@ TEXT ·gfpSub(SB),0,$0-24 MOVQ ·p2+0(SB), R12 MOVQ ·p2+8(SB), R13 MOVQ ·p2+16(SB), R14 - MOVQ ·p2+24(SB), R15 + MOVQ ·p2+24(SB), CX MOVQ $0, AX SUBQ 0(SI), R8 @@ -94,12 +94,12 @@ TEXT ·gfpSub(SB),0,$0-24 CMOVQCC AX, R12 CMOVQCC AX, R13 CMOVQCC AX, R14 - CMOVQCC AX, R15 + CMOVQCC AX, CX ADDQ R12, R8 ADCQ R13, R9 ADCQ R14, R10 - ADCQ R15, R11 + ADCQ CX, R11 MOVQ c+0(FP), DI storeBlock(R8,R9,R10,R11, 0(DI)) @@ -115,7 +115,7 @@ TEXT ·gfpMul(SB),0,$160-24 mulBMI2(0(DI),8(DI),16(DI),24(DI), 0(SI)) storeBlock( R8, R9,R10,R11, 0(SP)) - storeBlock(R12,R13,R14,R15, 32(SP)) + storeBlock(R12,R13,R14,CX, 32(SP)) gfpReduceBMI2() JMP end @@ -125,5 +125,5 @@ nobmi2Mul: end: MOVQ c+0(FP), DI - storeBlock(R12,R13,R14,R15, 0(DI)) + storeBlock(R12,R13,R14,CX, 0(DI)) RET diff --git a/crypto/bn256/cloudflare/mul_amd64.h b/crypto/bn256/cloudflare/mul_amd64.h index bab5da8313..9d8e4b37db 100644 --- a/crypto/bn256/cloudflare/mul_amd64.h +++ b/crypto/bn256/cloudflare/mul_amd64.h @@ -165,7 +165,7 @@ \ \ // Add the 512-bit intermediate to m*N loadBlock(96+stack, R8,R9,R10,R11) \ - loadBlock(128+stack, R12,R13,R14,R15) \ + loadBlock(128+stack, R12,R13,R14,CX) \ \ MOVQ $0, AX \ ADDQ 0+stack, R8 \ @@ -175,7 +175,7 @@ ADCQ 32+stack, R12 \ ADCQ 40+stack, R13 \ ADCQ 48+stack, R14 \ - ADCQ 56+stack, R15 \ + ADCQ 56+stack, CX \ ADCQ $0, AX \ \ - gfpCarry(R12,R13,R14,R15,AX, R8,R9,R10,R11,BX) + gfpCarry(R12,R13,R14,CX,AX, R8,R9,R10,R11,BX) diff --git a/crypto/bn256/cloudflare/mul_bmi2_amd64.h b/crypto/bn256/cloudflare/mul_bmi2_amd64.h index 71ad0499af..403566c6fa 100644 --- a/crypto/bn256/cloudflare/mul_bmi2_amd64.h +++ b/crypto/bn256/cloudflare/mul_bmi2_amd64.h @@ -29,7 +29,7 @@ ADCQ $0, R14 \ \ MOVQ a2, DX \ - MOVQ $0, R15 \ + MOVQ $0, CX \ MULXQ 0+rb, AX, BX \ ADDQ AX, R10 \ ADCQ BX, R11 \ @@ -43,7 +43,7 @@ MULXQ 24+rb, AX, BX \ ADCQ AX, R13 \ ADCQ BX, R14 \ - ADCQ $0, R15 \ + ADCQ $0, CX \ \ MOVQ a3, DX \ MULXQ 0+rb, AX, BX \ @@ -52,13 +52,13 @@ MULXQ 16+rb, AX, BX \ ADCQ AX, R13 \ ADCQ BX, R14 \ - ADCQ $0, R15 \ + ADCQ $0, CX \ MULXQ 8+rb, AX, BX \ ADDQ AX, R12 \ ADCQ BX, R13 \ MULXQ 24+rb, AX, BX \ ADCQ AX, R14 \ - ADCQ BX, R15 + ADCQ BX, CX #define gfpReduceBMI2() \ \ // m = (T * N') mod R, store m in R8:R9:R10:R11 @@ -106,7 +106,7 @@ ADCQ 32(SP), R12 \ ADCQ 40(SP), R13 \ ADCQ 48(SP), R14 \ - ADCQ 56(SP), R15 \ + ADCQ 56(SP), CX \ ADCQ $0, AX \ \ - gfpCarry(R12,R13,R14,R15,AX, R8,R9,R10,R11,BX) + gfpCarry(R12,R13,R14,CX,AX, R8,R9,R10,R11,BX) diff --git a/crypto/ecies/ecies_test.go b/crypto/ecies/ecies_test.go index 0a6aeb2b51..96e33da006 100644 --- a/crypto/ecies/ecies_test.go +++ b/crypto/ecies/ecies_test.go @@ -279,7 +279,7 @@ var testCases = []testCase{ { Curve: elliptic.P384(), Name: "P384", - Expected: ECIES_AES256_SHA384, + Expected: ECIES_AES192_SHA384, }, { Curve: elliptic.P521(), diff --git a/crypto/ecies/params.go b/crypto/ecies/params.go index 0bd3877ddd..39e7c89473 100644 --- a/crypto/ecies/params.go +++ b/crypto/ecies/params.go @@ -80,6 +80,14 @@ var ( KeyLen: 16, } + ECIES_AES192_SHA384 = &ECIESParams{ + Hash: sha512.New384, + hashAlgo: crypto.SHA384, + Cipher: aes.NewCipher, + BlockSize: aes.BlockSize, + KeyLen: 24, + } + ECIES_AES256_SHA256 = &ECIESParams{ Hash: sha256.New, hashAlgo: crypto.SHA256, @@ -108,7 +116,7 @@ var ( var paramsFromCurve = map[elliptic.Curve]*ECIESParams{ ethcrypto.S256(): ECIES_AES128_SHA256, elliptic.P256(): ECIES_AES128_SHA256, - elliptic.P384(): ECIES_AES256_SHA384, + elliptic.P384(): ECIES_AES192_SHA384, elliptic.P521(): ECIES_AES256_SHA512, } diff --git a/crypto/signature_nocgo.go b/crypto/signature_nocgo.go index fd1e66c7e6..3e48e51e84 100644 --- a/crypto/signature_nocgo.go +++ b/crypto/signature_nocgo.go @@ -24,37 +24,48 @@ import ( "crypto/elliptic" "errors" "fmt" - "math/big" - "github.com/btcsuite/btcd/btcec" + "github.com/btcsuite/btcd/btcec/v2" + btc_ecdsa "github.com/btcsuite/btcd/btcec/v2/ecdsa" ) // Ecrecover returns the uncompressed public key that created the given signature. func Ecrecover(hash, sig []byte) ([]byte, error) { - pub, err := SigToPub(hash, sig) + pub, err := sigToPub(hash, sig) if err != nil { return nil, err } - bytes := (*btcec.PublicKey)(pub).SerializeUncompressed() + bytes := pub.SerializeUncompressed() return bytes, err } +func sigToPub(hash, sig []byte) (*btcec.PublicKey, error) { + if len(sig) != SignatureLength { + return nil, errors.New("invalid signature") + } + // Convert to btcec input format with 'recovery id' v at the beginning. + btcsig := make([]byte, SignatureLength) + btcsig[0] = sig[RecoveryIDOffset] + 27 + copy(btcsig[1:], sig) + + pub, _, err := btc_ecdsa.RecoverCompact(btcsig, hash) + return pub, err +} + // SigToPub returns the public key that created the given signature. func SigToPub(hash, sig []byte) (*ecdsa.PublicKey, error) { - // Convert to btcec input format with 'recovery id' v at the beginning. - btcsig := make([]byte, SignatureLength) - btcsig[0] = sig[64] + 27 - copy(btcsig[1:], sig) - - pub, _, err := btcec.RecoverCompact(btcec.S256(), btcsig, hash) - return (*ecdsa.PublicKey)(pub), err + pub, err := sigToPub(hash, sig) + if err != nil { + return nil, err + } + return pub.ToECDSA(), nil } // Sign calculates an ECDSA signature. // // This function is susceptible to chosen plaintext attacks that can leak // information about the private key that is used for signing. Callers must -// be aware that the given hash cannot be chosen by an adversery. Common +// be aware that the given hash cannot be chosen by an adversary. Common // solution is to hash any input before calculating the signature. // // The produced signature is in the [R || S || V] format where V is 0 or 1. @@ -65,14 +76,20 @@ func Sign(hash []byte, prv *ecdsa.PrivateKey) ([]byte, error) { if prv.Curve != btcec.S256() { return nil, fmt.Errorf("private key curve is not secp256k1") } - sig, err := btcec.SignCompact(btcec.S256(), (*btcec.PrivateKey)(prv), hash, false) + // ecdsa.PrivateKey -> btcec.PrivateKey + var priv btcec.PrivateKey + if overflow := priv.Key.SetByteSlice(prv.D.Bytes()); overflow || priv.Key.IsZero() { + return nil, fmt.Errorf("invalid private key") + } + defer priv.Zero() + sig, err := btc_ecdsa.SignCompact(&priv, hash, false) // ref uncompressed pubkey if err != nil { return nil, err } // Convert to Ethereum signature format with 'recovery id' v at the end. v := sig[0] - 27 copy(sig, sig[1:]) - sig[64] = v + sig[RecoveryIDOffset] = v return sig, nil } @@ -83,13 +100,20 @@ func VerifySignature(pubkey, hash, signature []byte) bool { if len(signature) != 64 { return false } - sig := &btcec.Signature{R: new(big.Int).SetBytes(signature[:32]), S: new(big.Int).SetBytes(signature[32:])} - key, err := btcec.ParsePubKey(pubkey, btcec.S256()) + var r, s btcec.ModNScalar + if r.SetByteSlice(signature[:32]) { + return false // overflow + } + if s.SetByteSlice(signature[32:]) { + return false + } + sig := btc_ecdsa.NewSignature(&r, &s) + key, err := btcec.ParsePubKey(pubkey) if err != nil { return false } // Reject malleable signatures. libsecp256k1 does this check but btcec doesn't. - if sig.S.Cmp(secp256k1halfN) > 0 { + if s.IsOverHalfOrder() { return false } return sig.Verify(hash, key) @@ -100,16 +124,26 @@ func DecompressPubkey(pubkey []byte) (*ecdsa.PublicKey, error) { if len(pubkey) != 33 { return nil, errors.New("invalid compressed public key length") } - key, err := btcec.ParsePubKey(pubkey, btcec.S256()) + key, err := btcec.ParsePubKey(pubkey) if err != nil { return nil, err } return key.ToECDSA(), nil } -// CompressPubkey encodes a public key to the 33-byte compressed format. +// CompressPubkey encodes a public key to the 33-byte compressed format. The +// provided PublicKey must be valid. Namely, the coordinates must not be larger +// than 32 bytes each, they must be less than the field prime, and it must be a +// point on the secp256k1 curve. This is the case for a PublicKey constructed by +// elliptic.Unmarshal (see UnmarshalPubkey), or by ToECDSA and ecdsa.GenerateKey +// when constructing a PrivateKey. func CompressPubkey(pubkey *ecdsa.PublicKey) []byte { - return (*btcec.PublicKey)(pubkey).SerializeCompressed() + // NOTE: the coordinates may be validated with + // btcec.ParsePubKey(FromECDSAPub(pubkey)) + var x, y btcec.FieldVal + x.SetByteSlice(pubkey.X.Bytes()) + y.SetByteSlice(pubkey.Y.Bytes()) + return btcec.NewPublicKey(&x, &y).SerializeCompressed() } // S256 returns an instance of the secp256k1 curve. diff --git a/docs/postmortems/2021-08-22-split-postmortem.md b/docs/postmortems/2021-08-22-split-postmortem.md index 429f22d70a..2004f0f287 100644 --- a/docs/postmortems/2021-08-22-split-postmortem.md +++ b/docs/postmortems/2021-08-22-split-postmortem.md @@ -5,7 +5,7 @@ This is a post-mortem concerning the minority split that occurred on Ethereum ma ## Timeline -- 2021-08-17: Guido Vranken submitted bounty report. Investigation started, root cause identified, patch variations discussed. +- 2021-08-17: Guido Vranken submitted a bounty report. Investigation started, root cause identified, patch variations discussed. - 2021-08-18: Made public announcement over twitter about upcoming security release upcoming Tuesday. Downstream projects were also notified about the upcoming patch-release. - 2021-08-24: Released [v1.10.8](https://github.com/ethereum/go-ethereum/releases/tag/v1.10.8) containing the fix on Tuesday morning (CET). Erigon released [v2021.08.04](https://github.com/ledgerwatch/erigon/releases/tag/v2021.08.04). - 2021-08-27: At 12:50:07 UTC, issue exploited. Analysis started roughly 30m later, @@ -51,7 +51,7 @@ A memory-corruption bug within the EVM can cause a consensus error, where vulner #### Handling -On the evening of 17th, we discussed options how to handle it. We made a state test to reproduce the issue, and verified that neither `openethereum`, `nethermind` nor `besu` were affected by the same vulnerability, and started a full-sync with a patched version of `geth`. +On the evening of 17th, we discussed options on how to handle it. We made a state test to reproduce the issue, and verified that neither `openethereum`, `nethermind` nor `besu` were affected by the same vulnerability, and started a full-sync with a patched version of `geth`. It was decided that in this specific instance, it would be possible to make a public announcement and a patch release: diff --git a/eth/backend.go b/eth/backend.go index f1ece4f3fe..00da02ba93 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -177,7 +177,7 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { // create eth api and set engine ethAPI := ethapi.NewPublicBlockChainAPI(eth.APIBackend) - eth.engine = ethconfig.CreateConsensusEngine(stack, chainConfig, config, chainDb, ethAPI) + eth.engine = ethconfig.CreateConsensusEngine(stack, chainConfig, config, config.Miner.Notify, config.Miner.Noverify, chainDb, ethAPI) // END: Bor changes bcVersion := rawdb.ReadDatabaseVersion(chainDb) @@ -243,21 +243,21 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { checkpoint = params.TrustedCheckpoints[genesisHash] } if eth.handler, err = newHandler(&handlerConfig{ - Database: chainDb, - Chain: eth.blockchain, - TxPool: eth.txPool, - Merger: merger, - Network: config.NetworkId, - Sync: config.SyncMode, - BloomCache: uint64(cacheLimit), - EventMux: eth.eventMux, - Checkpoint: checkpoint, - Whitelist: config.Whitelist, + Database: chainDb, + Chain: eth.blockchain, + TxPool: eth.txPool, + Merger: merger, + Network: config.NetworkId, + Sync: config.SyncMode, + BloomCache: uint64(cacheLimit), + EventMux: eth.eventMux, + Checkpoint: checkpoint, + PeerRequiredBlocks: config.PeerRequiredBlocks, }); err != nil { return nil, err } - eth.miner = miner.New(eth, &config.Miner, chainConfig, eth.EventMux(), eth.engine, eth.isLocalBlock, merger) + eth.miner = miner.New(eth, &config.Miner, chainConfig, eth.EventMux(), eth.engine, eth.isLocalBlock) eth.miner.SetExtra(makeExtraData(config.Miner.ExtraData)) // Setup DNS discovery iterators. diff --git a/eth/catalyst/api.go b/eth/catalyst/api.go index 3c0b6d9e43..45f233df6d 100644 --- a/eth/catalyst/api.go +++ b/eth/catalyst/api.go @@ -22,35 +22,17 @@ import ( "encoding/binary" "errors" "fmt" - "math/big" "time" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" - "github.com/ethereum/go-ethereum/consensus" - "github.com/ethereum/go-ethereum/consensus/beacon" - "github.com/ethereum/go-ethereum/consensus/misc" - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/state" + "github.com/ethereum/go-ethereum/core/beacon" + "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/eth" - "github.com/ethereum/go-ethereum/les" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/node" - chainParams "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rpc" - "github.com/ethereum/go-ethereum/trie" -) - -var ( - VALID = GenericStringResponse{"VALID"} - SUCCESS = GenericStringResponse{"SUCCESS"} - INVALID = ForkChoiceResponse{Status: "INVALID", PayloadID: nil} - SYNCING = ForkChoiceResponse{Status: "SYNCING", PayloadID: nil} - GenericServerError = rpc.CustomError{Code: -32000, ValidationError: "Server error"} - UnknownPayload = rpc.CustomError{Code: -32001, ValidationError: "Unknown payload"} - InvalidTB = rpc.CustomError{Code: -32002, ValidationError: "Invalid terminal block"} - InvalidPayloadID = rpc.CustomError{Code: 1, ValidationError: "invalid payload id"} ) // Register adds catalyst APIs to the full node. @@ -58,406 +40,314 @@ func Register(stack *node.Node, backend *eth.Ethereum) error { log.Warn("Catalyst mode enabled", "protocol", "eth") stack.RegisterAPIs([]rpc.API{ { - Namespace: "engine", - Version: "1.0", - Service: NewConsensusAPI(backend, nil), - Public: true, + Namespace: "engine", + Version: "1.0", + Service: NewConsensusAPI(backend), + Public: true, + Authenticated: true, }, - }) - return nil -} - -// RegisterLight adds catalyst APIs to the light client. -func RegisterLight(stack *node.Node, backend *les.LightEthereum) error { - log.Warn("Catalyst mode enabled", "protocol", "les") - stack.RegisterAPIs([]rpc.API{ { - Namespace: "engine", - Version: "1.0", - Service: NewConsensusAPI(nil, backend), - Public: true, + Namespace: "engine", + Version: "1.0", + Service: NewConsensusAPI(backend), + Public: true, + Authenticated: false, }, }) return nil } type ConsensusAPI struct { - light bool - eth *eth.Ethereum - les *les.LightEthereum - engine consensus.Engine // engine is the post-merge consensus engine, only for block creation - preparedBlocks map[uint64]*ExecutableDataV1 + eth *eth.Ethereum + remoteBlocks *headerQueue // Cache of remote payloads received + localBlocks *payloadQueue // Cache of local payloads generated } -func NewConsensusAPI(eth *eth.Ethereum, les *les.LightEthereum) *ConsensusAPI { - var engine consensus.Engine - if eth == nil { - if les.BlockChain().Config().TerminalTotalDifficulty == nil { - panic("Catalyst started without valid total difficulty") - } - if b, ok := les.Engine().(*beacon.Beacon); ok { - engine = beacon.New(b.InnerEngine()) - } else { - engine = beacon.New(les.Engine()) - } - } else { - if eth.BlockChain().Config().TerminalTotalDifficulty == nil { - panic("Catalyst started without valid total difficulty") - } - if b, ok := eth.Engine().(*beacon.Beacon); ok { - engine = beacon.New(b.InnerEngine()) - } else { - engine = beacon.New(eth.Engine()) - } +// NewConsensusAPI creates a new consensus api for the given backend. +// The underlying blockchain needs to have a valid terminal total difficulty set. +func NewConsensusAPI(eth *eth.Ethereum) *ConsensusAPI { + if eth.BlockChain().Config().TerminalTotalDifficulty == nil { + panic("Catalyst started without valid total difficulty") } return &ConsensusAPI{ - light: eth == nil, - eth: eth, - les: les, - engine: engine, - preparedBlocks: make(map[uint64]*ExecutableDataV1), + eth: eth, + remoteBlocks: newHeaderQueue(), + localBlocks: newPayloadQueue(), } } -// blockExecutionEnv gathers all the data required to execute -// a block, either when assembling it or when inserting it. -type blockExecutionEnv struct { - chain *core.BlockChain - state *state.StateDB - tcount int - gasPool *core.GasPool - - header *types.Header - txs []*types.Transaction - receipts []*types.Receipt -} - -func (env *blockExecutionEnv) commitTransaction(tx *types.Transaction, coinbase common.Address) error { - vmconfig := *env.chain.GetVMConfig() - snap := env.state.Snapshot() - receipt, err := core.ApplyTransaction(env.chain.Config(), env.chain, &coinbase, env.gasPool, env.state, env.header, tx, &env.header.GasUsed, vmconfig) - if err != nil { - env.state.RevertToSnapshot(snap) - return err +// ForkchoiceUpdatedV1 has several responsibilities: +// If the method is called with an empty head block: +// we return success, which can be used to check if the catalyst mode is enabled +// If the total difficulty was not reached: +// we return INVALID +// If the finalizedBlockHash is set: +// we check if we have the finalizedBlockHash in our db, if not we start a sync +// We try to set our blockchain to the headBlock +// If there are payloadAttributes: +// we try to assemble a block with the payloadAttributes and return its payloadID +func (api *ConsensusAPI) ForkchoiceUpdatedV1(update beacon.ForkchoiceStateV1, payloadAttributes *beacon.PayloadAttributesV1) (beacon.ForkChoiceResponse, error) { + log.Trace("Engine API request received", "method", "ForkchoiceUpdated", "head", update.HeadBlockHash, "finalized", update.FinalizedBlockHash, "safe", update.SafeBlockHash) + if update.HeadBlockHash == (common.Hash{}) { + log.Warn("Forkchoice requested update to zero hash") + return beacon.STATUS_INVALID, nil // TODO(karalabe): Why does someone send us this? + } + // Check whether we have the block yet in our database or not. If not, we'll + // need to either trigger a sync, or to reject this forkchoice update for a + // reason. + block := api.eth.BlockChain().GetBlockByHash(update.HeadBlockHash) + if block == nil { + // If the head hash is unknown (was not given to us in a newPayload request), + // we cannot resolve the header, so not much to do. This could be extended in + // the future to resolve from the `eth` network, but it's an unexpected case + // that should be fixed, not papered over. + header := api.remoteBlocks.get(update.HeadBlockHash) + if header == nil { + log.Warn("Forkchoice requested unknown head", "hash", update.HeadBlockHash) + return beacon.STATUS_SYNCING, nil + } + // Header advertised via a past newPayload request. Start syncing to it. + // Before we do however, make sure any legacy sync in switched off so we + // don't accidentally have 2 cycles running. + if merger := api.eth.Merger(); !merger.TDDReached() { + merger.ReachTTD() + api.eth.Downloader().Cancel() + } + log.Info("Forkchoice requested sync to new head", "number", header.Number, "hash", header.Hash()) + if err := api.eth.Downloader().BeaconSync(api.eth.SyncMode(), header); err != nil { + return beacon.STATUS_SYNCING, err + } + return beacon.STATUS_SYNCING, nil + } + // Block is known locally, just sanity check that the beacon client does not + // attempt to push us back to before the merge. + if block.Difficulty().BitLen() > 0 || block.NumberU64() == 0 { + var ( + td = api.eth.BlockChain().GetTd(update.HeadBlockHash, block.NumberU64()) + ptd = api.eth.BlockChain().GetTd(block.ParentHash(), block.NumberU64()-1) + ttd = api.eth.BlockChain().Config().TerminalTotalDifficulty + ) + if td == nil || (block.NumberU64() > 0 && ptd == nil) { + log.Error("TDs unavailable for TTD check", "number", block.NumberU64(), "hash", update.HeadBlockHash, "td", td, "parent", block.ParentHash(), "ptd", ptd) + return beacon.STATUS_INVALID, errors.New("TDs unavailable for TDD check") + } + if td.Cmp(ttd) < 0 || (block.NumberU64() > 0 && ptd.Cmp(ttd) > 0) { + log.Error("Refusing beacon update to pre-merge", "number", block.NumberU64(), "hash", update.HeadBlockHash, "diff", block.Difficulty(), "age", common.PrettyAge(time.Unix(int64(block.Time()), 0))) + return beacon.ForkChoiceResponse{PayloadStatus: beacon.PayloadStatusV1{Status: beacon.INVALIDTERMINALBLOCK}, PayloadID: nil}, nil + } } - env.txs = append(env.txs, tx) - env.receipts = append(env.receipts, receipt) - return nil -} -func (api *ConsensusAPI) makeEnv(parent *types.Block, header *types.Header) (*blockExecutionEnv, error) { - // The parent state might be missing. It can be the special scenario - // that consensus layer tries to build a new block based on the very - // old side chain block and the relevant state is already pruned. So - // try to retrieve the live state from the chain, if it's not existent, - // do the necessary recovery work. - var ( - err error - state *state.StateDB - ) - if api.eth.BlockChain().HasState(parent.Root()) { - state, err = api.eth.BlockChain().StateAt(parent.Root()) + if rawdb.ReadCanonicalHash(api.eth.ChainDb(), block.NumberU64()) != update.HeadBlockHash { + // Block is not canonical, set head. + if err := api.eth.BlockChain().SetChainHead(block); err != nil { + return beacon.STATUS_INVALID, err + } } else { - // The maximum acceptable reorg depth can be limited by the - // finalised block somehow. TODO(rjl493456442) fix the hard- - // coded number here later. - state, err = api.eth.StateAtBlock(parent, 1000, nil, false, false) + // If the head block is already in our canonical chain, the beacon client is + // probably resyncing. Ignore the update. + log.Info("Ignoring beacon update to old head", "number", block.NumberU64(), "hash", update.HeadBlockHash, "age", common.PrettyAge(time.Unix(int64(block.Time()), 0)), "have", api.eth.BlockChain().CurrentBlock().NumberU64()) } - if err != nil { - return nil, err + api.eth.SetSynced() + + // If the beacon client also advertised a finalized block, mark the local + // chain final and completely in PoS mode. + if update.FinalizedBlockHash != (common.Hash{}) { + if merger := api.eth.Merger(); !merger.PoSFinalized() { + merger.FinalizePoS() + } + // TODO (MariusVanDerWijden): If the finalized block is not in our canonical tree, somethings wrong + finalBlock := api.eth.BlockChain().GetBlockByHash(update.FinalizedBlockHash) + if finalBlock == nil { + log.Warn("Final block not available in database", "hash", update.FinalizedBlockHash) + return beacon.STATUS_INVALID, errors.New("final block not available") + } else if rawdb.ReadCanonicalHash(api.eth.ChainDb(), finalBlock.NumberU64()) != update.FinalizedBlockHash { + log.Warn("Final block not in canonical chain", "number", block.NumberU64(), "hash", update.HeadBlockHash) + return beacon.STATUS_INVALID, errors.New("final block not canonical") + } } - env := &blockExecutionEnv{ - chain: api.eth.BlockChain(), - state: state, - header: header, - gasPool: new(core.GasPool).AddGas(header.GasLimit), + // TODO (MariusVanDerWijden): Check if the safe block hash is in our canonical tree, if not somethings wrong + if update.SafeBlockHash != (common.Hash{}) { + safeBlock := api.eth.BlockChain().GetBlockByHash(update.SafeBlockHash) + if safeBlock == nil { + log.Warn("Safe block not available in database") + return beacon.STATUS_INVALID, errors.New("safe head not available") + } + if rawdb.ReadCanonicalHash(api.eth.ChainDb(), safeBlock.NumberU64()) != update.SafeBlockHash { + log.Warn("Safe block not in canonical chain") + return beacon.STATUS_INVALID, errors.New("safe head not canonical") + } } - return env, nil + // If payload generation was requested, create a new block to be potentially + // sealed by the beacon client. The payload will be requested later, and we + // might replace it arbitrarily many times in between. + if payloadAttributes != nil { + log.Info("Creating new payload for sealing") + start := time.Now() + + data, err := api.assembleBlock(update.HeadBlockHash, payloadAttributes) + if err != nil { + log.Error("Failed to create sealing payload", "err", err) + return api.validForkChoiceResponse(nil), err // valid setHead, invalid payload + } + id := computePayloadId(update.HeadBlockHash, payloadAttributes) + api.localBlocks.put(id, data) + + log.Info("Created payload for sealing", "id", id, "elapsed", time.Since(start)) + return api.validForkChoiceResponse(&id), nil + } + return api.validForkChoiceResponse(nil), nil } -func (api *ConsensusAPI) GetPayloadV1(payloadID hexutil.Bytes) (*ExecutableDataV1, error) { - hash := []byte(payloadID) - if len(hash) < 8 { - return nil, &InvalidPayloadID +// validForkChoiceResponse returns the ForkChoiceResponse{VALID} +// with the latest valid hash and an optional payloadID. +func (api *ConsensusAPI) validForkChoiceResponse(id *beacon.PayloadID) beacon.ForkChoiceResponse { + currentHash := api.eth.BlockChain().CurrentBlock().Hash() + return beacon.ForkChoiceResponse{ + PayloadStatus: beacon.PayloadStatusV1{Status: beacon.VALID, LatestValidHash: ¤tHash}, + PayloadID: id, } - id := binary.BigEndian.Uint64(hash[:8]) - data, ok := api.preparedBlocks[id] - if !ok { - return nil, &UnknownPayload +} + +// ExchangeTransitionConfigurationV1 checks the given configuration against +// the configuration of the node. +func (api *ConsensusAPI) ExchangeTransitionConfigurationV1(config beacon.TransitionConfigurationV1) (*beacon.TransitionConfigurationV1, error) { + if config.TerminalTotalDifficulty == nil { + return nil, errors.New("invalid terminal total difficulty") + } + ttd := api.eth.BlockChain().Config().TerminalTotalDifficulty + if ttd.Cmp(config.TerminalTotalDifficulty.ToInt()) != 0 { + log.Warn("Invalid TTD configured", "geth", ttd, "beacon", config.TerminalTotalDifficulty) + return nil, fmt.Errorf("invalid ttd: execution %v consensus %v", ttd, config.TerminalTotalDifficulty) + } + + if config.TerminalBlockHash != (common.Hash{}) { + if hash := api.eth.BlockChain().GetCanonicalHash(uint64(config.TerminalBlockNumber)); hash == config.TerminalBlockHash { + return &beacon.TransitionConfigurationV1{ + TerminalTotalDifficulty: (*hexutil.Big)(ttd), + TerminalBlockHash: config.TerminalBlockHash, + TerminalBlockNumber: config.TerminalBlockNumber, + }, nil + } + return nil, fmt.Errorf("invalid terminal block hash") + } + return &beacon.TransitionConfigurationV1{TerminalTotalDifficulty: (*hexutil.Big)(ttd)}, nil +} + +// GetPayloadV1 returns a cached payload by id. +func (api *ConsensusAPI) GetPayloadV1(payloadID beacon.PayloadID) (*beacon.ExecutableDataV1, error) { + log.Trace("Engine API request received", "method", "GetPayload", "id", payloadID) + data := api.localBlocks.get(payloadID) + if data == nil { + return nil, &beacon.UnknownPayload } return data, nil } -func (api *ConsensusAPI) ForkchoiceUpdatedV1(heads ForkchoiceStateV1, PayloadAttributes *PayloadAttributesV1) (ForkChoiceResponse, error) { - if heads.HeadBlockHash == (common.Hash{}) { - return ForkChoiceResponse{Status: SUCCESS.Status, PayloadID: nil}, nil +// NewPayloadV1 creates an Eth1 block, inserts it in the chain, and returns the status of the chain. +func (api *ConsensusAPI) NewPayloadV1(params beacon.ExecutableDataV1) (beacon.PayloadStatusV1, error) { + log.Trace("Engine API request received", "method", "ExecutePayload", "number", params.Number, "hash", params.BlockHash) + block, err := beacon.ExecutableDataToBlock(params) + if err != nil { + log.Debug("Invalid NewPayload params", "params", params, "error", err) + return beacon.PayloadStatusV1{Status: beacon.INVALIDBLOCKHASH}, nil } - if err := api.checkTerminalTotalDifficulty(heads.HeadBlockHash); err != nil { - if block := api.eth.BlockChain().GetBlockByHash(heads.HeadBlockHash); block == nil { - // TODO (MariusVanDerWijden) trigger sync - return SYNCING, nil + // If we already have the block locally, ignore the entire execution and just + // return a fake success. + if block := api.eth.BlockChain().GetBlockByHash(params.BlockHash); block != nil { + log.Warn("Ignoring already known beacon payload", "number", params.Number, "hash", params.BlockHash, "age", common.PrettyAge(time.Unix(int64(block.Time()), 0))) + hash := block.Hash() + return beacon.PayloadStatusV1{Status: beacon.VALID, LatestValidHash: &hash}, nil + } + // If the parent is missing, we - in theory - could trigger a sync, but that + // would also entail a reorg. That is problematic if multiple sibling blocks + // are being fed to us, and even more so, if some semi-distant uncle shortens + // our live chain. As such, payload execution will not permit reorgs and thus + // will not trigger a sync cycle. That is fine though, if we get a fork choice + // update after legit payload executions. + parent := api.eth.BlockChain().GetBlock(block.ParentHash(), block.NumberU64()-1) + if parent == nil { + // Stash the block away for a potential forced forckchoice update to it + // at a later time. + api.remoteBlocks.put(block.Hash(), block.Header()) + + // Although we don't want to trigger a sync, if there is one already in + // progress, try to extend if with the current payload request to relieve + // some strain from the forkchoice update. + if err := api.eth.Downloader().BeaconExtend(api.eth.SyncMode(), block.Header()); err == nil { + log.Debug("Payload accepted for sync extension", "number", params.Number, "hash", params.BlockHash) + return beacon.PayloadStatusV1{Status: beacon.SYNCING}, nil } - return INVALID, err + // Either no beacon sync was started yet, or it rejected the delivered + // payload as non-integratable on top of the existing sync. We'll just + // have to rely on the beacon client to forcefully update the head with + // a forkchoice update request. + log.Warn("Ignoring payload with missing parent", "number", params.Number, "hash", params.BlockHash, "parent", params.ParentHash) + return beacon.PayloadStatusV1{Status: beacon.ACCEPTED}, nil } - // If the finalized block is set, check if it is in our blockchain - if heads.FinalizedBlockHash != (common.Hash{}) { - if block := api.eth.BlockChain().GetBlockByHash(heads.FinalizedBlockHash); block == nil { - // TODO (MariusVanDerWijden) trigger sync - return SYNCING, nil - } + // We have an existing parent, do some sanity checks to avoid the beacon client + // triggering too early + var ( + td = api.eth.BlockChain().GetTd(parent.Hash(), parent.NumberU64()) + ttd = api.eth.BlockChain().Config().TerminalTotalDifficulty + ) + if td.Cmp(ttd) < 0 { + log.Warn("Ignoring pre-merge payload", "number", params.Number, "hash", params.BlockHash, "td", td, "ttd", ttd) + return beacon.PayloadStatusV1{Status: beacon.INVALIDTERMINALBLOCK}, nil } - // SetHead - if err := api.setHead(heads.HeadBlockHash); err != nil { - return INVALID, err + if block.Time() <= parent.Time() { + log.Warn("Invalid timestamp", "parent", block.Time(), "block", block.Time()) + return api.invalid(errors.New("invalid timestamp")), nil } - // Assemble block (if needed) - if PayloadAttributes != nil { - data, err := api.assembleBlock(heads.HeadBlockHash, PayloadAttributes) - if err != nil { - return INVALID, err - } - hash := computePayloadId(heads.HeadBlockHash, PayloadAttributes) - id := binary.BigEndian.Uint64(hash) - api.preparedBlocks[id] = data - log.Info("Created payload", "payloadid", id) - // TODO (MariusVanDerWijden) do something with the payloadID? - hex := hexutil.Bytes(hash) - return ForkChoiceResponse{Status: SUCCESS.Status, PayloadID: &hex}, nil + if !api.eth.BlockChain().HasBlockAndState(block.ParentHash(), block.NumberU64()-1) { + api.remoteBlocks.put(block.Hash(), block.Header()) + log.Warn("State not available, ignoring new payload") + return beacon.PayloadStatusV1{Status: beacon.ACCEPTED}, nil } - return ForkChoiceResponse{Status: SUCCESS.Status, PayloadID: nil}, nil + log.Trace("Inserting block without sethead", "hash", block.Hash(), "number", block.Number) + if err := api.eth.BlockChain().InsertBlockWithoutSetHead(block); err != nil { + log.Warn("NewPayloadV1: inserting block failed", "error", err) + return api.invalid(err), nil + } + // We've accepted a valid payload from the beacon client. Mark the local + // chain transitions to notify other subsystems (e.g. downloader) of the + // behavioral change. + if merger := api.eth.Merger(); !merger.TDDReached() { + merger.ReachTTD() + api.eth.Downloader().Cancel() + } + hash := block.Hash() + return beacon.PayloadStatusV1{Status: beacon.VALID, LatestValidHash: &hash}, nil } -func computePayloadId(headBlockHash common.Hash, params *PayloadAttributesV1) []byte { +// computePayloadId computes a pseudo-random payloadid, based on the parameters. +func computePayloadId(headBlockHash common.Hash, params *beacon.PayloadAttributesV1) beacon.PayloadID { // Hash hasher := sha256.New() hasher.Write(headBlockHash[:]) binary.Write(hasher, binary.BigEndian, params.Timestamp) hasher.Write(params.Random[:]) hasher.Write(params.SuggestedFeeRecipient[:]) - return hasher.Sum([]byte{})[:8] + var out beacon.PayloadID + copy(out[:], hasher.Sum(nil)[:8]) + return out } -func (api *ConsensusAPI) invalid() ExecutePayloadResponse { - if api.light { - return ExecutePayloadResponse{Status: INVALID.Status, LatestValidHash: api.les.BlockChain().CurrentHeader().Hash()} - } - return ExecutePayloadResponse{Status: INVALID.Status, LatestValidHash: api.eth.BlockChain().CurrentHeader().Hash()} +// invalid returns a response "INVALID" with the latest valid hash set to the current head. +func (api *ConsensusAPI) invalid(err error) beacon.PayloadStatusV1 { + currentHash := api.eth.BlockChain().CurrentHeader().Hash() + errorMsg := err.Error() + return beacon.PayloadStatusV1{Status: beacon.INVALID, LatestValidHash: ¤tHash, ValidationError: &errorMsg} } -// ExecutePayload creates an Eth1 block, inserts it in the chain, and returns the status of the chain. -func (api *ConsensusAPI) ExecutePayloadV1(params ExecutableDataV1) (ExecutePayloadResponse, error) { - block, err := ExecutableDataToBlock(params) - if err != nil { - return api.invalid(), err - } - if api.light { - parent := api.les.BlockChain().GetHeaderByHash(params.ParentHash) - if parent == nil { - return api.invalid(), fmt.Errorf("could not find parent %x", params.ParentHash) - } - if err = api.les.BlockChain().InsertHeader(block.Header()); err != nil { - return api.invalid(), err - } - return ExecutePayloadResponse{Status: VALID.Status, LatestValidHash: block.Hash()}, nil - } - if !api.eth.BlockChain().HasBlock(block.ParentHash(), block.NumberU64()-1) { - /* - TODO (MariusVanDerWijden) reenable once sync is merged - if err := api.eth.Downloader().BeaconSync(api.eth.SyncMode(), block.Header()); err != nil { - return SYNCING, err - } - */ - // TODO (MariusVanDerWijden) we should return nil here not empty hash - return ExecutePayloadResponse{Status: SYNCING.Status, LatestValidHash: common.Hash{}}, nil - } - parent := api.eth.BlockChain().GetBlockByHash(params.ParentHash) - td := api.eth.BlockChain().GetTd(parent.Hash(), block.NumberU64()-1) - ttd := api.eth.BlockChain().Config().TerminalTotalDifficulty - if td.Cmp(ttd) < 0 { - return api.invalid(), fmt.Errorf("can not execute payload on top of block with low td got: %v threshold %v", td, ttd) - } - if err := api.eth.BlockChain().InsertBlockWithoutSetHead(block); err != nil { - return api.invalid(), err - } - - if merger := api.merger(); !merger.TDDReached() { - merger.ReachTTD() - } - return ExecutePayloadResponse{Status: VALID.Status, LatestValidHash: block.Hash()}, nil -} - -// AssembleBlock creates a new block, inserts it into the chain, and returns the "execution -// data" required for eth2 clients to process the new block. -func (api *ConsensusAPI) assembleBlock(parentHash common.Hash, params *PayloadAttributesV1) (*ExecutableDataV1, error) { - if api.light { - return nil, errors.New("not supported") - } +// assembleBlock creates a new block and returns the "execution +// data" required for beacon clients to process the new block. +func (api *ConsensusAPI) assembleBlock(parentHash common.Hash, params *beacon.PayloadAttributesV1) (*beacon.ExecutableDataV1, error) { log.Info("Producing block", "parentHash", parentHash) - - bc := api.eth.BlockChain() - parent := bc.GetBlockByHash(parentHash) - if parent == nil { - log.Warn("Cannot assemble block with parent hash to unknown block", "parentHash", parentHash) - return nil, fmt.Errorf("cannot assemble block with unknown parent %s", parentHash) - } - - if params.Timestamp < parent.Time() { - return nil, fmt.Errorf("child timestamp lower than parent's: %d < %d", params.Timestamp, parent.Time()) - } - if now := uint64(time.Now().Unix()); params.Timestamp > now+1 { - diff := time.Duration(params.Timestamp-now) * time.Second - log.Warn("Producing block too far in the future", "diff", common.PrettyDuration(diff)) - } - pending := api.eth.TxPool().Pending(true) - coinbase := params.SuggestedFeeRecipient - num := parent.Number() - header := &types.Header{ - ParentHash: parent.Hash(), - Number: num.Add(num, common.Big1), - Coinbase: coinbase, - GasLimit: parent.GasLimit(), // Keep the gas limit constant in this prototype - Extra: []byte{}, // TODO (MariusVanDerWijden) properly set extra data - Time: params.Timestamp, - } - if config := api.eth.BlockChain().Config(); config.IsLondon(header.Number) { - header.BaseFee = misc.CalcBaseFee(config, parent.Header()) - } - if err := api.engine.Prepare(bc, header); err != nil { - return nil, err - } - env, err := api.makeEnv(parent, header) + block, err := api.eth.Miner().GetSealingBlock(parentHash, params.Timestamp, params.SuggestedFeeRecipient, params.Random) if err != nil { return nil, err } - var ( - signer = types.MakeSigner(bc.Config(), header.Number) - txHeap = types.NewTransactionsByPriceAndNonce(signer, pending, nil) - transactions []*types.Transaction - ) - for { - if env.gasPool.Gas() < chainParams.TxGas { - log.Trace("Not enough gas for further transactions", "have", env.gasPool, "want", chainParams.TxGas) - break - } - tx := txHeap.Peek() - if tx == nil { - break - } - - // The sender is only for logging purposes, and it doesn't really matter if it's correct. - from, _ := types.Sender(signer, tx) - - // Execute the transaction - env.state.Prepare(tx.Hash(), env.tcount) - err = env.commitTransaction(tx, coinbase) - switch err { - case core.ErrGasLimitReached: - // Pop the current out-of-gas transaction without shifting in the next from the account - log.Trace("Gas limit exceeded for current block", "sender", from) - txHeap.Pop() - - case core.ErrNonceTooLow: - // New head notification data race between the transaction pool and miner, shift - log.Trace("Skipping transaction with low nonce", "sender", from, "nonce", tx.Nonce()) - txHeap.Shift() - - case core.ErrNonceTooHigh: - // Reorg notification data race between the transaction pool and miner, skip account = - log.Trace("Skipping account with high nonce", "sender", from, "nonce", tx.Nonce()) - txHeap.Pop() - - case nil: - // Everything ok, collect the logs and shift in the next transaction from the same account - env.tcount++ - txHeap.Shift() - transactions = append(transactions, tx) - - default: - // Strange error, discard the transaction and get the next in line (note, the - // nonce-too-high clause will prevent us from executing in vain). - log.Debug("Transaction failed, account skipped", "hash", tx.Hash(), "err", err) - txHeap.Shift() - } - } - // Create the block. - block, err := api.engine.FinalizeAndAssemble(bc, header, env.state, transactions, nil /* uncles */, env.receipts) - if err != nil { - return nil, err - } - return BlockToExecutableData(block, params.Random), nil -} - -func encodeTransactions(txs []*types.Transaction) [][]byte { - var enc = make([][]byte, len(txs)) - for i, tx := range txs { - enc[i], _ = tx.MarshalBinary() - } - return enc -} - -func decodeTransactions(enc [][]byte) ([]*types.Transaction, error) { - var txs = make([]*types.Transaction, len(enc)) - for i, encTx := range enc { - var tx types.Transaction - if err := tx.UnmarshalBinary(encTx); err != nil { - return nil, fmt.Errorf("invalid transaction %d: %v", i, err) - } - txs[i] = &tx - } - return txs, nil -} - -func ExecutableDataToBlock(params ExecutableDataV1) (*types.Block, error) { - txs, err := decodeTransactions(params.Transactions) - if err != nil { - return nil, err - } - if len(params.ExtraData) > 32 { - return nil, fmt.Errorf("invalid extradata length: %v", len(params.ExtraData)) - } - number := big.NewInt(0) - number.SetUint64(params.Number) - header := &types.Header{ - ParentHash: params.ParentHash, - UncleHash: types.EmptyUncleHash, - Coinbase: params.FeeRecipient, - Root: params.StateRoot, - TxHash: types.DeriveSha(types.Transactions(txs), trie.NewStackTrie(nil)), - ReceiptHash: params.ReceiptsRoot, - Bloom: types.BytesToBloom(params.LogsBloom), - Difficulty: common.Big0, - Number: number, - GasLimit: params.GasLimit, - GasUsed: params.GasUsed, - Time: params.Timestamp, - BaseFee: params.BaseFeePerGas, - Extra: params.ExtraData, - // TODO (MariusVanDerWijden) add params.Random to header once required - } - block := types.NewBlockWithHeader(header).WithBody(txs, nil /* uncles */) - if block.Hash() != params.BlockHash { - return nil, fmt.Errorf("blockhash mismatch, want %x, got %x", params.BlockHash, block.Hash()) - } - return block, nil -} - -func BlockToExecutableData(block *types.Block, random common.Hash) *ExecutableDataV1 { - return &ExecutableDataV1{ - BlockHash: block.Hash(), - ParentHash: block.ParentHash(), - FeeRecipient: block.Coinbase(), - StateRoot: block.Root(), - Number: block.NumberU64(), - GasLimit: block.GasLimit(), - GasUsed: block.GasUsed(), - BaseFeePerGas: block.BaseFee(), - Timestamp: block.Time(), - ReceiptsRoot: block.ReceiptHash(), - LogsBloom: block.Bloom().Bytes(), - Transactions: encodeTransactions(block.Transactions()), - Random: random, - ExtraData: block.Extra(), - } + return beacon.BlockToExecutableData(block), nil } // Used in tests to add a the list of transactions from a block to the tx pool. @@ -467,70 +357,3 @@ func (api *ConsensusAPI) insertTransactions(txs types.Transactions) error { } return nil } - -func (api *ConsensusAPI) checkTerminalTotalDifficulty(head common.Hash) error { - // shortcut if we entered PoS already - if api.merger().PoSFinalized() { - return nil - } - // make sure the parent has enough terminal total difficulty - newHeadBlock := api.eth.BlockChain().GetBlockByHash(head) - if newHeadBlock == nil { - return &GenericServerError - } - td := api.eth.BlockChain().GetTd(newHeadBlock.Hash(), newHeadBlock.NumberU64()) - if td != nil && td.Cmp(api.eth.BlockChain().Config().TerminalTotalDifficulty) < 0 { - return &InvalidTB - } - return nil -} - -// setHead is called to perform a force choice. -func (api *ConsensusAPI) setHead(newHead common.Hash) error { - log.Info("Setting head", "head", newHead) - if api.light { - headHeader := api.les.BlockChain().CurrentHeader() - if headHeader.Hash() == newHead { - return nil - } - newHeadHeader := api.les.BlockChain().GetHeaderByHash(newHead) - if newHeadHeader == nil { - return &GenericServerError - } - if err := api.les.BlockChain().SetChainHead(newHeadHeader); err != nil { - return err - } - // Trigger the transition if it's the first `NewHead` event. - merger := api.merger() - if !merger.PoSFinalized() { - merger.FinalizePoS() - } - return nil - } - headBlock := api.eth.BlockChain().CurrentBlock() - if headBlock.Hash() == newHead { - return nil - } - newHeadBlock := api.eth.BlockChain().GetBlockByHash(newHead) - if newHeadBlock == nil { - return &GenericServerError - } - if err := api.eth.BlockChain().SetChainHead(newHeadBlock); err != nil { - return err - } - // Trigger the transition if it's the first `NewHead` event. - if merger := api.merger(); !merger.PoSFinalized() { - merger.FinalizePoS() - } - // TODO (MariusVanDerWijden) are we really synced now? - api.eth.SetSynced() - return nil -} - -// Helper function, return the merger instance. -func (api *ConsensusAPI) merger() *consensus.Merger { - if api.light { - return api.les.Merger() - } - return api.eth.Merger() -} diff --git a/eth/catalyst/api_test.go b/eth/catalyst/api_test.go index 1f1f017e5e..a9b0fd19cc 100644 --- a/eth/catalyst/api_test.go +++ b/eth/catalyst/api_test.go @@ -17,6 +17,7 @@ package catalyst import ( + "fmt" "math/big" "testing" "time" @@ -25,6 +26,7 @@ import ( "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/consensus/ethash" "github.com/ethereum/go-ethereum/core" + "github.com/ethereum/go-ethereum/core/beacon" "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" @@ -44,36 +46,16 @@ var ( testBalance = big.NewInt(2e18) ) -func generateTestChain() (*core.Genesis, []*types.Block) { - db := rawdb.NewMemoryDatabase() - config := params.AllEthashProtocolChanges - genesis := &core.Genesis{ - Config: config, - Alloc: core.GenesisAlloc{testAddr: {Balance: testBalance}}, - ExtraData: []byte("test genesis"), - Timestamp: 9000, - BaseFee: big.NewInt(params.InitialBaseFee), - } - generate := func(i int, g *core.BlockGen) { - g.OffsetTime(5) - g.SetExtra([]byte("test")) - } - gblock := genesis.ToBlock(db) - engine := ethash.NewFaker() - blocks, _ := core.GenerateChain(config, gblock, engine, db, 10, generate) - blocks = append([]*types.Block{gblock}, blocks...) - return genesis, blocks -} - func generatePreMergeChain(n int) (*core.Genesis, []*types.Block) { db := rawdb.NewMemoryDatabase() config := params.AllEthashProtocolChanges genesis := &core.Genesis{ - Config: config, - Alloc: core.GenesisAlloc{testAddr: {Balance: testBalance}}, - ExtraData: []byte("test genesis"), - Timestamp: 9000, - BaseFee: big.NewInt(params.InitialBaseFee), + Config: config, + Alloc: core.GenesisAlloc{testAddr: {Balance: testBalance}}, + ExtraData: []byte("test genesis"), + Timestamp: 9000, + BaseFee: big.NewInt(params.InitialBaseFee), + Difficulty: big.NewInt(0), } testNonce := uint64(0) generate := func(i int, g *core.BlockGen) { @@ -101,14 +83,14 @@ func TestEth2AssembleBlock(t *testing.T) { n, ethservice := startEthService(t, genesis, blocks) defer n.Close() - api := NewConsensusAPI(ethservice, nil) + api := NewConsensusAPI(ethservice) signer := types.NewEIP155Signer(ethservice.BlockChain().Config().ChainID) tx, err := types.SignTx(types.NewTransaction(uint64(10), blocks[9].Coinbase(), big.NewInt(1000), params.TxGas, big.NewInt(params.InitialBaseFee), nil), signer, testKey) if err != nil { t.Fatalf("error signing transaction, err=%v", err) } ethservice.TxPool().AddLocal(tx) - blockParams := PayloadAttributesV1{ + blockParams := beacon.PayloadAttributesV1{ Timestamp: blocks[9].Time() + 5, } execData, err := api.assembleBlock(blocks[9].Hash(), &blockParams) @@ -127,11 +109,11 @@ func TestEth2AssembleBlockWithAnotherBlocksTxs(t *testing.T) { n, ethservice := startEthService(t, genesis, blocks[:9]) defer n.Close() - api := NewConsensusAPI(ethservice, nil) + api := NewConsensusAPI(ethservice) // Put the 10th block's tx in the pool and produce a new block api.insertTransactions(blocks[9].Transactions()) - blockParams := PayloadAttributesV1{ + blockParams := beacon.PayloadAttributesV1{ Timestamp: blocks[8].Time() + 5, } execData, err := api.assembleBlock(blocks[8].Hash(), &blockParams) @@ -148,48 +130,61 @@ func TestSetHeadBeforeTotalDifficulty(t *testing.T) { n, ethservice := startEthService(t, genesis, blocks) defer n.Close() - api := NewConsensusAPI(ethservice, nil) - fcState := ForkchoiceStateV1{ + api := NewConsensusAPI(ethservice) + fcState := beacon.ForkchoiceStateV1{ HeadBlockHash: blocks[5].Hash(), SafeBlockHash: common.Hash{}, FinalizedBlockHash: common.Hash{}, } - if _, err := api.ForkchoiceUpdatedV1(fcState, nil); err == nil { - t.Errorf("fork choice updated before total terminal difficulty should fail") + if resp, err := api.ForkchoiceUpdatedV1(fcState, nil); err != nil { + t.Errorf("fork choice updated should not error: %v", err) + } else if resp.PayloadStatus.Status != beacon.INVALIDTERMINALBLOCK { + t.Errorf("fork choice updated before total terminal difficulty should be INVALID") } } func TestEth2PrepareAndGetPayload(t *testing.T) { - genesis, blocks := generatePreMergeChain(10) - // We need to properly set the terminal total difficulty - genesis.Config.TerminalTotalDifficulty.Sub(genesis.Config.TerminalTotalDifficulty, blocks[9].Difficulty()) - n, ethservice := startEthService(t, genesis, blocks[:9]) - defer n.Close() + // TODO (MariusVanDerWijden) TestEth2PrepareAndGetPayload is currently broken, fixed in upcoming merge-kiln-v2 pr + /* + genesis, blocks := generatePreMergeChain(10) + // We need to properly set the terminal total difficulty + genesis.Config.TerminalTotalDifficulty.Sub(genesis.Config.TerminalTotalDifficulty, blocks[9].Difficulty()) + n, ethservice := startEthService(t, genesis, blocks[:9]) + defer n.Close() - api := NewConsensusAPI(ethservice, nil) + api := NewConsensusAPI(ethservice) - // Put the 10th block's tx in the pool and produce a new block - api.insertTransactions(blocks[9].Transactions()) - blockParams := PayloadAttributesV1{ - Timestamp: blocks[8].Time() + 5, - } - fcState := ForkchoiceStateV1{ - HeadBlockHash: blocks[8].Hash(), - SafeBlockHash: common.Hash{}, - FinalizedBlockHash: common.Hash{}, - } - _, err := api.ForkchoiceUpdatedV1(fcState, &blockParams) - if err != nil { - t.Fatalf("error preparing payload, err=%v", err) - } - payloadID := computePayloadId(fcState.HeadBlockHash, &blockParams) - execData, err := api.GetPayloadV1(hexutil.Bytes(payloadID)) - if err != nil { - t.Fatalf("error getting payload, err=%v", err) - } - if len(execData.Transactions) != blocks[9].Transactions().Len() { - t.Fatalf("invalid number of transactions %d != 1", len(execData.Transactions)) - } + // Put the 10th block's tx in the pool and produce a new block + api.insertTransactions(blocks[9].Transactions()) + blockParams := beacon.PayloadAttributesV1{ + Timestamp: blocks[8].Time() + 5, + } + fcState := beacon.ForkchoiceStateV1{ + HeadBlockHash: blocks[8].Hash(), + SafeBlockHash: common.Hash{}, + FinalizedBlockHash: common.Hash{}, + } + _, err := api.ForkchoiceUpdatedV1(fcState, &blockParams) + if err != nil { + t.Fatalf("error preparing payload, err=%v", err) + } + payloadID := computePayloadId(fcState.HeadBlockHash, &blockParams) + execData, err := api.GetPayloadV1(payloadID) + if err != nil { + t.Fatalf("error getting payload, err=%v", err) + } + if len(execData.Transactions) != blocks[9].Transactions().Len() { + t.Fatalf("invalid number of transactions %d != 1", len(execData.Transactions)) + } + // Test invalid payloadID + var invPayload beacon.PayloadID + copy(invPayload[:], payloadID[:]) + invPayload[0] = ^invPayload[0] + _, err = api.GetPayloadV1(invPayload) + if err == nil { + t.Fatal("expected error retrieving invalid payload") + } + */ } func checkLogEvents(t *testing.T, logsCh <-chan []*types.Log, rmLogsCh <-chan core.RemovedLogsEvent, wantNew, wantRemoved int) { @@ -210,16 +205,60 @@ func checkLogEvents(t *testing.T, logsCh <-chan []*types.Log, rmLogsCh <-chan co } } +func TestInvalidPayloadTimestamp(t *testing.T) { + genesis, preMergeBlocks := generatePreMergeChain(10) + n, ethservice := startEthService(t, genesis, preMergeBlocks) + ethservice.Merger().ReachTTD() + defer n.Close() + var ( + api = NewConsensusAPI(ethservice) + parent = ethservice.BlockChain().CurrentBlock() + ) + tests := []struct { + time uint64 + shouldErr bool + }{ + {0, true}, + {parent.Time(), true}, + {parent.Time() - 1, true}, + + // TODO (MariusVanDerWijden) following tests are currently broken, + // fixed in upcoming merge-kiln-v2 pr + //{parent.Time() + 1, false}, + //{uint64(time.Now().Unix()) + uint64(time.Minute), false}, + } + + for i, test := range tests { + t.Run(fmt.Sprintf("Timestamp test: %v", i), func(t *testing.T) { + params := beacon.PayloadAttributesV1{ + Timestamp: test.time, + Random: crypto.Keccak256Hash([]byte{byte(123)}), + SuggestedFeeRecipient: parent.Coinbase(), + } + fcState := beacon.ForkchoiceStateV1{ + HeadBlockHash: parent.Hash(), + SafeBlockHash: common.Hash{}, + FinalizedBlockHash: common.Hash{}, + } + _, err := api.ForkchoiceUpdatedV1(fcState, ¶ms) + if test.shouldErr && err == nil { + t.Fatalf("expected error preparing payload with invalid timestamp, err=%v", err) + } else if !test.shouldErr && err != nil { + t.Fatalf("error preparing payload with valid timestamp, err=%v", err) + } + }) + } +} + func TestEth2NewBlock(t *testing.T) { t.Skip("ETH2 in Bor") - genesis, preMergeBlocks := generatePreMergeChain(10) n, ethservice := startEthService(t, genesis, preMergeBlocks) ethservice.Merger().ReachTTD() defer n.Close() var ( - api = NewConsensusAPI(ethservice, nil) + api = NewConsensusAPI(ethservice) parent = preMergeBlocks[len(preMergeBlocks)-1] // This EVM code generates a log when the contract is created. @@ -237,17 +276,17 @@ func TestEth2NewBlock(t *testing.T) { tx, _ := types.SignTx(types.NewContractCreation(nonce, new(big.Int), 1000000, big.NewInt(2*params.InitialBaseFee), logCode), types.LatestSigner(ethservice.BlockChain().Config()), testKey) ethservice.TxPool().AddLocal(tx) - execData, err := api.assembleBlock(parent.Hash(), &PayloadAttributesV1{ + execData, err := api.assembleBlock(parent.Hash(), &beacon.PayloadAttributesV1{ Timestamp: parent.Time() + 5, }) if err != nil { t.Fatalf("Failed to create the executable data %v", err) } - block, err := ExecutableDataToBlock(*execData) + block, err := beacon.ExecutableDataToBlock(*execData) if err != nil { t.Fatalf("Failed to convert executable data to block %v", err) } - newResp, err := api.ExecutePayloadV1(*execData) + newResp, err := api.NewPayloadV1(*execData) if err != nil || newResp.Status != "VALID" { t.Fatalf("Failed to insert block: %v", err) } @@ -255,7 +294,7 @@ func TestEth2NewBlock(t *testing.T) { t.Fatalf("Chain head shouldn't be updated") } checkLogEvents(t, newLogCh, rmLogsCh, 0, 0) - fcState := ForkchoiceStateV1{ + fcState := beacon.ForkchoiceStateV1{ HeadBlockHash: block.Hash(), SafeBlockHash: block.Hash(), FinalizedBlockHash: block.Hash(), @@ -277,17 +316,17 @@ func TestEth2NewBlock(t *testing.T) { ) parent = preMergeBlocks[len(preMergeBlocks)-1] for i := 0; i < 10; i++ { - execData, err := api.assembleBlock(parent.Hash(), &PayloadAttributesV1{ + execData, err := api.assembleBlock(parent.Hash(), &beacon.PayloadAttributesV1{ Timestamp: parent.Time() + 6, }) if err != nil { t.Fatalf("Failed to create the executable data %v", err) } - block, err := ExecutableDataToBlock(*execData) + block, err := beacon.ExecutableDataToBlock(*execData) if err != nil { t.Fatalf("Failed to convert executable data to block %v", err) } - newResp, err := api.ExecutePayloadV1(*execData) + newResp, err := api.NewPayloadV1(*execData) if err != nil || newResp.Status != "VALID" { t.Fatalf("Failed to insert block: %v", err) } @@ -295,7 +334,7 @@ func TestEth2NewBlock(t *testing.T) { t.Fatalf("Chain head shouldn't be updated") } - fcState := ForkchoiceStateV1{ + fcState := beacon.ForkchoiceStateV1{ HeadBlockHash: block.Hash(), SafeBlockHash: block.Hash(), FinalizedBlockHash: block.Hash(), @@ -391,7 +430,7 @@ func TestFullAPI(t *testing.T) { ethservice.Merger().ReachTTD() defer n.Close() var ( - api = NewConsensusAPI(ethservice, nil) + api = NewConsensusAPI(ethservice) parent = ethservice.BlockChain().CurrentBlock() // This EVM code generates a log when the contract is created. logCode = common.Hex2Bytes("60606040525b7f24ec1d3ff24c2f6ff210738839dbc339cd45a5294d85c79361016243157aae7b60405180905060405180910390a15b600a8060416000396000f360606040526008565b00") @@ -402,12 +441,13 @@ func TestFullAPI(t *testing.T) { tx, _ := types.SignTx(types.NewContractCreation(nonce, new(big.Int), 1000000, big.NewInt(2*params.InitialBaseFee), logCode), types.LatestSigner(ethservice.BlockChain().Config()), testKey) ethservice.TxPool().AddLocal(tx) - params := PayloadAttributesV1{ + params := beacon.PayloadAttributesV1{ Timestamp: parent.Time() + 1, Random: crypto.Keccak256Hash([]byte{byte(i)}), SuggestedFeeRecipient: parent.Coinbase(), } - fcState := ForkchoiceStateV1{ + + fcState := beacon.ForkchoiceStateV1{ HeadBlockHash: parent.Hash(), SafeBlockHash: common.Hash{}, FinalizedBlockHash: common.Hash{}, @@ -416,22 +456,21 @@ func TestFullAPI(t *testing.T) { if err != nil { t.Fatalf("error preparing payload, err=%v", err) } - if resp.Status != SUCCESS.Status { - t.Fatalf("error preparing payload, invalid status: %v", resp.Status) + if resp.PayloadStatus.Status != beacon.VALID { + t.Fatalf("error preparing payload, invalid status: %v", resp.PayloadStatus.Status) } - payloadID := computePayloadId(parent.Hash(), ¶ms) - payload, err := api.GetPayloadV1(hexutil.Bytes(payloadID)) + payload, err := api.GetPayloadV1(*resp.PayloadID) if err != nil { t.Fatalf("can't get payload: %v", err) } - execResp, err := api.ExecutePayloadV1(*payload) + execResp, err := api.NewPayloadV1(*payload) if err != nil { t.Fatalf("can't execute payload: %v", err) } - if execResp.Status != VALID.Status { + if execResp.Status != beacon.VALID { t.Fatalf("invalid status: %v", execResp.Status) } - fcState = ForkchoiceStateV1{ + fcState = beacon.ForkchoiceStateV1{ HeadBlockHash: payload.BlockHash, SafeBlockHash: payload.ParentHash, FinalizedBlockHash: payload.ParentHash, @@ -443,6 +482,51 @@ func TestFullAPI(t *testing.T) { t.Fatalf("Chain head should be updated") } parent = ethservice.BlockChain().CurrentBlock() - + } +} + +func TestExchangeTransitionConfig(t *testing.T) { + genesis, preMergeBlocks := generatePreMergeChain(10) + n, ethservice := startEthService(t, genesis, preMergeBlocks) + ethservice.Merger().ReachTTD() + defer n.Close() + var ( + api = NewConsensusAPI(ethservice) + ) + // invalid ttd + config := beacon.TransitionConfigurationV1{ + TerminalTotalDifficulty: (*hexutil.Big)(big.NewInt(0)), + TerminalBlockHash: common.Hash{}, + TerminalBlockNumber: 0, + } + if _, err := api.ExchangeTransitionConfigurationV1(config); err == nil { + t.Fatal("expected error on invalid config, invalid ttd") + } + // invalid terminal block hash + config = beacon.TransitionConfigurationV1{ + TerminalTotalDifficulty: (*hexutil.Big)(genesis.Config.TerminalTotalDifficulty), + TerminalBlockHash: common.Hash{1}, + TerminalBlockNumber: 0, + } + if _, err := api.ExchangeTransitionConfigurationV1(config); err == nil { + t.Fatal("expected error on invalid config, invalid hash") + } + // valid config + config = beacon.TransitionConfigurationV1{ + TerminalTotalDifficulty: (*hexutil.Big)(genesis.Config.TerminalTotalDifficulty), + TerminalBlockHash: common.Hash{}, + TerminalBlockNumber: 0, + } + if _, err := api.ExchangeTransitionConfigurationV1(config); err != nil { + t.Fatalf("expected no error on valid config, got %v", err) + } + // valid config + config = beacon.TransitionConfigurationV1{ + TerminalTotalDifficulty: (*hexutil.Big)(genesis.Config.TerminalTotalDifficulty), + TerminalBlockHash: preMergeBlocks[5].Hash(), + TerminalBlockNumber: 6, + } + if _, err := api.ExchangeTransitionConfigurationV1(config); err != nil { + t.Fatalf("expected no error on valid config, got %v", err) } } diff --git a/eth/catalyst/api_types.go b/eth/catalyst/api_types.go deleted file mode 100644 index 1f6703030a..0000000000 --- a/eth/catalyst/api_types.go +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package catalyst - -import ( - "math/big" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/hexutil" -) - -//go:generate go run github.com/fjl/gencodec -type PayloadAttributesV1 -field-override payloadAttributesMarshaling -out gen_blockparams.go - -// Structure described at https://github.com/ethereum/execution-apis/pull/74 -type PayloadAttributesV1 struct { - Timestamp uint64 `json:"timestamp" gencodec:"required"` - Random common.Hash `json:"random" gencodec:"required"` - SuggestedFeeRecipient common.Address `json:"suggestedFeeRecipient" gencodec:"required"` -} - -// JSON type overrides for PayloadAttributesV1. -type payloadAttributesMarshaling struct { - Timestamp hexutil.Uint64 -} - -//go:generate go run github.com/fjl/gencodec -type ExecutableDataV1 -field-override executableDataMarshaling -out gen_ed.go - -// Structure described at https://github.com/ethereum/execution-apis/src/engine/specification.md -type ExecutableDataV1 struct { - ParentHash common.Hash `json:"parentHash" gencodec:"required"` - FeeRecipient common.Address `json:"feeRecipient" gencodec:"required"` - StateRoot common.Hash `json:"stateRoot" gencodec:"required"` - ReceiptsRoot common.Hash `json:"receiptsRoot" gencodec:"required"` - LogsBloom []byte `json:"logsBloom" gencodec:"required"` - Random common.Hash `json:"random" gencodec:"required"` - Number uint64 `json:"blockNumber" gencodec:"required"` - GasLimit uint64 `json:"gasLimit" gencodec:"required"` - GasUsed uint64 `json:"gasUsed" gencodec:"required"` - Timestamp uint64 `json:"timestamp" gencodec:"required"` - ExtraData []byte `json:"extraData" gencodec:"required"` - BaseFeePerGas *big.Int `json:"baseFeePerGas" gencodec:"required"` - BlockHash common.Hash `json:"blockHash" gencodec:"required"` - Transactions [][]byte `json:"transactions" gencodec:"required"` -} - -// JSON type overrides for executableData. -type executableDataMarshaling struct { - Number hexutil.Uint64 - GasLimit hexutil.Uint64 - GasUsed hexutil.Uint64 - Timestamp hexutil.Uint64 - BaseFeePerGas *hexutil.Big - ExtraData hexutil.Bytes - LogsBloom hexutil.Bytes - Transactions []hexutil.Bytes -} - -//go:generate go run github.com/fjl/gencodec -type PayloadResponse -field-override payloadResponseMarshaling -out gen_payload.go - -type PayloadResponse struct { - PayloadID uint64 `json:"payloadId"` -} - -// JSON type overrides for payloadResponse. -type payloadResponseMarshaling struct { - PayloadID hexutil.Uint64 -} - -type NewBlockResponse struct { - Valid bool `json:"valid"` -} - -type GenericResponse struct { - Success bool `json:"success"` -} - -type GenericStringResponse struct { - Status string `json:"status"` -} - -type ExecutePayloadResponse struct { - Status string `json:"status"` - LatestValidHash common.Hash `json:"latestValidHash"` -} - -type ConsensusValidatedParams struct { - BlockHash common.Hash `json:"blockHash"` - Status string `json:"status"` -} - -type ForkChoiceResponse struct { - Status string `json:"status"` - PayloadID *hexutil.Bytes `json:"payloadId"` -} - -type ForkchoiceStateV1 struct { - HeadBlockHash common.Hash `json:"headBlockHash"` - SafeBlockHash common.Hash `json:"safeBlockHash"` - FinalizedBlockHash common.Hash `json:"finalizedBlockHash"` -} diff --git a/eth/catalyst/gen_payload.go b/eth/catalyst/gen_payload.go deleted file mode 100644 index a0b00fcfd8..0000000000 --- a/eth/catalyst/gen_payload.go +++ /dev/null @@ -1,36 +0,0 @@ -// Code generated by github.com/fjl/gencodec. DO NOT EDIT. - -package catalyst - -import ( - "encoding/json" - - "github.com/ethereum/go-ethereum/common/hexutil" -) - -var _ = (*payloadResponseMarshaling)(nil) - -// MarshalJSON marshals as JSON. -func (p PayloadResponse) MarshalJSON() ([]byte, error) { - type PayloadResponse struct { - PayloadID hexutil.Uint64 `json:"payloadId"` - } - var enc PayloadResponse - enc.PayloadID = hexutil.Uint64(p.PayloadID) - return json.Marshal(&enc) -} - -// UnmarshalJSON unmarshals from JSON. -func (p *PayloadResponse) UnmarshalJSON(input []byte) error { - type PayloadResponse struct { - PayloadID *hexutil.Uint64 `json:"payloadId"` - } - var dec PayloadResponse - if err := json.Unmarshal(input, &dec); err != nil { - return err - } - if dec.PayloadID != nil { - p.PayloadID = uint64(*dec.PayloadID) - } - return nil -} diff --git a/eth/catalyst/queue.go b/eth/catalyst/queue.go new file mode 100644 index 0000000000..ffb2f56bf4 --- /dev/null +++ b/eth/catalyst/queue.go @@ -0,0 +1,135 @@ +// Copyright 2022 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package catalyst + +import ( + "sync" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/beacon" + "github.com/ethereum/go-ethereum/core/types" +) + +// maxTrackedPayloads is the maximum number of prepared payloads the execution +// engine tracks before evicting old ones. Ideally we should only ever track the +// latest one; but have a slight wiggle room for non-ideal conditions. +const maxTrackedPayloads = 10 + +// maxTrackedHeaders is the maximum number of executed payloads the execution +// engine tracks before evicting old ones. Ideally we should only ever track the +// latest one; but have a slight wiggle room for non-ideal conditions. +const maxTrackedHeaders = 10 + +// payloadQueueItem represents an id->payload tuple to store until it's retrieved +// or evicted. +type payloadQueueItem struct { + id beacon.PayloadID + payload *beacon.ExecutableDataV1 +} + +// payloadQueue tracks the latest handful of constructed payloads to be retrieved +// by the beacon chain if block production is requested. +type payloadQueue struct { + payloads []*payloadQueueItem + lock sync.RWMutex +} + +// newPayloadQueue creates a pre-initialized queue with a fixed number of slots +// all containing empty items. +func newPayloadQueue() *payloadQueue { + return &payloadQueue{ + payloads: make([]*payloadQueueItem, maxTrackedPayloads), + } +} + +// put inserts a new payload into the queue at the given id. +func (q *payloadQueue) put(id beacon.PayloadID, data *beacon.ExecutableDataV1) { + q.lock.Lock() + defer q.lock.Unlock() + + copy(q.payloads[1:], q.payloads) + q.payloads[0] = &payloadQueueItem{ + id: id, + payload: data, + } +} + +// get retrieves a previously stored payload item or nil if it does not exist. +func (q *payloadQueue) get(id beacon.PayloadID) *beacon.ExecutableDataV1 { + q.lock.RLock() + defer q.lock.RUnlock() + + for _, item := range q.payloads { + if item == nil { + return nil // no more items + } + if item.id == id { + return item.payload + } + } + return nil +} + +// headerQueueItem represents an hash->header tuple to store until it's retrieved +// or evicted. +type headerQueueItem struct { + hash common.Hash + header *types.Header +} + +// headerQueue tracks the latest handful of constructed headers to be retrieved +// by the beacon chain if block production is requested. +type headerQueue struct { + headers []*headerQueueItem + lock sync.RWMutex +} + +// newHeaderQueue creates a pre-initialized queue with a fixed number of slots +// all containing empty items. +func newHeaderQueue() *headerQueue { + return &headerQueue{ + headers: make([]*headerQueueItem, maxTrackedHeaders), + } +} + +// put inserts a new header into the queue at the given hash. +func (q *headerQueue) put(hash common.Hash, data *types.Header) { + q.lock.Lock() + defer q.lock.Unlock() + + copy(q.headers[1:], q.headers) + q.headers[0] = &headerQueueItem{ + hash: hash, + header: data, + } +} + +// get retrieves a previously stored header item or nil if it does not exist. +func (q *headerQueue) get(hash common.Hash) *types.Header { + q.lock.RLock() + defer q.lock.RUnlock() + + for _, item := range q.headers { + if item == nil { + return nil // no more items + } + if item.hash == hash { + return item.header + } + } + return nil +} diff --git a/eth/downloader/beaconsync.go b/eth/downloader/beaconsync.go new file mode 100644 index 0000000000..d8ea58c239 --- /dev/null +++ b/eth/downloader/beaconsync.go @@ -0,0 +1,308 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package downloader + +import ( + "fmt" + "sync" + "sync/atomic" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/log" +) + +// beaconBackfiller is the chain and state backfilling that can be commenced once +// the skeleton syncer has successfully reverse downloaded all the headers up to +// the genesis block or an existing header in the database. Its operation is fully +// directed by the skeleton sync's head/tail events. +type beaconBackfiller struct { + downloader *Downloader // Downloader to direct via this callback implementation + syncMode SyncMode // Sync mode to use for backfilling the skeleton chains + success func() // Callback to run on successful sync cycle completion + filling bool // Flag whether the downloader is backfilling or not + started chan struct{} // Notification channel whether the downloader inited + lock sync.Mutex // Mutex protecting the sync lock +} + +// newBeaconBackfiller is a helper method to create the backfiller. +func newBeaconBackfiller(dl *Downloader, success func()) backfiller { + return &beaconBackfiller{ + downloader: dl, + success: success, + } +} + +// suspend cancels any background downloader threads. +func (b *beaconBackfiller) suspend() { + // If no filling is running, don't waste cycles + b.lock.Lock() + filling := b.filling + started := b.started + b.lock.Unlock() + + if !filling { + return + } + // A previous filling should be running, though it may happen that it hasn't + // yet started (being done on a new goroutine). Many concurrent beacon head + // announcements can lead to sync start/stop thrashing. In that case we need + // to wait for initialization before we can safely cancel it. It is safe to + // read this channel multiple times, it gets closed on startup. + <-started + + // Now that we're sure the downloader successfully started up, we can cancel + // it safely without running the risk of data races. + b.downloader.Cancel() +} + +// resume starts the downloader threads for backfilling state and chain data. +func (b *beaconBackfiller) resume() { + b.lock.Lock() + if b.filling { + // If a previous filling cycle is still running, just ignore this start + // request. // TODO(karalabe): We should make this channel driven + b.lock.Unlock() + return + } + b.filling = true + b.started = make(chan struct{}) + mode := b.syncMode + b.lock.Unlock() + + // Start the backfilling on its own thread since the downloader does not have + // its own lifecycle runloop. + go func() { + // Set the backfiller to non-filling when download completes + defer func() { + b.lock.Lock() + b.filling = false + b.lock.Unlock() + }() + // If the downloader fails, report an error as in beacon chain mode there + // should be no errors as long as the chain we're syncing to is valid. + if err := b.downloader.synchronise("", common.Hash{}, nil, nil, mode, true, b.started); err != nil { + log.Error("Beacon backfilling failed", "err", err) + return + } + // Synchronization succeeded. Since this happens async, notify the outer + // context to disable snap syncing and enable transaction propagation. + if b.success != nil { + b.success() + } + }() +} + +// setMode updates the sync mode from the current one to the requested one. If +// there's an active sync in progress, it will be cancelled and restarted. +func (b *beaconBackfiller) setMode(mode SyncMode) { + // Update the old sync mode and track if it was changed + b.lock.Lock() + updated := b.syncMode != mode + filling := b.filling + b.syncMode = mode + b.lock.Unlock() + + // If the sync mode was changed mid-sync, restart. This should never ever + // really happen, we just handle it to detect programming errors. + if !updated || !filling { + return + } + log.Error("Downloader sync mode changed mid-run", "old", mode.String(), "new", mode.String()) + b.suspend() + b.resume() +} + +// BeaconSync is the post-merge version of the chain synchronization, where the +// chain is not downloaded from genesis onward, rather from trusted head announces +// backwards. +// +// Internally backfilling and state sync is done the same way, but the header +// retrieval and scheduling is replaced. +func (d *Downloader) BeaconSync(mode SyncMode, head *types.Header) error { + return d.beaconSync(mode, head, true) +} + +// BeaconExtend is an optimistic version of BeaconSync, where an attempt is made +// to extend the current beacon chain with a new header, but in case of a mismatch, +// the old sync will not be terminated and reorged, rather the new head is dropped. +// +// This is useful if a beacon client is feeding us large chunks of payloads to run, +// but is not setting the head after each. +func (d *Downloader) BeaconExtend(mode SyncMode, head *types.Header) error { + return d.beaconSync(mode, head, false) +} + +// beaconSync is the post-merge version of the chain synchronization, where the +// chain is not downloaded from genesis onward, rather from trusted head announces +// backwards. +// +// Internally backfilling and state sync is done the same way, but the header +// retrieval and scheduling is replaced. +func (d *Downloader) beaconSync(mode SyncMode, head *types.Header, force bool) error { + // When the downloader starts a sync cycle, it needs to be aware of the sync + // mode to use (full, snap). To keep the skeleton chain oblivious, inject the + // mode into the backfiller directly. + // + // Super crazy dangerous type cast. Should be fine (TM), we're only using a + // different backfiller implementation for skeleton tests. + d.skeleton.filler.(*beaconBackfiller).setMode(mode) + + // Signal the skeleton sync to switch to a new head, however it wants + if err := d.skeleton.Sync(head, force); err != nil { + return err + } + return nil +} + +// findBeaconAncestor tries to locate the common ancestor link of the local chain +// and the beacon chain just requested. In the general case when our node was in +// sync and on the correct chain, checking the top N links should already get us +// a match. In the rare scenario when we ended up on a long reorganisation (i.e. +// none of the head links match), we do a binary search to find the ancestor. +func (d *Downloader) findBeaconAncestor() (uint64, error) { + // Figure out the current local head position + var chainHead *types.Header + + switch d.getMode() { + case FullSync: + chainHead = d.blockchain.CurrentBlock().Header() + case SnapSync: + chainHead = d.blockchain.CurrentFastBlock().Header() + default: + chainHead = d.lightchain.CurrentHeader() + } + number := chainHead.Number.Uint64() + + // Retrieve the skeleton bounds and ensure they are linked to the local chain + beaconHead, beaconTail, err := d.skeleton.Bounds() + if err != nil { + // This is a programming error. The chain backfiller was called with an + // invalid beacon sync state. Ideally we would panic here, but erroring + // gives us at least a remote chance to recover. It's still a big fault! + log.Error("Failed to retrieve beacon bounds", "err", err) + return 0, err + } + var linked bool + switch d.getMode() { + case FullSync: + linked = d.blockchain.HasBlock(beaconTail.ParentHash, beaconTail.Number.Uint64()-1) + case SnapSync: + linked = d.blockchain.HasFastBlock(beaconTail.ParentHash, beaconTail.Number.Uint64()-1) + default: + linked = d.blockchain.HasHeader(beaconTail.ParentHash, beaconTail.Number.Uint64()-1) + } + if !linked { + // This is a programming error. The chain backfiller was called with a + // tail that's not linked to the local chain. Whilst this should never + // happen, there might be some weirdnesses if beacon sync backfilling + // races with the user (or beacon client) calling setHead. Whilst panic + // would be the ideal thing to do, it is safer long term to attempt a + // recovery and fix any noticed issue after the fact. + log.Error("Beacon sync linkup unavailable", "number", beaconTail.Number.Uint64()-1, "hash", beaconTail.ParentHash) + return 0, fmt.Errorf("beacon linkup unavailable locally: %d [%x]", beaconTail.Number.Uint64()-1, beaconTail.ParentHash) + } + // Binary search to find the ancestor + start, end := beaconTail.Number.Uint64()-1, number + if number := beaconHead.Number.Uint64(); end > number { + // This shouldn't really happen in a healty network, but if the consensus + // clients feeds us a shorter chain as the canonical, we should not attempt + // to access non-existent skeleton items. + log.Warn("Beacon head lower than local chain", "beacon", number, "local", end) + end = number + } + for start+1 < end { + // Split our chain interval in two, and request the hash to cross check + check := (start + end) / 2 + + h := d.skeleton.Header(check) + n := h.Number.Uint64() + + var known bool + switch d.getMode() { + case FullSync: + known = d.blockchain.HasBlock(h.Hash(), n) + case SnapSync: + known = d.blockchain.HasFastBlock(h.Hash(), n) + default: + known = d.lightchain.HasHeader(h.Hash(), n) + } + if !known { + end = check + continue + } + start = check + } + return start, nil +} + +// fetchBeaconHeaders feeds skeleton headers to the downloader queue for scheduling +// until sync errors or is finished. +func (d *Downloader) fetchBeaconHeaders(from uint64) error { + head, _, err := d.skeleton.Bounds() + if err != nil { + return err + } + for { + // Retrieve a batch of headers and feed it to the header processor + var ( + headers = make([]*types.Header, 0, maxHeadersProcess) + hashes = make([]common.Hash, 0, maxHeadersProcess) + ) + for i := 0; i < maxHeadersProcess && from <= head.Number.Uint64(); i++ { + headers = append(headers, d.skeleton.Header(from)) + hashes = append(hashes, headers[i].Hash()) + from++ + } + if len(headers) > 0 { + log.Trace("Scheduling new beacon headers", "count", len(headers), "from", from-uint64(len(headers))) + select { + case d.headerProcCh <- &headerTask{ + headers: headers, + hashes: hashes, + }: + case <-d.cancelCh: + return errCanceled + } + } + // If we still have headers to import, loop and keep pushing them + if from <= head.Number.Uint64() { + continue + } + // If the pivot block is committed, signal header sync termination + if atomic.LoadInt32(&d.committed) == 1 { + select { + case d.headerProcCh <- nil: + return nil + case <-d.cancelCh: + return errCanceled + } + } + // State sync still going, wait a bit for new headers and retry + log.Trace("Pivot not yet committed, waiting...") + select { + case <-time.After(fsHeaderContCheck): + case <-d.cancelCh: + return errCanceled + } + head, _, err = d.skeleton.Bounds() + if err != nil { + return err + } + } +} diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go index cd399be7b0..1e68746f97 100644 --- a/eth/downloader/downloader.go +++ b/eth/downloader/downloader.go @@ -30,7 +30,6 @@ import ( "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/core/state/snapshot" "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/eth/protocols/eth" "github.com/ethereum/go-ethereum/eth/protocols/snap" "github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/event" @@ -79,6 +78,7 @@ var ( errCanceled = errors.New("syncing canceled (requested)") errTooOld = errors.New("peer's protocol version too old") errNoAncestorFound = errors.New("no common ancestor found") + ErrMergeTransition = errors.New("legacy sync reached the merge") ) // peerDropFn is a callback type for dropping a peer detected as malicious. @@ -123,6 +123,9 @@ type Downloader struct { // Channels headerProcCh chan *headerTask // Channel to feed the header processor new tasks + // Skeleton sync + skeleton *skeleton // Header skeleton to backfill the chain with (eth2 mode) + // State sync pivotHeader *types.Header // Pivot block header to dynamically push the syncing state root pivotLock sync.RWMutex // Lock protecting pivot header reads from updates @@ -201,7 +204,7 @@ type BlockChain interface { } // New creates a new downloader to fetch hashes and blocks from remote peers. -func New(checkpoint uint64, stateDb ethdb.Database, mux *event.TypeMux, chain BlockChain, lightchain LightChain, dropPeer peerDropFn) *Downloader { +func New(checkpoint uint64, stateDb ethdb.Database, mux *event.TypeMux, chain BlockChain, lightchain LightChain, dropPeer peerDropFn, success func()) *Downloader { if lightchain == nil { lightchain = chain } @@ -219,6 +222,8 @@ func New(checkpoint uint64, stateDb ethdb.Database, mux *event.TypeMux, chain Bl SnapSyncer: snap.NewSyncer(stateDb), stateSyncStart: make(chan *stateSync), } + dl.skeleton = newSkeleton(stateDb, dl.peers, dropPeer, newBeaconBackfiller(dl, success)) + go dl.stateFetcher() return dl } @@ -318,10 +323,10 @@ func (d *Downloader) UnregisterPeer(id string) error { return nil } -// Synchronise tries to sync up our local block chain with a remote peer, both +// LegacySync tries to sync up our local block chain with a remote peer, both // adding various sanity checks as well as wrapping it with various log entries. -func (d *Downloader) Synchronise(id string, head common.Hash, td *big.Int, mode SyncMode) error { - err := d.synchronise(id, head, td, mode) +func (d *Downloader) LegacySync(id string, head common.Hash, td, ttd *big.Int, mode SyncMode) error { + err := d.synchronise(id, head, td, ttd, mode, false, nil) switch err { case nil, errBusy, errCanceled: @@ -340,6 +345,9 @@ func (d *Downloader) Synchronise(id string, head common.Hash, td *big.Int, mode } return err } + if errors.Is(err, ErrMergeTransition) { + return err // This is an expected fault, don't keep printing it in a spin-loop + } log.Warn("Synchronisation failed, retrying", "err", err) return err } @@ -347,7 +355,21 @@ func (d *Downloader) Synchronise(id string, head common.Hash, td *big.Int, mode // synchronise will select the peer and use it for synchronising. If an empty string is given // it will use the best peer possible and synchronize if its TD is higher than our own. If any of the // checks fail an error will be returned. This method is synchronous -func (d *Downloader) synchronise(id string, hash common.Hash, td *big.Int, mode SyncMode) error { +func (d *Downloader) synchronise(id string, hash common.Hash, td, ttd *big.Int, mode SyncMode, beaconMode bool, beaconPing chan struct{}) error { + // The beacon header syncer is async. It will start this synchronization and + // will continue doing other tasks. However, if synchornization needs to be + // cancelled, the syncer needs to know if we reached the startup point (and + // inited the cancel cannel) or not yet. Make sure that we'll signal even in + // case of a failure. + if beaconPing != nil { + defer func() { + select { + case <-beaconPing: // already notified + default: + close(beaconPing) // weird exit condition, notify that it's safe to cancel (the nothing) + } + }() + } // Mock out the synchronisation if testing if d.synchroniseMock != nil { return d.synchroniseMock(id, hash) @@ -362,9 +384,6 @@ func (d *Downloader) synchronise(id string, hash common.Hash, td *big.Int, mode if atomic.CompareAndSwapInt32(&d.notified, 0, 1) { log.Info("Block synchronisation started") } - // If snap sync was requested, create the snap scheduler and switch to snap - // sync mode. Long term we could drop snap sync or merge the two together, - // but until snap becomes prevalent, we should support both. TODO(karalabe). if mode == SnapSync { // Snap sync uses the snapshot namespace to store potentially flakey data until // sync completely heals and finishes. Pause snapshot maintenance in the mean- @@ -402,11 +421,17 @@ func (d *Downloader) synchronise(id string, hash common.Hash, td *big.Int, mode atomic.StoreUint32(&d.mode, uint32(mode)) // Retrieve the origin peer and initiate the downloading process - p := d.peers.Peer(id) - if p == nil { - return errUnknownPeer + var p *peerConnection + if !beaconMode { // Beacon mode doesn't need a peer to sync from + p = d.peers.Peer(id) + if p == nil { + return errUnknownPeer + } } - return d.syncWithPeer(p, hash, td) + if beaconPing != nil { + close(beaconPing) + } + return d.syncWithPeer(p, hash, td, ttd, beaconMode) } func (d *Downloader) getMode() SyncMode { @@ -415,7 +440,7 @@ func (d *Downloader) getMode() SyncMode { // syncWithPeer starts a block synchronization based on the hash chain from the // specified peer and head hash. -func (d *Downloader) syncWithPeer(p *peerConnection, hash common.Hash, td *big.Int) (err error) { +func (d *Downloader) syncWithPeer(p *peerConnection, hash common.Hash, td, ttd *big.Int, beaconMode bool) (err error) { d.mux.Post(StartEvent{}) defer func() { // reset on error @@ -426,33 +451,57 @@ func (d *Downloader) syncWithPeer(p *peerConnection, hash common.Hash, td *big.I d.mux.Post(DoneEvent{latest}) } }() - if p.version < eth.ETH66 { - return fmt.Errorf("%w: advertized %d < required %d", errTooOld, p.version, eth.ETH66) - } mode := d.getMode() - log.Debug("Synchronising with the network", "peer", p.id, "eth", p.version, "head", hash, "td", td, "mode", mode) + if !beaconMode { + log.Debug("Synchronising with the network", "peer", p.id, "eth", p.version, "head", hash, "td", td, "mode", mode) + } else { + log.Debug("Backfilling with the network", "mode", mode) + } defer func(start time.Time) { log.Debug("Synchronisation terminated", "elapsed", common.PrettyDuration(time.Since(start))) }(time.Now()) // Look up the sync boundaries: the common ancestor and the target block - latest, pivot, err := d.fetchHead(p) - if err != nil { - return err + var latest, pivot *types.Header + if !beaconMode { + // In legacy mode, use the master peer to retrieve the headers from + latest, pivot, err = d.fetchHead(p) + if err != nil { + return err + } + } else { + // In beacon mode, user the skeleton chain to retrieve the headers from + latest, _, err = d.skeleton.Bounds() + if err != nil { + return err + } + if latest.Number.Uint64() > uint64(fsMinFullBlocks) { + pivot = d.skeleton.Header(latest.Number.Uint64() - uint64(fsMinFullBlocks)) + } } + // If no pivot block was returned, the head is below the min full block + // threshold (i.e. new chain). In that case we won't really snap sync + // anyway, but still need a valid pivot block to avoid some code hitting + // nil panics on access. if mode == SnapSync && pivot == nil { - // If no pivot block was returned, the head is below the min full block - // threshold (i.e. new chain). In that case we won't really snap sync - // anyway, but still need a valid pivot block to avoid some code hitting - // nil panics on an access. pivot = d.blockchain.CurrentBlock().Header() } height := latest.Number.Uint64() - origin, err := d.findAncestor(p, latest) - if err != nil { - return err + var origin uint64 + if !beaconMode { + // In legacy mode, reach out to the network and find the ancestor + origin, err = d.findAncestor(p, latest) + if err != nil { + return err + } + } else { + // In beacon mode, use the skeleton chain for the ancestor lookup + origin, err = d.findBeaconAncestor() + if err != nil { + return err + } } d.syncStatsLock.Lock() if d.syncStatsChainHeight <= origin || d.syncStatsChainOrigin > origin { @@ -523,11 +572,19 @@ func (d *Downloader) syncWithPeer(p *peerConnection, hash common.Hash, td *big.I if d.syncInitHook != nil { d.syncInitHook(origin, height) } + var headerFetcher func() error + if !beaconMode { + // In legacy mode, headers are retrieved from the network + headerFetcher = func() error { return d.fetchHeaders(p, origin+1, latest.Number.Uint64()) } + } else { + // In beacon mode, headers are served by the skeleton syncer + headerFetcher = func() error { return d.fetchBeaconHeaders(origin + 1) } + } fetchers := []func() error{ - func() error { return d.fetchHeaders(p, origin+1, latest.Number.Uint64()) }, // Headers are always retrieved - func() error { return d.fetchBodies(origin + 1) }, // Bodies are retrieved during normal and snap sync - func() error { return d.fetchReceipts(origin + 1) }, // Receipts are retrieved during snap sync - func() error { return d.processHeaders(origin+1, td) }, + headerFetcher, // Headers are always retrieved + func() error { return d.fetchBodies(origin+1, beaconMode) }, // Bodies are retrieved during normal and snap sync + func() error { return d.fetchReceipts(origin+1, beaconMode) }, // Receipts are retrieved during snap sync + func() error { return d.processHeaders(origin+1, td, ttd, beaconMode) }, } if mode == SnapSync { d.pivotLock.Lock() @@ -536,7 +593,7 @@ func (d *Downloader) syncWithPeer(p *peerConnection, hash common.Hash, td *big.I fetchers = append(fetchers, func() error { return d.processSnapSyncContent() }) } else if mode == FullSync { - fetchers = append(fetchers, d.processFullSyncContent) + fetchers = append(fetchers, func() error { return d.processFullSyncContent(ttd, beaconMode) }) } return d.spawnSync(fetchers) } @@ -602,6 +659,9 @@ func (d *Downloader) Terminate() { case <-d.quitCh: default: close(d.quitCh) + + // Terminate the internal beacon syncer + d.skeleton.Terminate() } d.quitLock.Unlock() @@ -1127,7 +1187,7 @@ func (d *Downloader) fillHeaderSkeleton(from uint64, skeleton []*types.Header) ( log.Debug("Filling up skeleton", "from", from) d.queue.ScheduleSkeleton(from, skeleton) - err := d.concurrentFetch((*headerQueue)(d)) + err := d.concurrentFetch((*headerQueue)(d), false) if err != nil { log.Debug("Skeleton fill failed", "err", err) } @@ -1141,9 +1201,9 @@ func (d *Downloader) fillHeaderSkeleton(from uint64, skeleton []*types.Header) ( // fetchBodies iteratively downloads the scheduled block bodies, taking any // available peers, reserving a chunk of blocks for each, waiting for delivery // and also periodically checking for timeouts. -func (d *Downloader) fetchBodies(from uint64) error { +func (d *Downloader) fetchBodies(from uint64, beaconMode bool) error { log.Debug("Downloading block bodies", "origin", from) - err := d.concurrentFetch((*bodyQueue)(d)) + err := d.concurrentFetch((*bodyQueue)(d), beaconMode) log.Debug("Block body download terminated", "err", err) return err @@ -1152,9 +1212,9 @@ func (d *Downloader) fetchBodies(from uint64) error { // fetchReceipts iteratively downloads the scheduled block receipts, taking any // available peers, reserving a chunk of receipts for each, waiting for delivery // and also periodically checking for timeouts. -func (d *Downloader) fetchReceipts(from uint64) error { +func (d *Downloader) fetchReceipts(from uint64, beaconMode bool) error { log.Debug("Downloading receipts", "origin", from) - err := d.concurrentFetch((*receiptQueue)(d)) + err := d.concurrentFetch((*receiptQueue)(d), beaconMode) log.Debug("Receipt download terminated", "err", err) return err @@ -1163,7 +1223,7 @@ func (d *Downloader) fetchReceipts(from uint64) error { // processHeaders takes batches of retrieved headers from an input channel and // keeps processing and scheduling them into the header chain and downloader's // queue until the stream ends or a failure occurs. -func (d *Downloader) processHeaders(origin uint64, td *big.Int) error { +func (d *Downloader) processHeaders(origin uint64, td, ttd *big.Int, beaconMode bool) error { // Keep a count of uncertain headers to roll back var ( rollback uint64 // Zero means no rollback (fine as you can't unroll the genesis) @@ -1211,35 +1271,40 @@ func (d *Downloader) processHeaders(origin uint64, td *big.Int) error { case <-d.cancelCh: } } - // If no headers were retrieved at all, the peer violated its TD promise that it had a - // better chain compared to ours. The only exception is if its promised blocks were - // already imported by other means (e.g. fetcher): - // - // R , L : Both at block 10 - // R: Mine block 11, and propagate it to L - // L: Queue block 11 for import - // L: Notice that R's head and TD increased compared to ours, start sync - // L: Import of block 11 finishes - // L: Sync begins, and finds common ancestor at 11 - // L: Request new headers up from 11 (R's TD was higher, it must have something) - // R: Nothing to give - if mode != LightSync { - head := d.blockchain.CurrentBlock() - if !gotHeaders && td.Cmp(d.blockchain.GetTd(head.Hash(), head.NumberU64())) > 0 { - return errStallingPeer + // If we're in legacy sync mode, we need to check total difficulty + // violations from malicious peers. That is not needed in beacon + // mode and we can skip to terminating sync. + if !beaconMode { + // If no headers were retrieved at all, the peer violated its TD promise that it had a + // better chain compared to ours. The only exception is if its promised blocks were + // already imported by other means (e.g. fetcher): + // + // R , L : Both at block 10 + // R: Mine block 11, and propagate it to L + // L: Queue block 11 for import + // L: Notice that R's head and TD increased compared to ours, start sync + // L: Import of block 11 finishes + // L: Sync begins, and finds common ancestor at 11 + // L: Request new headers up from 11 (R's TD was higher, it must have something) + // R: Nothing to give + if mode != LightSync { + head := d.blockchain.CurrentBlock() + if !gotHeaders && td.Cmp(d.blockchain.GetTd(head.Hash(), head.NumberU64())) > 0 { + return errStallingPeer + } } - } - // If snap or light syncing, ensure promised headers are indeed delivered. This is - // needed to detect scenarios where an attacker feeds a bad pivot and then bails out - // of delivering the post-pivot blocks that would flag the invalid content. - // - // This check cannot be executed "as is" for full imports, since blocks may still be - // queued for processing when the header download completes. However, as long as the - // peer gave us something useful, we're already happy/progressed (above check). - if mode == SnapSync || mode == LightSync { - head := d.lightchain.CurrentHeader() - if td.Cmp(d.lightchain.GetTd(head.Hash(), head.Number.Uint64())) > 0 { - return errStallingPeer + // If snap or light syncing, ensure promised headers are indeed delivered. This is + // needed to detect scenarios where an attacker feeds a bad pivot and then bails out + // of delivering the post-pivot blocks that would flag the invalid content. + // + // This check cannot be executed "as is" for full imports, since blocks may still be + // queued for processing when the header download completes. However, as long as the + // peer gave us something useful, we're already happy/progressed (above check). + if mode == SnapSync || mode == LightSync { + head := d.lightchain.CurrentHeader() + if td.Cmp(d.lightchain.GetTd(head.Hash(), head.Number.Uint64())) > 0 { + return errStallingPeer + } } } // Disable any rollback and return @@ -1281,24 +1346,64 @@ func (d *Downloader) processHeaders(origin uint64, td *big.Int) error { if chunkHeaders[len(chunkHeaders)-1].Number.Uint64()+uint64(fsHeaderForceVerify) > pivot { frequency = 1 } - if n, err := d.lightchain.InsertHeaderChain(chunkHeaders, frequency); err != nil { - rollbackErr = err - - // If some headers were inserted, track them as uncertain - if (mode == SnapSync || frequency > 1) && n > 0 && rollback == 0 { - rollback = chunkHeaders[0].Number.Uint64() + // Although the received headers might be all valid, a legacy + // PoW/PoA sync must not accept post-merge headers. Make sure + // that any transition is rejected at this point. + var ( + rejected []*types.Header + td *big.Int + ) + if !beaconMode && ttd != nil { + td = d.blockchain.GetTd(chunkHeaders[0].ParentHash, chunkHeaders[0].Number.Uint64()-1) + if td == nil { + // This should never really happen, but handle gracefully for now + log.Error("Failed to retrieve parent header TD", "number", chunkHeaders[0].Number.Uint64()-1, "hash", chunkHeaders[0].ParentHash) + return fmt.Errorf("%w: parent TD missing", errInvalidChain) + } + for i, header := range chunkHeaders { + td = new(big.Int).Add(td, header.Difficulty) + if td.Cmp(ttd) >= 0 { + // Terminal total difficulty reached, allow the last header in + if new(big.Int).Sub(td, header.Difficulty).Cmp(ttd) < 0 { + chunkHeaders, rejected = chunkHeaders[:i+1], chunkHeaders[i+1:] + if len(rejected) > 0 { + // Make a nicer user log as to the first TD truly rejected + td = new(big.Int).Add(td, rejected[0].Difficulty) + } + } else { + chunkHeaders, rejected = chunkHeaders[:i], chunkHeaders[i:] + } + break + } } - log.Warn("Invalid header encountered", "number", chunkHeaders[n].Number, "hash", chunkHashes[n], "parent", chunkHeaders[n].ParentHash, "err", err) - return fmt.Errorf("%w: %v", errInvalidChain, err) } - // All verifications passed, track all headers within the alloted limits - if mode == SnapSync { - head := chunkHeaders[len(chunkHeaders)-1].Number.Uint64() - if head-rollback > uint64(fsHeaderSafetyNet) { - rollback = head - uint64(fsHeaderSafetyNet) - } else { - rollback = 1 + if len(chunkHeaders) > 0 { + if n, err := d.lightchain.InsertHeaderChain(chunkHeaders, frequency); err != nil { + rollbackErr = err + + // If some headers were inserted, track them as uncertain + if (mode == SnapSync || frequency > 1) && n > 0 && rollback == 0 { + rollback = chunkHeaders[0].Number.Uint64() + } + log.Warn("Invalid header encountered", "number", chunkHeaders[n].Number, "hash", chunkHashes[n], "parent", chunkHeaders[n].ParentHash, "err", err) + return fmt.Errorf("%w: %v", errInvalidChain, err) } + // All verifications passed, track all headers within the allowed limits + if mode == SnapSync { + head := chunkHeaders[len(chunkHeaders)-1].Number.Uint64() + if head-rollback > uint64(fsHeaderSafetyNet) { + rollback = head - uint64(fsHeaderSafetyNet) + } else { + rollback = 1 + } + } + } + if len(rejected) != 0 { + // Merge threshold reached, stop importing, but don't roll back + rollback = 0 + + log.Info("Legacy sync reached merge threshold", "number", rejected[0].Number, "hash", rejected[0].Hash(), "td", td, "ttd", ttd) + return ErrMergeTransition } } // Unless we're doing light chains, schedule the headers for associated content retrieval @@ -1342,7 +1447,7 @@ func (d *Downloader) processHeaders(origin uint64, td *big.Int) error { } // processFullSyncContent takes fetch results from the queue and imports them into the chain. -func (d *Downloader) processFullSyncContent() error { +func (d *Downloader) processFullSyncContent(ttd *big.Int, beaconMode bool) error { for { results := d.queue.Results(true) if len(results) == 0 { @@ -1351,9 +1456,44 @@ func (d *Downloader) processFullSyncContent() error { if d.chainInsertHook != nil { d.chainInsertHook(results) } + // Although the received blocks might be all valid, a legacy PoW/PoA sync + // must not accept post-merge blocks. Make sure that pre-merge blocks are + // imported, but post-merge ones are rejected. + var ( + rejected []*fetchResult + td *big.Int + ) + if !beaconMode && ttd != nil { + td = d.blockchain.GetTd(results[0].Header.ParentHash, results[0].Header.Number.Uint64()-1) + if td == nil { + // This should never really happen, but handle gracefully for now + log.Error("Failed to retrieve parent block TD", "number", results[0].Header.Number.Uint64()-1, "hash", results[0].Header.ParentHash) + return fmt.Errorf("%w: parent TD missing", errInvalidChain) + } + for i, result := range results { + td = new(big.Int).Add(td, result.Header.Difficulty) + if td.Cmp(ttd) >= 0 { + // Terminal total difficulty reached, allow the last block in + if new(big.Int).Sub(td, result.Header.Difficulty).Cmp(ttd) < 0 { + results, rejected = results[:i+1], results[i+1:] + if len(rejected) > 0 { + // Make a nicer user log as to the first TD truly rejected + td = new(big.Int).Add(td, rejected[0].Header.Difficulty) + } + } else { + results, rejected = results[:i], results[i:] + } + break + } + } + } if err := d.importBlockResults(results); err != nil { return err } + if len(rejected) != 0 { + log.Info("Legacy sync reached merge threshold", "number", rejected[0].Header.Number, "hash", rejected[0].Header.Hash(), "td", td, "ttd", ttd) + return ErrMergeTransition + } } } diff --git a/eth/downloader/downloader_test.go b/eth/downloader/downloader_test.go index 70c6a51215..6989252c11 100644 --- a/eth/downloader/downloader_test.go +++ b/eth/downloader/downloader_test.go @@ -75,7 +75,7 @@ func newTester() *downloadTester { chain: chain, peers: make(map[string]*downloadTesterPeer), } - tester.downloader = New(0, db, new(event.TypeMux), tester.chain, nil, tester.dropPeer) + tester.downloader = New(0, db, new(event.TypeMux), tester.chain, nil, tester.dropPeer, nil) return tester } @@ -96,7 +96,7 @@ func (dl *downloadTester) sync(id string, td *big.Int, mode SyncMode) error { td = dl.peers[id].chain.GetTd(head.Hash(), head.NumberU64()) } // Synchronise with the chosen peer and ensure proper cleanup afterwards - err := dl.downloader.synchronise(id, head.Hash(), td, mode) + err := dl.downloader.synchronise(id, head.Hash(), td, nil, mode, false, nil) select { case <-dl.downloader.cancelCh: // Ok, downloader fully cancelled after sync cycle @@ -971,7 +971,7 @@ func testBlockHeaderAttackerDropping(t *testing.T, protocol uint) { // Simulate a synchronisation and check the required result tester.downloader.synchroniseMock = func(string, common.Hash) error { return tt.result } - tester.downloader.Synchronise(id, tester.chain.Genesis().Hash(), big.NewInt(1000), FullSync) + tester.downloader.LegacySync(id, tester.chain.Genesis().Hash(), big.NewInt(1000), nil, FullSync) if _, ok := tester.peers[id]; !ok != tt.drop { t.Errorf("test %d: peer drop mismatch for %v: have %v, want %v", i, tt.result, !ok, tt.drop) } diff --git a/eth/downloader/fetchers_concurrent.go b/eth/downloader/fetchers_concurrent.go index 4bade2b4c3..a0aa197175 100644 --- a/eth/downloader/fetchers_concurrent.go +++ b/eth/downloader/fetchers_concurrent.go @@ -76,7 +76,7 @@ type typedQueue interface { // concurrentFetch iteratively downloads scheduled block parts, taking available // peers, reserving a chunk of fetch requests for each and waiting for delivery // or timeouts. -func (d *Downloader) concurrentFetch(queue typedQueue) error { +func (d *Downloader) concurrentFetch(queue typedQueue, beaconMode bool) error { // Create a delivery channel to accept responses from all peers responses := make(chan *eth.Response) @@ -127,7 +127,7 @@ func (d *Downloader) concurrentFetch(queue typedQueue) error { finished := false for { // Short circuit if we lost all our peers - if d.peers.Len() == 0 { + if d.peers.Len() == 0 && !beaconMode { return errNoPeers } // If there's nothing more to fetch, wait or terminate @@ -209,7 +209,7 @@ func (d *Downloader) concurrentFetch(queue typedQueue) error { } // Make sure that we have peers available for fetching. If all peers have been tried // and all failed throw an error - if !progressed && !throttled && len(pending) == 0 && len(idles) == d.peers.Len() && queued > 0 { + if !progressed && !throttled && len(pending) == 0 && len(idles) == d.peers.Len() && queued > 0 && !beaconMode { return errPeersUnavailable } } diff --git a/eth/downloader/peer.go b/eth/downloader/peer.go index 324fdb9cd5..d74d23e74d 100644 --- a/eth/downloader/peer.go +++ b/eth/downloader/peer.go @@ -294,19 +294,19 @@ func (ps *peerSet) AllPeers() []*peerConnection { // peerCapacitySort implements sort.Interface. // It sorts peer connections by capacity (descending). type peerCapacitySort struct { - p []*peerConnection - tp []int + peers []*peerConnection + caps []int } func (ps *peerCapacitySort) Len() int { - return len(ps.p) + return len(ps.peers) } func (ps *peerCapacitySort) Less(i, j int) bool { - return ps.tp[i] > ps.tp[j] + return ps.caps[i] > ps.caps[j] } func (ps *peerCapacitySort) Swap(i, j int) { - ps.p[i], ps.p[j] = ps.p[j], ps.p[i] - ps.tp[i], ps.tp[j] = ps.tp[j], ps.tp[i] + ps.peers[i], ps.peers[j] = ps.peers[j], ps.peers[i] + ps.caps[i], ps.caps[j] = ps.caps[j], ps.caps[i] } diff --git a/eth/downloader/skeleton.go b/eth/downloader/skeleton.go new file mode 100644 index 0000000000..bebf273da5 --- /dev/null +++ b/eth/downloader/skeleton.go @@ -0,0 +1,1063 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package downloader + +import ( + "encoding/json" + "errors" + "math/rand" + "sort" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/rawdb" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/eth/protocols/eth" + "github.com/ethereum/go-ethereum/ethdb" + "github.com/ethereum/go-ethereum/log" +) + +// scratchHeaders is the number of headers to store in a scratch space to allow +// concurrent downloads. A header is about 0.5KB in size, so there is no worry +// about using too much memory. The only catch is that we can only validate gaps +// afer they're linked to the head, so the bigger the scratch space, the larger +// potential for invalid headers. +// +// The current scratch space of 131072 headers is expected to use 64MB RAM. +const scratchHeaders = 131072 + +// requestHeaders is the number of header to request from a remote peer in a single +// network packet. Although the skeleton downloader takes into consideration peer +// capacities when picking idlers, the packet size was decided to remain constant +// since headers are relatively small and it's easier to work with fixed batches +// vs. dynamic interval fillings. +const requestHeaders = 512 + +// errSyncLinked is an internal helper error to signal that the current sync +// cycle linked up to the genesis block, this the skeleton syncer should ping +// the backfiller to resume. Since we already have that logic on sync start, +// piggie-back on that instead of 2 entrypoints. +var errSyncLinked = errors.New("sync linked") + +// errSyncMerged is an internal helper error to signal that the current sync +// cycle merged with a previously aborted subchain, thus the skeleton syncer +// should abort and restart with the new state. +var errSyncMerged = errors.New("sync merged") + +// errSyncReorged is an internal helper error to signal that the head chain of +// the current sync cycle was (partially) reorged, thus the skeleton syncer +// should abort and restart with the new state. +var errSyncReorged = errors.New("sync reorged") + +// errTerminated is returned if the sync mechanism was terminated for this run of +// the process. This is usually the case when Geth is shutting down and some events +// might still be propagating. +var errTerminated = errors.New("terminated") + +// errReorgDenied is returned if an attempt is made to extend the beacon chain +// with a new header, but it does not link up to the existing sync. +var errReorgDenied = errors.New("non-forced head reorg denied") + +func init() { + // Tuning parameters is nice, but the scratch space must be assignable in + // full to peers. It's a useless cornercase to support a dangling half-group. + if scratchHeaders%requestHeaders != 0 { + panic("Please make scratchHeaders divisible by requestHeaders") + } +} + +// subchain is a contiguous header chain segment that is backed by the database, +// but may not be linked to the live chain. The skeleton downloader may produce +// a new one of these every time it is restarted until the subchain grows large +// enough to connect with a previous subchain. +// +// The subchains use the exact same database namespace and are not disjoint from +// each other. As such, extending one to overlap the other entails reducing the +// second one first. This combined buffer model is used to avoid having to move +// data on disk when two subchains are joined together. +type subchain struct { + Head uint64 // Block number of the newest header in the subchain + Tail uint64 // Block number of the oldest header in the subchain + Next common.Hash // Block hash of the next oldest header in the subchain +} + +// skeletonProgress is a database entry to allow suspending and resuming a chain +// sync. As the skeleton header chain is downloaded backwards, restarts can and +// will produce temporarily disjoint subchains. There is no way to restart a +// suspended skeleton sync without prior knowledge of all prior suspension points. +type skeletonProgress struct { + Subchains []*subchain // Disjoint subchains downloaded until now +} + +// headUpdate is a notification that the beacon sync should switch to a new target. +// The update might request whether to forcefully change the target, or only try to +// extend it and fail if it's not possible. +type headUpdate struct { + header *types.Header // Header to update the sync target to + force bool // Whether to force the update or only extend if possible + errc chan error // Channel to signal acceptance of the new head +} + +// headerRequest tracks a pending header request to ensure responses are to +// actual requests and to validate any security constraints. +// +// Concurrency note: header requests and responses are handled concurrently from +// the main runloop to allow Keccak256 hash verifications on the peer's thread and +// to drop on invalid response. The request struct must contain all the data to +// construct the response without accessing runloop internals (i.e. subchains). +// That is only included to allow the runloop to match a response to the task being +// synced without having yet another set of maps. +type headerRequest struct { + peer string // Peer to which this request is assigned + id uint64 // Request ID of this request + + deliver chan *headerResponse // Channel to deliver successful response on + revert chan *headerRequest // Channel to deliver request failure on + cancel chan struct{} // Channel to track sync cancellation + stale chan struct{} // Channel to signal the request was dropped + + head uint64 // Head number of the requested batch of headers +} + +// headerResponse is an already verified remote response to a header request. +type headerResponse struct { + peer *peerConnection // Peer from which this response originates + reqid uint64 // Request ID that this response fulfils + headers []*types.Header // Chain of headers +} + +// backfiller is a callback interface through which the skeleton sync can tell +// the downloader that it should suspend or resume backfilling on specific head +// events (e.g. suspend on forks or gaps, resume on successful linkups). +type backfiller interface { + // suspend requests the backfiller to abort any running full or snap sync + // based on the skeleton chain as it might be invalid. The backfiller should + // gracefully handle multiple consecutive suspends without a resume, even + // on initial sartup. + suspend() + + // resume requests the backfiller to start running fill or snap sync based on + // the skeleton chain as it has successfully been linked. Appending new heads + // to the end of the chain will not result in suspend/resume cycles. + resume() +} + +// skeleton represents a header chain synchronized after the merge where blocks +// aren't validated any more via PoW in a forward fashion, rather are dictated +// and extended at the head via the beacon chain and backfilled on the original +// Ethereum block sync protocol. +// +// Since the skeleton is grown backwards from head to genesis, it is handled as +// a separate entity, not mixed in with the logical sequential transition of the +// blocks. Once the skeleton is connected to an existing, validated chain, the +// headers will be moved into the main downloader for filling and execution. +// +// Opposed to the original Ethereum block synchronization which is trustless (and +// uses a master peer to minimize the attack surface), post-merge block sync starts +// from a trusted head. As such, there is no need for a master peer any more and +// headers can be requested fully concurrently (though some batches might be +// discarded if they don't link up correctly). +// +// Although a skeleton is part of a sync cycle, it is not recreated, rather stays +// alive throughout the lifetime of the downloader. This allows it to be extended +// concurrently with the sync cycle, since extensions arrive from an API surface, +// not from within (vs. legacy Ethereum sync). +// +// Since the skeleton tracks the entire header chain until it is consumed by the +// forward block filling, it needs 0.5KB/block storage. At current mainnet sizes +// this is only possible with a disk backend. Since the skeleton is separate from +// the node's header chain, storing the headers ephemerally until sync finishes +// is wasted disk IO, but it's a price we're going to pay to keep things simple +// for now. +type skeleton struct { + db ethdb.Database // Database backing the skeleton + filler backfiller // Chain syncer suspended/resumed by head events + + peers *peerSet // Set of peers we can sync from + idles map[string]*peerConnection // Set of idle peers in the current sync cycle + drop peerDropFn // Drops a peer for misbehaving + + progress *skeletonProgress // Sync progress tracker for resumption and metrics + started time.Time // Timestamp when the skeleton syncer was created + logged time.Time // Timestamp when progress was last logged to the user + pulled uint64 // Number of headers downloaded in this run + + scratchSpace []*types.Header // Scratch space to accumulate headers in (first = recent) + scratchOwners []string // Peer IDs owning chunks of the scratch space (pend or delivered) + scratchHead uint64 // Block number of the first item in the scratch space + + requests map[uint64]*headerRequest // Header requests currently running + + headEvents chan *headUpdate // Notification channel for new heads + terminate chan chan error // Termination channel to abort sync + terminated chan struct{} // Channel to signal that the syner is dead + + // Callback hooks used during testing + syncStarting func() // callback triggered after a sync cycle is inited but before started +} + +// newSkeleton creates a new sync skeleton that tracks a potentially dangling +// header chain until it's linked into an existing set of blocks. +func newSkeleton(db ethdb.Database, peers *peerSet, drop peerDropFn, filler backfiller) *skeleton { + sk := &skeleton{ + db: db, + filler: filler, + peers: peers, + drop: drop, + requests: make(map[uint64]*headerRequest), + headEvents: make(chan *headUpdate), + terminate: make(chan chan error), + terminated: make(chan struct{}), + } + go sk.startup() + return sk +} + +// startup is an initial background loop which waits for an event to start or +// tear the syncer down. This is required to make the skeleton sync loop once +// per process but at the same time not start before the beacon chain announces +// a new (existing) head. +func (s *skeleton) startup() { + // Close a notification channel so anyone sending us events will know if the + // sync loop was torn down for good. + defer close(s.terminated) + + // Wait for startup or teardown. This wait might loop a few times if a beacon + // client requests sync head extensions, but not forced reorgs (i.e. they are + // giving us new payloads without setting a starting head initially). + for { + select { + case errc := <-s.terminate: + // No head was announced but Geth is shutting down + errc <- nil + return + + case event := <-s.headEvents: + // New head announced, start syncing to it, looping every time a current + // cycle is terminated due to a chain event (head reorg, old chain merge). + if !event.force { + event.errc <- errors.New("forced head needed for startup") + continue + } + event.errc <- nil // forced head accepted for startup + head := event.header + s.started = time.Now() + + for { + // If the sync cycle terminated or was terminated, propagate up when + // higher layers request termination. There's no fancy explicit error + // signalling as the sync loop should never terminate (TM). + newhead, err := s.sync(head) + switch { + case err == errSyncLinked: + // Sync cycle linked up to the genesis block. Tear down the loop + // and restart it so, it can properly notify the backfiller. Don't + // account a new head. + head = nil + + case err == errSyncMerged: + // Subchains were merged, we just need to reinit the internal + // start to continue on the tail of the merged chain. Don't + // announce a new head, + head = nil + + case err == errSyncReorged: + // The subchain being synced got modified at the head in a + // way that requires resyncing it. Restart sync with the new + // head to force a cleanup. + head = newhead + + case err == errTerminated: + // Sync was requested to be terminated from within, stop and + // return (no need to pass a message, was already done internally) + return + + default: + // Sync either successfully terminated or failed with an unhandled + // error. Abort and wait until Geth requests a termination. + errc := <-s.terminate + errc <- err + return + } + } + } + } +} + +// Terminate tears down the syncer indefinitely. +func (s *skeleton) Terminate() error { + // Request termination and fetch any errors + errc := make(chan error) + s.terminate <- errc + err := <-errc + + // Wait for full shutdown (not necessary, but cleaner) + <-s.terminated + return err +} + +// Sync starts or resumes a previous sync cycle to download and maintain a reverse +// header chain starting at the head and leading towards genesis to an available +// ancestor. +// +// This method does not block, rather it just waits until the syncer receives the +// fed header. What the syncer does with it is the syncer's problem. +func (s *skeleton) Sync(head *types.Header, force bool) error { + log.Trace("New skeleton head announced", "number", head.Number, "hash", head.Hash(), "force", force) + errc := make(chan error) + + select { + case s.headEvents <- &headUpdate{header: head, force: force, errc: errc}: + return <-errc + case <-s.terminated: + return errTerminated + } +} + +// sync is the internal version of Sync that executes a single sync cycle, either +// until some termination condition is reached, or until the current cycle merges +// with a previously aborted run. +func (s *skeleton) sync(head *types.Header) (*types.Header, error) { + // If we're continuing a previous merge interrupt, just access the existing + // old state without initing from disk. + if head == nil { + head = rawdb.ReadSkeletonHeader(s.db, s.progress.Subchains[0].Head) + } else { + // Otherwise, initialize the sync, trimming and previous leftovers until + // we're consistent with the newly requested chain head + s.initSync(head) + } + // Create the scratch space to fill with concurrently downloaded headers + s.scratchSpace = make([]*types.Header, scratchHeaders) + defer func() { s.scratchSpace = nil }() // don't hold on to references after sync + + s.scratchOwners = make([]string, scratchHeaders/requestHeaders) + defer func() { s.scratchOwners = nil }() // don't hold on to references after sync + + s.scratchHead = s.progress.Subchains[0].Tail - 1 // tail must not be 0! + + // If the sync is already done, resume the backfiller. When the loop stops, + // terminate the backfiller too. + linked := len(s.progress.Subchains) == 1 && + rawdb.HasBody(s.db, s.progress.Subchains[0].Next, s.scratchHead) && + rawdb.HasReceipts(s.db, s.progress.Subchains[0].Next, s.scratchHead) + if linked { + s.filler.resume() + } + defer s.filler.suspend() + + // Create a set of unique channels for this sync cycle. We need these to be + // ephemeral so a data race doesn't accidentally deliver something stale on + // a persistent channel across syncs (yup, this happened) + var ( + requestFails = make(chan *headerRequest) + responses = make(chan *headerResponse) + ) + cancel := make(chan struct{}) + defer close(cancel) + + log.Debug("Starting reverse header sync cycle", "head", head.Number, "hash", head.Hash(), "cont", s.scratchHead) + + // Whether sync completed or not, disregard any future packets + defer func() { + log.Debug("Terminating reverse header sync cycle", "head", head.Number, "hash", head.Hash(), "cont", s.scratchHead) + s.requests = make(map[uint64]*headerRequest) + }() + + // Start tracking idle peers for task assignments + peering := make(chan *peeringEvent, 64) // arbitrary buffer, just some burst protection + + peeringSub := s.peers.SubscribeEvents(peering) + defer peeringSub.Unsubscribe() + + s.idles = make(map[string]*peerConnection) + for _, peer := range s.peers.AllPeers() { + s.idles[peer.id] = peer + } + // Nofity any tester listening for startup events + if s.syncStarting != nil { + s.syncStarting() + } + for { + // Something happened, try to assign new tasks to any idle peers + if !linked { + s.assignTasks(responses, requestFails, cancel) + } + // Wait for something to happen + select { + case event := <-peering: + // A peer joined or left, the tasks queue and allocations need to be + // checked for potential assignment or reassignment + peerid := event.peer.id + if event.join { + log.Debug("Joining skeleton peer", "id", peerid) + s.idles[peerid] = event.peer + } else { + log.Debug("Leaving skeleton peer", "id", peerid) + s.revertRequests(peerid) + delete(s.idles, peerid) + } + + case errc := <-s.terminate: + errc <- nil + return nil, errTerminated + + case event := <-s.headEvents: + // New head was announced, try to integrate it. If successful, nothing + // needs to be done as the head simply extended the last range. For now + // we don't seamlessly integrate reorgs to keep things simple. If the + // network starts doing many mini reorgs, it might be worthwhile handling + // a limited depth without an error. + if reorged := s.processNewHead(event.header, event.force); reorged { + // If a reorg is needed, and we're forcing the new head, signal + // the syncer to tear down and start over. Otherwise, drop the + // non-force reorg. + if event.force { + event.errc <- nil // forced head reorg accepted + return event.header, errSyncReorged + } + event.errc <- errReorgDenied + continue + } + event.errc <- nil // head extension accepted + + // New head was integrated into the skeleton chain. If the backfiller + // is still running, it will pick it up. If it already terminated, + // a new cycle needs to be spun up. + if linked { + s.filler.resume() + } + + case req := <-requestFails: + s.revertRequest(req) + + case res := <-responses: + // Process the batch of headers. If though processing we managed to + // link the current subchain to a previously downloaded one, abort the + // sync and restart with the merged subchains. + // + // If we managed to link to the existing local chain or genesis block, + // abort sync altogether. + linked, merged := s.processResponse(res) + if linked { + log.Debug("Beacon sync linked to local chain") + return nil, errSyncLinked + } + if merged { + log.Debug("Beacon sync merged subchains") + return nil, errSyncMerged + } + // We still have work to do, loop and repeat + } + } +} + +// initSync attempts to get the skeleton sync into a consistent state wrt any +// past state on disk and the newly requested head to sync to. If the new head +// is nil, the method will return and continue from the previous head. +func (s *skeleton) initSync(head *types.Header) { + // Extract the head number, we'll need it all over + number := head.Number.Uint64() + + // Retrieve the previously saved sync progress + if status := rawdb.ReadSkeletonSyncStatus(s.db); len(status) > 0 { + s.progress = new(skeletonProgress) + if err := json.Unmarshal(status, s.progress); err != nil { + log.Error("Failed to decode skeleton sync status", "err", err) + } else { + // Previous sync was available, print some continuation logs + for _, subchain := range s.progress.Subchains { + log.Debug("Restarting skeleton subchain", "head", subchain.Head, "tail", subchain.Tail) + } + // Create a new subchain for the head (unless the last can be extended), + // trimming anything it would overwrite + headchain := &subchain{ + Head: number, + Tail: number, + Next: head.ParentHash, + } + for len(s.progress.Subchains) > 0 { + // If the last chain is above the new head, delete altogether + lastchain := s.progress.Subchains[0] + if lastchain.Tail >= headchain.Tail { + log.Debug("Dropping skeleton subchain", "head", lastchain.Head, "tail", lastchain.Tail) + s.progress.Subchains = s.progress.Subchains[1:] + continue + } + // Otherwise truncate the last chain if needed and abort trimming + if lastchain.Head >= headchain.Tail { + log.Debug("Trimming skeleton subchain", "oldhead", lastchain.Head, "newhead", headchain.Tail-1, "tail", lastchain.Tail) + lastchain.Head = headchain.Tail - 1 + } + break + } + // If the last subchain can be extended, we're lucky. Otherwise create + // a new subchain sync task. + var extended bool + if n := len(s.progress.Subchains); n > 0 { + lastchain := s.progress.Subchains[0] + if lastchain.Head == headchain.Tail-1 { + lasthead := rawdb.ReadSkeletonHeader(s.db, lastchain.Head) + if lasthead.Hash() == head.ParentHash { + log.Debug("Extended skeleton subchain with new head", "head", headchain.Tail, "tail", lastchain.Tail) + lastchain.Head = headchain.Tail + extended = true + } + } + } + if !extended { + log.Debug("Created new skeleton subchain", "head", number, "tail", number) + s.progress.Subchains = append([]*subchain{headchain}, s.progress.Subchains...) + } + // Update the database with the new sync stats and insert the new + // head header. We won't delete any trimmed skeleton headers since + // those will be outside the index space of the many subchains and + // the database space will be reclaimed eventually when processing + // blocks above the current head (TODO(karalabe): don't forget). + batch := s.db.NewBatch() + + rawdb.WriteSkeletonHeader(batch, head) + s.saveSyncStatus(batch) + + if err := batch.Write(); err != nil { + log.Crit("Failed to write skeleton sync status", "err", err) + } + return + } + } + // Either we've failed to decode the previus state, or there was none. Start + // a fresh sync with a single subchain represented by the currently sent + // chain head. + s.progress = &skeletonProgress{ + Subchains: []*subchain{ + { + Head: number, + Tail: number, + Next: head.ParentHash, + }, + }, + } + batch := s.db.NewBatch() + + rawdb.WriteSkeletonHeader(batch, head) + s.saveSyncStatus(batch) + + if err := batch.Write(); err != nil { + log.Crit("Failed to write initial skeleton sync status", "err", err) + } + log.Debug("Created initial skeleton subchain", "head", number, "tail", number) +} + +// saveSyncStatus marshals the remaining sync tasks into leveldb. +func (s *skeleton) saveSyncStatus(db ethdb.KeyValueWriter) { + status, err := json.Marshal(s.progress) + if err != nil { + panic(err) // This can only fail during implementation + } + rawdb.WriteSkeletonSyncStatus(db, status) +} + +// processNewHead does the internal shuffling for a new head marker and either +// accepts and integrates it into the skeleton or requests a reorg. Upon reorg, +// the syncer will tear itself down and restart with a fresh head. It is simpler +// to reconstruct the sync state than to mutate it and hope for the best. +func (s *skeleton) processNewHead(head *types.Header, force bool) bool { + // If the header cannot be inserted without interruption, return an error for + // the outer loop to tear down the skeleton sync and restart it + number := head.Number.Uint64() + + lastchain := s.progress.Subchains[0] + if lastchain.Tail >= number { + if force { + log.Warn("Beacon chain reorged", "tail", lastchain.Tail, "newHead", number) + } + return true + } + if lastchain.Head+1 < number { + if force { + log.Warn("Beacon chain gapped", "head", lastchain.Head, "newHead", number) + } + return true + } + if parent := rawdb.ReadSkeletonHeader(s.db, number-1); parent.Hash() != head.ParentHash { + if force { + log.Warn("Beacon chain forked", "ancestor", parent.Number, "hash", parent.Hash(), "want", head.ParentHash) + } + return true + } + // New header seems to be in the last subchain range. Unwind any extra headers + // from the chain tip and insert the new head. We won't delete any trimmed + // skeleton headers since those will be outside the index space of the many + // subchains and the database space will be reclaimed eventually when processing + // blocks above the current head (TODO(karalabe): don't forget). + batch := s.db.NewBatch() + + rawdb.WriteSkeletonHeader(batch, head) + lastchain.Head = number + s.saveSyncStatus(batch) + + if err := batch.Write(); err != nil { + log.Crit("Failed to write skeleton sync status", "err", err) + } + return false +} + +// assignTasks attempts to match idle peers to pending header retrievals. +func (s *skeleton) assignTasks(success chan *headerResponse, fail chan *headerRequest, cancel chan struct{}) { + // Sort the peers by download capacity to use faster ones if many available + idlers := &peerCapacitySort{ + peers: make([]*peerConnection, 0, len(s.idles)), + caps: make([]int, 0, len(s.idles)), + } + targetTTL := s.peers.rates.TargetTimeout() + for _, peer := range s.idles { + idlers.peers = append(idlers.peers, peer) + idlers.caps = append(idlers.caps, s.peers.rates.Capacity(peer.id, eth.BlockHeadersMsg, targetTTL)) + } + if len(idlers.peers) == 0 { + return + } + sort.Sort(idlers) + + // Find header regions not yet downloading and fill them + for task, owner := range s.scratchOwners { + // If we're out of idle peers, stop assigning tasks + if len(idlers.peers) == 0 { + return + } + // Skip any tasks already filling + if owner != "" { + continue + } + // If we've reached the genesis, stop assigning tasks + if uint64(task*requestHeaders) >= s.scratchHead { + return + } + // Found a task and have peers available, assign it + idle := idlers.peers[0] + + idlers.peers = idlers.peers[1:] + idlers.caps = idlers.caps[1:] + + // Matched a pending task to an idle peer, allocate a unique request id + var reqid uint64 + for { + reqid = uint64(rand.Int63()) + if reqid == 0 { + continue + } + if _, ok := s.requests[reqid]; ok { + continue + } + break + } + // Generate the network query and send it to the peer + req := &headerRequest{ + peer: idle.id, + id: reqid, + deliver: success, + revert: fail, + cancel: cancel, + stale: make(chan struct{}), + head: s.scratchHead - uint64(task*requestHeaders), + } + s.requests[reqid] = req + delete(s.idles, idle.id) + + // Generate the network query and send it to the peer + go s.executeTask(idle, req) + + // Inject the request into the task to block further assignments + s.scratchOwners[task] = idle.id + } +} + +// executeTask executes a single fetch request, blocking until either a result +// arrives or a timeouts / cancellation is triggered. The method should be run +// on its own goroutine and will deliver on the requested channels. +func (s *skeleton) executeTask(peer *peerConnection, req *headerRequest) { + start := time.Now() + resCh := make(chan *eth.Response) + + // Figure out how many headers to fetch. Usually this will be a full batch, + // but for the very tail of the chain, trim the request to the number left. + // Since nodes may or may not return the genesis header for a batch request, + // don't even request it. The parent hash of block #1 is enough to link. + requestCount := requestHeaders + if req.head < requestHeaders { + requestCount = int(req.head) + } + peer.log.Trace("Fetching skeleton headers", "from", req.head, "count", requestCount) + netreq, err := peer.peer.RequestHeadersByNumber(req.head, requestCount, 0, true, resCh) + if err != nil { + peer.log.Trace("Failed to request headers", "err", err) + s.scheduleRevertRequest(req) + return + } + defer netreq.Close() + + // Wait until the response arrives, the request is cancelled or times out + ttl := s.peers.rates.TargetTimeout() + + timeoutTimer := time.NewTimer(ttl) + defer timeoutTimer.Stop() + + select { + case <-req.cancel: + peer.log.Debug("Header request cancelled") + s.scheduleRevertRequest(req) + + case <-timeoutTimer.C: + // Header retrieval timed out, update the metrics + peer.log.Warn("Header request timed out, dropping peer", "elapsed", ttl) + headerTimeoutMeter.Mark(1) + s.peers.rates.Update(peer.id, eth.BlockHeadersMsg, 0, 0) + s.scheduleRevertRequest(req) + + // At this point we either need to drop the offending peer, or we need a + // mechanism to allow waiting for the response and not cancel it. For now + // lets go with dropping since the header sizes are deterministic and the + // beacon sync runs exclusive (downloader is idle) so there should be no + // other load to make timeouts probable. If we notice that timeouts happen + // more often than we'd like, we can introduce a tracker for the requests + // gone stale and monitor them. However, in that case too, we need a way + // to protect against malicious peers never responding, so it would need + // a second, hard-timeout mechanism. + s.drop(peer.id) + + case res := <-resCh: + // Headers successfully retrieved, update the metrics + headers := *res.Res.(*eth.BlockHeadersPacket) + + headerReqTimer.Update(time.Since(start)) + s.peers.rates.Update(peer.id, eth.BlockHeadersMsg, res.Time, len(headers)) + + // Cross validate the headers with the requests + switch { + case len(headers) == 0: + // No headers were delivered, reject the response and reschedule + peer.log.Debug("No headers delivered") + res.Done <- errors.New("no headers delivered") + s.scheduleRevertRequest(req) + + case headers[0].Number.Uint64() != req.head: + // Header batch anchored at non-requested number + peer.log.Debug("Invalid header response head", "have", headers[0].Number, "want", req.head) + res.Done <- errors.New("invalid header batch anchor") + s.scheduleRevertRequest(req) + + case req.head >= requestHeaders && len(headers) != requestHeaders: + // Invalid number of non-genesis headers delivered, reject the response and reschedule + peer.log.Debug("Invalid non-genesis header count", "have", len(headers), "want", requestHeaders) + res.Done <- errors.New("not enough non-genesis headers delivered") + s.scheduleRevertRequest(req) + + case req.head < requestHeaders && uint64(len(headers)) != req.head: + // Invalid number of genesis headers delivered, reject the response and reschedule + peer.log.Debug("Invalid genesis header count", "have", len(headers), "want", headers[0].Number.Uint64()) + res.Done <- errors.New("not enough genesis headers delivered") + s.scheduleRevertRequest(req) + + default: + // Packet seems structurally valid, check hash progression and if it + // is correct too, deliver for storage + for i := 0; i < len(headers)-1; i++ { + if headers[i].ParentHash != headers[i+1].Hash() { + peer.log.Debug("Invalid hash progression", "index", i, "wantparenthash", headers[i].ParentHash, "haveparenthash", headers[i+1].Hash()) + res.Done <- errors.New("invalid hash progression") + s.scheduleRevertRequest(req) + return + } + } + // Hash chain is valid. The delivery might still be junk as we're + // downloading batches concurrently (so no way to link the headers + // until gaps are filled); in that case, we'll nuke the peer when + // we detect the fault. + res.Done <- nil + + select { + case req.deliver <- &headerResponse{ + peer: peer, + reqid: req.id, + headers: headers, + }: + case <-req.cancel: + } + } + } +} + +// revertRequests locates all the currently pending reuqests from a particular +// peer and reverts them, rescheduling for others to fulfill. +func (s *skeleton) revertRequests(peer string) { + // Gather the requests first, revertals need the lock too + var requests []*headerRequest + for _, req := range s.requests { + if req.peer == peer { + requests = append(requests, req) + } + } + // Revert all the requests matching the peer + for _, req := range requests { + s.revertRequest(req) + } +} + +// scheduleRevertRequest asks the event loop to clean up a request and return +// all failed retrieval tasks to the scheduler for reassignment. +func (s *skeleton) scheduleRevertRequest(req *headerRequest) { + select { + case req.revert <- req: + // Sync event loop notified + case <-req.cancel: + // Sync cycle got cancelled + case <-req.stale: + // Request already reverted + } +} + +// revertRequest cleans up a request and returns all failed retrieval tasks to +// the scheduler for reassignment. +// +// Note, this needs to run on the event runloop thread to reschedule to idle peers. +// On peer threads, use scheduleRevertRequest. +func (s *skeleton) revertRequest(req *headerRequest) { + log.Trace("Reverting header request", "peer", req.peer, "reqid", req.id) + select { + case <-req.stale: + log.Trace("Header request already reverted", "peer", req.peer, "reqid", req.id) + return + default: + } + close(req.stale) + + // Remove the request from the tracked set + delete(s.requests, req.id) + + // Remove the request from the tracked set and mark the task as not-pending, + // ready for resheduling + s.scratchOwners[(s.scratchHead-req.head)/requestHeaders] = "" +} + +func (s *skeleton) processResponse(res *headerResponse) (linked bool, merged bool) { + res.peer.log.Trace("Processing header response", "head", res.headers[0].Number, "hash", res.headers[0].Hash(), "count", len(res.headers)) + + // Whether the response is valid, we can mark the peer as idle and notify + // the scheduler to assign a new task. If the response is invalid, we'll + // drop the peer in a bit. + s.idles[res.peer.id] = res.peer + + // Ensure the response is for a valid request + if _, ok := s.requests[res.reqid]; !ok { + // Some internal accounting is broken. A request either times out or it + // gets fulfilled successfully. It should not be possible to deliver a + // response to a non-existing request. + res.peer.log.Error("Unexpected header packet") + return false, false + } + delete(s.requests, res.reqid) + + // Insert the delivered headers into the scratch space independent of the + // content or continuation; those will be validated in a moment + head := res.headers[0].Number.Uint64() + copy(s.scratchSpace[s.scratchHead-head:], res.headers) + + // If there's still a gap in the head of the scratch space, abort + if s.scratchSpace[0] == nil { + return false, false + } + // Try to consume any head headers, validating the boundary conditions + batch := s.db.NewBatch() + for s.scratchSpace[0] != nil { + // Next batch of headers available, cross-reference with the subchain + // we are extending and either accept or discard + if s.progress.Subchains[0].Next != s.scratchSpace[0].Hash() { + // Print a log messages to track what's going on + tail := s.progress.Subchains[0].Tail + want := s.progress.Subchains[0].Next + have := s.scratchSpace[0].Hash() + + log.Warn("Invalid skeleton headers", "peer", s.scratchOwners[0], "number", tail-1, "want", want, "have", have) + + // The peer delivered junk, or at least not the subchain we are + // syncing to. Free up the scratch space and assignment, reassign + // and drop the original peer. + for i := 0; i < requestHeaders; i++ { + s.scratchSpace[i] = nil + } + s.drop(s.scratchOwners[0]) + s.scratchOwners[0] = "" + break + } + // Scratch delivery matches required subchain, deliver the batch of + // headers and push the subchain forward + var consumed int + for _, header := range s.scratchSpace[:requestHeaders] { + if header != nil { // nil when the genesis is reached + consumed++ + + rawdb.WriteSkeletonHeader(batch, header) + s.pulled++ + + s.progress.Subchains[0].Tail-- + s.progress.Subchains[0].Next = header.ParentHash + + // If we've reached an existing block in the chain, stop retrieving + // headers. Note, if we want to support light clients with the same + // code we'd need to switch here based on the downloader mode. That + // said, there's no such functionality for now, so don't complicate. + // + // In the case of full sync it would be enough to check for the body, + // but even a full syncing node will generate a receipt once block + // processing is done, so it's just one more "needless" check. + var ( + hasBody = rawdb.HasBody(s.db, header.ParentHash, header.Number.Uint64()-1) + hasReceipt = rawdb.HasReceipts(s.db, header.ParentHash, header.Number.Uint64()-1) + ) + if hasBody && hasReceipt { + linked = true + break + } + } + } + head := s.progress.Subchains[0].Head + tail := s.progress.Subchains[0].Tail + next := s.progress.Subchains[0].Next + + log.Trace("Primary subchain extended", "head", head, "tail", tail, "next", next) + + // If the beacon chain was linked to the local chain, completely swap out + // all internal progress and abort header synchronization. + if linked { + // Note, linking into the local chain should also mean that there are + // no leftover subchains, but just in case there's some junk due to + // strange conditions or bugs, clean up all internal state. + if len(s.progress.Subchains) > 1 { + log.Error("Cleaning up leftovers after beacon link") + s.progress.Subchains = s.progress.Subchains[:1] + } + break + } + // Batch of headers consumed, shift the download window forward + copy(s.scratchSpace, s.scratchSpace[requestHeaders:]) + for i := 0; i < requestHeaders; i++ { + s.scratchSpace[scratchHeaders-i-1] = nil + } + copy(s.scratchOwners, s.scratchOwners[1:]) + s.scratchOwners[scratchHeaders/requestHeaders-1] = "" + + s.scratchHead -= uint64(consumed) + + // If the subchain extended into the next subchain, we need to handle + // the overlap. Since there could be many overlaps (come on), do this + // in a loop. + for len(s.progress.Subchains) > 1 && s.progress.Subchains[1].Head >= s.progress.Subchains[0].Tail { + // Extract some stats from the second subchain + head := s.progress.Subchains[1].Head + tail := s.progress.Subchains[1].Tail + next := s.progress.Subchains[1].Next + + // Since we just overwrote part of the next subchain, we need to trim + // its head independent of matching or mismatching content + if s.progress.Subchains[1].Tail >= s.progress.Subchains[0].Tail { + // Fully overwritten, get rid of the subchain as a whole + log.Debug("Previous subchain fully overwritten", "head", head, "tail", tail, "next", next) + s.progress.Subchains = append(s.progress.Subchains[:1], s.progress.Subchains[2:]...) + continue + } else { + // Partially overwritten, trim the head to the overwritten size + log.Debug("Previous subchain partially overwritten", "head", head, "tail", tail, "next", next) + s.progress.Subchains[1].Head = s.progress.Subchains[0].Tail - 1 + } + // If the old subchain is an extension of the new one, merge the two + // and let the skeleton syncer restart (to clean internal state) + if rawdb.ReadSkeletonHeader(s.db, s.progress.Subchains[1].Head).Hash() == s.progress.Subchains[0].Next { + log.Debug("Previous subchain merged", "head", head, "tail", tail, "next", next) + s.progress.Subchains[0].Tail = s.progress.Subchains[1].Tail + s.progress.Subchains[0].Next = s.progress.Subchains[1].Next + + s.progress.Subchains = append(s.progress.Subchains[:1], s.progress.Subchains[2:]...) + merged = true + } + } + // If subchains were merged, all further available headers in the scratch + // space are invalid since we skipped ahead. Stop processing the scratch + // space to avoid dropping peers thinking they delivered invalid data. + if merged { + break + } + } + s.saveSyncStatus(batch) + if err := batch.Write(); err != nil { + log.Crit("Failed to write skeleton headers and progress", "err", err) + } + // Print a progress report making the UX a bit nicer + left := s.progress.Subchains[0].Tail - 1 + if linked { + left = 0 + } + if time.Since(s.logged) > 8*time.Second || left == 0 { + s.logged = time.Now() + + if s.pulled == 0 { + log.Info("Beacon sync starting", "left", left) + } else { + eta := float64(time.Since(s.started)) / float64(s.pulled) * float64(left) + log.Info("Syncing beacon headers", "downloaded", s.pulled, "left", left, "eta", common.PrettyDuration(eta)) + } + } + return linked, merged +} + +// Bounds retrieves the current head and tail tracked by the skeleton syncer. +// This method is used by the backfiller, whose life cycle is controlled by the +// skeleton syncer. +// +// Note, the method will not use the internal state of the skeleton, but will +// rather blindly pull stuff from the database. This is fine, because the back- +// filler will only run when the skeleton chain is fully downloaded and stable. +// There might be new heads appended, but those are atomic from the perspective +// of this method. Any head reorg will first tear down the backfiller and only +// then make the modification. +func (s *skeleton) Bounds() (head *types.Header, tail *types.Header, err error) { + // Read the current sync progress from disk and figure out the current head. + // Although there's a lot of error handling here, these are mostly as sanity + // checks to avoid crashing if a programming error happens. These should not + // happen in live code. + status := rawdb.ReadSkeletonSyncStatus(s.db) + if len(status) == 0 { + return nil, nil, errors.New("beacon sync not yet started") + } + progress := new(skeletonProgress) + if err := json.Unmarshal(status, progress); err != nil { + return nil, nil, err + } + head = rawdb.ReadSkeletonHeader(s.db, progress.Subchains[0].Head) + tail = rawdb.ReadSkeletonHeader(s.db, progress.Subchains[0].Tail) + + return head, tail, nil +} + +// Header retrieves a specific header tracked by the skeleton syncer. This method +// is meant to be used by the backfiller, whose life cycle is controlled by the +// skeleton syncer. +// +// Note, outside the permitted runtimes, this method might return nil results and +// subsequent calls might return headers from different chains. +func (s *skeleton) Header(number uint64) *types.Header { + return rawdb.ReadSkeletonHeader(s.db, number) +} diff --git a/eth/downloader/skeleton_test.go b/eth/downloader/skeleton_test.go new file mode 100644 index 0000000000..cbe0d51d37 --- /dev/null +++ b/eth/downloader/skeleton_test.go @@ -0,0 +1,896 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package downloader + +import ( + "encoding/json" + "errors" + "fmt" + "math/big" + "os" + "sync/atomic" + "testing" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/rawdb" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/eth/protocols/eth" + "github.com/ethereum/go-ethereum/log" +) + +// hookedBackfiller is a tester backfiller with all interface methods mocked and +// hooked so tests can implement only the things they need. +type hookedBackfiller struct { + // suspendHook is an optional hook to be called when the filler is requested + // to be suspended. + suspendHook func() + + // resumeHook is an optional hook to be called when the filler is requested + // to be resumed. + resumeHook func() +} + +// newHookedBackfiller creates a hooked backfiller with all callbacks disabled, +// essentially acting as a noop. +func newHookedBackfiller() backfiller { + return new(hookedBackfiller) +} + +// suspend requests the backfiller to abort any running full or snap sync +// based on the skeleton chain as it might be invalid. The backfiller should +// gracefully handle multiple consecutive suspends without a resume, even +// on initial sartup. +func (hf *hookedBackfiller) suspend() { + if hf.suspendHook != nil { + hf.suspendHook() + } +} + +// resume requests the backfiller to start running fill or snap sync based on +// the skeleton chain as it has successfully been linked. Appending new heads +// to the end of the chain will not result in suspend/resume cycles. +func (hf *hookedBackfiller) resume() { + if hf.resumeHook != nil { + hf.resumeHook() + } +} + +// skeletonTestPeer is a mock peer that can only serve header requests from a +// pre-perated header chain (which may be arbitrarily wrong for testing). +// +// Requesting anything else from these peers will hard panic. Note, do *not* +// implement any other methods. We actually want to make sure that the skeleton +// syncer only depends on - and will only ever do so - on header requests. +type skeletonTestPeer struct { + id string // Unique identifier of the mock peer + headers []*types.Header // Headers to serve when requested + + serve func(origin uint64) []*types.Header // Hook to allow custom responses + + served uint64 // Number of headers served by this peer + dropped uint64 // Flag whether the peer was dropped (stop responding) +} + +// newSkeletonTestPeer creates a new mock peer to test the skeleton sync with. +func newSkeletonTestPeer(id string, headers []*types.Header) *skeletonTestPeer { + return &skeletonTestPeer{ + id: id, + headers: headers, + } +} + +// newSkeletonTestPeer creates a new mock peer to test the skeleton sync with, +// and sets an optional serve hook that can return headers for delivery instead +// of the predefined chain. Useful for emulating malicious behavior that would +// otherwise require dedicated peer types. +func newSkeletonTestPeerWithHook(id string, headers []*types.Header, serve func(origin uint64) []*types.Header) *skeletonTestPeer { + return &skeletonTestPeer{ + id: id, + headers: headers, + serve: serve, + } +} + +// RequestHeadersByNumber constructs a GetBlockHeaders function based on a numbered +// origin; associated with a particular peer in the download tester. The returned +// function can be used to retrieve batches of headers from the particular peer. +func (p *skeletonTestPeer) RequestHeadersByNumber(origin uint64, amount int, skip int, reverse bool, sink chan *eth.Response) (*eth.Request, error) { + // Since skeleton test peer are in-memory mocks, dropping the does not make + // them inaccepssible. As such, check a local `dropped` field to see if the + // peer has been dropped and should not respond any more. + if atomic.LoadUint64(&p.dropped) != 0 { + return nil, errors.New("peer already dropped") + } + // Skeleton sync retrieves batches of headers going backward without gaps. + // This ensures we can follow a clean parent progression without any reorg + // hiccups. There is no need for any other type of header retrieval, so do + // panic if there's such a request. + if !reverse || skip != 0 { + // Note, if other clients want to do these kinds of requests, it's their + // problem, it will still work. We just don't want *us* making complicated + // requests without a very strong reason to. + panic(fmt.Sprintf("invalid header retrieval: reverse %v, want true; skip %d, want 0", reverse, skip)) + } + // If the skeleton syncer requests the genesis block, panic. Whilst it could + // be considered a valid request, our code specifically should not request it + // ever since we want to link up headers to an existing local chain, which at + // worse will be the genesis. + if int64(origin)-int64(amount) < 0 { + panic(fmt.Sprintf("headers requested before (or at) genesis: origin %d, amount %d", origin, amount)) + } + // To make concurrency easier, the skeleton syncer always requests fixed size + // batches of headers. Panic if the peer is requested an amount other than the + // configured batch size (apart from the request leading to the genesis). + if amount > requestHeaders || (amount < requestHeaders && origin > uint64(amount)) { + panic(fmt.Sprintf("non-chunk size header batch requested: requested %d, want %d, origin %d", amount, requestHeaders, origin)) + } + // Simple reverse header retrieval. Fill from the peer's chain and return. + // If the tester has a serve hook set, try to use that before falling back + // to the default behavior. + var headers []*types.Header + if p.serve != nil { + headers = p.serve(origin) + } + if headers == nil { + headers = make([]*types.Header, 0, amount) + if len(p.headers) > int(origin) { // Don't serve headers if we're missing the origin + for i := 0; i < amount; i++ { + // Consider nil headers as a form of attack and withhold them. Nil + // cannot be decoded from RLP, so it's not possible to produce an + // attack by sending/receiving those over eth. + header := p.headers[int(origin)-i] + if header == nil { + continue + } + headers = append(headers, header) + } + } + } + atomic.AddUint64(&p.served, uint64(len(headers))) + + hashes := make([]common.Hash, len(headers)) + for i, header := range headers { + hashes[i] = header.Hash() + } + // Deliver the headers to the downloader + req := ð.Request{ + Peer: p.id, + } + res := ð.Response{ + Req: req, + Res: (*eth.BlockHeadersPacket)(&headers), + Meta: hashes, + Time: 1, + Done: make(chan error), + } + go func() { + sink <- res + if err := <-res.Done; err != nil { + log.Warn("Skeleton test peer response rejected", "err", err) + atomic.AddUint64(&p.dropped, 1) + } + }() + return req, nil +} + +func (p *skeletonTestPeer) Head() (common.Hash, *big.Int) { + panic("skeleton sync must not request the remote head") +} + +func (p *skeletonTestPeer) RequestHeadersByHash(common.Hash, int, int, bool, chan *eth.Response) (*eth.Request, error) { + panic("skeleton sync must not request headers by hash") +} + +func (p *skeletonTestPeer) RequestBodies([]common.Hash, chan *eth.Response) (*eth.Request, error) { + panic("skeleton sync must not request block bodies") +} + +func (p *skeletonTestPeer) RequestReceipts([]common.Hash, chan *eth.Response) (*eth.Request, error) { + panic("skeleton sync must not request receipts") +} + +// Tests various sync initialzations based on previous leftovers in the database +// and announced heads. +func TestSkeletonSyncInit(t *testing.T) { + // Create a few key headers + var ( + genesis = &types.Header{Number: big.NewInt(0)} + block49 = &types.Header{Number: big.NewInt(49)} + block49B = &types.Header{Number: big.NewInt(49), Extra: []byte("B")} + block50 = &types.Header{Number: big.NewInt(50), ParentHash: block49.Hash()} + ) + tests := []struct { + headers []*types.Header // Database content (beside the genesis) + oldstate []*subchain // Old sync state with various interrupted subchains + head *types.Header // New head header to announce to reorg to + newstate []*subchain // Expected sync state after the reorg + }{ + // Completely empty database with only the genesis set. The sync is expected + // to create a single subchain with the requested head. + { + head: block50, + newstate: []*subchain{{Head: 50, Tail: 50}}, + }, + // Empty database with only the genesis set with a leftover empty sync + // progess. This is a synthetic case, just for the sake of covering things. + { + oldstate: []*subchain{}, + head: block50, + newstate: []*subchain{{Head: 50, Tail: 50}}, + }, + // A single leftover subchain is present, older than the new head. The + // old subchain should be left as is and a new one appended to the sync + // status. + { + oldstate: []*subchain{{Head: 10, Tail: 5}}, + head: block50, + newstate: []*subchain{ + {Head: 50, Tail: 50}, + {Head: 10, Tail: 5}, + }, + }, + // Multiple leftover subchains are present, older than the new head. The + // old subchains should be left as is and a new one appended to the sync + // status. + { + oldstate: []*subchain{ + {Head: 20, Tail: 15}, + {Head: 10, Tail: 5}, + }, + head: block50, + newstate: []*subchain{ + {Head: 50, Tail: 50}, + {Head: 20, Tail: 15}, + {Head: 10, Tail: 5}, + }, + }, + // A single leftover subchain is present, newer than the new head. The + // newer subchain should be deleted and a fresh one created for the head. + { + oldstate: []*subchain{{Head: 65, Tail: 60}}, + head: block50, + newstate: []*subchain{{Head: 50, Tail: 50}}, + }, + // Multiple leftover subchain is present, newer than the new head. The + // newer subchains should be deleted and a fresh one created for the head. + { + oldstate: []*subchain{ + {Head: 75, Tail: 70}, + {Head: 65, Tail: 60}, + }, + head: block50, + newstate: []*subchain{{Head: 50, Tail: 50}}, + }, + + // Two leftover subchains are present, one fully older and one fully + // newer than the announced head. The head should delete the newer one, + // keeping the older one. + { + oldstate: []*subchain{ + {Head: 65, Tail: 60}, + {Head: 10, Tail: 5}, + }, + head: block50, + newstate: []*subchain{ + {Head: 50, Tail: 50}, + {Head: 10, Tail: 5}, + }, + }, + // Multiple leftover subchains are present, some fully older and some + // fully newer than the announced head. The head should delete the newer + // ones, keeping the older ones. + { + oldstate: []*subchain{ + {Head: 75, Tail: 70}, + {Head: 65, Tail: 60}, + {Head: 20, Tail: 15}, + {Head: 10, Tail: 5}, + }, + head: block50, + newstate: []*subchain{ + {Head: 50, Tail: 50}, + {Head: 20, Tail: 15}, + {Head: 10, Tail: 5}, + }, + }, + // A single leftover subchain is present and the new head is extending + // it with one more header. We expect the subchain head to be pushed + // forward. + { + headers: []*types.Header{block49}, + oldstate: []*subchain{{Head: 49, Tail: 5}}, + head: block50, + newstate: []*subchain{{Head: 50, Tail: 5}}, + }, + // A single leftover subchain is present and although the new head does + // extend it number wise, the hash chain does not link up. We expect a + // new subchain to be created for the dangling head. + { + headers: []*types.Header{block49B}, + oldstate: []*subchain{{Head: 49, Tail: 5}}, + head: block50, + newstate: []*subchain{ + {Head: 50, Tail: 50}, + {Head: 49, Tail: 5}, + }, + }, + // A single leftover subchain is present. A new head is announced that + // links into the middle of it, correctly anchoring into an existing + // header. We expect the old subchain to be truncated and extended with + // the new head. + { + headers: []*types.Header{block49}, + oldstate: []*subchain{{Head: 100, Tail: 5}}, + head: block50, + newstate: []*subchain{{Head: 50, Tail: 5}}, + }, + // A single leftover subchain is present. A new head is announced that + // links into the middle of it, but does not anchor into an existing + // header. We expect the old subchain to be truncated and a new chain + // be created for the dangling head. + { + headers: []*types.Header{block49B}, + oldstate: []*subchain{{Head: 100, Tail: 5}}, + head: block50, + newstate: []*subchain{ + {Head: 50, Tail: 50}, + {Head: 49, Tail: 5}, + }, + }, + } + for i, tt := range tests { + // Create a fresh database and initialize it with the starting state + db := rawdb.NewMemoryDatabase() + + rawdb.WriteHeader(db, genesis) + for _, header := range tt.headers { + rawdb.WriteSkeletonHeader(db, header) + } + if tt.oldstate != nil { + blob, _ := json.Marshal(&skeletonProgress{Subchains: tt.oldstate}) + rawdb.WriteSkeletonSyncStatus(db, blob) + } + // Create a skeleton sync and run a cycle + wait := make(chan struct{}) + + skeleton := newSkeleton(db, newPeerSet(), nil, newHookedBackfiller()) + skeleton.syncStarting = func() { close(wait) } + skeleton.Sync(tt.head, true) + + <-wait + skeleton.Terminate() + + // Ensure the correct resulting sync status + var progress skeletonProgress + json.Unmarshal(rawdb.ReadSkeletonSyncStatus(db), &progress) + + if len(progress.Subchains) != len(tt.newstate) { + t.Errorf("test %d: subchain count mismatch: have %d, want %d", i, len(progress.Subchains), len(tt.newstate)) + continue + } + for j := 0; j < len(progress.Subchains); j++ { + if progress.Subchains[j].Head != tt.newstate[j].Head { + t.Errorf("test %d: subchain %d head mismatch: have %d, want %d", i, j, progress.Subchains[j].Head, tt.newstate[j].Head) + } + if progress.Subchains[j].Tail != tt.newstate[j].Tail { + t.Errorf("test %d: subchain %d tail mismatch: have %d, want %d", i, j, progress.Subchains[j].Tail, tt.newstate[j].Tail) + } + } + } +} + +// Tests that a running skeleton sync can be extended with properly linked up +// headers but not with side chains. +func TestSkeletonSyncExtend(t *testing.T) { + // Create a few key headers + var ( + genesis = &types.Header{Number: big.NewInt(0)} + block49 = &types.Header{Number: big.NewInt(49)} + block49B = &types.Header{Number: big.NewInt(49), Extra: []byte("B")} + block50 = &types.Header{Number: big.NewInt(50), ParentHash: block49.Hash()} + block51 = &types.Header{Number: big.NewInt(51), ParentHash: block50.Hash()} + ) + tests := []struct { + head *types.Header // New head header to announce to reorg to + extend *types.Header // New head header to announce to extend with + newstate []*subchain // Expected sync state after the reorg + err error // Whether extension succeeds or not + }{ + // Initialize a sync and try to extend it with a subsequent block. + { + head: block49, + extend: block50, + newstate: []*subchain{ + {Head: 50, Tail: 49}, + }, + }, + // Initialize a sync and try to extend it with the existing head block. + { + head: block49, + extend: block49, + newstate: []*subchain{ + {Head: 49, Tail: 49}, + }, + err: errReorgDenied, + }, + // Initialize a sync and try to extend it with a sibling block. + { + head: block49, + extend: block49B, + newstate: []*subchain{ + {Head: 49, Tail: 49}, + }, + err: errReorgDenied, + }, + // Initialize a sync and try to extend it with a number-wise sequential + // header, but a hash wise non-linking one. + { + head: block49B, + extend: block50, + newstate: []*subchain{ + {Head: 49, Tail: 49}, + }, + err: errReorgDenied, + }, + // Initialize a sync and try to extend it with a non-linking future block. + { + head: block49, + extend: block51, + newstate: []*subchain{ + {Head: 49, Tail: 49}, + }, + err: errReorgDenied, + }, + // Initialize a sync and try to extend it with a past canonical block. + { + head: block50, + extend: block49, + newstate: []*subchain{ + {Head: 50, Tail: 50}, + }, + err: errReorgDenied, + }, + // Initialize a sync and try to extend it with a past sidechain block. + { + head: block50, + extend: block49B, + newstate: []*subchain{ + {Head: 50, Tail: 50}, + }, + err: errReorgDenied, + }, + } + for i, tt := range tests { + // Create a fresh database and initialize it with the starting state + db := rawdb.NewMemoryDatabase() + rawdb.WriteHeader(db, genesis) + + // Create a skeleton sync and run a cycle + wait := make(chan struct{}) + + skeleton := newSkeleton(db, newPeerSet(), nil, newHookedBackfiller()) + skeleton.syncStarting = func() { close(wait) } + skeleton.Sync(tt.head, true) + + <-wait + if err := skeleton.Sync(tt.extend, false); err != tt.err { + t.Errorf("extension failure mismatch: have %v, want %v", err, tt.err) + } + skeleton.Terminate() + + // Ensure the correct resulting sync status + var progress skeletonProgress + json.Unmarshal(rawdb.ReadSkeletonSyncStatus(db), &progress) + + if len(progress.Subchains) != len(tt.newstate) { + t.Errorf("test %d: subchain count mismatch: have %d, want %d", i, len(progress.Subchains), len(tt.newstate)) + continue + } + for j := 0; j < len(progress.Subchains); j++ { + if progress.Subchains[j].Head != tt.newstate[j].Head { + t.Errorf("test %d: subchain %d head mismatch: have %d, want %d", i, j, progress.Subchains[j].Head, tt.newstate[j].Head) + } + if progress.Subchains[j].Tail != tt.newstate[j].Tail { + t.Errorf("test %d: subchain %d tail mismatch: have %d, want %d", i, j, progress.Subchains[j].Tail, tt.newstate[j].Tail) + } + } + } +} + +// Tests that the skeleton sync correctly retrieves headers from one or more +// peers without duplicates or other strange side effects. +func TestSkeletonSyncRetrievals(t *testing.T) { + log.Root().SetHandler(log.LvlFilterHandler(log.LvlTrace, log.StreamHandler(os.Stderr, log.TerminalFormat(true)))) + + // Since skeleton headers don't need to be meaningful, beyond a parent hash + // progression, create a long fake chain to test with. + chain := []*types.Header{{Number: big.NewInt(0)}} + for i := 1; i < 10000; i++ { + chain = append(chain, &types.Header{ + ParentHash: chain[i-1].Hash(), + Number: big.NewInt(int64(i)), + }) + } + tests := []struct { + headers []*types.Header // Database content (beside the genesis) + oldstate []*subchain // Old sync state with various interrupted subchains + + head *types.Header // New head header to announce to reorg to + peers []*skeletonTestPeer // Initial peer set to start the sync with + midstate []*subchain // Expected sync state after initial cycle + midserve uint64 // Expected number of header retrievals after initial cycle + middrop uint64 // Expectd number of peers dropped after initial cycle + + newHead *types.Header // New header to annount on top of the old one + newPeer *skeletonTestPeer // New peer to join the skeleton syncer + endstate []*subchain // Expected sync state after the post-init event + endserve uint64 // Expected number of header retrievals after the post-init event + enddrop uint64 // Expectd number of peers dropped after the post-init event + }{ + // Completely empty database with only the genesis set. The sync is expected + // to create a single subchain with the requested head. No peers however, so + // the sync should be stuck without any progression. + // + // When a new peer is added, it should detect the join and fill the headers + // to the genesis block. + { + head: chain[len(chain)-1], + midstate: []*subchain{{Head: uint64(len(chain) - 1), Tail: uint64(len(chain) - 1)}}, + + newPeer: newSkeletonTestPeer("test-peer", chain), + endstate: []*subchain{{Head: uint64(len(chain) - 1), Tail: 1}}, + endserve: uint64(len(chain) - 2), // len - head - genesis + }, + // Completely empty database with only the genesis set. The sync is expected + // to create a single subchain with the requested head. With one valid peer, + // the sync is expected to complete already in the initial round. + // + // Adding a second peer should not have any effect. + { + head: chain[len(chain)-1], + peers: []*skeletonTestPeer{newSkeletonTestPeer("test-peer-1", chain)}, + midstate: []*subchain{{Head: uint64(len(chain) - 1), Tail: 1}}, + midserve: uint64(len(chain) - 2), // len - head - genesis + + newPeer: newSkeletonTestPeer("test-peer-2", chain), + endstate: []*subchain{{Head: uint64(len(chain) - 1), Tail: 1}}, + endserve: uint64(len(chain) - 2), // len - head - genesis + }, + // Completely empty database with only the genesis set. The sync is expected + // to create a single subchain with the requested head. With many valid peers, + // the sync is expected to complete already in the initial round. + // + // Adding a new peer should not have any effect. + { + head: chain[len(chain)-1], + peers: []*skeletonTestPeer{ + newSkeletonTestPeer("test-peer-1", chain), + newSkeletonTestPeer("test-peer-2", chain), + newSkeletonTestPeer("test-peer-3", chain), + }, + midstate: []*subchain{{Head: uint64(len(chain) - 1), Tail: 1}}, + midserve: uint64(len(chain) - 2), // len - head - genesis + + newPeer: newSkeletonTestPeer("test-peer-4", chain), + endstate: []*subchain{{Head: uint64(len(chain) - 1), Tail: 1}}, + endserve: uint64(len(chain) - 2), // len - head - genesis + }, + // This test checks if a peer tries to withhold a header - *on* the sync + // boundary - instead of sending the requested amount. The malicious short + // package should not be accepted. + // + // Joining with a new peer should however unblock the sync. + { + head: chain[requestHeaders+100], + peers: []*skeletonTestPeer{ + newSkeletonTestPeer("header-skipper", append(append(append([]*types.Header{}, chain[:99]...), nil), chain[100:]...)), + }, + midstate: []*subchain{{Head: requestHeaders + 100, Tail: 100}}, + midserve: requestHeaders + 101 - 3, // len - head - genesis - missing + middrop: 1, // penalize shortened header deliveries + + newPeer: newSkeletonTestPeer("good-peer", chain), + endstate: []*subchain{{Head: requestHeaders + 100, Tail: 1}}, + endserve: (requestHeaders + 101 - 3) + (100 - 1), // midserve + lenrest - genesis + enddrop: 1, // no new drops + }, + // This test checks if a peer tries to withhold a header - *off* the sync + // boundary - instead of sending the requested amount. The malicious short + // package should not be accepted. + // + // Joining with a new peer should however unblock the sync. + { + head: chain[requestHeaders+100], + peers: []*skeletonTestPeer{ + newSkeletonTestPeer("header-skipper", append(append(append([]*types.Header{}, chain[:50]...), nil), chain[51:]...)), + }, + midstate: []*subchain{{Head: requestHeaders + 100, Tail: 100}}, + midserve: requestHeaders + 101 - 3, // len - head - genesis - missing + middrop: 1, // penalize shortened header deliveries + + newPeer: newSkeletonTestPeer("good-peer", chain), + endstate: []*subchain{{Head: requestHeaders + 100, Tail: 1}}, + endserve: (requestHeaders + 101 - 3) + (100 - 1), // midserve + lenrest - genesis + enddrop: 1, // no new drops + }, + // This test checks if a peer tries to duplicate a header - *on* the sync + // boundary - instead of sending the correct sequence. The malicious duped + // package should not be accepted. + // + // Joining with a new peer should however unblock the sync. + { + head: chain[requestHeaders+100], // We want to force the 100th header to be a request boundary + peers: []*skeletonTestPeer{ + newSkeletonTestPeer("header-duper", append(append(append([]*types.Header{}, chain[:99]...), chain[98]), chain[100:]...)), + }, + midstate: []*subchain{{Head: requestHeaders + 100, Tail: 100}}, + midserve: requestHeaders + 101 - 2, // len - head - genesis + middrop: 1, // penalize invalid header sequences + + newPeer: newSkeletonTestPeer("good-peer", chain), + endstate: []*subchain{{Head: requestHeaders + 100, Tail: 1}}, + endserve: (requestHeaders + 101 - 2) + (100 - 1), // midserve + lenrest - genesis + enddrop: 1, // no new drops + }, + // This test checks if a peer tries to duplicate a header - *off* the sync + // boundary - instead of sending the correct sequence. The malicious duped + // package should not be accepted. + // + // Joining with a new peer should however unblock the sync. + { + head: chain[requestHeaders+100], // We want to force the 100th header to be a request boundary + peers: []*skeletonTestPeer{ + newSkeletonTestPeer("header-duper", append(append(append([]*types.Header{}, chain[:50]...), chain[49]), chain[51:]...)), + }, + midstate: []*subchain{{Head: requestHeaders + 100, Tail: 100}}, + midserve: requestHeaders + 101 - 2, // len - head - genesis + middrop: 1, // penalize invalid header sequences + + newPeer: newSkeletonTestPeer("good-peer", chain), + endstate: []*subchain{{Head: requestHeaders + 100, Tail: 1}}, + endserve: (requestHeaders + 101 - 2) + (100 - 1), // midserve + lenrest - genesis + enddrop: 1, // no new drops + }, + // This test checks if a peer tries to inject a different header - *on* + // the sync boundary - instead of sending the correct sequence. The bad + // package should not be accepted. + // + // Joining with a new peer should however unblock the sync. + { + head: chain[requestHeaders+100], // We want to force the 100th header to be a request boundary + peers: []*skeletonTestPeer{ + newSkeletonTestPeer("header-changer", + append( + append( + append([]*types.Header{}, chain[:99]...), + &types.Header{ + ParentHash: chain[98].Hash(), + Number: big.NewInt(int64(99)), + GasLimit: 1, + }, + ), chain[100:]..., + ), + ), + }, + midstate: []*subchain{{Head: requestHeaders + 100, Tail: 100}}, + midserve: requestHeaders + 101 - 2, // len - head - genesis + middrop: 1, // different set of headers, drop // TODO(karalabe): maybe just diff sync? + + newPeer: newSkeletonTestPeer("good-peer", chain), + endstate: []*subchain{{Head: requestHeaders + 100, Tail: 1}}, + endserve: (requestHeaders + 101 - 2) + (100 - 1), // midserve + lenrest - genesis + enddrop: 1, // no new drops + }, + // This test checks if a peer tries to inject a different header - *off* + // the sync boundary - instead of sending the correct sequence. The bad + // package should not be accepted. + // + // Joining with a new peer should however unblock the sync. + { + head: chain[requestHeaders+100], // We want to force the 100th header to be a request boundary + peers: []*skeletonTestPeer{ + newSkeletonTestPeer("header-changer", + append( + append( + append([]*types.Header{}, chain[:50]...), + &types.Header{ + ParentHash: chain[49].Hash(), + Number: big.NewInt(int64(50)), + GasLimit: 1, + }, + ), chain[51:]..., + ), + ), + }, + midstate: []*subchain{{Head: requestHeaders + 100, Tail: 100}}, + midserve: requestHeaders + 101 - 2, // len - head - genesis + middrop: 1, // different set of headers, drop + + newPeer: newSkeletonTestPeer("good-peer", chain), + endstate: []*subchain{{Head: requestHeaders + 100, Tail: 1}}, + endserve: (requestHeaders + 101 - 2) + (100 - 1), // midserve + lenrest - genesis + enddrop: 1, // no new drops + }, + // This test reproduces a bug caught during review (kudos to @holiman) + // where a subchain is merged with a previously interrupted one, causing + // pending data in the scratch space to become "invalid" (since we jump + // ahead during subchain merge). In that case it is expected to ignore + // the queued up data instead of trying to process on top of a shifted + // task set. + // + // The test is a bit convoluted since it needs to trigger a concurrency + // issue. First we sync up an initial chain of 2x512 items. Then announce + // 2x512+2 as head and delay delivering the head batch to fill the scratch + // space first. The delivery head should merge with the previous download + // and the scratch space must not be consumed further. + { + head: chain[2*requestHeaders], + peers: []*skeletonTestPeer{ + newSkeletonTestPeerWithHook("peer-1", chain, func(origin uint64) []*types.Header { + if origin == chain[2*requestHeaders+1].Number.Uint64() { + time.Sleep(100 * time.Millisecond) + } + return nil // Fallback to default behavior, just delayed + }), + newSkeletonTestPeerWithHook("peer-2", chain, func(origin uint64) []*types.Header { + if origin == chain[2*requestHeaders+1].Number.Uint64() { + time.Sleep(100 * time.Millisecond) + } + return nil // Fallback to default behavior, just delayed + }), + }, + midstate: []*subchain{{Head: 2 * requestHeaders, Tail: 1}}, + midserve: 2*requestHeaders - 1, // len - head - genesis + + newHead: chain[2*requestHeaders+2], + endstate: []*subchain{{Head: 2*requestHeaders + 2, Tail: 1}}, + endserve: 4 * requestHeaders, + }, + } + for i, tt := range tests { + // Create a fresh database and initialize it with the starting state + db := rawdb.NewMemoryDatabase() + rawdb.WriteHeader(db, chain[0]) + + // Create a peer set to feed headers through + peerset := newPeerSet() + for _, peer := range tt.peers { + peerset.Register(newPeerConnection(peer.id, eth.ETH66, peer, log.New("id", peer.id))) + } + // Create a peer dropper to track malicious peers + dropped := make(map[string]int) + drop := func(peer string) { + if p := peerset.Peer(peer); p != nil { + atomic.AddUint64(&p.peer.(*skeletonTestPeer).dropped, 1) + } + peerset.Unregister(peer) + dropped[peer]++ + } + // Create a skeleton sync and run a cycle + skeleton := newSkeleton(db, peerset, drop, newHookedBackfiller()) + skeleton.Sync(tt.head, true) + + var progress skeletonProgress + // Wait a bit (bleah) for the initial sync loop to go to idle. This might + // be either a finish or a never-start hence why there's no event to hook. + check := func() error { + if len(progress.Subchains) != len(tt.midstate) { + return fmt.Errorf("test %d, mid state: subchain count mismatch: have %d, want %d", i, len(progress.Subchains), len(tt.midstate)) + + } + for j := 0; j < len(progress.Subchains); j++ { + if progress.Subchains[j].Head != tt.midstate[j].Head { + return fmt.Errorf("test %d, mid state: subchain %d head mismatch: have %d, want %d", i, j, progress.Subchains[j].Head, tt.midstate[j].Head) + } + if progress.Subchains[j].Tail != tt.midstate[j].Tail { + return fmt.Errorf("test %d, mid state: subchain %d tail mismatch: have %d, want %d", i, j, progress.Subchains[j].Tail, tt.midstate[j].Tail) + } + } + return nil + } + + waitStart := time.Now() + for waitTime := 20 * time.Millisecond; time.Since(waitStart) < time.Second; waitTime = waitTime * 2 { + time.Sleep(waitTime) + // Check the post-init end state if it matches the required results + json.Unmarshal(rawdb.ReadSkeletonSyncStatus(db), &progress) + if err := check(); err == nil { + break + } + } + if err := check(); err != nil { + t.Error(err) + continue + } + var served uint64 + for _, peer := range tt.peers { + served += atomic.LoadUint64(&peer.served) + } + if served != tt.midserve { + t.Errorf("test %d, mid state: served headers mismatch: have %d, want %d", i, served, tt.midserve) + } + var drops uint64 + for _, peer := range tt.peers { + drops += atomic.LoadUint64(&peer.dropped) + } + if drops != tt.middrop { + t.Errorf("test %d, mid state: dropped peers mismatch: have %d, want %d", i, drops, tt.middrop) + } + // Apply the post-init events if there's any + if tt.newHead != nil { + skeleton.Sync(tt.newHead, true) + } + if tt.newPeer != nil { + if err := peerset.Register(newPeerConnection(tt.newPeer.id, eth.ETH66, tt.newPeer, log.New("id", tt.newPeer.id))); err != nil { + t.Errorf("test %d: failed to register new peer: %v", i, err) + } + } + // Wait a bit (bleah) for the second sync loop to go to idle. This might + // be either a finish or a never-start hence why there's no event to hook. + check = func() error { + if len(progress.Subchains) != len(tt.endstate) { + return fmt.Errorf("test %d, end state: subchain count mismatch: have %d, want %d", i, len(progress.Subchains), len(tt.endstate)) + } + for j := 0; j < len(progress.Subchains); j++ { + if progress.Subchains[j].Head != tt.endstate[j].Head { + return fmt.Errorf("test %d, end state: subchain %d head mismatch: have %d, want %d", i, j, progress.Subchains[j].Head, tt.endstate[j].Head) + } + if progress.Subchains[j].Tail != tt.endstate[j].Tail { + return fmt.Errorf("test %d, end state: subchain %d tail mismatch: have %d, want %d", i, j, progress.Subchains[j].Tail, tt.endstate[j].Tail) + } + } + return nil + } + waitStart = time.Now() + for waitTime := 20 * time.Millisecond; time.Since(waitStart) < time.Second; waitTime = waitTime * 2 { + time.Sleep(waitTime) + // Check the post-init end state if it matches the required results + json.Unmarshal(rawdb.ReadSkeletonSyncStatus(db), &progress) + if err := check(); err == nil { + break + } + } + if err := check(); err != nil { + t.Error(err) + continue + } + // Check that the peers served no more headers than we actually needed + served = 0 + for _, peer := range tt.peers { + served += atomic.LoadUint64(&peer.served) + } + if tt.newPeer != nil { + served += atomic.LoadUint64(&tt.newPeer.served) + } + if served != tt.endserve { + t.Errorf("test %d, end state: served headers mismatch: have %d, want %d", i, served, tt.endserve) + } + drops = 0 + for _, peer := range tt.peers { + drops += atomic.LoadUint64(&peer.dropped) + } + if tt.newPeer != nil { + drops += atomic.LoadUint64(&tt.newPeer.dropped) + } + if drops != tt.middrop { + t.Errorf("test %d, end state: dropped peers mismatch: have %d, want %d", i, drops, tt.middrop) + } + // Clean up any leftover skeleton sync resources + skeleton.Terminate() + } +} diff --git a/eth/ethconfig/config.go b/eth/ethconfig/config.go index 1572377f89..6ab43891f7 100644 --- a/eth/ethconfig/config.go +++ b/eth/ethconfig/config.go @@ -27,6 +27,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/consensus" + "github.com/ethereum/go-ethereum/consensus/beacon" "github.com/ethereum/go-ethereum/consensus/bor" "github.com/ethereum/go-ethereum/consensus/clique" "github.com/ethereum/go-ethereum/consensus/ethash" @@ -139,8 +140,10 @@ type Config struct { TxLookupLimit uint64 `toml:",omitempty"` // The maximum number of blocks from head whose tx indices are reserved. - // Whitelist of required block number -> hash values to accept - Whitelist map[uint64]common.Hash `toml:"-"` + // PeerRequiredBlocks is a set of block number -> hash mappings which must be in the + // canonical chain of all remote peers. Setting the option makes geth verify the + // presence of these blocks for every new peer connection. + PeerRequiredBlocks map[uint64]common.Hash `toml:"-"` // Light client options LightServ int `toml:",omitempty"` // Maximum percentage of time allowed for serving LES requests @@ -221,12 +224,11 @@ type Config struct { } // CreateConsensusEngine creates a consensus engine for the given chain configuration. -func CreateConsensusEngine(stack *node.Node, chainConfig *params.ChainConfig, ethConfig *Config, db ethdb.Database, blockchainAPI *ethapi.PublicBlockChainAPI) consensus.Engine { +func CreateConsensusEngine(stack *node.Node, chainConfig *params.ChainConfig, ethConfig *Config, notify []string, noverify bool, db ethdb.Database, blockchainAPI *ethapi.PublicBlockChainAPI) consensus.Engine { config := ðConfig.Ethash - notify := ethConfig.Miner.Notify - noverify := ethConfig.Miner.Noverify // If proof-of-authority is requested, set it up + var engine consensus.Engine if chainConfig.Clique != nil { return clique.New(chainConfig.Clique, db) } @@ -236,29 +238,28 @@ func CreateConsensusEngine(stack *node.Node, chainConfig *params.ChainConfig, et // Then, bor != nil will also be enabled for ethash and clique. Only enable Bor for real if there is a validator contract present. if chainConfig.Bor != nil && chainConfig.Bor.ValidatorContract != "" { return bor.New(chainConfig, db, blockchainAPI, ethConfig.HeimdallURL, ethConfig.WithoutHeimdall) + } else { + switch config.PowMode { + case ethash.ModeFake: + log.Warn("Ethash used in fake mode") + case ethash.ModeTest: + log.Warn("Ethash used in test mode") + case ethash.ModeShared: + log.Warn("Ethash used in shared mode") + } + engine = ethash.New(ethash.Config{ + PowMode: config.PowMode, + CacheDir: stack.ResolvePath(config.CacheDir), + CachesInMem: config.CachesInMem, + CachesOnDisk: config.CachesOnDisk, + CachesLockMmap: config.CachesLockMmap, + DatasetDir: config.DatasetDir, + DatasetsInMem: config.DatasetsInMem, + DatasetsOnDisk: config.DatasetsOnDisk, + DatasetsLockMmap: config.DatasetsLockMmap, + NotifyFull: config.NotifyFull, + }, notify, noverify) + engine.(*ethash.Ethash).SetThreads(-1) // Disable CPU mining } - - // Otherwise assume proof-of-work - switch config.PowMode { - case ethash.ModeFake: - log.Warn("Ethash used in fake mode") - case ethash.ModeTest: - log.Warn("Ethash used in test mode") - case ethash.ModeShared: - log.Warn("Ethash used in shared mode") - } - engine := ethash.New(ethash.Config{ - PowMode: config.PowMode, - CacheDir: stack.ResolvePath(config.CacheDir), - CachesInMem: config.CachesInMem, - CachesOnDisk: config.CachesOnDisk, - CachesLockMmap: config.CachesLockMmap, - DatasetDir: config.DatasetDir, - DatasetsInMem: config.DatasetsInMem, - DatasetsOnDisk: config.DatasetsOnDisk, - DatasetsLockMmap: config.DatasetsLockMmap, - NotifyFull: config.NotifyFull, - }, notify, noverify) - engine.SetThreads(-1) // Disable CPU mining - return engine + return beacon.New(engine) } diff --git a/eth/ethconfig/gen_config.go b/eth/ethconfig/gen_config.go index 70a9649bff..874e30dffd 100644 --- a/eth/ethconfig/gen_config.go +++ b/eth/ethconfig/gen_config.go @@ -26,7 +26,7 @@ func (c Config) MarshalTOML() (interface{}, error) { NoPruning bool NoPrefetch bool TxLookupLimit uint64 `toml:",omitempty"` - Whitelist map[uint64]common.Hash `toml:"-"` + PeerRequiredBlocks map[uint64]common.Hash `toml:"-"` LightServ int `toml:",omitempty"` LightIngress int `toml:",omitempty"` LightEgress int `toml:",omitempty"` @@ -71,7 +71,7 @@ func (c Config) MarshalTOML() (interface{}, error) { enc.NoPruning = c.NoPruning enc.NoPrefetch = c.NoPrefetch enc.TxLookupLimit = c.TxLookupLimit - enc.Whitelist = c.Whitelist + enc.PeerRequiredBlocks = c.PeerRequiredBlocks enc.LightServ = c.LightServ enc.LightIngress = c.LightIngress enc.LightEgress = c.LightEgress @@ -120,7 +120,7 @@ func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error { NoPruning *bool NoPrefetch *bool TxLookupLimit *uint64 `toml:",omitempty"` - Whitelist map[uint64]common.Hash `toml:"-"` + PeerRequiredBlocks map[uint64]common.Hash `toml:"-"` LightServ *int `toml:",omitempty"` LightIngress *int `toml:",omitempty"` LightEgress *int `toml:",omitempty"` @@ -184,8 +184,8 @@ func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error { if dec.TxLookupLimit != nil { c.TxLookupLimit = *dec.TxLookupLimit } - if dec.Whitelist != nil { - c.Whitelist = dec.Whitelist + if dec.PeerRequiredBlocks != nil { + c.PeerRequiredBlocks = dec.PeerRequiredBlocks } if dec.LightServ != nil { c.LightServ = *dec.LightServ diff --git a/eth/fetcher/block_fetcher_test.go b/eth/fetcher/block_fetcher_test.go index 628a565042..06c61ae55d 100644 --- a/eth/fetcher/block_fetcher_test.go +++ b/eth/fetcher/block_fetcher_test.go @@ -364,6 +364,7 @@ func testSequentialAnnouncements(t *testing.T, light bool) { hashes, blocks := makeChain(targetBlocks, 0, genesis) tester := newTester(light) + defer tester.fetcher.Stop() headerFetcher := tester.makeHeaderFetcher("valid", blocks, -gatherSlack) bodyFetcher := tester.makeBodyFetcher("valid", blocks, 0) @@ -743,7 +744,7 @@ func testInvalidNumberAnnouncement(t *testing.T, light bool) { badBodyFetcher := tester.makeBodyFetcher("bad", blocks, 0) imported := make(chan interface{}) - announced := make(chan interface{}) + announced := make(chan interface{}, 2) tester.fetcher.importedHook = func(header *types.Header, block *types.Block) { if light { if header == nil { @@ -806,6 +807,7 @@ func TestEmptyBlockShortCircuit(t *testing.T) { hashes, blocks := makeChain(32, 0, genesis) tester := newTester(false) + defer tester.fetcher.Stop() headerFetcher := tester.makeHeaderFetcher("valid", blocks, -gatherSlack) bodyFetcher := tester.makeBodyFetcher("valid", blocks, 0) diff --git a/eth/gasprice/feehistory.go b/eth/gasprice/feehistory.go index 970dfd4467..4113089afb 100644 --- a/eth/gasprice/feehistory.go +++ b/eth/gasprice/feehistory.go @@ -117,7 +117,7 @@ func (oracle *Oracle) processBlock(bf *blockFees, percentiles []float64) { reward, _ := tx.EffectiveGasTip(bf.block.BaseFee()) sorter[i] = txGasAndReward{gasUsed: bf.receipts[i].GasUsed, reward: reward} } - sort.Sort(sorter) + sort.Stable(sorter) var txIndex int sumGasUsed := sorter[0].gasUsed diff --git a/eth/handler.go b/eth/handler.go index 55ca869c77..40edfa2d17 100644 --- a/eth/handler.go +++ b/eth/handler.go @@ -86,7 +86,8 @@ type handlerConfig struct { BloomCache uint64 // Megabytes to alloc for snap sync bloom EventMux *event.TypeMux // Legacy event mux, deprecate for `feed` Checkpoint *params.TrustedCheckpoint // Hard coded checkpoint for sync challenges - Whitelist map[uint64]common.Hash // Hard coded whitelist for sync challenged + + PeerRequiredBlocks map[uint64]common.Hash // Hard coded map of required block hashes for sync challenges } type handler struct { @@ -115,7 +116,7 @@ type handler struct { txsSub event.Subscription minedBlockSub *event.TypeMuxSubscription - whitelist map[uint64]common.Hash + peerRequiredBlocks map[uint64]common.Hash // channels for fetcher, syncer, txsyncLoop quitSync chan struct{} @@ -132,16 +133,16 @@ func newHandler(config *handlerConfig) (*handler, error) { config.EventMux = new(event.TypeMux) // Nicety initialization for tests } h := &handler{ - networkID: config.Network, - forkFilter: forkid.NewFilter(config.Chain), - eventMux: config.EventMux, - database: config.Database, - txpool: config.TxPool, - chain: config.Chain, - peers: newPeerSet(), - merger: config.Merger, - whitelist: config.Whitelist, - quitSync: make(chan struct{}), + networkID: config.Network, + forkFilter: forkid.NewFilter(config.Chain), + eventMux: config.EventMux, + database: config.Database, + txpool: config.TxPool, + chain: config.Chain, + peers: newPeerSet(), + merger: config.Merger, + peerRequiredBlocks: config.PeerRequiredBlocks, + quitSync: make(chan struct{}), } if config.Sync == downloader.FullSync { // The database seems empty as the current block is the genesis. Yet the snap @@ -171,10 +172,30 @@ func newHandler(config *handlerConfig) (*handler, error) { h.checkpointNumber = (config.Checkpoint.SectionIndex+1)*params.CHTFrequency - 1 h.checkpointHash = config.Checkpoint.SectionHead } + // If sync succeeds, pass a callback to potentially disable snap sync mode + // and enable transaction propagation. + success := func() { + // If we were running snap sync and it finished, disable doing another + // round on next sync cycle + if atomic.LoadUint32(&h.snapSync) == 1 { + log.Info("Snap sync complete, auto disabling") + atomic.StoreUint32(&h.snapSync, 0) + } + // If we've successfully finished a sync cycle and passed any required + // checkpoint, enable accepting transactions from the network + head := h.chain.CurrentBlock() + if head.NumberU64() >= h.checkpointNumber { + // Checkpoint passed, sanity check the timestamp to have a fallback mechanism + // for non-checkpointed (number = 0) private networks. + if head.Time() >= uint64(time.Now().AddDate(0, -1, 0).Unix()) { + atomic.StoreUint32(&h.acceptTxs, 1) + } + } + } // Construct the downloader (long sync) and its backing state bloom if snap // sync is requested. The downloader is responsible for deallocating the state // bloom when it's done. - h.downloader = downloader.New(h.checkpointNumber, config.Database, h.eventMux, h.chain, nil, h.removePeer) + h.downloader = downloader.New(h.checkpointNumber, config.Database, h.eventMux, h.chain, nil, h.removePeer, success) // Construct the fetcher (short sync) validator := func(header *types.Header) error { @@ -403,8 +424,8 @@ func (h *handler) runEthPeer(peer *eth.Peer, handler eth.Handler) error { } }() } - // If we have any explicit whitelist block hashes, request them - for number, hash := range h.whitelist { + // If we have any explicit peer required block hashes, request them + for number := range h.peerRequiredBlocks { resCh := make(chan *eth.Response) if _, err := peer.RequestHeadersByNumber(number, 1, 0, false, resCh); err != nil { return err @@ -417,25 +438,25 @@ func (h *handler) runEthPeer(peer *eth.Peer, handler eth.Handler) error { case res := <-resCh: headers := ([]*types.Header)(*res.Res.(*eth.BlockHeadersPacket)) if len(headers) == 0 { - // Whitelisted blocks are allowed to be missing if the remote + // Required blocks are allowed to be missing if the remote // node is not yet synced res.Done <- nil return } // Validate the header and either drop the peer or continue if len(headers) > 1 { - res.Done <- errors.New("too many headers in whitelist response") + res.Done <- errors.New("too many headers in required block response") return } if headers[0].Number.Uint64() != number || headers[0].Hash() != hash { - peer.Log().Info("Whitelist mismatch, dropping peer", "number", number, "hash", headers[0].Hash(), "want", hash) - res.Done <- errors.New("whitelist block mismatch") + peer.Log().Info("Required block mismatch, dropping peer", "number", number, "hash", headers[0].Hash(), "want", hash) + res.Done <- errors.New("required block mismatch") return } - peer.Log().Debug("Whitelist block verified", "number", number, "hash", hash) - + peer.Log().Debug("Peer required block verified", "number", number, "hash", hash) + res.Done <- nil case <-timeout.C: - peer.Log().Warn("Whitelist challenge timed out, dropping", "addr", peer.RemoteAddr(), "type", peer.Name()) + peer.Log().Warn("Required block challenge timed out, dropping", "addr", peer.RemoteAddr(), "type", peer.Name()) h.removePeer(peer.ID()) } }(number, hash) diff --git a/eth/handler_eth_test.go b/eth/handler_eth_test.go index 6e1c57cb6c..7d5027ae77 100644 --- a/eth/handler_eth_test.go +++ b/eth/handler_eth_test.go @@ -570,7 +570,7 @@ func testCheckpointChallenge(t *testing.T, syncmode downloader.SyncMode, checkpo t.Fatalf("failed to answer challenge: %v", err) } } else { - responseRlp, _ := rlp.EncodeToBytes(types.Header{Number: response.Number}) + responseRlp, _ := rlp.EncodeToBytes(&types.Header{Number: response.Number}) if err := remote.ReplyBlockHeadersRLP(request.RequestId, []rlp.RawValue{responseRlp}); err != nil { t.Fatalf("failed to answer challenge: %v", err) } diff --git a/eth/peerset.go b/eth/peerset.go index 1e864a8e46..3e54a481e3 100644 --- a/eth/peerset.go +++ b/eth/peerset.go @@ -230,7 +230,7 @@ func (ps *peerSet) snapLen() int { } // peerWithHighestTD retrieves the known peer with the currently highest total -// difficulty. +// difficulty, but below the given PoS switchover threshold. func (ps *peerSet) peerWithHighestTD() *eth.Peer { ps.lock.RLock() defer ps.lock.RUnlock() diff --git a/eth/protocols/eth/handler_test.go b/eth/protocols/eth/handler_test.go index 7d9b378839..55e612b801 100644 --- a/eth/protocols/eth/handler_test.go +++ b/eth/protocols/eth/handler_test.go @@ -264,11 +264,11 @@ func testGetBlockHeaders(t *testing.T, protocol uint) { headers = append(headers, backend.chain.GetBlockByHash(hash).Header()) } // Send the hash request and verify the response - p2p.Send(peer.app, GetBlockHeadersMsg, GetBlockHeadersPacket66{ + p2p.Send(peer.app, GetBlockHeadersMsg, &GetBlockHeadersPacket66{ RequestId: 123, GetBlockHeadersPacket: tt.query, }) - if err := p2p.ExpectMsg(peer.app, BlockHeadersMsg, BlockHeadersPacket66{ + if err := p2p.ExpectMsg(peer.app, BlockHeadersMsg, &BlockHeadersPacket66{ RequestId: 123, BlockHeadersPacket: headers, }); err != nil { @@ -279,14 +279,12 @@ func testGetBlockHeaders(t *testing.T, protocol uint) { if origin := backend.chain.GetBlockByNumber(tt.query.Origin.Number); origin != nil { tt.query.Origin.Hash, tt.query.Origin.Number = origin.Hash(), 0 - p2p.Send(peer.app, GetBlockHeadersMsg, GetBlockHeadersPacket66{ + p2p.Send(peer.app, GetBlockHeadersMsg, &GetBlockHeadersPacket66{ RequestId: 456, GetBlockHeadersPacket: tt.query, }) - if err := p2p.ExpectMsg(peer.app, BlockHeadersMsg, BlockHeadersPacket66{ - RequestId: 456, - BlockHeadersPacket: headers, - }); err != nil { + expected := &BlockHeadersPacket66{RequestId: 456, BlockHeadersPacket: headers} + if err := p2p.ExpectMsg(peer.app, BlockHeadersMsg, expected); err != nil { t.Errorf("test %d by hash: headers mismatch: %v", i, err) } } @@ -364,11 +362,11 @@ func testGetBlockBodies(t *testing.T, protocol uint) { } } // Send the hash request and verify the response - p2p.Send(peer.app, GetBlockBodiesMsg, GetBlockBodiesPacket66{ + p2p.Send(peer.app, GetBlockBodiesMsg, &GetBlockBodiesPacket66{ RequestId: 123, GetBlockBodiesPacket: hashes, }) - if err := p2p.ExpectMsg(peer.app, BlockBodiesMsg, BlockBodiesPacket66{ + if err := p2p.ExpectMsg(peer.app, BlockBodiesMsg, &BlockBodiesPacket66{ RequestId: 123, BlockBodiesPacket: bodies, }); err != nil { @@ -436,7 +434,7 @@ func testGetNodeData(t *testing.T, protocol uint) { it.Release() // Request all hashes. - p2p.Send(peer.app, GetNodeDataMsg, GetNodeDataPacket66{ + p2p.Send(peer.app, GetNodeDataMsg, &GetNodeDataPacket66{ RequestId: 123, GetNodeDataPacket: hashes, }) @@ -546,11 +544,11 @@ func testGetBlockReceipts(t *testing.T, protocol uint) { receipts = append(receipts, backend.chain.GetReceiptsByHash(block.Hash())) } // Send the hash request and verify the response - p2p.Send(peer.app, GetReceiptsMsg, GetReceiptsPacket66{ + p2p.Send(peer.app, GetReceiptsMsg, &GetReceiptsPacket66{ RequestId: 123, GetReceiptsPacket: hashes, }) - if err := p2p.ExpectMsg(peer.app, ReceiptsMsg, ReceiptsPacket66{ + if err := p2p.ExpectMsg(peer.app, ReceiptsMsg, &ReceiptsPacket66{ RequestId: 123, ReceiptsPacket: receipts, }); err != nil { diff --git a/eth/protocols/eth/peer.go b/eth/protocols/eth/peer.go index 4161420f3a..a8af9640bb 100644 --- a/eth/protocols/eth/peer.go +++ b/eth/protocols/eth/peer.go @@ -241,7 +241,7 @@ func (p *Peer) ReplyPooledTransactionsRLP(id uint64, hashes []common.Hash, txs [ p.knownTxs.Add(hashes...) // Not packed into PooledTransactionsPacket to avoid RLP decoding - return p2p.Send(p.rw, PooledTransactionsMsg, PooledTransactionsRLPPacket66{ + return p2p.Send(p.rw, PooledTransactionsMsg, &PooledTransactionsRLPPacket66{ RequestId: id, PooledTransactionsRLPPacket: txs, }) @@ -298,7 +298,7 @@ func (p *Peer) AsyncSendNewBlock(block *types.Block, td *big.Int) { // ReplyBlockHeaders is the eth/66 version of SendBlockHeaders. func (p *Peer) ReplyBlockHeadersRLP(id uint64, headers []rlp.RawValue) error { - return p2p.Send(p.rw, BlockHeadersMsg, BlockHeadersRLPPacket66{ + return p2p.Send(p.rw, BlockHeadersMsg, &BlockHeadersRLPPacket66{ RequestId: id, BlockHeadersRLPPacket: headers, }) @@ -307,7 +307,7 @@ func (p *Peer) ReplyBlockHeadersRLP(id uint64, headers []rlp.RawValue) error { // ReplyBlockBodiesRLP is the eth/66 version of SendBlockBodiesRLP. func (p *Peer) ReplyBlockBodiesRLP(id uint64, bodies []rlp.RawValue) error { // Not packed into BlockBodiesPacket to avoid RLP decoding - return p2p.Send(p.rw, BlockBodiesMsg, BlockBodiesRLPPacket66{ + return p2p.Send(p.rw, BlockBodiesMsg, &BlockBodiesRLPPacket66{ RequestId: id, BlockBodiesRLPPacket: bodies, }) @@ -315,7 +315,7 @@ func (p *Peer) ReplyBlockBodiesRLP(id uint64, bodies []rlp.RawValue) error { // ReplyNodeData is the eth/66 response to GetNodeData. func (p *Peer) ReplyNodeData(id uint64, data [][]byte) error { - return p2p.Send(p.rw, NodeDataMsg, NodeDataPacket66{ + return p2p.Send(p.rw, NodeDataMsg, &NodeDataPacket66{ RequestId: id, NodeDataPacket: data, }) @@ -323,7 +323,7 @@ func (p *Peer) ReplyNodeData(id uint64, data [][]byte) error { // ReplyReceiptsRLP is the eth/66 response to GetReceipts. func (p *Peer) ReplyReceiptsRLP(id uint64, receipts []rlp.RawValue) error { - return p2p.Send(p.rw, ReceiptsMsg, ReceiptsRLPPacket66{ + return p2p.Send(p.rw, ReceiptsMsg, &ReceiptsRLPPacket66{ RequestId: id, ReceiptsRLPPacket: receipts, }) diff --git a/eth/protocols/snap/handler.go b/eth/protocols/snap/handler.go index 0a1ee2637f..314776dffe 100644 --- a/eth/protocols/snap/handler.go +++ b/eth/protocols/snap/handler.go @@ -299,7 +299,7 @@ func ServiceGetAccountRangeQuery(chain *core.BlockChain, req *GetAccountRangePac size uint64 last common.Hash ) - for it.Next() && size < req.Bytes { + for it.Next() { hash, account := it.Hash(), common.CopyBytes(it.Account()) // Track the returned interval for the Merkle proofs @@ -315,6 +315,9 @@ func ServiceGetAccountRangeQuery(chain *core.BlockChain, req *GetAccountRangePac if bytes.Compare(hash[:], req.Limit[:]) >= 0 { break } + if size > req.Bytes { + break + } } it.Release() @@ -464,7 +467,7 @@ func ServiceGetByteCodesQuery(chain *core.BlockChain, req *GetByteCodesPacket) [ // Peers should not request the empty code, but if they do, at // least sent them back a correct response without db lookups codes = append(codes, []byte{}) - } else if blob, err := chain.ContractCode(hash); err == nil { + } else if blob, err := chain.ContractCodeWithPrefix(hash); err == nil { codes = append(codes, blob) bytes += uint64(len(blob)) } diff --git a/eth/protocols/snap/sync.go b/eth/protocols/snap/sync.go index be8644a5a4..665d7601cf 100644 --- a/eth/protocols/snap/sync.go +++ b/eth/protocols/snap/sync.go @@ -168,7 +168,7 @@ type bytecodeResponse struct { // to actual requests and to validate any security constraints. // // Concurrency note: storage requests and responses are handled concurrently from -// the main runloop to allow Merkel proof verifications on the peer's thread and +// the main runloop to allow Merkle proof verifications on the peer's thread and // to drop on invalid response. The request struct must contain all the data to // construct the response without accessing runloop internals (i.e. tasks). That // is only included to allow the runloop to match a response to the task being @@ -1781,7 +1781,7 @@ func (s *Syncer) processAccountResponse(res *accountResponse) { for i, account := range res.accounts { // Check if the account is a contract with an unknown code if !bytes.Equal(account.CodeHash, emptyCode[:]) { - if code := rawdb.ReadCodeWithPrefix(s.db, common.BytesToHash(account.CodeHash)); code == nil { + if !rawdb.HasCodeWithPrefix(s.db, common.BytesToHash(account.CodeHash)) { res.task.codeTasks[common.BytesToHash(account.CodeHash)] = struct{}{} res.task.needCode[i] = true res.task.pend++ @@ -1789,7 +1789,7 @@ func (s *Syncer) processAccountResponse(res *accountResponse) { } // Check if the account is a contract with an unknown storage trie if account.Root != emptyRoot { - if node, err := s.db.Get(account.Root[:]); err != nil || node == nil { + if ok, err := s.db.Has(account.Root[:]); err != nil || !ok { // If there was a previous large state retrieval in progress, // don't restart it from scratch. This happens if a sync cycle // is interrupted and resumed later. However, *do* update the @@ -2826,7 +2826,10 @@ func (s *Syncer) reportSyncProgress(force bool) { new(big.Int).Mul(new(big.Int).SetUint64(uint64(synced)), hashSpace), accountFills, ).Uint64()) - + // Don't report anything until we have a meaningful progress + if estBytes < 1.0 { + return + } elapsed := time.Since(s.startTime) estTime := elapsed / time.Duration(synced) * time.Duration(estBytes) diff --git a/eth/protocols/snap/sync_test.go b/eth/protocols/snap/sync_test.go index 47ab1f026d..879ce8b6b2 100644 --- a/eth/protocols/snap/sync_test.go +++ b/eth/protocols/snap/sync_test.go @@ -1349,7 +1349,7 @@ func makeAccountTrieNoStorage(n int) (*trie.Trie, entrySlice) { accTrie, _ := trie.New(common.Hash{}, db) var entries entrySlice for i := uint64(1); i <= uint64(n); i++ { - value, _ := rlp.EncodeToBytes(types.StateAccount{ + value, _ := rlp.EncodeToBytes(&types.StateAccount{ Nonce: i, Balance: big.NewInt(int64(i)), Root: emptyRoot, @@ -1394,7 +1394,7 @@ func makeBoundaryAccountTrie(n int) (*trie.Trie, entrySlice) { } // Fill boundary accounts for i := 0; i < len(boundaries); i++ { - value, _ := rlp.EncodeToBytes(types.StateAccount{ + value, _ := rlp.EncodeToBytes(&types.StateAccount{ Nonce: uint64(0), Balance: big.NewInt(int64(i)), Root: emptyRoot, @@ -1406,7 +1406,7 @@ func makeBoundaryAccountTrie(n int) (*trie.Trie, entrySlice) { } // Fill other accounts if required for i := uint64(1); i <= uint64(n); i++ { - value, _ := rlp.EncodeToBytes(types.StateAccount{ + value, _ := rlp.EncodeToBytes(&types.StateAccount{ Nonce: i, Balance: big.NewInt(int64(i)), Root: emptyRoot, @@ -1442,7 +1442,7 @@ func makeAccountTrieWithStorageWithUniqueStorage(accounts, slots int, code bool) stTrie, stEntries := makeStorageTrieWithSeed(uint64(slots), i, db) stRoot := stTrie.Hash() stTrie.Commit(nil) - value, _ := rlp.EncodeToBytes(types.StateAccount{ + value, _ := rlp.EncodeToBytes(&types.StateAccount{ Nonce: i, Balance: big.NewInt(int64(i)), Root: stRoot, @@ -1489,7 +1489,7 @@ func makeAccountTrieWithStorage(accounts, slots int, code, boundary bool) (*trie if code { codehash = getCodeHash(i) } - value, _ := rlp.EncodeToBytes(types.StateAccount{ + value, _ := rlp.EncodeToBytes(&types.StateAccount{ Nonce: i, Balance: big.NewInt(int64(i)), Root: stRoot, diff --git a/eth/sync.go b/eth/sync.go index b8ac67d3b2..d67d2311d0 100644 --- a/eth/sync.go +++ b/eth/sync.go @@ -17,6 +17,7 @@ package eth import ( + "errors" "math/big" "sync/atomic" "time" @@ -65,6 +66,7 @@ type chainSyncer struct { handler *handler force *time.Timer forced bool // true when force timer fired + warned time.Time peerEventCh chan struct{} doneCh chan error // non-nil when sync is running } @@ -119,10 +121,18 @@ func (cs *chainSyncer) loop() { select { case <-cs.peerEventCh: // Peer information changed, recheck. - case <-cs.doneCh: + case err := <-cs.doneCh: cs.doneCh = nil cs.force.Reset(forceSyncCycle) cs.forced = false + + // If we've reached the merge transition but no beacon client is available, or + // it has not yet switched us over, keep warning the user that their infra is + // potentially flaky. + if errors.Is(err, downloader.ErrMergeTransition) && time.Since(cs.warned) > 10*time.Second { + log.Warn("Local chain is post-merge, waiting for beacon client sync switch-over...") + cs.warned = time.Now() + } case <-cs.force.C: cs.forced = true @@ -143,9 +153,16 @@ func (cs *chainSyncer) loop() { // nextSyncOp determines whether sync is required at this time. func (cs *chainSyncer) nextSyncOp() *chainSyncOp { if cs.doneCh != nil { - return nil // Sync already running. + return nil // Sync already running } - // Disable the td based sync trigger after the transition + // If a beacon client once took over control, disable the entire legacy sync + // path from here on end. Note, there is a slight "race" between reaching TTD + // and the beacon client taking over. The downloader will enforce that nothing + // above the first TTD will be delivered to the chain for import. + // + // An alternative would be to check the local chain for exceeding the TTD and + // avoid triggering a sync in that case, but that could also miss sibling or + // other family TTD block being accepted. if cs.handler.merger.TDDReached() { return nil } @@ -159,16 +176,24 @@ func (cs *chainSyncer) nextSyncOp() *chainSyncOp { if cs.handler.peers.len() < minPeers { return nil } - // We have enough peers, check TD + // We have enough peers, pick the one with the highest TD, but avoid going + // over the terminal total difficulty. Above that we expect the consensus + // clients to direct the chain head to sync to. peer := cs.handler.peers.peerWithHighestTD() if peer == nil { return nil } mode, ourTD := cs.modeAndLocalHead() - op := peerToSyncOp(mode, peer) if op.td.Cmp(ourTD) <= 0 { - return nil // We're in sync. + // We seem to be in sync according to the legacy rules. In the merge + // world, it can also mean we're stuck on the merge block, waiting for + // a beacon client. In the latter case, notify the user. + if ttd := cs.handler.chain.Config().TerminalTotalDifficulty; ttd != nil && ourTD.Cmp(ttd) >= 0 && time.Since(cs.warned) > 10*time.Second { + log.Warn("Local chain is post-merge, waiting for beacon client sync switch-over...") + cs.warned = time.Now() + } + return nil // We're in sync } return op } @@ -227,7 +252,7 @@ func (h *handler) doSync(op *chainSyncOp) error { } } // Run the sync cycle, and disable snap sync if we're past the pivot block - err := h.downloader.Synchronise(op.peer.ID(), op.head, op.td, op.mode) + err := h.downloader.LegacySync(op.peer.ID(), op.head, op.td, h.chain.Config().TerminalTotalDifficulty, op.mode) if err != nil { return err } diff --git a/eth/tracers/api.go b/eth/tracers/api.go index 5f88629a70..08c17601e4 100644 --- a/eth/tracers/api.go +++ b/eth/tracers/api.go @@ -452,7 +452,7 @@ func (api *API) TraceBlockByHash(ctx context.Context, hash common.Hash, config * // TraceBlock returns the structured logs created during the execution of EVM // and returns them as a JSON object. -func (api *API) TraceBlock(ctx context.Context, blob []byte, config *TraceConfig) ([]*txTraceResult, error) { +func (api *API) TraceBlock(ctx context.Context, blob hexutil.Bytes, config *TraceConfig) ([]*txTraceResult, error) { block := new(types.Block) if err := rlp.Decode(bytes.NewReader(blob), block); err != nil { return nil, fmt.Errorf("could not decode block: %v", err) @@ -592,11 +592,11 @@ func (api *API) traceBlock(ctx context.Context, block *types.Block, config *Trac if threads > len(txs) { threads = len(txs) } - blockCtx := core.NewEVMBlockContext(block.Header(), api.chainContext(ctx), nil) blockHash := block.Hash() for th := 0; th < threads; th++ { pend.Add(1) go func() { + blockCtx := core.NewEVMBlockContext(block.Header(), api.chainContext(ctx), nil) defer pend.Done() // Fetch and execute the next transaction trace tasks for task := range jobs { @@ -617,6 +617,7 @@ func (api *API) traceBlock(ctx context.Context, block *types.Block, config *Trac } // Feed the transactions into the tracers and return var failed error + blockCtx := core.NewEVMBlockContext(block.Header(), api.chainContext(ctx), nil) for i, tx := range txs { // Send the trace task over for execution jobs <- &txTraceTask{statedb: statedb.Copy(), index: i} diff --git a/eth/tracers/internal/tracetest/calltrace_test.go b/eth/tracers/internal/tracetest/calltrace_test.go index 7521a98f24..cf7c1e6c0d 100644 --- a/eth/tracers/internal/tracetest/calltrace_test.go +++ b/eth/tracers/internal/tracetest/calltrace_test.go @@ -130,10 +130,6 @@ func TestCallTracerLegacy(t *testing.T) { testCallTracer("callTracerLegacy", "call_tracer_legacy", t) } -func TestCallTracerJs(t *testing.T) { - testCallTracer("callTracerJs", "call_tracer", t) -} - func TestCallTracerNative(t *testing.T) { testCallTracer("callTracer", "call_tracer", t) } diff --git a/eth/tracers/js/internal/tracers/assets.go b/eth/tracers/js/internal/tracers/assets.go index a2bb69dee4..a117c9f06e 100644 --- a/eth/tracers/js/internal/tracers/assets.go +++ b/eth/tracers/js/internal/tracers/assets.go @@ -2,12 +2,11 @@ // sources: // 4byte_tracer_legacy.js (2.933kB) // bigram_tracer.js (1.712kB) -// call_tracer_js.js (3.497kB) // call_tracer_legacy.js (8.956kB) // evmdis_tracer.js (4.215kB) -// noop_tracer.js (1.271kB) +// noop_tracer_legacy.js (1.271kB) // opcount_tracer.js (1.372kB) -// prestate_tracer.js (4.287kB) +// prestate_tracer_legacy.js (4.483kB) // trigram_tracer.js (1.788kB) // unigram_tracer.js (1.469kB) @@ -118,26 +117,6 @@ func bigram_tracerJs() (*asset, error) { return a, nil } -var _call_tracer_jsJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x56\x5f\x6f\xdb\x38\x0c\x7f\x8e\x3f\x05\xaf\x0f\x4b\x82\x65\x71\xbb\x03\xf6\xd0\x2d\x03\x72\x45\xbb\x05\xe8\xb5\x45\x9a\xde\x50\x14\x7d\x50\x6c\xda\xd6\xa6\x48\x86\x44\x37\xcd\x6d\xfd\xee\x07\x4a\x76\x6a\x67\x59\x6f\x2f\x06\x2c\x92\x3f\xfe\xfb\x51\x54\x1c\xc3\x89\x29\x37\x56\xe6\x05\xc1\xdb\xc3\xb7\x47\xb0\x28\x10\x72\xf3\x06\xa9\x40\x8b\xd5\x0a\xa6\x15\x15\xc6\xba\x28\x8e\x61\x51\x48\x07\x99\x54\x08\xd2\x41\x29\x2c\x81\xc9\x80\x76\xf4\x95\x5c\x5a\x61\x37\xe3\x28\x8e\x83\xcd\x5e\x31\x23\x64\x16\x11\x9c\xc9\x68\x2d\x2c\x1e\xc3\xc6\x54\x90\x08\x0d\x16\x53\xe9\xc8\xca\x65\x45\x08\x92\x40\xe8\x34\x36\x16\x56\x26\x95\xd9\x86\x21\x25\x41\xa5\x53\xb4\xde\x35\xa1\x5d\xb9\x26\x8e\x4f\x17\x37\x70\x8e\xce\xa1\x85\x4f\xa8\xd1\x0a\x05\x57\xd5\x52\xc9\x04\xce\x65\x82\xda\x21\x08\x07\x25\x9f\xb8\x02\x53\x58\x7a\x38\x36\x3c\xe3\x50\xae\xeb\x50\xe0\xcc\x54\x3a\x15\x24\x8d\x1e\x01\x4a\x8e\x1c\x1e\xd0\x3a\x69\x34\xfc\xd9\xb8\xaa\x01\x47\x60\x2c\x83\x0c\x04\x71\x02\x16\x4c\xc9\x76\x43\x10\x7a\x03\x4a\xd0\xb3\xe9\x6f\x14\xe4\x39\xef\x14\xa4\xf6\x6e\x0a\x53\x22\x50\x21\x88\xb3\x5e\x4b\xa5\x60\x89\x50\x39\xcc\x2a\x35\x62\xb4\x65\x45\xf0\x65\xb6\xf8\x7c\x79\xb3\x80\xe9\xc5\x2d\x7c\x99\xce\xe7\xd3\x8b\xc5\xed\x7b\x58\x4b\x2a\x4c\x45\x80\x0f\x18\xa0\xe4\xaa\x54\x12\x53\x58\x0b\x6b\x85\xa6\x0d\x98\x8c\x11\xfe\x3e\x9d\x9f\x7c\x9e\x5e\x2c\xa6\x7f\xcd\xce\x67\x8b\x5b\x30\x16\xce\x66\x8b\x8b\xd3\xeb\x6b\x38\xbb\x9c\xc3\x14\xae\xa6\xf3\xc5\xec\xe4\xe6\x7c\x3a\x87\xab\x9b\xf9\xd5\xe5\xf5\xe9\x18\xae\x91\xa3\x42\xb6\xff\xff\x9a\x67\xbe\x7b\x16\x21\x45\x12\x52\xb9\xa6\x12\xb7\xa6\x02\x57\x98\x4a\xa5\x50\x88\x07\x04\x8b\x09\xca\x07\x4c\x41\x40\x62\xca\xcd\x6f\x37\x95\xb1\x84\x32\x3a\xf7\x39\xff\x92\x90\x30\xcb\x40\x1b\x1a\x81\x43\x84\x0f\x05\x51\x79\x1c\xc7\xeb\xf5\x7a\x9c\xeb\x6a\x6c\x6c\x1e\xab\x00\xe7\xe2\x8f\xe3\x28\x62\xd0\x44\x28\x75\x66\xc5\x0a\x17\x56\x24\x68\xb9\xee\xce\xc3\x6b\x5c\x7b\x21\x64\x2c\x05\xb2\x22\x91\x3a\x87\x15\x52\x61\x52\x07\x64\xc0\x62\x69\x2c\xd5\x9d\x02\xa9\x33\x63\x57\x9e\x51\x3e\xd8\x25\x37\x46\x6a\x42\xab\x85\x82\x15\x3a\x27\x72\xf4\x2c\x16\x0c\xa6\x9d\x48\xc8\x53\xe6\x7b\xd4\x63\x3f\x8e\x44\xf2\xed\x18\xee\xbe\x3f\xdd\x8f\xa2\x5e\x26\x2a\x45\xc7\x90\x55\xda\x6b\x0d\x94\xc9\x47\x90\x2e\x87\xf0\xfd\x69\x14\xf5\x2c\xba\xae\x38\xa1\xc7\x5a\x1c\xf5\x7a\x71\x0c\x57\x16\x4b\x66\xb9\xa9\x98\x9d\xb5\x73\x1f\x62\xd4\xeb\x3d\x08\x0b\x01\x01\x26\xde\xa0\x47\x9b\x12\x8f\x01\x00\x12\x7a\x1c\xf3\xcf\x88\x4f\x33\x6b\x56\xfe\x94\xcc\x67\x7c\x64\x1f\x63\x3e\x1a\x7a\x21\x19\x2f\x6a\x0b\xc9\x04\xd1\x83\x50\x95\x87\xeb\x1f\x3e\xf6\xe1\xb5\x07\xf5\x67\x63\x32\xd7\x64\xa5\xce\x07\x47\xef\x82\x6a\x2e\x5c\x80\xa9\x55\x97\x32\x9f\x69\xf2\x68\xb9\x70\xc3\xbd\x06\x37\x0e\xd3\xe3\xfd\x06\x2c\xda\x63\x24\x75\x59\xd1\x71\x27\x56\x7f\x14\xa4\xa6\xa2\x20\x7e\x96\x86\x23\x2f\x7e\x8a\x7a\x3d\x99\xc1\x80\x0a\xe9\xc6\xdb\x3e\xdd\x1d\xde\x87\x1f\xf8\x63\x32\xf1\x37\x55\x26\x35\xa6\xa1\xfe\x75\x7b\x6a\x85\x09\xfc\xc2\xf4\x45\x70\xb4\xd6\xd8\x97\xc0\x83\xc2\x3e\x70\x2f\x61\x70\x40\xe5\x10\x18\x9f\x73\xfa\x6d\xc4\xad\x72\x2b\xc0\x8e\x4a\x07\x03\x5e\xbd\xda\x23\x3e\xc0\x47\x4c\x2a\xa6\x26\x58\x7c\x40\x4b\x98\x1e\xc0\x8f\x1f\x35\xed\xea\xfa\xc2\x64\x32\x39\x38\x7c\x3c\x18\xd6\x71\xa4\xa8\x90\xb0\xab\xe3\x63\x88\x38\x46\xaa\xac\x0e\xd9\x66\x52\x0b\x25\xff\xc5\xda\xed\x30\xea\xf1\x4c\x20\x8f\x5a\x6b\x24\xfc\xd8\x06\x64\x26\xbc\x1f\xe5\x0e\xdd\xbd\xc2\x38\x47\x5a\x6c\x4a\x1c\x0c\x5b\x94\x0f\x44\xd8\xca\xcf\xac\x59\x0d\x86\xcf\xb4\xdf\x11\x2f\x4c\x23\xac\x79\xb6\x23\x9f\xf1\x69\xa3\xe2\x09\xdf\xe5\xee\x56\xf1\x93\x70\x83\x61\x8b\xbe\xfd\xa3\x77\xfd\x0e\x07\xb7\x9a\xff\xf0\x34\x0d\x86\x3b\xdd\xf4\xb9\x71\x9e\x61\xda\x26\xbf\x70\x53\x1b\x77\xe7\xa4\xf6\xd2\x65\xd3\xb8\xac\x5c\x31\xe0\xdf\xa6\xc6\x8f\x92\x76\x4b\x3c\x0f\x4d\xd8\x16\x5a\xa1\xfe\x89\x96\x63\x85\x3a\xa7\xa2\x4e\x83\x35\x3e\xc2\x51\xdd\xf5\x56\x73\x76\xbd\x9b\x72\x30\xdc\xe6\x54\x8f\x37\x4c\xf6\x95\x2f\x04\x51\x17\x91\xd5\x7e\x2e\x64\xe3\xab\xa1\xf9\x8e\xdd\x29\x1f\x07\x77\x1c\x63\xad\xb5\x67\x5a\x42\x34\x0d\x83\xdb\xcd\x7e\x06\xbb\xf4\xd2\xc1\xd0\xc3\xd5\x73\xd8\x32\x6e\x42\x68\xa6\x2c\xb8\xf4\x22\xa6\xa6\x77\xdb\x3f\x99\x9f\x4e\x17\xa7\x7d\x9e\x9a\xbd\x92\xb7\xfd\x26\xa0\x66\x70\x82\x9a\xf1\x67\x4f\x51\xf3\xe1\x6a\xbf\x99\xc0\x51\x93\xd9\xce\x85\xa1\x50\xbf\x39\x6a\x2e\xb3\xbd\xf9\xbe\x68\x00\x77\xf7\x5b\x4f\x2f\x28\x76\x98\xc4\xda\xcc\xa6\x38\x86\x66\x94\xf9\x5d\x60\x51\x10\x3a\x7e\x18\x30\x1b\xcc\xf2\x2b\x26\xbc\x5c\x79\xe9\xf2\x3e\xf6\xaa\x90\xa2\x93\x16\x53\xc8\x24\xaa\x14\x0c\xbf\x10\xf9\xe9\xf1\xd5\x19\xed\x01\x1d\x5a\xc9\x88\x7e\x0f\x8f\xc3\x6b\x56\x32\xa8\x96\x09\xd2\x06\x32\x14\x54\x59\xe4\xf5\x5d\x0a\xe7\x60\x85\x42\x4b\x9d\x67\x95\x52\x1b\x30\x36\x45\x06\x0f\xf7\x8a\xf3\x80\x64\x78\xc1\x5b\x07\xeb\xc2\x40\x6a\x74\xbf\x5e\xea\xa5\x45\x7e\xaf\x8d\xe0\x6b\xe5\x88\x5f\x75\xa5\x12\x1b\x90\x34\x8e\x7a\x4d\x52\xed\xfd\xcc\x99\x6f\x47\xc4\x19\xbe\x10\x7f\x5e\xbe\x4d\x9b\xbb\xdb\xd7\x1f\xf3\x5f\x77\xef\xd6\xdd\xee\x6e\xdc\xe7\xe9\xef\xae\xd7\x66\x82\xba\x3b\xb4\x3d\x57\xdd\x45\xe9\x25\xfe\xaf\xbb\x22\x5b\xdc\xf7\x02\xcf\xe0\xad\x81\xff\x0b\x51\xca\x55\x3b\x27\xb9\x0a\xf1\x78\x2e\x6c\xd5\xfd\x5f\x73\xbf\x71\x17\x07\x5c\x9c\x6f\xb8\xe1\x87\x71\xa8\x51\xcd\x41\xe6\x6d\x38\xb8\xfb\x86\x9b\xfb\xfd\x3c\xad\xa7\xa0\xa5\xd7\x30\xb3\xb9\x3f\x83\xe8\x85\xc5\xbd\x0d\x42\x4e\x0e\xdf\x83\xfc\xd0\x36\xa8\xef\xb0\xf7\x20\x5f\xbf\x6e\x5c\xb6\xe5\x77\xf2\xbe\xb9\xc2\xb6\x0b\x6a\x47\x3e\x6c\x07\x54\x6f\xb4\xa0\x12\xf5\x9e\xa2\xa7\xe8\xbf\x00\x00\x00\xff\xff\x2a\xac\x9f\xff\xa9\x0d\x00\x00") - -func call_tracer_jsJsBytes() ([]byte, error) { - return bindataRead( - _call_tracer_jsJs, - "call_tracer_js.js", - ) -} - -func call_tracer_jsJs() (*asset, error) { - bytes, err := call_tracer_jsJsBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "call_tracer_js.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x42, 0x13, 0x7a, 0x14, 0xbf, 0xa7, 0x49, 0x4f, 0xb4, 0x4f, 0x45, 0x1, 0xbc, 0x9e, 0xd1, 0x8e, 0xc7, 0xee, 0x61, 0xfa, 0x82, 0x52, 0xa4, 0x78, 0xfe, 0xff, 0xb1, 0x68, 0x1d, 0xcc, 0x1d, 0x8e}} - return a, nil -} - var _call_tracer_legacyJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x5a\xdf\x6f\x1b\x37\xf2\x7f\x96\xfe\x8a\x89\x1f\x6a\x09\x51\x24\x39\xe9\xb7\x5f\xc0\xae\x7a\x50\x1d\x25\x35\xe0\xc6\x81\xad\x34\x08\x82\x3c\x50\xbb\xb3\x12\x6b\x8a\xdc\x92\x5c\xc9\xba\xd6\xff\xfb\x61\x86\xdc\xd5\xae\x24\x3b\xbe\x5e\x71\xe8\xbd\x69\x97\x33\xc3\xe1\xcc\x67\x7e\x71\x35\x18\xc0\xb9\xc9\x37\x56\xce\x17\x1e\x5e\x0e\x4f\xfe\x1f\xa6\x0b\x84\xb9\x79\x81\x7e\x81\x16\x8b\x25\x8c\x0b\xbf\x30\xd6\xb5\x07\x03\x98\x2e\xa4\x83\x4c\x2a\x04\xe9\x20\x17\xd6\x83\xc9\xc0\xef\xd0\x2b\x39\xb3\xc2\x6e\xfa\xed\xc1\x20\xf0\x1c\x5c\x26\x09\x99\x45\x04\x67\x32\xbf\x16\x16\x4f\x61\x63\x0a\x48\x84\x06\x8b\xa9\x74\xde\xca\x59\xe1\x11\xa4\x07\xa1\xd3\x81\xb1\xb0\x34\xa9\xcc\x36\x24\x52\x7a\x28\x74\x8a\x96\xb7\xf6\x68\x97\xae\xd4\xe3\xed\xbb\x0f\x70\x89\xce\xa1\x85\xb7\xa8\xd1\x0a\x05\xef\x8b\x99\x92\x09\x5c\xca\x04\xb5\x43\x10\x0e\x72\x7a\xe3\x16\x98\xc2\x8c\xc5\x11\xe3\x1b\x52\xe5\x26\xaa\x02\x6f\x4c\xa1\x53\xe1\xa5\xd1\x3d\x40\x49\x9a\xc3\x0a\xad\x93\x46\xc3\xab\x72\xab\x28\xb0\x07\xc6\x92\x90\x8e\xf0\x74\x00\x0b\x26\x27\xbe\x2e\x08\xbd\x01\x25\xfc\x96\xf5\x09\x06\xd9\x9e\x3b\x05\xa9\x79\x9b\x85\xc9\x11\xfc\x42\x78\x3a\xf5\x5a\x2a\x05\x33\x84\xc2\x61\x56\xa8\x1e\x49\x9b\x15\x1e\x3e\x5e\x4c\x7f\xba\xfa\x30\x85\xf1\xbb\x4f\xf0\x71\x7c\x7d\x3d\x7e\x37\xfd\x74\x06\x6b\xe9\x17\xa6\xf0\x80\x2b\x0c\xa2\xe4\x32\x57\x12\x53\x58\x0b\x6b\x85\xf6\x1b\x30\x19\x49\xf8\x79\x72\x7d\xfe\xd3\xf8\xdd\x74\xfc\xe3\xc5\xe5\xc5\xf4\x13\x18\x0b\x6f\x2e\xa6\xef\x26\x37\x37\xf0\xe6\xea\x1a\xc6\xf0\x7e\x7c\x3d\xbd\x38\xff\x70\x39\xbe\x86\xf7\x1f\xae\xdf\x5f\xdd\x4c\xfa\x70\x83\xa4\x15\x12\xff\xd7\x6d\x9e\xb1\xf7\x2c\x42\x8a\x5e\x48\xe5\x4a\x4b\x7c\x32\x05\xb8\x85\x29\x54\x0a\x0b\xb1\x42\xb0\x98\xa0\x5c\x61\x0a\x02\x12\x93\x6f\x9e\xec\x54\x92\x25\x94\xd1\x73\x3e\xf3\x83\x80\x84\x8b\x0c\xb4\xf1\x3d\x70\x88\xf0\xfd\xc2\xfb\xfc\x74\x30\x58\xaf\xd7\xfd\xb9\x2e\xfa\xc6\xce\x07\x2a\x88\x73\x83\x1f\xfa\x6d\x92\x99\x08\xa5\xa6\x56\x24\x68\xc9\x39\x02\xb2\x82\xcc\xaf\xcc\x5a\x83\xb7\x42\x3b\x91\x90\xab\xe9\x77\xc2\x60\x14\x1e\xf0\x8e\x9e\xbc\x23\xd0\x82\xc5\xdc\x58\xfa\xad\x54\x89\x33\xa9\x3d\x5a\x2d\x14\xcb\x76\xb0\x14\x29\xc2\x6c\x03\xa2\x2e\xb0\x57\x3f\x0c\xc1\x28\xb8\x1b\xa4\xce\x8c\x5d\x32\x2c\xfb\xed\xdf\xdb\xad\xa8\xa1\xf3\x22\xb9\x25\x05\x49\x7e\x52\x58\x8b\xda\x93\x29\x0b\xeb\xe4\x0a\x99\x04\x02\x4d\xb4\xe7\xe4\x97\x9f\x01\xef\x30\x29\x82\xa4\x56\x25\xe4\x14\x3e\xff\x7e\xff\xa5\xd7\x66\xd1\x29\xba\x04\x75\x8a\x29\x9f\xef\xd6\xc1\x7a\xc1\x16\x85\x35\x1e\xaf\x10\x7e\x2d\x9c\xaf\xd1\x64\xd6\x2c\x41\x68\x30\x05\x21\xbe\x6e\x1d\xa9\xbd\x61\x81\x82\x7e\x6b\xb4\xac\x51\xbf\xdd\xaa\x98\x4f\x21\x13\xca\x61\xdc\xd7\x79\xcc\xe9\x34\x52\xaf\xcc\x2d\x49\x36\x96\x20\x6c\x37\x60\xf2\xc4\xa4\x31\x18\xe8\x1c\xd5\x31\xd0\xf5\xdb\x2d\xe2\x3b\x85\xac\xd0\xbc\x6d\x47\x99\x79\x0f\xd2\x59\x17\x7e\x6f\xb7\x48\xec\xb9\xc8\x7d\x61\x91\xed\x89\xd6\x1a\xeb\x40\x2e\x97\x98\x4a\xe1\x51\x6d\xda\xad\xd6\x4a\xd8\xb0\x00\x23\x50\x66\xde\x9f\xa3\x9f\xd0\x63\xa7\x7b\xd6\x6e\xb5\x64\x06\x9d\xb0\xfa\x6c\x34\xe2\xec\x93\x49\x8d\x69\x10\xdf\xf2\x0b\xe9\xfa\x99\x28\x94\xaf\xf6\x25\xa6\x96\x45\x5f\x58\x4d\x3f\xef\x83\x16\x1f\x11\x8c\x56\x1b\x48\x28\xcb\x88\x19\x85\xa7\xdb\x38\x8f\xcb\x78\x38\xd7\x83\x4c\x38\x32\xa1\xcc\x60\x8d\x90\x5b\x7c\x91\x2c\x90\x7c\xa7\x13\x8c\x5a\xba\x8d\x63\xa7\x8e\x80\x76\xeb\x9b\xbc\xef\xcd\xbb\x62\x39\x43\xdb\xe9\xc2\x37\x30\xbc\xcb\x86\x5d\x18\x8d\xf8\x47\xa9\x7b\xe4\x89\xfa\x92\x14\x93\xc7\x83\x32\xff\x8d\xb7\x52\xcf\xc3\x59\xa3\xae\x17\x19\x08\xd0\xb8\x86\xc4\x68\x06\x35\x79\x65\x86\x52\xcf\x21\xb1\x28\x3c\xa6\x3d\x10\x69\x0a\xde\x04\xe4\x55\x38\x6b\x6e\x09\xdf\x7c\x03\x1d\xda\x6c\x04\xc7\xe7\xd7\x93\xf1\x74\x72\x0c\x7f\xfc\x01\xe1\xcd\x51\x78\xf3\xf2\xa8\x5b\xd3\x4c\xea\xab\x2c\x8b\xca\xb1\xc0\x7e\x8e\x78\xdb\x39\xe9\xf6\x57\x42\x15\x78\x95\x05\x35\x23\xed\x44\xa7\x30\x8a\x3c\xcf\x77\x79\x5e\x36\x78\x88\x69\x30\x80\xb1\x73\xb8\x9c\x29\xdc\x0f\xc8\x18\xb1\x1c\xbc\xce\x53\xc6\x22\xf4\x25\x66\x99\x2b\x24\x54\x95\xbb\x46\xf3\xb3\xc6\x2d\xbf\xc9\xf1\x14\x00\xc0\xe4\x3d\x7e\x41\xb1\xc0\x2f\xbc\xf9\x09\xef\xd8\x47\xa5\x09\x09\x55\xe3\x34\xb5\xe8\x5c\xa7\xdb\x0d\xe4\x52\xe7\x85\x3f\x6d\x90\x2f\x71\x69\xec\xa6\xef\x28\x21\x75\xf8\x68\xbd\x70\xd2\x92\x67\x2e\xdc\x85\x26\x9e\x88\xd4\xb7\xc2\x75\xb6\x4b\xe7\xc6\xf9\xd3\x72\x89\x1e\xca\x35\xb6\x05\xb1\x1d\x0f\xef\x8e\xf7\xad\x35\xec\x6e\x91\x70\xf2\x5d\x97\x58\xee\xcf\x2a\x7c\x57\x69\xa2\x9f\x17\x6e\xd1\x61\x38\x6d\x57\xb7\xa9\x60\x04\xde\x16\x78\x10\xfe\x0c\xa9\x7d\x38\x39\x54\x19\xe5\x12\x6f\x8b\x84\x61\x35\x17\x9c\x69\x38\xd2\x05\x65\x5e\x57\xcc\xd8\xe6\xde\x98\x7d\x74\x45\x70\xdd\x4c\x2e\xdf\xbc\x9e\xdc\x4c\xaf\x3f\x9c\x4f\x8f\x6b\x70\x52\x98\x79\x52\xaa\x79\x06\x85\x7a\xee\x17\xac\x3f\x89\x6b\xae\x7e\x26\x9e\x17\x27\x5f\xc2\x1b\x18\x1d\x08\xf9\xd6\xe3\x1c\xf0\xf9\x0b\xcb\xbe\xdf\x37\x5f\x93\x34\x18\xf3\xaf\x41\x92\x37\x4c\x5c\x92\x7b\x53\x12\x3c\xee\xe7\xbf\x18\x54\xe9\x8c\x28\x7e\x14\x4a\xe8\x04\x1f\xd1\x79\x1f\x6b\xf5\xa4\x79\x20\x0f\x2d\xd1\x2f\x4c\xca\x85\x21\x11\xa1\xb6\x94\x08\x4a\x8d\xc6\x7f\x3f\x1b\x8d\x2f\x2f\x6b\xb9\x88\x9f\xcf\xaf\x5e\xd7\xf3\xd3\xf1\xeb\xc9\xe5\xe4\xed\x78\x3a\xd9\xa5\xbd\x99\x8e\xa7\x17\xe7\xfc\xb6\x4c\x5d\x83\x01\xdc\xdc\xca\x9c\x2b\x0c\xe7\x6d\xb3\xcc\xb9\x55\xae\xf4\x75\x3d\xf0\x0b\x43\x4d\xa8\x8d\x05\x34\x13\x3a\x29\x0b\x9b\x2b\x01\xeb\x0d\xc1\xf5\x21\xe7\x9d\xec\x38\xaf\x82\xb0\x74\xef\x2d\xc6\x4d\xd3\x8e\x37\xa5\x5e\x5b\x83\x06\x34\x72\xf2\xe7\x04\xdb\x79\xfa\x21\xe1\x1f\x30\x84\x53\x38\x89\x59\xf4\x91\x34\xfd\x12\x9e\x93\xf8\x3f\x91\xac\x5f\x1d\xe0\xfc\x7b\xa6\xec\xbd\x40\xfb\xef\xa7\x72\x53\xf8\xab\x2c\x3b\x85\x5d\x23\x7e\xbb\x67\xc4\x8a\xfe\x12\xf5\x3e\xfd\xff\xed\xd1\x6f\xd3\x3e\xa1\xca\xe4\xf0\x6c\x0f\x22\x21\xe9\x3e\xdb\x89\x83\x68\x5c\x6e\xef\x58\x1a\x8c\x1e\x28\x34\x2f\x9b\x18\x7e\x28\x53\xfe\x47\x85\xe6\x60\x9b\x4a\xcd\x68\xb3\x11\xed\x81\x45\x6f\x25\xae\x68\xd4\x3c\x76\x2c\x92\x1a\x76\xb3\xa6\xf4\xd5\x87\x8f\x18\x24\x6a\x44\x4e\x2e\xb1\xc1\xa7\xfe\x8c\x7b\x5e\x6a\xd2\xe3\xa8\xc6\x10\x13\xdc\x87\x5b\x84\xa5\xd8\xd0\xa8\x96\x15\xfa\x76\x03\x73\xe1\x20\xdd\x68\xb1\x94\x89\x0b\xf2\xb8\xb9\xb7\x38\x17\x96\xc5\x5a\xfc\xad\x40\x47\x73\x1f\x01\x59\x24\xbe\x10\x4a\x6d\x60\x2e\x69\x78\x23\xee\xce\xcb\x57\xc3\x21\x38\x2f\x73\xd4\x69\x0f\xbe\x7b\x35\xf8\xee\x5b\xb0\x85\xc2\x6e\xbf\x5d\x2b\x61\xd5\x51\xa3\x37\x68\x21\xa2\xe7\x35\xe6\x7e\xd1\xe9\xc2\x0f\x0f\xd4\xc2\x07\x0a\xdb\x41\x5a\x78\x01\x27\x5f\xfa\xa4\xd7\xa8\x81\xdb\xe0\x49\x40\xe5\x30\x4a\xa3\x81\xf7\xea\xf5\x55\xe7\x56\x58\xa1\xc4\x0c\xbb\xa7\x3c\x00\xb3\xad\xd6\x22\x4e\x40\xe4\x14\xc8\x95\x90\x1a\x44\x92\x98\x42\x7b\x32\x7c\x39\xcc\xa8\x0d\xe5\xf7\x63\x5f\xca\xe3\x59\x51\x24\x09\x3a\x57\xa6\x7b\xf6\x1a\xa9\x23\x96\xc4\x0d\x52\x3b\x99\x62\xcd\x2b\x94\x1d\x0c\xa7\xe6\x48\x41\xa3\x74\x29\x70\x69\x1c\x6d\x32\x43\x58\x5b\x1a\xbc\x9c\xd4\x09\xdf\x3c\xa4\x48\xd6\x76\x60\x34\x08\x50\x86\xaf\x3b\x38\xc6\x41\xd8\xb9\xeb\x87\x7c\x4f\xdb\x52\xce\xd1\x66\xdd\x6f\x02\xb9\x0e\x55\x1e\x71\x76\x5a\x21\x0d\x78\x27\x9d\xe7\x8e\x9a\xb4\x94\x0e\x02\x92\xa5\x9e\xf7\x20\x37\x39\xe7\xe9\xaf\x95\xb3\x98\xac\xaf\x27\xbf\x4c\xae\xab\xc6\xe7\xe9\x4e\x2c\x67\x9e\xa3\x6a\x24\x04\x4b\xf3\x96\xc7\xf4\xe8\xc0\x10\x73\x00\x50\xa3\x07\x00\x45\xf2\xb7\xb5\xf1\x7d\xed\x38\x4a\x38\xbf\x75\xcc\x1c\xc3\x3c\x57\x57\xc0\x15\xca\xbb\x9d\xdc\xbd\x9b\x1c\x4c\x5e\x56\x08\x52\x8a\xd3\x0e\x25\xf6\xdd\x49\xa3\xb1\xb0\x1d\x38\xb6\xf8\xbc\xa8\xd9\x78\xcd\xed\x66\x20\xaa\xa5\x06\x5e\x2f\xfb\x56\x11\xaa\x01\xeb\x6e\x0a\x4f\x70\xa0\xfa\xbd\x4d\x7e\x73\xe1\x3e\x38\xf6\x7a\x4c\x7f\x33\x39\xbf\xd0\xbe\x53\x2e\x5e\x68\x78\x01\xe5\x03\x25\x75\x78\xd1\x88\xa2\x03\xd9\xb1\x95\xa2\x42\x8f\xb0\x15\x71\x06\x3b\xaf\x48\x50\x30\x07\x1b\xcd\xa2\xdf\x2f\xce\xc3\x28\x8d\x0c\xf6\xcc\xa2\xef\xe3\x6f\x85\x50\xae\x33\xac\x9a\x85\x70\x02\x6f\xb8\xbc\x8d\xf6\x3a\x49\xe2\x69\xf6\x8e\x67\x35\xb6\x68\x8d\x92\x2d\x74\x82\xe7\x26\xc5\x47\x25\x44\x11\x31\x6d\x54\xbe\x8c\xc0\x3c\xd4\x7b\xb7\xea\x04\x70\x54\x35\x04\x99\x90\xaa\xb0\x78\x74\x06\x07\xd2\x8e\x2b\x6c\x26\x12\xf6\xa5\x43\xe0\x69\xdd\x81\x33\x4b\x5c\x98\x75\x50\xe0\x50\xf2\xda\x07\x47\x85\x83\x9d\xf2\xc1\xd7\x4e\xc2\x41\xe1\xc4\x1c\x6b\xe0\xa8\x0c\x5e\x3a\xea\xe0\x15\xc2\x9f\x86\xce\xf3\xea\xf1\x09\x28\xba\xff\x6b\xe0\xb1\xe3\xe7\xbd\x3e\xa7\x24\xe2\x6e\xa7\xf6\x50\x2a\x1b\x9a\x91\xbf\x97\xe3\x9f\x1c\x61\xbb\xb4\xe1\x68\x4d\xe2\x70\xc0\x6d\x5f\xf3\x75\xf7\x57\xab\x0f\x79\xfe\xa1\x96\x89\x30\xaa\x7f\xc5\xc4\x6f\x71\xca\x5d\x0e\x3d\xe5\x16\x57\xd2\x14\x54\xc0\xf0\x7f\x69\x1c\xae\x5a\xbe\xfb\x76\xeb\x3e\xde\x0b\xb2\xdf\xea\x17\x83\xeb\x45\xbc\xd7\x0e\xdd\x52\xad\x7c\x18\xae\xad\xf1\xba\x30\x0b\x37\xce\x2d\xe6\x7f\xe4\x82\x30\x06\xba\x37\x39\xb5\x03\xb1\x3a\x29\x8b\x22\xdd\x54\x05\xb1\x17\x1a\x11\x58\x08\x9d\xc6\x61\x44\xa4\xa9\x24\x79\x0c\x42\xd2\x50\xcc\x85\xd4\xed\x83\x66\xfc\x6a\x15\x3e\x84\x8c\xbd\xde\xb6\x5e\x48\xe3\x10\x49\x13\x1f\x6b\xdc\x7e\x42\xc1\xdc\x09\xa2\xdd\xbb\xce\x78\x5d\x6a\xb4\x2b\x96\xdc\x09\x83\x58\x09\xa9\x04\x4d\x5f\xdc\x61\xe9\x14\x12\x85\x42\x87\x2f\x1c\x98\x79\xb3\x42\xeb\xda\x4f\x00\xf9\x9f\xc1\xf8\x4e\x56\x2c\x1f\xa3\x39\x9e\x1e\xb3\x4f\x8d\xd8\x70\xfc\x37\x4a\x78\x1f\xe1\x55\x33\x6f\x88\x2c\xe9\xf9\xe3\x17\x6a\xdf\x7e\x5a\x48\x71\xcf\x44\x34\x3f\xc0\xb0\xd6\x97\xff\x5d\x82\x6c\x1f\x62\x97\x55\x7f\x16\x0f\xef\x8d\xe9\x81\x42\xc1\x53\x52\xf9\x69\xaa\xec\x47\x1f\x1b\xda\xca\xe8\x0d\x1d\xdd\x5e\xf8\xf2\x9d\xde\x02\xcb\x1b\x90\xd0\xda\xcf\x10\x35\x48\x8f\x56\xd0\x3c\x44\xe8\x8a\x5f\x53\x48\x4b\xc7\xe2\xd8\x2f\x92\x82\x2e\x0a\x8e\x9f\x36\xa8\x30\x4b\x3d\xef\xb7\x5b\xe1\x7d\x2d\xde\x13\x7f\xb7\x8d\xf7\x50\x01\x99\x33\xde\x09\x54\x57\x02\x89\xbf\xe3\x6e\x91\xc7\xe6\x9d\x7b\x01\x5a\xa3\x57\x61\xa6\xde\xb9\x05\x60\xc6\x78\x13\xb0\x7b\x27\x46\x6b\xfc\xae\x01\x70\x26\x9d\x0b\x17\xc4\xec\x84\x84\xbf\xdb\x8f\x88\x92\x81\x82\xe1\xf4\x30\x03\x2d\x1d\x60\xda\xb9\x99\x20\x62\x7e\x15\x56\x43\x3d\x3f\xad\xaf\x86\x57\xf1\xa0\x72\x59\xb3\x8d\x5c\xb2\x6d\xee\xcf\x0e\x27\xb9\x61\x89\xc7\xc3\xc9\x8c\x6c\x5e\x01\xf6\x01\xd6\xfa\xac\xb1\x4f\xf2\x58\xaa\x64\xe9\x65\x66\x7b\x80\x95\xa5\xd7\x5a\x0e\x7f\xf7\x74\x91\x15\x71\x5d\xc5\x06\x4d\x43\x08\xdf\x36\xee\x2d\x1f\x9a\xb4\x68\x50\x89\x84\x65\x73\x35\x1a\x1d\x0d\xef\xaa\x0f\x23\x31\x57\x35\x68\x4a\x25\x42\x64\x84\xf3\x72\x54\xc8\x7f\x62\xdc\xb6\x1e\x83\xe5\x12\x58\x0c\x1f\x70\xb8\x9b\xa5\x10\x34\x33\x6e\x20\x0a\x47\xa3\xe8\x36\xb6\x52\x74\xd2\x62\x0a\x99\x44\x95\x82\x49\xd1\xf2\xa0\xfb\xab\x33\x3a\x7c\xaa\x43\x2b\x49\x62\xf8\x24\x19\xfe\x1d\xc0\x1f\x4a\xb5\x4c\xd0\x6f\x20\x43\xc1\xdf\xdc\xbc\x81\x5c\x38\x07\x4b\x14\x34\xda\x66\x85\x52\x1b\x30\x36\x45\x12\x5e\xcd\x7a\x14\xd6\x06\x0a\x87\xd6\xc1\x7a\x61\x62\xa9\xe5\x16\x2f\xa7\x6e\x55\xfa\x5e\xbc\xce\x91\x2e\x57\x62\x03\xd2\x53\x59\x8f\x87\xaa\x47\x7a\xf5\xa1\x8b\xbf\x96\x19\x32\xf0\x7e\x98\x97\x53\x61\x33\xce\xf9\x35\x3d\x35\x23\x3c\x0e\x45\xcd\xd8\xde\x5e\x74\x35\x03\xb9\x2c\x3d\xcd\x68\xad\x17\xb2\x66\x48\xf2\x0a\x3f\x35\x83\xb1\xd6\x6a\xf3\x02\x23\xa8\x62\xe0\xa7\x9d\xf0\x64\x2d\x63\x7c\x86\xcf\xba\x15\x39\x3f\xf5\x22\x60\xc8\x8b\x1d\x32\xce\x2d\x6e\x28\x9b\x07\x1b\xd5\x4a\x53\x78\xf1\xf9\x16\x37\x5f\x0e\x57\xa2\x08\xc7\x1a\x5d\x55\x7a\xca\xb0\x08\x6b\x8f\x24\x83\x4a\x0b\x39\x1a\x9e\x81\xfc\xbe\xce\x50\x56\x4f\x90\xcf\x9f\x97\x7b\xd6\xd7\x3f\xcb\x2f\x65\x84\x57\x88\xdf\x59\xef\x36\x34\x8a\x31\x12\x68\x28\x28\xda\xf7\xed\x7f\x05\x00\x00\xff\xff\xfb\x65\x93\x4f\xfc\x22\x00\x00") func call_tracer_legacyJsBytes() ([]byte, error) { @@ -178,22 +157,22 @@ func evmdis_tracerJs() (*asset, error) { return a, nil } -var _noop_tracerJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x93\x4f\x6f\xdb\x46\x10\xc5\xcf\xe6\xa7\x78\xc7\x04\x50\xc5\xfe\x39\x14\x70\x8a\x02\xac\x61\x27\x2a\x1c\xdb\x90\xe8\x06\x3e\x0e\xc9\xa1\xb8\xe9\x6a\x87\x9d\x9d\x95\x22\x18\xfe\xee\xc5\x92\x12\x12\x14\x69\x9b\x9b\xb0\xd2\xfb\xbd\x37\xf3\x46\x65\x89\x2b\x19\x8f\xea\xb6\x83\xe1\xc7\xef\x7f\xf8\x19\xf5\xc0\xd8\xca\x77\x6c\x03\x2b\xa7\x1d\xaa\x64\x83\x68\x2c\xca\x12\xf5\xe0\x22\x7a\xe7\x19\x2e\x62\x24\x35\x48\x0f\xfb\xc7\xef\xbd\x6b\x94\xf4\xb8\x2c\xca\x72\xd6\x7c\xf5\xeb\x4c\xe8\x95\x19\x51\x7a\x3b\x90\xf2\x25\x8e\x92\xd0\x52\x80\x72\xe7\xa2\xa9\x6b\x92\x31\x9c\x81\x42\x57\x8a\x62\x27\x9d\xeb\x8f\x19\xe9\x0c\x29\x74\xac\x93\xb5\xb1\xee\xe2\x39\xc7\xdb\xbb\x47\xdc\x72\x8c\xac\x78\xcb\x81\x95\x3c\x1e\x52\xe3\x5d\x8b\x5b\xd7\x72\x88\x0c\x8a\x18\xf3\x4b\x1c\xb8\x43\x33\xe1\xb2\xf0\x26\x47\xd9\x9c\xa2\xe0\x46\x52\xe8\xc8\x9c\x84\x05\xd8\xe5\xe4\xd8\xb3\x46\x27\x01\x3f\x9d\xad\x4e\xc0\x05\x44\x33\xe4\x15\x59\x1e\x40\x21\x63\xd6\xbd\x06\x85\x23\x3c\xd9\x67\xe9\x37\x2c\xe4\xf3\xdc\x1d\x5c\x98\x6c\x06\x19\x19\x36\x90\xe5\xa9\x0f\xce\x7b\x34\x8c\x14\xb9\x4f\x7e\x91\x69\x4d\x32\x7c\x58\xd5\xef\xee\x1f\x6b\x54\x77\x4f\xf8\x50\xad\xd7\xd5\x5d\xfd\xf4\x06\x07\x67\x83\x24\x03\xef\x79\x46\xb9\xdd\xe8\x1d\x77\x38\x90\x2a\x05\x3b\x42\xfa\x4c\x78\x7f\xbd\xbe\x7a\x57\xdd\xd5\xd5\x6f\xab\xdb\x55\xfd\x04\x51\xdc\xac\xea\xbb\xeb\xcd\x06\x37\xf7\x6b\x54\x78\xa8\xd6\xf5\xea\xea\xf1\xb6\x5a\xe3\xe1\x71\xfd\x70\xbf\xb9\x5e\x62\xc3\x39\x15\x67\xfd\xff\xef\xbc\x9f\xda\x53\x46\xc7\x46\xce\xc7\xf3\x26\x9e\x24\x21\x0e\x92\x7c\x87\x81\xf6\x0c\xe5\x96\xdd\x9e\x3b\x10\x5a\x19\x8f\xdf\x5c\x6a\x66\x91\x97\xb0\x9d\x66\xfe\xd7\x83\xc4\xaa\x47\x10\x5b\x20\x32\xe3\x97\xc1\x6c\xbc\x2c\xcb\xc3\xe1\xb0\xdc\x86\xb4\x14\xdd\x96\x7e\xc6\xc5\xf2\xd7\x65\x91\x99\x41\x64\xac\x95\x5a\xd6\x5c\xce\xc7\x14\x6d\x62\x37\xa4\xdc\x48\x60\x34\xe2\x3c\xeb\x98\x5b\x46\x2b\x5d\x1e\xe0\xaf\xe4\x94\x3b\xf4\x2a\x3b\x10\x7e\xa7\x3d\x6d\x5a\x75\xa3\x65\x9c\x34\x1f\xb9\x35\x98\xcc\x15\x52\xe3\xa7\x73\x24\x98\x52\x88\xd4\xe6\xbb\xc9\x9f\x5b\xd6\x65\xf1\x5c\x5c\x94\x25\xa2\xf1\x98\xbd\x5d\xd8\xcb\x9f\x99\x2b\x9a\xfb\xd4\x23\x64\x9c\x1c\xa7\xcb\xc8\xa1\xfe\x78\x0f\xfe\xc4\x6d\x32\x8e\xcb\xe2\x22\xeb\x2e\xd1\xa7\x30\x41\x5f\x79\xd9\x2e\xd0\x35\xaf\xf1\x8c\x97\x45\x31\x91\x7b\x4a\xde\xbe\x44\x1f\x86\xd3\x99\x50\x6b\x89\xfc\x89\x96\x23\x49\x0f\x0a\x67\xc3\x7e\x2e\xf0\x62\xd2\xff\xb7\x85\x72\xfc\x9a\x07\x79\x3f\xf9\xcc\xc0\x38\x57\xdf\x30\x07\x38\x63\xa5\x7c\xfb\xb2\x67\xcd\x7f\x7b\x28\x5b\xd2\x10\x27\x5c\xd6\xf4\x2e\x90\x3f\x83\x4f\xe7\x91\x37\xe6\xc2\x76\x59\x5c\xcc\xef\x5f\x84\x6a\xed\xd3\x39\xd4\x4c\xc2\xf3\xcb\x1b\xbc\x14\x2f\xc5\xdf\x01\x00\x00\xff\xff\x77\x56\xe7\x1a\xf7\x04\x00\x00") +var _noop_tracer_legacyJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x93\x4f\x6f\xdb\x46\x10\xc5\xcf\xe6\xa7\x78\xc7\x04\x50\xc5\xfe\x39\x14\x70\x8a\x02\xac\x61\x27\x2a\x1c\xdb\x90\xe8\x06\x3e\x0e\xc9\xa1\xb8\xe9\x6a\x87\x9d\x9d\x95\x22\x18\xfe\xee\xc5\x92\x12\x12\x14\x69\x9b\x9b\xb0\xd2\xfb\xbd\x37\xf3\x46\x65\x89\x2b\x19\x8f\xea\xb6\x83\xe1\xc7\xef\x7f\xf8\x19\xf5\xc0\xd8\xca\x77\x6c\x03\x2b\xa7\x1d\xaa\x64\x83\x68\x2c\xca\x12\xf5\xe0\x22\x7a\xe7\x19\x2e\x62\x24\x35\x48\x0f\xfb\xc7\xef\xbd\x6b\x94\xf4\xb8\x2c\xca\x72\xd6\x7c\xf5\xeb\x4c\xe8\x95\x19\x51\x7a\x3b\x90\xf2\x25\x8e\x92\xd0\x52\x80\x72\xe7\xa2\xa9\x6b\x92\x31\x9c\x81\x42\x57\x8a\x62\x27\x9d\xeb\x8f\x19\xe9\x0c\x29\x74\xac\x93\xb5\xb1\xee\xe2\x39\xc7\xdb\xbb\x47\xdc\x72\x8c\xac\x78\xcb\x81\x95\x3c\x1e\x52\xe3\x5d\x8b\x5b\xd7\x72\x88\x0c\x8a\x18\xf3\x4b\x1c\xb8\x43\x33\xe1\xb2\xf0\x26\x47\xd9\x9c\xa2\xe0\x46\x52\xe8\xc8\x9c\x84\x05\xd8\xe5\xe4\xd8\xb3\x46\x27\x01\x3f\x9d\xad\x4e\xc0\x05\x44\x33\xe4\x15\x59\x1e\x40\x21\x63\xd6\xbd\x06\x85\x23\x3c\xd9\x67\xe9\x37\x2c\xe4\xf3\xdc\x1d\x5c\x98\x6c\x06\x19\x19\x36\x90\xe5\xa9\x0f\xce\x7b\x34\x8c\x14\xb9\x4f\x7e\x91\x69\x4d\x32\x7c\x58\xd5\xef\xee\x1f\x6b\x54\x77\x4f\xf8\x50\xad\xd7\xd5\x5d\xfd\xf4\x06\x07\x67\x83\x24\x03\xef\x79\x46\xb9\xdd\xe8\x1d\x77\x38\x90\x2a\x05\x3b\x42\xfa\x4c\x78\x7f\xbd\xbe\x7a\x57\xdd\xd5\xd5\x6f\xab\xdb\x55\xfd\x04\x51\xdc\xac\xea\xbb\xeb\xcd\x06\x37\xf7\x6b\x54\x78\xa8\xd6\xf5\xea\xea\xf1\xb6\x5a\xe3\xe1\x71\xfd\x70\xbf\xb9\x5e\x62\xc3\x39\x15\x67\xfd\xff\xef\xbc\x9f\xda\x53\x46\xc7\x46\xce\xc7\xf3\x26\x9e\x24\x21\x0e\x92\x7c\x87\x81\xf6\x0c\xe5\x96\xdd\x9e\x3b\x10\x5a\x19\x8f\xdf\x5c\x6a\x66\x91\x97\xb0\x9d\x66\xfe\xd7\x83\xc4\xaa\x47\x10\x5b\x20\x32\xe3\x97\xc1\x6c\xbc\x2c\xcb\xc3\xe1\xb0\xdc\x86\xb4\x14\xdd\x96\x7e\xc6\xc5\xf2\xd7\x65\x91\x99\x41\x64\xac\x95\x5a\xd6\x5c\xce\xc7\x14\x6d\x62\x37\xa4\xdc\x48\x60\x34\xe2\x3c\xeb\x98\x5b\x46\x2b\x5d\x1e\xe0\xaf\xe4\x94\x3b\xf4\x2a\x3b\x10\x7e\xa7\x3d\x6d\x5a\x75\xa3\x65\x9c\x34\x1f\xb9\x35\x98\xcc\x15\x52\xe3\xa7\x73\x24\x98\x52\x88\xd4\xe6\xbb\xc9\x9f\x5b\xd6\x65\xf1\x5c\x5c\x94\x25\xa2\xf1\x98\xbd\x5d\xd8\xcb\x9f\x99\x2b\x9a\xfb\xd4\x23\x64\x9c\x1c\xa7\xcb\xc8\xa1\xfe\x78\x0f\xfe\xc4\x6d\x32\x8e\xcb\xe2\x22\xeb\x2e\xd1\xa7\x30\x41\x5f\x79\xd9\x2e\xd0\x35\xaf\xf1\x8c\x97\x45\x31\x91\x7b\x4a\xde\xbe\x44\x1f\x86\xd3\x99\x50\x6b\x89\xfc\x89\x96\x23\x49\x0f\x0a\x67\xc3\x7e\x2e\xf0\x62\xd2\xff\xb7\x85\x72\xfc\x9a\x07\x79\x3f\xf9\xcc\xc0\x38\x57\xdf\x30\x07\x38\x63\xa5\x7c\xfb\xb2\x67\xcd\x7f\x7b\x28\x5b\xd2\x10\x27\x5c\xd6\xf4\x2e\x90\x3f\x83\x4f\xe7\x91\x37\xe6\xc2\x76\x59\x5c\xcc\xef\x5f\x84\x6a\xed\xd3\x39\xd4\x4c\xc2\xf3\xcb\x1b\xbc\x14\x2f\xc5\xdf\x01\x00\x00\xff\xff\x77\x56\xe7\x1a\xf7\x04\x00\x00") -func noop_tracerJsBytes() ([]byte, error) { +func noop_tracer_legacyJsBytes() ([]byte, error) { return bindataRead( - _noop_tracerJs, - "noop_tracer.js", + _noop_tracer_legacyJs, + "noop_tracer_legacy.js", ) } -func noop_tracerJs() (*asset, error) { - bytes, err := noop_tracerJsBytes() +func noop_tracer_legacyJs() (*asset, error) { + bytes, err := noop_tracer_legacyJsBytes() if err != nil { return nil, err } - info := bindataFileInfo{name: "noop_tracer.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + info := bindataFileInfo{name: "noop_tracer_legacy.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xf, 0x1c, 0x6f, 0x65, 0xaf, 0x90, 0x31, 0xab, 0xf, 0xe0, 0xca, 0x54, 0x7, 0xfd, 0xd3, 0xa1, 0x4a, 0x14, 0x1, 0x2a, 0x9d, 0xdc, 0xb9, 0x64, 0x69, 0x83, 0x30, 0xb1, 0x2a, 0xbd, 0xfb}} return a, nil } @@ -218,23 +197,23 @@ func opcount_tracerJs() (*asset, error) { return a, nil } -var _prestate_tracerJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x57\xdd\x6f\xdb\x38\x12\x7f\xb6\xfe\x8a\x41\x5f\x6c\x5d\x5d\xb9\xcd\x02\x7b\x80\x73\x39\x40\x75\xdd\x36\x40\x36\x09\x6c\xe7\x72\xb9\xc5\x3e\x50\xe4\x48\xe6\x9a\x26\x05\x92\xb2\xe3\x2b\xf2\xbf\x1f\x86\xfa\xf0\x47\x93\xa6\x7b\x6f\x16\x39\xfc\xcd\xf7\x6f\xc6\xa3\x11\x4c\x4c\xb9\xb3\xb2\x58\x7a\x38\x7b\xff\xe1\xef\xb0\x58\x22\x14\xe6\x1d\xfa\x25\x5a\xac\xd6\x90\x56\x7e\x69\xac\x8b\x46\x23\x58\x2c\xa5\x83\x5c\x2a\x04\xe9\xa0\x64\xd6\x83\xc9\xc1\x9f\xc8\x2b\x99\x59\x66\x77\x49\x34\x1a\xd5\x6f\x9e\xbd\x26\x84\xdc\x22\x82\x33\xb9\xdf\x32\x8b\x63\xd8\x99\x0a\x38\xd3\x60\x51\x48\xe7\xad\xcc\x2a\x8f\x20\x3d\x30\x2d\x46\xc6\xc2\xda\x08\x99\xef\x08\x52\x7a\xa8\xb4\x40\x1b\x54\x7b\xb4\x6b\xd7\xda\xf1\xe5\xfa\x0e\xae\xd0\x39\xb4\xf0\x05\x35\x5a\xa6\xe0\xb6\xca\x94\xe4\x70\x25\x39\x6a\x87\xc0\x1c\x94\x74\xe2\x96\x28\x20\x0b\x70\xf4\xf0\x33\x99\x32\x6f\x4c\x81\xcf\xa6\xd2\x82\x79\x69\xf4\x10\x50\x92\xe5\xb0\x41\xeb\xa4\xd1\xf0\x4b\xab\xaa\x01\x1c\x82\xb1\x04\x32\x60\x9e\x1c\xb0\x60\x4a\x7a\x17\x03\xd3\x3b\x50\xcc\xef\x9f\xfe\x44\x40\xf6\x7e\x0b\x90\x3a\xa8\x59\x9a\x12\xc1\x2f\x99\x27\xaf\xb7\x52\x29\xc8\x10\x2a\x87\x79\xa5\x86\x84\x96\x55\x1e\xee\x2f\x17\x5f\x6f\xee\x16\x90\x5e\x3f\xc0\x7d\x3a\x9b\xa5\xd7\x8b\x87\x73\xd8\x4a\xbf\x34\x95\x07\xdc\x60\x0d\x25\xd7\xa5\x92\x28\x60\xcb\xac\x65\xda\xef\xc0\xe4\x84\xf0\xdb\x74\x36\xf9\x9a\x5e\x2f\xd2\x8f\x97\x57\x97\x8b\x07\x30\x16\x3e\x5f\x2e\xae\xa7\xf3\x39\x7c\xbe\x99\x41\x0a\xb7\xe9\x6c\x71\x39\xb9\xbb\x4a\x67\x70\x7b\x37\xbb\xbd\x99\x4f\x13\x98\x23\x59\x85\xf4\xfe\xf5\x98\xe7\x21\x7b\x16\x41\xa0\x67\x52\xb9\x36\x12\x0f\xa6\x02\xb7\x34\x95\x12\xb0\x64\x1b\x04\x8b\x1c\xe5\x06\x05\x30\xe0\xa6\xdc\xfd\x74\x52\x09\x8b\x29\xa3\x8b\xe0\xf3\x8b\x05\x09\x97\x39\x68\xe3\x87\xe0\x10\xe1\x1f\x4b\xef\xcb\xf1\x68\xb4\xdd\x6e\x93\x42\x57\x89\xb1\xc5\x48\xd5\x70\x6e\xf4\xcf\x24\x22\xcc\xd2\xa2\xf3\xcc\xe3\xc2\x32\x8e\x16\x4c\xe5\xcb\xca\x3b\x70\x55\x9e\x4b\x2e\x51\x7b\x90\x3a\x37\x76\x1d\x2a\x05\xbc\x01\x6e\x91\x79\x04\x06\xca\x70\xa6\x00\x1f\x91\x57\xe1\xae\x8e\x74\x28\x57\xcb\xb4\x63\x3c\x9c\xe6\xd6\xac\xc9\xd7\xca\x79\xfa\xe1\x1c\xae\x33\x85\x02\x0a\xd4\xe8\xa4\x83\x4c\x19\xbe\x4a\xa2\x6f\x51\xef\xc0\x18\xaa\x93\xe0\x61\x23\x14\x6a\x63\x8b\x7d\x8b\x90\x55\x52\x09\xa9\x8b\x24\xea\xb5\xd2\x63\xd0\x95\x52\xc3\x28\x40\x28\x63\x56\x55\x99\x72\x6e\xaa\x60\xfb\x9f\xc8\x7d\x0d\xe6\x4a\xe4\x32\xa7\xe2\x60\xdd\xad\x37\xe1\xaa\xd3\x6b\x32\x92\x4f\xa2\xde\x11\xcc\x18\xf2\x4a\x07\x77\x06\x4c\x08\x3b\x04\x91\xc5\xdf\xa2\x5e\x6f\xc3\x2c\x61\xc1\x05\x78\xf3\x15\x1f\xc3\x65\x7c\x1e\xf5\x7a\x32\x87\x81\x5f\x4a\x97\xb4\xc0\xbf\x33\xce\xff\x80\x8b\x8b\x8b\xd0\xd4\xb9\xd4\x28\x62\x20\x88\xde\x73\x62\xf5\x4d\x2f\x63\x8a\x69\x8e\x63\xe8\xbf\x7f\xec\xc3\x5b\x10\x59\x52\xa0\xff\x58\x9f\xd6\xca\x12\x6f\xe6\xde\x4a\x5d\x0c\x3e\xfc\x1a\x0f\xc3\x2b\x6d\xc2\x1b\x68\xc4\xaf\x4d\x27\x5c\xdf\x73\x23\xc2\x75\x63\x73\x2d\x35\x31\xa2\x11\x6a\xa4\x9c\x37\x96\x15\x38\x86\x6f\x4f\xf4\xfd\x44\x5e\x3d\x45\xbd\xa7\xa3\x28\xcf\x6b\xa1\x17\xa2\xdc\x40\x00\x6a\x6f\xbb\x3a\x2f\x24\x75\xea\x61\x02\x02\xde\x8f\x92\x30\x6f\x4d\x39\x49\xc2\x0a\x77\xaf\x67\x82\x2e\xa4\x78\xec\x2e\x56\xb8\x8b\xcf\xa3\x17\x53\x94\x34\x46\xff\x2e\xc5\xe3\xcf\xe6\xeb\xe4\xcd\x51\x5c\xe7\x24\xb5\xb7\x37\x8e\x4f\xe2\x68\xd1\x55\xca\x53\xb9\x4b\xbd\x31\x2b\x22\xae\x25\xc5\x47\xa9\x10\x12\x53\x52\xb6\x5c\xcd\x1c\x19\xa2\x06\xe9\xd1\x32\xa2\x4e\xb3\x41\x4b\x53\x03\x2c\xfa\xca\x6a\xd7\x85\x31\x97\x9a\xa9\x16\xb8\x89\xba\xb7\x8c\xd7\x3d\x53\x9f\x1f\xc4\x92\xfb\xc7\x10\xc5\xe0\xdd\x68\x04\xa9\x07\x72\x11\x4a\x23\xb5\x1f\xc2\x16\x41\x23\x0a\x6a\x7c\x81\xa2\xe2\x3e\xe0\xf5\x37\x4c\x55\xd8\xaf\x9b\x9b\x28\x32\x3c\x35\x15\x4d\x82\x83\xe6\x1f\x06\x03\xd7\x66\x13\x46\x5c\xc6\xf8\x0a\x9a\x86\x33\x56\x16\x52\x47\x4d\x38\x8f\x9a\x8d\x2c\x4a\x08\x38\x98\x15\x72\x45\x49\xa4\x93\x8f\x4c\xc1\x05\x64\xb2\xb8\xd4\xfe\x24\x79\x75\xd0\xdb\xa7\xf1\x1f\x49\xd3\x3c\x89\x23\xc2\x1b\x9c\xc5\x43\xf8\xf0\x6b\x57\x11\xde\x10\x14\xbc\x0e\xe6\xcd\xcb\x50\xd1\x69\x31\x3c\xff\x2c\xa8\xa1\x0e\x7e\x1b\xb4\x26\xae\xca\x28\x1d\xb5\x9f\x21\x8e\xc7\x5d\x7c\xfe\x03\xdc\x63\xdf\x5a\xdc\x26\x34\x09\x13\xe2\x10\x94\x3e\xc3\x77\xc1\xdc\x9d\x43\x01\x6f\x81\xbe\xa4\x26\x55\x4e\xf2\x2f\xcc\xc5\xf0\x37\x68\x24\x6e\xad\xe4\xdf\x59\x52\xe7\xf5\x13\x72\x8b\x6b\x1a\x05\x94\x3a\xce\x94\x42\xdb\x77\x10\x88\x66\xd8\xd4\x60\x48\x32\xae\x4b\xbf\x6b\x07\x84\x67\xb6\x40\xef\x5e\xf7\x26\xe0\xbc\x7b\xd7\xf2\x66\x88\xdf\xae\x44\xb8\xb8\x80\xfe\x64\x36\x4d\x17\xd3\x7e\xd3\x7b\xa3\x11\xdc\x63\x58\x9f\x32\x25\x33\xa1\x76\x20\x50\xa1\xc7\xda\x2e\xa3\x43\x5c\x3b\x1e\x19\xd2\x1e\x44\x1b\x0a\x3e\x4a\xe7\xa5\x2e\xa0\xa6\x97\x2d\x0d\xe3\x06\x2e\x34\x16\x67\x15\x85\xe7\x74\x72\x79\x43\x6b\x88\x45\x22\x23\x1a\x1a\xa1\x47\x99\x92\xdd\xda\x92\x4b\xeb\x3c\x94\x8a\x71\x4c\x08\xaf\x33\xe6\xe5\xa2\x68\xda\x9f\x54\xcf\x42\xdf\x06\xa0\xfd\x54\x64\x8a\xa6\x2a\xa9\x77\x30\x68\x31\xe2\xa8\xd7\xb3\xad\xf4\x01\xf6\xf9\x9e\x47\x9c\xc7\xf2\x90\x45\x68\x1b\xc1\x0d\x12\xef\x06\x0a\xa9\x27\x28\xe9\xfa\xd7\x6f\xcd\xc8\x46\x97\x44\x3d\x7a\x77\x40\x06\xca\x14\xc7\x64\x20\xea\xb0\xf0\xca\x5a\xca\x7f\xc7\xdb\x39\x11\xc3\x9f\x95\xf3\x14\x53\x4b\xe1\x69\x28\xe6\x39\x66\x0d\x3c\x4a\x23\x3a\xfe\x9e\x41\x69\xd8\x85\xe1\x42\xea\x9a\xd1\x56\xaf\x80\xa5\xf1\xa8\xbd\x64\x4a\xed\x28\x0f\x5b\x4b\xbb\x0f\x6d\x3b\x43\x70\x92\xa4\x02\x4d\x05\x51\xa9\xb9\xaa\x44\x5d\x06\xa1\xf8\x1b\x3c\x17\x6c\x3e\x5e\x9a\xd6\xe8\x1c\x2b\x30\xa1\x4a\xca\xe5\x63\xb3\x76\x6a\xe8\xd7\xcc\x38\x88\xfb\x49\x67\xe4\x31\x2f\x29\x53\x24\x6d\x91\x11\xb7\xa7\x42\x58\x74\x6e\x10\x37\x44\xd5\x65\xf6\x7e\x89\x9a\x82\x0f\x1a\xb7\xd0\xed\x33\x8c\x73\xda\xef\xc4\x10\x98\x10\xc4\x87\x27\xbb\x47\xd4\xeb\xb9\xad\xf4\x7c\x09\x41\x93\x29\xf7\xbd\x18\x37\xf5\xcf\x99\x43\x78\x33\xfd\xf7\x62\x72\xf3\x69\x3a\xb9\xb9\x7d\x78\x33\x86\xa3\xb3\xf9\xe5\x7f\xa6\xdd\xd9\xc7\xf4\x2a\xbd\x9e\x4c\xdf\x8c\xc3\x40\x7f\xc6\x21\x6f\x5a\x17\x48\xa1\xf3\x8c\xaf\x92\x12\x71\x35\x78\x7f\xcc\x03\x7b\x07\x7b\xbd\xcc\x22\x5b\x9d\xef\x8d\xa9\x1b\xb4\xd1\xd1\xf2\x34\x5c\xc0\x8b\xc1\x3a\x7f\xd9\x9a\x49\x23\x3f\x68\xd9\x7f\xbf\xbf\x04\xaa\x78\xdd\x8e\xb3\xbf\x6c\x48\xe8\x1d\xc6\x57\x63\x70\x4c\xd1\xda\x2c\xff\x4b\x7f\x77\xf2\xdc\xa1\x1f\x02\x6a\x61\xb6\xc4\x7c\x1d\x6a\x7d\xd3\xe0\x1e\x84\xec\x43\x5c\xd3\xee\x4d\x3e\x88\x3b\x61\x02\xfb\x5e\xf4\xec\x39\x51\xd4\x02\x2e\x5a\xf4\xb7\xe1\xe5\xeb\x81\x3a\x6b\x22\x75\xa2\xe0\x97\x93\xb5\x30\xdc\xaf\x71\x6d\xec\xae\x99\x61\x07\xfe\xfd\x38\xaa\xe9\xd5\x55\x57\x4f\xf4\x41\x45\xd6\x1d\x7c\x9a\x5e\x4d\xbf\xa4\x8b\xe9\x91\xd4\x7c\x91\x2e\x2e\x27\xf5\xd1\x5f\x2e\xbc\x0f\x3f\x5d\x78\xfd\xf9\x7c\x71\x33\x9b\xf6\xc7\xcd\xd7\xd5\x4d\xfa\xa9\xff\x9d\xc2\x66\x75\xfc\x51\xeb\x7a\x73\x6f\xac\xf8\x7f\x3a\xe0\x60\x8d\xcb\xd9\x73\x5b\x5c\xa0\x76\xee\xab\x93\x7f\x49\xc0\x74\xcb\xca\x79\xfd\x4f\xb1\x17\xde\x3f\xcb\xc3\x4f\xd1\x53\xf4\xbf\x00\x00\x00\xff\xff\x3a\xb7\x37\x41\xbf\x10\x00\x00") +var _prestate_tracer_legacyJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x57\xdb\x6e\x1b\x39\x12\x7d\x56\x7f\x45\x21\x2f\x92\x36\x4a\x2b\xf6\x00\xb3\x80\xbc\x5e\xa0\xa3\x28\xb1\x00\x8f\x6d\x48\xf2\x66\xbd\x83\x79\x60\x93\xd5\x2d\x8e\x28\xb2\x41\xb2\x25\x6b\x03\xff\xfb\xa2\xd8\x17\x5d\xe2\x4b\x66\xdf\xd4\x64\xf1\x54\xd5\x61\xd5\x61\x69\x38\x84\xb1\x29\x76\x56\xe6\x4b\x0f\xe7\x1f\xcf\xfe\x0e\x8b\x25\x42\x6e\x3e\xa0\x5f\xa2\xc5\x72\x0d\x49\xe9\x97\xc6\xba\x68\x38\x84\xc5\x52\x3a\xc8\xa4\x42\x90\x0e\x0a\x66\x3d\x98\x0c\xfc\x89\xbd\x92\xa9\x65\x76\x17\x47\xc3\x61\x75\xe6\xd9\x6d\x42\xc8\x2c\x22\x38\x93\xf9\x2d\xb3\x38\x82\x9d\x29\x81\x33\x0d\x16\x85\x74\xde\xca\xb4\xf4\x08\xd2\x03\xd3\x62\x68\x2c\xac\x8d\x90\xd9\x8e\x20\xa5\x87\x52\x0b\xb4\xc1\xb5\x47\xbb\x76\x4d\x1c\x5f\x6f\xee\xe1\x1a\x9d\x43\x0b\x5f\x51\xa3\x65\x0a\xee\xca\x54\x49\x0e\xd7\x92\xa3\x76\x08\xcc\x41\x41\x2b\x6e\x89\x02\xd2\x00\x47\x07\xbf\x50\x28\xf3\x3a\x14\xf8\x62\x4a\x2d\x98\x97\x46\x0f\x00\x25\x45\x0e\x1b\xb4\x4e\x1a\x0d\xbf\x34\xae\x6a\xc0\x01\x18\x4b\x20\x3d\xe6\x29\x01\x0b\xa6\xa0\x73\x7d\x60\x7a\x07\x8a\xf9\xfd\xd1\x9f\x20\x64\x9f\xb7\x00\xa9\x83\x9b\xa5\x29\x10\xfc\x92\x79\xca\x7a\x2b\x95\x82\x14\xa1\x74\x98\x95\x6a\x40\x68\x69\xe9\xe1\xdb\x74\x71\x75\x7b\xbf\x80\xe4\xe6\x01\xbe\x25\xb3\x59\x72\xb3\x78\xb8\x80\xad\xf4\x4b\x53\x7a\xc0\x0d\x56\x50\x72\x5d\x28\x89\x02\xb6\xcc\x5a\xa6\xfd\x0e\x4c\x46\x08\xbf\x4d\x66\xe3\xab\xe4\x66\x91\x7c\x9a\x5e\x4f\x17\x0f\x60\x2c\x7c\x99\x2e\x6e\x26\xf3\x39\x7c\xb9\x9d\x41\x02\x77\xc9\x6c\x31\x1d\xdf\x5f\x27\x33\xb8\xbb\x9f\xdd\xdd\xce\x27\x31\xcc\x91\xa2\x42\x3a\xff\x36\xe7\x59\xb8\x3d\x8b\x20\xd0\x33\xa9\x5c\xc3\xc4\x83\x29\xc1\x2d\x4d\xa9\x04\x2c\xd9\x06\xc1\x22\x47\xb9\x41\x01\x0c\xb8\x29\x76\x3f\x7d\xa9\x84\xc5\x94\xd1\x79\xc8\xf9\xc5\x82\x84\x69\x06\xda\xf8\x01\x38\x44\xf8\xc7\xd2\xfb\x62\x34\x1c\x6e\xb7\xdb\x38\xd7\x65\x6c\x6c\x3e\x54\x15\x9c\x1b\xfe\x33\x8e\x08\xb3\xb0\xe8\x3c\xf3\xb8\xb0\x8c\xa3\x05\x53\xfa\xa2\xf4\x0e\x5c\x99\x65\x92\x4b\xd4\x1e\xa4\xce\x8c\x5d\x87\x4a\x01\x6f\x80\x5b\x64\x1e\x81\x81\x32\x9c\x29\xc0\x47\xe4\x65\xd8\xab\x98\x0e\xe5\x6a\x99\x76\x8c\x87\xd5\xcc\x9a\x35\xe5\x5a\x3a\x4f\x3f\x9c\xc3\x75\xaa\x50\x40\x8e\x1a\x9d\x74\x90\x2a\xc3\x57\x71\xf4\x3d\xea\x1c\x04\x43\x75\x12\x32\xac\x8d\x42\x6d\x6c\xb1\x6b\x11\xd2\x52\x2a\x21\x75\x1e\x47\x9d\xc6\x7a\x04\xba\x54\x6a\x10\x05\x08\x65\xcc\xaa\x2c\x12\xce\x4d\x19\x62\xff\x13\xb9\xaf\xc0\x5c\x81\x5c\x66\x54\x1c\xac\xdd\xf5\x26\x6c\xb5\x7e\x4d\x4a\xf6\x71\xd4\x39\x82\x19\x41\x56\xea\x90\x4e\x8f\x09\x61\x07\x20\xd2\xfe\xf7\xa8\xd3\xd9\x30\x4b\x58\x70\x09\xde\x5c\xe1\x63\xd8\xec\x5f\x44\x9d\x8e\xcc\xa0\xe7\x97\xd2\xc5\x0d\xf0\xef\x8c\xf3\x3f\xe0\xf2\xf2\x32\x34\x75\x26\x35\x8a\x3e\x10\x44\xe7\x39\xb3\x6a\xa7\x93\x32\xc5\x34\xc7\x11\x74\x3f\x3e\x76\xe1\x3d\x88\x34\xce\xd1\x7f\xaa\x56\x2b\x67\xb1\x37\x73\x6f\xa5\xce\x7b\x67\xbf\xf6\x07\xe1\x94\x36\xe1\x0c\xd4\xe6\x37\xa6\x35\xae\xf6\xb9\x11\x61\xbb\x8e\xb9\xb2\x1a\x1b\x51\x1b\xd5\x56\xce\x1b\xcb\x72\x1c\xc1\xf7\x27\xfa\x7e\xa2\xac\x9e\xa2\xce\xd3\x11\xcb\xf3\xca\xe8\x05\x96\x6b\x08\x40\xed\x6d\x5b\xe7\xb9\xa4\x4e\x3d\xbc\x80\x80\xf7\xda\x25\xcc\x9b\x50\x4e\x2e\x61\x85\xbb\xb7\x6f\x82\x36\xa4\x78\x6c\x37\x56\xb8\xeb\x5f\x44\x2f\x5e\x51\x5c\x07\xfd\xbb\x14\x8f\x3f\x7b\x5f\x27\x67\x8e\x78\x9d\x93\xd5\x3e\xde\x7e\xff\x84\x47\x8b\xae\x54\x9e\xca\x5d\xea\x8d\x59\x91\x70\x2d\x89\x1f\xa5\x02\x25\xa6\xa0\xdb\x72\x95\x72\xa4\x88\x1a\xa4\x47\xcb\x48\x3a\xcd\x06\x2d\xbd\x1a\x60\xd1\x97\x56\xbb\x96\xc6\x4c\x6a\xa6\x1a\xe0\x9a\x75\x6f\x19\xaf\x7a\xa6\x5a\x3f\xe0\x92\xfb\xc7\xc0\x62\xc8\xee\x07\x52\x02\x05\xd4\x5d\xcf\x65\x4f\x85\x1a\x0a\x83\x5c\x4f\x33\xf0\x8f\xa1\x6f\xa9\xf9\x33\xb4\x1f\x8c\x56\xbb\x41\x70\x6f\x91\xcb\x22\x68\x49\x7d\xf1\xf5\x99\x25\x73\xba\xeb\xab\xc4\x0a\x53\x94\xf4\x94\x88\xb8\xf5\x73\xd4\x83\x14\x68\xec\x4d\x88\xb5\x22\x31\x0a\x18\x89\x07\x32\x86\xc2\x48\xed\x07\xb0\x45\xd0\x88\x82\x84\x4a\xa0\x28\xb9\x0f\x01\x74\x37\x4c\x95\xd8\xad\xc4\x88\x24\x3d\x1c\x35\x25\xbd\x5c\x07\x62\x35\x08\x84\xae\xcd\x26\x3c\xc9\x29\xe3\x2b\xa8\x05\xc2\x58\x99\x4b\x1d\xbd\x18\x18\x01\xd7\xa1\xd5\x45\x47\x2b\x9f\x98\x82\x4b\x48\x65\x3e\xd5\xfe\xa4\xd8\xaa\x22\x69\x8e\xf6\xff\x88\xeb\x66\x8f\x1d\x09\x74\xef\xbc\x3f\x80\xb3\x5f\xdb\x0a\xf6\x86\xa0\xe0\x6d\x30\x6f\x5e\x86\x8a\x4e\x8b\xf7\xf9\x63\xc1\x0d\x29\xce\xfb\xe0\x35\x76\x65\x4a\xe5\x53\xe5\x19\x78\x3c\x56\x9d\x8b\x57\x70\x8f\x73\x6b\x70\x6b\x6a\x62\x26\xc4\x21\x28\x7d\x86\xef\x9c\xb9\x7b\x87\x02\xde\x03\x7d\x49\x4d\xae\x9c\xe4\x5f\x99\xeb\xc3\xdf\xa0\xb6\xb8\xb3\x92\xff\x10\x49\x75\xaf\x9f\x91\x5b\x5c\x53\xb9\xd1\xd5\x71\xa6\x14\xda\xae\x83\x20\x8c\x83\xba\x67\xc2\x25\xe3\xba\xf0\xbb\xe6\x41\xf3\xcc\xe6\xe8\xdd\xdb\xd9\x04\x9c\x0f\x1f\x1a\x9d\x0f\xfc\xed\x0a\x6a\x15\xe8\x8e\x67\x93\x64\x31\xe9\xd6\xdd\x32\x1c\xc2\x37\x0c\xe3\x5e\xaa\x64\x2a\xd4\x0e\x04\x2a\xf4\x58\xc5\x65\x74\xe0\xb5\xd5\xbd\x01\xcd\x6d\x34\x51\xe1\xa3\x74\x5e\xea\x1c\xaa\x2e\xdb\xd2\xf0\xd0\x76\xcc\x86\x00\x4b\xa2\xe7\xf4\xa5\xf5\x86\xc6\x26\x8b\x24\x9e\xf4\xc8\x05\x4d\x61\x4a\xb6\x63\x56\x26\xad\xf3\x50\x28\xc6\x31\x34\x59\x1b\xcc\xcb\x45\x51\xcb\x15\xb9\x9e\x05\x9d\x09\x40\xfb\x57\x9c\x29\x9a\x02\xc8\xbd\x83\x5e\x83\xd1\x8f\x3a\x1d\xdb\x58\x1f\x60\x5f\xec\x75\xcf\x79\x2c\x0e\x55\x8f\xa6\x27\xdc\x20\xbd\x13\x41\xf2\xaa\x17\x9f\x7c\xfd\xeb\xb7\x7a\xc4\x40\x17\x47\x1d\x3a\x77\x20\x5e\xca\xe4\x7b\xf1\x22\x31\x10\x15\x2d\xbc\xb4\xf6\x40\x6e\x40\x66\x24\x0c\x7f\x96\xce\x13\xa7\x96\xe8\xa9\x25\xf1\x75\xd1\x7b\x43\xf3\xea\xa7\xb8\x1a\x59\x0b\xe3\x51\x7b\xc9\x94\xda\xd1\x3d\x6c\x2d\xcd\x6a\x34\x9d\x0d\xc0\x49\xb2\x0a\x32\x15\x4c\xa5\xe6\xaa\x14\x55\x19\x84\xe2\xaf\xf1\x5c\x88\xf9\x78\xc8\x5b\xa3\x73\x2c\xc7\x98\x2a\x29\x93\x8f\xf5\x98\xac\xa1\x5b\x29\x79\xaf\xdf\x7d\x49\x30\x95\xc9\xe3\xa6\xc8\xe8\x2d\x4a\x84\xb0\xe8\x5c\xaf\x7f\xa0\xa1\x55\x8d\x2e\x51\x13\xf9\xa0\x71\x0b\xed\xfc\xc5\x38\xa7\x79\x54\x0c\x80\x09\x41\x7a\x78\x32\x2b\x45\x9d\x8e\xdb\x4a\xcf\x97\x10\x3c\x99\x62\xdf\x8b\xfd\xba\xfe\x39\x73\x08\xef\x26\xff\x5e\x8c\x6f\x3f\x4f\xc6\xb7\x77\x0f\xef\x46\x70\xb4\x36\x9f\xfe\x67\x72\xba\x76\x95\xcc\xaf\xda\xb5\x4f\xc9\x75\x72\x33\x9e\xbc\x1b\x85\xa1\xe4\x99\x24\xbd\x69\xd2\xa2\x20\x9c\x67\x7c\x15\x17\x88\xab\xde\xc7\x63\x6d\xd8\x27\xdd\xe9\xa4\x16\xd9\xea\x62\x1f\x60\xd5\xb4\xb5\x8f\x46\xbb\xe1\x12\x5e\x24\xf0\xe2\xe5\x68\xc6\xb5\x7d\xaf\x79\x11\xf6\x33\x58\x90\x8f\xb7\xe3\x38\xff\xcb\x81\x84\x7e\x62\x7c\x35\x02\xc7\x14\x8d\xfe\xf2\xbf\xf4\x97\x2d\xcb\x1c\xfa\x01\xa0\x16\x66\x4b\x6a\xd8\xa2\x56\x3b\x35\xee\x01\x65\x67\xfd\x4a\x8a\x6f\xb3\x5e\xbf\x35\x26\xb0\x1f\x4d\xcf\x9f\x33\x45\x2d\xe0\xb2\x41\x7f\x1f\x4e\xbe\x4d\xd4\x79\xcd\xd4\x89\x83\x5f\x4e\x46\xdb\xb0\xbf\xc6\xb5\xb1\xbb\xfa\x5d\x3b\xc8\xef\x75\x56\x93\xeb\xeb\xb6\x9e\xe8\x83\x8a\xac\x5d\xf8\x3c\xb9\x9e\x7c\x4d\x16\x93\x23\xab\xf9\x22\x59\x4c\xc7\xd5\xd2\x5f\x2e\xbc\xb3\x9f\x2e\xbc\xee\x7c\xbe\xb8\x9d\x4d\xba\xa3\xfa\xeb\xfa\x36\xf9\xdc\xfd\xc1\x61\x3d\xfe\xbe\xd6\xce\xde\x7c\x33\x56\xfc\x3f\x1d\x70\x30\x8a\x66\xec\xb9\x49\x34\xc8\x3d\xf7\xe5\xc9\x3f\x3d\x60\xba\x51\xea\xac\xfa\xb7\xdb\x09\xe7\x9f\xd5\xe6\xa7\xe8\x29\xfa\x5f\x00\x00\x00\xff\xff\xfa\x53\xfa\x80\x83\x11\x00\x00") -func prestate_tracerJsBytes() ([]byte, error) { +func prestate_tracer_legacyJsBytes() ([]byte, error) { return bindataRead( - _prestate_tracerJs, - "prestate_tracer.js", + _prestate_tracer_legacyJs, + "prestate_tracer_legacy.js", ) } -func prestate_tracerJs() (*asset, error) { - bytes, err := prestate_tracerJsBytes() +func prestate_tracer_legacyJs() (*asset, error) { + bytes, err := prestate_tracer_legacyJsBytes() if err != nil { return nil, err } - info := bindataFileInfo{name: "prestate_tracer.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd4, 0x9, 0xf9, 0x44, 0x13, 0x31, 0x89, 0xf7, 0x35, 0x9a, 0xc6, 0xf0, 0x86, 0x9d, 0xb2, 0xe3, 0x57, 0xe2, 0xc0, 0xde, 0xc9, 0x3a, 0x4c, 0x4a, 0x94, 0x90, 0xa5, 0x92, 0x2f, 0xbf, 0xc0, 0xb8}} + info := bindataFileInfo{name: "prestate_tracer_legacy.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x94, 0xcf, 0x10, 0x37, 0xae, 0x8f, 0xd5, 0xfe, 0xf3, 0x25, 0x15, 0x25, 0x9b, 0x6b, 0x56, 0x7b, 0x3c, 0xa9, 0xda, 0xe8, 0xa2, 0xd3, 0x5, 0x96, 0x9c, 0xfd, 0x23, 0x68, 0xa2, 0x5, 0xca, 0x16}} return a, nil } @@ -369,16 +348,15 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ - "4byte_tracer_legacy.js": _4byte_tracer_legacyJs, - "bigram_tracer.js": bigram_tracerJs, - "call_tracer_js.js": call_tracer_jsJs, - "call_tracer_legacy.js": call_tracer_legacyJs, - "evmdis_tracer.js": evmdis_tracerJs, - "noop_tracer.js": noop_tracerJs, - "opcount_tracer.js": opcount_tracerJs, - "prestate_tracer.js": prestate_tracerJs, - "trigram_tracer.js": trigram_tracerJs, - "unigram_tracer.js": unigram_tracerJs, + "4byte_tracer_legacy.js": _4byte_tracer_legacyJs, + "bigram_tracer.js": bigram_tracerJs, + "call_tracer_legacy.js": call_tracer_legacyJs, + "evmdis_tracer.js": evmdis_tracerJs, + "noop_tracer_legacy.js": noop_tracer_legacyJs, + "opcount_tracer.js": opcount_tracerJs, + "prestate_tracer_legacy.js": prestate_tracer_legacyJs, + "trigram_tracer.js": trigram_tracerJs, + "unigram_tracer.js": unigram_tracerJs, } // AssetDebug is true if the assets were built with the debug flag enabled. @@ -425,16 +403,15 @@ type bintree struct { } var _bintree = &bintree{nil, map[string]*bintree{ - "4byte_tracer_legacy.js": {_4byte_tracer_legacyJs, map[string]*bintree{}}, - "bigram_tracer.js": {bigram_tracerJs, map[string]*bintree{}}, - "call_tracer_js.js": {call_tracer_jsJs, map[string]*bintree{}}, - "call_tracer_legacy.js": {call_tracer_legacyJs, map[string]*bintree{}}, - "evmdis_tracer.js": {evmdis_tracerJs, map[string]*bintree{}}, - "noop_tracer.js": {noop_tracerJs, map[string]*bintree{}}, - "opcount_tracer.js": {opcount_tracerJs, map[string]*bintree{}}, - "prestate_tracer.js": {prestate_tracerJs, map[string]*bintree{}}, - "trigram_tracer.js": {trigram_tracerJs, map[string]*bintree{}}, - "unigram_tracer.js": {unigram_tracerJs, map[string]*bintree{}}, + "4byte_tracer_legacy.js": {_4byte_tracer_legacyJs, map[string]*bintree{}}, + "bigram_tracer.js": {bigram_tracerJs, map[string]*bintree{}}, + "call_tracer_legacy.js": {call_tracer_legacyJs, map[string]*bintree{}}, + "evmdis_tracer.js": {evmdis_tracerJs, map[string]*bintree{}}, + "noop_tracer_legacy.js": {noop_tracer_legacyJs, map[string]*bintree{}}, + "opcount_tracer.js": {opcount_tracerJs, map[string]*bintree{}}, + "prestate_tracer_legacy.js": {prestate_tracer_legacyJs, map[string]*bintree{}}, + "trigram_tracer.js": {trigram_tracerJs, map[string]*bintree{}}, + "unigram_tracer.js": {unigram_tracerJs, map[string]*bintree{}}, }} // RestoreAsset restores an asset under the given directory. diff --git a/eth/tracers/js/internal/tracers/noop_tracer_legacy.js b/eth/tracers/js/internal/tracers/noop_tracer_legacy.js new file mode 100644 index 0000000000..fe7ddc85ab --- /dev/null +++ b/eth/tracers/js/internal/tracers/noop_tracer_legacy.js @@ -0,0 +1,29 @@ +// Copyright 2017 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +// noopTracer is just the barebone boilerplate code required from a JavaScript +// object to be usable as a transaction tracer. +{ + // step is invoked for every opcode that the VM executes. + step: function(log, db) { }, + + // fault is invoked when the actual execution of an opcode fails. + fault: function(log, db) { }, + + // result is invoked when all the opcodes have been iterated over and returns + // the final result of the tracing. + result: function(ctx, db) { return {}; } +} diff --git a/eth/tracers/js/internal/tracers/prestate_tracer.js b/eth/tracers/js/internal/tracers/prestate_tracer.js index 084c04ec46..77f25209cd 100644 --- a/eth/tracers/js/internal/tracers/prestate_tracer.js +++ b/eth/tracers/js/internal/tracers/prestate_tracer.js @@ -47,6 +47,13 @@ // result is invoked when all the opcodes have been iterated over and returns // the final result of the tracing. result: function(ctx, db) { + if (this.prestate === null) { + this.prestate = {}; + // If tx is transfer-only, the recipient account + // hasn't been populated. + this.lookupAccount(ctx.to, db); + } + // At this point, we need to deduct the 'value' from the // outer transaction, and move it back to the origin this.lookupAccount(ctx.from, db); @@ -79,7 +86,7 @@ } // Whenever new state is accessed, add it to the prestate switch (log.op.toString()) { - case "EXTCODECOPY": case "EXTCODESIZE": case "BALANCE": + case "EXTCODECOPY": case "EXTCODESIZE": case "EXTCODEHASH": case "BALANCE": this.lookupAccount(toAddress(log.stack.peek(0).toString(16)), db); break; case "CREATE": diff --git a/eth/tracers/js/internal/tracers/prestate_tracer_legacy.js b/eth/tracers/js/internal/tracers/prestate_tracer_legacy.js new file mode 100644 index 0000000000..77f25209cd --- /dev/null +++ b/eth/tracers/js/internal/tracers/prestate_tracer_legacy.js @@ -0,0 +1,115 @@ +// Copyright 2017 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +// prestateTracer outputs sufficient information to create a local execution of +// the transaction from a custom assembled genesis block. +{ + // prestate is the genesis that we're building. + prestate: null, + + // lookupAccount injects the specified account into the prestate object. + lookupAccount: function(addr, db){ + var acc = toHex(addr); + if (this.prestate[acc] === undefined) { + this.prestate[acc] = { + balance: '0x' + db.getBalance(addr).toString(16), + nonce: db.getNonce(addr), + code: toHex(db.getCode(addr)), + storage: {} + }; + } + }, + + // lookupStorage injects the specified storage entry of the given account into + // the prestate object. + lookupStorage: function(addr, key, db){ + var acc = toHex(addr); + var idx = toHex(key); + + if (this.prestate[acc].storage[idx] === undefined) { + this.prestate[acc].storage[idx] = toHex(db.getState(addr, key)); + } + }, + + // result is invoked when all the opcodes have been iterated over and returns + // the final result of the tracing. + result: function(ctx, db) { + if (this.prestate === null) { + this.prestate = {}; + // If tx is transfer-only, the recipient account + // hasn't been populated. + this.lookupAccount(ctx.to, db); + } + + // At this point, we need to deduct the 'value' from the + // outer transaction, and move it back to the origin + this.lookupAccount(ctx.from, db); + + var fromBal = bigInt(this.prestate[toHex(ctx.from)].balance.slice(2), 16); + var toBal = bigInt(this.prestate[toHex(ctx.to)].balance.slice(2), 16); + + this.prestate[toHex(ctx.to)].balance = '0x'+toBal.subtract(ctx.value).toString(16); + this.prestate[toHex(ctx.from)].balance = '0x'+fromBal.add(ctx.value).add((ctx.gasUsed + ctx.intrinsicGas) * ctx.gasPrice).toString(16); + + // Decrement the caller's nonce, and remove empty create targets + this.prestate[toHex(ctx.from)].nonce--; + if (ctx.type == 'CREATE') { + // We can blibdly delete the contract prestate, as any existing state would + // have caused the transaction to be rejected as invalid in the first place. + delete this.prestate[toHex(ctx.to)]; + } + // Return the assembled allocations (prestate) + return this.prestate; + }, + + // step is invoked for every opcode that the VM executes. + step: function(log, db) { + // Add the current account if we just started tracing + if (this.prestate === null){ + this.prestate = {}; + // Balance will potentially be wrong here, since this will include the value + // sent along with the message. We fix that in 'result()'. + this.lookupAccount(log.contract.getAddress(), db); + } + // Whenever new state is accessed, add it to the prestate + switch (log.op.toString()) { + case "EXTCODECOPY": case "EXTCODESIZE": case "EXTCODEHASH": case "BALANCE": + this.lookupAccount(toAddress(log.stack.peek(0).toString(16)), db); + break; + case "CREATE": + var from = log.contract.getAddress(); + this.lookupAccount(toContract(from, db.getNonce(from)), db); + break; + case "CREATE2": + var from = log.contract.getAddress(); + // stack: salt, size, offset, endowment + var offset = log.stack.peek(1).valueOf() + var size = log.stack.peek(2).valueOf() + var end = offset + size + this.lookupAccount(toContract2(from, log.stack.peek(3).toString(16), log.memory.slice(offset, end)), db); + break; + case "CALL": case "CALLCODE": case "DELEGATECALL": case "STATICCALL": + this.lookupAccount(toAddress(log.stack.peek(1).toString(16)), db); + break; + case 'SSTORE':case 'SLOAD': + this.lookupStorage(log.contract.getAddress(), toWord(log.stack.peek(0).toString(16)), db); + break; + } + }, + + // fault is invoked when the actual execution of an opcode fails. + fault: function(log, db) {} +} diff --git a/eth/tracers/js/tracer.go b/eth/tracers/js/tracer.go index b8e035e6f3..30c5c2cf14 100644 --- a/eth/tracers/js/tracer.go +++ b/eth/tracers/js/tracer.go @@ -697,7 +697,7 @@ func (jst *jsTracer) CaptureStart(env *vm.EVM, from common.Address, to common.Ad jst.ctx["block"] = env.Context.BlockNumber.Uint64() jst.dbWrapper.db = env.StateDB // Update list of precompiles based on current block - rules := env.ChainConfig().Rules(env.Context.BlockNumber) + rules := env.ChainConfig().Rules(env.Context.BlockNumber, env.Context.Random != nil) jst.activePrecompiles = vm.ActivePrecompiles(rules) // Compute intrinsic gas diff --git a/eth/tracers/native/4byte.go b/eth/tracers/native/4byte.go index e60e82de47..ad1d89071c 100644 --- a/eth/tracers/native/4byte.go +++ b/eth/tracers/native/4byte.go @@ -83,7 +83,7 @@ func (t *fourByteTracer) CaptureStart(env *vm.EVM, from common.Address, to commo t.env = env // Update list of precompiles based on current block - rules := env.ChainConfig().Rules(env.Context.BlockNumber) + rules := env.ChainConfig().Rules(env.Context.BlockNumber, env.Context.Random != nil) t.activePrecompiles = vm.ActivePrecompiles(rules) // Save the outer calldata also diff --git a/eth/tracers/native/call.go b/eth/tracers/native/call.go index 16ea75aa4a..08dc76aa61 100644 --- a/eth/tracers/native/call.go +++ b/eth/tracers/native/call.go @@ -59,8 +59,7 @@ type callTracer struct { func newCallTracer() tracers.Tracer { // First callframe contains tx context info // and is populated on start and end. - t := &callTracer{callstack: make([]callFrame, 1)} - return t + return &callTracer{callstack: make([]callFrame, 1)} } // CaptureStart implements the EVMLogger interface to initialize the tracing operation. diff --git a/eth/tracers/native/noop.go b/eth/tracers/native/noop.go index ee110ef7df..15b7dbccb7 100644 --- a/eth/tracers/native/noop.go +++ b/eth/tracers/native/noop.go @@ -27,7 +27,7 @@ import ( ) func init() { - register("noopTracerNative", newNoopTracer) + register("noopTracer", newNoopTracer) } // noopTracer is a go implementation of the Tracer interface which diff --git a/eth/tracers/native/prestate.go b/eth/tracers/native/prestate.go new file mode 100644 index 0000000000..598663ac81 --- /dev/null +++ b/eth/tracers/native/prestate.go @@ -0,0 +1,186 @@ +// Copyright 2022 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package native + +import ( + "encoding/json" + "math/big" + "sync/atomic" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/core" + "github.com/ethereum/go-ethereum/core/vm" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/eth/tracers" +) + +func init() { + register("prestateTracer", newPrestateTracer) +} + +type prestate = map[common.Address]*account +type account struct { + Balance string `json:"balance"` + Nonce uint64 `json:"nonce"` + Code string `json:"code"` + Storage map[common.Hash]common.Hash `json:"storage"` +} + +type prestateTracer struct { + env *vm.EVM + prestate prestate + create bool + to common.Address + interrupt uint32 // Atomic flag to signal execution interruption + reason error // Textual reason for the interruption +} + +func newPrestateTracer() tracers.Tracer { + // First callframe contains tx context info + // and is populated on start and end. + return &prestateTracer{prestate: prestate{}} +} + +// CaptureStart implements the EVMLogger interface to initialize the tracing operation. +func (t *prestateTracer) CaptureStart(env *vm.EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) { + t.env = env + t.create = create + t.to = to + + // Compute intrinsic gas + isHomestead := env.ChainConfig().IsHomestead(env.Context.BlockNumber) + isIstanbul := env.ChainConfig().IsIstanbul(env.Context.BlockNumber) + intrinsicGas, err := core.IntrinsicGas(input, nil, create, isHomestead, isIstanbul) + if err != nil { + return + } + + t.lookupAccount(from) + t.lookupAccount(to) + + // The recipient balance includes the value transferred. + toBal := hexutil.MustDecodeBig(t.prestate[to].Balance) + toBal = new(big.Int).Sub(toBal, value) + t.prestate[to].Balance = hexutil.EncodeBig(toBal) + + // The sender balance is after reducing: value, gasLimit, intrinsicGas. + // We need to re-add them to get the pre-tx balance. + fromBal := hexutil.MustDecodeBig(t.prestate[from].Balance) + gasPrice := env.TxContext.GasPrice + consumedGas := new(big.Int).Mul( + gasPrice, + new(big.Int).Add( + new(big.Int).SetUint64(intrinsicGas), + new(big.Int).SetUint64(gas), + ), + ) + fromBal.Add(fromBal, new(big.Int).Add(value, consumedGas)) + t.prestate[from].Balance = hexutil.EncodeBig(fromBal) + t.prestate[from].Nonce-- +} + +// CaptureEnd is called after the call finishes to finalize the tracing. +func (t *prestateTracer) CaptureEnd(output []byte, gasUsed uint64, _ time.Duration, err error) { + if t.create { + // Exclude created contract. + delete(t.prestate, t.to) + } +} + +// CaptureState implements the EVMLogger interface to trace a single step of VM execution. +func (t *prestateTracer) CaptureState(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, rData []byte, depth int, err error) { + stack := scope.Stack + stackData := stack.Data() + stackLen := len(stackData) + switch { + case stackLen >= 1 && (op == vm.SLOAD || op == vm.SSTORE): + slot := common.Hash(stackData[stackLen-1].Bytes32()) + t.lookupStorage(scope.Contract.Address(), slot) + case stackLen >= 1 && (op == vm.EXTCODECOPY || op == vm.EXTCODEHASH || op == vm.EXTCODESIZE || op == vm.BALANCE || op == vm.SELFDESTRUCT): + addr := common.Address(stackData[stackLen-1].Bytes20()) + t.lookupAccount(addr) + case stackLen >= 5 && (op == vm.DELEGATECALL || op == vm.CALL || op == vm.STATICCALL || op == vm.CALLCODE): + addr := common.Address(stackData[stackLen-2].Bytes20()) + t.lookupAccount(addr) + case op == vm.CREATE: + addr := scope.Contract.Address() + nonce := t.env.StateDB.GetNonce(addr) + t.lookupAccount(crypto.CreateAddress(addr, nonce)) + case stackLen >= 4 && op == vm.CREATE2: + offset := stackData[stackLen-2] + size := stackData[stackLen-3] + init := scope.Memory.GetCopy(int64(offset.Uint64()), int64(size.Uint64())) + inithash := crypto.Keccak256(init) + salt := stackData[stackLen-4] + t.lookupAccount(crypto.CreateAddress2(scope.Contract.Address(), salt.Bytes32(), inithash)) + } +} + +// CaptureFault implements the EVMLogger interface to trace an execution fault. +func (t *prestateTracer) CaptureFault(pc uint64, op vm.OpCode, gas, cost uint64, _ *vm.ScopeContext, depth int, err error) { +} + +// CaptureEnter is called when EVM enters a new scope (via call, create or selfdestruct). +func (t *prestateTracer) CaptureEnter(typ vm.OpCode, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) { +} + +// CaptureExit is called when EVM exits a scope, even if the scope didn't +// execute any code. +func (t *prestateTracer) CaptureExit(output []byte, gasUsed uint64, err error) { +} + +// GetResult returns the json-encoded nested list of call traces, and any +// error arising from the encoding or forceful termination (via `Stop`). +func (t *prestateTracer) GetResult() (json.RawMessage, error) { + res, err := json.Marshal(t.prestate) + if err != nil { + return nil, err + } + return json.RawMessage(res), t.reason +} + +// Stop terminates execution of the tracer at the first opportune moment. +func (t *prestateTracer) Stop(err error) { + t.reason = err + atomic.StoreUint32(&t.interrupt, 1) +} + +// lookupAccount fetches details of an account and adds it to the prestate +// if it doesn't exist there. +func (t *prestateTracer) lookupAccount(addr common.Address) { + if _, ok := t.prestate[addr]; ok { + return + } + t.prestate[addr] = &account{ + Balance: bigToHex(t.env.StateDB.GetBalance(addr)), + Nonce: t.env.StateDB.GetNonce(addr), + Code: bytesToHex(t.env.StateDB.GetCode(addr)), + Storage: make(map[common.Hash]common.Hash), + } +} + +// lookupStorage fetches the requested storage slot and adds +// it to the prestate of the given contract. It assumes `lookupAccount` +// has been performed on the contract before. +func (t *prestateTracer) lookupStorage(addr common.Address, key common.Hash) { + if _, ok := t.prestate[addr].Storage[key]; ok { + return + } + t.prestate[addr].Storage[key] = t.env.StateDB.GetState(addr, key) +} diff --git a/ethclient/ethclient.go b/ethclient/ethclient.go index c6fa6b4c85..82fc8d5681 100644 --- a/ethclient/ethclient.go +++ b/ethclient/ethclient.go @@ -465,6 +465,17 @@ func (ec *Client) CallContract(ctx context.Context, msg ethereum.CallMsg, blockN return hex, nil } +// CallContractAtHash is almost the same as CallContract except that it selects +// the block by block hash instead of block height. +func (ec *Client) CallContractAtHash(ctx context.Context, msg ethereum.CallMsg, blockHash common.Hash) ([]byte, error) { + var hex hexutil.Bytes + err := ec.c.CallContext(ctx, &hex, "eth_call", toCallArg(msg), rpc.BlockNumberOrHashWithHash(blockHash, false)) + if err != nil { + return nil, err + } + return hex, nil +} + // PendingCallContract executes a message call transaction using the EVM. // The state seen by the contract call is the pending state. func (ec *Client) PendingCallContract(ctx context.Context, msg ethereum.CallMsg) ([]byte, error) { diff --git a/ethclient/ethclient_test.go b/ethclient/ethclient_test.go index 6507db843f..a75d17ded6 100644 --- a/ethclient/ethclient_test.go +++ b/ethclient/ethclient_test.go @@ -287,6 +287,9 @@ func TestEthClient(t *testing.T) { "CallContract": { func(t *testing.T) { testCallContract(t, client) }, }, + "CallContractAtHash": { + func(t *testing.T) { testCallContractAtHash(t, client) }, + }, "AtFunctions": { func(t *testing.T) { testAtFunctions(t, client) }, }, @@ -509,6 +512,33 @@ func testStatusFunctions(t *testing.T, client *rpc.Client) { } } +func testCallContractAtHash(t *testing.T, client *rpc.Client) { + ec := NewClient(client) + + // EstimateGas + msg := ethereum.CallMsg{ + From: testAddr, + To: &common.Address{}, + Gas: 21000, + Value: big.NewInt(1), + } + gas, err := ec.EstimateGas(context.Background(), msg) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if gas != 21000 { + t.Fatalf("unexpected gas price: %v", gas) + } + block, err := ec.HeaderByNumber(context.Background(), big.NewInt(1)) + if err != nil { + t.Fatalf("BlockByNumber error: %v", err) + } + // CallContract + if _, err := ec.CallContractAtHash(context.Background(), msg, block.Hash()); err != nil { + t.Fatalf("unexpected error: %v", err) + } +} + func testCallContract(t *testing.T, client *rpc.Client) { ec := NewClient(client) diff --git a/ethdb/batch.go b/ethdb/batch.go index 1353693318..541f40c838 100644 --- a/ethdb/batch.go +++ b/ethdb/batch.go @@ -43,6 +43,9 @@ type Batcher interface { // NewBatch creates a write-only database that buffers changes to its host db // until a final write is called. NewBatch() Batch + + // NewBatchWithSize creates a write-only database batch with pre-allocated buffer. + NewBatchWithSize(size int) Batch } // HookedBatch wraps an arbitrary batch where each operation may be hooked into diff --git a/ethdb/database.go b/ethdb/database.go index 0a5729c6c1..b2e7c7228a 100644 --- a/ethdb/database.go +++ b/ethdb/database.go @@ -64,6 +64,7 @@ type KeyValueStore interface { Iteratee Stater Compacter + Snapshotter io.Closer } @@ -86,6 +87,10 @@ type AncientReader interface { // Ancients returns the ancient item numbers in the ancient store. Ancients() (uint64, error) + // Tail returns the number of first stored item in the freezer. + // This number can also be interpreted as the total deleted item numbers. + Tail() (uint64, error) + // AncientSize returns the ancient size of the specified category. AncientSize(kind string) (uint64, error) } @@ -106,11 +111,24 @@ type AncientWriter interface { // The integer return value is the total size of the written data. ModifyAncients(func(AncientWriteOp) error) (int64, error) - // TruncateAncients discards all but the first n ancient data from the ancient store. - TruncateAncients(n uint64) error + // TruncateHead discards all but the first n ancient data from the ancient store. + // After the truncation, the latest item can be accessed it item_n-1(start from 0). + TruncateHead(n uint64) error + + // TruncateTail discards the first n ancient data from the ancient store. The already + // deleted items are ignored. After the truncation, the earliest item can be accessed + // is item_n(start from 0). The deleted items may not be removed from the ancient store + // immediately, but only when the accumulated deleted data reach the threshold then + // will be removed all together. + TruncateTail(n uint64) error // Sync flushes all in-memory ancient store data to disk. Sync() error + + // MigrateTable processes and migrates entries of a given table to a new format. + // The second argument is a function that takes a raw entry and returns it + // in the newest format. + MigrateTable(string, func([]byte) ([]byte, error)) error } // AncientWriteOp is given to the function argument of ModifyAncients. @@ -153,5 +171,6 @@ type Database interface { Iteratee Stater Compacter + Snapshotter io.Closer } diff --git a/ethdb/dbtest/testsuite.go b/ethdb/dbtest/testsuite.go index 06ee2211e6..6b206af48d 100644 --- a/ethdb/dbtest/testsuite.go +++ b/ethdb/dbtest/testsuite.go @@ -313,6 +313,68 @@ func TestDatabaseSuite(t *testing.T, New func() ethdb.KeyValueStore) { } }) + t.Run("Snapshot", func(t *testing.T) { + db := New() + defer db.Close() + + initial := map[string]string{ + "k1": "v1", "k2": "v2", "k3": "", "k4": "", + } + for k, v := range initial { + db.Put([]byte(k), []byte(v)) + } + snapshot, err := db.NewSnapshot() + if err != nil { + t.Fatal(err) + } + for k, v := range initial { + got, err := snapshot.Get([]byte(k)) + if err != nil { + t.Fatal(err) + } + if !bytes.Equal(got, []byte(v)) { + t.Fatalf("Unexpected value want: %v, got %v", v, got) + } + } + + // Flush more modifications into the database, ensure the snapshot + // isn't affected. + var ( + update = map[string]string{"k1": "v1-b", "k3": "v3-b"} + insert = map[string]string{"k5": "v5-b"} + delete = map[string]string{"k2": ""} + ) + for k, v := range update { + db.Put([]byte(k), []byte(v)) + } + for k, v := range insert { + db.Put([]byte(k), []byte(v)) + } + for k := range delete { + db.Delete([]byte(k)) + } + for k, v := range initial { + got, err := snapshot.Get([]byte(k)) + if err != nil { + t.Fatal(err) + } + if !bytes.Equal(got, []byte(v)) { + t.Fatalf("Unexpected value want: %v, got %v", v, got) + } + } + for k := range insert { + got, err := snapshot.Get([]byte(k)) + if err == nil || len(got) != 0 { + t.Fatal("Unexpected value") + } + } + for k := range delete { + got, err := snapshot.Get([]byte(k)) + if err != nil || len(got) == 0 { + t.Fatal("Unexpected deletion") + } + } + }) } func iterateKeys(it ethdb.Iterator) []string { diff --git a/ethdb/leveldb/leveldb.go b/ethdb/leveldb/leveldb.go index 9a782dedbe..15bd4e6eb3 100644 --- a/ethdb/leveldb/leveldb.go +++ b/ethdb/leveldb/leveldb.go @@ -213,6 +213,14 @@ func (db *Database) NewBatch() ethdb.Batch { } } +// NewBatchWithSize creates a write-only database batch with pre-allocated buffer. +func (db *Database) NewBatchWithSize(size int) ethdb.Batch { + return &batch{ + db: db.db, + b: leveldb.MakeBatch(size), + } +} + // NewIterator creates a binary-alphabetical iterator over a subset // of database content with a particular key prefix, starting at a particular // initial key (or after, if it does not exist). @@ -220,6 +228,19 @@ func (db *Database) NewIterator(prefix []byte, start []byte) ethdb.Iterator { return db.db.NewIterator(bytesPrefixRange(prefix, start), nil) } +// NewSnapshot creates a database snapshot based on the current state. +// The created snapshot will not be affected by all following mutations +// happened on the database. +// Note don't forget to release the snapshot once it's used up, otherwise +// the stale data will never be cleaned up by the underlying compactor. +func (db *Database) NewSnapshot() (ethdb.Snapshot, error) { + snap, err := db.db.GetSnapshot() + if err != nil { + return nil, err + } + return &snapshot{db: snap}, nil +} + // Stat returns a particular internal stat of the database. func (db *Database) Stat(property string) (string, error) { return db.db.GetProperty(property) @@ -519,3 +540,26 @@ func bytesPrefixRange(prefix, start []byte) *util.Range { r.Start = append(r.Start, start...) return r } + +// snapshot wraps a leveldb snapshot for implementing the Snapshot interface. +type snapshot struct { + db *leveldb.Snapshot +} + +// Has retrieves if a key is present in the snapshot backing by a key-value +// data store. +func (snap *snapshot) Has(key []byte) (bool, error) { + return snap.db.Has(key, nil) +} + +// Get retrieves the given key if it's present in the snapshot backing by +// key-value data store. +func (snap *snapshot) Get(key []byte) ([]byte, error) { + return snap.db.Get(key, nil) +} + +// Release releases associated resources. Release should always succeed and can +// be called multiple times without causing error. +func (snap *snapshot) Release() { + snap.db.Release() +} diff --git a/ethdb/memorydb/memorydb.go b/ethdb/memorydb/memorydb.go index 78181e860c..95ec9bb8aa 100644 --- a/ethdb/memorydb/memorydb.go +++ b/ethdb/memorydb/memorydb.go @@ -35,6 +35,10 @@ var ( // errMemorydbNotFound is returned if a key is requested that is not found in // the provided memory database. errMemorydbNotFound = errors.New("not found") + + // errSnapshotReleased is returned if callers want to retrieve data from a + // released snapshot. + errSnapshotReleased = errors.New("snapshot released") ) // Database is an ephemeral key-value store. Apart from basic data storage @@ -53,7 +57,7 @@ func New() *Database { } } -// NewWithCap returns a wrapped map pre-allocated to the provided capcity with +// NewWithCap returns a wrapped map pre-allocated to the provided capacity with // all the required database interface methods implemented. func NewWithCap(size int) *Database { return &Database{ @@ -129,6 +133,13 @@ func (db *Database) NewBatch() ethdb.Batch { } } +// NewBatchWithSize creates a write-only database batch with pre-allocated buffer. +func (db *Database) NewBatchWithSize(size int) ethdb.Batch { + return &batch{ + db: db, + } +} + // NewIterator creates a binary-alphabetical iterator over a subset // of database content with a particular key prefix, starting at a particular // initial key (or after, if it does not exist). @@ -163,6 +174,13 @@ func (db *Database) NewIterator(prefix []byte, start []byte) ethdb.Iterator { } } +// NewSnapshot creates a database snapshot based on the current state. +// The created snapshot will not be affected by all following mutations +// happened on the database. +func (db *Database) NewSnapshot() (ethdb.Snapshot, error) { + return newSnapshot(db), nil +} + // Stat returns a particular internal stat of the database. func (db *Database) Stat(property string) (string, error) { return "", errors.New("unknown property") @@ -313,3 +331,59 @@ func (it *iterator) Value() []byte { func (it *iterator) Release() { it.keys, it.values = nil, nil } + +// snapshot wraps a batch of key-value entries deep copied from the in-memory +// database for implementing the Snapshot interface. +type snapshot struct { + db map[string][]byte + lock sync.RWMutex +} + +// newSnapshot initializes the snapshot with the given database instance. +func newSnapshot(db *Database) *snapshot { + db.lock.RLock() + defer db.lock.RUnlock() + + copied := make(map[string][]byte) + for key, val := range db.db { + copied[key] = common.CopyBytes(val) + } + return &snapshot{db: copied} +} + +// Has retrieves if a key is present in the snapshot backing by a key-value +// data store. +func (snap *snapshot) Has(key []byte) (bool, error) { + snap.lock.RLock() + defer snap.lock.RUnlock() + + if snap.db == nil { + return false, errSnapshotReleased + } + _, ok := snap.db[string(key)] + return ok, nil +} + +// Get retrieves the given key if it's present in the snapshot backing by +// key-value data store. +func (snap *snapshot) Get(key []byte) ([]byte, error) { + snap.lock.RLock() + defer snap.lock.RUnlock() + + if snap.db == nil { + return nil, errSnapshotReleased + } + if entry, ok := snap.db[string(key)]; ok { + return common.CopyBytes(entry), nil + } + return nil, errMemorydbNotFound +} + +// Release releases associated resources. Release should always succeed and can +// be called multiple times without causing error. +func (snap *snapshot) Release() { + snap.lock.Lock() + defer snap.lock.Unlock() + + snap.db = nil +} diff --git a/ethdb/snapshot.go b/ethdb/snapshot.go new file mode 100644 index 0000000000..753e0f6b1f --- /dev/null +++ b/ethdb/snapshot.go @@ -0,0 +1,41 @@ +// Copyright 2018 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package ethdb + +type Snapshot interface { + // Has retrieves if a key is present in the snapshot backing by a key-value + // data store. + Has(key []byte) (bool, error) + + // Get retrieves the given key if it's present in the snapshot backing by + // key-value data store. + Get(key []byte) ([]byte, error) + + // Release releases associated resources. Release should always succeed and can + // be called multiple times without causing error. + Release() +} + +// Snapshotter wraps the Snapshot method of a backing data store. +type Snapshotter interface { + // NewSnapshot creates a database snapshot based on the current state. + // The created snapshot will not be affected by all following mutations + // happened on the database. + // Note don't forget to release the snapshot once it's used up, otherwise + // the stale data will never be cleaned up by the underlying compactor. + NewSnapshot() (Snapshot, error) +} diff --git a/go.mod b/go.mod index 8ffc4d00d0..edd6d6887a 100644 --- a/go.mod +++ b/go.mod @@ -3,21 +3,19 @@ module github.com/ethereum/go-ethereum go 1.16 require ( - github.com/Azure/azure-pipeline-go v0.2.2 // indirect - github.com/Azure/azure-storage-blob-go v0.7.0 - github.com/Azure/go-autorest/autorest/adal v0.8.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0 github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 // indirect github.com/VictoriaMetrics/fastcache v1.6.0 github.com/aws/aws-sdk-go-v2 v1.2.0 github.com/aws/aws-sdk-go-v2/config v1.1.1 github.com/aws/aws-sdk-go-v2/credentials v1.1.1 github.com/aws/aws-sdk-go-v2/service/route53 v1.1.1 - github.com/btcsuite/btcd v0.20.1-beta + github.com/btcsuite/btcd/btcec/v2 v2.1.2 github.com/cespare/cp v0.1.0 github.com/cloudflare/cloudflare-go v0.14.0 github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f github.com/davecgh/go-spew v1.1.1 - github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea + github.com/deckarep/golang-set v1.8.0 github.com/deepmap/oapi-codegen v1.8.2 // indirect github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf github.com/dop251/goja v0.0.0-20211011172007-d99e4b8cbf48 @@ -29,31 +27,32 @@ require ( github.com/go-logfmt/logfmt v0.5.0 // indirect github.com/go-ole/go-ole v1.2.1 // indirect github.com/go-stack/stack v1.8.0 + github.com/golang-jwt/jwt/v4 v4.3.0 github.com/golang/protobuf v1.5.2 github.com/golang/snappy v0.0.4 github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa - github.com/google/uuid v1.1.5 + github.com/google/uuid v1.2.0 github.com/gorilla/websocket v1.4.2 - github.com/graph-gophers/graphql-go v0.0.0-20201113091052-beb923fada29 + github.com/graph-gophers/graphql-go v1.3.0 github.com/hashicorp/go-bexpr v0.1.10 github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d github.com/hashicorp/hcl/v2 v2.10.1 github.com/holiman/bloomfilter/v2 v2.0.3 github.com/holiman/uint256 v1.2.0 - github.com/huin/goupnp v1.0.2 + github.com/huin/goupnp v1.0.3-0.20220313090229-ca81a64b4204 github.com/imdario/mergo v0.3.11 github.com/influxdata/influxdb v1.8.3 github.com/influxdata/influxdb-client-go/v2 v2.4.0 github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097 // indirect - github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458 + github.com/jackpal/go-nat-pmp v1.0.2 github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e github.com/julienschmidt/httprouter v1.3.0 - github.com/karalabe/usb v0.0.0-20211005121534-4c5740d64559 + github.com/karalabe/usb v0.0.2 github.com/kylelemons/godebug v1.1.0 // indirect github.com/mattn/go-colorable v0.1.8 github.com/mattn/go-isatty v0.0.12 github.com/mitchellh/cli v1.1.2 - github.com/mitchellh/go-grpc-net-conn v0.0.0-20200427190222-eb030e4876f0 // indirect + github.com/mitchellh/go-grpc-net-conn v0.0.0-20200427190222-eb030e4876f0 github.com/mitchellh/go-homedir v1.1.0 github.com/naoina/go-stringutil v0.1.0 // indirect github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416 @@ -74,11 +73,11 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.2.0 go.opentelemetry.io/otel/sdk v1.2.0 golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 - golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d // indirect golang.org/x/sync v0.0.0-20210220032951-036812b2e83c golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912 - golang.org/x/text v0.3.6 + golang.org/x/text v0.3.7 golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba + golang.org/x/tools v0.1.0 google.golang.org/grpc v1.42.0 google.golang.org/protobuf v1.27.1 gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce diff --git a/go.sum b/go.sum index a353c13b4b..19a6002886 100644 --- a/go.sum +++ b/go.sum @@ -18,26 +18,12 @@ cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiy cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4= -github.com/Azure/azure-pipeline-go v0.2.2 h1:6oiIS9yaG6XCCzhgAgKFfIWyo4LLCiDhZot6ltoThhY= -github.com/Azure/azure-pipeline-go v0.2.2/go.mod h1:4rQ/NZncSvGqNkkOsNpOU1tgoNuIlp9AfUH5G1tvCHc= -github.com/Azure/azure-storage-blob-go v0.7.0 h1:MuueVOYkufCxJw5YZzF842DY2MBsp+hLuh2apKY0mck= -github.com/Azure/azure-storage-blob-go v0.7.0/go.mod h1:f9YQKtsG1nMisotuTPpO0tjNuEjKRYAcJU8/ydDI++4= -github.com/Azure/go-autorest/autorest v0.9.0 h1:MRvx8gncNaXJqOoLmhNjUAKh33JJF8LyxPhomEtOsjs= -github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= -github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= -github.com/Azure/go-autorest/autorest/adal v0.8.0 h1:CxTzQrySOxDnKpLjFJeZAS5Qrv/qFPkgLjx5bOAi//I= -github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= -github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= -github.com/Azure/go-autorest/autorest/date v0.2.0 h1:yW+Zlqf26583pE43KhfnhFcdmSWlm5Ew6bxipnr/tbM= -github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= -github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= -github.com/Azure/go-autorest/logger v0.1.0 h1:ruG4BSDXONFRrZZJ2GUXDiUyVpayPmb1GnWeHDdaNKY= -github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= -github.com/Azure/go-autorest/tracing v0.5.0 h1:TRn4WjSnkcSy5AEG3pnbtFSwNtwzjr4VYyQflFE619k= -github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= +github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1 h1:qoVeMsc9/fh/yhxVaA0obYjVH/oI/ihrOoMwsLS9KSA= +github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM= +github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3 h1:E+m3SkZCN0Bf5q7YdTs5lSm2CYY3CK4spn5OmUIiQtk= +github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0 h1:Px2UA+2RvSSvv+RvJNuUB6n7rs5Wsel4dXLe90Um2n4= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0/go.mod h1:tPaiy8S5bQ+S5sOiDlINkp7+Ef339+Nz5L5XO+cnOHo= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= @@ -52,7 +38,6 @@ github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 h1:fLjPD/aNc3UIO github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/VictoriaMetrics/fastcache v1.6.0 h1:C/3Oi3EiBCqufydp1neRZkqcwmEiuRT9c3fqvvgKm5o= github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw= -github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/agext/levenshtein v1.2.1 h1:QmvMAjj2aEICytGiWzmxoE0x2KZvE0fvmqMOfy2tjT8= github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= @@ -94,15 +79,10 @@ github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= -github.com/btcsuite/btcd v0.20.1-beta h1:Ik4hyJqN8Jfyv3S4AGBOmyouMsYE3EdYODkMbQjwPGw= -github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= -github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= -github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= -github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= -github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= -github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= -github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= +github.com/btcsuite/btcd/btcec/v2 v2.1.2 h1:YoYoC9J0jwfukodSBMzZYUVQ8PTiYg4BnOWiJVzTmLs= +github.com/btcsuite/btcd/btcec/v2 v2.1.2/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0 h1:MSskdM4/xJYcFzy0altH/C/xHopifpWzHUi1JeVI34Q= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34= github.com/cenkalti/backoff/v4 v4.1.1 h1:G2HAfAmvm/GcKan2oOQpBXOd2tT2G57ZnZGWa1PxPBQ= github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= @@ -132,21 +112,26 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:ma github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= -github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea h1:j4317fAZh7X6GqbFowYdYdI0L9bwxL07jyPZIdepyZ0= -github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ= +github.com/deckarep/golang-set v1.8.0 h1:sk9/l/KqpunDwP7pSjUg0keiOOLEnOBHzykLrsPppp4= +github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo= +github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= +github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1m5sE92cU+pd5Mcc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= github.com/deepmap/oapi-codegen v1.6.0/go.mod h1:ryDa9AgbELGeB+YEXE1dR53yAjHwFvE9iAUlWl9Al3M= github.com/deepmap/oapi-codegen v1.8.2 h1:SegyeYGcdi0jLLrpbCMoJxnUUn8GBXHsvr4rbzjuhfU= github.com/deepmap/oapi-codegen v1.8.2/go.mod h1:YLgSKSDv/bZQB7N4ws6luhozi3cEdRktEqrX88CvjIw= -github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91 h1:Izz0+t1Z5nI16/II7vuEo/nHjodOg0p7+OiDpjX5t1E= github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= +github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= +github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= +github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf h1:sh8rkQZavChcmakYiSlqu2425CHyFXLZZnvm7PDpU8M= github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/dop251/goja v0.0.0-20211011172007-d99e4b8cbf48 h1:iZOop7pqsg+56twTopWgwCGxdB5SI2yDO8Ti7eTRliQ= @@ -200,6 +185,8 @@ github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3a github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/golang-jwt/jwt/v4 v4.3.0 h1:kHL1vqdqWNfATmA0FNMdmZNMyZI1U6O31X4rlIPoBog= +github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -251,16 +238,16 @@ github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OI github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.5 h1:kxhtnfFVi+rYdOALN0B3k9UT86zVJKfBimRaciULW4I= -github.com/google/uuid v1.1.5/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.2.0 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs= +github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/graph-gophers/graphql-go v0.0.0-20201113091052-beb923fada29 h1:sezaKhEfPFg8W0Enm61B9Gs911H8iesGY5R8NDPtd1M= -github.com/graph-gophers/graphql-go v0.0.0-20201113091052-beb923fada29/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= +github.com/graph-gophers/graphql-go v1.3.0 h1:Eb9x/q6MFpCLz7jBCiP/WTxjSDrYLR1QY41SORZyNJ0= +github.com/graph-gophers/graphql-go v1.3.0/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= @@ -282,8 +269,8 @@ github.com/holiman/uint256 v1.2.0/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25 github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw= github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= -github.com/huin/goupnp v1.0.2 h1:RfGLP+h3mvisuWEyybxNq5Eft3NWhHLPeUN72kpKZoI= -github.com/huin/goupnp v1.0.2/go.mod h1:0dxJBVBHqTMjIUMkESDTNgOOx/Mw5wYIfyFmdzSamkM= +github.com/huin/goupnp v1.0.3-0.20220313090229-ca81a64b4204 h1:+EYBkW+dbi3F/atB+LSQZSWh7+HNrV3A/N0y6DSoy9k= +github.com/huin/goupnp v1.0.3-0.20220313090229-ca81a64b4204/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.11 h1:3tnifQM4i+fbajXKBHXWEH+KvNHqojZ778UH75j3bGA= @@ -303,14 +290,12 @@ github.com/influxdata/promql/v2 v2.12.0/go.mod h1:fxOPu+DY0bqCTCECchSRtWfc+0X19y github.com/influxdata/roaring v0.4.13-0.20180809181101-fc520f41fab6/go.mod h1:bSgUQ7q5ZLSO+bKBGqJiCBGAl+9DxyW63zLTujjUlOE= github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9/go.mod h1:Js0mqiSBE6Ffsg94weZZ2c+v/ciT8QRHFOap7EKDrR0= github.com/influxdata/usage-client v0.0.0-20160829180054-6d3895376368/go.mod h1:Wbbw6tYNvwa5dlB6304Sd+82Z3f7PmVZHVKU637d4po= -github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458 h1:6OvNmYgJyexcZ3pYbTI9jWx5tHo1Dee/tWbLMfPe2TA= -github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= +github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= +github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e h1:UvSe12bq+Uj2hWd8aOlwPmoZ+CITRFrdit+sDGfAg8U= github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e/go.mod h1:G1CVv03EnqU1wYL2dFwXxW2An0az9JTl/ZsqXQeBlkU= -github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= @@ -321,11 +306,10 @@ github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4d github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F6iIOGgxJ5npU/IUOhOhqlVrGjyIZc8/MagT0= -github.com/karalabe/usb v0.0.0-20211005121534-4c5740d64559 h1:0VWDXPNE0brOek1Q8bLfzKkvOzwbQE/snjGojlCr8CY= -github.com/karalabe/usb v0.0.0-20211005121534-4c5740d64559/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= +github.com/karalabe/usb v0.0.2 h1:M6QQBNxF+CQ8OFvxrT90BA0qBOXymndZnk5q235mFc4= +github.com/karalabe/usb v0.0.2/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= @@ -355,9 +339,6 @@ github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVc github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= -github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d h1:oNAwILwmgWKFpuU+dXvI6dl9jG2mAWAZLX3r9s0PPiw= -github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= @@ -388,6 +369,7 @@ github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/I github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/naoina/go-stringutil v0.1.0 h1:rCUeRUHjBjGTSHl0VC00jUPLz8/F9dDzYI70Hzifhks= @@ -400,11 +382,9 @@ github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= @@ -521,7 +501,6 @@ go.opentelemetry.io/proto/otlp v0.10.0/go.mod h1:zG20xCK0szZ1xdokeSOwEcmlXu+x9kk go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -561,6 +540,7 @@ golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKG golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -582,10 +562,12 @@ golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210220033124-5f55cee0dc0d/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d h1:20cMwl2fHAzkJMEA+8J4JgqBQcQGzbisXo31MIeenXI= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -599,7 +581,6 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -652,8 +633,9 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -685,6 +667,7 @@ golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200108203644-89082a384178/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -775,8 +758,9 @@ gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/graphql/graphql.go b/graphql/graphql.go index 16e0eb654d..cbd76465d6 100644 --- a/graphql/graphql.go +++ b/graphql/graphql.go @@ -28,6 +28,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/common/math" + "github.com/ethereum/go-ethereum/consensus/misc" "github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/eth/filters" @@ -100,6 +101,14 @@ func (a *Account) Balance(ctx context.Context) (hexutil.Big, error) { } func (a *Account) TransactionCount(ctx context.Context) (hexutil.Uint64, error) { + // Ask transaction pool for the nonce which includes pending transactions + if blockNr, ok := a.blockNrOrHash.Number(); ok && blockNr == rpc.PendingBlockNumber { + nonce, err := a.backend.GetPoolNonce(ctx, a.address) + if err != nil { + return 0, err + } + return hexutil.Uint64(nonce), nil + } state, err := a.getState(ctx) if err != nil { return 0, err @@ -245,6 +254,10 @@ func (t *Transaction) EffectiveGasPrice(ctx context.Context) (*hexutil.Big, erro if err != nil || tx == nil { return nil, err } + // Pending tx + if t.block == nil { + return nil, nil + } header, err := t.block.resolveHeader(ctx) if err != nil || header == nil { return nil, err @@ -285,6 +298,30 @@ func (t *Transaction) MaxPriorityFeePerGas(ctx context.Context) (*hexutil.Big, e } } +func (t *Transaction) EffectiveTip(ctx context.Context) (*hexutil.Big, error) { + tx, err := t.resolve(ctx) + if err != nil || tx == nil { + return nil, err + } + // Pending tx + if t.block == nil { + return nil, nil + } + header, err := t.block.resolveHeader(ctx) + if err != nil || header == nil { + return nil, err + } + if header.BaseFee == nil { + return (*hexutil.Big)(tx.GasPrice()), nil + } + + tip, err := tx.EffectiveGasTip(header.BaseFee) + if err != nil { + return nil, err + } + return (*hexutil.Big)(tip), nil +} + func (t *Transaction) Value(ctx context.Context) (hexutil.Big, error) { tx, err := t.resolve(ctx) if err != nil || tx == nil { @@ -598,6 +635,22 @@ func (b *Block) BaseFeePerGas(ctx context.Context) (*hexutil.Big, error) { return (*hexutil.Big)(header.BaseFee), nil } +func (b *Block) NextBaseFeePerGas(ctx context.Context) (*hexutil.Big, error) { + header, err := b.resolveHeader(ctx) + if err != nil { + return nil, err + } + chaincfg := b.backend.ChainConfig() + if header.BaseFee == nil { + // Make sure next block doesn't enable EIP-1559 + if !chaincfg.IsLondon(new(big.Int).Add(header.Number, common.Big1)) { + return nil, nil + } + } + nextBaseFee := misc.CalcBaseFee(chaincfg, header) + return (*hexutil.Big)(nextBaseFee), nil +} + func (b *Block) Parent(ctx context.Context) (*Block, error) { if _, err := b.resolveHeader(ctx); err != nil { return nil, err diff --git a/graphql/graphql_test.go b/graphql/graphql_test.go index 4e0f099e42..a0b7979069 100644 --- a/graphql/graphql_test.go +++ b/graphql/graphql_test.go @@ -48,6 +48,7 @@ func TestBuildSchema(t *testing.T) { conf := node.DefaultConfig conf.DataDir = ddir stack, err := node.New(&conf) + defer stack.Close() if err != nil { t.Fatalf("could not create new node: %v", err) } diff --git a/graphql/schema.go b/graphql/schema.go index 86060cd238..0013e7bae7 100644 --- a/graphql/schema.go +++ b/graphql/schema.go @@ -69,7 +69,7 @@ const schema string = ` transaction: Transaction! } - #EIP-2718 + #EIP-2718 type AccessTuple{ address: Address! storageKeys : [Bytes32!]! @@ -94,10 +94,12 @@ const schema string = ` value: BigInt! # GasPrice is the price offered to miners for gas, in wei per unit. gasPrice: BigInt! - # MaxFeePerGas is the maximum fee per gas offered to include a transaction, in wei. - maxFeePerGas: BigInt - # MaxPriorityFeePerGas is the maximum miner tip per gas offered to include a transaction, in wei. - maxPriorityFeePerGas: BigInt + # MaxFeePerGas is the maximum fee per gas offered to include a transaction, in wei. + maxFeePerGas: BigInt + # MaxPriorityFeePerGas is the maximum miner tip per gas offered to include a transaction, in wei. + maxPriorityFeePerGas: BigInt + # EffectiveTip is the actual amount of reward going to miner after considering the max fee cap. + effectiveTip: BigInt # Gas is the maximum amount of gas this transaction can consume. gas: Long! # InputData is the data supplied to the target of the transaction. @@ -187,8 +189,10 @@ const schema string = ` gasLimit: Long! # GasUsed is the amount of gas that was used executing transactions in this block. gasUsed: Long! - # BaseFeePerGas is the fee perunit of gas burned by the protocol in this block. - baseFeePerGas: BigInt + # BaseFeePerGas is the fee per unit of gas burned by the protocol in this block. + baseFeePerGas: BigInt + # NextBaseFeePerGas is the fee per unit of gas which needs to be burned in the next block. + nextBaseFeePerGas: BigInt # Timestamp is the unix timestamp at which this block was mined. timestamp: Long! # LogsBloom is a bloom filter that can be used to check if a block may @@ -244,10 +248,10 @@ const schema string = ` gas: Long # GasPrice is the price, in wei, offered for each unit of gas. gasPrice: BigInt - # MaxFeePerGas is the maximum fee per gas offered, in wei. - maxFeePerGas: BigInt - # MaxPriorityFeePerGas is the maximum miner tip per gas offered, in wei. - maxPriorityFeePerGas: BigInt + # MaxFeePerGas is the maximum fee per gas offered, in wei. + maxFeePerGas: BigInt + # MaxPriorityFeePerGas is the maximum miner tip per gas offered, in wei. + maxPriorityFeePerGas: BigInt # Value is the value, in wei, sent along with the call. value: BigInt # Data is the data sent to the callee. diff --git a/graphql/service.go b/graphql/service.go index bcb0a4990d..29d98ad746 100644 --- a/graphql/service.go +++ b/graphql/service.go @@ -74,7 +74,7 @@ func newHandler(stack *node.Node, backend ethapi.Backend, cors, vhosts []string) return err } h := handler{Schema: s} - handler := node.NewHTTPHandlerStack(h, cors, vhosts) + handler := node.NewHTTPHandlerStack(h, cors, vhosts, nil) stack.RegisterHandler("GraphQL UI", "/graphql/ui", GraphiQL{}) stack.RegisterHandler("GraphQL", "/graphql", handler) diff --git a/internal/build/azure.go b/internal/build/azure.go index 9c9cc2dcc5..9d1c4f300a 100644 --- a/internal/build/azure.go +++ b/internal/build/azure.go @@ -19,10 +19,9 @@ package build import ( "context" "fmt" - "net/url" "os" - "github.com/Azure/azure-storage-blob-go/azblob" + "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob" ) // AzureBlobstoreConfig is an authentication and configuration struct containing @@ -49,15 +48,11 @@ func AzureBlobstoreUpload(path string, name string, config AzureBlobstoreConfig) if err != nil { return err } - - pipeline := azblob.NewPipeline(credential, azblob.PipelineOptions{}) - - u, _ := url.Parse(fmt.Sprintf("https://%s.blob.core.windows.net", config.Account)) - service := azblob.NewServiceURL(*u, pipeline) - - container := service.NewContainerURL(config.Container) - blockblob := container.NewBlockBlobURL(name) - + u := fmt.Sprintf("https://%s.blob.core.windows.net/%s", config.Account, config.Container) + container, err := azblob.NewContainerClientWithSharedKey(u, credential, nil) + if err != nil { + return err + } // Stream the file to upload into the designated blobstore container in, err := os.Open(path) if err != nil { @@ -65,49 +60,41 @@ func AzureBlobstoreUpload(path string, name string, config AzureBlobstoreConfig) } defer in.Close() - _, err = blockblob.Upload(context.Background(), in, azblob.BlobHTTPHeaders{}, azblob.Metadata{}, azblob.BlobAccessConditions{}) + blockblob := container.NewBlockBlobClient(name) + _, err = blockblob.Upload(context.Background(), in, nil) return err } // AzureBlobstoreList lists all the files contained within an azure blobstore. -func AzureBlobstoreList(config AzureBlobstoreConfig) ([]azblob.BlobItem, error) { - credential := azblob.NewAnonymousCredential() - if len(config.Token) > 0 { - c, err := azblob.NewSharedKeyCredential(config.Account, config.Token) - if err != nil { - return nil, err - } - credential = c +func AzureBlobstoreList(config AzureBlobstoreConfig) ([]*azblob.BlobItemInternal, error) { + // Create an authenticated client against the Azure cloud + credential, err := azblob.NewSharedKeyCredential(config.Account, config.Token) + if err != nil { + return nil, err } - pipeline := azblob.NewPipeline(credential, azblob.PipelineOptions{}) - - u, _ := url.Parse(fmt.Sprintf("https://%s.blob.core.windows.net", config.Account)) - service := azblob.NewServiceURL(*u, pipeline) - - var allBlobs []azblob.BlobItem - // List all the blobs from the container and return them - container := service.NewContainerURL(config.Container) - nextMarker := azblob.Marker{} - for nextMarker.NotDone() { - res, err := container.ListBlobsFlatSegment(context.Background(), nextMarker, azblob.ListBlobsSegmentOptions{ - MaxResults: 5000, // The server only gives max 5K items - }) - if err != nil { - return nil, err - } - allBlobs = append(allBlobs, res.Segment.BlobItems...) - nextMarker = res.NextMarker - + u := fmt.Sprintf("https://%s.blob.core.windows.net/%s", config.Account, config.Container) + container, err := azblob.NewContainerClientWithSharedKey(u, credential, nil) + if err != nil { + return nil, err } - return allBlobs, nil + var maxResults int32 = 5000 + pager := container.ListBlobsFlat(&azblob.ContainerListBlobFlatSegmentOptions{ + Maxresults: &maxResults, + }) + var allBlobs []*azblob.BlobItemInternal + for pager.NextPage(context.Background()) { + res := pager.PageResponse() + allBlobs = append(allBlobs, res.ContainerListBlobFlatSegmentResult.Segment.BlobItems...) + } + return allBlobs, pager.Err() } // AzureBlobstoreDelete iterates over a list of files to delete and removes them // from the blobstore. -func AzureBlobstoreDelete(config AzureBlobstoreConfig, blobs []azblob.BlobItem) error { +func AzureBlobstoreDelete(config AzureBlobstoreConfig, blobs []*azblob.BlobItemInternal) error { if *DryRunFlag { for _, blob := range blobs { - fmt.Printf("would delete %s (%s) from %s/%s\n", blob.Name, blob.Properties.LastModified, config.Account, config.Container) + fmt.Printf("would delete %s (%s) from %s/%s\n", *blob.Name, blob.Properties.LastModified, config.Account, config.Container) } return nil } @@ -116,21 +103,18 @@ func AzureBlobstoreDelete(config AzureBlobstoreConfig, blobs []azblob.BlobItem) if err != nil { return err } - - pipeline := azblob.NewPipeline(credential, azblob.PipelineOptions{}) - - u, _ := url.Parse(fmt.Sprintf("https://%s.blob.core.windows.net", config.Account)) - service := azblob.NewServiceURL(*u, pipeline) - - container := service.NewContainerURL(config.Container) - + u := fmt.Sprintf("https://%s.blob.core.windows.net/%s", config.Account, config.Container) + container, err := azblob.NewContainerClientWithSharedKey(u, credential, nil) + if err != nil { + return err + } // Iterate over the blobs and delete them for _, blob := range blobs { - blockblob := container.NewBlockBlobURL(blob.Name) - if _, err := blockblob.Delete(context.Background(), azblob.DeleteSnapshotsOptionInclude, azblob.BlobAccessConditions{}); err != nil { + blockblob := container.NewBlockBlobClient(*blob.Name) + if _, err := blockblob.Delete(context.Background(), &azblob.DeleteBlobOptions{}); err != nil { return err } - fmt.Printf("deleted %s (%s)\n", blob.Name, blob.Properties.LastModified) + fmt.Printf("deleted %s (%s)\n", *blob.Name, blob.Properties.LastModified) } return nil } diff --git a/internal/build/download.go b/internal/build/download.go index 0ed0b5e130..efb223b327 100644 --- a/internal/build/download.go +++ b/internal/build/download.go @@ -58,7 +58,7 @@ func (db *ChecksumDB) Verify(path string) error { } fileHash := hex.EncodeToString(h.Sum(nil)) if !db.findHash(filepath.Base(path), fileHash) { - return fmt.Errorf("invalid file hash %s", fileHash) + return fmt.Errorf("invalid file hash %s for %s", fileHash, filepath.Base(path)) } return nil } diff --git a/internal/build/util.go b/internal/build/util.go index 2bdced82ee..cd6db09d00 100644 --- a/internal/build/util.go +++ b/internal/build/util.go @@ -17,6 +17,7 @@ package build import ( + "bufio" "bytes" "flag" "fmt" @@ -31,6 +32,7 @@ import ( "path/filepath" "strings" "text/template" + "time" ) var DryRunFlag = flag.Bool("n", false, "dry run, don't execute commands") @@ -115,7 +117,6 @@ func render(tpl *template.Template, outputFile string, outputPerm os.FileMode, x // the form sftp://[user@]host[:port]. func UploadSFTP(identityFile, host, dir string, files []string) error { sftp := exec.Command("sftp") - sftp.Stdout = nil sftp.Stderr = os.Stderr if identityFile != "" { sftp.Args = append(sftp.Args, "-i", identityFile) @@ -130,6 +131,10 @@ func UploadSFTP(identityFile, host, dir string, files []string) error { if err != nil { return fmt.Errorf("can't create stdin pipe for sftp: %v", err) } + stdout, err := sftp.StdoutPipe() + if err != nil { + return fmt.Errorf("can't create stdout pipe for sftp: %v", err) + } if err := sftp.Start(); err != nil { return err } @@ -137,8 +142,35 @@ func UploadSFTP(identityFile, host, dir string, files []string) error { for _, f := range files { fmt.Fprintln(in, "put", f, path.Join(dir, filepath.Base(f))) } + fmt.Fprintln(in, "exit") + // Some issue with the PPA sftp server makes it so the server does not + // respond properly to a 'bye', 'exit' or 'quit' from the client. + // To work around that, we check the output, and when we see the client + // exit command, we do a hard exit. + // See + // https://github.com/kolban-google/sftp-gcs/issues/23 + // https://github.com/mscdex/ssh2/pull/1111 + aborted := false + go func() { + scanner := bufio.NewScanner(stdout) + for scanner.Scan() { + txt := scanner.Text() + fmt.Println(txt) + if txt == "sftp> exit" { + // Give it .5 seconds to exit (server might be fixed), then + // hard kill it from the outside + time.Sleep(500 * time.Millisecond) + aborted = true + sftp.Process.Kill() + } + } + }() stdin.Close() - return sftp.Wait() + err = sftp.Wait() + if aborted { + return nil + } + return err } // FindMainPackages finds all 'main' packages in the given directory and returns their diff --git a/internal/cli/server/config.go b/internal/cli/server/config.go index b4c0835db4..06ec8c16af 100644 --- a/internal/cli/server/config.go +++ b/internal/cli/server/config.go @@ -723,7 +723,7 @@ func (c *Config) buildEth(stack *node.Node) (*ethconfig.Config, error) { // whitelist { - n.Whitelist = map[uint64]common.Hash{} + n.PeerRequiredBlocks = map[uint64]common.Hash{} for k, v := range c.Whitelist { number, err := strconv.ParseUint(k, 0, 64) if err != nil { @@ -733,7 +733,7 @@ func (c *Config) buildEth(stack *node.Node) (*ethconfig.Config, error) { if err = hash.UnmarshalText([]byte(v)); err != nil { return nil, fmt.Errorf("invalid whitelist hash %s: %v", v, err) } - n.Whitelist[number] = hash + n.PeerRequiredBlocks[number] = hash } } diff --git a/internal/ethapi/api.go b/internal/ethapi/api.go index 6e9c2a098d..15536d5d72 100644 --- a/internal/ethapi/api.go +++ b/internal/ethapi/api.go @@ -288,7 +288,7 @@ func NewPrivateAccountAPI(b Backend, nonceLock *AddrLocker) *PrivateAccountAPI { } } -// listAccounts will return a list of addresses for accounts this node manages. +// ListAccounts will return a list of addresses for accounts this node manages. func (s *PrivateAccountAPI) ListAccounts() []common.Address { return s.am.Accounts() } @@ -855,8 +855,7 @@ func (s *PublicBlockChainAPI) GetBlockByHash(ctx context.Context, hash common.Ha return nil, err } -// GetUncleByBlockNumberAndIndex returns the uncle block for the given block hash and index. When fullTx is true -// all transactions in the block are returned in full detail, otherwise only the transaction hash is returned. +// GetUncleByBlockNumberAndIndex returns the uncle block for the given block hash and index. func (s *PublicBlockChainAPI) GetUncleByBlockNumberAndIndex(ctx context.Context, blockNr rpc.BlockNumber, index hexutil.Uint) (map[string]interface{}, error) { block, err := s.b.BlockByNumber(ctx, blockNr) if block != nil { @@ -871,8 +870,7 @@ func (s *PublicBlockChainAPI) GetUncleByBlockNumberAndIndex(ctx context.Context, return nil, err } -// GetUncleByBlockHashAndIndex returns the uncle block for the given block hash and index. When fullTx is true -// all transactions in the block are returned in full detail, otherwise only the transaction hash is returned. +// GetUncleByBlockHashAndIndex returns the uncle block for the given block hash and index. func (s *PublicBlockChainAPI) GetUncleByBlockHashAndIndex(ctx context.Context, blockHash common.Hash, index hexutil.Uint) (map[string]interface{}, error) { block, err := s.b.BlockByHash(ctx, blockHash) if block != nil { @@ -1520,8 +1518,9 @@ func AccessList(ctx context.Context, b Backend, blockNrOrHash rpc.BlockNumberOrH } else { to = crypto.CreateAddress(args.from(), uint64(*args.Nonce)) } + isPostMerge := header.Difficulty.Cmp(common.Big0) == 0 // Retrieve the precompiles since they don't need to be added to the access list - precompiles := vm.ActivePrecompiles(b.ChainConfig().Rules(header.Number)) + precompiles := vm.ActivePrecompiles(b.ChainConfig().Rules(header.Number, isPostMerge)) // Create an initial tracer prevTracer := logger.NewAccessListTracer(nil, args.from(), to, precompiles) @@ -1780,7 +1779,7 @@ func (s *PublicTransactionPoolAPI) GetTransactionReceipt(ctx context.Context, ha fields["status"] = hexutil.Uint(receipt.Status) } if receipt.Logs == nil { - fields["logs"] = [][]*types.Log{} + fields["logs"] = []*types.Log{} } // If the ContractAddress is 20 0x0 bytes, assume it is not a contract creation if receipt.ContractAddress != (common.Address{}) { diff --git a/internal/ethapi/transaction_args.go b/internal/ethapi/transaction_args.go index 2d08d3008f..9c5950af58 100644 --- a/internal/ethapi/transaction_args.go +++ b/internal/ethapi/transaction_args.go @@ -55,20 +55,20 @@ type TransactionArgs struct { } // from retrieves the transaction sender address. -func (arg *TransactionArgs) from() common.Address { - if arg.From == nil { +func (args *TransactionArgs) from() common.Address { + if args.From == nil { return common.Address{} } - return *arg.From + return *args.From } // data retrieves the transaction calldata. Input field is preferred. -func (arg *TransactionArgs) data() []byte { - if arg.Input != nil { - return *arg.Input +func (args *TransactionArgs) data() []byte { + if args.Input != nil { + return *args.Input } - if arg.Data != nil { - return *arg.Data + if args.Data != nil { + return *args.Data } return nil } diff --git a/internal/flags/helpers.go b/internal/flags/helpers.go index 43bbcf0201..095df03807 100644 --- a/internal/flags/helpers.go +++ b/internal/flags/helpers.go @@ -51,7 +51,7 @@ OPTIONS: AppHelpTemplate = `NAME: {{.App.Name}} - {{.App.Usage}} - Copyright 2013-2021 The go-ethereum Authors + Copyright 2013-2022 The go-ethereum Authors USAGE: {{.App.HelpName}} [options]{{if .App.Commands}} [command] [command options]{{end}} {{if .App.ArgsUsage}}{{.App.ArgsUsage}}{{else}}[arguments...]{{end}} @@ -77,7 +77,7 @@ COPYRIGHT: ClefAppHelpTemplate = `NAME: {{.App.Name}} - {{.App.Usage}} - Copyright 2013-2021 The go-ethereum Authors + Copyright 2013-2022 The go-ethereum Authors USAGE: {{.App.HelpName}} [options]{{if .App.Commands}} command [command options]{{end}} {{if .App.ArgsUsage}}{{.App.ArgsUsage}}{{else}}[arguments...]{{end}} @@ -143,6 +143,7 @@ func FlagCategory(flag cli.Flag, flagGroups []FlagGroup) string { // NewApp creates an app with sane defaults. func NewApp(gitCommit, gitDate, usage string) *cli.App { app := cli.NewApp() + app.EnableBashCompletion = true app.Name = filepath.Base(os.Args[0]) app.Author = "" app.Email = "" diff --git a/internal/jsre/jsre_test.go b/internal/jsre/jsre_test.go index bc38f7a44a..57acdaed90 100644 --- a/internal/jsre/jsre_test.go +++ b/internal/jsre/jsre_test.go @@ -83,20 +83,20 @@ func TestNatto(t *testing.T) { err := jsre.Exec("test.js") if err != nil { - t.Errorf("expected no error, got %v", err) + t.Fatalf("expected no error, got %v", err) } time.Sleep(100 * time.Millisecond) val, err := jsre.Run("msg") if err != nil { - t.Errorf("expected no error, got %v", err) + t.Fatalf("expected no error, got %v", err) } if val.ExportType().Kind() != reflect.String { - t.Errorf("expected string value, got %v", val) + t.Fatalf("expected string value, got %v", val) } exp := "testMsg" got := val.ToString().String() if exp != got { - t.Errorf("expected '%v', got '%v'", exp, got) + t.Fatalf("expected '%v', got '%v'", exp, got) } jsre.Stop(false) } diff --git a/internal/web3ext/web3ext.go b/internal/web3ext/web3ext.go index 8b2f64b44c..dd8b34e025 100644 --- a/internal/web3ext/web3ext.go +++ b/internal/web3ext/web3ext.go @@ -584,6 +584,11 @@ web3._extend({ params: 3, inputFormatter: [null, web3._extend.formatters.inputBlockNumberFormatter, null] }), + new web3._extend.Method({ + name: 'getLogs', + call: 'eth_getLogs', + params: 1, + }), ], properties: [ new web3._extend.Property({ diff --git a/les/catalyst/api.go b/les/catalyst/api.go new file mode 100644 index 0000000000..141df0585b --- /dev/null +++ b/les/catalyst/api.go @@ -0,0 +1,189 @@ +// Copyright 2022 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +// Package catalyst implements the temporary eth1/eth2 RPC integration. +package catalyst + +import ( + "errors" + "fmt" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/beacon" + "github.com/ethereum/go-ethereum/les" + "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/node" + "github.com/ethereum/go-ethereum/rpc" +) + +// Register adds catalyst APIs to the light client. +func Register(stack *node.Node, backend *les.LightEthereum) error { + log.Warn("Catalyst mode enabled", "protocol", "les") + stack.RegisterAPIs([]rpc.API{ + { + Namespace: "engine", + Version: "1.0", + Service: NewConsensusAPI(backend), + Public: true, + Authenticated: true, + }, + }) + return nil +} + +type ConsensusAPI struct { + les *les.LightEthereum +} + +// NewConsensusAPI creates a new consensus api for the given backend. +// The underlying blockchain needs to have a valid terminal total difficulty set. +func NewConsensusAPI(les *les.LightEthereum) *ConsensusAPI { + if les.BlockChain().Config().TerminalTotalDifficulty == nil { + panic("Catalyst started without valid total difficulty") + } + return &ConsensusAPI{les: les} +} + +// ForkchoiceUpdatedV1 has several responsibilities: +// If the method is called with an empty head block: +// we return success, which can be used to check if the catalyst mode is enabled +// If the total difficulty was not reached: +// we return INVALID +// If the finalizedBlockHash is set: +// we check if we have the finalizedBlockHash in our db, if not we start a sync +// We try to set our blockchain to the headBlock +// If there are payloadAttributes: +// we return an error since block creation is not supported in les mode +func (api *ConsensusAPI) ForkchoiceUpdatedV1(heads beacon.ForkchoiceStateV1, payloadAttributes *beacon.PayloadAttributesV1) (beacon.ForkChoiceResponse, error) { + if heads.HeadBlockHash == (common.Hash{}) { + log.Warn("Forkchoice requested update to zero hash") + return beacon.STATUS_INVALID, nil // TODO(karalabe): Why does someone send us this? + } + if err := api.checkTerminalTotalDifficulty(heads.HeadBlockHash); err != nil { + if header := api.les.BlockChain().GetHeaderByHash(heads.HeadBlockHash); header == nil { + // TODO (MariusVanDerWijden) trigger sync + return beacon.STATUS_SYNCING, nil + } + return beacon.STATUS_INVALID, err + } + // If the finalized block is set, check if it is in our blockchain + if heads.FinalizedBlockHash != (common.Hash{}) { + if header := api.les.BlockChain().GetHeaderByHash(heads.FinalizedBlockHash); header == nil { + // TODO (MariusVanDerWijden) trigger sync + return beacon.STATUS_SYNCING, nil + } + } + // SetHead + if err := api.setHead(heads.HeadBlockHash); err != nil { + return beacon.STATUS_INVALID, err + } + if payloadAttributes != nil { + return beacon.STATUS_INVALID, errors.New("not supported") + } + return api.validForkChoiceResponse(), nil +} + +// GetPayloadV1 returns a cached payload by id. It's not supported in les mode. +func (api *ConsensusAPI) GetPayloadV1(payloadID beacon.PayloadID) (*beacon.ExecutableDataV1, error) { + return nil, &beacon.GenericServerError +} + +// ExecutePayloadV1 creates an Eth1 block, inserts it in the chain, and returns the status of the chain. +func (api *ConsensusAPI) ExecutePayloadV1(params beacon.ExecutableDataV1) (beacon.PayloadStatusV1, error) { + block, err := beacon.ExecutableDataToBlock(params) + if err != nil { + return api.invalid(), err + } + if !api.les.BlockChain().HasHeader(block.ParentHash(), block.NumberU64()-1) { + /* + TODO (MariusVanDerWijden) reenable once sync is merged + if err := api.eth.Downloader().BeaconSync(api.eth.SyncMode(), block.Header()); err != nil { + return SYNCING, err + } + */ + // TODO (MariusVanDerWijden) we should return nil here not empty hash + return beacon.PayloadStatusV1{Status: beacon.SYNCING, LatestValidHash: nil}, nil + } + parent := api.les.BlockChain().GetHeaderByHash(params.ParentHash) + if parent == nil { + return api.invalid(), fmt.Errorf("could not find parent %x", params.ParentHash) + } + td := api.les.BlockChain().GetTd(parent.Hash(), block.NumberU64()-1) + ttd := api.les.BlockChain().Config().TerminalTotalDifficulty + if td.Cmp(ttd) < 0 { + return api.invalid(), fmt.Errorf("can not execute payload on top of block with low td got: %v threshold %v", td, ttd) + } + if err = api.les.BlockChain().InsertHeader(block.Header()); err != nil { + return api.invalid(), err + } + if merger := api.les.Merger(); !merger.TDDReached() { + merger.ReachTTD() + } + hash := block.Hash() + return beacon.PayloadStatusV1{Status: beacon.VALID, LatestValidHash: &hash}, nil +} + +func (api *ConsensusAPI) validForkChoiceResponse() beacon.ForkChoiceResponse { + currentHash := api.les.BlockChain().CurrentHeader().Hash() + return beacon.ForkChoiceResponse{ + PayloadStatus: beacon.PayloadStatusV1{Status: beacon.VALID, LatestValidHash: ¤tHash}, + } +} + +// invalid returns a response "INVALID" with the latest valid hash set to the current head. +func (api *ConsensusAPI) invalid() beacon.PayloadStatusV1 { + currentHash := api.les.BlockChain().CurrentHeader().Hash() + return beacon.PayloadStatusV1{Status: beacon.INVALID, LatestValidHash: ¤tHash} +} + +func (api *ConsensusAPI) checkTerminalTotalDifficulty(head common.Hash) error { + // shortcut if we entered PoS already + if api.les.Merger().PoSFinalized() { + return nil + } + // make sure the parent has enough terminal total difficulty + header := api.les.BlockChain().GetHeaderByHash(head) + if header == nil { + return &beacon.GenericServerError + } + td := api.les.BlockChain().GetTd(header.Hash(), header.Number.Uint64()) + if td != nil && td.Cmp(api.les.BlockChain().Config().TerminalTotalDifficulty) < 0 { + return &beacon.InvalidTB + } + return nil +} + +// setHead is called to perform a force choice. +func (api *ConsensusAPI) setHead(newHead common.Hash) error { + log.Info("Setting head", "head", newHead) + + headHeader := api.les.BlockChain().CurrentHeader() + if headHeader.Hash() == newHead { + return nil + } + newHeadHeader := api.les.BlockChain().GetHeaderByHash(newHead) + if newHeadHeader == nil { + return &beacon.GenericServerError + } + if err := api.les.BlockChain().SetChainHead(newHeadHeader); err != nil { + return err + } + // Trigger the transition if it's the first `NewHead` event. + if merger := api.les.Merger(); !merger.PoSFinalized() { + merger.FinalizePoS() + } + return nil +} diff --git a/les/catalyst/api_test.go b/les/catalyst/api_test.go new file mode 100644 index 0000000000..c1cbf645cc --- /dev/null +++ b/les/catalyst/api_test.go @@ -0,0 +1,244 @@ +// Copyright 2020 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package catalyst + +import ( + "math/big" + "testing" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/consensus/ethash" + "github.com/ethereum/go-ethereum/core" + "github.com/ethereum/go-ethereum/core/beacon" + "github.com/ethereum/go-ethereum/core/rawdb" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/eth/downloader" + "github.com/ethereum/go-ethereum/eth/ethconfig" + "github.com/ethereum/go-ethereum/les" + "github.com/ethereum/go-ethereum/node" + "github.com/ethereum/go-ethereum/params" + "github.com/ethereum/go-ethereum/trie" +) + +var ( + // testKey is a private key to use for funding a tester account. + testKey, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291") + + // testAddr is the Ethereum address of the tester account. + testAddr = crypto.PubkeyToAddress(testKey.PublicKey) + + testBalance = big.NewInt(2e18) +) + +func generatePreMergeChain(n int) (*core.Genesis, []*types.Header, []*types.Block) { + db := rawdb.NewMemoryDatabase() + config := params.AllEthashProtocolChanges + genesis := &core.Genesis{ + Config: config, + Alloc: core.GenesisAlloc{testAddr: {Balance: testBalance}}, + ExtraData: []byte("test genesis"), + Timestamp: 9000, + BaseFee: big.NewInt(params.InitialBaseFee), + } + gblock := genesis.ToBlock(db) + engine := ethash.NewFaker() + blocks, _ := core.GenerateChain(config, gblock, engine, db, n, nil) + totalDifficulty := big.NewInt(0) + + var headers []*types.Header + for _, b := range blocks { + totalDifficulty.Add(totalDifficulty, b.Difficulty()) + headers = append(headers, b.Header()) + } + config.TerminalTotalDifficulty = totalDifficulty + + return genesis, headers, blocks +} + +func TestSetHeadBeforeTotalDifficulty(t *testing.T) { + genesis, headers, blocks := generatePreMergeChain(10) + n, lesService := startLesService(t, genesis, headers) + defer n.Close() + + api := NewConsensusAPI(lesService) + fcState := beacon.ForkchoiceStateV1{ + HeadBlockHash: blocks[5].Hash(), + SafeBlockHash: common.Hash{}, + FinalizedBlockHash: common.Hash{}, + } + if _, err := api.ForkchoiceUpdatedV1(fcState, nil); err == nil { + t.Errorf("fork choice updated before total terminal difficulty should fail") + } +} + +func TestExecutePayloadV1(t *testing.T) { + genesis, headers, blocks := generatePreMergeChain(10) + n, lesService := startLesService(t, genesis, headers[:9]) + lesService.Merger().ReachTTD() + defer n.Close() + + api := NewConsensusAPI(lesService) + fcState := beacon.ForkchoiceStateV1{ + HeadBlockHash: blocks[8].Hash(), + SafeBlockHash: common.Hash{}, + FinalizedBlockHash: common.Hash{}, + } + if _, err := api.ForkchoiceUpdatedV1(fcState, nil); err != nil { + t.Errorf("Failed to update head %v", err) + } + block := blocks[9] + + fakeBlock := types.NewBlock(&types.Header{ + ParentHash: block.ParentHash(), + UncleHash: crypto.Keccak256Hash(nil), + Coinbase: block.Coinbase(), + Root: block.Root(), + TxHash: crypto.Keccak256Hash(nil), + ReceiptHash: crypto.Keccak256Hash(nil), + Bloom: block.Bloom(), + Difficulty: big.NewInt(0), + Number: block.Number(), + GasLimit: block.GasLimit(), + GasUsed: block.GasUsed(), + Time: block.Time(), + Extra: block.Extra(), + MixDigest: block.MixDigest(), + Nonce: types.BlockNonce{}, + BaseFee: block.BaseFee(), + }, nil, nil, nil, trie.NewStackTrie(nil)) + + _, err := api.ExecutePayloadV1(beacon.ExecutableDataV1{ + ParentHash: fakeBlock.ParentHash(), + FeeRecipient: fakeBlock.Coinbase(), + StateRoot: fakeBlock.Root(), + ReceiptsRoot: fakeBlock.ReceiptHash(), + LogsBloom: fakeBlock.Bloom().Bytes(), + Random: fakeBlock.MixDigest(), + Number: fakeBlock.NumberU64(), + GasLimit: fakeBlock.GasLimit(), + GasUsed: fakeBlock.GasUsed(), + Timestamp: fakeBlock.Time(), + ExtraData: fakeBlock.Extra(), + BaseFeePerGas: fakeBlock.BaseFee(), + BlockHash: fakeBlock.Hash(), + Transactions: encodeTransactions(fakeBlock.Transactions()), + }) + if err != nil { + t.Errorf("Failed to execute payload %v", err) + } + headHeader := api.les.BlockChain().CurrentHeader() + if headHeader.Number.Uint64() != fakeBlock.NumberU64()-1 { + t.Fatal("Unexpected chain head update") + } + fcState = beacon.ForkchoiceStateV1{ + HeadBlockHash: fakeBlock.Hash(), + SafeBlockHash: common.Hash{}, + FinalizedBlockHash: common.Hash{}, + } + if _, err := api.ForkchoiceUpdatedV1(fcState, nil); err != nil { + t.Fatal("Failed to update head") + } + headHeader = api.les.BlockChain().CurrentHeader() + if headHeader.Number.Uint64() != fakeBlock.NumberU64() { + t.Fatal("Failed to update chain head") + } +} + +func TestEth2DeepReorg(t *testing.T) { + // TODO (MariusVanDerWijden) TestEth2DeepReorg is currently broken, because it tries to reorg + // before the totalTerminalDifficulty threshold + /* + genesis, preMergeBlocks := generatePreMergeChain(core.TriesInMemory * 2) + n, ethservice := startEthService(t, genesis, preMergeBlocks) + defer n.Close() + + var ( + api = NewConsensusAPI(ethservice, nil) + parent = preMergeBlocks[len(preMergeBlocks)-core.TriesInMemory-1] + head = ethservice.BlockChain().CurrentBlock().NumberU64() + ) + if ethservice.BlockChain().HasBlockAndState(parent.Hash(), parent.NumberU64()) { + t.Errorf("Block %d not pruned", parent.NumberU64()) + } + for i := 0; i < 10; i++ { + execData, err := api.assembleBlock(AssembleBlockParams{ + ParentHash: parent.Hash(), + Timestamp: parent.Time() + 5, + }) + if err != nil { + t.Fatalf("Failed to create the executable data %v", err) + } + block, err := ExecutableDataToBlock(ethservice.BlockChain().Config(), parent.Header(), *execData) + if err != nil { + t.Fatalf("Failed to convert executable data to block %v", err) + } + newResp, err := api.ExecutePayload(*execData) + if err != nil || newResp.Status != "VALID" { + t.Fatalf("Failed to insert block: %v", err) + } + if ethservice.BlockChain().CurrentBlock().NumberU64() != head { + t.Fatalf("Chain head shouldn't be updated") + } + if err := api.setHead(block.Hash()); err != nil { + t.Fatalf("Failed to set head: %v", err) + } + if ethservice.BlockChain().CurrentBlock().NumberU64() != block.NumberU64() { + t.Fatalf("Chain head should be updated") + } + parent, head = block, block.NumberU64() + } + */ +} + +// startEthService creates a full node instance for testing. +func startLesService(t *testing.T, genesis *core.Genesis, headers []*types.Header) (*node.Node, *les.LightEthereum) { + t.Helper() + + n, err := node.New(&node.Config{}) + if err != nil { + t.Fatal("can't create node:", err) + } + ethcfg := ðconfig.Config{ + Genesis: genesis, + Ethash: ethash.Config{PowMode: ethash.ModeFake}, + SyncMode: downloader.LightSync, + TrieDirtyCache: 256, + TrieCleanCache: 256, + LightPeers: 10, + } + lesService, err := les.New(n, ethcfg) + if err != nil { + t.Fatal("can't create eth service:", err) + } + if err := n.Start(); err != nil { + t.Fatal("can't start node:", err) + } + if _, err := lesService.BlockChain().InsertHeaderChain(headers, 0); err != nil { + n.Close() + t.Fatal("can't import test headers:", err) + } + return n, lesService +} + +func encodeTransactions(txs []*types.Transaction) [][]byte { + var enc = make([][]byte, len(txs)) + for i, tx := range txs { + enc[i], _ = tx.MarshalBinary() + } + return enc +} diff --git a/les/client.go b/les/client.go index 13000488b3..87d4f00dad 100644 --- a/les/client.go +++ b/les/client.go @@ -115,7 +115,7 @@ func New(stack *node.Node, config *ethconfig.Config) (*LightEthereum, error) { reqDist: newRequestDistributor(peers, &mclock.System{}), accountManager: stack.AccountManager(), merger: merger, - engine: nil, + engine: ethconfig.CreateConsensusEngine(stack, chainConfig, config, nil, false, chainDb, nil), bloomRequests: make(chan chan *bloombits.Retrieval), bloomIndexer: core.NewBloomIndexer(chainDb, params.BloomBitsBlocksClient, params.HelperTrieConfirmations), p2pServer: stack.Server(), diff --git a/les/peer.go b/les/peer.go index c6c672942b..499429739d 100644 --- a/les/peer.go +++ b/les/peer.go @@ -213,7 +213,7 @@ func (p *peerCommons) sendReceiveHandshake(sendList keyValueList) (keyValueList, ) // Send out own handshake in a new thread go func() { - errc <- p2p.Send(p.rw, StatusMsg, sendList) + errc <- p2p.Send(p.rw, StatusMsg, &sendList) }() go func() { // In the mean time retrieve the remote status message @@ -421,7 +421,7 @@ func sendRequest(w p2p.MsgWriter, msgcode, reqID uint64, data interface{}) error ReqID uint64 Data interface{} } - return p2p.Send(w, msgcode, req{reqID, data}) + return p2p.Send(w, msgcode, &req{reqID, data}) } func (p *serverPeer) sendRequest(msgcode, reqID uint64, data interface{}, amount int) error { @@ -871,7 +871,7 @@ func (r *reply) send(bv uint64) error { ReqID, BV uint64 Data rlp.RawValue } - return p2p.Send(r.w, r.msgcode, resp{r.reqID, bv, r.data}) + return p2p.Send(r.w, r.msgcode, &resp{r.reqID, bv, r.data}) } // size returns the RLP encoded size of the message data diff --git a/les/test_helper.go b/les/test_helper.go index 10367ea800..480d249dca 100644 --- a/les/test_helper.go +++ b/les/test_helper.go @@ -356,7 +356,7 @@ func (p *testPeer) handshakeWithServer(t *testing.T, td *big.Int, head common.Ha if err := p2p.ExpectMsg(p.app, StatusMsg, nil); err != nil { t.Fatalf("status recv: %v", err) } - if err := p2p.Send(p.app, StatusMsg, sendList); err != nil { + if err := p2p.Send(p.app, StatusMsg, &sendList); err != nil { t.Fatalf("status send: %v", err) } } @@ -389,7 +389,7 @@ func (p *testPeer) handshakeWithClient(t *testing.T, td *big.Int, head common.Ha if err := p2p.ExpectMsg(p.app, StatusMsg, nil); err != nil { t.Fatalf("status recv: %v", err) } - if err := p2p.Send(p.app, StatusMsg, sendList); err != nil { + if err := p2p.Send(p.app, StatusMsg, &sendList); err != nil { t.Fatalf("status send: %v", err) } } diff --git a/les/vflux/client/fillset_test.go b/les/vflux/client/fillset_test.go index 58240682c6..ca5af8f07e 100644 --- a/les/vflux/client/fillset_test.go +++ b/les/vflux/client/fillset_test.go @@ -34,16 +34,20 @@ type testIter struct { } func (i *testIter) Next() bool { - i.waitCh <- struct{}{} + if _, ok := <-i.waitCh; !ok { + return false + } i.node = <-i.nodeCh - return i.node != nil + return true } func (i *testIter) Node() *enode.Node { return i.node } -func (i *testIter) Close() {} +func (i *testIter) Close() { + close(i.waitCh) +} func (i *testIter) push() { var id enode.ID @@ -53,7 +57,7 @@ func (i *testIter) push() { func (i *testIter) waiting(timeout time.Duration) bool { select { - case <-i.waitCh: + case i.waitCh <- struct{}{}: return true case <-time.After(timeout): return false diff --git a/les/vflux/server/clientpool.go b/les/vflux/server/clientpool.go index 87d783ebab..805de2d41b 100644 --- a/les/vflux/server/clientpool.go +++ b/les/vflux/server/clientpool.go @@ -34,7 +34,7 @@ import ( var ( ErrNotConnected = errors.New("client not connected") ErrNoPriority = errors.New("priority too low to raise capacity") - ErrCantFindMaximum = errors.New("Unable to find maximum allowed capacity") + ErrCantFindMaximum = errors.New("unable to find maximum allowed capacity") ) // ClientPool implements a client database that assigns a priority to each client @@ -177,7 +177,7 @@ func (cp *ClientPool) Unregister(peer clientPeer) { cp.ns.SetField(peer.Node(), cp.setup.clientField, nil) } -// setConnectedBias sets the connection bias, which is applied to already connected clients +// SetConnectedBias sets the connection bias, which is applied to already connected clients // So that already connected client won't be kicked out very soon and we can ensure all // connected clients can have enough time to request or sync some data. func (cp *ClientPool) SetConnectedBias(bias time.Duration) { diff --git a/light/lightchain.go b/light/lightchain.go index 4ac5a749bd..ee4146a2d8 100644 --- a/light/lightchain.go +++ b/light/lightchain.go @@ -422,6 +422,9 @@ func (lc *LightChain) SetChainHead(header *types.Header) error { // In the case of a light chain, InsertHeaderChain also creates and posts light // chain events when necessary. func (lc *LightChain) InsertHeaderChain(chain []*types.Header, checkFreq int) (int, error) { + if len(chain) == 0 { + return 0, nil + } if atomic.LoadInt32(&lc.disableCheckFreq) == 1 { checkFreq = 0 } diff --git a/miner/miner.go b/miner/miner.go index c8aaa5b928..20e12c240e 100644 --- a/miner/miner.go +++ b/miner/miner.go @@ -35,10 +35,12 @@ import ( "github.com/ethereum/go-ethereum/params" ) -// Backend wraps all methods required for mining. +// Backend wraps all methods required for mining. Only full node is capable +// to offer all the functions here. type Backend interface { BlockChain() *core.BlockChain TxPool() *core.TxPool + StateAtBlock(block *types.Block, reexec uint64, base *state.StateDB, checkLive bool, preferDisk bool) (statedb *state.StateDB, err error) } // Config is the configuration parameters of mining. @@ -68,7 +70,7 @@ type Miner struct { wg sync.WaitGroup } -func New(eth Backend, config *Config, chainConfig *params.ChainConfig, mux *event.TypeMux, engine consensus.Engine, isLocalBlock func(header *types.Header) bool, merger *consensus.Merger) *Miner { +func New(eth Backend, config *Config, chainConfig *params.ChainConfig, mux *event.TypeMux, engine consensus.Engine, isLocalBlock func(header *types.Header) bool) *Miner { miner := &Miner{ eth: eth, mux: mux, @@ -76,7 +78,7 @@ func New(eth Backend, config *Config, chainConfig *params.ChainConfig, mux *even exitCh: make(chan struct{}), startCh: make(chan common.Address), stopCh: make(chan struct{}), - worker: newWorker(config, chainConfig, engine, eth, mux, isLocalBlock, true, merger), + worker: newWorker(config, chainConfig, engine, eth, mux, isLocalBlock, true), } miner.wg.Add(1) go miner.update() @@ -233,6 +235,12 @@ func (miner *Miner) DisablePreseal() { miner.worker.disablePreseal() } +// GetSealingBlock retrieves a sealing block based on the given parameters. +// The returned block is not sealed but all other fields should be filled. +func (miner *Miner) GetSealingBlock(parent common.Hash, timestamp uint64, coinbase common.Address, random common.Hash) (*types.Block, error) { + return miner.worker.getSealingBlock(parent, timestamp, coinbase, random) +} + // SubscribePendingLogs starts delivering logs from pending transactions // to the given channel. func (miner *Miner) SubscribePendingLogs(ch chan<- []*types.Log) event.Subscription { diff --git a/miner/miner_test.go b/miner/miner_test.go index de7ca73e26..56773101be 100644 --- a/miner/miner_test.go +++ b/miner/miner_test.go @@ -18,6 +18,7 @@ package miner import ( + "errors" "testing" "time" @@ -55,6 +56,10 @@ func (m *mockBackend) TxPool() *core.TxPool { return m.txPool } +func (m *mockBackend) StateAtBlock(block *types.Block, reexec uint64, base *state.StateDB, checkLive bool, preferDisk bool) (statedb *state.StateDB, err error) { + return nil, errors.New("not supported") +} + type testBlockChain struct { statedb *state.StateDB gasLimit uint64 @@ -80,7 +85,8 @@ func (bc *testBlockChain) SubscribeChainHeadEvent(ch chan<- core.ChainHeadEvent) } func TestMiner(t *testing.T) { - miner, mux := createMiner(t) + miner, mux, cleanup := createMiner(t) + defer cleanup(false) miner.Start(common.HexToAddress("0x12345")) waitForMiningState(t, miner, true) // Start the downloader @@ -107,7 +113,8 @@ func TestMiner(t *testing.T) { // An initial FailedEvent should allow mining to stop on a subsequent // downloader StartEvent. func TestMinerDownloaderFirstFails(t *testing.T) { - miner, mux := createMiner(t) + miner, mux, cleanup := createMiner(t) + defer cleanup(false) miner.Start(common.HexToAddress("0x12345")) waitForMiningState(t, miner, true) // Start the downloader @@ -138,8 +145,8 @@ func TestMinerDownloaderFirstFails(t *testing.T) { } func TestMinerStartStopAfterDownloaderEvents(t *testing.T) { - miner, mux := createMiner(t) - + miner, mux, cleanup := createMiner(t) + defer cleanup(false) miner.Start(common.HexToAddress("0x12345")) waitForMiningState(t, miner, true) // Start the downloader @@ -161,7 +168,8 @@ func TestMinerStartStopAfterDownloaderEvents(t *testing.T) { } func TestStartWhileDownload(t *testing.T) { - miner, mux := createMiner(t) + miner, mux, cleanup := createMiner(t) + defer cleanup(false) waitForMiningState(t, miner, false) miner.Start(common.HexToAddress("0x12345")) waitForMiningState(t, miner, true) @@ -174,16 +182,19 @@ func TestStartWhileDownload(t *testing.T) { } func TestStartStopMiner(t *testing.T) { - miner, _ := createMiner(t) + miner, _, cleanup := createMiner(t) + defer cleanup(false) waitForMiningState(t, miner, false) miner.Start(common.HexToAddress("0x12345")) waitForMiningState(t, miner, true) miner.Stop() waitForMiningState(t, miner, false) + } func TestCloseMiner(t *testing.T) { - miner, _ := createMiner(t) + miner, _, cleanup := createMiner(t) + defer cleanup(true) waitForMiningState(t, miner, false) miner.Start(common.HexToAddress("0x12345")) waitForMiningState(t, miner, true) @@ -195,7 +206,8 @@ func TestCloseMiner(t *testing.T) { // TestMinerSetEtherbase checks that etherbase becomes set even if mining isn't // possible at the moment func TestMinerSetEtherbase(t *testing.T) { - miner, mux := createMiner(t) + miner, mux, cleanup := createMiner(t) + defer cleanup(false) // Start with a 'bad' mining address miner.Start(common.HexToAddress("0xdead")) waitForMiningState(t, miner, true) @@ -230,7 +242,7 @@ func waitForMiningState(t *testing.T, m *Miner, mining bool) { t.Fatalf("Mining() == %t, want %t", state, mining) } -func createMiner(t *testing.T) (*Miner, *event.TypeMux) { +func createMiner(t *testing.T) (*Miner, *event.TypeMux, func(skipMiner bool)) { // Create Ethash config config := Config{ Etherbase: common.HexToAddress("123456789"), @@ -259,5 +271,14 @@ func createMiner(t *testing.T) (*Miner, *event.TypeMux) { // Create event Mux mux := new(event.TypeMux) // Create Miner - return New(backend, &config, chainConfig, mux, engine, nil, merger), mux + miner := New(backend, &config, chainConfig, mux, engine, nil) + cleanup := func(skipMiner bool) { + bc.Stop() + engine.Close() + pool.Stop() + if !skipMiner { + miner.Close() + } + } + return miner, mux, cleanup } diff --git a/miner/stress/beacon/main.go b/miner/stress/beacon/main.go index 70005e20db..ccb7279b04 100644 --- a/miner/stress/beacon/main.go +++ b/miner/stress/beacon/main.go @@ -32,13 +32,15 @@ import ( "github.com/ethereum/go-ethereum/common/fdlimit" "github.com/ethereum/go-ethereum/consensus/ethash" "github.com/ethereum/go-ethereum/core" + "github.com/ethereum/go-ethereum/core/beacon" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/eth" - "github.com/ethereum/go-ethereum/eth/catalyst" + ethcatalyst "github.com/ethereum/go-ethereum/eth/catalyst" "github.com/ethereum/go-ethereum/eth/downloader" "github.com/ethereum/go-ethereum/eth/ethconfig" "github.com/ethereum/go-ethereum/les" + lescatalyst "github.com/ethereum/go-ethereum/les/catalyst" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/miner" "github.com/ethereum/go-ethereum/node" @@ -88,24 +90,26 @@ var ( type ethNode struct { typ nodetype - api *catalyst.ConsensusAPI - ethBackend *eth.Ethereum - lesBackend *les.LightEthereum stack *node.Node enode *enode.Node + api *ethcatalyst.ConsensusAPI + ethBackend *eth.Ethereum + lapi *lescatalyst.ConsensusAPI + lesBackend *les.LightEthereum } func newNode(typ nodetype, genesis *core.Genesis, enodes []*enode.Node) *ethNode { var ( err error - api *catalyst.ConsensusAPI + api *ethcatalyst.ConsensusAPI + lapi *lescatalyst.ConsensusAPI stack *node.Node ethBackend *eth.Ethereum lesBackend *les.LightEthereum ) // Start the node and wait until it's up if typ == eth2LightClient { - stack, lesBackend, api, err = makeLightNode(genesis) + stack, lesBackend, lapi, err = makeLightNode(genesis) } else { stack, ethBackend, api, err = makeFullNode(genesis) } @@ -131,20 +135,27 @@ func newNode(typ nodetype, genesis *core.Genesis, enodes []*enode.Node) *ethNode typ: typ, api: api, ethBackend: ethBackend, + lapi: lapi, lesBackend: lesBackend, stack: stack, enode: enode, } } -func (n *ethNode) assembleBlock(parentHash common.Hash, parentTimestamp uint64) (*catalyst.ExecutableDataV1, error) { +func (n *ethNode) assembleBlock(parentHash common.Hash, parentTimestamp uint64) (*beacon.ExecutableDataV1, error) { if n.typ != eth2MiningNode { return nil, errors.New("invalid node type") } - payloadAttribute := catalyst.PayloadAttributesV1{ - Timestamp: uint64(time.Now().Unix()), + timestamp := uint64(time.Now().Unix()) + if timestamp <= parentTimestamp { + timestamp = parentTimestamp + 1 } - fcState := catalyst.ForkchoiceStateV1{ + payloadAttribute := beacon.PayloadAttributesV1{ + Timestamp: timestamp, + Random: common.Hash{}, + SuggestedFeeRecipient: common.HexToAddress("0xdeadbeef"), + } + fcState := beacon.ForkchoiceStateV1{ HeadBlockHash: parentHash, SafeBlockHash: common.Hash{}, FinalizedBlockHash: common.Hash{}, @@ -156,39 +167,62 @@ func (n *ethNode) assembleBlock(parentHash common.Hash, parentTimestamp uint64) return n.api.GetPayloadV1(*payload.PayloadID) } -func (n *ethNode) insertBlock(eb catalyst.ExecutableDataV1) error { +func (n *ethNode) insertBlock(eb beacon.ExecutableDataV1) error { if !eth2types(n.typ) { return errors.New("invalid node type") } - newResp, err := n.api.ExecutePayloadV1(eb) - if err != nil { - return err - } else if newResp.Status != "VALID" { - return errors.New("failed to insert block") + switch n.typ { + case eth2NormalNode, eth2MiningNode: + newResp, err := n.api.NewPayloadV1(eb) + if err != nil { + return err + } else if newResp.Status != "VALID" { + return errors.New("failed to insert block") + } + return nil + case eth2LightClient: + newResp, err := n.lapi.ExecutePayloadV1(eb) + if err != nil { + return err + } else if newResp.Status != "VALID" { + return errors.New("failed to insert block") + } + return nil + default: + return errors.New("undefined node") } - return nil } -func (n *ethNode) insertBlockAndSetHead(parent *types.Header, ed catalyst.ExecutableDataV1) error { +func (n *ethNode) insertBlockAndSetHead(parent *types.Header, ed beacon.ExecutableDataV1) error { if !eth2types(n.typ) { return errors.New("invalid node type") } if err := n.insertBlock(ed); err != nil { return err } - block, err := catalyst.ExecutableDataToBlock(ed) + block, err := beacon.ExecutableDataToBlock(ed) if err != nil { return err } - fcState := catalyst.ForkchoiceStateV1{ + fcState := beacon.ForkchoiceStateV1{ HeadBlockHash: block.ParentHash(), SafeBlockHash: common.Hash{}, FinalizedBlockHash: common.Hash{}, } - if _, err := n.api.ForkchoiceUpdatedV1(fcState, nil); err != nil { - return err + switch n.typ { + case eth2NormalNode, eth2MiningNode: + if _, err := n.api.ForkchoiceUpdatedV1(fcState, nil); err != nil { + return err + } + return nil + case eth2LightClient: + if _, err := n.lapi.ForkchoiceUpdatedV1(fcState, nil); err != nil { + return err + } + return nil + default: + return errors.New("undefined node") } - return nil } type nodeManager struct { @@ -284,12 +318,15 @@ func (mgr *nodeManager) run() { nodes = append(nodes, mgr.getNodes(eth2NormalNode)...) nodes = append(nodes, mgr.getNodes(eth2LightClient)...) for _, node := range append(nodes) { - fcState := catalyst.ForkchoiceStateV1{ + fcState := beacon.ForkchoiceStateV1{ HeadBlockHash: oldest.Hash(), SafeBlockHash: common.Hash{}, - FinalizedBlockHash: common.Hash{}, + FinalizedBlockHash: oldest.Hash(), } - node.api.ForkchoiceUpdatedV1(fcState, nil) + // TODO(rjl493456442) finalization doesn't work properly, FIX IT + _ = fcState + _ = node + //node.api.ForkchoiceUpdatedV1(fcState, nil) } log.Info("Finalised eth2 block", "number", oldest.NumberU64(), "hash", oldest.Hash()) waitFinalise = waitFinalise[1:] @@ -327,12 +364,11 @@ func (mgr *nodeManager) run() { log.Error("Failed to assemble the block", "err", err) continue } - block, _ := catalyst.ExecutableDataToBlock(*ed) + block, _ := beacon.ExecutableDataToBlock(*ed) nodes := mgr.getNodes(eth2MiningNode) nodes = append(nodes, mgr.getNodes(eth2NormalNode)...) nodes = append(nodes, mgr.getNodes(eth2LightClient)...) - for _, node := range nodes { if err := node.insertBlockAndSetHead(parentBlock.Header(), *ed); err != nil { log.Error("Failed to insert block", "type", node.typ, "err", err) @@ -410,9 +446,8 @@ func makeGenesis(faucets []*ecdsa.PrivateKey) *core.Genesis { genesis.Difficulty = params.MinimumDifficulty genesis.GasLimit = 25000000 - genesis.Config.ChainID = big.NewInt(18) - genesis.Config.EIP150Hash = common.Hash{} genesis.BaseFee = big.NewInt(params.InitialBaseFee) + genesis.Config = params.AllEthashProtocolChanges genesis.Config.TerminalTotalDifficulty = transitionDifficulty genesis.Alloc = core.GenesisAlloc{} @@ -424,7 +459,7 @@ func makeGenesis(faucets []*ecdsa.PrivateKey) *core.Genesis { return genesis } -func makeFullNode(genesis *core.Genesis) (*node.Node, *eth.Ethereum, *catalyst.ConsensusAPI, error) { +func makeFullNode(genesis *core.Genesis) (*node.Node, *eth.Ethereum, *ethcatalyst.ConsensusAPI, error) { // Define the basic configurations for the Ethereum node datadir, _ := ioutil.TempDir("", "") @@ -472,10 +507,10 @@ func makeFullNode(genesis *core.Genesis) (*node.Node, *eth.Ethereum, *catalyst.C log.Crit("Failed to create the LES server", "err", err) } err = stack.Start() - return stack, ethBackend, catalyst.NewConsensusAPI(ethBackend, nil), err + return stack, ethBackend, ethcatalyst.NewConsensusAPI(ethBackend), err } -func makeLightNode(genesis *core.Genesis) (*node.Node, *les.LightEthereum, *catalyst.ConsensusAPI, error) { +func makeLightNode(genesis *core.Genesis) (*node.Node, *les.LightEthereum, *lescatalyst.ConsensusAPI, error) { // Define the basic configurations for the Ethereum node datadir, _ := ioutil.TempDir("", "") @@ -510,7 +545,7 @@ func makeLightNode(genesis *core.Genesis) (*node.Node, *les.LightEthereum, *cata return nil, nil, nil, err } err = stack.Start() - return stack, lesBackend, catalyst.NewConsensusAPI(nil, lesBackend), err + return stack, lesBackend, lescatalyst.NewConsensusAPI(lesBackend), err } func eth2types(typ nodetype) bool { diff --git a/miner/worker.go b/miner/worker.go index 5be6aea3fb..c3a5e1c9ba 100644 --- a/miner/worker.go +++ b/miner/worker.go @@ -17,8 +17,8 @@ package miner import ( - "bytes" "errors" + "fmt" "math/big" "sync" "sync/atomic" @@ -54,14 +54,14 @@ const ( // resubmitAdjustChanSize is the size of resubmitting interval adjustment channel. resubmitAdjustChanSize = 10 - // miningLogAtDepth is the number of confirmations before logging successful mining. - miningLogAtDepth = 7 + // sealingLogAtDepth is the number of confirmations before logging successful sealing. + sealingLogAtDepth = 7 - // minRecommitInterval is the minimal time interval to recreate the mining block with + // minRecommitInterval is the minimal time interval to recreate the sealing block with // any newly arrived transactions. minRecommitInterval = 1 * time.Second - // maxRecommitInterval is the maximum time interval to recreate the mining block with + // maxRecommitInterval is the maximum time interval to recreate the sealing block with // any newly arrived transactions. maxRecommitInterval = 15 * time.Second @@ -77,20 +77,68 @@ const ( staleThreshold = 7 ) -// environment is the worker's current environment and holds all of the current state information. +// environment is the worker's current environment and holds all +// information of the sealing block generation. type environment struct { signer types.Signer state *state.StateDB // apply state changes here ancestors mapset.Set // ancestor set (used for checking uncle parent validity) family mapset.Set // family set (used for checking uncle invalidity) - uncles mapset.Set // uncle set tcount int // tx count in cycle gasPool *core.GasPool // available gas used to pack transactions + coinbase common.Address header *types.Header txs []*types.Transaction receipts []*types.Receipt + uncles map[common.Hash]*types.Header +} + +// copy creates a deep copy of environment. +func (env *environment) copy() *environment { + cpy := &environment{ + signer: env.signer, + state: env.state.Copy(), + ancestors: env.ancestors.Clone(), + family: env.family.Clone(), + tcount: env.tcount, + coinbase: env.coinbase, + header: types.CopyHeader(env.header), + receipts: copyReceipts(env.receipts), + } + if env.gasPool != nil { + gasPool := *env.gasPool + cpy.gasPool = &gasPool + } + // The content of txs and uncles are immutable, unnecessary + // to do the expensive deep copy for them. + cpy.txs = make([]*types.Transaction, len(env.txs)) + copy(cpy.txs, env.txs) + cpy.uncles = make(map[common.Hash]*types.Header) + for hash, uncle := range env.uncles { + cpy.uncles[hash] = uncle + } + return cpy +} + +// unclelist returns the contained uncles as the list format. +func (env *environment) unclelist() []*types.Header { + var uncles []*types.Header + for _, uncle := range env.uncles { + uncles = append(uncles, uncle) + } + return uncles +} + +// discard terminates the background prefetcher go-routine. It should +// always be called for all created environment instances otherwise +// the go-routine leak can happen. +func (env *environment) discard() { + if env.state == nil { + return + } + env.state.StopPrefetcher() } // task contains all information for consensus engine sealing and result submitting. @@ -114,6 +162,13 @@ type newWorkReq struct { timestamp int64 } +// getWorkReq represents a request for getting a new sealing work with provided parameters. +type getWorkReq struct { + params *generateParams + err error + result chan *types.Block +} + // intervalAdjust represents a resubmitting interval adjustment. type intervalAdjust struct { ratio float64 @@ -144,6 +199,7 @@ type worker struct { // Channels newWorkCh chan *newWorkReq + getWorkCh chan *getWorkReq taskCh chan *task resultCh chan *types.Block startCh chan struct{} @@ -191,7 +247,7 @@ type worker struct { resubmitHook func(time.Duration, time.Duration) // Method to call upon updating resubmitting interval. } -func newWorker(config *Config, chainConfig *params.ChainConfig, engine consensus.Engine, eth Backend, mux *event.TypeMux, isLocalBlock func(header *types.Header) bool, init bool, merger *consensus.Merger) *worker { +func newWorker(config *Config, chainConfig *params.ChainConfig, engine consensus.Engine, eth Backend, mux *event.TypeMux, isLocalBlock func(header *types.Header) bool, init bool) *worker { worker := &worker{ config: config, chainConfig: chainConfig, @@ -199,16 +255,16 @@ func newWorker(config *Config, chainConfig *params.ChainConfig, engine consensus eth: eth, mux: mux, chain: eth.BlockChain(), - merger: merger, isLocalBlock: isLocalBlock, localUncles: make(map[common.Hash]*types.Block), remoteUncles: make(map[common.Hash]*types.Block), - unconfirmed: newUnconfirmedBlocks(eth.BlockChain(), miningLogAtDepth), + unconfirmed: newUnconfirmedBlocks(eth.BlockChain(), sealingLogAtDepth), pendingTasks: make(map[common.Hash]*task), txsCh: make(chan core.NewTxsEvent, txChanSize), chainHeadCh: make(chan core.ChainHeadEvent, chainHeadChanSize), chainSideCh: make(chan core.ChainSideEvent, chainSideChanSize), newWorkCh: make(chan *newWorkReq), + getWorkCh: make(chan *getWorkReq), taskCh: make(chan *task), resultCh: make(chan *types.Block, resultQueueSize), exitCh: make(chan struct{}), @@ -264,15 +320,18 @@ func (w *worker) setExtra(extra []byte) { // setRecommitInterval updates the interval for miner sealing work recommitting. func (w *worker) setRecommitInterval(interval time.Duration) { - w.resubmitIntervalCh <- interval + select { + case w.resubmitIntervalCh <- interval: + case <-w.exitCh: + } } -// disablePreseal disables pre-sealing mining feature +// disablePreseal disables pre-sealing feature func (w *worker) disablePreseal() { atomic.StoreUint32(&w.noempty, 1) } -// enablePreseal enables pre-sealing mining feature +// enablePreseal enables pre-sealing feature func (w *worker) enablePreseal() { atomic.StoreUint32(&w.noempty, 0) } @@ -350,13 +409,13 @@ func recalcRecommit(minRecommit, prev time.Duration, target float64, inc bool) t return time.Duration(int64(next)) } -// newWorkLoop is a standalone goroutine to submit new mining work upon received events. +// newWorkLoop is a standalone goroutine to submit new sealing work upon received events. func (w *worker) newWorkLoop(recommit time.Duration) { defer w.wg.Done() var ( interrupt *int32 minRecommit = recommit // minimal resubmit interval specified by user. - timestamp int64 // timestamp for each round of mining. + timestamp int64 // timestamp for each round of sealing. ) timer := time.NewTimer(0) @@ -401,7 +460,7 @@ func (w *worker) newWorkLoop(recommit time.Duration) { commit(false, commitInterruptNewHead) case <-timer.C: - // If mining is running resubmit a new work cycle periodically to pull in + // If sealing is running resubmit a new work cycle periodically to pull in // higher priced transactions. Disable this overhead for pending blocks. if w.isRunning() && (w.chainConfig.Clique == nil || w.chainConfig.Clique.Period > 0) { // Short circuit if no new transaction arrives. @@ -448,22 +507,36 @@ func (w *worker) newWorkLoop(recommit time.Duration) { } } -// mainLoop is a standalone goroutine to regenerate the sealing task based on the received event. +// mainLoop is responsible for generating and submitting sealing work based on +// the received event. It can support two modes: automatically generate task and +// submit it or return task according to given parameters for various proposes. func (w *worker) mainLoop() { defer w.wg.Done() defer w.txsSub.Unsubscribe() defer w.chainHeadSub.Unsubscribe() defer w.chainSideSub.Unsubscribe() defer func() { - if w.current != nil && w.current.state != nil { - w.current.state.StopPrefetcher() + if w.current != nil { + w.current.discard() } }() + cleanTicker := time.NewTicker(time.Second * 10) + defer cleanTicker.Stop() + for { select { case req := <-w.newWorkCh: - w.commitNewWork(req.interrupt, req.noempty, req.timestamp) + w.commitWork(req.interrupt, req.noempty, req.timestamp) + + case req := <-w.getWorkCh: + block, err := w.generateWork(req.params) + if err != nil { + req.err = err + req.result <- nil + } else { + req.result <- block + } case ev := <-w.chainSideCh: // Short circuit for duplicate side blocks @@ -479,46 +552,40 @@ func (w *worker) mainLoop() { } else { w.remoteUncles[ev.Block.Hash()] = ev.Block } - // If our mining block contains less than 2 uncle blocks, - // add the new uncle block if valid and regenerate a mining block. - if w.isRunning() && w.current != nil && w.current.uncles.Cardinality() < 2 { + // If our sealing block contains less than 2 uncle blocks, + // add the new uncle block if valid and regenerate a new + // sealing block for higher profit. + if w.isRunning() && w.current != nil && len(w.current.uncles) < 2 { start := time.Now() if err := w.commitUncle(w.current, ev.Block.Header()); err == nil { - var uncles []*types.Header - w.current.uncles.Each(func(item interface{}) bool { - hash, ok := item.(common.Hash) - if !ok { - return false - } - uncle, exist := w.localUncles[hash] - if !exist { - uncle, exist = w.remoteUncles[hash] - } - if !exist { - return false - } - uncles = append(uncles, uncle.Header()) - return false - }) - w.commit(uncles, nil, true, start) + w.commit(w.current.copy(), nil, true, start) + } + } + + case <-cleanTicker.C: + chainHead := w.chain.CurrentBlock() + for hash, uncle := range w.localUncles { + if uncle.NumberU64()+staleThreshold <= chainHead.NumberU64() { + delete(w.localUncles, hash) + } + } + for hash, uncle := range w.remoteUncles { + if uncle.NumberU64()+staleThreshold <= chainHead.NumberU64() { + delete(w.remoteUncles, hash) } } case ev := <-w.txsCh: - // Apply transactions to the pending state if we're not mining. + // Apply transactions to the pending state if we're not sealing // // Note all transactions received may not be continuous with transactions - // already included in the current mining block. These transactions will + // already included in the current sealing block. These transactions will // be automatically eliminated. if !w.isRunning() && w.current != nil { // If block is already full, abort if gp := w.current.gasPool; gp != nil && gp.Gas() < params.TxGas { continue } - w.mu.RLock() - coinbase := w.coinbase - w.mu.RUnlock() - txs := make(map[common.Address]types.Transactions) for _, tx := range ev.Txs { acc, _ := types.Sender(w.current.signer, tx) @@ -526,18 +593,19 @@ func (w *worker) mainLoop() { } txset := types.NewTransactionsByPriceAndNonce(w.current.signer, txs, w.current.header.BaseFee) tcount := w.current.tcount - w.commitTransactions(txset, coinbase, nil) - // Only update the snapshot if any new transactons were added + w.commitTransactions(w.current, txset, nil) + + // Only update the snapshot if any new transactions were added // to the pending block if tcount != w.current.tcount { - w.updateSnapshot() + w.updateSnapshot(w.current) } } else { // Special case, if the consensus engine is 0 period clique(dev mode), - // submit mining work here since all empty submission will be rejected + // submit sealing work here since all empty submission will be rejected // by clique. Of course the advance sealing(empty submission) is disabled. if w.chainConfig.Clique != nil && w.chainConfig.Clique.Period == 0 { - w.commitNewWork(nil, true, time.Now().Unix()) + w.commitWork(nil, true, time.Now().Unix()) } } atomic.AddInt32(&w.newTxs, int32(len(ev.Txs))) @@ -688,23 +756,35 @@ func (w *worker) resultLoop() { } } -// makeCurrent creates a new environment for the current cycle. -func (w *worker) makeCurrent(parent *types.Block, header *types.Header) error { +// makeEnv creates a new environment for the sealing block. +func (w *worker) makeEnv(parent *types.Block, header *types.Header, coinbase common.Address) (*environment, error) { // Retrieve the parent state to execute on top and start a prefetcher for - // the miner to speed block sealing up a bit + // the miner to speed block sealing up a bit. state, err := w.chain.StateAt(parent.Root()) if err != nil { - return err + // Note since the sealing block can be created upon the arbitrary parent + // block, but the state of parent block may already be pruned, so the necessary + // state recovery is needed here in the future. + // + // The maximum acceptable reorg depth can be limited by the finalised block + // somehow. TODO(rjl493456442) fix the hard-coded number here later. + state, err = w.eth.StateAtBlock(parent, 1024, nil, false, false) + log.Warn("Recovered mining state", "root", parent.Root(), "err", err) + } + if err != nil { + return nil, err } state.StartPrefetcher("miner") + // Note the passed coinbase may be different with header.Coinbase. env := &environment{ signer: types.MakeSigner(w.chainConfig, header.Number), state: state, + coinbase: coinbase, ancestors: mapset.NewSet(), family: mapset.NewSet(), - uncles: mapset.NewSet(), header: header, + uncles: make(map[common.Hash]*types.Header), } // when 08 is processed ancestors contain 07 (quick block) for _, ancestor := range w.chain.GetBlocksFromHash(parent.Hash(), 7) { @@ -716,20 +796,16 @@ func (w *worker) makeCurrent(parent *types.Block, header *types.Header) error { } // Keep track of transactions which return errors so they can be removed env.tcount = 0 - - // Swap out the old work with the new one, terminating any leftover prefetcher - // processes in the mean time and starting a new one. - if w.current != nil && w.current.state != nil { - w.current.state.StopPrefetcher() - } - w.current = env - return nil + return env, nil } // commitUncle adds the given block to uncle block set, returns error if failed to add. func (w *worker) commitUncle(env *environment, uncle *types.Header) error { + if w.isTTDReached(env.header) { + return errors.New("ignore uncle for beacon block") + } hash := uncle.Hash() - if env.uncles.Contains(hash) { + if _, exist := env.uncles[hash]; exist { return errors.New("uncle not unique") } if env.header.ParentHash == uncle.ParentHash { @@ -741,82 +817,58 @@ func (w *worker) commitUncle(env *environment, uncle *types.Header) error { if env.family.Contains(hash) { return errors.New("uncle already included") } - env.uncles.Add(uncle.Hash()) + env.uncles[hash] = uncle return nil } -// updateSnapshot updates pending snapshot block and state. -// Note this function assumes the current variable is thread safe. -func (w *worker) updateSnapshot() { +// updateSnapshot updates pending snapshot block, receipts and state. +func (w *worker) updateSnapshot(env *environment) { w.snapshotMu.Lock() defer w.snapshotMu.Unlock() - var uncles []*types.Header - w.current.uncles.Each(func(item interface{}) bool { - hash, ok := item.(common.Hash) - if !ok { - return false - } - uncle, exist := w.localUncles[hash] - if !exist { - uncle, exist = w.remoteUncles[hash] - } - if !exist { - return false - } - uncles = append(uncles, uncle.Header()) - return false - }) - w.snapshotBlock = types.NewBlock( - w.current.header, - w.current.txs, - uncles, - w.current.receipts, + env.header, + env.txs, + env.unclelist(), + env.receipts, trie.NewStackTrie(nil), ) - w.snapshotReceipts = copyReceipts(w.current.receipts) - w.snapshotState = w.current.state.Copy() + w.snapshotReceipts = copyReceipts(env.receipts) + w.snapshotState = env.state.Copy() } -func (w *worker) commitTransaction(tx *types.Transaction, coinbase common.Address) ([]*types.Log, error) { - snap := w.current.state.Snapshot() +func (w *worker) commitTransaction(env *environment, tx *types.Transaction) ([]*types.Log, error) { + snap := env.state.Snapshot() - receipt, err := core.ApplyTransaction(w.chainConfig, w.chain, &coinbase, w.current.gasPool, w.current.state, w.current.header, tx, &w.current.header.GasUsed, *w.chain.GetVMConfig()) + receipt, err := core.ApplyTransaction(w.chainConfig, w.chain, &env.coinbase, env.gasPool, env.state, env.header, tx, &env.header.GasUsed, *w.chain.GetVMConfig()) if err != nil { - w.current.state.RevertToSnapshot(snap) + env.state.RevertToSnapshot(snap) return nil, err } - w.current.txs = append(w.current.txs, tx) - w.current.receipts = append(w.current.receipts, receipt) + env.txs = append(env.txs, tx) + env.receipts = append(env.receipts, receipt) return receipt.Logs, nil } -func (w *worker) commitTransactions(txs *types.TransactionsByPriceAndNonce, coinbase common.Address, interrupt *int32) bool { - // Short circuit if current is nil - if w.current == nil { - return true +func (w *worker) commitTransactions(env *environment, txs *types.TransactionsByPriceAndNonce, interrupt *int32) bool { + gasLimit := env.header.GasLimit + if env.gasPool == nil { + env.gasPool = new(core.GasPool).AddGas(gasLimit) } - - gasLimit := w.current.header.GasLimit - if w.current.gasPool == nil { - w.current.gasPool = new(core.GasPool).AddGas(gasLimit) - } - var coalescedLogs []*types.Log for { // In the following three cases, we will interrupt the execution of the transaction. // (1) new head block event arrival, the interrupt signal is 1 // (2) worker start or restart, the interrupt signal is 1 - // (3) worker recreate the mining block with any newly arrived transactions, the interrupt signal is 2. + // (3) worker recreate the sealing block with any newly arrived transactions, the interrupt signal is 2. // For the first two cases, the semi-finished work will be discarded. // For the third case, the semi-finished work will be submitted to the consensus engine. if interrupt != nil && atomic.LoadInt32(interrupt) != commitInterruptNone { // Notify resubmit loop to increase resubmitting interval due to too frequent commits. if atomic.LoadInt32(interrupt) == commitInterruptResubmit { - ratio := float64(gasLimit-w.current.gasPool.Gas()) / float64(gasLimit) + ratio := float64(gasLimit-env.gasPool.Gas()) / float64(gasLimit) if ratio < 0.1 { ratio = 0.1 } @@ -828,8 +880,8 @@ func (w *worker) commitTransactions(txs *types.TransactionsByPriceAndNonce, coin return atomic.LoadInt32(interrupt) == commitInterruptNewHead } // If we don't have enough gas for any further transactions then we're done - if w.current.gasPool.Gas() < params.TxGas { - log.Trace("Not enough gas for further transactions", "have", w.current.gasPool, "want", params.TxGas) + if env.gasPool.Gas() < params.TxGas { + log.Trace("Not enough gas for further transactions", "have", env.gasPool, "want", params.TxGas) break } // Retrieve the next transaction and abort if all done @@ -841,19 +893,19 @@ func (w *worker) commitTransactions(txs *types.TransactionsByPriceAndNonce, coin // during transaction acceptance is the transaction pool. // // We use the eip155 signer regardless of the current hf. - from, _ := types.Sender(w.current.signer, tx) + from, _ := types.Sender(env.signer, tx) // Check whether the tx is replay protected. If we're not in the EIP155 hf // phase, start ignoring the sender until we do. - if tx.Protected() && !w.chainConfig.IsEIP155(w.current.header.Number) { + if tx.Protected() && !w.chainConfig.IsEIP155(env.header.Number) { log.Trace("Ignoring reply protected transaction", "hash", tx.Hash(), "eip155", w.chainConfig.EIP155Block) txs.Pop() continue } // Start executing the transaction - w.current.state.Prepare(tx.Hash(), w.current.tcount) + env.state.Prepare(tx.Hash(), env.tcount) - logs, err := w.commitTransaction(tx, coinbase) + logs, err := w.commitTransaction(env, tx) switch { case errors.Is(err, core.ErrGasLimitReached): // Pop the current out-of-gas transaction without shifting in the next from the account @@ -873,7 +925,7 @@ func (w *worker) commitTransactions(txs *types.TransactionsByPriceAndNonce, coin case errors.Is(err, nil): // Everything ok, collect the logs and shift in the next transaction from the same account coalescedLogs = append(coalescedLogs, logs...) - w.current.tcount++ + env.tcount++ txs.Shift() case errors.Is(err, core.ErrTxTypeNotSupported): @@ -890,8 +942,8 @@ func (w *worker) commitTransactions(txs *types.TransactionsByPriceAndNonce, coin } if !w.isRunning() && len(coalescedLogs) > 0 { - // We don't push the pendingLogsEvent while we are mining. The reason is that - // when we are mining, the worker will regenerate a mining block every 3 seconds. + // We don't push the pendingLogsEvent while we are sealing. The reason is that + // when we are sealing, the worker will regenerate a sealing block every 3 seconds. // In order to avoid pushing the repeated pendingLog, we disable the pending log pushing. // make a copy, the state caches the logs and these logs get "upgraded" from pending to mined @@ -912,24 +964,56 @@ func (w *worker) commitTransactions(txs *types.TransactionsByPriceAndNonce, coin return false } -// commitNewWork generates several new sealing tasks based on the parent block. -func (w *worker) commitNewWork(interrupt *int32, noempty bool, timestamp int64) { +// generateParams wraps various of settings for generating sealing task. +type generateParams struct { + timestamp uint64 // The timstamp for sealing task + forceTime bool // Flag whether the given timestamp is immutable or not + parentHash common.Hash // Parent block hash, empty means the latest chain head + coinbase common.Address // The fee recipient address for including transaction + random common.Hash // The randomness generated by beacon chain, empty before the merge + noUncle bool // Flag whether the uncle block inclusion is allowed + noExtra bool // Flag whether the extra field assignment is allowed +} + +// prepareWork constructs the sealing task according to the given parameters, +// either based on the last chain head or specified parent. In this function +// the pending transactions are not filled yet, only the empty task returned. +func (w *worker) prepareWork(genParams *generateParams) (*environment, error) { w.mu.RLock() defer w.mu.RUnlock() - tstart := time.Now() + // Find the parent block for sealing task parent := w.chain.CurrentBlock() - - if parent.Time() >= uint64(timestamp) { - timestamp = int64(parent.Time() + 1) + if genParams.parentHash != (common.Hash{}) { + parent = w.chain.GetBlockByHash(genParams.parentHash) } + if parent == nil { + return nil, fmt.Errorf("missing parent") + } + // Sanity check the timestamp correctness, recap the timestamp + // to parent+1 if the mutation is allowed. + timestamp := genParams.timestamp + if parent.Time() >= timestamp { + if genParams.forceTime { + return nil, fmt.Errorf("invalid timestamp, parent %d given %d", parent.Time(), timestamp) + } + timestamp = parent.Time() + 1 + } + // Construct the sealing block header, set the extra field if it's allowed num := parent.Number() header := &types.Header{ ParentHash: parent.Hash(), Number: num.Add(num, common.Big1), GasLimit: core.CalcGasLimit(parent.GasLimit(), w.config.GasCeil), - Extra: w.extra, - Time: uint64(timestamp), + Time: timestamp, + Coinbase: genParams.coinbase, + } + if !genParams.noExtra && len(w.extra) != 0 { + header.Extra = w.extra + } + // Set the randomness field from the beacon chain if it's available. + if genParams.random != (common.Hash{}) { + header.MixDigest = genParams.random } // Set baseFee and GasLimit if we are on an EIP-1559 chain if w.chainConfig.IsLondon(header.Number) { @@ -939,83 +1023,47 @@ func (w *worker) commitNewWork(interrupt *int32, noempty bool, timestamp int64) header.GasLimit = core.CalcGasLimit(parentGasLimit, w.config.GasCeil) } } - // Only set the coinbase if our consensus engine is running (avoid spurious block rewards) - if w.isRunning() { - if w.coinbase == (common.Address{}) { - log.Error("Refusing to mine without etherbase") - return - } - header.Coinbase = w.coinbase - } + // Run the consensus preparation with the default or customized consensus engine. if err := w.engine.Prepare(w.chain, header); err != nil { - log.Error("Failed to prepare header for mining", "err", err) - return - } - // If we are care about TheDAO hard-fork check whether to override the extra-data or not - if daoBlock := w.chainConfig.DAOForkBlock; daoBlock != nil { - // Check whether the block is among the fork extra-override range - limit := new(big.Int).Add(daoBlock, params.DAOForkExtraRange) - if header.Number.Cmp(daoBlock) >= 0 && header.Number.Cmp(limit) < 0 { - // Depending whether we support or oppose the fork, override differently - if w.chainConfig.DAOForkSupport { - header.Extra = common.CopyBytes(params.DAOForkBlockExtra) - } else if bytes.Equal(header.Extra, params.DAOForkBlockExtra) { - header.Extra = []byte{} // If miner opposes, don't let it use the reserved extra-data - } - } + log.Error("Failed to prepare header for sealing", "err", err) + return nil, err } // Could potentially happen if starting to mine in an odd state. - err := w.makeCurrent(parent, header) + // Note genParams.coinbase can be different with header.Coinbase + // since clique algorithm can modify the coinbase field in header. + env, err := w.makeEnv(parent, header, genParams.coinbase) if err != nil { - log.Error("Failed to create mining context", "err", err) - return + log.Error("Failed to create sealing context", "err", err) + return nil, err } - // Create the current work task and check any fork transitions needed - env := w.current - if w.chainConfig.DAOForkSupport && w.chainConfig.DAOForkBlock != nil && w.chainConfig.DAOForkBlock.Cmp(header.Number) == 0 { - misc.ApplyDAOHardFork(env.state) - } - // Accumulate the uncles for the current block - uncles := make([]*types.Header, 0, 2) - commitUncles := func(blocks map[common.Hash]*types.Block) { - // Clean up stale uncle blocks first - for hash, uncle := range blocks { - if uncle.NumberU64()+staleThreshold <= header.Number.Uint64() { - delete(blocks, hash) - } - } - for hash, uncle := range blocks { - if len(uncles) == 2 { - break - } - if err := w.commitUncle(env, uncle.Header()); err != nil { - log.Trace("Possible uncle rejected", "hash", hash, "reason", err) - } else { - log.Debug("Committing new uncle to block", "hash", hash) - uncles = append(uncles, uncle.Header()) + // Accumulate the uncles for the sealing work only if it's allowed. + if !genParams.noUncle { + commitUncles := func(blocks map[common.Hash]*types.Block) { + for hash, uncle := range blocks { + if len(env.uncles) == 2 { + break + } + if err := w.commitUncle(env, uncle.Header()); err != nil { + log.Trace("Possible uncle rejected", "hash", hash, "reason", err) + } else { + log.Debug("Committing new uncle to block", "hash", hash) + } } } + // Prefer to locally generated uncle + commitUncles(w.localUncles) + commitUncles(w.remoteUncles) } - // Prefer to locally generated uncle - commitUncles(w.localUncles) - commitUncles(w.remoteUncles) - - // Create an empty block based on temporary copied state for - // sealing in advance without waiting block execution finished. - if !noempty && atomic.LoadUint32(&w.noempty) == 0 { - w.commit(uncles, nil, false, tstart) - } + return env, nil +} +// fillTransactions retrieves the pending transactions from the txpool and fills them +// into the given sealing block. The transaction selection and ordering strategy can +// be customized with the plugin in the future. +func (w *worker) fillTransactions(interrupt *int32, env *environment) { + // Split the pending transactions into locals and remotes // Fill the block with all available pending transactions. pending := w.eth.TxPool().Pending(true) - // Short circuit if there is no available pending transactions. - // But if we disable empty precommit already, ignore it. Since - // empty block is necessary to keep the liveness of the network. - if len(pending) == 0 && atomic.LoadUint32(&w.noempty) == 0 { - w.updateSnapshot() - return - } - // Split the pending transactions into locals and remotes localTxs, remoteTxs := make(map[common.Address]types.Transactions), pending for _, account := range w.eth.TxPool().Locals() { if txs := remoteTxs[account]; len(txs) > 0 { @@ -1024,57 +1072,139 @@ func (w *worker) commitNewWork(interrupt *int32, noempty bool, timestamp int64) } } if len(localTxs) > 0 { - txs := types.NewTransactionsByPriceAndNonce(w.current.signer, localTxs, header.BaseFee) - if w.commitTransactions(txs, w.coinbase, interrupt) { + txs := types.NewTransactionsByPriceAndNonce(env.signer, localTxs, env.header.BaseFee) + if w.commitTransactions(env, txs, interrupt) { return } } if len(remoteTxs) > 0 { - txs := types.NewTransactionsByPriceAndNonce(w.current.signer, remoteTxs, header.BaseFee) - if w.commitTransactions(txs, w.coinbase, interrupt) { + txs := types.NewTransactionsByPriceAndNonce(env.signer, remoteTxs, env.header.BaseFee) + if w.commitTransactions(env, txs, interrupt) { return } } - w.commit(uncles, w.fullTaskHook, true, tstart) +} + +// generateWork generates a sealing block based on the given parameters. +func (w *worker) generateWork(params *generateParams) (*types.Block, error) { + work, err := w.prepareWork(params) + if err != nil { + return nil, err + } + defer work.discard() + + w.fillTransactions(nil, work) + return w.engine.FinalizeAndAssemble(w.chain, work.header, work.state, work.txs, work.unclelist(), work.receipts) +} + +// commitWork generates several new sealing tasks based on the parent block +// and submit them to the sealer. +func (w *worker) commitWork(interrupt *int32, noempty bool, timestamp int64) { + start := time.Now() + + // Set the coinbase if the worker is running or it's required + var coinbase common.Address + if w.isRunning() { + if w.coinbase == (common.Address{}) { + log.Error("Refusing to mine without etherbase") + return + } + coinbase = w.coinbase // Use the preset address as the fee recipient + } + work, err := w.prepareWork(&generateParams{ + timestamp: uint64(timestamp), + coinbase: coinbase, + }) + if err != nil { + return + } + // Create an empty block based on temporary copied state for + // sealing in advance without waiting block execution finished. + if !noempty && atomic.LoadUint32(&w.noempty) == 0 { + w.commit(work.copy(), nil, false, start) + } + // Fill pending transactions from the txpool + w.fillTransactions(interrupt, work) + w.commit(work.copy(), w.fullTaskHook, true, start) + + // Swap out the old work with the new one, terminating any leftover + // prefetcher processes in the mean time and starting a new one. + if w.current != nil { + w.current.discard() + } + w.current = work } // commit runs any post-transaction state modifications, assembles the final block // and commits new work if consensus engine is running. -func (w *worker) commit(uncles []*types.Header, interval func(), update bool, start time.Time) error { - // Deep copy receipts here to avoid interaction between different tasks. - receipts := copyReceipts(w.current.receipts) - s := w.current.state.Copy() - block, err := w.engine.FinalizeAndAssemble(w.chain, w.current.header, s, w.current.txs, uncles, receipts) - if err != nil { - return err - } +// Note the assumption is held that the mutation is allowed to the passed env, do +// the deep copy first. +func (w *worker) commit(env *environment, interval func(), update bool, start time.Time) error { if w.isRunning() { if interval != nil { interval() } - // If we're post merge, just ignore - td, ttd := w.chain.GetTd(block.ParentHash(), block.NumberU64()-1), w.chain.Config().TerminalTotalDifficulty - if td != nil && ttd != nil && td.Cmp(ttd) >= 0 { - return nil + // Create a local environment copy, avoid the data race with snapshot state. + // https://github.com/ethereum/go-ethereum/issues/24299 + env := env.copy() + block, err := w.engine.FinalizeAndAssemble(w.chain, env.header, env.state, env.txs, env.unclelist(), env.receipts) + if err != nil { + return err } - select { - case w.taskCh <- &task{receipts: receipts, state: s, block: block, createdAt: time.Now()}: - w.unconfirmed.Shift(block.NumberU64() - 1) - log.Info("Commit new mining work", "number", block.Number(), "sealhash", w.engine.SealHash(block.Header()), - "uncles", len(uncles), "txs", w.current.tcount, - "gas", block.GasUsed(), "fees", totalFees(block, receipts), - "elapsed", common.PrettyDuration(time.Since(start))) + // If we're post merge, just ignore + if !w.isTTDReached(block.Header()) { + select { + case w.taskCh <- &task{receipts: env.receipts, state: env.state, block: block, createdAt: time.Now()}: + w.unconfirmed.Shift(block.NumberU64() - 1) + log.Info("Commit new sealing work", "number", block.Number(), "sealhash", w.engine.SealHash(block.Header()), + "uncles", len(env.uncles), "txs", env.tcount, + "gas", block.GasUsed(), "fees", totalFees(block, env.receipts), + "elapsed", common.PrettyDuration(time.Since(start))) - case <-w.exitCh: - log.Info("Worker has exited") + case <-w.exitCh: + log.Info("Worker has exited") + } } } if update { - w.updateSnapshot() + w.updateSnapshot(env) } return nil } +// getSealingBlock generates the sealing block based on the given parameters. +func (w *worker) getSealingBlock(parent common.Hash, timestamp uint64, coinbase common.Address, random common.Hash) (*types.Block, error) { + req := &getWorkReq{ + params: &generateParams{ + timestamp: timestamp, + forceTime: true, + parentHash: parent, + coinbase: coinbase, + random: random, + noUncle: true, + noExtra: true, + }, + result: make(chan *types.Block, 1), + } + select { + case w.getWorkCh <- req: + block := <-req.result + if block == nil { + return nil, req.err + } + return block, nil + case <-w.exitCh: + return nil, errors.New("miner closed") + } +} + +// isTTDReached returns the indicator if the given block has reached the total +// terminal difficulty for The Merge transition. +func (w *worker) isTTDReached(header *types.Header) bool { + td, ttd := w.chain.GetTd(header.ParentHash, header.Number.Uint64()-1), w.chain.Config().TerminalTotalDifficulty + return td != nil && ttd != nil && td.Cmp(ttd) >= 0 +} + // copyReceipts makes a deep copy of the given receipts. func copyReceipts(receipts []*types.Receipt) []*types.Receipt { result := make([]*types.Receipt, len(receipts)) diff --git a/miner/worker_test.go b/miner/worker_test.go index c8ddd2c320..f309ae994b 100644 --- a/miner/worker_test.go +++ b/miner/worker_test.go @@ -17,6 +17,7 @@ package miner import ( + "errors" "math/big" "math/rand" "sync/atomic" @@ -30,6 +31,7 @@ import ( "github.com/ethereum/go-ethereum/consensus/ethash" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/rawdb" + "github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/crypto" @@ -166,6 +168,9 @@ func newTestWorkerBackend(t *testing.T, chainConfig *params.ChainConfig, engine func (b *testWorkerBackend) BlockChain() *core.BlockChain { return b.chain } func (b *testWorkerBackend) TxPool() *core.TxPool { return b.txPool } +func (b *testWorkerBackend) StateAtBlock(block *types.Block, reexec uint64, base *state.StateDB, checkLive bool, preferDisk bool) (statedb *state.StateDB, err error) { + return nil, errors.New("not supported") +} func (b *testWorkerBackend) newRandomUncle() *types.Block { var parent *types.Block @@ -382,7 +387,7 @@ func testRegenerateMiningBlock(t *testing.T, chainConfig *params.ChainConfig, en w, b := newTestWorker(t, chainConfig, engine, rawdb.NewMemoryDatabase(), 0) defer w.close() - var taskCh = make(chan struct{}) + var taskCh = make(chan struct{}, 3) taskIndex := 0 w.newTaskHook = func(task *task) { @@ -521,3 +526,144 @@ func testAdjustInterval(t *testing.T, chainConfig *params.ChainConfig, engine co t.Error("interval reset timeout") } } + +func TestGetSealingWorkEthash(t *testing.T) { + testGetSealingWork(t, ethashChainConfig, ethash.NewFaker(), false) +} + +func TestGetSealingWorkClique(t *testing.T) { + testGetSealingWork(t, cliqueChainConfig, clique.New(cliqueChainConfig.Clique, rawdb.NewMemoryDatabase()), false) +} + +func TestGetSealingWorkPostMerge(t *testing.T) { + local := new(params.ChainConfig) + *local = *ethashChainConfig + local.TerminalTotalDifficulty = big.NewInt(0) + testGetSealingWork(t, local, ethash.NewFaker(), true) +} + +func testGetSealingWork(t *testing.T, chainConfig *params.ChainConfig, engine consensus.Engine, postMerge bool) { + defer engine.Close() + + w, b := newTestWorker(t, chainConfig, engine, rawdb.NewMemoryDatabase(), 0) + defer w.close() + + w.setExtra([]byte{0x01, 0x02}) + w.postSideBlock(core.ChainSideEvent{Block: b.uncleBlock}) + + w.skipSealHook = func(task *task) bool { + return true + } + w.fullTaskHook = func() { + time.Sleep(100 * time.Millisecond) + } + timestamp := uint64(time.Now().Unix()) + assertBlock := func(block *types.Block, number uint64, coinbase common.Address, random common.Hash) { + if block.Time() != timestamp { + // Sometime the timestamp will be mutated if the timestamp + // is even smaller than parent block's. It's OK. + t.Logf("Invalid timestamp, want %d, get %d", timestamp, block.Time()) + } + if len(block.Uncles()) != 0 { + t.Error("Unexpected uncle block") + } + _, isClique := engine.(*clique.Clique) + if !isClique { + if len(block.Extra()) != 0 { + t.Error("Unexpected extra field") + } + if block.Coinbase() != coinbase { + t.Errorf("Unexpected coinbase got %x want %x", block.Coinbase(), coinbase) + } + } else { + if block.Coinbase() != (common.Address{}) { + t.Error("Unexpected coinbase") + } + } + if !isClique { + if block.MixDigest() != random { + t.Error("Unexpected mix digest") + } + } + if block.Nonce() != 0 { + t.Error("Unexpected block nonce") + } + if block.NumberU64() != number { + t.Errorf("Mismatched block number, want %d got %d", number, block.NumberU64()) + } + } + var cases = []struct { + parent common.Hash + coinbase common.Address + random common.Hash + expectNumber uint64 + expectErr bool + }{ + { + b.chain.Genesis().Hash(), + common.HexToAddress("0xdeadbeef"), + common.HexToHash("0xcafebabe"), + uint64(1), + false, + }, + { + b.chain.CurrentBlock().Hash(), + common.HexToAddress("0xdeadbeef"), + common.HexToHash("0xcafebabe"), + b.chain.CurrentBlock().NumberU64() + 1, + false, + }, + { + b.chain.CurrentBlock().Hash(), + common.Address{}, + common.HexToHash("0xcafebabe"), + b.chain.CurrentBlock().NumberU64() + 1, + false, + }, + { + b.chain.CurrentBlock().Hash(), + common.Address{}, + common.Hash{}, + b.chain.CurrentBlock().NumberU64() + 1, + false, + }, + { + common.HexToHash("0xdeadbeef"), + common.HexToAddress("0xdeadbeef"), + common.HexToHash("0xcafebabe"), + 0, + true, + }, + } + + // This API should work even when the automatic sealing is not enabled + for _, c := range cases { + block, err := w.getSealingBlock(c.parent, timestamp, c.coinbase, c.random) + if c.expectErr { + if err == nil { + t.Error("Expect error but get nil") + } + } else { + if err != nil { + t.Errorf("Unexpected error %v", err) + } + assertBlock(block, c.expectNumber, c.coinbase, c.random) + } + } + + // This API should work even when the automatic sealing is enabled + w.start() + for _, c := range cases { + block, err := w.getSealingBlock(c.parent, timestamp, c.coinbase, c.random) + if c.expectErr { + if err == nil { + t.Error("Expect error but get nil") + } + } else { + if err != nil { + t.Errorf("Unexpected error %v", err) + } + assertBlock(block, c.expectNumber, c.coinbase, c.random) + } + } +} diff --git a/mobile/geth.go b/mobile/geth.go index 0118f6fc21..45930ee9cf 100644 --- a/mobile/geth.go +++ b/mobile/geth.go @@ -234,14 +234,6 @@ func (n *Node) Start() error { return n.node.Start() } -// Stop terminates a running node along with all its services. If the node was not started, -// an error is returned. It is not possible to restart a stopped node. -// -// Deprecated: use Close() -func (n *Node) Stop() error { - return n.node.Close() -} - // GetEthereumClient retrieves a client to access the Ethereum subsystem. func (n *Node) GetEthereumClient() (client *EthereumClient, _ error) { rpc, err := n.node.Attach() diff --git a/node/api.go b/node/api.go index a685ecd6b3..1b32399f63 100644 --- a/node/api.go +++ b/node/api.go @@ -274,11 +274,12 @@ func (api *privateAdminAPI) StartWS(host *string, port *int, allowedOrigins *str } // Enable WebSocket on the server. - server := api.node.wsServerForPort(*port) + server := api.node.wsServerForPort(*port, false) if err := server.setListenAddr(*host, *port); err != nil { return false, err } - if err := server.enableWS(api.node.rpcAPIs, config); err != nil { + openApis, _ := api.node.GetAPIs() + if err := server.enableWS(openApis, config); err != nil { return false, err } if err := server.start(); err != nil { diff --git a/node/config.go b/node/config.go index 26f00cd678..853190c95f 100644 --- a/node/config.go +++ b/node/config.go @@ -36,6 +36,7 @@ import ( const ( datadirPrivateKey = "nodekey" // Path within the datadir to the node's private key + datadirJWTKey = "jwtsecret" // Path within the datadir to the node's jwt secret datadirDefaultKeyStore = "keystore" // Path within the datadir to the keystore datadirStaticNodes = "static-nodes.json" // Path within the datadir to the static node list datadirTrustedNodes = "trusted-nodes.json" // Path within the datadir to the trusted node list @@ -138,6 +139,16 @@ type Config struct { // HTTPPathPrefix specifies a path prefix on which http-rpc is to be served. HTTPPathPrefix string `toml:",omitempty"` + // AuthAddr is the listening address on which authenticated APIs are provided. + AuthAddr string `toml:",omitempty"` + + // AuthPort is the port number on which authenticated APIs are provided. + AuthPort int `toml:",omitempty"` + + // AuthVirtualHosts is the list of virtual hostnames which are allowed on incoming requests + // for the authenticated api. This is by default {'localhost'}. + AuthVirtualHosts []string `toml:",omitempty"` + // WSHost is the host interface on which to start the websocket RPC server. If // this field is empty, no websocket API endpoint will be started. WSHost string @@ -190,6 +201,9 @@ type Config struct { // AllowUnprotectedTxs allows non EIP-155 protected transactions to be send over RPC. AllowUnprotectedTxs bool `toml:",omitempty"` + + // JWTSecret is the hex-encoded jwt secret. + JWTSecret string `toml:",omitempty"` } // IPCEndpoint resolves an IPC endpoint based on a configured value, taking into @@ -248,7 +262,7 @@ func (c *Config) HTTPEndpoint() string { // DefaultHTTPEndpoint returns the HTTP endpoint used by default. func DefaultHTTPEndpoint() string { - config := &Config{HTTPHost: DefaultHTTPHost, HTTPPort: DefaultHTTPPort} + config := &Config{HTTPHost: DefaultHTTPHost, HTTPPort: DefaultHTTPPort, AuthPort: DefaultAuthPort} return config.HTTPEndpoint() } diff --git a/node/defaults.go b/node/defaults.go index c685dde5d1..fd0277e29d 100644 --- a/node/defaults.go +++ b/node/defaults.go @@ -34,12 +34,25 @@ const ( DefaultWSPort = 8546 // Default TCP port for the websocket RPC server DefaultGraphQLHost = "localhost" // Default host interface for the GraphQL server DefaultGraphQLPort = 8547 // Default TCP port for the GraphQL server + DefaultAuthHost = "localhost" // Default host interface for the authenticated apis + DefaultAuthPort = 8551 // Default port for the authenticated apis +) + +var ( + DefaultAuthCors = []string{"localhost"} // Default cors domain for the authenticated apis + DefaultAuthVhosts = []string{"localhost"} // Default virtual hosts for the authenticated apis + DefaultAuthOrigins = []string{"localhost"} // Default origins for the authenticated apis + DefaultAuthPrefix = "" // Default prefix for the authenticated apis + DefaultAuthModules = []string{"eth", "engine"} ) // DefaultConfig contains reasonable default settings. var DefaultConfig = Config{ DataDir: DefaultDataDir(), HTTPPort: DefaultHTTPPort, + AuthAddr: DefaultAuthHost, + AuthPort: DefaultAuthPort, + AuthVirtualHosts: DefaultAuthVhosts, HTTPModules: []string{"net", "web3"}, HTTPVirtualHosts: []string{"localhost"}, HTTPTimeouts: rpc.DefaultHTTPTimeouts, diff --git a/node/endpoints.go b/node/endpoints.go index 1f85a52131..166e39adb4 100644 --- a/node/endpoints.go +++ b/node/endpoints.go @@ -60,8 +60,10 @@ func checkModuleAvailability(modules []string, apis []rpc.API) (bad, available [ } } for _, name := range modules { - if _, ok := availableSet[name]; !ok && name != rpc.MetadataApi { - bad = append(bad, name) + if _, ok := availableSet[name]; !ok { + if name != rpc.MetadataApi && name != rpc.EngineApi { + bad = append(bad, name) + } } } return bad, available diff --git a/node/jwt_handler.go b/node/jwt_handler.go new file mode 100644 index 0000000000..28d5b87c60 --- /dev/null +++ b/node/jwt_handler.go @@ -0,0 +1,78 @@ +// Copyright 2022 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package node + +import ( + "net/http" + "strings" + "time" + + "github.com/golang-jwt/jwt/v4" +) + +type jwtHandler struct { + keyFunc func(token *jwt.Token) (interface{}, error) + next http.Handler +} + +// newJWTHandler creates a http.Handler with jwt authentication support. +func newJWTHandler(secret []byte, next http.Handler) http.Handler { + return &jwtHandler{ + keyFunc: func(token *jwt.Token) (interface{}, error) { + return secret, nil + }, + next: next, + } +} + +// ServeHTTP implements http.Handler +func (handler *jwtHandler) ServeHTTP(out http.ResponseWriter, r *http.Request) { + var ( + strToken string + claims jwt.RegisteredClaims + ) + if auth := r.Header.Get("Authorization"); strings.HasPrefix(auth, "Bearer ") { + strToken = strings.TrimPrefix(auth, "Bearer ") + } + if len(strToken) == 0 { + http.Error(out, "missing token", http.StatusForbidden) + return + } + // We explicitly set only HS256 allowed, and also disables the + // claim-check: the RegisteredClaims internally requires 'iat' to + // be no later than 'now', but we allow for a bit of drift. + token, err := jwt.ParseWithClaims(strToken, &claims, handler.keyFunc, + jwt.WithValidMethods([]string{"HS256"}), + jwt.WithoutClaimsValidation()) + + switch { + case err != nil: + http.Error(out, err.Error(), http.StatusForbidden) + case !token.Valid: + http.Error(out, "invalid token", http.StatusForbidden) + case !claims.VerifyExpiresAt(time.Now(), false): // optional + http.Error(out, "token is expired", http.StatusForbidden) + case claims.IssuedAt == nil: + http.Error(out, "missing issued-at", http.StatusForbidden) + case time.Since(claims.IssuedAt.Time) > 5*time.Second: + http.Error(out, "stale token", http.StatusForbidden) + case time.Until(claims.IssuedAt.Time) > 5*time.Second: + http.Error(out, "future token", http.StatusForbidden) + default: + handler.next.ServeHTTP(out, r) + } +} diff --git a/node/node.go b/node/node.go index ceab1c9090..7c540306db 100644 --- a/node/node.go +++ b/node/node.go @@ -17,6 +17,7 @@ package node import ( + crand "crypto/rand" "errors" "fmt" "net/http" @@ -27,6 +28,8 @@ import ( "sync" "github.com/ethereum/go-ethereum/accounts" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/event" @@ -55,6 +58,8 @@ type Node struct { rpcAPIs []rpc.API // List of APIs currently provided by the node http *httpServer // ws *httpServer // + httpAuth *httpServer // + wsAuth *httpServer // ipc *ipcServer // Stores information about the ipc http server inprocHandler *rpc.Server // In-process RPC request handler to process the API requests @@ -147,7 +152,9 @@ func New(conf *Config) (*Node, error) { // Configure RPC servers. node.http = newHTTPServer(node.log, conf.HTTPTimeouts) + node.httpAuth = newHTTPServer(node.log, conf.HTTPTimeouts) node.ws = newHTTPServer(node.log, rpc.DefaultHTTPTimeouts) + node.wsAuth = newHTTPServer(node.log, rpc.DefaultHTTPTimeouts) node.ipc = newIPCServer(node.log, conf.IPCEndpoint()) return node, nil @@ -335,7 +342,41 @@ func (n *Node) closeDataDir() { } } -// configureRPC is a helper method to configure all the various RPC endpoints during node +// obtainJWTSecret loads the jwt-secret, either from the provided config, +// or from the default location. If neither of those are present, it generates +// a new secret and stores to the default location. +func (n *Node) obtainJWTSecret(cliParam string) ([]byte, error) { + fileName := cliParam + if len(fileName) == 0 { + // no path provided, use default + fileName = n.ResolvePath(datadirJWTKey) + } + // try reading from file + log.Debug("Reading JWT secret", "path", fileName) + if data, err := os.ReadFile(fileName); err == nil { + jwtSecret := common.FromHex(strings.TrimSpace(string(data))) + if len(jwtSecret) == 32 { + return jwtSecret, nil + } + log.Error("Invalid JWT secret", "path", fileName, "length", len(jwtSecret)) + return nil, errors.New("invalid JWT secret") + } + // Need to generate one + jwtSecret := make([]byte, 32) + crand.Read(jwtSecret) + // if we're in --dev mode, don't bother saving, just show it + if fileName == "" { + log.Info("Generated ephemeral JWT secret", "secret", hexutil.Encode(jwtSecret)) + return jwtSecret, nil + } + if err := os.WriteFile(fileName, []byte(hexutil.Encode(jwtSecret)), 0600); err != nil { + return nil, err + } + log.Info("Generated JWT secret", "path", fileName) + return jwtSecret, nil +} + +// startRPC is a helper method to configure all the various RPC endpoints during node // startup. It's not meant to be called at any time afterwards as it makes certain // assumptions about the state of the node. func (n *Node) startRPC() error { @@ -349,55 +390,125 @@ func (n *Node) startRPC() error { return err } } + var ( + servers []*httpServer + open, all = n.GetAPIs() + ) - // Configure HTTP. - if n.config.HTTPHost != "" { - config := httpConfig{ + initHttp := func(server *httpServer, apis []rpc.API, port int) error { + if err := server.setListenAddr(n.config.HTTPHost, port); err != nil { + return err + } + if err := server.enableRPC(apis, httpConfig{ CorsAllowedOrigins: n.config.HTTPCors, Vhosts: n.config.HTTPVirtualHosts, Modules: n.config.HTTPModules, prefix: n.config.HTTPPathPrefix, - } - if err := n.http.setListenAddr(n.config.HTTPHost, n.config.HTTPPort); err != nil { - return err - } - if err := n.http.enableRPC(n.rpcAPIs, config); err != nil { + }); err != nil { return err } + servers = append(servers, server) + return nil } - // Configure WebSocket. - if n.config.WSHost != "" { - server := n.wsServerForPort(n.config.WSPort) - config := wsConfig{ + initWS := func(apis []rpc.API, port int) error { + server := n.wsServerForPort(port, false) + if err := server.setListenAddr(n.config.WSHost, port); err != nil { + return err + } + if err := server.enableWS(n.rpcAPIs, wsConfig{ Modules: n.config.WSModules, Origins: n.config.WSOrigins, prefix: n.config.WSPathPrefix, - } - if err := server.setListenAddr(n.config.WSHost, n.config.WSPort); err != nil { - return err - } - if err := server.enableWS(n.rpcAPIs, config); err != nil { + }); err != nil { return err } + servers = append(servers, server) + return nil } - if err := n.http.start(); err != nil { - return err + initAuth := func(apis []rpc.API, port int, secret []byte) error { + // Enable auth via HTTP + server := n.httpAuth + if err := server.setListenAddr(n.config.AuthAddr, port); err != nil { + return err + } + if err := server.enableRPC(apis, httpConfig{ + CorsAllowedOrigins: DefaultAuthCors, + Vhosts: n.config.AuthVirtualHosts, + Modules: DefaultAuthModules, + prefix: DefaultAuthPrefix, + jwtSecret: secret, + }); err != nil { + return err + } + servers = append(servers, server) + // Enable auth via WS + server = n.wsServerForPort(port, true) + if err := server.setListenAddr(n.config.AuthAddr, port); err != nil { + return err + } + if err := server.enableWS(apis, wsConfig{ + Modules: DefaultAuthModules, + Origins: DefaultAuthOrigins, + prefix: DefaultAuthPrefix, + jwtSecret: secret, + }); err != nil { + return err + } + servers = append(servers, server) + return nil } - return n.ws.start() + + // Set up HTTP. + if n.config.HTTPHost != "" { + // Configure legacy unauthenticated HTTP. + if err := initHttp(n.http, open, n.config.HTTPPort); err != nil { + return err + } + } + // Configure WebSocket. + if n.config.WSHost != "" { + // legacy unauthenticated + if err := initWS(open, n.config.WSPort); err != nil { + return err + } + } + // Configure authenticated API + if len(open) != len(all) { + jwtSecret, err := n.obtainJWTSecret(n.config.JWTSecret) + if err != nil { + return err + } + if err := initAuth(all, n.config.AuthPort, jwtSecret); err != nil { + return err + } + } + // Start the servers + for _, server := range servers { + if err := server.start(); err != nil { + return err + } + } + return nil } -func (n *Node) wsServerForPort(port int) *httpServer { - if n.config.HTTPHost == "" || n.http.port == port { - return n.http +func (n *Node) wsServerForPort(port int, authenticated bool) *httpServer { + httpServer, wsServer := n.http, n.ws + if authenticated { + httpServer, wsServer = n.httpAuth, n.wsAuth } - return n.ws + if n.config.HTTPHost == "" || httpServer.port == port { + return httpServer + } + return wsServer } func (n *Node) stopRPC() { n.http.stop() n.ws.stop() + n.httpAuth.stop() + n.wsAuth.stop() n.ipc.stop() n.stopInProc() } @@ -458,6 +569,17 @@ func (n *Node) RegisterAPIs(apis []rpc.API) { n.rpcAPIs = append(n.rpcAPIs, apis...) } +// GetAPIs return two sets of APIs, both the ones that do not require +// authentication, and the complete set +func (n *Node) GetAPIs() (unauthenticated, all []rpc.API) { + for _, api := range n.rpcAPIs { + if !api.Authenticated { + unauthenticated = append(unauthenticated, api) + } + } + return unauthenticated, n.rpcAPIs +} + // RegisterHandler mounts a handler on the given path on the canonical HTTP server. // // The name of the handler is shown in a log message when the HTTP server starts diff --git a/node/node_test.go b/node/node_test.go index e104630600..84f61f0c44 100644 --- a/node/node_test.go +++ b/node/node_test.go @@ -393,7 +393,7 @@ func TestLifecycleTerminationGuarantee(t *testing.T) { // on the given prefix func TestRegisterHandler_Successful(t *testing.T) { node := createNode(t, 7878, 7979) - + defer node.Close() // create and mount handler handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("success")) @@ -577,13 +577,13 @@ func (test rpcPrefixTest) check(t *testing.T, node *Node) { } } for _, path := range test.wantWS { - err := wsRequest(t, wsBase+path, "") + err := wsRequest(t, wsBase+path) if err != nil { t.Errorf("Error: %s: WebSocket connection failed: %v", path, err) } } for _, path := range test.wantNoWS { - err := wsRequest(t, wsBase+path, "") + err := wsRequest(t, wsBase+path) if err == nil { t.Errorf("Error: %s: WebSocket connection succeeded for path in wantNoWS", path) } diff --git a/node/rpcstack.go b/node/rpcstack.go index 2c55a070b2..d9c41cca57 100644 --- a/node/rpcstack.go +++ b/node/rpcstack.go @@ -40,13 +40,15 @@ type httpConfig struct { CorsAllowedOrigins []string Vhosts []string prefix string // path prefix on which to mount http handler + jwtSecret []byte // optional JWT secret } // wsConfig is the JSON-RPC/Websocket configuration type wsConfig struct { - Origins []string - Modules []string - prefix string // path prefix on which to mount ws handler + Origins []string + Modules []string + prefix string // path prefix on which to mount ws handler + jwtSecret []byte // optional JWT secret } type rpcHandler struct { @@ -157,7 +159,7 @@ func (h *httpServer) start() error { } // Log http endpoint. h.log.Info("HTTP server started", - "endpoint", listener.Addr(), + "endpoint", listener.Addr(), "auth", (h.httpConfig.jwtSecret != nil), "prefix", h.httpConfig.prefix, "cors", strings.Join(h.httpConfig.CorsAllowedOrigins, ","), "vhosts", strings.Join(h.httpConfig.Vhosts, ","), @@ -285,7 +287,7 @@ func (h *httpServer) enableRPC(apis []rpc.API, config httpConfig) error { } h.httpConfig = config h.httpHandler.Store(&rpcHandler{ - Handler: NewHTTPHandlerStack(srv, config.CorsAllowedOrigins, config.Vhosts), + Handler: NewHTTPHandlerStack(srv, config.CorsAllowedOrigins, config.Vhosts, config.jwtSecret), server: srv, }) return nil @@ -309,7 +311,6 @@ func (h *httpServer) enableWS(apis []rpc.API, config wsConfig) error { if h.wsAllowed() { return fmt.Errorf("JSON-RPC over WebSocket is already enabled") } - // Create RPC server and handler. srv := rpc.NewServer() if err := RegisterApis(apis, config.Modules, srv, false); err != nil { @@ -317,7 +318,7 @@ func (h *httpServer) enableWS(apis []rpc.API, config wsConfig) error { } h.wsConfig = config h.wsHandler.Store(&rpcHandler{ - Handler: srv.WebsocketHandler(config.Origins), + Handler: NewWSHandlerStack(srv.WebsocketHandler(config.Origins), config.jwtSecret), server: srv, }) return nil @@ -362,13 +363,24 @@ func isWebsocket(r *http.Request) bool { } // NewHTTPHandlerStack returns wrapped http-related handlers -func NewHTTPHandlerStack(srv http.Handler, cors []string, vhosts []string) http.Handler { +func NewHTTPHandlerStack(srv http.Handler, cors []string, vhosts []string, jwtSecret []byte) http.Handler { // Wrap the CORS-handler within a host-handler handler := newCorsHandler(srv, cors) handler = newVHostHandler(vhosts, handler) + if len(jwtSecret) != 0 { + handler = newJWTHandler(jwtSecret, handler) + } return newGzipHandler(handler) } +// NewWSHandlerStack returns a wrapped ws-related handler. +func NewWSHandlerStack(srv http.Handler, jwtSecret []byte) http.Handler { + if len(jwtSecret) != 0 { + return newJWTHandler(jwtSecret, srv) + } + return srv +} + func newCorsHandler(srv http.Handler, allowedOrigins []string) http.Handler { // disable CORS support if user has not specified a custom CORS configuration if len(allowedOrigins) == 0 { diff --git a/node/rpcstack_test.go b/node/rpcstack_test.go index f92f0ba396..60fcab5a90 100644 --- a/node/rpcstack_test.go +++ b/node/rpcstack_test.go @@ -24,10 +24,12 @@ import ( "strconv" "strings" "testing" + "time" "github.com/ethereum/go-ethereum/internal/testlog" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/rpc" + "github.com/golang-jwt/jwt/v4" "github.com/gorilla/websocket" "github.com/stretchr/testify/assert" ) @@ -146,12 +148,12 @@ func TestWebsocketOrigins(t *testing.T) { srv := createAndStartServer(t, &httpConfig{}, true, &wsConfig{Origins: splitAndTrim(tc.spec)}) url := fmt.Sprintf("ws://%v", srv.listenAddr()) for _, origin := range tc.expOk { - if err := wsRequest(t, url, origin); err != nil { + if err := wsRequest(t, url, "Origin", origin); err != nil { t.Errorf("spec '%v', origin '%v': expected ok, got %v", tc.spec, origin, err) } } for _, origin := range tc.expFail { - if err := wsRequest(t, url, origin); err == nil { + if err := wsRequest(t, url, "Origin", origin); err == nil { t.Errorf("spec '%v', origin '%v': expected not to allow, got ok", tc.spec, origin) } } @@ -243,13 +245,18 @@ func createAndStartServer(t *testing.T, conf *httpConfig, ws bool, wsConf *wsCon } // wsRequest attempts to open a WebSocket connection to the given URL. -func wsRequest(t *testing.T, url, browserOrigin string) error { +func wsRequest(t *testing.T, url string, extraHeaders ...string) error { t.Helper() - t.Logf("checking WebSocket on %s (origin %q)", url, browserOrigin) + //t.Logf("checking WebSocket on %s (origin %q)", url, browserOrigin) headers := make(http.Header) - if browserOrigin != "" { - headers.Set("Origin", browserOrigin) + // Apply extra headers. + if len(extraHeaders)%2 != 0 { + panic("odd extraHeaders length") + } + for i := 0; i < len(extraHeaders); i += 2 { + key, value := extraHeaders[i], extraHeaders[i+1] + headers.Set(key, value) } conn, _, err := websocket.DefaultDialer.Dial(url, headers) if conn != nil { @@ -291,3 +298,79 @@ func rpcRequest(t *testing.T, url string, extraHeaders ...string) *http.Response } return resp } + +type testClaim map[string]interface{} + +func (testClaim) Valid() error { + return nil +} + +func TestJWT(t *testing.T) { + var secret = []byte("secret") + issueToken := func(secret []byte, method jwt.SigningMethod, input map[string]interface{}) string { + if method == nil { + method = jwt.SigningMethodHS256 + } + ss, _ := jwt.NewWithClaims(method, testClaim(input)).SignedString(secret) + return ss + } + expOk := []string{ + fmt.Sprintf("Bearer %v", issueToken(secret, nil, testClaim{"iat": time.Now().Unix()})), + fmt.Sprintf("Bearer %v", issueToken(secret, nil, testClaim{"iat": time.Now().Unix() + 4})), + fmt.Sprintf("Bearer %v", issueToken(secret, nil, testClaim{"iat": time.Now().Unix() - 4})), + fmt.Sprintf("Bearer %v", issueToken(secret, nil, testClaim{ + "iat": time.Now().Unix(), + "exp": time.Now().Unix() + 2, + })), + fmt.Sprintf("Bearer %v", issueToken(secret, nil, testClaim{ + "iat": time.Now().Unix(), + "bar": "baz", + })), + } + expFail := []string{ + // future + fmt.Sprintf("Bearer %v", issueToken(secret, nil, testClaim{"iat": time.Now().Unix() + 6})), + // stale + fmt.Sprintf("Bearer %v", issueToken(secret, nil, testClaim{"iat": time.Now().Unix() - 6})), + // wrong algo + fmt.Sprintf("Bearer %v", issueToken(secret, jwt.SigningMethodHS512, testClaim{"iat": time.Now().Unix() + 4})), + // expired + fmt.Sprintf("Bearer %v", issueToken(secret, nil, testClaim{"iat": time.Now().Unix(), "exp": time.Now().Unix()})), + // missing mandatory iat + fmt.Sprintf("Bearer %v", issueToken(secret, nil, testClaim{})), + // wrong secret + fmt.Sprintf("Bearer %v", issueToken([]byte("wrong"), nil, testClaim{"iat": time.Now().Unix()})), + fmt.Sprintf("Bearer %v", issueToken([]byte{}, nil, testClaim{"iat": time.Now().Unix()})), + fmt.Sprintf("Bearer %v", issueToken(nil, nil, testClaim{"iat": time.Now().Unix()})), + // Various malformed syntax + fmt.Sprintf("%v", issueToken(secret, nil, testClaim{"iat": time.Now().Unix()})), + fmt.Sprintf("Bearer %v", issueToken(secret, nil, testClaim{"iat": time.Now().Unix()})), + fmt.Sprintf("bearer %v", issueToken(secret, nil, testClaim{"iat": time.Now().Unix()})), + fmt.Sprintf("Bearer: %v", issueToken(secret, nil, testClaim{"iat": time.Now().Unix()})), + fmt.Sprintf("Bearer:%v", issueToken(secret, nil, testClaim{"iat": time.Now().Unix()})), + fmt.Sprintf("Bearer\t%v", issueToken(secret, nil, testClaim{"iat": time.Now().Unix()})), + fmt.Sprintf("Bearer \t%v", issueToken(secret, nil, testClaim{"iat": time.Now().Unix()})), + } + srv := createAndStartServer(t, &httpConfig{jwtSecret: []byte("secret")}, + true, &wsConfig{Origins: []string{"*"}, jwtSecret: []byte("secret")}) + wsUrl := fmt.Sprintf("ws://%v", srv.listenAddr()) + htUrl := fmt.Sprintf("http://%v", srv.listenAddr()) + + for i, token := range expOk { + if err := wsRequest(t, wsUrl, "Authorization", token); err != nil { + t.Errorf("test %d-ws, token '%v': expected ok, got %v", i, token, err) + } + if resp := rpcRequest(t, htUrl, "Authorization", token); resp.StatusCode != 200 { + t.Errorf("test %d-http, token '%v': expected ok, got %v", i, token, resp.StatusCode) + } + } + for i, token := range expFail { + if err := wsRequest(t, wsUrl, "Authorization", token); err == nil { + t.Errorf("tc %d-ws, token '%v': expected not to allow, got ok", i, token) + } + if resp := rpcRequest(t, htUrl, "Authorization", token); resp.StatusCode != 403 { + t.Errorf("tc %d-http, token '%v': expected not to allow, got %v", i, token, resp.StatusCode) + } + } + srv.stop() +} diff --git a/p2p/peer.go b/p2p/peer.go index 8f564e776d..257027a5b7 100644 --- a/p2p/peer.go +++ b/p2p/peer.go @@ -332,11 +332,11 @@ func (p *Peer) handle(msg Msg) error { msg.Discard() go SendItems(p.rw, pongMsg) case msg.Code == discMsg: - var reason [1]DiscReason // This is the last message. We don't need to discard or // check errors because, the connection will be closed after it. - rlp.Decode(msg.Payload, &reason) - return reason[0] + var m struct{ R DiscReason } + rlp.Decode(msg.Payload, &m) + return m.R case msg.Code < baseProtocolLength: // ignore other base protocol messages return msg.Discard() diff --git a/p2p/peer_error.go b/p2p/peer_error.go index 393cc86b09..aad1a65c7a 100644 --- a/p2p/peer_error.go +++ b/p2p/peer_error.go @@ -54,7 +54,7 @@ func (pe *peerError) Error() string { var errProtocolReturned = errors.New("protocol returned") -type DiscReason uint +type DiscReason uint8 const ( DiscRequested DiscReason = iota diff --git a/p2p/server.go b/p2p/server.go index bcfc1bd10b..138975e54b 100644 --- a/p2p/server.go +++ b/p2p/server.go @@ -943,9 +943,8 @@ func (srv *Server) setupConn(c *conn, flags connFlag, dialDest *enode.Node) erro } // If dialing, figure out the remote public key. - var dialPubkey *ecdsa.PublicKey if dialDest != nil { - dialPubkey = new(ecdsa.PublicKey) + dialPubkey := new(ecdsa.PublicKey) if err := dialDest.Load((*enode.Secp256k1)(dialPubkey)); err != nil { err = errors.New("dial destination doesn't have a secp256k1 public key") srv.log.Trace("Setting up connection failed", "addr", c.fd.RemoteAddr(), "conn", c.flags, "err", err) diff --git a/p2p/simulations/http_test.go b/p2p/simulations/http_test.go index 6d7f0b6d7a..f5172f3f23 100644 --- a/p2p/simulations/http_test.go +++ b/p2p/simulations/http_test.go @@ -141,7 +141,7 @@ func (t *testService) Stop() error { // message with the given code func (t *testService) handshake(rw p2p.MsgReadWriter, code uint64) error { errc := make(chan error, 2) - go func() { errc <- p2p.Send(rw, code, struct{}{}) }() + go func() { errc <- p2p.SendItems(rw, code) }() go func() { errc <- p2p.ExpectMsg(rw, code, struct{}{}) }() for i := 0; i < 2; i++ { if err := <-errc; err != nil { diff --git a/params/bootnodes.go b/params/bootnodes.go index 5460246626..7e43cd8b85 100644 --- a/params/bootnodes.go +++ b/params/bootnodes.go @@ -24,12 +24,12 @@ var MainnetBootnodes = []string{ // Ethereum Foundation Go Bootnodes "enode://d860a01f9722d78051619d1e2351aba3f43f943f6f00718d1b9baa4101932a1f5011f16bb2b1bb35db20d6fe28fa0bf09636d26a87d31de9ec6203eeedb1f666@18.138.108.67:30303", // bootnode-aws-ap-southeast-1-001 "enode://22a8232c3abc76a16ae9d6c3b164f98775fe226f0917b0ca871128a74a8e9630b458460865bab457221f1d448dd9791d24c4e5d88786180ac185df813a68d4de@3.209.45.79:30303", // bootnode-aws-us-east-1-001 - "enode://ca6de62fce278f96aea6ec5a2daadb877e51651247cb96ee310a318def462913b653963c155a0ef6c7d50048bba6e6cea881130857413d9f50a621546b590758@34.255.23.113:30303", // bootnode-aws-eu-west-1-001 - "enode://279944d8dcd428dffaa7436f25ca0ca43ae19e7bcf94a8fb7d1641651f92d121e972ac2e8f381414b80cc8e5555811c2ec6e1a99bb009b3f53c4c69923e11bd8@35.158.244.151:30303", // bootnode-aws-eu-central-1-001 "enode://8499da03c47d637b20eee24eec3c356c9a2e6148d6fe25ca195c7949ab8ec2c03e3556126b0d7ed644675e78c4318b08691b7b57de10e5f0d40d05b09238fa0a@52.187.207.27:30303", // bootnode-azure-australiaeast-001 "enode://103858bdb88756c71f15e9b5e09b56dc1be52f0a5021d46301dbbfb7e130029cc9d0d6f73f693bc29b665770fff7da4d34f3c6379fe12721b5d7a0bcb5ca1fc1@191.234.162.198:30303", // bootnode-azure-brazilsouth-001 "enode://715171f50508aba88aecd1250af392a45a330af91d7b90701c436b618c86aaa1589c9184561907bebbb56439b8f8787bc01f49a7c77276c58c1b09822d75e8e8@52.231.165.108:30303", // bootnode-azure-koreasouth-001 "enode://5d6d7cd20d6da4bb83a1d28cadb5d409b64edf314c0335df658c1a54e32c7c4a7ab7823d57c39b6a757556e68ff1df17c748b698544a55cb488b52479a92b60f@104.42.217.25:30303", // bootnode-azure-westus-001 + "enode://2b252ab6a1d0f971d9722cb839a42cb81db019ba44c08754628ab4a823487071b5695317c8ccd085219c3a03af063495b2f1da8d18218da2d6a82981b45e6ffc@65.108.70.101:30303", // bootnode-hetzner-hel + "enode://4aeb4ab6c14b23e2c4cfdce879c04b0748a20d8e9b59e25ded2a08143e265c6c25936e74cbc8e641e3312ca288673d91f2f93f8e277de3cfa444ecdaaf982052@157.90.35.166:30303", // bootnode-hetzner-fsn } // RopstenBootnodes are the enode URLs of the P2P bootstrap nodes running on the @@ -90,6 +90,13 @@ var BorMainnetBootnodes = []string{ "enode://88116f4295f5a31538ae409e4d44ad40d22e44ee9342869e7d68bdec55b0f83c1530355ce8b41fbec0928a7d75a5745d528450d30aec92066ab6ba1ee351d710@159.203.9.164:30303", } +var KilnBootnodes = []string{ + "enode://c354db99124f0faf677ff0e75c3cbbd568b2febc186af664e0c51ac435609badedc67a18a63adb64dacc1780a28dcefebfc29b83fd1a3f4aa3c0eb161364cf94@164.92.130.5:30303", + "enode://d41af1662434cad0a88fe3c7c92375ec5719f4516ab6d8cb9695e0e2e815382c767038e72c224e04040885157da47422f756c040a9072676c6e35c5b1a383cce@138.68.66.103:30303", + "enode://91a745c3fb069f6b99cad10b75c463d527711b106b622756e9ef9f12d2631b6cb885f831d1c8731b9bc7177cae5e1ea1f1be087f86d7d30b590a91f22bc041b0@165.232.180.230:30303", + "enode://b74bd2e8a9f0c53f0c93bcce80818f2f19439fd807af5c7fbc3efb10130c6ee08be8f3aaec7dc0a057ad7b2a809c8f34dc62431e9b6954b07a6548cc59867884@164.92.140.200:30303", +} + var V5Bootnodes = []string{ // Teku team's bootnode "enr:-KG4QOtcP9X1FbIMOe17QNMKqDxCpm14jcX5tiOE4_TyMrFqbmhPZHK_ZPG2Gxb1GE2xdtodOfx9-cgvNtxnRyHEmC0ghGV0aDKQ9aX9QgAAAAD__________4JpZIJ2NIJpcIQDE8KdiXNlY3AyNTZrMaEDhpehBDbZjM_L9ek699Y7vhUJ-eAdMyQW_Fil522Y0fODdGNwgiMog3VkcIIjKA", diff --git a/params/config.go b/params/config.go index 16bac00ddf..47e22f986c 100644 --- a/params/config.go +++ b/params/config.go @@ -36,6 +36,7 @@ var ( MumbaiGenesisHash = common.HexToHash("0x7b66506a9ebdbf30d32b43c5f15a3b1216269a1ec3a75aa3182b86176a2b1ca7") BorMainnetGenesisHash = common.HexToHash("0xa9c28ce2141b56c474f1dc504bee9b01eb1bd7d1a507580d5519d4437a97de1b") SepoliaGenesisHash = common.HexToHash("0x25a5cc106eea7138acab33231d7160d69cb777ee0c2c553fcddf5138993e6dd9") + KilnGenesisHash = common.HexToHash("0x51c7fe41be669f69c45c33a56982cbde405313342d9e2b00d7c91a7b284dd4f8") ) // TrustedCheckpoints associates each known checkpoint with the genesis hash of @@ -403,7 +404,7 @@ var ( AllCliqueProtocolChanges = &ChainConfig{big.NewInt(1337), big.NewInt(0), nil, false, big.NewInt(0), common.Hash{}, big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), nil, nil, nil, nil, &CliqueConfig{Period: 0, Epoch: 30000}, &BorConfig{BurntContract: map[string]string{"0": "0x000000000000000000000000000000000000dead"}}} TestChainConfig = &ChainConfig{big.NewInt(1), big.NewInt(0), nil, false, big.NewInt(0), common.Hash{}, big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), nil, nil, new(EthashConfig), nil, &BorConfig{BurntContract: map[string]string{"0": "0x000000000000000000000000000000000000dead"}}} - TestRules = TestChainConfig.Rules(new(big.Int)) + TestRules = TestChainConfig.Rules(new(big.Int), false) ) // TrustedCheckpoint represents a set of post-processed trie roots (CHT and @@ -589,7 +590,7 @@ func (c *ChainConfig) String() string { default: engine = "unknown" } - return fmt.Sprintf("{ChainID: %v Homestead: %v DAO: %v DAOSupport: %v EIP150: %v EIP155: %v EIP158: %v Byzantium: %v Constantinople: %v Petersburg: %v Istanbul: %v, Muir Glacier: %v, Berlin: %v, London: %v, Arrow Glacier: %v, MergeFork: %v, Engine: %v}", + return fmt.Sprintf("{ChainID: %v Homestead: %v DAO: %v DAOSupport: %v EIP150: %v EIP155: %v EIP158: %v Byzantium: %v Constantinople: %v Petersburg: %v Istanbul: %v, Muir Glacier: %v, Berlin: %v, London: %v, Arrow Glacier: %v, MergeFork: %v, Terminal TD: %v, Engine: %v}", c.ChainID, c.HomesteadBlock, c.DAOForkBlock, @@ -606,6 +607,7 @@ func (c *ChainConfig) String() string { c.LondonBlock, c.ArrowGlacierBlock, c.MergeForkBlock, + c.TerminalTotalDifficulty, engine, ) } @@ -870,10 +872,11 @@ type Rules struct { IsHomestead, IsEIP150, IsEIP155, IsEIP158 bool IsByzantium, IsConstantinople, IsPetersburg, IsIstanbul bool IsBerlin, IsLondon bool + IsMerge bool } // Rules ensures c's ChainID is not nil. -func (c *ChainConfig) Rules(num *big.Int) Rules { +func (c *ChainConfig) Rules(num *big.Int, isMerge bool) Rules { chainID := c.ChainID if chainID == nil { chainID = new(big.Int) @@ -890,5 +893,6 @@ func (c *ChainConfig) Rules(num *big.Int) Rules { IsIstanbul: c.IsIstanbul(num), IsBerlin: c.IsBerlin(num), IsLondon: c.IsLondon(num), + IsMerge: isMerge, } } diff --git a/params/version.go b/params/version.go index 2fea76942d..b39e363b92 100644 --- a/params/version.go +++ b/params/version.go @@ -23,8 +23,8 @@ import ( const ( VersionMajor = 0 // Major version component of the current release VersionMinor = 2 // Minor version component of the current release - VersionPatch = 15 // Patch version component of the current release - VersionMeta = "beta-3" // Version metadata to append to the version string + VersionPatch = 16 // Patch version component of the current release + VersionMeta = "beta-1" // Version metadata to append to the version string ) // Version holds the textual version string. diff --git a/rlp/decode.go b/rlp/decode.go index 5f2e5ad5fe..9214dbfb37 100644 --- a/rlp/decode.go +++ b/rlp/decode.go @@ -27,6 +27,8 @@ import ( "reflect" "strings" "sync" + + "github.com/ethereum/go-ethereum/rlp/internal/rlpstruct" ) //lint:ignore ST1012 EOL is not an error. @@ -148,7 +150,7 @@ var ( bigInt = reflect.TypeOf(big.Int{}) ) -func makeDecoder(typ reflect.Type, tags tags) (dec decoder, err error) { +func makeDecoder(typ reflect.Type, tags rlpstruct.Tags) (dec decoder, err error) { kind := typ.Kind() switch { case typ == rawValueType: @@ -220,55 +222,20 @@ func decodeBigIntNoPtr(s *Stream, val reflect.Value) error { } func decodeBigInt(s *Stream, val reflect.Value) error { - var buffer []byte - kind, size, err := s.Kind() - switch { - case err != nil: - return wrapStreamError(err, val.Type()) - case kind == List: - return wrapStreamError(ErrExpectedString, val.Type()) - case kind == Byte: - buffer = s.uintbuf[:1] - buffer[0] = s.byteval - s.kind = -1 // re-arm Kind - case size == 0: - // Avoid zero-length read. - s.kind = -1 - case size <= uint64(len(s.uintbuf)): - // For integers smaller than s.uintbuf, allocating a buffer - // can be avoided. - buffer = s.uintbuf[:size] - if err := s.readFull(buffer); err != nil { - return wrapStreamError(err, val.Type()) - } - // Reject inputs where single byte encoding should have been used. - if size == 1 && buffer[0] < 128 { - return wrapStreamError(ErrCanonSize, val.Type()) - } - default: - // For large integers, a temporary buffer is needed. - buffer = make([]byte, size) - if err := s.readFull(buffer); err != nil { - return wrapStreamError(err, val.Type()) - } - } - - // Reject leading zero bytes. - if len(buffer) > 0 && buffer[0] == 0 { - return wrapStreamError(ErrCanonInt, val.Type()) - } - - // Set the integer bytes. i := val.Interface().(*big.Int) if i == nil { i = new(big.Int) val.Set(reflect.ValueOf(i)) } - i.SetBytes(buffer) + + err := s.decodeBigInt(i) + if err != nil { + return wrapStreamError(err, val.Type()) + } return nil } -func makeListDecoder(typ reflect.Type, tag tags) (decoder, error) { +func makeListDecoder(typ reflect.Type, tag rlpstruct.Tags) (decoder, error) { etype := typ.Elem() if etype.Kind() == reflect.Uint8 && !reflect.PtrTo(etype).Implements(decoderInterface) { if typ.Kind() == reflect.Array { @@ -276,7 +243,7 @@ func makeListDecoder(typ reflect.Type, tag tags) (decoder, error) { } return decodeByteSlice, nil } - etypeinfo := theTC.infoWhileGenerating(etype, tags{}) + etypeinfo := theTC.infoWhileGenerating(etype, rlpstruct.Tags{}) if etypeinfo.decoderErr != nil { return nil, etypeinfo.decoderErr } @@ -286,7 +253,7 @@ func makeListDecoder(typ reflect.Type, tag tags) (decoder, error) { dec = func(s *Stream, val reflect.Value) error { return decodeListArray(s, val, etypeinfo.decoder) } - case tag.tail: + case tag.Tail: // A slice with "tail" tag can occur as the last field // of a struct and is supposed to swallow all remaining // list elements. The struct decoder already called s.List, @@ -451,16 +418,16 @@ func zeroFields(structval reflect.Value, fields []field) { } // makePtrDecoder creates a decoder that decodes into the pointer's element type. -func makePtrDecoder(typ reflect.Type, tag tags) (decoder, error) { +func makePtrDecoder(typ reflect.Type, tag rlpstruct.Tags) (decoder, error) { etype := typ.Elem() - etypeinfo := theTC.infoWhileGenerating(etype, tags{}) + etypeinfo := theTC.infoWhileGenerating(etype, rlpstruct.Tags{}) switch { case etypeinfo.decoderErr != nil: return nil, etypeinfo.decoderErr - case !tag.nilOK: + case !tag.NilOK: return makeSimplePtrDecoder(etype, etypeinfo), nil default: - return makeNilPtrDecoder(etype, etypeinfo, tag.nilKind), nil + return makeNilPtrDecoder(etype, etypeinfo, tag), nil } } @@ -481,9 +448,13 @@ func makeSimplePtrDecoder(etype reflect.Type, etypeinfo *typeinfo) decoder { // values are decoded into a value of the element type, just like makePtrDecoder does. // // This decoder is used for pointer-typed struct fields with struct tag "nil". -func makeNilPtrDecoder(etype reflect.Type, etypeinfo *typeinfo, nilKind Kind) decoder { +func makeNilPtrDecoder(etype reflect.Type, etypeinfo *typeinfo, ts rlpstruct.Tags) decoder { typ := reflect.PtrTo(etype) nilPtr := reflect.Zero(typ) + + // Determine the value kind that results in nil pointer. + nilKind := typeNilKind(etype, ts) + return func(s *Stream, val reflect.Value) (err error) { kind, size, err := s.Kind() if err != nil { @@ -659,6 +630,37 @@ func (s *Stream) Bytes() ([]byte, error) { } } +// ReadBytes decodes the next RLP value and stores the result in b. +// The value size must match len(b) exactly. +func (s *Stream) ReadBytes(b []byte) error { + kind, size, err := s.Kind() + if err != nil { + return err + } + switch kind { + case Byte: + if len(b) != 1 { + return fmt.Errorf("input value has wrong size 1, want %d", len(b)) + } + b[0] = s.byteval + s.kind = -1 // rearm Kind + return nil + case String: + if uint64(len(b)) != size { + return fmt.Errorf("input value has wrong size %d, want %d", size, len(b)) + } + if err = s.readFull(b); err != nil { + return err + } + if size == 1 && b[0] < 128 { + return ErrCanonSize + } + return nil + default: + return ErrExpectedString + } +} + // Raw reads a raw encoded value including RLP type information. func (s *Stream) Raw() ([]byte, error) { kind, size, err := s.Kind() @@ -687,10 +689,31 @@ func (s *Stream) Raw() ([]byte, error) { // Uint reads an RLP string of up to 8 bytes and returns its contents // as an unsigned integer. If the input does not contain an RLP string, the // returned error will be ErrExpectedString. +// +// Deprecated: use s.Uint64 instead. func (s *Stream) Uint() (uint64, error) { return s.uint(64) } +func (s *Stream) Uint64() (uint64, error) { + return s.uint(64) +} + +func (s *Stream) Uint32() (uint32, error) { + i, err := s.uint(32) + return uint32(i), err +} + +func (s *Stream) Uint16() (uint16, error) { + i, err := s.uint(16) + return uint16(i), err +} + +func (s *Stream) Uint8() (uint8, error) { + i, err := s.uint(8) + return uint8(i), err +} + func (s *Stream) uint(maxbits int) (uint64, error) { kind, size, err := s.Kind() if err != nil { @@ -781,6 +804,65 @@ func (s *Stream) ListEnd() error { return nil } +// MoreDataInList reports whether the current list context contains +// more data to be read. +func (s *Stream) MoreDataInList() bool { + _, listLimit := s.listLimit() + return listLimit > 0 +} + +// BigInt decodes an arbitrary-size integer value. +func (s *Stream) BigInt() (*big.Int, error) { + i := new(big.Int) + if err := s.decodeBigInt(i); err != nil { + return nil, err + } + return i, nil +} + +func (s *Stream) decodeBigInt(dst *big.Int) error { + var buffer []byte + kind, size, err := s.Kind() + switch { + case err != nil: + return err + case kind == List: + return ErrExpectedString + case kind == Byte: + buffer = s.uintbuf[:1] + buffer[0] = s.byteval + s.kind = -1 // re-arm Kind + case size == 0: + // Avoid zero-length read. + s.kind = -1 + case size <= uint64(len(s.uintbuf)): + // For integers smaller than s.uintbuf, allocating a buffer + // can be avoided. + buffer = s.uintbuf[:size] + if err := s.readFull(buffer); err != nil { + return err + } + // Reject inputs where single byte encoding should have been used. + if size == 1 && buffer[0] < 128 { + return ErrCanonSize + } + default: + // For large integers, a temporary buffer is needed. + buffer = make([]byte, size) + if err := s.readFull(buffer); err != nil { + return err + } + } + + // Reject leading zero bytes. + if len(buffer) > 0 && buffer[0] == 0 { + return ErrCanonInt + } + // Set the integer bytes. + dst.SetBytes(buffer) + return nil +} + // Decode decodes a value and stores the result in the value pointed // to by val. Please see the documentation for the Decode function // to learn about the decoding rules. diff --git a/rlp/decode_test.go b/rlp/decode_test.go index 7c3dafeac4..babdf3891b 100644 --- a/rlp/decode_test.go +++ b/rlp/decode_test.go @@ -286,6 +286,47 @@ func TestStreamRaw(t *testing.T) { } } +func TestStreamReadBytes(t *testing.T) { + tests := []struct { + input string + size int + err string + }{ + // kind List + {input: "C0", size: 1, err: "rlp: expected String or Byte"}, + // kind Byte + {input: "04", size: 0, err: "input value has wrong size 1, want 0"}, + {input: "04", size: 1}, + {input: "04", size: 2, err: "input value has wrong size 1, want 2"}, + // kind String + {input: "820102", size: 0, err: "input value has wrong size 2, want 0"}, + {input: "820102", size: 1, err: "input value has wrong size 2, want 1"}, + {input: "820102", size: 2}, + {input: "820102", size: 3, err: "input value has wrong size 2, want 3"}, + } + + for _, test := range tests { + test := test + name := fmt.Sprintf("input_%s/size_%d", test.input, test.size) + t.Run(name, func(t *testing.T) { + s := NewStream(bytes.NewReader(unhex(test.input)), 0) + b := make([]byte, test.size) + err := s.ReadBytes(b) + if test.err == "" { + if err != nil { + t.Errorf("unexpected error %q", err) + } + } else { + if err == nil { + t.Errorf("expected error, got nil") + } else if err.Error() != test.err { + t.Errorf("wrong error %q", err) + } + } + }) + } +} + func TestDecodeErrors(t *testing.T) { r := bytes.NewReader(nil) @@ -990,7 +1031,7 @@ func TestInvalidOptionalField(t *testing.T) { v interface{} err string }{ - {v: new(invalid1), err: `rlp: struct field rlp.invalid1.B needs "optional" tag`}, + {v: new(invalid1), err: `rlp: invalid struct tag "" for rlp.invalid1.B (must be optional because preceding field "A" is optional)`}, {v: new(invalid2), err: `rlp: invalid struct tag "optional" for rlp.invalid2.T (also has "tail" tag)`}, {v: new(invalid3), err: `rlp: invalid struct tag "tail" for rlp.invalid3.T (also has "optional" tag)`}, } diff --git a/rlp/encbuffer.go b/rlp/encbuffer.go new file mode 100644 index 0000000000..289e7448c6 --- /dev/null +++ b/rlp/encbuffer.go @@ -0,0 +1,382 @@ +package rlp + +import ( + "io" + "math/big" + "reflect" + "sync" +) + +type encBuffer struct { + str []byte // string data, contains everything except list headers + lheads []listhead // all list headers + lhsize int // sum of sizes of all encoded list headers + sizebuf [9]byte // auxiliary buffer for uint encoding +} + +// The global encBuffer pool. +var encBufferPool = sync.Pool{ + New: func() interface{} { return new(encBuffer) }, +} + +func getEncBuffer() *encBuffer { + buf := encBufferPool.Get().(*encBuffer) + buf.reset() + return buf +} + +func (buf *encBuffer) reset() { + buf.lhsize = 0 + buf.str = buf.str[:0] + buf.lheads = buf.lheads[:0] +} + +// size returns the length of the encoded data. +func (buf *encBuffer) size() int { + return len(buf.str) + buf.lhsize +} + +// makeBytes creates the encoder output. +func (w *encBuffer) makeBytes() []byte { + out := make([]byte, w.size()) + w.copyTo(out) + return out +} + +func (w *encBuffer) copyTo(dst []byte) { + strpos := 0 + pos := 0 + for _, head := range w.lheads { + // write string data before header + n := copy(dst[pos:], w.str[strpos:head.offset]) + pos += n + strpos += n + // write the header + enc := head.encode(dst[pos:]) + pos += len(enc) + } + // copy string data after the last list header + copy(dst[pos:], w.str[strpos:]) +} + +// writeTo writes the encoder output to w. +func (buf *encBuffer) writeTo(w io.Writer) (err error) { + strpos := 0 + for _, head := range buf.lheads { + // write string data before header + if head.offset-strpos > 0 { + n, err := w.Write(buf.str[strpos:head.offset]) + strpos += n + if err != nil { + return err + } + } + // write the header + enc := head.encode(buf.sizebuf[:]) + if _, err = w.Write(enc); err != nil { + return err + } + } + if strpos < len(buf.str) { + // write string data after the last list header + _, err = w.Write(buf.str[strpos:]) + } + return err +} + +// Write implements io.Writer and appends b directly to the output. +func (buf *encBuffer) Write(b []byte) (int, error) { + buf.str = append(buf.str, b...) + return len(b), nil +} + +// writeBool writes b as the integer 0 (false) or 1 (true). +func (buf *encBuffer) writeBool(b bool) { + if b { + buf.str = append(buf.str, 0x01) + } else { + buf.str = append(buf.str, 0x80) + } +} + +func (buf *encBuffer) writeUint64(i uint64) { + if i == 0 { + buf.str = append(buf.str, 0x80) + } else if i < 128 { + // fits single byte + buf.str = append(buf.str, byte(i)) + } else { + s := putint(buf.sizebuf[1:], i) + buf.sizebuf[0] = 0x80 + byte(s) + buf.str = append(buf.str, buf.sizebuf[:s+1]...) + } +} + +func (buf *encBuffer) writeBytes(b []byte) { + if len(b) == 1 && b[0] <= 0x7F { + // fits single byte, no string header + buf.str = append(buf.str, b[0]) + } else { + buf.encodeStringHeader(len(b)) + buf.str = append(buf.str, b...) + } +} + +func (buf *encBuffer) writeString(s string) { + buf.writeBytes([]byte(s)) +} + +// wordBytes is the number of bytes in a big.Word +const wordBytes = (32 << (uint64(^big.Word(0)) >> 63)) / 8 + +// writeBigInt writes i as an integer. +func (w *encBuffer) writeBigInt(i *big.Int) { + bitlen := i.BitLen() + if bitlen <= 64 { + w.writeUint64(i.Uint64()) + return + } + // Integer is larger than 64 bits, encode from i.Bits(). + // The minimal byte length is bitlen rounded up to the next + // multiple of 8, divided by 8. + length := ((bitlen + 7) & -8) >> 3 + w.encodeStringHeader(length) + w.str = append(w.str, make([]byte, length)...) + index := length + buf := w.str[len(w.str)-length:] + for _, d := range i.Bits() { + for j := 0; j < wordBytes && index > 0; j++ { + index-- + buf[index] = byte(d) + d >>= 8 + } + } +} + +// list adds a new list header to the header stack. It returns the index of the header. +// Call listEnd with this index after encoding the content of the list. +func (buf *encBuffer) list() int { + buf.lheads = append(buf.lheads, listhead{offset: len(buf.str), size: buf.lhsize}) + return len(buf.lheads) - 1 +} + +func (buf *encBuffer) listEnd(index int) { + lh := &buf.lheads[index] + lh.size = buf.size() - lh.offset - lh.size + if lh.size < 56 { + buf.lhsize++ // length encoded into kind tag + } else { + buf.lhsize += 1 + intsize(uint64(lh.size)) + } +} + +func (buf *encBuffer) encode(val interface{}) error { + rval := reflect.ValueOf(val) + writer, err := cachedWriter(rval.Type()) + if err != nil { + return err + } + return writer(rval, buf) +} + +func (buf *encBuffer) encodeStringHeader(size int) { + if size < 56 { + buf.str = append(buf.str, 0x80+byte(size)) + } else { + sizesize := putint(buf.sizebuf[1:], uint64(size)) + buf.sizebuf[0] = 0xB7 + byte(sizesize) + buf.str = append(buf.str, buf.sizebuf[:sizesize+1]...) + } +} + +// encReader is the io.Reader returned by EncodeToReader. +// It releases its encbuf at EOF. +type encReader struct { + buf *encBuffer // the buffer we're reading from. this is nil when we're at EOF. + lhpos int // index of list header that we're reading + strpos int // current position in string buffer + piece []byte // next piece to be read +} + +func (r *encReader) Read(b []byte) (n int, err error) { + for { + if r.piece = r.next(); r.piece == nil { + // Put the encode buffer back into the pool at EOF when it + // is first encountered. Subsequent calls still return EOF + // as the error but the buffer is no longer valid. + if r.buf != nil { + encBufferPool.Put(r.buf) + r.buf = nil + } + return n, io.EOF + } + nn := copy(b[n:], r.piece) + n += nn + if nn < len(r.piece) { + // piece didn't fit, see you next time. + r.piece = r.piece[nn:] + return n, nil + } + r.piece = nil + } +} + +// next returns the next piece of data to be read. +// it returns nil at EOF. +func (r *encReader) next() []byte { + switch { + case r.buf == nil: + return nil + + case r.piece != nil: + // There is still data available for reading. + return r.piece + + case r.lhpos < len(r.buf.lheads): + // We're before the last list header. + head := r.buf.lheads[r.lhpos] + sizebefore := head.offset - r.strpos + if sizebefore > 0 { + // String data before header. + p := r.buf.str[r.strpos:head.offset] + r.strpos += sizebefore + return p + } + r.lhpos++ + return head.encode(r.buf.sizebuf[:]) + + case r.strpos < len(r.buf.str): + // String data at the end, after all list headers. + p := r.buf.str[r.strpos:] + r.strpos = len(r.buf.str) + return p + + default: + return nil + } +} + +func encBufferFromWriter(w io.Writer) *encBuffer { + switch w := w.(type) { + case EncoderBuffer: + return w.buf + case *EncoderBuffer: + return w.buf + case *encBuffer: + return w + default: + return nil + } +} + +// EncoderBuffer is a buffer for incremental encoding. +// +// The zero value is NOT ready for use. To get a usable buffer, +// create it using NewEncoderBuffer or call Reset. +type EncoderBuffer struct { + buf *encBuffer + dst io.Writer + + ownBuffer bool +} + +// NewEncoderBuffer creates an encoder buffer. +func NewEncoderBuffer(dst io.Writer) EncoderBuffer { + var w EncoderBuffer + w.Reset(dst) + return w +} + +// Reset truncates the buffer and sets the output destination. +func (w *EncoderBuffer) Reset(dst io.Writer) { + if w.buf != nil && !w.ownBuffer { + panic("can't Reset derived EncoderBuffer") + } + + // If the destination writer has an *encBuffer, use it. + // Note that w.ownBuffer is left false here. + if dst != nil { + if outer := encBufferFromWriter(dst); outer != nil { + *w = EncoderBuffer{outer, nil, false} + return + } + } + + // Get a fresh buffer. + if w.buf == nil { + w.buf = encBufferPool.Get().(*encBuffer) + w.ownBuffer = true + } + w.buf.reset() + w.dst = dst +} + +// Flush writes encoded RLP data to the output writer. This can only be called once. +// If you want to re-use the buffer after Flush, you must call Reset. +func (w *EncoderBuffer) Flush() error { + var err error + if w.dst != nil { + err = w.buf.writeTo(w.dst) + } + // Release the internal buffer. + if w.ownBuffer { + encBufferPool.Put(w.buf) + } + *w = EncoderBuffer{} + return err +} + +// ToBytes returns the encoded bytes. +func (w *EncoderBuffer) ToBytes() []byte { + return w.buf.makeBytes() +} + +// AppendToBytes appends the encoded bytes to dst. +func (w *EncoderBuffer) AppendToBytes(dst []byte) []byte { + size := w.buf.size() + out := append(dst, make([]byte, size)...) + w.buf.copyTo(out[len(dst):]) + return out +} + +// Write appends b directly to the encoder output. +func (w EncoderBuffer) Write(b []byte) (int, error) { + return w.buf.Write(b) +} + +// WriteBool writes b as the integer 0 (false) or 1 (true). +func (w EncoderBuffer) WriteBool(b bool) { + w.buf.writeBool(b) +} + +// WriteUint64 encodes an unsigned integer. +func (w EncoderBuffer) WriteUint64(i uint64) { + w.buf.writeUint64(i) +} + +// WriteBigInt encodes a big.Int as an RLP string. +// Note: Unlike with Encode, the sign of i is ignored. +func (w EncoderBuffer) WriteBigInt(i *big.Int) { + w.buf.writeBigInt(i) +} + +// WriteBytes encodes b as an RLP string. +func (w EncoderBuffer) WriteBytes(b []byte) { + w.buf.writeBytes(b) +} + +// WriteBytes encodes s as an RLP string. +func (w EncoderBuffer) WriteString(s string) { + w.buf.writeString(s) +} + +// List starts a list. It returns an internal index. Call EndList with +// this index after encoding the content to finish the list. +func (w EncoderBuffer) List() int { + return w.buf.list() +} + +// ListEnd finishes the given list. +func (w EncoderBuffer) ListEnd(index int) { + w.buf.listEnd(index) +} diff --git a/rlp/encbuffer_example_test.go b/rlp/encbuffer_example_test.go new file mode 100644 index 0000000000..ee15d82a77 --- /dev/null +++ b/rlp/encbuffer_example_test.go @@ -0,0 +1,45 @@ +// Copyright 2022 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package rlp_test + +import ( + "bytes" + "fmt" + + "github.com/ethereum/go-ethereum/rlp" +) + +func ExampleEncoderBuffer() { + var w bytes.Buffer + + // Encode [4, [5, 6]] to w. + buf := rlp.NewEncoderBuffer(&w) + l1 := buf.List() + buf.WriteUint64(4) + l2 := buf.List() + buf.WriteUint64(5) + buf.WriteUint64(6) + buf.ListEnd(l2) + buf.ListEnd(l1) + + if err := buf.Flush(); err != nil { + panic(err) + } + fmt.Printf("%X\n", w.Bytes()) + // Output: + // C404C20506 +} diff --git a/rlp/encode.go b/rlp/encode.go index 1623e97a3e..b96505f56d 100644 --- a/rlp/encode.go +++ b/rlp/encode.go @@ -17,11 +17,13 @@ package rlp import ( + "errors" "fmt" "io" "math/big" "reflect" - "sync" + + "github.com/ethereum/go-ethereum/rlp/internal/rlpstruct" ) var ( @@ -31,6 +33,8 @@ var ( EmptyList = []byte{0xC0} ) +var ErrNegativeBigInt = errors.New("rlp: cannot encode negative big.Int") + // Encoder is implemented by types that require custom // encoding rules or want to encode private fields. type Encoder interface { @@ -51,30 +55,29 @@ type Encoder interface { // // Please see package-level documentation of encoding rules. func Encode(w io.Writer, val interface{}) error { - if outer, ok := w.(*encbuf); ok { - // Encode was called by some type's EncodeRLP. - // Avoid copying by writing to the outer encbuf directly. - return outer.encode(val) + // Optimization: reuse *encBuffer when called by EncodeRLP. + if buf := encBufferFromWriter(w); buf != nil { + return buf.encode(val) } - eb := encbufPool.Get().(*encbuf) - defer encbufPool.Put(eb) - eb.reset() - if err := eb.encode(val); err != nil { + + buf := getEncBuffer() + defer encBufferPool.Put(buf) + if err := buf.encode(val); err != nil { return err } - return eb.toWriter(w) + return buf.writeTo(w) } // EncodeToBytes returns the RLP encoding of val. // Please see package-level documentation for the encoding rules. func EncodeToBytes(val interface{}) ([]byte, error) { - eb := encbufPool.Get().(*encbuf) - defer encbufPool.Put(eb) - eb.reset() - if err := eb.encode(val); err != nil { + buf := getEncBuffer() + defer encBufferPool.Put(buf) + + if err := buf.encode(val); err != nil { return nil, err } - return eb.toBytes(), nil + return buf.makeBytes(), nil } // EncodeToReader returns a reader from which the RLP encoding of val @@ -83,12 +86,15 @@ func EncodeToBytes(val interface{}) ([]byte, error) { // // Please see the documentation of Encode for the encoding rules. func EncodeToReader(val interface{}) (size int, r io.Reader, err error) { - eb := encbufPool.Get().(*encbuf) - eb.reset() - if err := eb.encode(val); err != nil { + buf := getEncBuffer() + if err := buf.encode(val); err != nil { + encBufferPool.Put(buf) return 0, nil, err } - return eb.size(), &encReader{buf: eb}, nil + // Note: can't put the reader back into the pool here + // because it is held by encReader. The reader puts it + // back when it has been fully consumed. + return buf.size(), &encReader{buf: buf}, nil } type listhead struct { @@ -123,207 +129,10 @@ func puthead(buf []byte, smalltag, largetag byte, size uint64) int { return sizesize + 1 } -type encbuf struct { - str []byte // string data, contains everything except list headers - lheads []listhead // all list headers - lhsize int // sum of sizes of all encoded list headers - sizebuf [9]byte // auxiliary buffer for uint encoding -} - -// encbufs are pooled. -var encbufPool = sync.Pool{ - New: func() interface{} { return new(encbuf) }, -} - -func (w *encbuf) reset() { - w.lhsize = 0 - w.str = w.str[:0] - w.lheads = w.lheads[:0] -} - -// encbuf implements io.Writer so it can be passed it into EncodeRLP. -func (w *encbuf) Write(b []byte) (int, error) { - w.str = append(w.str, b...) - return len(b), nil -} - -func (w *encbuf) encode(val interface{}) error { - rval := reflect.ValueOf(val) - writer, err := cachedWriter(rval.Type()) - if err != nil { - return err - } - return writer(rval, w) -} - -func (w *encbuf) encodeStringHeader(size int) { - if size < 56 { - w.str = append(w.str, 0x80+byte(size)) - } else { - sizesize := putint(w.sizebuf[1:], uint64(size)) - w.sizebuf[0] = 0xB7 + byte(sizesize) - w.str = append(w.str, w.sizebuf[:sizesize+1]...) - } -} - -func (w *encbuf) encodeString(b []byte) { - if len(b) == 1 && b[0] <= 0x7F { - // fits single byte, no string header - w.str = append(w.str, b[0]) - } else { - w.encodeStringHeader(len(b)) - w.str = append(w.str, b...) - } -} - -func (w *encbuf) encodeUint(i uint64) { - if i == 0 { - w.str = append(w.str, 0x80) - } else if i < 128 { - // fits single byte - w.str = append(w.str, byte(i)) - } else { - s := putint(w.sizebuf[1:], i) - w.sizebuf[0] = 0x80 + byte(s) - w.str = append(w.str, w.sizebuf[:s+1]...) - } -} - -// list adds a new list header to the header stack. It returns the index -// of the header. The caller must call listEnd with this index after encoding -// the content of the list. -func (w *encbuf) list() int { - w.lheads = append(w.lheads, listhead{offset: len(w.str), size: w.lhsize}) - return len(w.lheads) - 1 -} - -func (w *encbuf) listEnd(index int) { - lh := &w.lheads[index] - lh.size = w.size() - lh.offset - lh.size - if lh.size < 56 { - w.lhsize++ // length encoded into kind tag - } else { - w.lhsize += 1 + intsize(uint64(lh.size)) - } -} - -func (w *encbuf) size() int { - return len(w.str) + w.lhsize -} - -func (w *encbuf) toBytes() []byte { - out := make([]byte, w.size()) - strpos := 0 - pos := 0 - for _, head := range w.lheads { - // write string data before header - n := copy(out[pos:], w.str[strpos:head.offset]) - pos += n - strpos += n - // write the header - enc := head.encode(out[pos:]) - pos += len(enc) - } - // copy string data after the last list header - copy(out[pos:], w.str[strpos:]) - return out -} - -func (w *encbuf) toWriter(out io.Writer) (err error) { - strpos := 0 - for _, head := range w.lheads { - // write string data before header - if head.offset-strpos > 0 { - n, err := out.Write(w.str[strpos:head.offset]) - strpos += n - if err != nil { - return err - } - } - // write the header - enc := head.encode(w.sizebuf[:]) - if _, err = out.Write(enc); err != nil { - return err - } - } - if strpos < len(w.str) { - // write string data after the last list header - _, err = out.Write(w.str[strpos:]) - } - return err -} - -// encReader is the io.Reader returned by EncodeToReader. -// It releases its encbuf at EOF. -type encReader struct { - buf *encbuf // the buffer we're reading from. this is nil when we're at EOF. - lhpos int // index of list header that we're reading - strpos int // current position in string buffer - piece []byte // next piece to be read -} - -func (r *encReader) Read(b []byte) (n int, err error) { - for { - if r.piece = r.next(); r.piece == nil { - // Put the encode buffer back into the pool at EOF when it - // is first encountered. Subsequent calls still return EOF - // as the error but the buffer is no longer valid. - if r.buf != nil { - encbufPool.Put(r.buf) - r.buf = nil - } - return n, io.EOF - } - nn := copy(b[n:], r.piece) - n += nn - if nn < len(r.piece) { - // piece didn't fit, see you next time. - r.piece = r.piece[nn:] - return n, nil - } - r.piece = nil - } -} - -// next returns the next piece of data to be read. -// it returns nil at EOF. -func (r *encReader) next() []byte { - switch { - case r.buf == nil: - return nil - - case r.piece != nil: - // There is still data available for reading. - return r.piece - - case r.lhpos < len(r.buf.lheads): - // We're before the last list header. - head := r.buf.lheads[r.lhpos] - sizebefore := head.offset - r.strpos - if sizebefore > 0 { - // String data before header. - p := r.buf.str[r.strpos:head.offset] - r.strpos += sizebefore - return p - } - r.lhpos++ - return head.encode(r.buf.sizebuf[:]) - - case r.strpos < len(r.buf.str): - // String data at the end, after all list headers. - p := r.buf.str[r.strpos:] - r.strpos = len(r.buf.str) - return p - - default: - return nil - } -} - var encoderInterface = reflect.TypeOf(new(Encoder)).Elem() // makeWriter creates a writer function for the given type. -func makeWriter(typ reflect.Type, ts tags) (writer, error) { +func makeWriter(typ reflect.Type, ts rlpstruct.Tags) (writer, error) { kind := typ.Kind() switch { case typ == rawValueType: @@ -357,71 +166,45 @@ func makeWriter(typ reflect.Type, ts tags) (writer, error) { } } -func writeRawValue(val reflect.Value, w *encbuf) error { +func writeRawValue(val reflect.Value, w *encBuffer) error { w.str = append(w.str, val.Bytes()...) return nil } -func writeUint(val reflect.Value, w *encbuf) error { - w.encodeUint(val.Uint()) +func writeUint(val reflect.Value, w *encBuffer) error { + w.writeUint64(val.Uint()) return nil } -func writeBool(val reflect.Value, w *encbuf) error { - if val.Bool() { - w.str = append(w.str, 0x01) - } else { - w.str = append(w.str, 0x80) - } +func writeBool(val reflect.Value, w *encBuffer) error { + w.writeBool(val.Bool()) return nil } -func writeBigIntPtr(val reflect.Value, w *encbuf) error { +func writeBigIntPtr(val reflect.Value, w *encBuffer) error { ptr := val.Interface().(*big.Int) if ptr == nil { w.str = append(w.str, 0x80) return nil } - return writeBigInt(ptr, w) -} - -func writeBigIntNoPtr(val reflect.Value, w *encbuf) error { - i := val.Interface().(big.Int) - return writeBigInt(&i, w) -} - -// wordBytes is the number of bytes in a big.Word -const wordBytes = (32 << (uint64(^big.Word(0)) >> 63)) / 8 - -func writeBigInt(i *big.Int, w *encbuf) error { - if i.Sign() == -1 { - return fmt.Errorf("rlp: cannot encode negative *big.Int") - } - bitlen := i.BitLen() - if bitlen <= 64 { - w.encodeUint(i.Uint64()) - return nil - } - // Integer is larger than 64 bits, encode from i.Bits(). - // The minimal byte length is bitlen rounded up to the next - // multiple of 8, divided by 8. - length := ((bitlen + 7) & -8) >> 3 - w.encodeStringHeader(length) - w.str = append(w.str, make([]byte, length)...) - index := length - buf := w.str[len(w.str)-length:] - for _, d := range i.Bits() { - for j := 0; j < wordBytes && index > 0; j++ { - index-- - buf[index] = byte(d) - d >>= 8 - } + if ptr.Sign() == -1 { + return ErrNegativeBigInt } + w.writeBigInt(ptr) return nil } -func writeBytes(val reflect.Value, w *encbuf) error { - w.encodeString(val.Bytes()) +func writeBigIntNoPtr(val reflect.Value, w *encBuffer) error { + i := val.Interface().(big.Int) + if i.Sign() == -1 { + return ErrNegativeBigInt + } + w.writeBigInt(&i) + return nil +} + +func writeBytes(val reflect.Value, w *encBuffer) error { + w.writeBytes(val.Bytes()) return nil } @@ -433,7 +216,7 @@ func makeByteArrayWriter(typ reflect.Type) writer { return writeLengthOneByteArray default: length := typ.Len() - return func(val reflect.Value, w *encbuf) error { + return func(val reflect.Value, w *encBuffer) error { if !val.CanAddr() { // Getting the byte slice of val requires it to be addressable. Make it // addressable by copying. @@ -449,12 +232,12 @@ func makeByteArrayWriter(typ reflect.Type) writer { } } -func writeLengthZeroByteArray(val reflect.Value, w *encbuf) error { +func writeLengthZeroByteArray(val reflect.Value, w *encBuffer) error { w.str = append(w.str, 0x80) return nil } -func writeLengthOneByteArray(val reflect.Value, w *encbuf) error { +func writeLengthOneByteArray(val reflect.Value, w *encBuffer) error { b := byte(val.Index(0).Uint()) if b <= 0x7f { w.str = append(w.str, b) @@ -464,7 +247,7 @@ func writeLengthOneByteArray(val reflect.Value, w *encbuf) error { return nil } -func writeString(val reflect.Value, w *encbuf) error { +func writeString(val reflect.Value, w *encBuffer) error { s := val.String() if len(s) == 1 && s[0] <= 0x7f { // fits single byte, no string header @@ -476,7 +259,7 @@ func writeString(val reflect.Value, w *encbuf) error { return nil } -func writeInterface(val reflect.Value, w *encbuf) error { +func writeInterface(val reflect.Value, w *encBuffer) error { if val.IsNil() { // Write empty list. This is consistent with the previous RLP // encoder that we had and should therefore avoid any @@ -492,17 +275,17 @@ func writeInterface(val reflect.Value, w *encbuf) error { return writer(eval, w) } -func makeSliceWriter(typ reflect.Type, ts tags) (writer, error) { - etypeinfo := theTC.infoWhileGenerating(typ.Elem(), tags{}) +func makeSliceWriter(typ reflect.Type, ts rlpstruct.Tags) (writer, error) { + etypeinfo := theTC.infoWhileGenerating(typ.Elem(), rlpstruct.Tags{}) if etypeinfo.writerErr != nil { return nil, etypeinfo.writerErr } var wfn writer - if ts.tail { + if ts.Tail { // This is for struct tail slices. // w.list is not called for them. - wfn = func(val reflect.Value, w *encbuf) error { + wfn = func(val reflect.Value, w *encBuffer) error { vlen := val.Len() for i := 0; i < vlen; i++ { if err := etypeinfo.writer(val.Index(i), w); err != nil { @@ -513,7 +296,7 @@ func makeSliceWriter(typ reflect.Type, ts tags) (writer, error) { } } else { // This is for regular slices and arrays. - wfn = func(val reflect.Value, w *encbuf) error { + wfn = func(val reflect.Value, w *encBuffer) error { vlen := val.Len() if vlen == 0 { w.str = append(w.str, 0xC0) @@ -547,7 +330,7 @@ func makeStructWriter(typ reflect.Type) (writer, error) { firstOptionalField := firstOptionalField(fields) if firstOptionalField == len(fields) { // This is the writer function for structs without any optional fields. - writer = func(val reflect.Value, w *encbuf) error { + writer = func(val reflect.Value, w *encBuffer) error { lh := w.list() for _, f := range fields { if err := f.info.writer(val.Field(f.index), w); err != nil { @@ -560,7 +343,7 @@ func makeStructWriter(typ reflect.Type) (writer, error) { } else { // If there are any "optional" fields, the writer needs to perform additional // checks to determine the output list length. - writer = func(val reflect.Value, w *encbuf) error { + writer = func(val reflect.Value, w *encBuffer) error { lastField := len(fields) - 1 for ; lastField >= firstOptionalField; lastField-- { if !val.Field(fields[lastField].index).IsZero() { @@ -580,33 +363,18 @@ func makeStructWriter(typ reflect.Type) (writer, error) { return writer, nil } -// nilEncoding returns the encoded value of a nil pointer. -func nilEncoding(typ reflect.Type, ts tags) uint8 { - var nilKind Kind - if ts.nilOK { - nilKind = ts.nilKind // use struct tag if provided - } else { - nilKind = defaultNilKind(typ.Elem()) +func makePtrWriter(typ reflect.Type, ts rlpstruct.Tags) (writer, error) { + nilEncoding := byte(0xC0) + if typeNilKind(typ.Elem(), ts) == String { + nilEncoding = 0x80 } - switch nilKind { - case String: - return 0x80 - case List: - return 0xC0 - default: - panic(fmt.Errorf("rlp: invalid nil kind %d", nilKind)) - } -} - -func makePtrWriter(typ reflect.Type, ts tags) (writer, error) { - etypeinfo := theTC.infoWhileGenerating(typ.Elem(), tags{}) + etypeinfo := theTC.infoWhileGenerating(typ.Elem(), rlpstruct.Tags{}) if etypeinfo.writerErr != nil { return nil, etypeinfo.writerErr } - nilEncoding := nilEncoding(typ, ts) - writer := func(val reflect.Value, w *encbuf) error { + writer := func(val reflect.Value, w *encBuffer) error { if ev := val.Elem(); ev.IsValid() { return etypeinfo.writer(ev, w) } @@ -618,11 +386,11 @@ func makePtrWriter(typ reflect.Type, ts tags) (writer, error) { func makeEncoderWriter(typ reflect.Type) writer { if typ.Implements(encoderInterface) { - return func(val reflect.Value, w *encbuf) error { + return func(val reflect.Value, w *encBuffer) error { return val.Interface().(Encoder).EncodeRLP(w) } } - w := func(val reflect.Value, w *encbuf) error { + w := func(val reflect.Value, w *encBuffer) error { if !val.CanAddr() { // package json simply doesn't call MarshalJSON for this case, but encodes the // value as if it didn't implement the interface. We don't want to handle it that diff --git a/rlp/encode_test.go b/rlp/encode_test.go index a63743440d..1d715e3776 100644 --- a/rlp/encode_test.go +++ b/rlp/encode_test.go @@ -145,7 +145,8 @@ var encTests = []encTest{ {val: *big.NewInt(0xFFFFFF), output: "83FFFFFF"}, // negative ints are not supported - {val: big.NewInt(-1), error: "rlp: cannot encode negative *big.Int"}, + {val: big.NewInt(-1), error: "rlp: cannot encode negative big.Int"}, + {val: *big.NewInt(-1), error: "rlp: cannot encode negative big.Int"}, // byte arrays {val: [0]byte{}, output: "80"}, @@ -398,6 +399,21 @@ func TestEncodeToBytes(t *testing.T) { runEncTests(t, EncodeToBytes) } +func TestEncodeAppendToBytes(t *testing.T) { + buffer := make([]byte, 20) + runEncTests(t, func(val interface{}) ([]byte, error) { + w := NewEncoderBuffer(nil) + defer w.Flush() + + err := Encode(w, val) + if err != nil { + return nil, err + } + output := w.AppendToBytes(buffer[:0]) + return output, nil + }) +} + func TestEncodeToReader(t *testing.T) { runEncTests(t, func(val interface{}) ([]byte, error) { _, r, err := EncodeToReader(val) diff --git a/rlp/encoder_example_test.go b/rlp/encoder_example_test.go index 42c1c5c890..4cd3cb8673 100644 --- a/rlp/encoder_example_test.go +++ b/rlp/encoder_example_test.go @@ -14,11 +14,13 @@ // You should have received a copy of the GNU Lesser General Public License // along with the go-ethereum library. If not, see . -package rlp +package rlp_test import ( "fmt" "io" + + "github.com/ethereum/go-ethereum/rlp" ) type MyCoolType struct { @@ -28,16 +30,16 @@ type MyCoolType struct { // EncodeRLP writes x as RLP list [a, b] that omits the Name field. func (x *MyCoolType) EncodeRLP(w io.Writer) (err error) { - return Encode(w, []uint{x.a, x.b}) + return rlp.Encode(w, []uint{x.a, x.b}) } func ExampleEncoder() { var t *MyCoolType // t is nil pointer to MyCoolType - bytes, _ := EncodeToBytes(t) + bytes, _ := rlp.EncodeToBytes(t) fmt.Printf("%v → %X\n", t, bytes) t = &MyCoolType{Name: "foobar", a: 5, b: 6} - bytes, _ = EncodeToBytes(t) + bytes, _ = rlp.EncodeToBytes(t) fmt.Printf("%v → %X\n", t, bytes) // Output: diff --git a/rlp/internal/rlpstruct/rlpstruct.go b/rlp/internal/rlpstruct/rlpstruct.go new file mode 100644 index 0000000000..1ebaa960e3 --- /dev/null +++ b/rlp/internal/rlpstruct/rlpstruct.go @@ -0,0 +1,213 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +// Package rlpstruct implements struct processing for RLP encoding/decoding. +// +// In particular, this package handles all rules around field filtering, +// struct tags and nil value determination. +package rlpstruct + +import ( + "fmt" + "reflect" + "strings" +) + +// Field represents a struct field. +type Field struct { + Name string + Index int + Exported bool + Type Type + Tag string +} + +// Type represents the attributes of a Go type. +type Type struct { + Name string + Kind reflect.Kind + IsEncoder bool // whether type implements rlp.Encoder + IsDecoder bool // whether type implements rlp.Decoder + Elem *Type // non-nil for Kind values of Ptr, Slice, Array +} + +// defaultNilValue determines whether a nil pointer to t encodes/decodes +// as an empty string or empty list. +func (t Type) DefaultNilValue() NilKind { + k := t.Kind + if isUint(k) || k == reflect.String || k == reflect.Bool || isByteArray(t) { + return NilKindString + } + return NilKindList +} + +// NilKind is the RLP value encoded in place of nil pointers. +type NilKind uint8 + +const ( + NilKindString NilKind = 0x80 + NilKindList NilKind = 0xC0 +) + +// Tags represents struct tags. +type Tags struct { + // rlp:"nil" controls whether empty input results in a nil pointer. + // nilKind is the kind of empty value allowed for the field. + NilKind NilKind + NilOK bool + + // rlp:"optional" allows for a field to be missing in the input list. + // If this is set, all subsequent fields must also be optional. + Optional bool + + // rlp:"tail" controls whether this field swallows additional list elements. It can + // only be set for the last field, which must be of slice type. + Tail bool + + // rlp:"-" ignores fields. + Ignored bool +} + +// TagError is raised for invalid struct tags. +type TagError struct { + StructType string + + // These are set by this package. + Field string + Tag string + Err string +} + +func (e TagError) Error() string { + field := "field " + e.Field + if e.StructType != "" { + field = e.StructType + "." + e.Field + } + return fmt.Sprintf("rlp: invalid struct tag %q for %s (%s)", e.Tag, field, e.Err) +} + +// ProcessFields filters the given struct fields, returning only fields +// that should be considered for encoding/decoding. +func ProcessFields(allFields []Field) ([]Field, []Tags, error) { + lastPublic := lastPublicField(allFields) + + // Gather all exported fields and their tags. + var fields []Field + var tags []Tags + for _, field := range allFields { + if !field.Exported { + continue + } + ts, err := parseTag(field, lastPublic) + if err != nil { + return nil, nil, err + } + if ts.Ignored { + continue + } + fields = append(fields, field) + tags = append(tags, ts) + } + + // Verify optional field consistency. If any optional field exists, + // all fields after it must also be optional. Note: optional + tail + // is supported. + var anyOptional bool + var firstOptionalName string + for i, ts := range tags { + name := fields[i].Name + if ts.Optional || ts.Tail { + if !anyOptional { + firstOptionalName = name + } + anyOptional = true + } else { + if anyOptional { + msg := fmt.Sprintf("must be optional because preceding field %q is optional", firstOptionalName) + return nil, nil, TagError{Field: name, Err: msg} + } + } + } + return fields, tags, nil +} + +func parseTag(field Field, lastPublic int) (Tags, error) { + name := field.Name + tag := reflect.StructTag(field.Tag) + var ts Tags + for _, t := range strings.Split(tag.Get("rlp"), ",") { + switch t = strings.TrimSpace(t); t { + case "": + // empty tag is allowed for some reason + case "-": + ts.Ignored = true + case "nil", "nilString", "nilList": + ts.NilOK = true + if field.Type.Kind != reflect.Ptr { + return ts, TagError{Field: name, Tag: t, Err: "field is not a pointer"} + } + switch t { + case "nil": + ts.NilKind = field.Type.Elem.DefaultNilValue() + case "nilString": + ts.NilKind = NilKindString + case "nilList": + ts.NilKind = NilKindList + } + case "optional": + ts.Optional = true + if ts.Tail { + return ts, TagError{Field: name, Tag: t, Err: `also has "tail" tag`} + } + case "tail": + ts.Tail = true + if field.Index != lastPublic { + return ts, TagError{Field: name, Tag: t, Err: "must be on last field"} + } + if ts.Optional { + return ts, TagError{Field: name, Tag: t, Err: `also has "optional" tag`} + } + if field.Type.Kind != reflect.Slice { + return ts, TagError{Field: name, Tag: t, Err: "field type is not slice"} + } + default: + return ts, TagError{Field: name, Tag: t, Err: "unknown tag"} + } + } + return ts, nil +} + +func lastPublicField(fields []Field) int { + last := 0 + for _, f := range fields { + if f.Exported { + last = f.Index + } + } + return last +} + +func isUint(k reflect.Kind) bool { + return k >= reflect.Uint && k <= reflect.Uintptr +} + +func isByte(typ Type) bool { + return typ.Kind == reflect.Uint8 && !typ.IsEncoder +} + +func isByteArray(typ Type) bool { + return (typ.Kind == reflect.Slice || typ.Kind == reflect.Array) && isByte(*typ.Elem) +} diff --git a/rlp/rlpgen/gen.go b/rlp/rlpgen/gen.go new file mode 100644 index 0000000000..b36b269478 --- /dev/null +++ b/rlp/rlpgen/gen.go @@ -0,0 +1,735 @@ +package main + +import ( + "bytes" + "fmt" + "go/format" + "go/types" + "sort" + + "github.com/ethereum/go-ethereum/rlp/internal/rlpstruct" +) + +// buildContext keeps the data needed for make*Op. +type buildContext struct { + topType *types.Named // the type we're creating methods for + + encoderIface *types.Interface + decoderIface *types.Interface + rawValueType *types.Named + + typeToStructCache map[types.Type]*rlpstruct.Type +} + +func newBuildContext(packageRLP *types.Package) *buildContext { + enc := packageRLP.Scope().Lookup("Encoder").Type().Underlying() + dec := packageRLP.Scope().Lookup("Decoder").Type().Underlying() + rawv := packageRLP.Scope().Lookup("RawValue").Type() + return &buildContext{ + typeToStructCache: make(map[types.Type]*rlpstruct.Type), + encoderIface: enc.(*types.Interface), + decoderIface: dec.(*types.Interface), + rawValueType: rawv.(*types.Named), + } +} + +func (bctx *buildContext) isEncoder(typ types.Type) bool { + return types.Implements(typ, bctx.encoderIface) +} + +func (bctx *buildContext) isDecoder(typ types.Type) bool { + return types.Implements(typ, bctx.decoderIface) +} + +// typeToStructType converts typ to rlpstruct.Type. +func (bctx *buildContext) typeToStructType(typ types.Type) *rlpstruct.Type { + if prev := bctx.typeToStructCache[typ]; prev != nil { + return prev // short-circuit for recursive types. + } + + // Resolve named types to their underlying type, but keep the name. + name := types.TypeString(typ, nil) + for { + utype := typ.Underlying() + if utype == typ { + break + } + typ = utype + } + + // Create the type and store it in cache. + t := &rlpstruct.Type{ + Name: name, + Kind: typeReflectKind(typ), + IsEncoder: bctx.isEncoder(typ), + IsDecoder: bctx.isDecoder(typ), + } + bctx.typeToStructCache[typ] = t + + // Assign element type. + switch typ.(type) { + case *types.Array, *types.Slice, *types.Pointer: + etype := typ.(interface{ Elem() types.Type }).Elem() + t.Elem = bctx.typeToStructType(etype) + } + return t +} + +// genContext is passed to the gen* methods of op when generating +// the output code. It tracks packages to be imported by the output +// file and assigns unique names of temporary variables. +type genContext struct { + inPackage *types.Package + imports map[string]struct{} + tempCounter int +} + +func newGenContext(inPackage *types.Package) *genContext { + return &genContext{ + inPackage: inPackage, + imports: make(map[string]struct{}), + } +} + +func (ctx *genContext) temp() string { + v := fmt.Sprintf("_tmp%d", ctx.tempCounter) + ctx.tempCounter++ + return v +} + +func (ctx *genContext) resetTemp() { + ctx.tempCounter = 0 +} + +func (ctx *genContext) addImport(path string) { + if path == ctx.inPackage.Path() { + return // avoid importing the package that we're generating in. + } + // TODO: renaming? + ctx.imports[path] = struct{}{} +} + +// importsList returns all packages that need to be imported. +func (ctx *genContext) importsList() []string { + imp := make([]string, 0, len(ctx.imports)) + for k := range ctx.imports { + imp = append(imp, k) + } + sort.Strings(imp) + return imp +} + +// qualify is the types.Qualifier used for printing types. +func (ctx *genContext) qualify(pkg *types.Package) string { + if pkg.Path() == ctx.inPackage.Path() { + return "" + } + ctx.addImport(pkg.Path()) + // TODO: renaming? + return pkg.Name() +} + +type op interface { + // genWrite creates the encoder. The generated code should write v, + // which is any Go expression, to the rlp.EncoderBuffer 'w'. + genWrite(ctx *genContext, v string) string + + // genDecode creates the decoder. The generated code should read + // a value from the rlp.Stream 'dec' and store it to dst. + genDecode(ctx *genContext) (string, string) +} + +// basicOp handles basic types bool, uint*, string. +type basicOp struct { + typ types.Type + writeMethod string // calle write the value + writeArgType types.Type // parameter type of writeMethod + decMethod string + decResultType types.Type // return type of decMethod + decUseBitSize bool // if true, result bit size is appended to decMethod +} + +func (*buildContext) makeBasicOp(typ *types.Basic) (op, error) { + op := basicOp{typ: typ} + kind := typ.Kind() + switch { + case kind == types.Bool: + op.writeMethod = "WriteBool" + op.writeArgType = types.Typ[types.Bool] + op.decMethod = "Bool" + op.decResultType = types.Typ[types.Bool] + case kind >= types.Uint8 && kind <= types.Uint64: + op.writeMethod = "WriteUint64" + op.writeArgType = types.Typ[types.Uint64] + op.decMethod = "Uint" + op.decResultType = typ + op.decUseBitSize = true + case kind == types.String: + op.writeMethod = "WriteString" + op.writeArgType = types.Typ[types.String] + op.decMethod = "String" + op.decResultType = types.Typ[types.String] + default: + return nil, fmt.Errorf("unhandled basic type: %v", typ) + } + return op, nil +} + +func (*buildContext) makeByteSliceOp(typ *types.Slice) op { + if !isByte(typ.Elem()) { + panic("non-byte slice type in makeByteSliceOp") + } + bslice := types.NewSlice(types.Typ[types.Uint8]) + return basicOp{ + typ: typ, + writeMethod: "WriteBytes", + writeArgType: bslice, + decMethod: "Bytes", + decResultType: bslice, + } +} + +func (bctx *buildContext) makeRawValueOp() op { + bslice := types.NewSlice(types.Typ[types.Uint8]) + return basicOp{ + typ: bctx.rawValueType, + writeMethod: "Write", + writeArgType: bslice, + decMethod: "Raw", + decResultType: bslice, + } +} + +func (op basicOp) writeNeedsConversion() bool { + return !types.AssignableTo(op.typ, op.writeArgType) +} + +func (op basicOp) decodeNeedsConversion() bool { + return !types.AssignableTo(op.decResultType, op.typ) +} + +func (op basicOp) genWrite(ctx *genContext, v string) string { + if op.writeNeedsConversion() { + v = fmt.Sprintf("%s(%s)", op.writeArgType, v) + } + return fmt.Sprintf("w.%s(%s)\n", op.writeMethod, v) +} + +func (op basicOp) genDecode(ctx *genContext) (string, string) { + var ( + resultV = ctx.temp() + result = resultV + method = op.decMethod + ) + if op.decUseBitSize { + // Note: For now, this only works for platform-independent integer + // sizes. makeBasicOp forbids the platform-dependent types. + var sizes types.StdSizes + method = fmt.Sprintf("%s%d", op.decMethod, sizes.Sizeof(op.typ)*8) + } + + // Call the decoder method. + var b bytes.Buffer + fmt.Fprintf(&b, "%s, err := dec.%s()\n", resultV, method) + fmt.Fprintf(&b, "if err != nil { return err }\n") + if op.decodeNeedsConversion() { + conv := ctx.temp() + fmt.Fprintf(&b, "%s := %s(%s)\n", conv, types.TypeString(op.typ, ctx.qualify), resultV) + result = conv + } + return result, b.String() +} + +// byteArrayOp handles [...]byte. +type byteArrayOp struct { + typ types.Type + name types.Type // name != typ for named byte array types (e.g. common.Address) +} + +func (bctx *buildContext) makeByteArrayOp(name *types.Named, typ *types.Array) byteArrayOp { + nt := types.Type(name) + if name == nil { + nt = typ + } + return byteArrayOp{typ, nt} +} + +func (op byteArrayOp) genWrite(ctx *genContext, v string) string { + return fmt.Sprintf("w.WriteBytes(%s[:])\n", v) +} + +func (op byteArrayOp) genDecode(ctx *genContext) (string, string) { + var resultV = ctx.temp() + + var b bytes.Buffer + fmt.Fprintf(&b, "var %s %s\n", resultV, types.TypeString(op.name, ctx.qualify)) + fmt.Fprintf(&b, "if err := dec.ReadBytes(%s[:]); err != nil { return err }\n", resultV) + return resultV, b.String() +} + +// bigIntNoPtrOp handles non-pointer big.Int. +// This exists because big.Int has it's own decoder operation on rlp.Stream, +// but the decode method returns *big.Int, so it needs to be dereferenced. +type bigIntOp struct { + pointer bool +} + +func (op bigIntOp) genWrite(ctx *genContext, v string) string { + var b bytes.Buffer + + fmt.Fprintf(&b, "if %s.Sign() == -1 {\n", v) + fmt.Fprintf(&b, " return rlp.ErrNegativeBigInt\n") + fmt.Fprintf(&b, "}\n") + dst := v + if !op.pointer { + dst = "&" + v + } + fmt.Fprintf(&b, "w.WriteBigInt(%s)\n", dst) + + // Wrap with nil check. + if op.pointer { + code := b.String() + b.Reset() + fmt.Fprintf(&b, "if %s == nil {\n", v) + fmt.Fprintf(&b, " w.Write(rlp.EmptyString)") + fmt.Fprintf(&b, "} else {\n") + fmt.Fprint(&b, code) + fmt.Fprintf(&b, "}\n") + } + + return b.String() +} + +func (op bigIntOp) genDecode(ctx *genContext) (string, string) { + var resultV = ctx.temp() + + var b bytes.Buffer + fmt.Fprintf(&b, "%s, err := dec.BigInt()\n", resultV) + fmt.Fprintf(&b, "if err != nil { return err }\n") + + result := resultV + if !op.pointer { + result = "(*" + resultV + ")" + } + return result, b.String() +} + +// encoderDecoderOp handles rlp.Encoder and rlp.Decoder. +// In order to be used with this, the type must implement both interfaces. +// This restriction may be lifted in the future by creating separate ops for +// encoding and decoding. +type encoderDecoderOp struct { + typ types.Type +} + +func (op encoderDecoderOp) genWrite(ctx *genContext, v string) string { + return fmt.Sprintf("if err := %s.EncodeRLP(w); err != nil { return err }\n", v) +} + +func (op encoderDecoderOp) genDecode(ctx *genContext) (string, string) { + // DecodeRLP must have pointer receiver, and this is verified in makeOp. + etyp := op.typ.(*types.Pointer).Elem() + var resultV = ctx.temp() + + var b bytes.Buffer + fmt.Fprintf(&b, "%s := new(%s)\n", resultV, types.TypeString(etyp, ctx.qualify)) + fmt.Fprintf(&b, "if err := %s.DecodeRLP(dec); err != nil { return err }\n", resultV) + return resultV, b.String() +} + +// ptrOp handles pointer types. +type ptrOp struct { + elemTyp types.Type + elem op + nilOK bool + nilValue rlpstruct.NilKind +} + +func (bctx *buildContext) makePtrOp(elemTyp types.Type, tags rlpstruct.Tags) (op, error) { + elemOp, err := bctx.makeOp(nil, elemTyp, rlpstruct.Tags{}) + if err != nil { + return nil, err + } + op := ptrOp{elemTyp: elemTyp, elem: elemOp} + + // Determine nil value. + if tags.NilOK { + op.nilOK = true + op.nilValue = tags.NilKind + } else { + styp := bctx.typeToStructType(elemTyp) + op.nilValue = styp.DefaultNilValue() + } + return op, nil +} + +func (op ptrOp) genWrite(ctx *genContext, v string) string { + // Note: in writer functions, accesses to v are read-only, i.e. v is any Go + // expression. To make all accesses work through the pointer, we substitute + // v with (*v). This is required for most accesses including `v`, `call(v)`, + // and `v[index]` on slices. + // + // For `v.field` and `v[:]` on arrays, the dereference operation is not required. + var vv string + _, isStruct := op.elem.(structOp) + _, isByteArray := op.elem.(byteArrayOp) + if isStruct || isByteArray { + vv = v + } else { + vv = fmt.Sprintf("(*%s)", v) + } + + var b bytes.Buffer + fmt.Fprintf(&b, "if %s == nil {\n", v) + fmt.Fprintf(&b, " w.Write([]byte{0x%X})\n", op.nilValue) + fmt.Fprintf(&b, "} else {\n") + fmt.Fprintf(&b, " %s", op.elem.genWrite(ctx, vv)) + fmt.Fprintf(&b, "}\n") + return b.String() +} + +func (op ptrOp) genDecode(ctx *genContext) (string, string) { + result, code := op.elem.genDecode(ctx) + if !op.nilOK { + // If nil pointers are not allowed, we can just decode the element. + return "&" + result, code + } + + // nil is allowed, so check the kind and size first. + // If size is zero and kind matches the nilKind of the type, + // the value decodes as a nil pointer. + var ( + resultV = ctx.temp() + kindV = ctx.temp() + sizeV = ctx.temp() + wantKind string + ) + if op.nilValue == rlpstruct.NilKindList { + wantKind = "rlp.List" + } else { + wantKind = "rlp.String" + } + var b bytes.Buffer + fmt.Fprintf(&b, "var %s %s\n", resultV, types.TypeString(types.NewPointer(op.elemTyp), ctx.qualify)) + fmt.Fprintf(&b, "if %s, %s, err := dec.Kind(); err != nil {\n", kindV, sizeV) + fmt.Fprintf(&b, " return err\n") + fmt.Fprintf(&b, "} else if %s != 0 || %s != %s {\n", sizeV, kindV, wantKind) + fmt.Fprint(&b, code) + fmt.Fprintf(&b, " %s = &%s\n", resultV, result) + fmt.Fprintf(&b, "}\n") + return resultV, b.String() +} + +// structOp handles struct types. +type structOp struct { + named *types.Named + typ *types.Struct + fields []*structField + optionalFields []*structField +} + +type structField struct { + name string + typ types.Type + elem op +} + +func (bctx *buildContext) makeStructOp(named *types.Named, typ *types.Struct) (op, error) { + // Convert fields to []rlpstruct.Field. + var allStructFields []rlpstruct.Field + for i := 0; i < typ.NumFields(); i++ { + f := typ.Field(i) + allStructFields = append(allStructFields, rlpstruct.Field{ + Name: f.Name(), + Exported: f.Exported(), + Index: i, + Tag: typ.Tag(i), + Type: *bctx.typeToStructType(f.Type()), + }) + } + + // Filter/validate fields. + fields, tags, err := rlpstruct.ProcessFields(allStructFields) + if err != nil { + return nil, err + } + + // Create field ops. + var op = structOp{named: named, typ: typ} + for i, field := range fields { + // Advanced struct tags are not supported yet. + tag := tags[i] + if err := checkUnsupportedTags(field.Name, tag); err != nil { + return nil, err + } + typ := typ.Field(field.Index).Type() + elem, err := bctx.makeOp(nil, typ, tags[i]) + if err != nil { + return nil, fmt.Errorf("field %s: %v", field.Name, err) + } + f := &structField{name: field.Name, typ: typ, elem: elem} + if tag.Optional { + op.optionalFields = append(op.optionalFields, f) + } else { + op.fields = append(op.fields, f) + } + } + return op, nil +} + +func checkUnsupportedTags(field string, tag rlpstruct.Tags) error { + if tag.Tail { + return fmt.Errorf(`field %s has unsupported struct tag "tail"`, field) + } + return nil +} + +func (op structOp) genWrite(ctx *genContext, v string) string { + var b bytes.Buffer + var listMarker = ctx.temp() + fmt.Fprintf(&b, "%s := w.List()\n", listMarker) + for _, field := range op.fields { + selector := v + "." + field.name + fmt.Fprint(&b, field.elem.genWrite(ctx, selector)) + } + op.writeOptionalFields(&b, ctx, v) + fmt.Fprintf(&b, "w.ListEnd(%s)\n", listMarker) + return b.String() +} + +func (op structOp) writeOptionalFields(b *bytes.Buffer, ctx *genContext, v string) { + if len(op.optionalFields) == 0 { + return + } + // First check zero-ness of all optional fields. + var zeroV = make([]string, len(op.optionalFields)) + for i, field := range op.optionalFields { + selector := v + "." + field.name + zeroV[i] = ctx.temp() + fmt.Fprintf(b, "%s := %s\n", zeroV[i], nonZeroCheck(selector, field.typ, ctx.qualify)) + } + // Now write the fields. + for i, field := range op.optionalFields { + selector := v + "." + field.name + cond := "" + for j := i; j < len(op.optionalFields); j++ { + if j > i { + cond += " || " + } + cond += zeroV[j] + } + fmt.Fprintf(b, "if %s {\n", cond) + fmt.Fprint(b, field.elem.genWrite(ctx, selector)) + fmt.Fprintf(b, "}\n") + } +} + +func (op structOp) genDecode(ctx *genContext) (string, string) { + // Get the string representation of the type. + // Here, named types are handled separately because the output + // would contain a copy of the struct definition otherwise. + var typeName string + if op.named != nil { + typeName = types.TypeString(op.named, ctx.qualify) + } else { + typeName = types.TypeString(op.typ, ctx.qualify) + } + + // Create struct object. + var resultV = ctx.temp() + var b bytes.Buffer + fmt.Fprintf(&b, "var %s %s\n", resultV, typeName) + + // Decode fields. + fmt.Fprintf(&b, "{\n") + fmt.Fprintf(&b, "if _, err := dec.List(); err != nil { return err }\n") + for _, field := range op.fields { + result, code := field.elem.genDecode(ctx) + fmt.Fprintf(&b, "// %s:\n", field.name) + fmt.Fprint(&b, code) + fmt.Fprintf(&b, "%s.%s = %s\n", resultV, field.name, result) + } + op.decodeOptionalFields(&b, ctx, resultV) + fmt.Fprintf(&b, "if err := dec.ListEnd(); err != nil { return err }\n") + fmt.Fprintf(&b, "}\n") + return resultV, b.String() +} + +func (op structOp) decodeOptionalFields(b *bytes.Buffer, ctx *genContext, resultV string) { + var suffix bytes.Buffer + for _, field := range op.optionalFields { + result, code := field.elem.genDecode(ctx) + fmt.Fprintf(b, "// %s:\n", field.name) + fmt.Fprintf(b, "if dec.MoreDataInList() {\n") + fmt.Fprint(b, code) + fmt.Fprintf(b, "%s.%s = %s\n", resultV, field.name, result) + fmt.Fprintf(&suffix, "}\n") + } + suffix.WriteTo(b) +} + +// sliceOp handles slice types. +type sliceOp struct { + typ *types.Slice + elemOp op +} + +func (bctx *buildContext) makeSliceOp(typ *types.Slice) (op, error) { + elemOp, err := bctx.makeOp(nil, typ.Elem(), rlpstruct.Tags{}) + if err != nil { + return nil, err + } + return sliceOp{typ: typ, elemOp: elemOp}, nil +} + +func (op sliceOp) genWrite(ctx *genContext, v string) string { + var ( + listMarker = ctx.temp() // holds return value of w.List() + iterElemV = ctx.temp() // iteration variable + elemCode = op.elemOp.genWrite(ctx, iterElemV) + ) + + var b bytes.Buffer + fmt.Fprintf(&b, "%s := w.List()\n", listMarker) + fmt.Fprintf(&b, "for _, %s := range %s {\n", iterElemV, v) + fmt.Fprint(&b, elemCode) + fmt.Fprintf(&b, "}\n") + fmt.Fprintf(&b, "w.ListEnd(%s)\n", listMarker) + return b.String() +} + +func (op sliceOp) genDecode(ctx *genContext) (string, string) { + var sliceV = ctx.temp() // holds the output slice + elemResult, elemCode := op.elemOp.genDecode(ctx) + + var b bytes.Buffer + fmt.Fprintf(&b, "var %s %s\n", sliceV, types.TypeString(op.typ, ctx.qualify)) + fmt.Fprintf(&b, "if _, err := dec.List(); err != nil { return err }\n") + fmt.Fprintf(&b, "for dec.MoreDataInList() {\n") + fmt.Fprintf(&b, " %s", elemCode) + fmt.Fprintf(&b, " %s = append(%s, %s)\n", sliceV, sliceV, elemResult) + fmt.Fprintf(&b, "}\n") + fmt.Fprintf(&b, "if err := dec.ListEnd(); err != nil { return err }\n") + return sliceV, b.String() +} + +func (bctx *buildContext) makeOp(name *types.Named, typ types.Type, tags rlpstruct.Tags) (op, error) { + switch typ := typ.(type) { + case *types.Named: + if isBigInt(typ) { + return bigIntOp{}, nil + } + if typ == bctx.rawValueType { + return bctx.makeRawValueOp(), nil + } + if bctx.isDecoder(typ) { + return nil, fmt.Errorf("type %v implements rlp.Decoder with non-pointer receiver", typ) + } + // TODO: same check for encoder? + return bctx.makeOp(typ, typ.Underlying(), tags) + case *types.Pointer: + if isBigInt(typ.Elem()) { + return bigIntOp{pointer: true}, nil + } + // Encoder/Decoder interfaces. + if bctx.isEncoder(typ) { + if bctx.isDecoder(typ) { + return encoderDecoderOp{typ}, nil + } + return nil, fmt.Errorf("type %v implements rlp.Encoder but not rlp.Decoder", typ) + } + if bctx.isDecoder(typ) { + return nil, fmt.Errorf("type %v implements rlp.Decoder but not rlp.Encoder", typ) + } + // Default pointer handling. + return bctx.makePtrOp(typ.Elem(), tags) + case *types.Basic: + return bctx.makeBasicOp(typ) + case *types.Struct: + return bctx.makeStructOp(name, typ) + case *types.Slice: + etyp := typ.Elem() + if isByte(etyp) && !bctx.isEncoder(etyp) { + return bctx.makeByteSliceOp(typ), nil + } + return bctx.makeSliceOp(typ) + case *types.Array: + etyp := typ.Elem() + if isByte(etyp) && !bctx.isEncoder(etyp) { + return bctx.makeByteArrayOp(name, typ), nil + } + return nil, fmt.Errorf("unhandled array type: %v", typ) + default: + return nil, fmt.Errorf("unhandled type: %v", typ) + } +} + +// generateDecoder generates the DecodeRLP method on 'typ'. +func generateDecoder(ctx *genContext, typ string, op op) []byte { + ctx.resetTemp() + ctx.addImport(pathOfPackageRLP) + + result, code := op.genDecode(ctx) + var b bytes.Buffer + fmt.Fprintf(&b, "func (obj *%s) DecodeRLP(dec *rlp.Stream) error {\n", typ) + fmt.Fprint(&b, code) + fmt.Fprintf(&b, " *obj = %s\n", result) + fmt.Fprintf(&b, " return nil\n") + fmt.Fprintf(&b, "}\n") + return b.Bytes() +} + +// generateEncoder generates the EncodeRLP method on 'typ'. +func generateEncoder(ctx *genContext, typ string, op op) []byte { + ctx.resetTemp() + ctx.addImport("io") + ctx.addImport(pathOfPackageRLP) + + var b bytes.Buffer + fmt.Fprintf(&b, "func (obj *%s) EncodeRLP(_w io.Writer) error {\n", typ) + fmt.Fprintf(&b, " w := rlp.NewEncoderBuffer(_w)\n") + fmt.Fprint(&b, op.genWrite(ctx, "obj")) + fmt.Fprintf(&b, " return w.Flush()\n") + fmt.Fprintf(&b, "}\n") + return b.Bytes() +} + +func (bctx *buildContext) generate(typ *types.Named, encoder, decoder bool) ([]byte, error) { + bctx.topType = typ + + pkg := typ.Obj().Pkg() + op, err := bctx.makeOp(nil, typ, rlpstruct.Tags{}) + if err != nil { + return nil, err + } + + var ( + ctx = newGenContext(pkg) + encSource []byte + decSource []byte + ) + if encoder { + encSource = generateEncoder(ctx, typ.Obj().Name(), op) + } + if decoder { + decSource = generateDecoder(ctx, typ.Obj().Name(), op) + } + + var b bytes.Buffer + fmt.Fprintf(&b, "package %s\n\n", pkg.Name()) + for _, imp := range ctx.importsList() { + fmt.Fprintf(&b, "import %q\n", imp) + } + if encoder { + fmt.Fprintln(&b) + b.Write(encSource) + } + if decoder { + fmt.Fprintln(&b) + b.Write(decSource) + } + + source := b.Bytes() + // fmt.Println(string(source)) + return format.Source(source) +} diff --git a/rlp/rlpgen/gen_test.go b/rlp/rlpgen/gen_test.go new file mode 100644 index 0000000000..9940db188d --- /dev/null +++ b/rlp/rlpgen/gen_test.go @@ -0,0 +1,92 @@ +package main + +import ( + "bytes" + "fmt" + "go/ast" + "go/importer" + "go/parser" + "go/token" + "go/types" + "io/ioutil" + "os" + "path/filepath" + "testing" +) + +// Package RLP is loaded only once and reused for all tests. +var ( + testFset = token.NewFileSet() + testImporter = importer.ForCompiler(testFset, "source", nil).(types.ImporterFrom) + testPackageRLP *types.Package +) + +func init() { + cwd, err := os.Getwd() + if err != nil { + panic(err) + } + testPackageRLP, err = testImporter.ImportFrom(pathOfPackageRLP, cwd, 0) + if err != nil { + panic(fmt.Errorf("can't load package RLP: %v", err)) + } +} + +var tests = []string{"uints", "nil", "rawvalue", "optional", "bigint"} + +func TestOutput(t *testing.T) { + for _, test := range tests { + test := test + t.Run(test, func(t *testing.T) { + inputFile := filepath.Join("testdata", test+".in.txt") + outputFile := filepath.Join("testdata", test+".out.txt") + bctx, typ, err := loadTestSource(inputFile, "Test") + if err != nil { + t.Fatal("error loading test source:", err) + } + output, err := bctx.generate(typ, true, true) + if err != nil { + t.Fatal("error in generate:", err) + } + + // Set this environment variable to regenerate the test outputs. + if os.Getenv("WRITE_TEST_FILES") != "" { + ioutil.WriteFile(outputFile, output, 0644) + } + + // Check if output matches. + wantOutput, err := ioutil.ReadFile(outputFile) + if err != nil { + t.Fatal("error loading expected test output:", err) + } + if !bytes.Equal(output, wantOutput) { + t.Fatal("output mismatch:\n", string(output)) + } + }) + } +} + +func loadTestSource(file string, typeName string) (*buildContext, *types.Named, error) { + // Load the test input. + content, err := ioutil.ReadFile(file) + if err != nil { + return nil, nil, err + } + f, err := parser.ParseFile(testFset, file, content, 0) + if err != nil { + return nil, nil, err + } + conf := types.Config{Importer: testImporter} + pkg, err := conf.Check("test", testFset, []*ast.File{f}, nil) + if err != nil { + return nil, nil, err + } + + // Find the test struct. + bctx := newBuildContext(testPackageRLP) + typ, err := lookupStructType(pkg.Scope(), typeName) + if err != nil { + return nil, nil, fmt.Errorf("can't find type %s: %v", typeName, err) + } + return bctx, typ, nil +} diff --git a/rlp/rlpgen/main.go b/rlp/rlpgen/main.go new file mode 100644 index 0000000000..5b240bfd85 --- /dev/null +++ b/rlp/rlpgen/main.go @@ -0,0 +1,148 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package main + +import ( + "bytes" + "errors" + "flag" + "fmt" + "go/types" + "io/ioutil" + "os" + + "golang.org/x/tools/go/packages" +) + +const pathOfPackageRLP = "github.com/ethereum/go-ethereum/rlp" + +func main() { + var ( + pkgdir = flag.String("dir", ".", "input package") + output = flag.String("out", "-", "output file (default is stdout)") + genEncoder = flag.Bool("encoder", true, "generate EncodeRLP?") + genDecoder = flag.Bool("decoder", false, "generate DecodeRLP?") + typename = flag.String("type", "", "type to generate methods for") + ) + flag.Parse() + + cfg := Config{ + Dir: *pkgdir, + Type: *typename, + GenerateEncoder: *genEncoder, + GenerateDecoder: *genDecoder, + } + code, err := cfg.process() + if err != nil { + fatal(err) + } + if *output == "-" { + os.Stdout.Write(code) + } else if err := ioutil.WriteFile(*output, code, 0644); err != nil { + fatal(err) + } +} + +func fatal(args ...interface{}) { + fmt.Fprintln(os.Stderr, args...) + os.Exit(1) +} + +type Config struct { + Dir string // input package directory + Type string + + GenerateEncoder bool + GenerateDecoder bool +} + +// process generates the Go code. +func (cfg *Config) process() (code []byte, err error) { + // Load packages. + pcfg := &packages.Config{ + Mode: packages.NeedName | packages.NeedTypes | packages.NeedImports | packages.NeedDeps, + Dir: cfg.Dir, + BuildFlags: []string{"-tags", "norlpgen"}, + } + ps, err := packages.Load(pcfg, pathOfPackageRLP, ".") + if err != nil { + return nil, err + } + if len(ps) == 0 { + return nil, fmt.Errorf("no Go package found in %s", cfg.Dir) + } + packages.PrintErrors(ps) + + // Find the packages that were loaded. + var ( + pkg *types.Package + packageRLP *types.Package + ) + for _, p := range ps { + if len(p.Errors) > 0 { + return nil, fmt.Errorf("package %s has errors", p.PkgPath) + } + if p.PkgPath == pathOfPackageRLP { + packageRLP = p.Types + } else { + pkg = p.Types + } + } + bctx := newBuildContext(packageRLP) + + // Find the type and generate. + typ, err := lookupStructType(pkg.Scope(), cfg.Type) + if err != nil { + return nil, fmt.Errorf("can't find %s in %s: %v", typ, pkg, err) + } + code, err = bctx.generate(typ, cfg.GenerateEncoder, cfg.GenerateDecoder) + if err != nil { + return nil, err + } + + // Add build comments. + // This is done here to avoid processing these lines with gofmt. + var header bytes.Buffer + fmt.Fprint(&header, "// Code generated by rlpgen. DO NOT EDIT.\n\n") + fmt.Fprint(&header, "//go:build !norlpgen\n") + fmt.Fprint(&header, "// +build !norlpgen\n\n") + return append(header.Bytes(), code...), nil +} + +func lookupStructType(scope *types.Scope, name string) (*types.Named, error) { + typ, err := lookupType(scope, name) + if err != nil { + return nil, err + } + _, ok := typ.Underlying().(*types.Struct) + if !ok { + return nil, errors.New("not a struct type") + } + return typ, nil +} + +func lookupType(scope *types.Scope, name string) (*types.Named, error) { + obj := scope.Lookup(name) + if obj == nil { + return nil, errors.New("no such identifier") + } + typ, ok := obj.(*types.TypeName) + if !ok { + return nil, errors.New("not a type") + } + return typ.Type().(*types.Named), nil +} diff --git a/rlp/rlpgen/testdata/bigint.in.txt b/rlp/rlpgen/testdata/bigint.in.txt new file mode 100644 index 0000000000..d23d84a287 --- /dev/null +++ b/rlp/rlpgen/testdata/bigint.in.txt @@ -0,0 +1,10 @@ +// -*- mode: go -*- + +package test + +import "math/big" + +type Test struct { + Int *big.Int + IntNoPtr big.Int +} diff --git a/rlp/rlpgen/testdata/bigint.out.txt b/rlp/rlpgen/testdata/bigint.out.txt new file mode 100644 index 0000000000..f54d1faa15 --- /dev/null +++ b/rlp/rlpgen/testdata/bigint.out.txt @@ -0,0 +1,49 @@ +package test + +import "github.com/ethereum/go-ethereum/rlp" +import "io" + +func (obj *Test) EncodeRLP(_w io.Writer) error { + w := rlp.NewEncoderBuffer(_w) + _tmp0 := w.List() + if obj.Int == nil { + w.Write(rlp.EmptyString) + } else { + if obj.Int.Sign() == -1 { + return rlp.ErrNegativeBigInt + } + w.WriteBigInt(obj.Int) + } + if obj.IntNoPtr.Sign() == -1 { + return rlp.ErrNegativeBigInt + } + w.WriteBigInt(&obj.IntNoPtr) + w.ListEnd(_tmp0) + return w.Flush() +} + +func (obj *Test) DecodeRLP(dec *rlp.Stream) error { + var _tmp0 Test + { + if _, err := dec.List(); err != nil { + return err + } + // Int: + _tmp1, err := dec.BigInt() + if err != nil { + return err + } + _tmp0.Int = _tmp1 + // IntNoPtr: + _tmp2, err := dec.BigInt() + if err != nil { + return err + } + _tmp0.IntNoPtr = (*_tmp2) + if err := dec.ListEnd(); err != nil { + return err + } + } + *obj = _tmp0 + return nil +} diff --git a/rlp/rlpgen/testdata/nil.in.txt b/rlp/rlpgen/testdata/nil.in.txt new file mode 100644 index 0000000000..a28ff34487 --- /dev/null +++ b/rlp/rlpgen/testdata/nil.in.txt @@ -0,0 +1,30 @@ +// -*- mode: go -*- + +package test + +type Aux struct{ + A uint32 +} + +type Test struct{ + Uint8 *byte `rlp:"nil"` + Uint8List *byte `rlp:"nilList"` + + Uint32 *uint32 `rlp:"nil"` + Uint32List *uint32 `rlp:"nilList"` + + Uint64 *uint64 `rlp:"nil"` + Uint64List *uint64 `rlp:"nilList"` + + String *string `rlp:"nil"` + StringList *string `rlp:"nilList"` + + ByteArray *[3]byte `rlp:"nil"` + ByteArrayList *[3]byte `rlp:"nilList"` + + ByteSlice *[]byte `rlp:"nil"` + ByteSliceList *[]byte `rlp:"nilList"` + + Struct *Aux `rlp:"nil"` + StructString *Aux `rlp:"nilString"` +} diff --git a/rlp/rlpgen/testdata/nil.out.txt b/rlp/rlpgen/testdata/nil.out.txt new file mode 100644 index 0000000000..e0d5dcebad --- /dev/null +++ b/rlp/rlpgen/testdata/nil.out.txt @@ -0,0 +1,289 @@ +package test + +import "github.com/ethereum/go-ethereum/rlp" +import "io" + +func (obj *Test) EncodeRLP(_w io.Writer) error { + w := rlp.NewEncoderBuffer(_w) + _tmp0 := w.List() + if obj.Uint8 == nil { + w.Write([]byte{0x80}) + } else { + w.WriteUint64(uint64((*obj.Uint8))) + } + if obj.Uint8List == nil { + w.Write([]byte{0xC0}) + } else { + w.WriteUint64(uint64((*obj.Uint8List))) + } + if obj.Uint32 == nil { + w.Write([]byte{0x80}) + } else { + w.WriteUint64(uint64((*obj.Uint32))) + } + if obj.Uint32List == nil { + w.Write([]byte{0xC0}) + } else { + w.WriteUint64(uint64((*obj.Uint32List))) + } + if obj.Uint64 == nil { + w.Write([]byte{0x80}) + } else { + w.WriteUint64((*obj.Uint64)) + } + if obj.Uint64List == nil { + w.Write([]byte{0xC0}) + } else { + w.WriteUint64((*obj.Uint64List)) + } + if obj.String == nil { + w.Write([]byte{0x80}) + } else { + w.WriteString((*obj.String)) + } + if obj.StringList == nil { + w.Write([]byte{0xC0}) + } else { + w.WriteString((*obj.StringList)) + } + if obj.ByteArray == nil { + w.Write([]byte{0x80}) + } else { + w.WriteBytes(obj.ByteArray[:]) + } + if obj.ByteArrayList == nil { + w.Write([]byte{0xC0}) + } else { + w.WriteBytes(obj.ByteArrayList[:]) + } + if obj.ByteSlice == nil { + w.Write([]byte{0x80}) + } else { + w.WriteBytes((*obj.ByteSlice)) + } + if obj.ByteSliceList == nil { + w.Write([]byte{0xC0}) + } else { + w.WriteBytes((*obj.ByteSliceList)) + } + if obj.Struct == nil { + w.Write([]byte{0xC0}) + } else { + _tmp1 := w.List() + w.WriteUint64(uint64(obj.Struct.A)) + w.ListEnd(_tmp1) + } + if obj.StructString == nil { + w.Write([]byte{0x80}) + } else { + _tmp2 := w.List() + w.WriteUint64(uint64(obj.StructString.A)) + w.ListEnd(_tmp2) + } + w.ListEnd(_tmp0) + return w.Flush() +} + +func (obj *Test) DecodeRLP(dec *rlp.Stream) error { + var _tmp0 Test + { + if _, err := dec.List(); err != nil { + return err + } + // Uint8: + var _tmp2 *byte + if _tmp3, _tmp4, err := dec.Kind(); err != nil { + return err + } else if _tmp4 != 0 || _tmp3 != rlp.String { + _tmp1, err := dec.Uint8() + if err != nil { + return err + } + _tmp2 = &_tmp1 + } + _tmp0.Uint8 = _tmp2 + // Uint8List: + var _tmp6 *byte + if _tmp7, _tmp8, err := dec.Kind(); err != nil { + return err + } else if _tmp8 != 0 || _tmp7 != rlp.List { + _tmp5, err := dec.Uint8() + if err != nil { + return err + } + _tmp6 = &_tmp5 + } + _tmp0.Uint8List = _tmp6 + // Uint32: + var _tmp10 *uint32 + if _tmp11, _tmp12, err := dec.Kind(); err != nil { + return err + } else if _tmp12 != 0 || _tmp11 != rlp.String { + _tmp9, err := dec.Uint32() + if err != nil { + return err + } + _tmp10 = &_tmp9 + } + _tmp0.Uint32 = _tmp10 + // Uint32List: + var _tmp14 *uint32 + if _tmp15, _tmp16, err := dec.Kind(); err != nil { + return err + } else if _tmp16 != 0 || _tmp15 != rlp.List { + _tmp13, err := dec.Uint32() + if err != nil { + return err + } + _tmp14 = &_tmp13 + } + _tmp0.Uint32List = _tmp14 + // Uint64: + var _tmp18 *uint64 + if _tmp19, _tmp20, err := dec.Kind(); err != nil { + return err + } else if _tmp20 != 0 || _tmp19 != rlp.String { + _tmp17, err := dec.Uint64() + if err != nil { + return err + } + _tmp18 = &_tmp17 + } + _tmp0.Uint64 = _tmp18 + // Uint64List: + var _tmp22 *uint64 + if _tmp23, _tmp24, err := dec.Kind(); err != nil { + return err + } else if _tmp24 != 0 || _tmp23 != rlp.List { + _tmp21, err := dec.Uint64() + if err != nil { + return err + } + _tmp22 = &_tmp21 + } + _tmp0.Uint64List = _tmp22 + // String: + var _tmp26 *string + if _tmp27, _tmp28, err := dec.Kind(); err != nil { + return err + } else if _tmp28 != 0 || _tmp27 != rlp.String { + _tmp25, err := dec.String() + if err != nil { + return err + } + _tmp26 = &_tmp25 + } + _tmp0.String = _tmp26 + // StringList: + var _tmp30 *string + if _tmp31, _tmp32, err := dec.Kind(); err != nil { + return err + } else if _tmp32 != 0 || _tmp31 != rlp.List { + _tmp29, err := dec.String() + if err != nil { + return err + } + _tmp30 = &_tmp29 + } + _tmp0.StringList = _tmp30 + // ByteArray: + var _tmp34 *[3]byte + if _tmp35, _tmp36, err := dec.Kind(); err != nil { + return err + } else if _tmp36 != 0 || _tmp35 != rlp.String { + var _tmp33 [3]byte + if err := dec.ReadBytes(_tmp33[:]); err != nil { + return err + } + _tmp34 = &_tmp33 + } + _tmp0.ByteArray = _tmp34 + // ByteArrayList: + var _tmp38 *[3]byte + if _tmp39, _tmp40, err := dec.Kind(); err != nil { + return err + } else if _tmp40 != 0 || _tmp39 != rlp.List { + var _tmp37 [3]byte + if err := dec.ReadBytes(_tmp37[:]); err != nil { + return err + } + _tmp38 = &_tmp37 + } + _tmp0.ByteArrayList = _tmp38 + // ByteSlice: + var _tmp42 *[]byte + if _tmp43, _tmp44, err := dec.Kind(); err != nil { + return err + } else if _tmp44 != 0 || _tmp43 != rlp.String { + _tmp41, err := dec.Bytes() + if err != nil { + return err + } + _tmp42 = &_tmp41 + } + _tmp0.ByteSlice = _tmp42 + // ByteSliceList: + var _tmp46 *[]byte + if _tmp47, _tmp48, err := dec.Kind(); err != nil { + return err + } else if _tmp48 != 0 || _tmp47 != rlp.List { + _tmp45, err := dec.Bytes() + if err != nil { + return err + } + _tmp46 = &_tmp45 + } + _tmp0.ByteSliceList = _tmp46 + // Struct: + var _tmp51 *Aux + if _tmp52, _tmp53, err := dec.Kind(); err != nil { + return err + } else if _tmp53 != 0 || _tmp52 != rlp.List { + var _tmp49 Aux + { + if _, err := dec.List(); err != nil { + return err + } + // A: + _tmp50, err := dec.Uint32() + if err != nil { + return err + } + _tmp49.A = _tmp50 + if err := dec.ListEnd(); err != nil { + return err + } + } + _tmp51 = &_tmp49 + } + _tmp0.Struct = _tmp51 + // StructString: + var _tmp56 *Aux + if _tmp57, _tmp58, err := dec.Kind(); err != nil { + return err + } else if _tmp58 != 0 || _tmp57 != rlp.String { + var _tmp54 Aux + { + if _, err := dec.List(); err != nil { + return err + } + // A: + _tmp55, err := dec.Uint32() + if err != nil { + return err + } + _tmp54.A = _tmp55 + if err := dec.ListEnd(); err != nil { + return err + } + } + _tmp56 = &_tmp54 + } + _tmp0.StructString = _tmp56 + if err := dec.ListEnd(); err != nil { + return err + } + } + *obj = _tmp0 + return nil +} diff --git a/rlp/rlpgen/testdata/optional.in.txt b/rlp/rlpgen/testdata/optional.in.txt new file mode 100644 index 0000000000..f1ac9f7899 --- /dev/null +++ b/rlp/rlpgen/testdata/optional.in.txt @@ -0,0 +1,17 @@ +// -*- mode: go -*- + +package test + +type Aux struct { + A uint64 +} + +type Test struct { + Uint64 uint64 `rlp:"optional"` + Pointer *uint64 `rlp:"optional"` + String string `rlp:"optional"` + Slice []uint64 `rlp:"optional"` + Array [3]byte `rlp:"optional"` + NamedStruct Aux `rlp:"optional"` + AnonStruct struct{ A string } `rlp:"optional"` +} diff --git a/rlp/rlpgen/testdata/optional.out.txt b/rlp/rlpgen/testdata/optional.out.txt new file mode 100644 index 0000000000..02df8e457f --- /dev/null +++ b/rlp/rlpgen/testdata/optional.out.txt @@ -0,0 +1,153 @@ +package test + +import "github.com/ethereum/go-ethereum/rlp" +import "io" + +func (obj *Test) EncodeRLP(_w io.Writer) error { + w := rlp.NewEncoderBuffer(_w) + _tmp0 := w.List() + _tmp1 := obj.Uint64 != 0 + _tmp2 := obj.Pointer != nil + _tmp3 := obj.String != "" + _tmp4 := len(obj.Slice) > 0 + _tmp5 := obj.Array != ([3]byte{}) + _tmp6 := obj.NamedStruct != (Aux{}) + _tmp7 := obj.AnonStruct != (struct{ A string }{}) + if _tmp1 || _tmp2 || _tmp3 || _tmp4 || _tmp5 || _tmp6 || _tmp7 { + w.WriteUint64(obj.Uint64) + } + if _tmp2 || _tmp3 || _tmp4 || _tmp5 || _tmp6 || _tmp7 { + if obj.Pointer == nil { + w.Write([]byte{0x80}) + } else { + w.WriteUint64((*obj.Pointer)) + } + } + if _tmp3 || _tmp4 || _tmp5 || _tmp6 || _tmp7 { + w.WriteString(obj.String) + } + if _tmp4 || _tmp5 || _tmp6 || _tmp7 { + _tmp8 := w.List() + for _, _tmp9 := range obj.Slice { + w.WriteUint64(_tmp9) + } + w.ListEnd(_tmp8) + } + if _tmp5 || _tmp6 || _tmp7 { + w.WriteBytes(obj.Array[:]) + } + if _tmp6 || _tmp7 { + _tmp10 := w.List() + w.WriteUint64(obj.NamedStruct.A) + w.ListEnd(_tmp10) + } + if _tmp7 { + _tmp11 := w.List() + w.WriteString(obj.AnonStruct.A) + w.ListEnd(_tmp11) + } + w.ListEnd(_tmp0) + return w.Flush() +} + +func (obj *Test) DecodeRLP(dec *rlp.Stream) error { + var _tmp0 Test + { + if _, err := dec.List(); err != nil { + return err + } + // Uint64: + if dec.MoreDataInList() { + _tmp1, err := dec.Uint64() + if err != nil { + return err + } + _tmp0.Uint64 = _tmp1 + // Pointer: + if dec.MoreDataInList() { + _tmp2, err := dec.Uint64() + if err != nil { + return err + } + _tmp0.Pointer = &_tmp2 + // String: + if dec.MoreDataInList() { + _tmp3, err := dec.String() + if err != nil { + return err + } + _tmp0.String = _tmp3 + // Slice: + if dec.MoreDataInList() { + var _tmp4 []uint64 + if _, err := dec.List(); err != nil { + return err + } + for dec.MoreDataInList() { + _tmp5, err := dec.Uint64() + if err != nil { + return err + } + _tmp4 = append(_tmp4, _tmp5) + } + if err := dec.ListEnd(); err != nil { + return err + } + _tmp0.Slice = _tmp4 + // Array: + if dec.MoreDataInList() { + var _tmp6 [3]byte + if err := dec.ReadBytes(_tmp6[:]); err != nil { + return err + } + _tmp0.Array = _tmp6 + // NamedStruct: + if dec.MoreDataInList() { + var _tmp7 Aux + { + if _, err := dec.List(); err != nil { + return err + } + // A: + _tmp8, err := dec.Uint64() + if err != nil { + return err + } + _tmp7.A = _tmp8 + if err := dec.ListEnd(); err != nil { + return err + } + } + _tmp0.NamedStruct = _tmp7 + // AnonStruct: + if dec.MoreDataInList() { + var _tmp9 struct{ A string } + { + if _, err := dec.List(); err != nil { + return err + } + // A: + _tmp10, err := dec.String() + if err != nil { + return err + } + _tmp9.A = _tmp10 + if err := dec.ListEnd(); err != nil { + return err + } + } + _tmp0.AnonStruct = _tmp9 + } + } + } + } + } + } + } + if err := dec.ListEnd(); err != nil { + return err + } + } + *obj = _tmp0 + return nil +} diff --git a/rlp/rlpgen/testdata/rawvalue.in.txt b/rlp/rlpgen/testdata/rawvalue.in.txt new file mode 100644 index 0000000000..3a657bc907 --- /dev/null +++ b/rlp/rlpgen/testdata/rawvalue.in.txt @@ -0,0 +1,11 @@ +// -*- mode: go -*- + +package test + +import "github.com/ethereum/go-ethereum/rlp" + +type Test struct { + RawValue rlp.RawValue + PointerToRawValue *rlp.RawValue + SliceOfRawValue []rlp.RawValue +} diff --git a/rlp/rlpgen/testdata/rawvalue.out.txt b/rlp/rlpgen/testdata/rawvalue.out.txt new file mode 100644 index 0000000000..3607c98636 --- /dev/null +++ b/rlp/rlpgen/testdata/rawvalue.out.txt @@ -0,0 +1,64 @@ +package test + +import "github.com/ethereum/go-ethereum/rlp" +import "io" + +func (obj *Test) EncodeRLP(_w io.Writer) error { + w := rlp.NewEncoderBuffer(_w) + _tmp0 := w.List() + w.Write(obj.RawValue) + if obj.PointerToRawValue == nil { + w.Write([]byte{0x80}) + } else { + w.Write((*obj.PointerToRawValue)) + } + _tmp1 := w.List() + for _, _tmp2 := range obj.SliceOfRawValue { + w.Write(_tmp2) + } + w.ListEnd(_tmp1) + w.ListEnd(_tmp0) + return w.Flush() +} + +func (obj *Test) DecodeRLP(dec *rlp.Stream) error { + var _tmp0 Test + { + if _, err := dec.List(); err != nil { + return err + } + // RawValue: + _tmp1, err := dec.Raw() + if err != nil { + return err + } + _tmp0.RawValue = _tmp1 + // PointerToRawValue: + _tmp2, err := dec.Raw() + if err != nil { + return err + } + _tmp0.PointerToRawValue = &_tmp2 + // SliceOfRawValue: + var _tmp3 []rlp.RawValue + if _, err := dec.List(); err != nil { + return err + } + for dec.MoreDataInList() { + _tmp4, err := dec.Raw() + if err != nil { + return err + } + _tmp3 = append(_tmp3, _tmp4) + } + if err := dec.ListEnd(); err != nil { + return err + } + _tmp0.SliceOfRawValue = _tmp3 + if err := dec.ListEnd(); err != nil { + return err + } + } + *obj = _tmp0 + return nil +} diff --git a/rlp/rlpgen/testdata/uints.in.txt b/rlp/rlpgen/testdata/uints.in.txt new file mode 100644 index 0000000000..8095da997d --- /dev/null +++ b/rlp/rlpgen/testdata/uints.in.txt @@ -0,0 +1,10 @@ +// -*- mode: go -*- + +package test + +type Test struct{ + A uint8 + B uint16 + C uint32 + D uint64 +} diff --git a/rlp/rlpgen/testdata/uints.out.txt b/rlp/rlpgen/testdata/uints.out.txt new file mode 100644 index 0000000000..1a354956a4 --- /dev/null +++ b/rlp/rlpgen/testdata/uints.out.txt @@ -0,0 +1,53 @@ +package test + +import "github.com/ethereum/go-ethereum/rlp" +import "io" + +func (obj *Test) EncodeRLP(_w io.Writer) error { + w := rlp.NewEncoderBuffer(_w) + _tmp0 := w.List() + w.WriteUint64(uint64(obj.A)) + w.WriteUint64(uint64(obj.B)) + w.WriteUint64(uint64(obj.C)) + w.WriteUint64(obj.D) + w.ListEnd(_tmp0) + return w.Flush() +} + +func (obj *Test) DecodeRLP(dec *rlp.Stream) error { + var _tmp0 Test + { + if _, err := dec.List(); err != nil { + return err + } + // A: + _tmp1, err := dec.Uint8() + if err != nil { + return err + } + _tmp0.A = _tmp1 + // B: + _tmp2, err := dec.Uint16() + if err != nil { + return err + } + _tmp0.B = _tmp2 + // C: + _tmp3, err := dec.Uint32() + if err != nil { + return err + } + _tmp0.C = _tmp3 + // D: + _tmp4, err := dec.Uint64() + if err != nil { + return err + } + _tmp0.D = _tmp4 + if err := dec.ListEnd(); err != nil { + return err + } + } + *obj = _tmp0 + return nil +} diff --git a/rlp/rlpgen/types.go b/rlp/rlpgen/types.go new file mode 100644 index 0000000000..5926a801ee --- /dev/null +++ b/rlp/rlpgen/types.go @@ -0,0 +1,98 @@ +package main + +import ( + "fmt" + "go/types" + "reflect" +) + +// typeReflectKind gives the reflect.Kind that represents typ. +func typeReflectKind(typ types.Type) reflect.Kind { + switch typ := typ.(type) { + case *types.Basic: + k := typ.Kind() + if k >= types.Bool && k <= types.Complex128 { + // value order matches for Bool..Complex128 + return reflect.Bool + reflect.Kind(k-types.Bool) + } + if k == types.String { + return reflect.String + } + if k == types.UnsafePointer { + return reflect.UnsafePointer + } + panic(fmt.Errorf("unhandled BasicKind %v", k)) + case *types.Array: + return reflect.Array + case *types.Chan: + return reflect.Chan + case *types.Interface: + return reflect.Interface + case *types.Map: + return reflect.Map + case *types.Pointer: + return reflect.Ptr + case *types.Signature: + return reflect.Func + case *types.Slice: + return reflect.Slice + case *types.Struct: + return reflect.Struct + default: + panic(fmt.Errorf("unhandled type %T", typ)) + } +} + +// nonZeroCheck returns the expression that checks whether 'v' is a non-zero value of type 'vtyp'. +func nonZeroCheck(v string, vtyp types.Type, qualify types.Qualifier) string { + // Resolve type name. + typ := resolveUnderlying(vtyp) + switch typ := typ.(type) { + case *types.Basic: + k := typ.Kind() + switch { + case k == types.Bool: + return v + case k >= types.Uint && k <= types.Complex128: + return fmt.Sprintf("%s != 0", v) + case k == types.String: + return fmt.Sprintf(`%s != ""`, v) + default: + panic(fmt.Errorf("unhandled BasicKind %v", k)) + } + case *types.Array, *types.Struct: + return fmt.Sprintf("%s != (%s{})", v, types.TypeString(vtyp, qualify)) + case *types.Interface, *types.Pointer, *types.Signature: + return fmt.Sprintf("%s != nil", v) + case *types.Slice, *types.Map: + return fmt.Sprintf("len(%s) > 0", v) + default: + panic(fmt.Errorf("unhandled type %T", typ)) + } +} + +// isBigInt checks whether 'typ' is "math/big".Int. +func isBigInt(typ types.Type) bool { + named, ok := typ.(*types.Named) + if !ok { + return false + } + name := named.Obj() + return name.Pkg().Path() == "math/big" && name.Name() == "Int" +} + +// isByte checks whether the underlying type of 'typ' is uint8. +func isByte(typ types.Type) bool { + basic, ok := resolveUnderlying(typ).(*types.Basic) + return ok && basic.Kind() == types.Uint8 +} + +func resolveUnderlying(typ types.Type) types.Type { + for { + t := typ.Underlying() + if t == typ { + return t + } + typ = t + } +} diff --git a/rlp/typecache.go b/rlp/typecache.go index 62553d3b55..3e37c9d2fc 100644 --- a/rlp/typecache.go +++ b/rlp/typecache.go @@ -19,9 +19,10 @@ package rlp import ( "fmt" "reflect" - "strings" "sync" "sync/atomic" + + "github.com/ethereum/go-ethereum/rlp/internal/rlpstruct" ) // typeinfo is an entry in the type cache. @@ -32,35 +33,16 @@ type typeinfo struct { writerErr error // error from makeWriter } -// tags represents struct tags. -type tags struct { - // rlp:"nil" controls whether empty input results in a nil pointer. - // nilKind is the kind of empty value allowed for the field. - nilKind Kind - nilOK bool - - // rlp:"optional" allows for a field to be missing in the input list. - // If this is set, all subsequent fields must also be optional. - optional bool - - // rlp:"tail" controls whether this field swallows additional list elements. It can - // only be set for the last field, which must be of slice type. - tail bool - - // rlp:"-" ignores fields. - ignored bool -} - // typekey is the key of a type in typeCache. It includes the struct tags because // they might generate a different decoder. type typekey struct { reflect.Type - tags + rlpstruct.Tags } type decoder func(*Stream, reflect.Value) error -type writer func(reflect.Value, *encbuf) error +type writer func(reflect.Value, *encBuffer) error var theTC = newTypeCache() @@ -95,10 +77,10 @@ func (c *typeCache) info(typ reflect.Type) *typeinfo { } // Not in the cache, need to generate info for this type. - return c.generate(typ, tags{}) + return c.generate(typ, rlpstruct.Tags{}) } -func (c *typeCache) generate(typ reflect.Type, tags tags) *typeinfo { +func (c *typeCache) generate(typ reflect.Type, tags rlpstruct.Tags) *typeinfo { c.mu.Lock() defer c.mu.Unlock() @@ -122,7 +104,7 @@ func (c *typeCache) generate(typ reflect.Type, tags tags) *typeinfo { return info } -func (c *typeCache) infoWhileGenerating(typ reflect.Type, tags tags) *typeinfo { +func (c *typeCache) infoWhileGenerating(typ reflect.Type, tags rlpstruct.Tags) *typeinfo { key := typekey{typ, tags} if info := c.next[key]; info != nil { return info @@ -144,35 +126,40 @@ type field struct { // structFields resolves the typeinfo of all public fields in a struct type. func structFields(typ reflect.Type) (fields []field, err error) { - var ( - lastPublic = lastPublicField(typ) - anyOptional = false - ) + // Convert fields to rlpstruct.Field. + var allStructFields []rlpstruct.Field for i := 0; i < typ.NumField(); i++ { - if f := typ.Field(i); f.PkgPath == "" { // exported - tags, err := parseStructTag(typ, i, lastPublic) - if err != nil { - return nil, err - } + rf := typ.Field(i) + allStructFields = append(allStructFields, rlpstruct.Field{ + Name: rf.Name, + Index: i, + Exported: rf.PkgPath == "", + Tag: string(rf.Tag), + Type: *rtypeToStructType(rf.Type, nil), + }) + } - // Skip rlp:"-" fields. - if tags.ignored { - continue - } - // If any field has the "optional" tag, subsequent fields must also have it. - if tags.optional || tags.tail { - anyOptional = true - } else if anyOptional { - return nil, fmt.Errorf(`rlp: struct field %v.%s needs "optional" tag`, typ, f.Name) - } - info := theTC.infoWhileGenerating(f.Type, tags) - fields = append(fields, field{i, info, tags.optional}) + // Filter/validate fields. + structFields, structTags, err := rlpstruct.ProcessFields(allStructFields) + if err != nil { + if tagErr, ok := err.(rlpstruct.TagError); ok { + tagErr.StructType = typ.String() + return nil, tagErr } + return nil, err + } + + // Resolve typeinfo. + for i, sf := range structFields { + typ := typ.Field(sf.Index).Type + tags := structTags[i] + info := theTC.infoWhileGenerating(typ, tags) + fields = append(fields, field{sf.Index, info, tags.Optional}) } return fields, nil } -// anyOptionalFields returns the index of the first field with "optional" tag. +// firstOptionalField returns the index of the first field with "optional" tag. func firstOptionalField(fields []field) int { for i, f := range fields { if f.optional { @@ -192,82 +179,56 @@ func (e structFieldError) Error() string { return fmt.Sprintf("%v (struct field %v.%s)", e.err, e.typ, e.typ.Field(e.field).Name) } -type structTagError struct { - typ reflect.Type - field, tag, err string -} - -func (e structTagError) Error() string { - return fmt.Sprintf("rlp: invalid struct tag %q for %v.%s (%s)", e.tag, e.typ, e.field, e.err) -} - -func parseStructTag(typ reflect.Type, fi, lastPublic int) (tags, error) { - f := typ.Field(fi) - var ts tags - for _, t := range strings.Split(f.Tag.Get("rlp"), ",") { - switch t = strings.TrimSpace(t); t { - case "": - case "-": - ts.ignored = true - case "nil", "nilString", "nilList": - ts.nilOK = true - if f.Type.Kind() != reflect.Ptr { - return ts, structTagError{typ, f.Name, t, "field is not a pointer"} - } - switch t { - case "nil": - ts.nilKind = defaultNilKind(f.Type.Elem()) - case "nilString": - ts.nilKind = String - case "nilList": - ts.nilKind = List - } - case "optional": - ts.optional = true - if ts.tail { - return ts, structTagError{typ, f.Name, t, `also has "tail" tag`} - } - case "tail": - ts.tail = true - if fi != lastPublic { - return ts, structTagError{typ, f.Name, t, "must be on last field"} - } - if ts.optional { - return ts, structTagError{typ, f.Name, t, `also has "optional" tag`} - } - if f.Type.Kind() != reflect.Slice { - return ts, structTagError{typ, f.Name, t, "field type is not slice"} - } - default: - return ts, fmt.Errorf("rlp: unknown struct tag %q on %v.%s", t, typ, f.Name) - } - } - return ts, nil -} - -func lastPublicField(typ reflect.Type) int { - last := 0 - for i := 0; i < typ.NumField(); i++ { - if typ.Field(i).PkgPath == "" { - last = i - } - } - return last -} - -func (i *typeinfo) generate(typ reflect.Type, tags tags) { +func (i *typeinfo) generate(typ reflect.Type, tags rlpstruct.Tags) { i.decoder, i.decoderErr = makeDecoder(typ, tags) i.writer, i.writerErr = makeWriter(typ, tags) } -// defaultNilKind determines whether a nil pointer to typ encodes/decodes -// as an empty string or empty list. -func defaultNilKind(typ reflect.Type) Kind { +// rtypeToStructType converts typ to rlpstruct.Type. +func rtypeToStructType(typ reflect.Type, rec map[reflect.Type]*rlpstruct.Type) *rlpstruct.Type { k := typ.Kind() - if isUint(k) || k == reflect.String || k == reflect.Bool || isByteArray(typ) { - return String + if k == reflect.Invalid { + panic("invalid kind") + } + + if prev := rec[typ]; prev != nil { + return prev // short-circuit for recursive types + } + if rec == nil { + rec = make(map[reflect.Type]*rlpstruct.Type) + } + + t := &rlpstruct.Type{ + Name: typ.String(), + Kind: k, + IsEncoder: typ.Implements(encoderInterface), + IsDecoder: typ.Implements(decoderInterface), + } + rec[typ] = t + if k == reflect.Array || k == reflect.Slice || k == reflect.Ptr { + t.Elem = rtypeToStructType(typ.Elem(), rec) + } + return t +} + +// typeNilKind gives the RLP value kind for nil pointers to 'typ'. +func typeNilKind(typ reflect.Type, tags rlpstruct.Tags) Kind { + styp := rtypeToStructType(typ, nil) + + var nk rlpstruct.NilKind + if tags.NilOK { + nk = tags.NilKind + } else { + nk = styp.DefaultNilValue() + } + switch nk { + case rlpstruct.NilKindString: + return String + case rlpstruct.NilKindList: + return List + default: + panic("invalid nil kind value") } - return List } func isUint(k reflect.Kind) bool { @@ -277,7 +238,3 @@ func isUint(k reflect.Kind) bool { func isByte(typ reflect.Type) bool { return typ.Kind() == reflect.Uint8 && !typ.Implements(encoderInterface) } - -func isByteArray(typ reflect.Type) bool { - return (typ.Kind() == reflect.Slice || typ.Kind() == reflect.Array) && isByte(typ.Elem()) -} diff --git a/rpc/client.go b/rpc/client.go index e43760c22c..d3ce029775 100644 --- a/rpc/client.go +++ b/rpc/client.go @@ -58,12 +58,6 @@ const ( maxClientSubscriptionBuffer = 20000 ) -const ( - httpScheme = "http" - wsScheme = "ws" - ipcScheme = "ipc" -) - // BatchElem is an element in a batch request. type BatchElem struct { Method string @@ -80,7 +74,7 @@ type BatchElem struct { // Client represents a connection to an RPC server. type Client struct { idgen func() ID // for subscriptions - scheme string // connection type: http, ws or ipc + isHTTP bool // connection type: http, ws or ipc services *serviceRegistry idCounter uint32 @@ -115,11 +109,9 @@ type clientConn struct { } func (c *Client) newClientConn(conn ServerCodec) *clientConn { - ctx := context.WithValue(context.Background(), clientContextKey{}, c) - // Http connections have already set the scheme - if !c.isHTTP() && c.scheme != "" { - ctx = context.WithValue(ctx, "scheme", c.scheme) - } + ctx := context.Background() + ctx = context.WithValue(ctx, clientContextKey{}, c) + ctx = context.WithValue(ctx, peerInfoContextKey{}, conn.peerInfo()) handler := newHandler(ctx, conn, c.idgen, c.services) return &clientConn{conn, handler} } @@ -145,7 +137,7 @@ func (op *requestOp) wait(ctx context.Context, c *Client) (*jsonrpcMessage, erro select { case <-ctx.Done(): // Send the timeout to dispatch so it can remove the request IDs. - if !c.isHTTP() { + if !c.isHTTP { select { case c.reqTimeout <- op: case <-c.closing: @@ -194,7 +186,7 @@ func DialContext(ctx context.Context, rawurl string) (*Client, error) { } } -// Client retrieves the client from the context, if any. This can be used to perform +// ClientFromContext retrieves the client from the context, if any. This can be used to perform // 'reverse calls' in a handler method. func ClientFromContext(ctx context.Context) (*Client, bool) { client, ok := ctx.Value(clientContextKey{}).(*Client) @@ -212,18 +204,10 @@ func newClient(initctx context.Context, connect reconnectFunc) (*Client, error) } func initClient(conn ServerCodec, idgen func() ID, services *serviceRegistry) *Client { - scheme := "" - switch conn.(type) { - case *httpConn: - scheme = httpScheme - case *websocketCodec: - scheme = wsScheme - case *jsonCodec: - scheme = ipcScheme - } + _, isHTTP := conn.(*httpConn) c := &Client{ + isHTTP: isHTTP, idgen: idgen, - scheme: scheme, services: services, writeConn: conn, close: make(chan struct{}), @@ -236,7 +220,7 @@ func initClient(conn ServerCodec, idgen func() ID, services *serviceRegistry) *C reqSent: make(chan error, 1), reqTimeout: make(chan *requestOp), } - if !c.isHTTP() { + if !isHTTP { go c.dispatch(conn) } return c @@ -267,7 +251,7 @@ func (c *Client) SupportedModules() (map[string]string, error) { // Close closes the client, aborting any in-flight requests. func (c *Client) Close() { - if c.isHTTP() { + if c.isHTTP { return } select { @@ -281,7 +265,7 @@ func (c *Client) Close() { // This method only works for clients using HTTP, it doesn't have // any effect for clients using another transport. func (c *Client) SetHeader(key, value string) { - if !c.isHTTP() { + if !c.isHTTP { return } conn := c.writeConn.(*httpConn) @@ -315,7 +299,7 @@ func (c *Client) CallContext(ctx context.Context, result interface{}, method str } op := &requestOp{ids: []json.RawMessage{msg.ID}, resp: make(chan *jsonrpcMessage, 1)} - if c.isHTTP() { + if c.isHTTP { err = c.sendHTTP(ctx, op, msg) } else { err = c.send(ctx, op, msg) @@ -349,7 +333,7 @@ func (c *Client) BatchCall(b []BatchElem) error { return c.BatchCallContext(ctx, b) } -// BatchCall sends all given requests as a single batch and waits for the server +// BatchCallContext sends all given requests as a single batch and waits for the server // to return a response for all of them. The wait duration is bounded by the // context's deadline. // @@ -378,7 +362,7 @@ func (c *Client) BatchCallContext(ctx context.Context, b []BatchElem) error { } var err error - if c.isHTTP() { + if c.isHTTP { err = c.sendBatchHTTP(ctx, op, msgs) } else { err = c.send(ctx, op, msgs) @@ -417,7 +401,7 @@ func (c *Client) Notify(ctx context.Context, method string, args ...interface{}) } msg.ID = nil - if c.isHTTP() { + if c.isHTTP { return c.sendHTTP(ctx, op, msg) } return c.send(ctx, op, msg) @@ -450,12 +434,12 @@ func (c *Client) Subscribe(ctx context.Context, namespace string, channel interf // Check type of channel first. chanVal := reflect.ValueOf(channel) if chanVal.Kind() != reflect.Chan || chanVal.Type().ChanDir()&reflect.SendDir == 0 { - panic("first argument to Subscribe must be a writable channel") + panic(fmt.Sprintf("channel argument of Subscribe has type %T, need writable channel", channel)) } if chanVal.IsNil() { panic("channel given to Subscribe must not be nil") } - if c.isHTTP() { + if c.isHTTP { return nil, ErrNotificationsUnsupported } @@ -509,8 +493,8 @@ func (c *Client) send(ctx context.Context, op *requestOp, msg interface{}) error } func (c *Client) write(ctx context.Context, msg interface{}, retry bool) error { - // The previous write failed. Try to establish a new connection. if c.writeConn == nil { + // The previous write failed. Try to establish a new connection. if err := c.reconnect(ctx); err != nil { return err } @@ -657,7 +641,3 @@ func (c *Client) read(codec ServerCodec) { c.readOp <- readOp{msgs, batch} } } - -func (c *Client) isHTTP() bool { - return c.scheme == httpScheme -} diff --git a/rpc/client_test.go b/rpc/client_test.go index 224eb0c5c8..fa6010bb19 100644 --- a/rpc/client_test.go +++ b/rpc/client_test.go @@ -615,6 +615,7 @@ func TestClientReconnect(t *testing.T) { // Start a server and corresponding client. s1, l1 := startServer("127.0.0.1:0") client, err := DialContext(ctx, "ws://"+l1.Addr().String()) + defer client.Close() if err != nil { t.Fatal("can't dial", err) } diff --git a/rpc/http.go b/rpc/http.go index 32f4e7d90a..18404c060a 100644 --- a/rpc/http.go +++ b/rpc/http.go @@ -48,11 +48,18 @@ type httpConn struct { headers http.Header } -// httpConn is treated specially by Client. +// httpConn implements ServerCodec, but it is treated specially by Client +// and some methods don't work. The panic() stubs here exist to ensure +// this special treatment is correct. + func (hc *httpConn) writeJSON(context.Context, interface{}) error { panic("writeJSON called on httpConn") } +func (hc *httpConn) peerInfo() PeerInfo { + panic("peerInfo called on httpConn") +} + func (hc *httpConn) remoteAddr() string { return hc.url } @@ -174,6 +181,7 @@ func (hc *httpConn) doRequest(ctx context.Context, msg interface{}) (io.ReadClos return nil, err } req.ContentLength = int64(len(body)) + req.GetBody = func() (io.ReadCloser, error) { return ioutil.NopCloser(bytes.NewReader(body)), nil } // set headers hc.mu.Lock() @@ -236,20 +244,19 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { http.Error(w, err.Error(), code) return } + + // Create request-scoped context. + connInfo := PeerInfo{Transport: "http", RemoteAddr: r.RemoteAddr} + connInfo.HTTP.Version = r.Proto + connInfo.HTTP.Host = r.Host + connInfo.HTTP.Origin = r.Header.Get("Origin") + connInfo.HTTP.UserAgent = r.Header.Get("User-Agent") + ctx := r.Context() + ctx = context.WithValue(ctx, peerInfoContextKey{}, connInfo) + // All checks passed, create a codec that reads directly from the request body // until EOF, writes the response to w, and orders the server to process a // single request. - ctx := r.Context() - ctx = context.WithValue(ctx, "remote", r.RemoteAddr) - ctx = context.WithValue(ctx, "scheme", r.Proto) - ctx = context.WithValue(ctx, "local", r.Host) - if ua := r.Header.Get("User-Agent"); ua != "" { - ctx = context.WithValue(ctx, "User-Agent", ua) - } - if origin := r.Header.Get("Origin"); origin != "" { - ctx = context.WithValue(ctx, "Origin", origin) - } - w.Header().Set("content-type", contentType) codec := newHTTPServerConn(r, w) defer codec.close() diff --git a/rpc/http_test.go b/rpc/http_test.go index 97f8d44c39..c84d7705f2 100644 --- a/rpc/http_test.go +++ b/rpc/http_test.go @@ -162,3 +162,39 @@ func TestHTTPErrorResponse(t *testing.T) { t.Error("unexpected error message", errMsg) } } + +func TestHTTPPeerInfo(t *testing.T) { + s := newTestServer() + defer s.Stop() + ts := httptest.NewServer(s) + defer ts.Close() + + c, err := Dial(ts.URL) + if err != nil { + t.Fatal(err) + } + c.SetHeader("user-agent", "ua-testing") + c.SetHeader("origin", "origin.example.com") + + // Request peer information. + var info PeerInfo + if err := c.Call(&info, "test_peerInfo"); err != nil { + t.Fatal(err) + } + + if info.RemoteAddr == "" { + t.Error("RemoteAddr not set") + } + if info.Transport != "http" { + t.Errorf("wrong Transport %q", info.Transport) + } + if info.HTTP.Version != "HTTP/1.1" { + t.Errorf("wrong HTTP.Version %q", info.HTTP.Version) + } + if info.HTTP.UserAgent != "ua-testing" { + t.Errorf("wrong HTTP.UserAgent %q", info.HTTP.UserAgent) + } + if info.HTTP.Origin != "origin.example.com" { + t.Errorf("wrong HTTP.Origin %q", info.HTTP.UserAgent) + } +} diff --git a/rpc/json.go b/rpc/json.go index 1daee3db82..6024f1e7dc 100644 --- a/rpc/json.go +++ b/rpc/json.go @@ -198,6 +198,11 @@ func NewCodec(conn Conn) ServerCodec { return NewFuncCodec(conn, enc.Encode, dec.Decode) } +func (c *jsonCodec) peerInfo() PeerInfo { + // This returns "ipc" because all other built-in transports have a separate codec type. + return PeerInfo{Transport: "ipc", RemoteAddr: c.remote} +} + func (c *jsonCodec) remoteAddr() string { return c.remote } diff --git a/rpc/server.go b/rpc/server.go index 64e078a7fd..babc5688e2 100644 --- a/rpc/server.go +++ b/rpc/server.go @@ -26,6 +26,7 @@ import ( ) const MetadataApi = "rpc" +const EngineApi = "engine" // CodecOption specifies which type of messages a codec supports. // @@ -145,3 +146,38 @@ func (s *RPCService) Modules() map[string]string { } return modules } + +// PeerInfo contains information about the remote end of the network connection. +// +// This is available within RPC method handlers through the context. Call +// PeerInfoFromContext to get information about the client connection related to +// the current method call. +type PeerInfo struct { + // Transport is name of the protocol used by the client. + // This can be "http", "ws" or "ipc". + Transport string + + // Address of client. This will usually contain the IP address and port. + RemoteAddr string + + // Addditional information for HTTP and WebSocket connections. + HTTP struct { + // Protocol version, i.e. "HTTP/1.1". This is not set for WebSocket. + Version string + // Header values sent by the client. + UserAgent string + Origin string + Host string + } +} + +type peerInfoContextKey struct{} + +// PeerInfoFromContext returns information about the client's network connection. +// Use this with the context passed to RPC method handler functions. +// +// The zero value is returned if no connection info is present in ctx. +func PeerInfoFromContext(ctx context.Context) PeerInfo { + info, _ := ctx.Value(peerInfoContextKey{}).(PeerInfo) + return info +} diff --git a/rpc/server_test.go b/rpc/server_test.go index 6a2b09e449..e67893710d 100644 --- a/rpc/server_test.go +++ b/rpc/server_test.go @@ -45,7 +45,7 @@ func TestServerRegisterName(t *testing.T) { t.Fatalf("Expected service calc to be registered") } - wantCallbacks := 9 + wantCallbacks := 10 if len(svc.callbacks) != wantCallbacks { t.Errorf("Expected %d callbacks for service 'service', got %d", wantCallbacks, len(svc.callbacks)) } @@ -134,7 +134,7 @@ func TestServerShortLivedConn(t *testing.T) { if err != nil { t.Fatal("can't dial:", err) } - defer conn.Close() + conn.SetDeadline(deadline) // Write the request, then half-close the connection so the server stops reading. conn.Write([]byte(request)) @@ -142,6 +142,8 @@ func TestServerShortLivedConn(t *testing.T) { // Now try to get the response. buf := make([]byte, 2000) n, err := conn.Read(buf) + conn.Close() + if err != nil { t.Fatal("read error:", err) } diff --git a/rpc/subscription.go b/rpc/subscription.go index 942e764e5d..d7ba784fc5 100644 --- a/rpc/subscription.go +++ b/rpc/subscription.go @@ -34,7 +34,7 @@ import ( var ( // ErrNotificationsUnsupported is returned when the connection doesn't support notifications ErrNotificationsUnsupported = errors.New("notifications not supported") - // ErrNotificationNotFound is returned when the notification for the given id is not found + // ErrSubscriptionNotFound is returned when the notification for the given id is not found ErrSubscriptionNotFound = errors.New("subscription not found") ) diff --git a/rpc/testservice_test.go b/rpc/testservice_test.go index 62afc1df44..253e263289 100644 --- a/rpc/testservice_test.go +++ b/rpc/testservice_test.go @@ -80,6 +80,10 @@ func (s *testService) EchoWithCtx(ctx context.Context, str string, i int, args * return echoResult{str, i, args} } +func (s *testService) PeerInfo(ctx context.Context) PeerInfo { + return PeerInfoFromContext(ctx) +} + func (s *testService) Sleep(ctx context.Context, duration time.Duration) { time.Sleep(duration) } diff --git a/rpc/types.go b/rpc/types.go index ca52d474d9..46b08caf68 100644 --- a/rpc/types.go +++ b/rpc/types.go @@ -30,18 +30,21 @@ import ( // API describes the set of methods offered over the RPC interface type API struct { - Namespace string // namespace under which the rpc methods of Service are exposed - Version string // api version for DApp's - Service interface{} // receiver instance which holds the methods - Public bool // indication if the methods must be considered safe for public use + Namespace string // namespace under which the rpc methods of Service are exposed + Version string // api version for DApp's + Service interface{} // receiver instance which holds the methods + Public bool // indication if the methods must be considered safe for public use + Authenticated bool // whether the api should only be available behind authentication. } // ServerCodec implements reading, parsing and writing RPC messages for the server side of // a RPC session. Implementations must be go-routine safe since the codec can be called in // multiple go-routines concurrently. type ServerCodec interface { + peerInfo() PeerInfo readBatch() (msgs []*jsonrpcMessage, isBatch bool, err error) close() + jsonWriter } diff --git a/rpc/websocket.go b/rpc/websocket.go index 5571324af8..28380d8aa4 100644 --- a/rpc/websocket.go +++ b/rpc/websocket.go @@ -60,7 +60,7 @@ func (s *Server) WebsocketHandler(allowedOrigins []string) http.Handler { log.Debug("WebSocket upgrade failed", "err", err) return } - codec := newWebsocketCodec(conn) + codec := newWebsocketCodec(conn, r.Host, r.Header) s.ServeCodec(codec, 0) }) } @@ -197,7 +197,7 @@ func DialWebsocketWithDialer(ctx context.Context, endpoint, origin string, diale } return nil, hErr } - return newWebsocketCodec(conn), nil + return newWebsocketCodec(conn, endpoint, header), nil }) } @@ -235,12 +235,13 @@ func wsClientHeaders(endpoint, origin string) (string, http.Header, error) { type websocketCodec struct { *jsonCodec conn *websocket.Conn + info PeerInfo wg sync.WaitGroup pingReset chan struct{} } -func newWebsocketCodec(conn *websocket.Conn) ServerCodec { +func newWebsocketCodec(conn *websocket.Conn, host string, req http.Header) ServerCodec { conn.SetReadLimit(wsMessageSizeLimit) conn.SetPongHandler(func(appData string) error { conn.SetReadDeadline(time.Time{}) @@ -250,7 +251,16 @@ func newWebsocketCodec(conn *websocket.Conn) ServerCodec { jsonCodec: NewFuncCodec(conn, conn.WriteJSON, conn.ReadJSON).(*jsonCodec), conn: conn, pingReset: make(chan struct{}, 1), + info: PeerInfo{ + Transport: "ws", + RemoteAddr: conn.RemoteAddr().String(), + }, } + // Fill in connection details. + wc.info.HTTP.Host = host + wc.info.HTTP.Origin = req.Get("Origin") + wc.info.HTTP.UserAgent = req.Get("User-Agent") + // Start pinger. wc.wg.Add(1) go wc.pingLoop() return wc @@ -261,6 +271,10 @@ func (wc *websocketCodec) close() { wc.wg.Wait() } +func (wc *websocketCodec) peerInfo() PeerInfo { + return wc.info +} + func (wc *websocketCodec) writeJSON(ctx context.Context, v interface{}) error { err := wc.jsonCodec.writeJSON(ctx, v) if err == nil { diff --git a/rpc/websocket_test.go b/rpc/websocket_test.go index cf83b621f1..f74b7fd08b 100644 --- a/rpc/websocket_test.go +++ b/rpc/websocket_test.go @@ -76,7 +76,7 @@ func TestWebsocketOriginCheck(t *testing.T) { // Connections without origin header should work. client, err = DialWebsocket(context.Background(), wsURL, "") if err != nil { - t.Fatal("error for empty origin") + t.Fatalf("error for empty origin: %v", err) } client.Close() } @@ -117,6 +117,41 @@ func TestWebsocketLargeCall(t *testing.T) { } } +func TestWebsocketPeerInfo(t *testing.T) { + var ( + s = newTestServer() + ts = httptest.NewServer(s.WebsocketHandler([]string{"origin.example.com"})) + tsurl = "ws:" + strings.TrimPrefix(ts.URL, "http:") + ) + defer s.Stop() + defer ts.Close() + + ctx := context.Background() + c, err := DialWebsocket(ctx, tsurl, "origin.example.com") + if err != nil { + t.Fatal(err) + } + + // Request peer information. + var connInfo PeerInfo + if err := c.Call(&connInfo, "test_peerInfo"); err != nil { + t.Fatal(err) + } + + if connInfo.RemoteAddr == "" { + t.Error("RemoteAddr not set") + } + if connInfo.Transport != "ws" { + t.Errorf("wrong Transport %q", connInfo.Transport) + } + if connInfo.HTTP.UserAgent != "Go-http-client/1.1" { + t.Errorf("wrong HTTP.UserAgent %q", connInfo.HTTP.UserAgent) + } + if connInfo.HTTP.Origin != "origin.example.com" { + t.Errorf("wrong HTTP.Origin %q", connInfo.HTTP.UserAgent) + } +} + // This test checks that client handles WebSocket ping frames correctly. func TestClientWebsocketPing(t *testing.T) { t.Parallel() diff --git a/signer/core/api.go b/signer/core/api.go index 48b54b8f43..f06fbeb76d 100644 --- a/signer/core/api.go +++ b/signer/core/api.go @@ -33,6 +33,7 @@ import ( "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/internal/ethapi" "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/rpc" "github.com/ethereum/go-ethereum/signer/core/apitypes" "github.com/ethereum/go-ethereum/signer/storage" ) @@ -188,23 +189,24 @@ func StartClefAccountManager(ksLocation string, nousb, lightKDF bool, scpath str // MetadataFromContext extracts Metadata from a given context.Context func MetadataFromContext(ctx context.Context) Metadata { + info := rpc.PeerInfoFromContext(ctx) + m := Metadata{"NA", "NA", "NA", "", ""} // batman - if v := ctx.Value("remote"); v != nil { - m.Remote = v.(string) + if info.Transport != "" { + if info.Transport == "http" { + m.Scheme = info.HTTP.Version + } + m.Scheme = info.Transport } - if v := ctx.Value("scheme"); v != nil { - m.Scheme = v.(string) + if info.RemoteAddr != "" { + m.Remote = info.RemoteAddr } - if v := ctx.Value("local"); v != nil { - m.Local = v.(string) - } - if v := ctx.Value("Origin"); v != nil { - m.Origin = v.(string) - } - if v := ctx.Value("User-Agent"); v != nil { - m.UserAgent = v.(string) + if info.HTTP.Host != "" { + m.Local = info.HTTP.Host } + m.Origin = info.HTTP.Origin + m.UserAgent = info.HTTP.UserAgent return m } diff --git a/signer/core/api_test.go b/signer/core/api_test.go index 36f12f71a5..9f44ca3195 100644 --- a/signer/core/api_test.go +++ b/signer/core/api_test.go @@ -256,6 +256,9 @@ func TestSignTx(t *testing.T) { if err != nil { t.Fatal(err) } + if len(list) == 0 { + t.Fatal("Unexpected empty list") + } a := common.NewMixedcaseAddress(list[0]) methodSig := "test(uint)" diff --git a/signer/core/apitypes/types.go b/signer/core/apitypes/types.go index 15ab153416..f5c2fe2f3d 100644 --- a/signer/core/apitypes/types.go +++ b/signer/core/apitypes/types.go @@ -262,6 +262,7 @@ func (typedData *TypedData) HashStruct(primaryType string, data TypedDataMessage // Dependencies returns an array of custom types ordered by their hierarchical reference tree func (typedData *TypedData) Dependencies(primaryType string, found []string) []string { + primaryType = strings.TrimSuffix(primaryType, "[]") includes := func(arr []string, str string) bool { for _, obj := range arr { if obj == str { @@ -364,7 +365,7 @@ func (typedData *TypedData) EncodeData(primaryType string, data map[string]inter if err != nil { return nil, err } - arrayBuffer.Write(encodedData) + arrayBuffer.Write(crypto.Keccak256(encodedData)) } else { bytesValue, err := typedData.EncodePrimitiveValue(parsedType, item, depth) if err != nil { diff --git a/signer/core/gnosis_safe.go b/signer/core/gnosis_safe.go index 016b1fff3e..1b88db1afe 100644 --- a/signer/core/gnosis_safe.go +++ b/signer/core/gnosis_safe.go @@ -31,6 +31,7 @@ type GnosisSafeTx struct { SafeTxGas big.Int `json:"safeTxGas"` Nonce big.Int `json:"nonce"` InputExpHash common.Hash `json:"safeTxHash"` + ChainId *math.HexOrDecimal256 `json:"chainId,omitempty"` } // ToTypedData converts the tx to a EIP-712 Typed Data structure for signing @@ -39,9 +40,14 @@ func (tx *GnosisSafeTx) ToTypedData() apitypes.TypedData { if tx.Data != nil { data = *tx.Data } + var domainType = []apitypes.Type{{Name: "verifyingContract", Type: "address"}} + if tx.ChainId != nil { + domainType = append([]apitypes.Type{{Name: "chainId", Type: "uint256"}}, domainType[0]) + } + gnosisTypedData := apitypes.TypedData{ Types: apitypes.Types{ - "EIP712Domain": []apitypes.Type{{Name: "verifyingContract", Type: "address"}}, + "EIP712Domain": domainType, "SafeTx": []apitypes.Type{ {Name: "to", Type: "address"}, {Name: "value", Type: "uint256"}, @@ -57,6 +63,7 @@ func (tx *GnosisSafeTx) ToTypedData() apitypes.TypedData { }, Domain: apitypes.TypedDataDomain{ VerifyingContract: tx.Safe.Address().Hex(), + ChainId: tx.ChainId, }, PrimaryType: "SafeTx", Message: apitypes.TypedDataMessage{ @@ -88,6 +95,7 @@ func (tx *GnosisSafeTx) ArgsForValidation() *apitypes.SendTxArgs { Nonce: hexutil.Uint64(tx.Nonce.Uint64()), Data: tx.Data, Input: nil, + ChainID: (*hexutil.Big)(tx.ChainId), } return args } diff --git a/signer/core/signed_data_test.go b/signer/core/signed_data_test.go index 1d972d2961..fbc2903d9e 100644 --- a/signer/core/signed_data_test.go +++ b/signer/core/signed_data_test.go @@ -532,3 +532,283 @@ func TestGnosisCustomData(t *testing.T) { t.Fatalf("Error, got %x, wanted %x", sighash, expSigHash) } } + +var gnosisTypedDataWithChainId = ` +{ + "types": { + "EIP712Domain": [ + { "type": "uint256", "name": "chainId" }, + { "type": "address", "name": "verifyingContract" } + ], + "SafeTx": [ + { "type": "address", "name": "to" }, + { "type": "uint256", "name": "value" }, + { "type": "bytes", "name": "data" }, + { "type": "uint8", "name": "operation" }, + { "type": "uint256", "name": "safeTxGas" }, + { "type": "uint256", "name": "baseGas" }, + { "type": "uint256", "name": "gasPrice" }, + { "type": "address", "name": "gasToken" }, + { "type": "address", "name": "refundReceiver" }, + { "type": "uint256", "name": "nonce" } + ] + }, + "domain": { + "verifyingContract": "0x111dAE35D176A9607053e0c46e91F36AFbC1dc57", + "chainId": "4" + }, + "primaryType": "SafeTx", + "message": { + "to": "0x5592EC0cfb4dbc12D3aB100b257153436a1f0FEa", + "value": "0", + "data": "0xa9059cbb00000000000000000000000099d580d3a7fe7bd183b2464517b2cd7ce5a8f15a0000000000000000000000000000000000000000000000000de0b6b3a7640000", + "operation": 0, + "safeTxGas": 0, + "baseGas": 0, + "gasPrice": "0", + "gasToken": "0x0000000000000000000000000000000000000000", + "refundReceiver": "0x0000000000000000000000000000000000000000", + "nonce": 15 + } +}` + +var gnosisTxWithChainId = ` +{ + "safe": "0x111dAE35D176A9607053e0c46e91F36AFbC1dc57", + "to": "0x5592EC0cfb4dbc12D3aB100b257153436a1f0FEa", + "value": "0", + "data": "0xa9059cbb00000000000000000000000099d580d3a7fe7bd183b2464517b2cd7ce5a8f15a0000000000000000000000000000000000000000000000000de0b6b3a7640000", + "operation": 0, + "gasToken": "0x0000000000000000000000000000000000000000", + "safeTxGas": 0, + "baseGas": 0, + "gasPrice": "0", + "refundReceiver": "0x0000000000000000000000000000000000000000", + "nonce": 15, + "executionDate": "2022-01-10T20:00:12Z", + "submissionDate": "2022-01-10T19:59:59.689989Z", + "modified": "2022-01-10T20:00:31.903635Z", + "blockNumber": 9968802, + "transactionHash": "0xc9fef30499ee8984974ab9dddd9d15c2a97c1a4393935dceed5efc3af9fc41a4", + "safeTxHash": "0x6619dab5401503f2735256e12b898e69eb701d6a7e0d07abf1be4bb8aebfba29", + "executor": "0xbc2BB26a6d821e69A38016f3858561a1D80d4182", + "isExecuted": true, + "isSuccessful": true, + "ethGasPrice": "2500000009", + "gasUsed": 82902, + "fee": "207255000746118", + "chainId": "4", + "origin": null, + "dataDecoded": { + "method": "transfer", + "parameters": [ + { + "name": "to", + "type": "address", + "value": "0x99D580d3a7FE7BD183b2464517B2cD7ce5A8F15A" + }, + { + "name": "value", + "type": "uint256", + "value": "1000000000000000000" + } + ] + }, + "confirmationsRequired": 1, + "confirmations": [ + { + "owner": "0xbc2BB26a6d821e69A38016f3858561a1D80d4182", + "submissionDate": "2022-01-10T19:59:59.722500Z", + "transactionHash": null, + "signature": "0x5ca34641bcdee06e7b99143bfe34778195ca41022bd35837b96c204c7786be9d6dfa6dba43b53cd92da45ac728899e1561b232d28f38ba82df45f164caba38be1b", + "signatureType": "EOA" + } + ], + "signatures": "0x5ca34641bcdee06e7b99143bfe34778195ca41022bd35837b96c204c7786be9d6dfa6dba43b53cd92da45ac728899e1561b232d28f38ba82df45f164caba38be1b" +} +` + +func TestGnosisTypedDataWithChainId(t *testing.T) { + var td apitypes.TypedData + err := json.Unmarshal([]byte(gnosisTypedDataWithChainId), &td) + if err != nil { + t.Fatalf("unmarshalling failed '%v'", err) + } + _, sighash, err := sign(td) + if err != nil { + t.Fatal(err) + } + expSigHash := common.FromHex("0x6619dab5401503f2735256e12b898e69eb701d6a7e0d07abf1be4bb8aebfba29") + if !bytes.Equal(expSigHash, sighash) { + t.Fatalf("Error, got %x, wanted %x", sighash, expSigHash) + } +} + +// TestGnosisCustomData tests the scenario where a user submits only the gnosis-safe +// specific data, and we fill the TypedData struct on our side +func TestGnosisCustomDataWithChainId(t *testing.T) { + var tx core.GnosisSafeTx + err := json.Unmarshal([]byte(gnosisTxWithChainId), &tx) + if err != nil { + t.Fatal(err) + } + var td = tx.ToTypedData() + _, sighash, err := sign(td) + if err != nil { + t.Fatal(err) + } + expSigHash := common.FromHex("0x6619dab5401503f2735256e12b898e69eb701d6a7e0d07abf1be4bb8aebfba29") + if !bytes.Equal(expSigHash, sighash) { + t.Fatalf("Error, got %x, wanted %x", sighash, expSigHash) + } +} + +var complexTypedData = ` +{ + "types": { + "EIP712Domain": [ + { + "name": "chainId", + "type": "uint256" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "verifyingContract", + "type": "address" + }, + { + "name": "version", + "type": "string" + } + ], + "Action": [ + { + "name": "action", + "type": "string" + }, + { + "name": "params", + "type": "string" + } + ], + "Cell": [ + { + "name": "capacity", + "type": "string" + }, + { + "name": "lock", + "type": "string" + }, + { + "name": "type", + "type": "string" + }, + { + "name": "data", + "type": "string" + }, + { + "name": "extraData", + "type": "string" + } + ], + "Transaction": [ + { + "name": "DAS_MESSAGE", + "type": "string" + }, + { + "name": "inputsCapacity", + "type": "string" + }, + { + "name": "outputsCapacity", + "type": "string" + }, + { + "name": "fee", + "type": "string" + }, + { + "name": "action", + "type": "Action" + }, + { + "name": "inputs", + "type": "Cell[]" + }, + { + "name": "outputs", + "type": "Cell[]" + }, + { + "name": "digest", + "type": "bytes32" + } + ] + }, + "primaryType": "Transaction", + "domain": { + "chainId": "56", + "name": "da.systems", + "verifyingContract": "0x0000000000000000000000000000000020210722", + "version": "1" + }, + "message": { + "DAS_MESSAGE": "SELL mobcion.bit FOR 100000 CKB", + "inputsCapacity": "1216.9999 CKB", + "outputsCapacity": "1216.9998 CKB", + "fee": "0.0001 CKB", + "digest": "0x53a6c0f19ec281604607f5d6817e442082ad1882bef0df64d84d3810dae561eb", + "action": { + "action": "start_account_sale", + "params": "0x00" + }, + "inputs": [ + { + "capacity": "218 CKB", + "lock": "das-lock,0x01,0x051c152f77f8efa9c7c6d181cc97ee67c165c506...", + "type": "account-cell-type,0x01,0x", + "data": "{ account: mobcion.bit, expired_at: 1670913958 }", + "extraData": "{ status: 0, records_hash: 0x55478d76900611eb079b22088081124ed6c8bae21a05dd1a0d197efcc7c114ce }" + } + ], + "outputs": [ + { + "capacity": "218 CKB", + "lock": "das-lock,0x01,0x051c152f77f8efa9c7c6d181cc97ee67c165c506...", + "type": "account-cell-type,0x01,0x", + "data": "{ account: mobcion.bit, expired_at: 1670913958 }", + "extraData": "{ status: 1, records_hash: 0x55478d76900611eb079b22088081124ed6c8bae21a05dd1a0d197efcc7c114ce }" + }, + { + "capacity": "201 CKB", + "lock": "das-lock,0x01,0x051c152f77f8efa9c7c6d181cc97ee67c165c506...", + "type": "account-sale-cell-type,0x01,0x", + "data": "0x1209460ef3cb5f1c68ed2c43a3e020eec2d9de6e...", + "extraData": "" + } + ] + } +} +` + +func TestComplexTypedData(t *testing.T) { + var td apitypes.TypedData + err := json.Unmarshal([]byte(complexTypedData), &td) + if err != nil { + t.Fatalf("unmarshalling failed '%v'", err) + } + _, sighash, err := sign(td) + if err != nil { + t.Fatal(err) + } + expSigHash := common.FromHex("0x42b1aca82bb6900ff75e90a136de550a58f1a220a071704088eabd5e6ce20446") + if !bytes.Equal(expSigHash, sighash) { + t.Fatalf("Error, got %x, wanted %x", sighash, expSigHash) + } +} diff --git a/signer/fourbyte/abi.go b/signer/fourbyte/abi.go index d8fbabd3b1..352abc59e1 100644 --- a/signer/fourbyte/abi.go +++ b/signer/fourbyte/abi.go @@ -20,7 +20,6 @@ import ( "bytes" "encoding/json" "fmt" - "regexp" "strings" "github.com/ethereum/go-ethereum/accounts/abi" @@ -75,42 +74,15 @@ func verifySelector(selector string, calldata []byte) (*decodedCallData, error) return parseCallData(calldata, string(abidata)) } -// selectorRegexp is used to validate that a 4byte database selector corresponds -// to a valid ABI function declaration. -// -// Note, although uppercase letters are not part of the ABI spec, this regexp -// still accepts it as the general format is valid. It will be rejected later -// by the type checker. -var selectorRegexp = regexp.MustCompile(`^([^\)]+)\(([A-Za-z0-9,\[\]]*)\)`) - // parseSelector converts a method selector into an ABI JSON spec. The returned // data is a valid JSON string which can be consumed by the standard abi package. func parseSelector(unescapedSelector string) ([]byte, error) { - // Define a tiny fake ABI struct for JSON marshalling - type fakeArg struct { - Type string `json:"type"` + selector, err := abi.ParseSelector(unescapedSelector) + if err != nil { + return nil, fmt.Errorf("failed to parse selector: %v", err) } - type fakeABI struct { - Name string `json:"name"` - Type string `json:"type"` - Inputs []fakeArg `json:"inputs"` - } - // Validate the unescapedSelector and extract it's components - groups := selectorRegexp.FindStringSubmatch(unescapedSelector) - if len(groups) != 3 { - return nil, fmt.Errorf("invalid selector %q (%v matches)", unescapedSelector, len(groups)) - } - name := groups[1] - args := groups[2] - // Reassemble the fake ABI and constuct the JSON - arguments := make([]fakeArg, 0) - if len(args) > 0 { - for _, arg := range strings.Split(args, ",") { - arguments = append(arguments, fakeArg{arg}) - } - } - return json.Marshal([]fakeABI{{name, "function", arguments}}) + return json.Marshal([]abi.SelectorMarshaling{selector}) } // parseCallData matches the provided call data against the ABI definition and diff --git a/tests/evm-benchmarks b/tests/evm-benchmarks new file mode 160000 index 0000000000..849b3e239a --- /dev/null +++ b/tests/evm-benchmarks @@ -0,0 +1 @@ +Subproject commit 849b3e239a28f236dc99574b2e10e0c720895105 diff --git a/tests/fuzzers/bn256/bn256_fuzz.go b/tests/fuzzers/bn256/bn256_fuzz.go index 030ac19b3f..11fd9e18df 100644 --- a/tests/fuzzers/bn256/bn256_fuzz.go +++ b/tests/fuzzers/bn256/bn256_fuzz.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be found // in the LICENSE file. +//go:build gofuzz // +build gofuzz package bn256 diff --git a/tests/fuzzers/secp256k1/secp_fuzzer.go b/tests/fuzzers/secp256k1/secp_fuzzer.go index 53845b6433..47083d5fe3 100644 --- a/tests/fuzzers/secp256k1/secp_fuzzer.go +++ b/tests/fuzzers/secp256k1/secp_fuzzer.go @@ -21,7 +21,7 @@ package secp256k1 import ( "fmt" - "github.com/btcsuite/btcd/btcec" + "github.com/btcsuite/btcd/btcec/v2" "github.com/ethereum/go-ethereum/crypto/secp256k1" fuzz "github.com/google/gofuzz" ) diff --git a/tests/fuzzers/stacktrie/trie_fuzzer.go b/tests/fuzzers/stacktrie/trie_fuzzer.go index e73ef4851a..9ed8bcbc51 100644 --- a/tests/fuzzers/stacktrie/trie_fuzzer.go +++ b/tests/fuzzers/stacktrie/trie_fuzzer.go @@ -66,6 +66,8 @@ func (s *spongeDb) Has(key []byte) (bool, error) { panic("implement func (s *spongeDb) Get(key []byte) ([]byte, error) { return nil, errors.New("no such elem") } func (s *spongeDb) Delete(key []byte) error { panic("implement me") } func (s *spongeDb) NewBatch() ethdb.Batch { return &spongeBatch{s} } +func (s *spongeDb) NewBatchWithSize(size int) ethdb.Batch { return &spongeBatch{s} } +func (s *spongeDb) NewSnapshot() (ethdb.Snapshot, error) { panic("implement me") } func (s *spongeDb) Stat(property string) (string, error) { panic("implement me") } func (s *spongeDb) Compact(start []byte, limit []byte) error { panic("implement me") } func (s *spongeDb) Close() error { return nil } diff --git a/tests/fuzzers/vflux/clientpool-fuzzer.go b/tests/fuzzers/vflux/clientpool-fuzzer.go index 0414c001ec..b3b523cc82 100644 --- a/tests/fuzzers/vflux/clientpool-fuzzer.go +++ b/tests/fuzzers/vflux/clientpool-fuzzer.go @@ -267,9 +267,7 @@ func FuzzClientPool(input []byte) int { bias = f.randomDelay() requested = f.randomBool() ) - if _, err := pool.SetCapacity(f.peers[index].node, reqCap, bias, requested); err == vfs.ErrCantFindMaximum { - panic(nil) - } + pool.SetCapacity(f.peers[index].node, reqCap, bias, requested) doLog("Set capacity", "id", f.peers[index].node.ID(), "reqcap", reqCap, "bias", bias, "requested", requested) case 7: index := f.randomByte() diff --git a/tests/gen_stenv.go b/tests/gen_stenv.go index ecf7af8503..29fbce1213 100644 --- a/tests/gen_stenv.go +++ b/tests/gen_stenv.go @@ -17,7 +17,8 @@ var _ = (*stEnvMarshaling)(nil) func (s stEnv) MarshalJSON() ([]byte, error) { type stEnv struct { Coinbase common.UnprefixedAddress `json:"currentCoinbase" gencodec:"required"` - Difficulty *math.HexOrDecimal256 `json:"currentDifficulty" gencodec:"required"` + Difficulty *math.HexOrDecimal256 `json:"currentDifficulty" gencodec:"optional"` + Random *math.HexOrDecimal256 `json:"currentRandom" gencodec:"optional"` GasLimit math.HexOrDecimal64 `json:"currentGasLimit" gencodec:"required"` Number math.HexOrDecimal64 `json:"currentNumber" gencodec:"required"` Timestamp math.HexOrDecimal64 `json:"currentTimestamp" gencodec:"required"` @@ -26,6 +27,7 @@ func (s stEnv) MarshalJSON() ([]byte, error) { var enc stEnv enc.Coinbase = common.UnprefixedAddress(s.Coinbase) enc.Difficulty = (*math.HexOrDecimal256)(s.Difficulty) + enc.Random = (*math.HexOrDecimal256)(s.Random) enc.GasLimit = math.HexOrDecimal64(s.GasLimit) enc.Number = math.HexOrDecimal64(s.Number) enc.Timestamp = math.HexOrDecimal64(s.Timestamp) @@ -37,7 +39,8 @@ func (s stEnv) MarshalJSON() ([]byte, error) { func (s *stEnv) UnmarshalJSON(input []byte) error { type stEnv struct { Coinbase *common.UnprefixedAddress `json:"currentCoinbase" gencodec:"required"` - Difficulty *math.HexOrDecimal256 `json:"currentDifficulty" gencodec:"required"` + Difficulty *math.HexOrDecimal256 `json:"currentDifficulty" gencodec:"optional"` + Random *math.HexOrDecimal256 `json:"currentRandom" gencodec:"optional"` GasLimit *math.HexOrDecimal64 `json:"currentGasLimit" gencodec:"required"` Number *math.HexOrDecimal64 `json:"currentNumber" gencodec:"required"` Timestamp *math.HexOrDecimal64 `json:"currentTimestamp" gencodec:"required"` @@ -51,10 +54,12 @@ func (s *stEnv) UnmarshalJSON(input []byte) error { return errors.New("missing required field 'currentCoinbase' for stEnv") } s.Coinbase = common.Address(*dec.Coinbase) - if dec.Difficulty == nil { - return errors.New("missing required field 'currentDifficulty' for stEnv") + if dec.Difficulty != nil { + s.Difficulty = (*big.Int)(dec.Difficulty) + } + if dec.Random != nil { + s.Random = (*big.Int)(dec.Random) } - s.Difficulty = (*big.Int)(dec.Difficulty) if dec.GasLimit == nil { return errors.New("missing required field 'currentGasLimit' for stEnv") } diff --git a/tests/init_test.go b/tests/init_test.go index 312ad8869a..7e2f3ff7f5 100644 --- a/tests/init_test.go +++ b/tests/init_test.go @@ -41,6 +41,7 @@ var ( transactionTestDir = filepath.Join(baseDir, "TransactionTests") rlpTestDir = filepath.Join(baseDir, "RLPTests") difficultyTestDir = filepath.Join(baseDir, "BasicTests") + benchmarksDir = filepath.Join(".", "evm-benchmarks", "benchmarks") ) func readJSON(reader io.Reader, value interface{}) error { diff --git a/tests/state_test.go b/tests/state_test.go index 78ecda0409..d2c92b211c 100644 --- a/tests/state_test.go +++ b/tests/state_test.go @@ -20,9 +20,16 @@ import ( "bufio" "bytes" "fmt" + "math/big" + "os" + "path/filepath" "reflect" + "strings" "testing" + "github.com/ethereum/go-ethereum/core" + "github.com/ethereum/go-ethereum/core/rawdb" + "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/eth/tracers/logger" ) @@ -61,6 +68,7 @@ func TestState(t *testing.T) { for _, dir := range []string{ stateTestDir, legacyStateTestDir, + benchmarksDir, } { st.walk(t, dir, func(t *testing.T, name string, test *StateTest) { for _, subtest := range test.Subtests() { @@ -131,3 +139,116 @@ func withTrace(t *testing.T, gasLimit uint64, test func(vm.Config) error) { // t.Logf("EVM output: 0x%x", tracer.Output()) // t.Logf("EVM error: %v", tracer.Error()) } + +func BenchmarkEVM(b *testing.B) { + // Walk the directory. + dir := benchmarksDir + dirinfo, err := os.Stat(dir) + if os.IsNotExist(err) || !dirinfo.IsDir() { + fmt.Fprintf(os.Stderr, "can't find test files in %s, did you clone the evm-benchmarks submodule?\n", dir) + b.Skip("missing test files") + } + err = filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { + if info.IsDir() { + return nil + } + if ext := filepath.Ext(path); ext == ".json" { + name := filepath.ToSlash(strings.TrimPrefix(strings.TrimSuffix(path, ext), dir+string(filepath.Separator))) + b.Run(name, func(b *testing.B) { runBenchmarkFile(b, path) }) + } + return nil + }) + if err != nil { + b.Fatal(err) + } +} + +func runBenchmarkFile(b *testing.B, path string) { + m := make(map[string]StateTest) + if err := readJSONFile(path, &m); err != nil { + b.Fatal(err) + return + } + if len(m) != 1 { + b.Fatal("expected single benchmark in a file") + return + } + for _, t := range m { + runBenchmark(b, &t) + } +} + +func runBenchmark(b *testing.B, t *StateTest) { + for _, subtest := range t.Subtests() { + subtest := subtest + key := fmt.Sprintf("%s/%d", subtest.Fork, subtest.Index) + + b.Run(key, func(b *testing.B) { + vmconfig := vm.Config{} + + config, eips, err := GetChainConfig(subtest.Fork) + if err != nil { + b.Error(err) + return + } + vmconfig.ExtraEips = eips + block := t.genesis(config).ToBlock(nil) + _, statedb := MakePreState(rawdb.NewMemoryDatabase(), t.json.Pre, false) + + var baseFee *big.Int + if config.IsLondon(new(big.Int)) { + baseFee = t.json.Env.BaseFee + if baseFee == nil { + // Retesteth uses `0x10` for genesis baseFee. Therefore, it defaults to + // parent - 2 : 0xa as the basefee for 'this' context. + baseFee = big.NewInt(0x0a) + } + } + post := t.json.Post[subtest.Fork][subtest.Index] + msg, err := t.json.Tx.toMessage(post, baseFee) + if err != nil { + b.Error(err) + return + } + + // Try to recover tx with current signer + if len(post.TxBytes) != 0 { + var ttx types.Transaction + err := ttx.UnmarshalBinary(post.TxBytes) + if err != nil { + b.Error(err) + return + } + + if _, err := types.Sender(types.LatestSigner(config), &ttx); err != nil { + b.Error(err) + return + } + } + + // Prepare the EVM. + txContext := core.NewEVMTxContext(msg) + context := core.NewEVMBlockContext(block.Header(), nil, &t.json.Env.Coinbase) + context.GetHash = vmTestBlockHash + context.BaseFee = baseFee + evm := vm.NewEVM(context, txContext, statedb, config, vmconfig) + + // Create "contract" for sender to cache code analysis. + sender := vm.NewContract(vm.AccountRef(msg.From()), vm.AccountRef(msg.From()), + nil, 0) + + b.ResetTimer() + for n := 0; n < b.N; n++ { + // Execute the message. + snapshot := statedb.Snapshot() + _, _, err = evm.Call(sender, *msg.To(), msg.Data(), msg.Gas(), msg.Value()) + if err != nil { + b.Error(err) + return + } + statedb.RevertToSnapshot(snapshot) + } + + }) + } +} diff --git a/tests/state_test_util.go b/tests/state_test_util.go index f7fb08bfbc..4fd3cf76b2 100644 --- a/tests/state_test_util.go +++ b/tests/state_test_util.go @@ -80,16 +80,18 @@ type stPostState struct { type stEnv struct { Coinbase common.Address `json:"currentCoinbase" gencodec:"required"` - Difficulty *big.Int `json:"currentDifficulty" gencodec:"required"` + Difficulty *big.Int `json:"currentDifficulty" gencodec:"optional"` + Random *big.Int `json:"currentRandom" gencodec:"optional"` GasLimit uint64 `json:"currentGasLimit" gencodec:"required"` Number uint64 `json:"currentNumber" gencodec:"required"` Timestamp uint64 `json:"currentTimestamp" gencodec:"required"` - BaseFee *big.Int `json:"currentBaseFee" gencodec:"optional"` + BaseFee *big.Int `json:"currentBaseFee" gencodec:"optional"` } type stEnvMarshaling struct { Coinbase common.UnprefixedAddress Difficulty *math.HexOrDecimal256 + Random *math.HexOrDecimal256 GasLimit math.HexOrDecimal64 Number math.HexOrDecimal64 Timestamp math.HexOrDecimal64 @@ -218,8 +220,12 @@ func (t *StateTest) RunNoVerify(subtest StateSubtest, vmconfig vm.Config, snapsh context := core.NewEVMBlockContext(block.Header(), nil, &t.json.Env.Coinbase) context.GetHash = vmTestBlockHash context.BaseFee = baseFee + if t.json.Env.Random != nil { + rnd := common.BigToHash(t.json.Env.Random) + context.Random = &rnd + context.Difficulty = big.NewInt(0) + } evm := vm.NewEVM(context, txContext, statedb, config, vmconfig) - // Execute the message. snapshot := statedb.Snapshot() gaspool := new(core.GasPool) @@ -268,7 +274,7 @@ func MakePreState(db ethdb.Database, accounts core.GenesisAlloc, snapshotter boo } func (t *StateTest) genesis(config *params.ChainConfig) *core.Genesis { - return &core.Genesis{ + genesis := &core.Genesis{ Config: config, Coinbase: t.json.Env.Coinbase, Difficulty: t.json.Env.Difficulty, @@ -277,6 +283,12 @@ func (t *StateTest) genesis(config *params.ChainConfig) *core.Genesis { Timestamp: t.json.Env.Timestamp, Alloc: t.json.Pre, } + if t.json.Env.Random != nil { + // Post-Merge + genesis.Mixhash = common.BigToHash(t.json.Env.Random) + genesis.Difficulty = big.NewInt(0) + } + return genesis } func (tx *stTransaction) toMessage(ps stPostState, baseFee *big.Int) (core.Message, error) { diff --git a/trie/committer.go b/trie/committer.go index 0721990a21..db753e2fa0 100644 --- a/trie/committer.go +++ b/trie/committer.go @@ -44,7 +44,6 @@ type leaf struct { // By 'some level' of parallelism, it's still the case that all leaves will be // processed sequentially - onleaf will never be called in parallel or out of order. type committer struct { - tmp sliceBuffer sha crypto.KeccakState onleaf LeafCallback @@ -55,7 +54,6 @@ type committer struct { var committerPool = sync.Pool{ New: func() interface{} { return &committer{ - tmp: make(sliceBuffer, 0, 550), // cap is as large as a full fullNode. sha: sha3.NewLegacyKeccak256().(crypto.KeccakState), } }, diff --git a/trie/database.go b/trie/database.go index 58ca4e6f3c..d71abeee47 100644 --- a/trie/database.go +++ b/trie/database.go @@ -113,16 +113,9 @@ func (n rawFullNode) cache() (hashNode, bool) { panic("this should never end u func (n rawFullNode) fstring(ind string) string { panic("this should never end up in a live trie") } func (n rawFullNode) EncodeRLP(w io.Writer) error { - var nodes [17]node - - for i, child := range n { - if child != nil { - nodes[i] = child - } else { - nodes[i] = nilValueNode - } - } - return rlp.Encode(w, nodes) + eb := rlp.NewEncoderBuffer(w) + n.encode(eb) + return eb.Flush() } // rawShortNode represents only the useful data content of a short node, with the @@ -164,11 +157,7 @@ func (n *cachedNode) rlp() []byte { if node, ok := n.node.(rawNode); ok { return node } - blob, err := rlp.EncodeToBytes(n.node) - if err != nil { - panic(err) - } - return blob + return nodeToBytes(n.node) } // obj returns the decoded and expanded trie node, either directly from the cache, diff --git a/trie/hasher.go b/trie/hasher.go index 3a62a2f119..7f0748c13d 100644 --- a/trie/hasher.go +++ b/trie/hasher.go @@ -24,22 +24,12 @@ import ( "golang.org/x/crypto/sha3" ) -type sliceBuffer []byte - -func (b *sliceBuffer) Write(data []byte) (n int, err error) { - *b = append(*b, data...) - return len(data), nil -} - -func (b *sliceBuffer) Reset() { - *b = (*b)[:0] -} - // hasher is a type used for the trie Hash operation. A hasher has some // internal preallocated temp space type hasher struct { sha crypto.KeccakState - tmp sliceBuffer + tmp []byte + encbuf rlp.EncoderBuffer parallel bool // Whether to use paralallel threads when hashing } @@ -47,8 +37,9 @@ type hasher struct { var hasherPool = sync.Pool{ New: func() interface{} { return &hasher{ - tmp: make(sliceBuffer, 0, 550), // cap is as large as a full fullNode. - sha: sha3.NewLegacyKeccak256().(crypto.KeccakState), + tmp: make([]byte, 0, 550), // cap is as large as a full fullNode. + sha: sha3.NewLegacyKeccak256().(crypto.KeccakState), + encbuf: rlp.NewEncoderBuffer(nil), } }, } @@ -153,30 +144,41 @@ func (h *hasher) hashFullNodeChildren(n *fullNode) (collapsed *fullNode, cached // into compact form for RLP encoding. // If the rlp data is smaller than 32 bytes, `nil` is returned. func (h *hasher) shortnodeToHash(n *shortNode, force bool) node { - h.tmp.Reset() - if err := rlp.Encode(&h.tmp, n); err != nil { - panic("encode error: " + err.Error()) - } + n.encode(h.encbuf) + enc := h.encodedBytes() - if len(h.tmp) < 32 && !force { + if len(enc) < 32 && !force { return n // Nodes smaller than 32 bytes are stored inside their parent } - return h.hashData(h.tmp) + return h.hashData(enc) } // shortnodeToHash is used to creates a hashNode from a set of hashNodes, (which // may contain nil values) func (h *hasher) fullnodeToHash(n *fullNode, force bool) node { - h.tmp.Reset() - // Generate the RLP encoding of the node - if err := n.EncodeRLP(&h.tmp); err != nil { - panic("encode error: " + err.Error()) - } + n.encode(h.encbuf) + enc := h.encodedBytes() - if len(h.tmp) < 32 && !force { + if len(enc) < 32 && !force { return n // Nodes smaller than 32 bytes are stored inside their parent } - return h.hashData(h.tmp) + return h.hashData(enc) +} + +// encodedBytes returns the result of the last encoding operation on h.encbuf. +// This also resets the encoder buffer. +// +// All node encoding must be done like this: +// +// node.encode(h.encbuf) +// enc := h.encodedBytes() +// +// This convention exists because node.encode can only be inlined/escape-analyzed when +// called on a concrete receiver type. +func (h *hasher) encodedBytes() []byte { + h.tmp = h.encbuf.AppendToBytes(h.tmp[:0]) + h.encbuf.Reset(nil) + return h.tmp } // hashData hashes the provided data diff --git a/trie/iterator.go b/trie/iterator.go index 654772aa13..e0006ee05e 100644 --- a/trie/iterator.go +++ b/trie/iterator.go @@ -23,7 +23,6 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/rlp" ) // Iterator is a key-value trie iterator that traverses a Trie. @@ -86,6 +85,10 @@ type NodeIterator interface { // For leaf nodes, the last element of the path is the 'terminator symbol' 0x10. Path() []byte + // NodeBlob returns the rlp-encoded value of the current iterated node. + // If the node is an embedded node in its parent, nil is returned then. + NodeBlob() []byte + // Leaf returns true iff the current node is a leaf node. Leaf() bool @@ -115,7 +118,7 @@ type NodeIterator interface { // Before adding a similar mechanism to any other place in Geth, consider // making trie.Database an interface and wrapping at that level. It's a huge // refactor, but it could be worth it if another occurrence arises. - AddResolver(ethdb.KeyValueStore) + AddResolver(ethdb.KeyValueReader) } // nodeIteratorState represents the iteration state at one particular node of the @@ -134,7 +137,7 @@ type nodeIterator struct { path []byte // Path to the current node err error // Failure set in case of an internal error in the iterator - resolver ethdb.KeyValueStore // Optional intermediate resolver above the disk layer + resolver ethdb.KeyValueReader // Optional intermediate resolver above the disk layer } // errIteratorEnd is stored in nodeIterator.err when iteration is done. @@ -151,15 +154,18 @@ func (e seekError) Error() string { } func newNodeIterator(trie *Trie, start []byte) NodeIterator { - if trie.Hash() == emptyState { - return new(nodeIterator) + if trie.Hash() == emptyRoot { + return &nodeIterator{ + trie: trie, + err: errIteratorEnd, + } } it := &nodeIterator{trie: trie} it.err = it.seek(start) return it } -func (it *nodeIterator) AddResolver(resolver ethdb.KeyValueStore) { +func (it *nodeIterator) AddResolver(resolver ethdb.KeyValueReader) { it.resolver = resolver } @@ -210,8 +216,7 @@ func (it *nodeIterator) LeafProof() [][]byte { // Gather nodes that end up as hash nodes (or the root) node, hashed := hasher.proofHash(item.node) if _, ok := hashed.(hashNode); ok || i == 0 { - enc, _ := rlp.EncodeToBytes(node) - proofs = append(proofs, enc) + proofs = append(proofs, nodeToBytes(node)) } } return proofs @@ -224,6 +229,18 @@ func (it *nodeIterator) Path() []byte { return it.path } +func (it *nodeIterator) NodeBlob() []byte { + if it.Hash() == (common.Hash{}) { + return nil // skip the non-standalone node + } + blob, err := it.resolveBlob(it.Hash().Bytes(), it.Path()) + if err != nil { + it.err = err + return nil + } + return blob +} + func (it *nodeIterator) Error() error { if it.err == errIteratorEnd { return nil @@ -362,6 +379,15 @@ func (it *nodeIterator) resolveHash(hash hashNode, path []byte) (node, error) { return resolved, err } +func (it *nodeIterator) resolveBlob(hash hashNode, path []byte) ([]byte, error) { + if it.resolver != nil { + if blob, err := it.resolver.Get(hash); err == nil && len(blob) > 0 { + return blob, nil + } + } + return it.trie.resolveBlob(hash, path) +} + func (st *nodeIteratorState) resolve(it *nodeIterator, path []byte) error { if hash, ok := st.node.(hashNode); ok { resolved, err := it.resolveHash(hash, path) @@ -402,7 +428,7 @@ func findChild(n *fullNode, index int, path []byte, ancestor common.Hash) (node, func (it *nodeIterator) nextChild(parent *nodeIteratorState, ancestor common.Hash) (*nodeIteratorState, []byte, bool) { switch node := parent.node.(type) { case *fullNode: - //Full node, move to the first non-nil child. + // Full node, move to the first non-nil child. if child, state, path, index := findChild(node, parent.index+1, it.path, ancestor); child != nil { parent.index = index - 1 return state, path, true @@ -480,8 +506,9 @@ func (it *nodeIterator) push(state *nodeIteratorState, parentIndex *int, path [] } func (it *nodeIterator) pop() { - parent := it.stack[len(it.stack)-1] - it.path = it.path[:parent.pathlen] + last := it.stack[len(it.stack)-1] + it.path = it.path[:last.pathlen] + it.stack[len(it.stack)-1] = nil it.stack = it.stack[:len(it.stack)-1] } @@ -549,7 +576,11 @@ func (it *differenceIterator) Path() []byte { return it.b.Path() } -func (it *differenceIterator) AddResolver(resolver ethdb.KeyValueStore) { +func (it *differenceIterator) NodeBlob() []byte { + return it.b.NodeBlob() +} + +func (it *differenceIterator) AddResolver(resolver ethdb.KeyValueReader) { panic("not implemented") } @@ -660,7 +691,11 @@ func (it *unionIterator) Path() []byte { return (*it.items)[0].Path() } -func (it *unionIterator) AddResolver(resolver ethdb.KeyValueStore) { +func (it *unionIterator) NodeBlob() []byte { + return (*it.items)[0].NodeBlob() +} + +func (it *unionIterator) AddResolver(resolver ethdb.KeyValueReader) { panic("not implemented") } diff --git a/trie/iterator_test.go b/trie/iterator_test.go index 95cafdd3bd..9a46e9b995 100644 --- a/trie/iterator_test.go +++ b/trie/iterator_test.go @@ -29,6 +29,19 @@ import ( "github.com/ethereum/go-ethereum/ethdb/memorydb" ) +func TestEmptyIterator(t *testing.T) { + trie := newEmpty() + iter := trie.NodeIterator(nil) + + seen := make(map[string]struct{}) + for iter.Next(true) { + seen[string(iter.Path())] = struct{}{} + } + if len(seen) != 0 { + t.Fatal("Unexpected trie node iterated") + } +} + func TestIterator(t *testing.T) { trie := newEmpty() vals := []struct{ k, v string }{ @@ -470,10 +483,18 @@ func (l *loggingDb) NewBatch() ethdb.Batch { return l.backend.NewBatch() } +func (l *loggingDb) NewBatchWithSize(size int) ethdb.Batch { + return l.backend.NewBatchWithSize(size) +} + func (l *loggingDb) NewIterator(prefix []byte, start []byte) ethdb.Iterator { - fmt.Printf("NewIterator\n") return l.backend.NewIterator(prefix, start) } + +func (l *loggingDb) NewSnapshot() (ethdb.Snapshot, error) { + return l.backend.NewSnapshot() +} + func (l *loggingDb) Stat(property string) (string, error) { return l.backend.Stat(property) } @@ -521,3 +542,54 @@ func TestNodeIteratorLargeTrie(t *testing.T) { t.Fatalf("Too many lookups during seek, have %d want %d", have, want) } } + +func TestIteratorNodeBlob(t *testing.T) { + var ( + db = memorydb.New() + triedb = NewDatabase(db) + trie, _ = New(common.Hash{}, triedb) + ) + vals := []struct{ k, v string }{ + {"do", "verb"}, + {"ether", "wookiedoo"}, + {"horse", "stallion"}, + {"shaman", "horse"}, + {"doge", "coin"}, + {"dog", "puppy"}, + {"somethingveryoddindeedthis is", "myothernodedata"}, + } + all := make(map[string]string) + for _, val := range vals { + all[val.k] = val.v + trie.Update([]byte(val.k), []byte(val.v)) + } + trie.Commit(nil) + triedb.Cap(0) + + found := make(map[common.Hash][]byte) + it := trie.NodeIterator(nil) + for it.Next(true) { + if it.Hash() == (common.Hash{}) { + continue + } + found[it.Hash()] = it.NodeBlob() + } + + dbIter := db.NewIterator(nil, nil) + defer dbIter.Release() + + var count int + for dbIter.Next() { + got, present := found[common.BytesToHash(dbIter.Key())] + if !present { + t.Fatalf("Miss trie node %v", dbIter.Key()) + } + if !bytes.Equal(got, dbIter.Value()) { + t.Fatalf("Unexpected trie node want %v got %v", dbIter.Value(), got) + } + count += 1 + } + if count != len(found) { + t.Fatal("Find extra trie node via iterator") + } +} diff --git a/trie/node.go b/trie/node.go index f4055e779a..bf3f024bb8 100644 --- a/trie/node.go +++ b/trie/node.go @@ -28,8 +28,9 @@ import ( var indices = []string{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "[17]"} type node interface { - fstring(string) string cache() (hashNode, bool) + encode(w rlp.EncoderBuffer) + fstring(string) string } type ( @@ -52,16 +53,9 @@ var nilValueNode = valueNode(nil) // EncodeRLP encodes a full node into the consensus RLP format. func (n *fullNode) EncodeRLP(w io.Writer) error { - var nodes [17]node - - for i, child := range &n.Children { - if child != nil { - nodes[i] = child - } else { - nodes[i] = nilValueNode - } - } - return rlp.Encode(w, nodes) + eb := rlp.NewEncoderBuffer(w) + n.encode(eb) + return eb.Flush() } func (n *fullNode) copy() *fullNode { copy := *n; return © } diff --git a/trie/node_enc.go b/trie/node_enc.go new file mode 100644 index 0000000000..cade35b707 --- /dev/null +++ b/trie/node_enc.go @@ -0,0 +1,87 @@ +// Copyright 2022 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package trie + +import ( + "github.com/ethereum/go-ethereum/rlp" +) + +func nodeToBytes(n node) []byte { + w := rlp.NewEncoderBuffer(nil) + n.encode(w) + result := w.ToBytes() + w.Flush() + return result +} + +func (n *fullNode) encode(w rlp.EncoderBuffer) { + offset := w.List() + for _, c := range n.Children { + if c != nil { + c.encode(w) + } else { + w.Write(rlp.EmptyString) + } + } + w.ListEnd(offset) +} + +func (n *shortNode) encode(w rlp.EncoderBuffer) { + offset := w.List() + w.WriteBytes(n.Key) + if n.Val != nil { + n.Val.encode(w) + } else { + w.Write(rlp.EmptyString) + } + w.ListEnd(offset) +} + +func (n hashNode) encode(w rlp.EncoderBuffer) { + w.WriteBytes(n) +} + +func (n valueNode) encode(w rlp.EncoderBuffer) { + w.WriteBytes(n) +} + +func (n rawFullNode) encode(w rlp.EncoderBuffer) { + offset := w.List() + for _, c := range n { + if c != nil { + c.encode(w) + } else { + w.Write(rlp.EmptyString) + } + } + w.ListEnd(offset) +} + +func (n *rawShortNode) encode(w rlp.EncoderBuffer) { + offset := w.List() + w.WriteBytes(n.Key) + if n.Val != nil { + n.Val.encode(w) + } else { + w.Write(rlp.EmptyString) + } + w.ListEnd(offset) +} + +func (n rawNode) encode(w rlp.EncoderBuffer) { + w.Write(n) +} diff --git a/trie/proof.go b/trie/proof.go index 51ecea0c39..88ca80b0e7 100644 --- a/trie/proof.go +++ b/trie/proof.go @@ -25,7 +25,6 @@ import ( "github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/ethdb/memorydb" "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/rlp" ) // Prove constructs a merkle proof for key. The result contains all encoded nodes @@ -79,7 +78,7 @@ func (t *Trie) Prove(key []byte, fromLevel uint, proofDb ethdb.KeyValueWriter) e if hash, ok := hn.(hashNode); ok || i == 0 { // If the node's database encoding is a hash (or is the // root node), it becomes a proof element. - enc, _ := rlp.EncodeToBytes(n) + enc := nodeToBytes(n) if !ok { hash = hasher.hashData(enc) } @@ -406,7 +405,7 @@ func unset(parent node, child node, key []byte, pos int, removeLeft bool) error } // hasRightElement returns the indicator whether there exists more elements -// in the right side of the given path. The given path can point to an existent +// on the right side of the given path. The given path can point to an existent // key or a non-existent one. This function has the assumption that the whole // path should already be resolved. func hasRightElement(node node, key []byte) bool { @@ -505,7 +504,7 @@ func VerifyRangeProof(rootHash common.Hash, firstKey []byte, lastKey []byte, key if val != nil || hasRightElement(root, firstKey) { return false, errors.New("more entries available") } - return hasRightElement(root, firstKey), nil + return false, nil } // Special case, there is only one element and two edge keys are same. // In this case, we can't construct two edge paths. So handle it here. @@ -563,7 +562,7 @@ func VerifyRangeProof(rootHash common.Hash, firstKey []byte, lastKey []byte, key if tr.Hash() != rootHash { return false, fmt.Errorf("invalid proof, want hash %x, got %x", rootHash, tr.Hash()) } - return hasRightElement(root, keys[len(keys)-1]), nil + return hasRightElement(tr.root, keys[len(keys)-1]), nil } // get returns the child of the given node. Return nil if the diff --git a/trie/proof_test.go b/trie/proof_test.go index 95ad6169c3..29866714c2 100644 --- a/trie/proof_test.go +++ b/trie/proof_test.go @@ -1067,3 +1067,36 @@ func nonRandomTrie(n int) (*Trie, map[string]*kv) { } return trie, vals } + +func TestRangeProofKeysWithSharedPrefix(t *testing.T) { + keys := [][]byte{ + common.Hex2Bytes("aa10000000000000000000000000000000000000000000000000000000000000"), + common.Hex2Bytes("aa20000000000000000000000000000000000000000000000000000000000000"), + } + vals := [][]byte{ + common.Hex2Bytes("02"), + common.Hex2Bytes("03"), + } + trie := new(Trie) + for i, key := range keys { + trie.Update(key, vals[i]) + } + root := trie.Hash() + proof := memorydb.New() + start := common.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000000") + end := common.Hex2Bytes("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff") + if err := trie.Prove(start, 0, proof); err != nil { + t.Fatalf("failed to prove start: %v", err) + } + if err := trie.Prove(end, 0, proof); err != nil { + t.Fatalf("failed to prove end: %v", err) + } + + more, err := VerifyRangeProof(root, start, end, keys, vals, proof) + if err != nil { + t.Fatalf("failed to verify range proof: %v", err) + } + if more != false { + t.Error("expected more to be false") + } +} diff --git a/trie/stacktrie.go b/trie/stacktrie.go index 76258c3112..4b7ccd42db 100644 --- a/trie/stacktrie.go +++ b/trie/stacktrie.go @@ -28,7 +28,6 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/rlp" ) var ErrCommitDisabled = errors.New("no database for committing") @@ -233,6 +232,7 @@ func (st *StackTrie) insert(key, value []byte) { break } } + // Add new child if st.children[idx] == nil { st.children[idx] = newLeaf(key[1:], value, st.db) @@ -326,10 +326,9 @@ func (st *StackTrie) insert(key, value []byte) { p = st.children[0] } - // Create the two child leaves: the one containing the - // original value and the one containing the new value - // The child leave will be hashed directly in order to - // free up some memory. + // Create the two child leaves: one containing the original + // value and another containing the new value. The child leaf + // is hashed directly in order to free up some memory. origIdx := st.key[diffidx] p.children[origIdx] = newLeaf(st.key[diffidx+1:], st.val, st.db) p.children[origIdx].hash() @@ -341,19 +340,22 @@ func (st *StackTrie) insert(key, value []byte) { // over to the children. st.key = st.key[:diffidx] st.val = nil + case emptyNode: /* Empty */ st.nodeType = leafNode st.key = key st.val = value + case hashedNode: panic("trying to insert into hash") + default: panic("invalid type") } } -// hash() hashes the node 'st' and converts it into 'hashedNode', if possible. -// Possible outcomes: +// hash converts st into a 'hashedNode', if possible. Possible outcomes: +// // 1. The rlp-encoded value was >= 32 bytes: // - Then the 32-byte `hash` will be accessible in `st.val`. // - And the 'st.type' will be 'hashedNode' @@ -361,119 +363,116 @@ func (st *StackTrie) insert(key, value []byte) { // - Then the <32 byte rlp-encoded value will be accessible in 'st.val'. // - And the 'st.type' will be 'hashedNode' AGAIN // -// This method will also: -// set 'st.type' to hashedNode -// clear 'st.key' +// This method also sets 'st.type' to hashedNode, and clears 'st.key'. func (st *StackTrie) hash() { - /* Shortcut if node is already hashed */ - if st.nodeType == hashedNode { - return - } - // The 'hasher' is taken from a pool, but we don't actually - // claim an instance until all children are done with their hashing, - // and we actually need one - var h *hasher + h := newHasher(false) + defer returnHasherToPool(h) + + st.hashRec(h) +} + +func (st *StackTrie) hashRec(hasher *hasher) { + // The switch below sets this to the RLP-encoding of this node. + var encodedNode []byte switch st.nodeType { - case branchNode: - var nodes [17]node - for i, child := range st.children { - if child == nil { - nodes[i] = nilValueNode - continue - } - child.hash() - if len(child.val) < 32 { - nodes[i] = rawNode(child.val) - } else { - nodes[i] = hashNode(child.val) - } - st.children[i] = nil // Reclaim mem from subtree - returnToPool(child) - } - nodes[16] = nilValueNode - h = newHasher(false) - defer returnHasherToPool(h) - h.tmp.Reset() - if err := rlp.Encode(&h.tmp, nodes); err != nil { - panic(err) - } - case extNode: - st.children[0].hash() - h = newHasher(false) - defer returnHasherToPool(h) - h.tmp.Reset() - var valuenode node - if len(st.children[0].val) < 32 { - valuenode = rawNode(st.children[0].val) - } else { - valuenode = hashNode(st.children[0].val) - } - n := struct { - Key []byte - Val node - }{ - Key: hexToCompact(st.key), - Val: valuenode, - } - if err := rlp.Encode(&h.tmp, n); err != nil { - panic(err) - } - returnToPool(st.children[0]) - st.children[0] = nil // Reclaim mem from subtree - case leafNode: - h = newHasher(false) - defer returnHasherToPool(h) - h.tmp.Reset() - st.key = append(st.key, byte(16)) - sz := hexToCompactInPlace(st.key) - n := [][]byte{st.key[:sz], st.val} - if err := rlp.Encode(&h.tmp, n); err != nil { - panic(err) - } + case hashedNode: + return + case emptyNode: st.val = emptyRoot.Bytes() st.key = st.key[:0] st.nodeType = hashedNode return + + case branchNode: + var nodes rawFullNode + for i, child := range st.children { + if child == nil { + nodes[i] = nilValueNode + continue + } + + child.hashRec(hasher) + if len(child.val) < 32 { + nodes[i] = rawNode(child.val) + } else { + nodes[i] = hashNode(child.val) + } + + // Release child back to pool. + st.children[i] = nil + returnToPool(child) + } + + nodes.encode(hasher.encbuf) + encodedNode = hasher.encodedBytes() + + case extNode: + st.children[0].hashRec(hasher) + + sz := hexToCompactInPlace(st.key) + n := rawShortNode{Key: st.key[:sz]} + if len(st.children[0].val) < 32 { + n.Val = rawNode(st.children[0].val) + } else { + n.Val = hashNode(st.children[0].val) + } + + n.encode(hasher.encbuf) + encodedNode = hasher.encodedBytes() + + // Release child back to pool. + returnToPool(st.children[0]) + st.children[0] = nil + + case leafNode: + st.key = append(st.key, byte(16)) + sz := hexToCompactInPlace(st.key) + n := rawShortNode{Key: st.key[:sz], Val: valueNode(st.val)} + + n.encode(hasher.encbuf) + encodedNode = hasher.encodedBytes() + default: - panic("Invalid node type") + panic("invalid node type") } - st.key = st.key[:0] + st.nodeType = hashedNode - if len(h.tmp) < 32 { - st.val = common.CopyBytes(h.tmp) + st.key = st.key[:0] + if len(encodedNode) < 32 { + st.val = common.CopyBytes(encodedNode) return } + // Write the hash to the 'val'. We allocate a new val here to not mutate // input values - st.val = make([]byte, 32) - h.sha.Reset() - h.sha.Write(h.tmp) - h.sha.Read(st.val) + st.val = hasher.hashData(encodedNode) if st.db != nil { // TODO! Is it safe to Put the slice here? // Do all db implementations copy the value provided? - st.db.Put(st.val, h.tmp) + st.db.Put(st.val, encodedNode) } } -// Hash returns the hash of the current node +// Hash returns the hash of the current node. func (st *StackTrie) Hash() (h common.Hash) { - st.hash() - if len(st.val) != 32 { - // If the node's RLP isn't 32 bytes long, the node will not - // be hashed, and instead contain the rlp-encoding of the - // node. For the top level node, we need to force the hashing. - ret := make([]byte, 32) - h := newHasher(false) - defer returnHasherToPool(h) - h.sha.Reset() - h.sha.Write(st.val) - h.sha.Read(ret) - return common.BytesToHash(ret) + hasher := newHasher(false) + defer returnHasherToPool(hasher) + + st.hashRec(hasher) + if len(st.val) == 32 { + copy(h[:], st.val) + return h } - return common.BytesToHash(st.val) + + // If the node's RLP isn't 32 bytes long, the node will not + // be hashed, and instead contain the rlp-encoding of the + // node. For the top level node, we need to force the hashing. + hasher.sha.Reset() + hasher.sha.Write(st.val) + hasher.sha.Read(h[:]) + return h } // Commit will firstly hash the entrie trie if it's still not hashed @@ -483,23 +482,26 @@ func (st *StackTrie) Hash() (h common.Hash) { // // The associated database is expected, otherwise the whole commit // functionality should be disabled. -func (st *StackTrie) Commit() (common.Hash, error) { +func (st *StackTrie) Commit() (h common.Hash, err error) { if st.db == nil { return common.Hash{}, ErrCommitDisabled } - st.hash() - if len(st.val) != 32 { - // If the node's RLP isn't 32 bytes long, the node will not - // be hashed (and committed), and instead contain the rlp-encoding of the - // node. For the top level node, we need to force the hashing+commit. - ret := make([]byte, 32) - h := newHasher(false) - defer returnHasherToPool(h) - h.sha.Reset() - h.sha.Write(st.val) - h.sha.Read(ret) - st.db.Put(ret, st.val) - return common.BytesToHash(ret), nil + + hasher := newHasher(false) + defer returnHasherToPool(hasher) + + st.hashRec(hasher) + if len(st.val) == 32 { + copy(h[:], st.val) + return h, nil } - return common.BytesToHash(st.val), nil + + // If the node's RLP isn't 32 bytes long, the node will not + // be hashed (and committed), and instead contain the rlp-encoding of the + // node. For the top level node, we need to force the hashing+commit. + hasher.sha.Reset() + hasher.sha.Write(st.val) + hasher.sha.Read(h[:]) + st.db.Put(h[:], st.val) + return h, nil } diff --git a/trie/sync.go b/trie/sync.go index 81d38ee3a6..7eaa35244e 100644 --- a/trie/sync.go +++ b/trie/sync.go @@ -155,8 +155,7 @@ func (s *Sync) AddSubTrie(root common.Hash, path []byte, parent common.Hash, cal } // If database says this is a duplicate, then at least the trie node is // present, and we hold the assumption that it's NOT legacy contract code. - blob := rawdb.ReadTrieNode(s.database, root) - if len(blob) > 0 { + if rawdb.HasTrieNode(s.database, root) { return } // Assemble the new sub-trie sync request @@ -193,7 +192,7 @@ func (s *Sync) AddCodeEntry(hash common.Hash, path []byte, parent common.Hash) { // sync is expected to run with a fresh new node. Even there // exists the code with legacy format, fetch and store with // new scheme anyway. - if blob := rawdb.ReadCodeWithPrefix(s.database, hash); len(blob) > 0 { + if rawdb.HasCodeWithPrefix(s.database, hash) { return } // Assemble the new sub-trie sync request @@ -401,7 +400,7 @@ func (s *Sync) children(req *request, object node) ([]*request, error) { } // If database says duplicate, then at least the trie node is present // and we hold the assumption that it's NOT legacy contract code. - if blob := rawdb.ReadTrieNode(s.database, hash); len(blob) > 0 { + if rawdb.HasTrieNode(s.database, hash) { continue } // Locally unknown node, schedule for retrieval diff --git a/trie/trie.go b/trie/trie.go index 13343112b8..e40b03be38 100644 --- a/trie/trie.go +++ b/trie/trie.go @@ -514,6 +514,15 @@ func (t *Trie) resolveHash(n hashNode, prefix []byte) (node, error) { return nil, &MissingNodeError{NodeHash: hash, Path: prefix} } +func (t *Trie) resolveBlob(n hashNode, prefix []byte) ([]byte, error) { + hash := common.BytesToHash(n) + blob, _ := t.db.Node(hash) + if len(blob) != 0 { + return blob, nil + } + return nil, &MissingNodeError{NodeHash: hash, Path: prefix} +} + // Hash returns the root hash of the trie. It does not write to the // database and can be used even if the trie doesn't have one. func (t *Trie) Hash() common.Hash { diff --git a/trie/trie_test.go b/trie/trie_test.go index be0df8a544..a1fdc8cd58 100644 --- a/trie/trie_test.go +++ b/trie/trie_test.go @@ -414,8 +414,9 @@ func runRandTest(rt randTest) bool { values := make(map[string]string) // tracks content of the trie for i, step := range rt { - fmt.Printf("{op: %d, key: common.Hex2Bytes(\"%x\"), value: common.Hex2Bytes(\"%x\")}, // step %d\n", - step.op, step.key, step.value, i) + // fmt.Printf("{op: %d, key: common.Hex2Bytes(\"%x\"), value: common.Hex2Bytes(\"%x\")}, // step %d\n", + // step.op, step.key, step.value, i) + switch step.op { case opUpdate: tr.Update(step.key, step.value) @@ -675,6 +676,8 @@ func (s *spongeDb) Has(key []byte) (bool, error) { panic("implement func (s *spongeDb) Get(key []byte) ([]byte, error) { return nil, errors.New("no such elem") } func (s *spongeDb) Delete(key []byte) error { panic("implement me") } func (s *spongeDb) NewBatch() ethdb.Batch { return &spongeBatch{s} } +func (s *spongeDb) NewBatchWithSize(size int) ethdb.Batch { return &spongeBatch{s} } +func (s *spongeDb) NewSnapshot() (ethdb.Snapshot, error) { panic("implement me") } func (s *spongeDb) Stat(property string) (string, error) { panic("implement me") } func (s *spongeDb) Compact(start []byte, limit []byte) error { panic("implement me") } func (s *spongeDb) Close() error { return nil } @@ -884,7 +887,8 @@ func TestCommitSequenceSmallRoot(t *testing.T) { if stRoot != root { t.Fatalf("root wrong, got %x exp %x", stRoot, root) } - fmt.Printf("root: %x\n", stRoot) + + t.Logf("root: %x\n", stRoot) if got, exp := stackTrieSponge.sponge.Sum(nil), s.sponge.Sum(nil); !bytes.Equal(got, exp) { t.Fatalf("test, disk write sequence wrong:\ngot %x exp %x\n", got, exp) } From 44e5edf109974129c2ee15a1cab604bffc8ff182 Mon Sep 17 00:00:00 2001 From: Manav Darji Date: Mon, 11 Apr 2022 18:56:05 +0530 Subject: [PATCH 12/41] bumped version --- params/version.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/params/version.go b/params/version.go index b39e363b92..f5daf32ae7 100644 --- a/params/version.go +++ b/params/version.go @@ -24,7 +24,7 @@ const ( VersionMajor = 0 // Major version component of the current release VersionMinor = 2 // Minor version component of the current release VersionPatch = 16 // Patch version component of the current release - VersionMeta = "beta-1" // Version metadata to append to the version string + VersionMeta = "beta-2" // Version metadata to append to the version string ) // Version holds the textual version string. From d5b76d4aa4d7194598c93307a48ac3a1ccbeacce Mon Sep 17 00:00:00 2001 From: Arpit Temani Date: Mon, 11 Apr 2022 23:00:53 +0530 Subject: [PATCH 13/41] fix failing tests --- core/genesis_test.go | 30 ------------------------------ miner/miner_test.go | 2 +- miner/worker_test.go | 2 +- 3 files changed, 2 insertions(+), 32 deletions(-) diff --git a/core/genesis_test.go b/core/genesis_test.go index cf49de7ff1..e8010e3d4e 100644 --- a/core/genesis_test.go +++ b/core/genesis_test.go @@ -243,33 +243,3 @@ func TestReadWriteGenesisAlloc(t *testing.T) { } } } - -func TestGenesis_Commit(t *testing.T) { - genesis := &Genesis{ - BaseFee: big.NewInt(params.InitialBaseFee), - Config: params.TestChainConfig, - // difficulty is nil - } - - db := rawdb.NewMemoryDatabase() - genesisBlock, err := genesis.Commit(db) - if err != nil { - t.Fatal(err) - } - - if genesis.Difficulty != nil { - t.Fatalf("assumption wrong") - } - - // This value should have been set as default in the ToBlock method. - if genesisBlock.Difficulty().Cmp(params.GenesisDifficulty) != 0 { - t.Errorf("assumption wrong: want: %d, got: %v", params.GenesisDifficulty, genesisBlock.Difficulty()) - } - - // Expect the stored total difficulty to be the difficulty of the genesis block. - stored := rawdb.ReadTd(db, genesisBlock.Hash(), genesisBlock.NumberU64()) - - if stored.Cmp(genesisBlock.Difficulty()) != 0 { - t.Errorf("inequal difficulty; stored: %v, genesisBlock: %v", stored, genesisBlock.Difficulty()) - } -} diff --git a/miner/miner_test.go b/miner/miner_test.go index 56773101be..03c79cbbd5 100644 --- a/miner/miner_test.go +++ b/miner/miner_test.go @@ -258,7 +258,7 @@ func createMiner(t *testing.T) (*Miner, *event.TypeMux, func(skipMiner bool)) { // Create consensus engine engine := clique.New(chainConfig.Clique, chainDB) // Create Ethereum backend - merger := consensus.NewMerger(rawdb.NewMemoryDatabase()) + consensus.NewMerger(rawdb.NewMemoryDatabase()) bc, err := core.NewBlockChain(chainDB, nil, chainConfig, engine, vm.Config{}, nil, nil) if err != nil { t.Fatalf("can't create new chain %v", err) diff --git a/miner/worker_test.go b/miner/worker_test.go index f309ae994b..dd029433b8 100644 --- a/miner/worker_test.go +++ b/miner/worker_test.go @@ -202,7 +202,7 @@ func (b *testWorkerBackend) newRandomTx(creation bool) *types.Transaction { func newTestWorker(t *testing.T, chainConfig *params.ChainConfig, engine consensus.Engine, db ethdb.Database, blocks int) (*worker, *testWorkerBackend) { backend := newTestWorkerBackend(t, chainConfig, engine, db, blocks) backend.txPool.AddLocals(pendingTxs) - w := newWorker(testConfig, chainConfig, engine, backend, new(event.TypeMux), nil, false, consensus.NewMerger(rawdb.NewMemoryDatabase())) + w := newWorker(testConfig, chainConfig, engine, backend, new(event.TypeMux), nil, false) w.setEtherbase(testBankAddress) return w, backend } From bf85e15dced64e6148e808f08eedb31eeeef527c Mon Sep 17 00:00:00 2001 From: Victor Castell Date: Tue, 19 Apr 2022 10:40:22 +0200 Subject: [PATCH 14/41] Bump Go version to v1.18 (#368) * Bump Go version to v1.18.1 --- Dockerfile.alltools | 2 +- Dockerfile.classic | 2 +- Makefile | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Dockerfile.alltools b/Dockerfile.alltools index b702d332b9..a3f36d4a04 100644 --- a/Dockerfile.alltools +++ b/Dockerfile.alltools @@ -1,5 +1,5 @@ # Build Geth in a stock Go builder container -FROM golang:1.18-alpine as builder +FROM golang:1.18.1-alpine as builder RUN apk add --no-cache make gcc musl-dev linux-headers git diff --git a/Dockerfile.classic b/Dockerfile.classic index a60c55e7d4..2fa38f08f9 100644 --- a/Dockerfile.classic +++ b/Dockerfile.classic @@ -1,5 +1,5 @@ # Build Geth in a stock Go builder container -FROM golang:1.17-alpine as builder +FROM golang:1.18.1-alpine as builder RUN apk add --no-cache make gcc musl-dev linux-headers git bash diff --git a/Makefile b/Makefile index b4fc8de630..6469b8510f 100644 --- a/Makefile +++ b/Makefile @@ -160,7 +160,7 @@ geth-windows-amd64: @ls -ld $(GOBIN)/geth-windows-* | grep amd64 PACKAGE_NAME := github.com/maticnetwork/bor -GOLANG_CROSS_VERSION ?= v1.17.2 +GOLANG_CROSS_VERSION ?= v1.18.1 .PHONY: release-dry-run release-dry-run: @@ -174,7 +174,7 @@ release-dry-run: -v /var/run/docker.sock:/var/run/docker.sock \ -v `pwd`:/go/src/$(PACKAGE_NAME) \ -w /go/src/$(PACKAGE_NAME) \ - ghcr.io/troian/golang-cross:${GOLANG_CROSS_VERSION} \ + goreleaser/goreleaser-cross:${GOLANG_CROSS_VERSION} \ --rm-dist --skip-validate --skip-publish .PHONY: release @@ -190,5 +190,5 @@ release: -v /var/run/docker.sock:/var/run/docker.sock \ -v `pwd`:/go/src/$(PACKAGE_NAME) \ -w /go/src/$(PACKAGE_NAME) \ - ghcr.io/troian/golang-cross:${GOLANG_CROSS_VERSION} \ + goreleaser/goreleaser-cross:${GOLANG_CROSS_VERSION} \ --rm-dist --skip-validate From 1a31178c01b9fc98e3b77dd8f9fb6ff974104f8d Mon Sep 17 00:00:00 2001 From: Victor Castell Date: Wed, 22 Dec 2021 14:43:00 +0100 Subject: [PATCH 15/41] Build using netgo tag This will create a static build using Go native networking stack. Checked and it works stable for all archs and distros. --- .goreleaser.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.goreleaser.yml b/.goreleaser.yml index 088dcf38c7..331d8de6b5 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -49,7 +49,7 @@ builds: tags: - netgo ldflags: - # We need to build a static binary because we are building in a glibc based system and running in a musl container + # We need to build a static binary because we are building in a glibc based system and running in a musl container -s -w -extldflags "-static" - id: linux-arm64 @@ -65,7 +65,7 @@ builds: tags: - netgo ldflags: - # We need to build a static binary because we are building in a glibc based system and running in a musl container + # We need to build a static binary because we are building in a glibc based system and running in a musl container -s -w -extldflags "-static" nfpms: From 429deab982a2a7c90f4399dcb908bf9380cc2769 Mon Sep 17 00:00:00 2001 From: Victor Castell Date: Tue, 26 Apr 2022 18:18:01 +0200 Subject: [PATCH 16/41] Fix meta --- params/version.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/params/version.go b/params/version.go index f5daf32ae7..e74aee4400 100644 --- a/params/version.go +++ b/params/version.go @@ -21,10 +21,10 @@ import ( ) const ( - VersionMajor = 0 // Major version component of the current release - VersionMinor = 2 // Minor version component of the current release - VersionPatch = 16 // Patch version component of the current release - VersionMeta = "beta-2" // Version metadata to append to the version string + VersionMajor = 0 // Major version component of the current release + VersionMinor = 2 // Minor version component of the current release + VersionPatch = 16 // Patch version component of the current release + VersionMeta = "beta2" // Version metadata to append to the version string ) // Version holds the textual version string. From cc7c5b3fd997ad658c901f05ba7ddc639ea56423 Mon Sep 17 00:00:00 2001 From: Manav Darji Date: Mon, 2 May 2022 16:57:02 +0530 Subject: [PATCH 17/41] initial implementation for common ancestor approach --- consensus/bor/rest.go | 28 ++++++++ eth/backend.go | 55 +++++++++++++++ eth/downloader/downloader.go | 107 +++++++++++++++++++++++++---- eth/handler.go | 23 ++++--- eth/handler_bor.go | 50 ++++++++++++++ eth/handler_eth_test.go | 22 ++++++ tests/bor/mocks/IHeimdallClient.go | 23 +++++++ 7 files changed, 287 insertions(+), 21 deletions(-) create mode 100644 eth/handler_bor.go diff --git a/consensus/bor/rest.go b/consensus/bor/rest.go index 6460b75a3c..627262ffe6 100644 --- a/consensus/bor/rest.go +++ b/consensus/bor/rest.go @@ -4,11 +4,13 @@ import ( "encoding/json" "fmt" "io/ioutil" + "math/big" "net/http" "net/url" "sort" "time" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/log" ) @@ -23,10 +25,21 @@ type ResponseWithHeight struct { Result json.RawMessage `json:"result"` } +// Checkpoint defines a response object type of bor checkpoint +type Checkpoint struct { + Proposer common.Address `json:"proposer"` + StartBlock *big.Int `json:"start_block"` + EndBlock *big.Int `json:"end_block"` + RootHash common.Hash `json:"root_hash"` + BorChainID string `json:"bor_chain_id"` + Timestamp uint64 `json:"timestamp"` +} + type IHeimdallClient interface { Fetch(path string, query string) (*ResponseWithHeight, error) FetchWithRetry(path string, query string) (*ResponseWithHeight, error) FetchStateSyncEvents(fromID uint64, to int64) ([]*EventRecordWithTime, error) + FetchLatestCheckpoint() (*Checkpoint, error) Close() } @@ -76,6 +89,21 @@ func (h *HeimdallClient) FetchStateSyncEvents(fromID uint64, to int64) ([]*Event return eventRecords, nil } +// FetchLatestCheckpoint fetches the latest bor submitted checkpoint from heimdall +func (h *HeimdallClient) FetchLatestCheckpoint() (*Checkpoint, error) { + var checkpoint Checkpoint + + response, err := h.Fetch("/checkpoints/latest", "") + if err != nil { + return nil, err + } + if err := json.Unmarshal(response.Result, &checkpoint); err != nil { + return nil, err + } + + return &checkpoint, nil +} + // Fetch fetches response from heimdall func (h *HeimdallClient) Fetch(rawPath string, rawQuery string) (*ResponseWithHeight, error) { u, err := url.Parse(h.urlString) diff --git a/eth/backend.go b/eth/backend.go index 05d6c5c927..994a7d473f 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -100,6 +100,8 @@ type Ethereum struct { lock sync.RWMutex // Protects the variadic fields (e.g. gas price and etherbase) + closeCh chan struct{} // Channel to signal the background processes to exit + shutdownTracker *shutdowncheck.ShutdownTracker // Tracks if and when the node has shutdown ungracefully } @@ -161,6 +163,7 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { bloomRequests: make(chan chan *bloombits.Retrieval), bloomIndexer: core.NewBloomIndexer(chainDb, params.BloomBitsBlocks, params.BloomConfirms), p2pServer: stack.Server(), + closeCh: make(chan struct{}), shutdownTracker: shutdowncheck.NewShutdownTracker(chainDb), } @@ -252,6 +255,7 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { BloomCache: uint64(cacheLimit), EventMux: eth.eventMux, Checkpoint: checkpoint, + EthAPI: ethAPI, PeerRequiredBlocks: config.PeerRequiredBlocks, }); err != nil { return nil, err @@ -584,6 +588,54 @@ func (s *Ethereum) Start() error { } // Start the networking layer and the light server if requested s.handler.Start(maxPeers) + + go s.startCheckpointWhitelistService() + return nil +} + +// StartCheckpointWhitelistService starts the goroutine to fetch checkpoints and update the +// checkpoint whitelist map. +func (s *Ethereum) startCheckpointWhitelistService() { + every := time.Duration(100) * time.Second + ticker := time.NewTicker(every) + defer ticker.Stop() + +Loop: + for { + select { + case <-ticker.C: + err := s.handleWhitelistCheckpoint() + if err != nil { + log.Warn(err.Error()) + } + case <-s.closeCh: + break Loop + } + } +} + +// handleWhitelistCheckpoint handles the checkpoint whitelist mechanism. +func (s *Ethereum) handleWhitelistCheckpoint() error { + var m sync.Mutex + + ethHandler := (*ethHandler)(s.handler) + + if !ethHandler.chain.Engine().(*bor.Bor).WithoutHeimdall { + endBlockNum, endBlockHash, err := ethHandler.fetchWhitelistCheckpoint() + if err != nil { + return err + } + + m.Lock() + // Update the checkpoint whitelist map. + ethHandler.downloader.EnqueueCheckpointWhitelist(endBlockNum, endBlockHash) + // If size of checkpoint whitelist map is greater than 10, remove the oldest entry. + if len(ethHandler.downloader.GetCheckpointWhitelist()) > 10 { + ethHandler.downloader.DequeueCheckpointWhitelist() + } + m.Unlock() + } + return nil } @@ -599,6 +651,9 @@ func (s *Ethereum) Stop() error { s.bloomIndexer.Close() close(s.closeBloomHandler) + // Close all bg processes + close(s.closeCh) + // closing consensus engine first, as miner has deps on it s.engine.Close() s.txPool.Stop() diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go index 1e68746f97..b2d70906aa 100644 --- a/eth/downloader/downloader.go +++ b/eth/downloader/downloader.go @@ -78,6 +78,7 @@ var ( errCanceled = errors.New("syncing canceled (requested)") errTooOld = errors.New("peer's protocol version too old") errNoAncestorFound = errors.New("no common ancestor found") + errCheckpointMismatch = errors.New("checkpoint mismatch") ErrMergeTransition = errors.New("legacy sync reached the merge") ) @@ -143,6 +144,10 @@ type Downloader struct { quitCh chan struct{} // Quit channel to signal termination quitLock sync.Mutex // Lock to prevent double closes + // Checkpoint whitelist + checkpointWhitelist map[uint64]common.Hash // Checkpoint whitelist, populated by reaching out to heimdall + checkpointOrder []uint64 // Checkpoint order, populated by reaching out to heimdall + // Testing hooks syncInitHook func(uint64, uint64) // Method to call upon initiating a new sync run bodyFetchHook func([]*types.Header) // Method to call upon starting a block body fetch @@ -209,18 +214,20 @@ func New(checkpoint uint64, stateDb ethdb.Database, mux *event.TypeMux, chain Bl lightchain = chain } dl := &Downloader{ - stateDB: stateDb, - mux: mux, - checkpoint: checkpoint, - queue: newQueue(blockCacheMaxItems, blockCacheInitialItems), - peers: newPeerSet(), - blockchain: chain, - lightchain: lightchain, - dropPeer: dropPeer, - headerProcCh: make(chan *headerTask, 1), - quitCh: make(chan struct{}), - SnapSyncer: snap.NewSyncer(stateDb), - stateSyncStart: make(chan *stateSync), + stateDB: stateDb, + mux: mux, + checkpoint: checkpoint, + queue: newQueue(blockCacheMaxItems, blockCacheInitialItems), + peers: newPeerSet(), + blockchain: chain, + lightchain: lightchain, + dropPeer: dropPeer, + headerProcCh: make(chan *headerTask, 1), + quitCh: make(chan struct{}), + SnapSyncer: snap.NewSyncer(stateDb), + stateSyncStart: make(chan *stateSync), + checkpointWhitelist: make(map[uint64]common.Hash), + checkpointOrder: make([]uint64, 0), } dl.skeleton = newSkeleton(stateDb, dl.peers, dropPeer, newBeaconBackfiller(dl, success)) @@ -332,6 +339,10 @@ func (d *Downloader) LegacySync(id string, head common.Hash, td, ttd *big.Int, m case nil, errBusy, errCanceled: return err } + if errors.Is(err, errCheckpointMismatch) { + // TODO: what better can be done here? + log.Warn("Mismatch in last checkpointed block", "peer", id, "err", err) + } if errors.Is(err, errInvalidChain) || errors.Is(err, errBadPeer) || errors.Is(err, errTimeout) || errors.Is(err, errStallingPeer) || errors.Is(err, errUnsyncedPeer) || errors.Is(err, errEmptyHeaderSet) || errors.Is(err, errPeersUnavailable) || errors.Is(err, errTooOld) || errors.Is(err, errInvalidAncestor) { @@ -764,12 +775,51 @@ func calculateRequestSpan(remoteHeight, localHeight uint64) (int64, int, int, ui return int64(from), count, span - 1, uint64(max) } +// isValidChain checks if the chain we're about to receive from this peer is valid or not +// in terms of reorgs. We won't reorg beyond the last bor checkpoint submitted to mainchain. +func (d *Downloader) isValidChain(p *peerConnection, remoteHeader *types.Header) (bool, error) { + // We want to validate the chain by comparing the last checkpointed block + // we're storing in `checkpointWhitelist` with the peer's block. + + // Check for availaibility of the last checkpointed block. + // This can be also be empty if our heimdall is not responsing + // or we're running without it. + if len(d.checkpointWhitelist) <= 0 { + // worst case, we don't have the checkpoints in memory + return true, nil + } + + // Fetch the last checkpoint entry + lastCheckpointBlockNum := d.checkpointOrder[len(d.checkpointOrder)-1] + lastCheckpointBlockHash := d.checkpointWhitelist[lastCheckpointBlockNum] + + headers, hashes, err := d.fetchHeadersByNumber(p, lastCheckpointBlockNum, 1, 0, false) + if err != nil || len(headers) == 0 { + // TODO: what better can be done here? + return true, nil + } + reqBlockNum := headers[0].Number.Uint64() + reqBlockHash := hashes[0] + + // Check against the checkpointed blocks + if reqBlockNum == lastCheckpointBlockNum && reqBlockHash == lastCheckpointBlockHash { + return true, nil + } + + return false, errCheckpointMismatch +} + // findAncestor tries to locate the common ancestor link of the local chain and // a remote peers blockchain. In the general case when our node was in sync and // on the correct chain, checking the top N links should already get us a match. // In the rare scenario when we ended up on a long reorganisation (i.e. none of // the head links match), we do a binary search to find the common ancestor. func (d *Downloader) findAncestor(p *peerConnection, remoteHeader *types.Header) (uint64, error) { + // Check the validity of chain to be downloaded + if _, err := d.isValidChain(p, remoteHeader); errors.Is(err, errCheckpointMismatch) { + return 0, err + } + // Figure out the valid ancestor range to prevent rewrite attacks var ( floor = int64(-1) @@ -1755,3 +1805,36 @@ func (d *Downloader) DeliverSnapPacket(peer *snap.Peer, packet snap.Packet) erro return fmt.Errorf("unexpected snap packet type: %T", packet) } } + +// Helper functions for checkpoint whitelist service + +// PurgeWhitelistMap purges data from checkpoint whitelist map +func (d *Downloader) PurgeWhitelistMap() error { + for k := range d.checkpointWhitelist { + delete(d.checkpointWhitelist, k) + } + return nil +} + +// EnqueueWhitelistBlock enqueues blockNumber, blockHash to the checkpoint whitelist map +func (d *Downloader) EnqueueCheckpointWhitelist(key uint64, val common.Hash) { + if _, ok := d.checkpointWhitelist[key]; !ok { + log.Debug("Enqueing new checkpoint whitelist", "block number", key, "block hash", val) + d.checkpointWhitelist[key] = val + d.checkpointOrder = append(d.checkpointOrder, key) + } +} + +// DequeueWhitelistBlock dequeues block, blockhash from the checkpoint whitelist map +func (d *Downloader) DequeueCheckpointWhitelist() { + if len(d.checkpointOrder) > 0 { + log.Debug("Dequeing checkpoint whitelist", "block number", d.checkpointOrder[0], "block hash", d.checkpointWhitelist[d.checkpointOrder[0]]) + delete(d.checkpointWhitelist, d.checkpointOrder[0]) + d.checkpointOrder = d.checkpointOrder[1:] + } +} + +// GetCheckpointWhitelist returns the checkpoints whitelisted. +func (d *Downloader) GetCheckpointWhitelist() map[uint64]common.Hash { + return d.checkpointWhitelist +} diff --git a/eth/handler.go b/eth/handler.go index 40edfa2d17..fa0852d69e 100644 --- a/eth/handler.go +++ b/eth/handler.go @@ -36,6 +36,7 @@ import ( "github.com/ethereum/go-ethereum/eth/protocols/snap" "github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/event" + "github.com/ethereum/go-ethereum/internal/ethapi" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/p2p" "github.com/ethereum/go-ethereum/params" @@ -77,15 +78,16 @@ type txPool interface { // handlerConfig is the collection of initialization parameters to create a full // node network handler. type handlerConfig struct { - Database ethdb.Database // Database for direct sync insertions - Chain *core.BlockChain // Blockchain to serve data from - TxPool txPool // Transaction pool to propagate from - Merger *consensus.Merger // The manager for eth1/2 transition - Network uint64 // Network identifier to adfvertise - Sync downloader.SyncMode // Whether to snap or full sync - BloomCache uint64 // Megabytes to alloc for snap sync bloom - EventMux *event.TypeMux // Legacy event mux, deprecate for `feed` - Checkpoint *params.TrustedCheckpoint // Hard coded checkpoint for sync challenges + Database ethdb.Database // Database for direct sync insertions + Chain *core.BlockChain // Blockchain to serve data from + TxPool txPool // Transaction pool to propagate from + Merger *consensus.Merger // The manager for eth1/2 transition + Network uint64 // Network identifier to adfvertise + Sync downloader.SyncMode // Whether to snap or full sync + BloomCache uint64 // Megabytes to alloc for snap sync bloom + EventMux *event.TypeMux // Legacy event mux, deprecate for `feed` + Checkpoint *params.TrustedCheckpoint // Hard coded checkpoint for sync challenges + EthAPI *ethapi.PublicBlockChainAPI // EthAPI to interact PeerRequiredBlocks map[uint64]common.Hash // Hard coded map of required block hashes for sync challenges } @@ -111,6 +113,8 @@ type handler struct { peers *peerSet merger *consensus.Merger + ethAPI *ethapi.PublicBlockChainAPI // EthAPI to interact + eventMux *event.TypeMux txsCh chan core.NewTxsEvent txsSub event.Subscription @@ -141,6 +145,7 @@ func newHandler(config *handlerConfig) (*handler, error) { chain: config.Chain, peers: newPeerSet(), merger: config.Merger, + ethAPI: config.EthAPI, peerRequiredBlocks: config.PeerRequiredBlocks, quitSync: make(chan struct{}), } diff --git a/eth/handler_bor.go b/eth/handler_bor.go new file mode 100644 index 0000000000..b87c07f551 --- /dev/null +++ b/eth/handler_bor.go @@ -0,0 +1,50 @@ +package eth + +import ( + "context" + "fmt" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/consensus/bor" + "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/rpc" +) + +// fetchWhitelistCheckpoint fetched the latest checkpoint from it's local heimdall +// and verifies the data against bor data. +func (h *ethHandler) fetchWhitelistCheckpoint() (uint64, common.Hash, error) { + // check for checkpoint whitelisting: bor + checkpoint, err := h.chain.Engine().(*bor.Bor).HeimdallClient.FetchLatestCheckpoint() + if err != nil { + log.Debug("Failed to fetch latest checkpoint for whitelisting") + return 0, common.Hash{}, fmt.Errorf("failed to fetch latest checkpoint") + } + + // check if we have the checkpoint blocks + head := h.ethAPI.BlockNumber() + if head < hexutil.Uint64(checkpoint.EndBlock.Uint64()) { + log.Debug("Head block behing checkpoint block", "head", head, "checkpoint end block", checkpoint.EndBlock) + return 0, common.Hash{}, fmt.Errorf("missing checkpoint blocks") + } + + // verify the root hash of checkpoint + roothash, err := h.ethAPI.GetRootHash(context.Background(), checkpoint.StartBlock.Uint64(), checkpoint.EndBlock.Uint64()) + if err != nil { + log.Debug("Failed to get root hash of checkpoint while whitelisting") + return 0, common.Hash{}, fmt.Errorf("failed to get local root hash") + } + if roothash != checkpoint.RootHash.String()[2:] { + log.Warn("Checkpoint root hash mismatch while whitelisting", "expected", checkpoint.RootHash.String()[2:], "got", roothash) + return 0, common.Hash{}, fmt.Errorf("checkpoint roothash mismatch") + } + + // fetch the end checkpoint block hash + block, err := h.ethAPI.GetBlockByNumber(context.Background(), rpc.BlockNumber(checkpoint.EndBlock.Uint64()), false) + if err != nil { + log.Debug("Failed to get end block hash of checkpoint while whitelisting") + return 0, common.Hash{}, fmt.Errorf("failed to get end block") + } + hash := fmt.Sprintf("%v", block["hash"]) + return checkpoint.EndBlock.Uint64(), common.HexToHash(hash), nil +} diff --git a/eth/handler_eth_test.go b/eth/handler_eth_test.go index 7d5027ae77..ec1329b059 100644 --- a/eth/handler_eth_test.go +++ b/eth/handler_eth_test.go @@ -39,6 +39,7 @@ import ( "github.com/ethereum/go-ethereum/p2p/enode" "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rlp" + "gotest.tools/assert" ) // testEthHandler is a mock event handler to listen for inbound network requests @@ -746,3 +747,24 @@ func testBroadcastMalformedBlock(t *testing.T, protocol uint) { } } } + +// TestWhitelistCheckpoint checks the checkpoint whitelist map queue mechanism +func TestWhitelistCheckpoint(t *testing.T) { + t.Parallel() + + testHandler := newTestHandler() + defer testHandler.close() + + ethHandler := (*ethHandler)(testHandler.handler) + for i := 0; i < 10; i++ { + ethHandler.downloader.EnqueueCheckpointWhitelist(uint64(i), common.Hash{}) + } + + assert.Equal(t, len(ethHandler.downloader.GetCheckpointWhitelist()), 10, "expected 10 items in whitelist") + + ethHandler.downloader.EnqueueCheckpointWhitelist(11, common.Hash{}) + ethHandler.downloader.DequeueCheckpointWhitelist() + + assert.Equal(t, len(ethHandler.downloader.GetCheckpointWhitelist()), 10, "expected 10 items in whitelist") + +} diff --git a/tests/bor/mocks/IHeimdallClient.go b/tests/bor/mocks/IHeimdallClient.go index ac89487d3b..3ee599bb2e 100644 --- a/tests/bor/mocks/IHeimdallClient.go +++ b/tests/bor/mocks/IHeimdallClient.go @@ -40,6 +40,29 @@ func (_m *IHeimdallClient) Fetch(path string, query string) (*bor.ResponseWithHe return r0, r1 } +// FetchLatestCheckpoint provides a mock function with given fields: +func (_m *IHeimdallClient) FetchLatestCheckpoint() (*bor.Checkpoint, error) { + ret := _m.Called() + + var r0 *bor.Checkpoint + if rf, ok := ret.Get(0).(func() *bor.Checkpoint); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*bor.Checkpoint) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func() error); ok { + r1 = rf() + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + // FetchStateSyncEvents provides a mock function with given fields: fromID, to func (_m *IHeimdallClient) FetchStateSyncEvents(fromID uint64, to int64) ([]*bor.EventRecordWithTime, error) { ret := _m.Called(fromID, to) From 2cb82c991a17ed9fd3bb9f509d8da00f62e74981 Mon Sep 17 00:00:00 2001 From: Evgeny Danienko <6655321@bk.ru> Date: Thu, 5 May 2022 17:00:24 +0300 Subject: [PATCH 18/41] extract whitelist interface --- eth/downloader/downloader.go | 89 +++++---------------------- eth/downloader/downloader_test.go | 5 +- eth/downloader/whitelist/service.go | 93 +++++++++++++++++++++++++++++ 3 files changed, 113 insertions(+), 74 deletions(-) create mode 100644 eth/downloader/whitelist/service.go diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go index b2d70906aa..2ee61c3372 100644 --- a/eth/downloader/downloader.go +++ b/eth/downloader/downloader.go @@ -30,6 +30,7 @@ import ( "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/core/state/snapshot" "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/eth/downloader/whitelist" "github.com/ethereum/go-ethereum/eth/protocols/snap" "github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/event" @@ -78,7 +79,6 @@ var ( errCanceled = errors.New("syncing canceled (requested)") errTooOld = errors.New("peer's protocol version too old") errNoAncestorFound = errors.New("no common ancestor found") - errCheckpointMismatch = errors.New("checkpoint mismatch") ErrMergeTransition = errors.New("legacy sync reached the merge") ) @@ -144,9 +144,7 @@ type Downloader struct { quitCh chan struct{} // Quit channel to signal termination quitLock sync.Mutex // Lock to prevent double closes - // Checkpoint whitelist - checkpointWhitelist map[uint64]common.Hash // Checkpoint whitelist, populated by reaching out to heimdall - checkpointOrder []uint64 // Checkpoint order, populated by reaching out to heimdall + ChainValidator // Testing hooks syncInitHook func(uint64, uint64) // Method to call upon initiating a new sync run @@ -155,6 +153,11 @@ type Downloader struct { chainInsertHook func([]*fetchResult) // Method to call upon inserting a chain of blocks (possibly in multiple invocations) } +// interface for whitelist service +type ChainValidator interface { + IsValidChain(remoteHeader *types.Header, fetchHeadersByNumber func(number uint64, amount int, skip int, reverse bool) ([]*types.Header, []common.Hash, error)) (bool, error) +} + // LightChain encapsulates functions required to synchronise a light chain. type LightChain interface { // HasHeader verifies a header's presence in the local chain. @@ -209,7 +212,7 @@ type BlockChain interface { } // New creates a new downloader to fetch hashes and blocks from remote peers. -func New(checkpoint uint64, stateDb ethdb.Database, mux *event.TypeMux, chain BlockChain, lightchain LightChain, dropPeer peerDropFn, success func()) *Downloader { +func New(checkpoint uint64, stateDb ethdb.Database, mux *event.TypeMux, chain BlockChain, lightchain LightChain, dropPeer peerDropFn, success func(), whitelistService ChainValidator) *Downloader { if lightchain == nil { lightchain = chain } @@ -226,8 +229,7 @@ func New(checkpoint uint64, stateDb ethdb.Database, mux *event.TypeMux, chain Bl quitCh: make(chan struct{}), SnapSyncer: snap.NewSyncer(stateDb), stateSyncStart: make(chan *stateSync), - checkpointWhitelist: make(map[uint64]common.Hash), - checkpointOrder: make([]uint64, 0), + ChainValidator: whitelistService, } dl.skeleton = newSkeleton(stateDb, dl.peers, dropPeer, newBeaconBackfiller(dl, success)) @@ -339,7 +341,7 @@ func (d *Downloader) LegacySync(id string, head common.Hash, td, ttd *big.Int, m case nil, errBusy, errCanceled: return err } - if errors.Is(err, errCheckpointMismatch) { + if errors.Is(err, whitelist.ErrCheckpointMismatch) { // TODO: what better can be done here? log.Warn("Mismatch in last checkpointed block", "peer", id, "err", err) } @@ -775,38 +777,11 @@ func calculateRequestSpan(remoteHeight, localHeight uint64) (int64, int, int, ui return int64(from), count, span - 1, uint64(max) } -// isValidChain checks if the chain we're about to receive from this peer is valid or not -// in terms of reorgs. We won't reorg beyond the last bor checkpoint submitted to mainchain. -func (d *Downloader) isValidChain(p *peerConnection, remoteHeader *types.Header) (bool, error) { - // We want to validate the chain by comparing the last checkpointed block - // we're storing in `checkpointWhitelist` with the peer's block. - - // Check for availaibility of the last checkpointed block. - // This can be also be empty if our heimdall is not responsing - // or we're running without it. - if len(d.checkpointWhitelist) <= 0 { - // worst case, we don't have the checkpoints in memory - return true, nil +// curried fetchHeadersByNumber +func (d *Downloader) getFetchHeadersByNumber(p *peerConnection) func(number uint64, amount int, skip int, reverse bool) ([]*types.Header, []common.Hash, error) { + return func(number uint64, amount int, skip int, reverse bool) ([]*types.Header, []common.Hash, error) { + return d.fetchHeadersByNumber(p, number, amount, skip, reverse) } - - // Fetch the last checkpoint entry - lastCheckpointBlockNum := d.checkpointOrder[len(d.checkpointOrder)-1] - lastCheckpointBlockHash := d.checkpointWhitelist[lastCheckpointBlockNum] - - headers, hashes, err := d.fetchHeadersByNumber(p, lastCheckpointBlockNum, 1, 0, false) - if err != nil || len(headers) == 0 { - // TODO: what better can be done here? - return true, nil - } - reqBlockNum := headers[0].Number.Uint64() - reqBlockHash := hashes[0] - - // Check against the checkpointed blocks - if reqBlockNum == lastCheckpointBlockNum && reqBlockHash == lastCheckpointBlockHash { - return true, nil - } - - return false, errCheckpointMismatch } // findAncestor tries to locate the common ancestor link of the local chain and @@ -816,7 +791,8 @@ func (d *Downloader) isValidChain(p *peerConnection, remoteHeader *types.Header) // the head links match), we do a binary search to find the common ancestor. func (d *Downloader) findAncestor(p *peerConnection, remoteHeader *types.Header) (uint64, error) { // Check the validity of chain to be downloaded - if _, err := d.isValidChain(p, remoteHeader); errors.Is(err, errCheckpointMismatch) { + // TODO: we can use a mock and + if _, err := d.IsValidChain(remoteHeader, d.getFetchHeadersByNumber(p)); errors.Is(err, whitelist.ErrCheckpointMismatch) { return 0, err } @@ -1805,36 +1781,3 @@ func (d *Downloader) DeliverSnapPacket(peer *snap.Peer, packet snap.Packet) erro return fmt.Errorf("unexpected snap packet type: %T", packet) } } - -// Helper functions for checkpoint whitelist service - -// PurgeWhitelistMap purges data from checkpoint whitelist map -func (d *Downloader) PurgeWhitelistMap() error { - for k := range d.checkpointWhitelist { - delete(d.checkpointWhitelist, k) - } - return nil -} - -// EnqueueWhitelistBlock enqueues blockNumber, blockHash to the checkpoint whitelist map -func (d *Downloader) EnqueueCheckpointWhitelist(key uint64, val common.Hash) { - if _, ok := d.checkpointWhitelist[key]; !ok { - log.Debug("Enqueing new checkpoint whitelist", "block number", key, "block hash", val) - d.checkpointWhitelist[key] = val - d.checkpointOrder = append(d.checkpointOrder, key) - } -} - -// DequeueWhitelistBlock dequeues block, blockhash from the checkpoint whitelist map -func (d *Downloader) DequeueCheckpointWhitelist() { - if len(d.checkpointOrder) > 0 { - log.Debug("Dequeing checkpoint whitelist", "block number", d.checkpointOrder[0], "block hash", d.checkpointWhitelist[d.checkpointOrder[0]]) - delete(d.checkpointWhitelist, d.checkpointOrder[0]) - d.checkpointOrder = d.checkpointOrder[1:] - } -} - -// GetCheckpointWhitelist returns the checkpoints whitelisted. -func (d *Downloader) GetCheckpointWhitelist() map[uint64]common.Hash { - return d.checkpointWhitelist -} diff --git a/eth/downloader/downloader_test.go b/eth/downloader/downloader_test.go index 6989252c11..e2a3dca6be 100644 --- a/eth/downloader/downloader_test.go +++ b/eth/downloader/downloader_test.go @@ -35,6 +35,7 @@ import ( "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" + "github.com/ethereum/go-ethereum/eth/downloader/whitelist" "github.com/ethereum/go-ethereum/eth/protocols/eth" "github.com/ethereum/go-ethereum/eth/protocols/snap" "github.com/ethereum/go-ethereum/event" @@ -75,7 +76,9 @@ func newTester() *downloadTester { chain: chain, peers: make(map[string]*downloadTesterPeer), } - tester.downloader = New(0, db, new(event.TypeMux), tester.chain, nil, tester.dropPeer, nil) + + // TODO: here we can inject a mock + tester.downloader = New(0, db, new(event.TypeMux), tester.chain, nil, tester.dropPeer, nil, whitelist.NewService()) return tester } diff --git a/eth/downloader/whitelist/service.go b/eth/downloader/whitelist/service.go new file mode 100644 index 0000000000..538b77988f --- /dev/null +++ b/eth/downloader/whitelist/service.go @@ -0,0 +1,93 @@ +package whitelist + +import ( + "errors" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/log" +) + +var ( + ErrCheckpointMismatch = errors.New("checkpoint mismatch") +) + +type Service struct { + // Checkpoint whitelist + checkpointWhitelist map[uint64]common.Hash // Checkpoint whitelist, populated by reaching out to heimdall + checkpointOrder []uint64 // Checkpoint order, populated by reaching out to heimdall +} + +func NewService() *Service { + return &Service{ + checkpointWhitelist: make(map[uint64]common.Hash), + checkpointOrder: []uint64{}, + } +} + +// IsValidChain checks if the chain we're about to receive from this peer is valid or not +// in terms of reorgs. We won't reorg beyond the last bor checkpoint submitted to mainchain. +func (w *Service) IsValidChain(remoteHeader *types.Header, fetchHeadersByNumber func(number uint64, amount int, skip int, reverse bool) ([]*types.Header, []common.Hash, error)) (bool, error) { + // We want to validate the chain by comparing the last checkpointed block + // we're storing in `checkpointWhitelist` with the peer's block. + + // Check for availaibility of the last checkpointed block. + // This can be also be empty if our heimdall is not responsing + // or we're running without it. + if len(w.checkpointWhitelist) <= 0 { + // worst case, we don't have the checkpoints in memory + return true, nil + } + + // Fetch the last checkpoint entry + lastCheckpointBlockNum := w.checkpointOrder[len(w.checkpointOrder)-1] + lastCheckpointBlockHash := w.checkpointWhitelist[lastCheckpointBlockNum] + + // todo: we can extract this as an interface and mock as well or just test IsValidChain in isolation from downloader passing fake fetchHeadersByNumber functions + headers, hashes, err := fetchHeadersByNumber(lastCheckpointBlockNum, 1, 0, false) + if err != nil || len(headers) == 0 { + // TODO: what better can be done here? + return true, nil + } + + reqBlockNum := headers[0].Number.Uint64() + reqBlockHash := hashes[0] + + // Check against the checkpointed blocks + if reqBlockNum == lastCheckpointBlockNum && reqBlockHash == lastCheckpointBlockHash { + return true, nil + } + + return false, ErrCheckpointMismatch +} + +// PurgeWhitelistMap purges data from checkpoint whitelist map +func (w *Service) PurgeWhitelistMap() error { + for k := range w.checkpointWhitelist { + delete(w.checkpointWhitelist, k) + } + return nil +} + +// EnqueueWhitelistBlock enqueues blockNumber, blockHash to the checkpoint whitelist map +func (w *Service) EnqueueCheckpointWhitelist(key uint64, val common.Hash) { + if _, ok := w.checkpointWhitelist[key]; !ok { + log.Debug("Enqueing new checkpoint whitelist", "block number", key, "block hash", val) + w.checkpointWhitelist[key] = val + w.checkpointOrder = append(w.checkpointOrder, key) + } +} + +// DequeueWhitelistBlock dequeues block, blockhash from the checkpoint whitelist map +func (w *Service) DequeueCheckpointWhitelist() { + if len(w.checkpointOrder) > 0 { + log.Debug("Dequeing checkpoint whitelist", "block number", w.checkpointOrder[0], "block hash", w.checkpointWhitelist[w.checkpointOrder[0]]) + delete(w.checkpointWhitelist, w.checkpointOrder[0]) + w.checkpointOrder = w.checkpointOrder[1:] + } +} + +// GetCheckpointWhitelist returns the checkpoints whitelisted. +func (w *Service) GetCheckpointWhitelist() map[uint64]common.Hash { + return w.checkpointWhitelist +} From aa3004b08301e20e4d9f98b6afcda457cc703c90 Mon Sep 17 00:00:00 2001 From: Evgeny Danienko <6655321@bk.ru> Date: Thu, 5 May 2022 18:08:31 +0300 Subject: [PATCH 19/41] fix types --- eth/backend.go | 10 +--------- eth/downloader/downloader.go | 1 + eth/downloader/whitelist/service.go | 21 +++++++++++++++++++-- eth/handler.go | 4 +++- 4 files changed, 24 insertions(+), 12 deletions(-) diff --git a/eth/backend.go b/eth/backend.go index 994a7d473f..727525da55 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -616,8 +616,6 @@ Loop: // handleWhitelistCheckpoint handles the checkpoint whitelist mechanism. func (s *Ethereum) handleWhitelistCheckpoint() error { - var m sync.Mutex - ethHandler := (*ethHandler)(s.handler) if !ethHandler.chain.Engine().(*bor.Bor).WithoutHeimdall { @@ -626,14 +624,8 @@ func (s *Ethereum) handleWhitelistCheckpoint() error { return err } - m.Lock() // Update the checkpoint whitelist map. - ethHandler.downloader.EnqueueCheckpointWhitelist(endBlockNum, endBlockHash) - // If size of checkpoint whitelist map is greater than 10, remove the oldest entry. - if len(ethHandler.downloader.GetCheckpointWhitelist()) > 10 { - ethHandler.downloader.DequeueCheckpointWhitelist() - } - m.Unlock() + ethHandler.downloader.ProcessCheckpoint(endBlockNum, endBlockHash) } return nil diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go index 2ee61c3372..ae00350464 100644 --- a/eth/downloader/downloader.go +++ b/eth/downloader/downloader.go @@ -156,6 +156,7 @@ type Downloader struct { // interface for whitelist service type ChainValidator interface { IsValidChain(remoteHeader *types.Header, fetchHeadersByNumber func(number uint64, amount int, skip int, reverse bool) ([]*types.Header, []common.Hash, error)) (bool, error) + ProcessCheckpoint(endBlockNum uint64, endBlockHash common.Hash) } // LightChain encapsulates functions required to synchronise a light chain. diff --git a/eth/downloader/whitelist/service.go b/eth/downloader/whitelist/service.go index 538b77988f..63851f3058 100644 --- a/eth/downloader/whitelist/service.go +++ b/eth/downloader/whitelist/service.go @@ -2,6 +2,7 @@ package whitelist import ( "errors" + "sync" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" @@ -12,16 +13,19 @@ var ( ErrCheckpointMismatch = errors.New("checkpoint mismatch") ) +// Checkpoint whitelist type Service struct { - // Checkpoint whitelist + m sync.RWMutex checkpointWhitelist map[uint64]common.Hash // Checkpoint whitelist, populated by reaching out to heimdall checkpointOrder []uint64 // Checkpoint order, populated by reaching out to heimdall + maxCapacity uint } -func NewService() *Service { +func NewService(maxCapacity uint) *Service { return &Service{ checkpointWhitelist: make(map[uint64]common.Hash), checkpointOrder: []uint64{}, + maxCapacity: maxCapacity, } } @@ -61,6 +65,18 @@ func (w *Service) IsValidChain(remoteHeader *types.Header, fetchHeadersByNumber return false, ErrCheckpointMismatch } +func (w *Service) ProcessCheckpoint(endBlockNum uint64, endBlockHash common.Hash) { + w.m.Lock() + defer w.m.Unlock() + + w.EnqueueCheckpointWhitelist(endBlockNum, endBlockHash) + // If size of checkpoint whitelist map is greater than 10, remove the oldest entry. + + if len(w.GetCheckpointWhitelist()) > int(w.maxCapacity) { + w.DequeueCheckpointWhitelist() + } +} + // PurgeWhitelistMap purges data from checkpoint whitelist map func (w *Service) PurgeWhitelistMap() error { for k := range w.checkpointWhitelist { @@ -73,6 +89,7 @@ func (w *Service) PurgeWhitelistMap() error { func (w *Service) EnqueueCheckpointWhitelist(key uint64, val common.Hash) { if _, ok := w.checkpointWhitelist[key]; !ok { log.Debug("Enqueing new checkpoint whitelist", "block number", key, "block hash", val) + w.checkpointWhitelist[key] = val w.checkpointOrder = append(w.checkpointOrder, key) } diff --git a/eth/handler.go b/eth/handler.go index fa0852d69e..96eb3dc7be 100644 --- a/eth/handler.go +++ b/eth/handler.go @@ -31,6 +31,7 @@ import ( "github.com/ethereum/go-ethereum/core/forkid" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/eth/downloader" + "github.com/ethereum/go-ethereum/eth/downloader/whitelist" "github.com/ethereum/go-ethereum/eth/fetcher" "github.com/ethereum/go-ethereum/eth/protocols/eth" "github.com/ethereum/go-ethereum/eth/protocols/snap" @@ -200,7 +201,8 @@ func newHandler(config *handlerConfig) (*handler, error) { // Construct the downloader (long sync) and its backing state bloom if snap // sync is requested. The downloader is responsible for deallocating the state // bloom when it's done. - h.downloader = downloader.New(h.checkpointNumber, config.Database, h.eventMux, h.chain, nil, h.removePeer, success) + // todo: it'd better to extract maxCapacity into config + h.downloader = downloader.New(h.checkpointNumber, config.Database, h.eventMux, h.chain, nil, h.removePeer, success, whitelist.NewService(10)) // Construct the fetcher (short sync) validator := func(header *types.Header) error { From a6ec55bb31d59acdd9d21d8a1fc9551c7c571c23 Mon Sep 17 00:00:00 2001 From: Manav Darji Date: Wed, 11 May 2022 17:09:28 +0530 Subject: [PATCH 20/41] fix tests and format --- eth/downloader/downloader.go | 28 ++++++++++----------- eth/downloader/downloader_test.go | 2 +- eth/downloader/whitelist/service.go | 6 ++--- eth/downloader/whitelist/service_test.go | 32 ++++++++++++++++++++++++ eth/handler_eth_test.go | 22 ---------------- 5 files changed, 50 insertions(+), 40 deletions(-) create mode 100644 eth/downloader/whitelist/service_test.go diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go index ae00350464..209d039f90 100644 --- a/eth/downloader/downloader.go +++ b/eth/downloader/downloader.go @@ -218,19 +218,19 @@ func New(checkpoint uint64, stateDb ethdb.Database, mux *event.TypeMux, chain Bl lightchain = chain } dl := &Downloader{ - stateDB: stateDb, - mux: mux, - checkpoint: checkpoint, - queue: newQueue(blockCacheMaxItems, blockCacheInitialItems), - peers: newPeerSet(), - blockchain: chain, - lightchain: lightchain, - dropPeer: dropPeer, - headerProcCh: make(chan *headerTask, 1), - quitCh: make(chan struct{}), - SnapSyncer: snap.NewSyncer(stateDb), - stateSyncStart: make(chan *stateSync), - ChainValidator: whitelistService, + stateDB: stateDb, + mux: mux, + checkpoint: checkpoint, + queue: newQueue(blockCacheMaxItems, blockCacheInitialItems), + peers: newPeerSet(), + blockchain: chain, + lightchain: lightchain, + dropPeer: dropPeer, + headerProcCh: make(chan *headerTask, 1), + quitCh: make(chan struct{}), + SnapSyncer: snap.NewSyncer(stateDb), + stateSyncStart: make(chan *stateSync), + ChainValidator: whitelistService, } dl.skeleton = newSkeleton(stateDb, dl.peers, dropPeer, newBeaconBackfiller(dl, success)) @@ -792,7 +792,7 @@ func (d *Downloader) getFetchHeadersByNumber(p *peerConnection) func(number uint // the head links match), we do a binary search to find the common ancestor. func (d *Downloader) findAncestor(p *peerConnection, remoteHeader *types.Header) (uint64, error) { // Check the validity of chain to be downloaded - // TODO: we can use a mock and + // TODO: we can use a mock and if _, err := d.IsValidChain(remoteHeader, d.getFetchHeadersByNumber(p)); errors.Is(err, whitelist.ErrCheckpointMismatch) { return 0, err } diff --git a/eth/downloader/downloader_test.go b/eth/downloader/downloader_test.go index e2a3dca6be..fa6059b781 100644 --- a/eth/downloader/downloader_test.go +++ b/eth/downloader/downloader_test.go @@ -78,7 +78,7 @@ func newTester() *downloadTester { } // TODO: here we can inject a mock - tester.downloader = New(0, db, new(event.TypeMux), tester.chain, nil, tester.dropPeer, nil, whitelist.NewService()) + tester.downloader = New(0, db, new(event.TypeMux), tester.chain, nil, tester.dropPeer, nil, whitelist.NewService(10)) return tester } diff --git a/eth/downloader/whitelist/service.go b/eth/downloader/whitelist/service.go index 63851f3058..d79284bfad 100644 --- a/eth/downloader/whitelist/service.go +++ b/eth/downloader/whitelist/service.go @@ -15,17 +15,17 @@ var ( // Checkpoint whitelist type Service struct { - m sync.RWMutex + m sync.RWMutex checkpointWhitelist map[uint64]common.Hash // Checkpoint whitelist, populated by reaching out to heimdall checkpointOrder []uint64 // Checkpoint order, populated by reaching out to heimdall - maxCapacity uint + maxCapacity uint } func NewService(maxCapacity uint) *Service { return &Service{ checkpointWhitelist: make(map[uint64]common.Hash), checkpointOrder: []uint64{}, - maxCapacity: maxCapacity, + maxCapacity: maxCapacity, } } diff --git a/eth/downloader/whitelist/service_test.go b/eth/downloader/whitelist/service_test.go new file mode 100644 index 0000000000..dbd3f2f92e --- /dev/null +++ b/eth/downloader/whitelist/service_test.go @@ -0,0 +1,32 @@ +package whitelist + +import ( + "testing" + + "github.com/ethereum/go-ethereum/common" + "gotest.tools/assert" +) + +// NewMockService creates a new mock whitelist service +func NewMockService(maxCapacity uint) *Service { + return &Service{ + checkpointWhitelist: make(map[uint64]common.Hash), + checkpointOrder: []uint64{}, + maxCapacity: maxCapacity, + } +} + +// TestWhitelistCheckpoint checks the checkpoint whitelist map queue mechanism +func TestWhitelistCheckpoint(t *testing.T) { + t.Parallel() + + s := NewMockService(10) + for i := 0; i < 10; i++ { + s.EnqueueCheckpointWhitelist(uint64(i), common.Hash{}) + } + assert.Equal(t, len(s.GetCheckpointWhitelist()), 10, "expected 10 items in whitelist") + + s.EnqueueCheckpointWhitelist(11, common.Hash{}) + s.DequeueCheckpointWhitelist() + assert.Equal(t, len(s.GetCheckpointWhitelist()), 10, "expected 10 items in whitelist") +} diff --git a/eth/handler_eth_test.go b/eth/handler_eth_test.go index ec1329b059..7d5027ae77 100644 --- a/eth/handler_eth_test.go +++ b/eth/handler_eth_test.go @@ -39,7 +39,6 @@ import ( "github.com/ethereum/go-ethereum/p2p/enode" "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rlp" - "gotest.tools/assert" ) // testEthHandler is a mock event handler to listen for inbound network requests @@ -747,24 +746,3 @@ func testBroadcastMalformedBlock(t *testing.T, protocol uint) { } } } - -// TestWhitelistCheckpoint checks the checkpoint whitelist map queue mechanism -func TestWhitelistCheckpoint(t *testing.T) { - t.Parallel() - - testHandler := newTestHandler() - defer testHandler.close() - - ethHandler := (*ethHandler)(testHandler.handler) - for i := 0; i < 10; i++ { - ethHandler.downloader.EnqueueCheckpointWhitelist(uint64(i), common.Hash{}) - } - - assert.Equal(t, len(ethHandler.downloader.GetCheckpointWhitelist()), 10, "expected 10 items in whitelist") - - ethHandler.downloader.EnqueueCheckpointWhitelist(11, common.Hash{}) - ethHandler.downloader.DequeueCheckpointWhitelist() - - assert.Equal(t, len(ethHandler.downloader.GetCheckpointWhitelist()), 10, "expected 10 items in whitelist") - -} From bae9c4400b6756d3686772b7c0b2ef80f91530c8 Mon Sep 17 00:00:00 2001 From: Manav Darji Date: Thu, 12 May 2022 14:49:48 +0530 Subject: [PATCH 21/41] add unit tests for IsValidChain function --- eth/downloader/whitelist/service.go | 2 +- eth/downloader/whitelist/service_test.go | 64 ++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) diff --git a/eth/downloader/whitelist/service.go b/eth/downloader/whitelist/service.go index d79284bfad..7889429c87 100644 --- a/eth/downloader/whitelist/service.go +++ b/eth/downloader/whitelist/service.go @@ -38,7 +38,7 @@ func (w *Service) IsValidChain(remoteHeader *types.Header, fetchHeadersByNumber // Check for availaibility of the last checkpointed block. // This can be also be empty if our heimdall is not responsing // or we're running without it. - if len(w.checkpointWhitelist) <= 0 { + if len(w.checkpointWhitelist) == 0 { // worst case, we don't have the checkpoints in memory return true, nil } diff --git a/eth/downloader/whitelist/service_test.go b/eth/downloader/whitelist/service_test.go index dbd3f2f92e..db17af8ba8 100644 --- a/eth/downloader/whitelist/service_test.go +++ b/eth/downloader/whitelist/service_test.go @@ -1,9 +1,12 @@ package whitelist import ( + "errors" + "math/big" "testing" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" "gotest.tools/assert" ) @@ -30,3 +33,64 @@ func TestWhitelistCheckpoint(t *testing.T) { s.DequeueCheckpointWhitelist() assert.Equal(t, len(s.GetCheckpointWhitelist()), 10, "expected 10 items in whitelist") } + +// TestIsValidChain checks che IsValidChain function in isolation +// for different cases by providing a mock fetchHeadersByNumber function +func TestIsValidChain(t *testing.T) { + t.Parallel() + + s := NewMockService(10) + + // case1: no checkpoint whitelist, should consider the chain as valid + res, err := s.IsValidChain(nil, nil) + assert.Equal(t, res, true, "expected chain to be valid") + assert.NilError(t, err, "expected no error") + + // add checkpoint entries and mock fetchHeadersByNumber function + s.ProcessCheckpoint(uint64(0), common.Hash{}) + s.ProcessCheckpoint(uint64(1), common.Hash{}) + assert.Equal(t, len(s.GetCheckpointWhitelist()), 2, "expected 2 items in whitelist") + + // create a false function, returning absolutely nothing + falseFetchHeadersByNumber := func(number uint64, amount int, skip int, reverse bool) ([]*types.Header, []common.Hash, error) { + return nil, nil, nil + } + + // create a mock function, returning a the required header + fetchHeadersByNumber := func(number uint64, amount int, skip int, reverse bool) ([]*types.Header, []common.Hash, error) { + hash := common.Hash{} + header := types.Header{Number: big.NewInt(0)} + switch number { + case 0: + return []*types.Header{&header}, []common.Hash{hash}, nil + case 1: + header.Number = big.NewInt(1) + return []*types.Header{&header}, []common.Hash{hash}, nil + case 2: + header.Number = big.NewInt(1) // sending wrong header for misamatch + return []*types.Header{&header}, []common.Hash{hash}, nil + default: + return nil, nil, errors.New("invalid number") + } + } + + // case2: false fetchHeadersByNumber function provided, should consider the chain as valid + res, err = s.IsValidChain(nil, falseFetchHeadersByNumber) + assert.Equal(t, res, true, "expected chain to be valid") + assert.NilError(t, err, "expected no error") + + // case3: correct fetchHeadersByNumber function provided, should consider the chain as valid + res, err = s.IsValidChain(nil, fetchHeadersByNumber) + assert.Equal(t, res, true, "expected chain to be valid") + assert.NilError(t, err, "expected no error") + + // add one more checkpoint whitelist entry + s.ProcessCheckpoint(uint64(2), common.Hash{}) + assert.Equal(t, len(s.GetCheckpointWhitelist()), 3, "expected 3 items in whitelist") + + // case4: correct fetchHeadersByNumber function provided with wrong header + // for block number 2. Should consider the chain as invalid and throw an error + res, err = s.IsValidChain(nil, fetchHeadersByNumber) + assert.Equal(t, res, false, "expected chain to be invalid") + assert.Equal(t, err, ErrCheckpointMismatch, "expected checkpoint mismatch error") +} From 3dd7f59531e875ca3f22c20d30a0933730fe311a Mon Sep 17 00:00:00 2001 From: Evgeny Danienko <6655321@bk.ru> Date: Tue, 17 May 2022 19:23:57 +0300 Subject: [PATCH 22/41] more tests --- eth/downloader/downloader.go | 17 ++- eth/downloader/downloader_test.go | 175 ++++++++++++++++++----- eth/downloader/whitelist/service.go | 39 ++--- eth/downloader/whitelist/service_test.go | 43 +++--- 4 files changed, 201 insertions(+), 73 deletions(-) diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go index 209d039f90..4420ca2c1b 100644 --- a/eth/downloader/downloader.go +++ b/eth/downloader/downloader.go @@ -342,13 +342,11 @@ func (d *Downloader) LegacySync(id string, head common.Hash, td, ttd *big.Int, m case nil, errBusy, errCanceled: return err } - if errors.Is(err, whitelist.ErrCheckpointMismatch) { - // TODO: what better can be done here? - log.Warn("Mismatch in last checkpointed block", "peer", id, "err", err) - } + if errors.Is(err, errInvalidChain) || errors.Is(err, errBadPeer) || errors.Is(err, errTimeout) || errors.Is(err, errStallingPeer) || errors.Is(err, errUnsyncedPeer) || errors.Is(err, errEmptyHeaderSet) || - errors.Is(err, errPeersUnavailable) || errors.Is(err, errTooOld) || errors.Is(err, errInvalidAncestor) { + errors.Is(err, errPeersUnavailable) || errors.Is(err, errTooOld) || errors.Is(err, errInvalidAncestor) || + errors.Is(err, whitelist.ErrCheckpointMismatch) { log.Warn("Synchronisation failed, dropping peer", "peer", id, "err", err) if d.dropPeer == nil { // The dropPeer method is nil when `--copydb` is used for a local copy. @@ -359,10 +357,17 @@ func (d *Downloader) LegacySync(id string, head common.Hash, td, ttd *big.Int, m } return err } + if errors.Is(err, ErrMergeTransition) { return err // This is an expected fault, don't keep printing it in a spin-loop } - log.Warn("Synchronisation failed, retrying", "err", err) + + if errors.Is(err, whitelist.ErrNoRemoteCheckoint) { + log.Warn("Doesn't have remote checkpoint yet", "peer", id, "err", err) + } + + log.Warn("Synchronisation failed, retrying", "peer", id, "err", err) + return err } diff --git a/eth/downloader/downloader_test.go b/eth/downloader/downloader_test.go index fa6059b781..048e5fa190 100644 --- a/eth/downloader/downloader_test.go +++ b/eth/downloader/downloader_test.go @@ -82,6 +82,10 @@ func newTester() *downloadTester { return tester } +func (dl *downloadTester) setWhitelist(w ChainValidator) { + dl.downloader.ChainValidator = w +} + // terminate aborts any operations on the embedded downloader and releases all // held resources. func (dl *downloadTester) terminate() { @@ -158,7 +162,7 @@ func (dlp *downloadTesterPeer) Head() (common.Hash, *big.Int) { } func unmarshalRlpHeaders(rlpdata []rlp.RawValue) []*types.Header { - var headers = make([]*types.Header, len(rlpdata)) + headers := make([]*types.Header, len(rlpdata)) for i, data := range rlpdata { var h types.Header if err := rlp.DecodeBytes(data, &h); err != nil { @@ -620,9 +624,11 @@ func testBoundedForkedSync(t *testing.T, protocol uint, mode SyncMode) { func TestBoundedHeavyForkedSync66Full(t *testing.T) { testBoundedHeavyForkedSync(t, eth.ETH66, FullSync) } + func TestBoundedHeavyForkedSync66Snap(t *testing.T) { testBoundedHeavyForkedSync(t, eth.ETH66, SnapSync) } + func TestBoundedHeavyForkedSync66Light(t *testing.T) { testBoundedHeavyForkedSync(t, eth.ETH66, LightSync) } @@ -714,7 +720,7 @@ func testMultiProtoSync(t *testing.T, protocol uint, mode SyncMode) { // Create peers of every type tester.newPeer("peer 66", eth.ETH66, chain.blocks[1:]) - //tester.newPeer("peer 65", eth.ETH67, chain.blocks[1:) + // tester.newPeer("peer 65", eth.ETH67, chain.blocks[1:) // Synchronise with the requested peer and make sure all blocks were retrieved if err := tester.sync(fmt.Sprintf("peer %d", protocol), nil, mode); err != nil { @@ -916,9 +922,11 @@ func testInvalidHeaderRollback(t *testing.T, protocol uint, mode SyncMode) { func TestHighTDStarvationAttack66Full(t *testing.T) { testHighTDStarvationAttack(t, eth.ETH66, FullSync) } + func TestHighTDStarvationAttack66Snap(t *testing.T) { testHighTDStarvationAttack(t, eth.ETH66, SnapSync) } + func TestHighTDStarvationAttack66Light(t *testing.T) { testHighTDStarvationAttack(t, eth.ETH66, LightSync) } @@ -1271,36 +1279,45 @@ func TestRemoteHeaderRequestSpan(t *testing.T) { expected []int }{ // Remote is way higher. We should ask for the remote head and go backwards - {1500, 1000, + { + 1500, 1000, []int{1323, 1339, 1355, 1371, 1387, 1403, 1419, 1435, 1451, 1467, 1483, 1499}, }, - {15000, 13006, + { + 15000, 13006, []int{14823, 14839, 14855, 14871, 14887, 14903, 14919, 14935, 14951, 14967, 14983, 14999}, }, // Remote is pretty close to us. We don't have to fetch as many - {1200, 1150, + { + 1200, 1150, []int{1149, 1154, 1159, 1164, 1169, 1174, 1179, 1184, 1189, 1194, 1199}, }, // Remote is equal to us (so on a fork with higher td) // We should get the closest couple of ancestors - {1500, 1500, + { + 1500, 1500, []int{1497, 1499}, }, // We're higher than the remote! Odd - {1000, 1500, + { + 1000, 1500, []int{997, 999}, }, // Check some weird edgecases that it behaves somewhat rationally - {0, 1500, + { + 0, 1500, []int{0, 2}, }, - {6000000, 0, + { + 6000000, 0, []int{5999823, 5999839, 5999855, 5999871, 5999887, 5999903, 5999919, 5999935, 5999951, 5999967, 5999983, 5999999}, }, - {0, 0, + { + 0, 0, []int{0, 2}, }, } + reqs := func(from, count, span int) []int { var r []int num := from @@ -1310,32 +1327,38 @@ func TestRemoteHeaderRequestSpan(t *testing.T) { } return r } - for i, tt := range testCases { - from, count, span, max := calculateRequestSpan(tt.remoteHeight, tt.localHeight) - data := reqs(int(from), count, span) - if max != uint64(data[len(data)-1]) { - t.Errorf("test %d: wrong last value %d != %d", i, data[len(data)-1], max) - } - failed := false - if len(data) != len(tt.expected) { - failed = true - t.Errorf("test %d: length wrong, expected %d got %d", i, len(tt.expected), len(data)) - } else { - for j, n := range data { - if n != tt.expected[j] { - failed = true - break + for i, tt := range testCases { + i := i + tt := tt + + t.Run("", func(t *testing.T) { + from, count, span, max := calculateRequestSpan(tt.remoteHeight, tt.localHeight) + data := reqs(int(from), count, span) + + if max != uint64(data[len(data)-1]) { + t.Errorf("test %d: wrong last value %d != %d", i, data[len(data)-1], max) + } + failed := false + if len(data) != len(tt.expected) { + failed = true + t.Errorf("test %d: length wrong, expected %d got %d", i, len(tt.expected), len(data)) + } else { + for j, n := range data { + if n != tt.expected[j] { + failed = true + break + } } } - } - if failed { - res := strings.Replace(fmt.Sprint(data), " ", ",", -1) - exp := strings.Replace(fmt.Sprint(tt.expected), " ", ",", -1) - t.Logf("got: %v\n", res) - t.Logf("exp: %v\n", exp) - t.Errorf("test %d: wrong values", i) - } + if failed { + res := strings.Replace(fmt.Sprint(data), " ", ",", -1) + exp := strings.Replace(fmt.Sprint(tt.expected), " ", ",", -1) + t.Logf("got: %v\n", res) + t.Logf("exp: %v\n", exp) + t.Errorf("test %d: wrong values", i) + } + }) } } @@ -1371,3 +1394,89 @@ func testCheckpointEnforcement(t *testing.T, protocol uint, mode SyncMode) { assertOwnChain(t, tester, len(chain.blocks)) } } + +type whitelistFake struct { + err error + res bool +} + +func newWhitelistFake(res bool, err error) *whitelistFake { + return &whitelistFake{err, res} +} + +func (w *whitelistFake) IsValidChain(remoteHeader *types.Header, fetchHeadersByNumber func(number uint64, amount int, skip int, reverse bool) ([]*types.Header, []common.Hash, error)) (bool, error) { + return w.res, w.err +} + +func (w *whitelistFake) ProcessCheckpoint(endBlockNum uint64, endBlockHash common.Hash) {} + +func TestFakedSyncProgress66Whitelist(t *testing.T) { + protocol := uint(eth.ETH66) + mode := FullSync + tester := newTester() + defer tester.terminate() + + chain := testChainBase.shorten(blockCacheMaxItems - 15) + + // Set a sync init hook to catch progress changes + starting := make(chan struct{}) + progress := make(chan struct{}) + tester.downloader.syncInitHook = func(_, _ uint64) { + starting <- struct{}{} + <-progress + } + checkProgress(t, tester.downloader, "pristine", ethereum.SyncProgress{}) + + // Create and sync with an attacker that promises a higher chain than available. + attacker := tester.newPeer("attack", protocol, chain.blocks[1:]) + numMissing := 5 + for i := len(chain.blocks) - 2; i > len(chain.blocks)-numMissing; i-- { + attacker.withholdHeaders[chain.blocks[i].Hash()] = struct{}{} + } + attacker.dl.setWhitelist(newWhitelistFake(false, whitelist.ErrCheckpointMismatch)) + + pending := new(sync.WaitGroup) + pending.Add(1) + go func() { + defer pending.Done() + if err := tester.sync("attack", nil, mode); err == nil { + panic("succeeded attacker synchronisation") + } + }() + <-starting + + checkProgress(t, tester.downloader, "initial", ethereum.SyncProgress{ + HighestBlock: uint64(len(chain.blocks) - 1), + }) + progress <- struct{}{} + pending.Wait() + + afterFailedSync := tester.downloader.Progress() + + // Synchronise with a good peer and check that the progress height has been reduced to + // the true value. + validChain := chain.shorten(len(chain.blocks) - numMissing) + tester.newPeer("valid", protocol, validChain.blocks[1:]) + pending.Add(1) + + go func() { + defer pending.Done() + if err := tester.sync("valid", nil, mode); err != nil { + panic(fmt.Sprintf("failed to synchronise blocks: %v", err)) + } + }() + <-starting + + checkProgress(t, tester.downloader, "completing", ethereum.SyncProgress{ + CurrentBlock: afterFailedSync.CurrentBlock, + HighestBlock: uint64(len(validChain.blocks) - 1), + }) + // Check final progress after successful sync. + progress <- struct{}{} + pending.Wait() + + checkProgress(t, tester.downloader, "final", ethereum.SyncProgress{ + CurrentBlock: uint64(len(validChain.blocks) - 1), + HighestBlock: uint64(len(validChain.blocks) - 1), + }) +} diff --git a/eth/downloader/whitelist/service.go b/eth/downloader/whitelist/service.go index 7889429c87..4e23c4095b 100644 --- a/eth/downloader/whitelist/service.go +++ b/eth/downloader/whitelist/service.go @@ -2,6 +2,7 @@ package whitelist import ( "errors" + "fmt" "sync" "github.com/ethereum/go-ethereum/common" @@ -9,10 +10,6 @@ import ( "github.com/ethereum/go-ethereum/log" ) -var ( - ErrCheckpointMismatch = errors.New("checkpoint mismatch") -) - // Checkpoint whitelist type Service struct { m sync.RWMutex @@ -29,6 +26,11 @@ func NewService(maxCapacity uint) *Service { } } +var ( + ErrCheckpointMismatch = errors.New("checkpoint mismatch") + ErrNoRemoteCheckoint = errors.New("remote peer doesn't have a checkoint") +) + // IsValidChain checks if the chain we're about to receive from this peer is valid or not // in terms of reorgs. We won't reorg beyond the last bor checkpoint submitted to mainchain. func (w *Service) IsValidChain(remoteHeader *types.Header, fetchHeadersByNumber func(number uint64, amount int, skip int, reverse bool) ([]*types.Header, []common.Hash, error)) (bool, error) { @@ -36,7 +38,7 @@ func (w *Service) IsValidChain(remoteHeader *types.Header, fetchHeadersByNumber // we're storing in `checkpointWhitelist` with the peer's block. // Check for availaibility of the last checkpointed block. - // This can be also be empty if our heimdall is not responsing + // This can be also be empty if our heimdall is not responding // or we're running without it. if len(w.checkpointWhitelist) == 0 { // worst case, we don't have the checkpoints in memory @@ -49,9 +51,11 @@ func (w *Service) IsValidChain(remoteHeader *types.Header, fetchHeadersByNumber // todo: we can extract this as an interface and mock as well or just test IsValidChain in isolation from downloader passing fake fetchHeadersByNumber functions headers, hashes, err := fetchHeadersByNumber(lastCheckpointBlockNum, 1, 0, false) - if err != nil || len(headers) == 0 { - // TODO: what better can be done here? - return true, nil + if err != nil { + return false, fmt.Errorf("%w: last checkpoint %d, err %v", ErrNoRemoteCheckoint, lastCheckpointBlockNum, err) + } + if len(headers) == 0 { + return true, fmt.Errorf("%w: last checkpoint %d", ErrNoRemoteCheckoint, lastCheckpointBlockNum) } reqBlockNum := headers[0].Number.Uint64() @@ -69,16 +73,16 @@ func (w *Service) ProcessCheckpoint(endBlockNum uint64, endBlockHash common.Hash w.m.Lock() defer w.m.Unlock() - w.EnqueueCheckpointWhitelist(endBlockNum, endBlockHash) + w.enqueueCheckpointWhitelist(endBlockNum, endBlockHash) // If size of checkpoint whitelist map is greater than 10, remove the oldest entry. - if len(w.GetCheckpointWhitelist()) > int(w.maxCapacity) { - w.DequeueCheckpointWhitelist() + if w.length() > int(w.maxCapacity) { + w.dequeueCheckpointWhitelist() } } // PurgeWhitelistMap purges data from checkpoint whitelist map -func (w *Service) PurgeWhitelistMap() error { +func (w *Service) purgeWhitelistMap() error { for k := range w.checkpointWhitelist { delete(w.checkpointWhitelist, k) } @@ -86,7 +90,7 @@ func (w *Service) PurgeWhitelistMap() error { } // EnqueueWhitelistBlock enqueues blockNumber, blockHash to the checkpoint whitelist map -func (w *Service) EnqueueCheckpointWhitelist(key uint64, val common.Hash) { +func (w *Service) enqueueCheckpointWhitelist(key uint64, val common.Hash) { if _, ok := w.checkpointWhitelist[key]; !ok { log.Debug("Enqueing new checkpoint whitelist", "block number", key, "block hash", val) @@ -96,15 +100,16 @@ func (w *Service) EnqueueCheckpointWhitelist(key uint64, val common.Hash) { } // DequeueWhitelistBlock dequeues block, blockhash from the checkpoint whitelist map -func (w *Service) DequeueCheckpointWhitelist() { +func (w *Service) dequeueCheckpointWhitelist() { if len(w.checkpointOrder) > 0 { log.Debug("Dequeing checkpoint whitelist", "block number", w.checkpointOrder[0], "block hash", w.checkpointWhitelist[w.checkpointOrder[0]]) + delete(w.checkpointWhitelist, w.checkpointOrder[0]) w.checkpointOrder = w.checkpointOrder[1:] } } -// GetCheckpointWhitelist returns the checkpoints whitelisted. -func (w *Service) GetCheckpointWhitelist() map[uint64]common.Hash { - return w.checkpointWhitelist +// length returns the len of the whitelist. +func (w *Service) length() int { + return len(w.checkpointWhitelist) } diff --git a/eth/downloader/whitelist/service_test.go b/eth/downloader/whitelist/service_test.go index db17af8ba8..de1e902e99 100644 --- a/eth/downloader/whitelist/service_test.go +++ b/eth/downloader/whitelist/service_test.go @@ -25,13 +25,13 @@ func TestWhitelistCheckpoint(t *testing.T) { s := NewMockService(10) for i := 0; i < 10; i++ { - s.EnqueueCheckpointWhitelist(uint64(i), common.Hash{}) + s.enqueueCheckpointWhitelist(uint64(i), common.Hash{}) } - assert.Equal(t, len(s.GetCheckpointWhitelist()), 10, "expected 10 items in whitelist") + assert.Equal(t, s.length(), 10, "expected 10 items in whitelist") - s.EnqueueCheckpointWhitelist(11, common.Hash{}) - s.DequeueCheckpointWhitelist() - assert.Equal(t, len(s.GetCheckpointWhitelist()), 10, "expected 10 items in whitelist") + s.enqueueCheckpointWhitelist(11, common.Hash{}) + s.dequeueCheckpointWhitelist() + assert.Equal(t, s.length(), 10, "expected 10 items in whitelist") } // TestIsValidChain checks che IsValidChain function in isolation @@ -43,23 +43,38 @@ func TestIsValidChain(t *testing.T) { // case1: no checkpoint whitelist, should consider the chain as valid res, err := s.IsValidChain(nil, nil) - assert.Equal(t, res, true, "expected chain to be valid") assert.NilError(t, err, "expected no error") + assert.Equal(t, res, true, "expected chain to be valid") // add checkpoint entries and mock fetchHeadersByNumber function s.ProcessCheckpoint(uint64(0), common.Hash{}) s.ProcessCheckpoint(uint64(1), common.Hash{}) - assert.Equal(t, len(s.GetCheckpointWhitelist()), 2, "expected 2 items in whitelist") + + assert.Equal(t, s.length(), 2, "expected 2 items in whitelist") // create a false function, returning absolutely nothing falseFetchHeadersByNumber := func(number uint64, amount int, skip int, reverse bool) ([]*types.Header, []common.Hash, error) { return nil, nil, nil } + // case2: false fetchHeadersByNumber function provided, should consider the chain as valid + res, err = s.IsValidChain(nil, falseFetchHeadersByNumber) + if err == nil { + t.Fatal("expected error, got nil") + } + + if !errors.Is(err, ErrNoRemoteCheckoint) { + t.Fatalf("expected error ErrNoRemoteCheckoint, got %v", err) + } + + assert.Equal(t, res, true, "expected chain to be valid") + + // case3: correct fetchHeadersByNumber function provided, should consider the chain as valid // create a mock function, returning a the required header - fetchHeadersByNumber := func(number uint64, amount int, skip int, reverse bool) ([]*types.Header, []common.Hash, error) { + fetchHeadersByNumber := func(number uint64, _ int, _ int, _ bool) ([]*types.Header, []common.Hash, error) { hash := common.Hash{} header := types.Header{Number: big.NewInt(0)} + switch number { case 0: return []*types.Header{&header}, []common.Hash{hash}, nil @@ -74,23 +89,17 @@ func TestIsValidChain(t *testing.T) { } } - // case2: false fetchHeadersByNumber function provided, should consider the chain as valid - res, err = s.IsValidChain(nil, falseFetchHeadersByNumber) - assert.Equal(t, res, true, "expected chain to be valid") - assert.NilError(t, err, "expected no error") - - // case3: correct fetchHeadersByNumber function provided, should consider the chain as valid res, err = s.IsValidChain(nil, fetchHeadersByNumber) - assert.Equal(t, res, true, "expected chain to be valid") assert.NilError(t, err, "expected no error") + assert.Equal(t, res, true, "expected chain to be valid") // add one more checkpoint whitelist entry s.ProcessCheckpoint(uint64(2), common.Hash{}) - assert.Equal(t, len(s.GetCheckpointWhitelist()), 3, "expected 3 items in whitelist") + assert.Equal(t, s.length(), 3, "expected 3 items in whitelist") // case4: correct fetchHeadersByNumber function provided with wrong header // for block number 2. Should consider the chain as invalid and throw an error res, err = s.IsValidChain(nil, fetchHeadersByNumber) - assert.Equal(t, res, false, "expected chain to be invalid") assert.Equal(t, err, ErrCheckpointMismatch, "expected checkpoint mismatch error") + assert.Equal(t, res, false, "expected chain to be invalid") } From af2b5e06b097e314674531e0c08ade53384c9957 Mon Sep 17 00:00:00 2001 From: Evgeny Danienko <6655321@bk.ru> Date: Tue, 17 May 2022 19:24:16 +0300 Subject: [PATCH 23/41] wip --- eth/downloader/downloader_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eth/downloader/downloader_test.go b/eth/downloader/downloader_test.go index 048e5fa190..7250a656f4 100644 --- a/eth/downloader/downloader_test.go +++ b/eth/downloader/downloader_test.go @@ -1425,7 +1425,7 @@ func TestFakedSyncProgress66Whitelist(t *testing.T) { starting <- struct{}{} <-progress } - checkProgress(t, tester.downloader, "pristine", ethereum.SyncProgress{}) + checkProgress(t, tester.downloader, "pristine", ethereum.SyncProgress{}) // FIXME: WIP deadlock // Create and sync with an attacker that promises a higher chain than available. attacker := tester.newPeer("attack", protocol, chain.blocks[1:]) From b1b0c0e2fb79184136453166427ef74a0378c894 Mon Sep 17 00:00:00 2001 From: Evgeny Danienko <6655321@bk.ru> Date: Wed, 18 May 2022 17:21:51 +0300 Subject: [PATCH 24/41] test ErrCheckpointMismatch --- eth/downloader/downloader_test.go | 72 ++++--------------------------- eth/downloader/queue_test.go | 10 ++++- 2 files changed, 17 insertions(+), 65 deletions(-) diff --git a/eth/downloader/downloader_test.go b/eth/downloader/downloader_test.go index 7250a656f4..9d847e382e 100644 --- a/eth/downloader/downloader_test.go +++ b/eth/downloader/downloader_test.go @@ -77,7 +77,6 @@ func newTester() *downloadTester { peers: make(map[string]*downloadTesterPeer), } - // TODO: here we can inject a mock tester.downloader = New(0, db, new(event.TypeMux), tester.chain, nil, tester.dropPeer, nil, whitelist.NewService(10)) return tester } @@ -1410,73 +1409,20 @@ func (w *whitelistFake) IsValidChain(remoteHeader *types.Header, fetchHeadersByN func (w *whitelistFake) ProcessCheckpoint(endBlockNum uint64, endBlockHash common.Hash) {} -func TestFakedSyncProgress66Whitelist(t *testing.T) { +func TestFakedSyncProgress66WhitelistMismatch(t *testing.T) { protocol := uint(eth.ETH66) mode := FullSync + tester := newTester() + tester.downloader.ChainValidator = newWhitelistFake(true, whitelist.ErrCheckpointMismatch) + defer tester.terminate() - chain := testChainBase.shorten(blockCacheMaxItems - 15) + chainA := testChainForkLightA.blocks + tester.newPeer("light", protocol, chainA[1:]) - // Set a sync init hook to catch progress changes - starting := make(chan struct{}) - progress := make(chan struct{}) - tester.downloader.syncInitHook = func(_, _ uint64) { - starting <- struct{}{} - <-progress + // Synchronise with the peer and make sure all blocks were retrieved + if err := tester.sync("light", nil, mode); err == nil { + t.Fatal("succeeded attacker synchronisation") } - checkProgress(t, tester.downloader, "pristine", ethereum.SyncProgress{}) // FIXME: WIP deadlock - - // Create and sync with an attacker that promises a higher chain than available. - attacker := tester.newPeer("attack", protocol, chain.blocks[1:]) - numMissing := 5 - for i := len(chain.blocks) - 2; i > len(chain.blocks)-numMissing; i-- { - attacker.withholdHeaders[chain.blocks[i].Hash()] = struct{}{} - } - attacker.dl.setWhitelist(newWhitelistFake(false, whitelist.ErrCheckpointMismatch)) - - pending := new(sync.WaitGroup) - pending.Add(1) - go func() { - defer pending.Done() - if err := tester.sync("attack", nil, mode); err == nil { - panic("succeeded attacker synchronisation") - } - }() - <-starting - - checkProgress(t, tester.downloader, "initial", ethereum.SyncProgress{ - HighestBlock: uint64(len(chain.blocks) - 1), - }) - progress <- struct{}{} - pending.Wait() - - afterFailedSync := tester.downloader.Progress() - - // Synchronise with a good peer and check that the progress height has been reduced to - // the true value. - validChain := chain.shorten(len(chain.blocks) - numMissing) - tester.newPeer("valid", protocol, validChain.blocks[1:]) - pending.Add(1) - - go func() { - defer pending.Done() - if err := tester.sync("valid", nil, mode); err != nil { - panic(fmt.Sprintf("failed to synchronise blocks: %v", err)) - } - }() - <-starting - - checkProgress(t, tester.downloader, "completing", ethereum.SyncProgress{ - CurrentBlock: afterFailedSync.CurrentBlock, - HighestBlock: uint64(len(validChain.blocks) - 1), - }) - // Check final progress after successful sync. - progress <- struct{}{} - pending.Wait() - - checkProgress(t, tester.downloader, "final", ethereum.SyncProgress{ - CurrentBlock: uint64(len(validChain.blocks) - 1), - HighestBlock: uint64(len(validChain.blocks) - 1), - }) } diff --git a/eth/downloader/queue_test.go b/eth/downloader/queue_test.go index f729def671..428e3cb706 100644 --- a/eth/downloader/queue_test.go +++ b/eth/downloader/queue_test.go @@ -64,8 +64,11 @@ type chainData struct { offset int } -var chain *chainData -var emptyChain *chainData +var ( + chain *chainData + chainLongerFork *chainData + emptyChain *chainData +) func init() { // Create a chain of blocks to import @@ -75,6 +78,9 @@ func init() { blocks, _ = makeChain(targetBlocks, 0, genesis, true) emptyChain = &chainData{blocks, 0} + + chainLongerForkBlocks, _ := makeChain(1024, 0, blocks[len(blocks)-1], false) + chainLongerFork = &chainData{chainLongerForkBlocks, 0} } func (chain *chainData) headers() []*types.Header { From fb46dd8cdf3e5c2f98dd373ab721fa4c867dea75 Mon Sep 17 00:00:00 2001 From: Evgeny Danienko <6655321@bk.ru> Date: Thu, 19 May 2022 10:23:34 +0300 Subject: [PATCH 25/41] minor fixes --- eth/backend.go | 11 +++++++++-- eth/handler_bor.go | 12 +++++++----- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/eth/backend.go b/eth/backend.go index 727525da55..eb4223bf6a 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -586,10 +586,12 @@ func (s *Ethereum) Start() error { } maxPeers -= s.config.LightPeers } + // Start the networking layer and the light server if requested s.handler.Start(maxPeers) go s.startCheckpointWhitelistService() + return nil } @@ -600,7 +602,12 @@ func (s *Ethereum) startCheckpointWhitelistService() { ticker := time.NewTicker(every) defer ticker.Stop() -Loop: + // first run the checkpoint whitelist + err := s.handleWhitelistCheckpoint() + if err != nil { + log.Warn("the first run", "err", err) + } + for { select { case <-ticker.C: @@ -609,7 +616,7 @@ Loop: log.Warn(err.Error()) } case <-s.closeCh: - break Loop + return } } } diff --git a/eth/handler_bor.go b/eth/handler_bor.go index b87c07f551..02f9918f50 100644 --- a/eth/handler_bor.go +++ b/eth/handler_bor.go @@ -3,6 +3,7 @@ package eth import ( "context" "fmt" + "errors" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" @@ -18,32 +19,33 @@ func (h *ethHandler) fetchWhitelistCheckpoint() (uint64, common.Hash, error) { checkpoint, err := h.chain.Engine().(*bor.Bor).HeimdallClient.FetchLatestCheckpoint() if err != nil { log.Debug("Failed to fetch latest checkpoint for whitelisting") - return 0, common.Hash{}, fmt.Errorf("failed to fetch latest checkpoint") + return 0, common.Hash{}, errors.New("failed to fetch latest checkpoint") } // check if we have the checkpoint blocks head := h.ethAPI.BlockNumber() if head < hexutil.Uint64(checkpoint.EndBlock.Uint64()) { log.Debug("Head block behing checkpoint block", "head", head, "checkpoint end block", checkpoint.EndBlock) - return 0, common.Hash{}, fmt.Errorf("missing checkpoint blocks") + return 0, common.Hash{}, errors.New("missing checkpoint blocks") } // verify the root hash of checkpoint roothash, err := h.ethAPI.GetRootHash(context.Background(), checkpoint.StartBlock.Uint64(), checkpoint.EndBlock.Uint64()) if err != nil { log.Debug("Failed to get root hash of checkpoint while whitelisting") - return 0, common.Hash{}, fmt.Errorf("failed to get local root hash") + return 0, common.Hash{}, errors.New("failed to get local root hash") } + if roothash != checkpoint.RootHash.String()[2:] { log.Warn("Checkpoint root hash mismatch while whitelisting", "expected", checkpoint.RootHash.String()[2:], "got", roothash) - return 0, common.Hash{}, fmt.Errorf("checkpoint roothash mismatch") + return 0, common.Hash{}, errors.New("checkpoint roothash mismatch") } // fetch the end checkpoint block hash block, err := h.ethAPI.GetBlockByNumber(context.Background(), rpc.BlockNumber(checkpoint.EndBlock.Uint64()), false) if err != nil { log.Debug("Failed to get end block hash of checkpoint while whitelisting") - return 0, common.Hash{}, fmt.Errorf("failed to get end block") + return 0, common.Hash{}, errors.New("failed to get end block") } hash := fmt.Sprintf("%v", block["hash"]) return checkpoint.EndBlock.Uint64(), common.HexToHash(hash), nil From d4938065c1f21960f5cfad7e89cdaf09cc1e39b8 Mon Sep 17 00:00:00 2001 From: Evgeny Danienko <6655321@bk.ru> Date: Thu, 19 May 2022 14:15:35 +0300 Subject: [PATCH 26/41] fix test --- tests/bor/bor_test.go | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/tests/bor/bor_test.go b/tests/bor/bor_test.go index 7d0ca9372b..460b296f31 100644 --- a/tests/bor/bor_test.go +++ b/tests/bor/bor_test.go @@ -32,10 +32,14 @@ var ( func TestInsertingSpanSizeBlocks(t *testing.T) { init := buildEthereumInstance(t, rawdb.NewMemoryDatabase()) + chain := init.ethereum.BlockChain() engine := init.ethereum.Engine() + _bor := engine.(*bor.Bor) + h, heimdallSpan := getMockedHeimdallClient(t) + _bor.SetHeimdallClient(h) db := init.ethereum.ChainDb() @@ -70,6 +74,7 @@ func TestFetchStateSyncEvents(t *testing.T) { // A. Insert blocks for 0th sprint db := init.ethereum.ChainDb() block := init.genesis.ToBlock(db) + // Insert sprintSize # of blocks so that span is fetched at the start of a new sprint for i := uint64(1); i < sprintSize; i++ { block = buildNextBlock(t, _bor, chain, block, nil, init.genesis.Config.Bor) @@ -77,10 +82,8 @@ func TestFetchStateSyncEvents(t *testing.T) { } // B. Before inserting 1st block of the next sprint, mock heimdall deps - // B.1 Mock /bor/span/1 - res, _ := loadSpanFromFile(t) - h := &mocks.IHeimdallClient{} - h.On("FetchWithRetry", spanPath, "").Return(res, nil) + + // B.1 /bor/span/1 // B.2 Mock State Sync events fromID := uint64(1) @@ -91,6 +94,12 @@ func TestFetchStateSyncEvents(t *testing.T) { sample := getSampleEventRecord(t) sample.Time = time.Unix(to-int64(eventCount+1), 0) // last event.Time will be just < to eventRecords := generateFakeStateSyncEvents(sample, eventCount) + + // Mock + res, _ := loadSpanFromFile(t) + h := &mocks.IHeimdallClient{} + h.On("FetchWithRetry", spanPath, "").Return(res, nil) + h.On("FetchLatestCheckpoint").Maybe().Return(mock.Anything, nil) h.On("FetchStateSyncEvents", fromID, to).Return(eventRecords, nil) _bor.SetHeimdallClient(h) @@ -111,6 +120,7 @@ func TestFetchStateSyncEvents_2(t *testing.T) { res, _ := loadSpanFromFile(t) h := &mocks.IHeimdallClient{} h.On("FetchWithRetry", spanPath, "").Return(res, nil) + h.On("FetchLatestCheckpoint").Maybe().Return(mock.Anything, nil) // Mock State Sync events // at # sprintSize, events are fetched for [fromID, (block-sprint).Time) @@ -128,6 +138,7 @@ func TestFetchStateSyncEvents_2(t *testing.T) { buildStateEvent(sample, 4, 5), // id = 4, time = 5 buildStateEvent(sample, 6, 4), // id = 6, time = 4 } + h.On("FetchStateSyncEvents", fromID, to).Return(eventRecords, nil) _bor.SetHeimdallClient(h) @@ -138,9 +149,12 @@ func TestFetchStateSyncEvents_2(t *testing.T) { block = buildNextBlock(t, _bor, chain, block, nil, init.genesis.Config.Bor) insertNewBlock(t, chain, block) } + assert.True(t, h.AssertCalled(t, "FetchWithRetry", spanPath, "")) assert.True(t, h.AssertCalled(t, "FetchStateSyncEvents", fromID, to)) + lastStateID, _ := _bor.GenesisContractsClient.LastStateId(sprintSize) + // state 6 was not written assert.Equal(t, uint64(4), lastStateID.Uint64()) @@ -151,11 +165,13 @@ func TestFetchStateSyncEvents_2(t *testing.T) { buildStateEvent(sample, 5, 7), buildStateEvent(sample, 6, 4), } + h.On("FetchStateSyncEvents", fromID, to).Return(eventRecords, nil) for i := sprintSize + 1; i <= spanSize; i++ { block = buildNextBlock(t, _bor, chain, block, nil, init.genesis.Config.Bor) insertNewBlock(t, chain, block) } + assert.True(t, h.AssertCalled(t, "FetchStateSyncEvents", fromID, to)) lastStateID, _ = _bor.GenesisContractsClient.LastStateId(spanSize) assert.Equal(t, uint64(6), lastStateID.Uint64()) @@ -165,6 +181,7 @@ func TestOutOfTurnSigning(t *testing.T) { init := buildEthereumInstance(t, rawdb.NewMemoryDatabase()) chain := init.ethereum.BlockChain() engine := init.ethereum.Engine() + _bor := engine.(*bor.Bor) h, _ := getMockedHeimdallClient(t) _bor.SetHeimdallClient(h) @@ -195,8 +212,10 @@ func TestOutOfTurnSigning(t *testing.T) { header := block.Header() header.Time += (bor.CalcProducerDelay(header.Number.Uint64(), expectedSuccessionNumber, init.genesis.Config.Bor) - bor.CalcProducerDelay(header.Number.Uint64(), 0, init.genesis.Config.Bor)) + sign(t, header, signerKey, init.genesis.Config.Bor) block = types.NewBlockWithHeader(header) + _, err = chain.InsertChain([]*types.Block{block}) assert.Equal(t, *err.(*bor.WrongDifficultyError), @@ -205,6 +224,7 @@ func TestOutOfTurnSigning(t *testing.T) { header.Difficulty = new(big.Int).SetUint64(expectedDifficulty) sign(t, header, signerKey, init.genesis.Config.Bor) block = types.NewBlockWithHeader(header) + _, err = chain.InsertChain([]*types.Block{block}) assert.Nil(t, err) } @@ -213,6 +233,7 @@ func TestSignerNotFound(t *testing.T) { init := buildEthereumInstance(t, rawdb.NewMemoryDatabase()) chain := init.ethereum.BlockChain() engine := init.ethereum.Engine() + _bor := engine.(*bor.Bor) h, _ := getMockedHeimdallClient(t) _bor.SetHeimdallClient(h) @@ -241,6 +262,8 @@ func getMockedHeimdallClient(t *testing.T) (*mocks.IHeimdallClient, *bor.Heimdal "FetchStateSyncEvents", mock.AnythingOfType("uint64"), mock.AnythingOfType("int64")).Return([]*bor.EventRecordWithTime{getSampleEventRecord(t)}, nil) + h.On("FetchLatestCheckpoint").Maybe().Return(mock.Anything, nil) + return h, heimdallSpan } @@ -480,7 +503,6 @@ func TestEIP1559Transition(t *testing.T) { tx, _ = types.SignTx(tx, signer, key3) b.AddTx(tx) - }) if n, err := chain.InsertChain(blocks); err != nil { From 89fadee71e1b98822c5af75f6af58c7cd1dd1b90 Mon Sep 17 00:00:00 2001 From: Evgeny Danienko <6655321@bk.ru> Date: Thu, 19 May 2022 14:38:49 +0300 Subject: [PATCH 27/41] dont panic --- eth/backend.go | 43 +++++++++++++++++++++++++++++-------------- eth/handler_bor.go | 8 +++++--- 2 files changed, 34 insertions(+), 17 deletions(-) diff --git a/eth/backend.go b/eth/backend.go index eb4223bf6a..8f3930f605 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -184,7 +184,7 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { // END: Bor changes bcVersion := rawdb.ReadDatabaseVersion(chainDb) - var dbVer = "" + dbVer := "" if bcVersion != nil { dbVer = fmt.Sprintf("%d", *bcVersion) } @@ -598,22 +598,25 @@ func (s *Ethereum) Start() error { // StartCheckpointWhitelistService starts the goroutine to fetch checkpoints and update the // checkpoint whitelist map. func (s *Ethereum) startCheckpointWhitelistService() { - every := time.Duration(100) * time.Second - ticker := time.NewTicker(every) - defer ticker.Stop() - // first run the checkpoint whitelist err := s.handleWhitelistCheckpoint() if err != nil { + if errors.Is(err, ErrBorConsensusWithoutHeimdall) || errors.Is(err, ErrNotBorConsensus) { + return + } + log.Warn("the first run", "err", err) } + ticker := time.NewTicker(100 * time.Second) + defer ticker.Stop() + for { select { case <-ticker.C: err := s.handleWhitelistCheckpoint() if err != nil { - log.Warn(err.Error()) + log.Warn("couldn't get whitelist checkpoint", "err", err) } case <-s.closeCh: return @@ -621,20 +624,32 @@ func (s *Ethereum) startCheckpointWhitelistService() { } } +var ( + ErrNotBorConsensus = errors.New("not Bor consensus was given") + ErrBorConsensusWithoutHeimdall = errors.New("Bor consensus without Heimdall") +) + // handleWhitelistCheckpoint handles the checkpoint whitelist mechanism. func (s *Ethereum) handleWhitelistCheckpoint() error { ethHandler := (*ethHandler)(s.handler) - if !ethHandler.chain.Engine().(*bor.Bor).WithoutHeimdall { - endBlockNum, endBlockHash, err := ethHandler.fetchWhitelistCheckpoint() - if err != nil { - return err - } - - // Update the checkpoint whitelist map. - ethHandler.downloader.ProcessCheckpoint(endBlockNum, endBlockHash) + bor, ok := ethHandler.chain.Engine().(*bor.Bor) + if !ok { + return ErrNotBorConsensus } + if bor.WithoutHeimdall { + return ErrBorConsensusWithoutHeimdall + } + + endBlockNum, endBlockHash, err := ethHandler.fetchWhitelistCheckpoint(bor) + if err != nil { + return err + } + + // Update the checkpoint whitelist map. + ethHandler.downloader.ProcessCheckpoint(endBlockNum, endBlockHash) + return nil } diff --git a/eth/handler_bor.go b/eth/handler_bor.go index 02f9918f50..ad1ef16288 100644 --- a/eth/handler_bor.go +++ b/eth/handler_bor.go @@ -2,8 +2,8 @@ package eth import ( "context" - "fmt" "errors" + "fmt" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" @@ -14,9 +14,9 @@ import ( // fetchWhitelistCheckpoint fetched the latest checkpoint from it's local heimdall // and verifies the data against bor data. -func (h *ethHandler) fetchWhitelistCheckpoint() (uint64, common.Hash, error) { +func (h *ethHandler) fetchWhitelistCheckpoint(bor *bor.Bor) (uint64, common.Hash, error) { // check for checkpoint whitelisting: bor - checkpoint, err := h.chain.Engine().(*bor.Bor).HeimdallClient.FetchLatestCheckpoint() + checkpoint, err := bor.HeimdallClient.FetchLatestCheckpoint() if err != nil { log.Debug("Failed to fetch latest checkpoint for whitelisting") return 0, common.Hash{}, errors.New("failed to fetch latest checkpoint") @@ -47,6 +47,8 @@ func (h *ethHandler) fetchWhitelistCheckpoint() (uint64, common.Hash, error) { log.Debug("Failed to get end block hash of checkpoint while whitelisting") return 0, common.Hash{}, errors.New("failed to get end block") } + hash := fmt.Sprintf("%v", block["hash"]) + return checkpoint.EndBlock.Uint64(), common.HexToHash(hash), nil } From 01117acbcc2c301b15b3b446da392bb81a427818 Mon Sep 17 00:00:00 2001 From: Evgeny Danienko <6655321@bk.ru> Date: Thu, 19 May 2022 14:41:49 +0300 Subject: [PATCH 28/41] fmt --- eth/downloader/whitelist/service.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/eth/downloader/whitelist/service.go b/eth/downloader/whitelist/service.go index 4e23c4095b..2ddad0e5ab 100644 --- a/eth/downloader/whitelist/service.go +++ b/eth/downloader/whitelist/service.go @@ -12,7 +12,7 @@ import ( // Checkpoint whitelist type Service struct { - m sync.RWMutex + m sync.Mutex checkpointWhitelist map[uint64]common.Hash // Checkpoint whitelist, populated by reaching out to heimdall checkpointOrder []uint64 // Checkpoint order, populated by reaching out to heimdall maxCapacity uint @@ -54,6 +54,7 @@ func (w *Service) IsValidChain(remoteHeader *types.Header, fetchHeadersByNumber if err != nil { return false, fmt.Errorf("%w: last checkpoint %d, err %v", ErrNoRemoteCheckoint, lastCheckpointBlockNum, err) } + if len(headers) == 0 { return true, fmt.Errorf("%w: last checkpoint %d", ErrNoRemoteCheckoint, lastCheckpointBlockNum) } From 2b089ee6d3e54fbaf0051babd06608e32769e8b8 Mon Sep 17 00:00:00 2001 From: Manav Darji Date: Tue, 24 May 2022 14:32:44 +0530 Subject: [PATCH 29/41] fix: return value for no remote block --- eth/downloader/whitelist/service.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eth/downloader/whitelist/service.go b/eth/downloader/whitelist/service.go index 2ddad0e5ab..f12639454f 100644 --- a/eth/downloader/whitelist/service.go +++ b/eth/downloader/whitelist/service.go @@ -56,7 +56,7 @@ func (w *Service) IsValidChain(remoteHeader *types.Header, fetchHeadersByNumber } if len(headers) == 0 { - return true, fmt.Errorf("%w: last checkpoint %d", ErrNoRemoteCheckoint, lastCheckpointBlockNum) + return false, fmt.Errorf("%w: last checkpoint %d", ErrNoRemoteCheckoint, lastCheckpointBlockNum) } reqBlockNum := headers[0].Number.Uint64() From c46a29340dc4c6512d52b4fcb7f629aeb6ed3da2 Mon Sep 17 00:00:00 2001 From: Manav Darji Date: Tue, 24 May 2022 14:34:26 +0530 Subject: [PATCH 30/41] handle all errors --- eth/downloader/downloader.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go index 4420ca2c1b..12b4a90dde 100644 --- a/eth/downloader/downloader.go +++ b/eth/downloader/downloader.go @@ -797,8 +797,7 @@ func (d *Downloader) getFetchHeadersByNumber(p *peerConnection) func(number uint // the head links match), we do a binary search to find the common ancestor. func (d *Downloader) findAncestor(p *peerConnection, remoteHeader *types.Header) (uint64, error) { // Check the validity of chain to be downloaded - // TODO: we can use a mock and - if _, err := d.IsValidChain(remoteHeader, d.getFetchHeadersByNumber(p)); errors.Is(err, whitelist.ErrCheckpointMismatch) { + if _, err := d.IsValidChain(remoteHeader, d.getFetchHeadersByNumber(p)); err != nil { return 0, err } From 9c861920d5b797bbf607413ac128f9ecbd775816 Mon Sep 17 00:00:00 2001 From: Manav Darji Date: Tue, 24 May 2022 15:41:26 +0530 Subject: [PATCH 31/41] modularise fake chain validator in downloader --- eth/downloader/downloader_test.go | 50 +++++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 6 deletions(-) diff --git a/eth/downloader/downloader_test.go b/eth/downloader/downloader_test.go index 9d847e382e..f141e9d019 100644 --- a/eth/downloader/downloader_test.go +++ b/eth/downloader/downloader_test.go @@ -1394,27 +1394,42 @@ func testCheckpointEnforcement(t *testing.T, protocol uint, mode SyncMode) { } } +// whitelistFake is a mock for the chain validator service type whitelistFake struct { - err error - res bool + // count denotes the number of times the validate function was called + count int + + // validate is the dynamic function to be called while syncing + validate func(count int) (bool, error) } -func newWhitelistFake(res bool, err error) *whitelistFake { - return &whitelistFake{err, res} +// newWhitelistFake returns a new mock whitelist +func newWhitelistFake(validate func(count int) (bool, error)) *whitelistFake { + return &whitelistFake{0, validate} } +// IsValidChain is the mock function which the downloader will use to validate the chain +// to be received from a peer. func (w *whitelistFake) IsValidChain(remoteHeader *types.Header, fetchHeadersByNumber func(number uint64, amount int, skip int, reverse bool) ([]*types.Header, []common.Hash, error)) (bool, error) { - return w.res, w.err + defer func() { + w.count++ + }() + return w.validate(w.count) } func (w *whitelistFake) ProcessCheckpoint(endBlockNum uint64, endBlockHash common.Hash) {} +// TestFakedSyncProgress66WhitelistMismatch tests if in case of whitelisted +// checkpoint mismatch with opposite peer, the sync should fail. func TestFakedSyncProgress66WhitelistMismatch(t *testing.T) { protocol := uint(eth.ETH66) mode := FullSync tester := newTester() - tester.downloader.ChainValidator = newWhitelistFake(true, whitelist.ErrCheckpointMismatch) + validate := func(count int) (bool, error) { + return false, whitelist.ErrCheckpointMismatch + } + tester.downloader.ChainValidator = newWhitelistFake(validate) defer tester.terminate() @@ -1426,3 +1441,26 @@ func TestFakedSyncProgress66WhitelistMismatch(t *testing.T) { t.Fatal("succeeded attacker synchronisation") } } + +// TestFakedSyncProgress66WhitelistMatch tests if in case of whitelisted +// checkpoint match with opposite peer, the sync should succeed. +func TestFakedSyncProgress66WhitelistMatch(t *testing.T) { + protocol := uint(eth.ETH66) + mode := FullSync + + tester := newTester() + validate := func(count int) (bool, error) { + return true, nil + } + tester.downloader.ChainValidator = newWhitelistFake(validate) + + defer tester.terminate() + + chainA := testChainForkLightA.blocks + tester.newPeer("light", protocol, chainA[1:]) + + // Synchronise with the peer and make sure all blocks were retrieved + if err := tester.sync("light", nil, mode); err != nil { + t.Fatal("succeeded attacker synchronisation") + } +} From cb9d29151c4c4883e0a3875da2995b292892bad7 Mon Sep 17 00:00:00 2001 From: Manav Darji Date: Tue, 24 May 2022 16:29:39 +0530 Subject: [PATCH 32/41] add more tests --- eth/downloader/downloader_test.go | 35 +++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/eth/downloader/downloader_test.go b/eth/downloader/downloader_test.go index f141e9d019..cb0e656e39 100644 --- a/eth/downloader/downloader_test.go +++ b/eth/downloader/downloader_test.go @@ -43,6 +43,7 @@ import ( "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rlp" "github.com/ethereum/go-ethereum/trie" + "github.com/stretchr/testify/assert" ) // downloadTester is a test simulator for mocking out local block chain. @@ -1464,3 +1465,37 @@ func TestFakedSyncProgress66WhitelistMatch(t *testing.T) { t.Fatal("succeeded attacker synchronisation") } } + +// TestFakedSyncProgress66NoRemoteCheckpoint tests if in case of missing/invalid +// checkpointed blocks with opposite peer, the sync should fail initially but +// with the retry mechanism, it should succeed eventually. +func TestFakedSyncProgress66NoRemoteCheckpoint(t *testing.T) { + protocol := uint(eth.ETH66) + mode := FullSync + + tester := newTester() + validate := func(count int) (bool, error) { + // only return the `ErrNoRemoteCheckoint` error for the first call + if count == 0 { + return false, whitelist.ErrNoRemoteCheckoint + } + return true, nil + } + tester.downloader.ChainValidator = newWhitelistFake(validate) + + defer tester.terminate() + + chainA := testChainForkLightA.blocks + tester.newPeer("light", protocol, chainA[1:]) + + // Synchronise with the peer and make sure all blocks were retrieved + // Should fail in first attempt + if err := tester.sync("light", nil, mode); err != nil { + assert.Equal(t, whitelist.ErrNoRemoteCheckoint, err, "failed synchronisation") + } + + // Try syncing again, should succeed + if err := tester.sync("light", nil, mode); err != nil { + t.Fatal("succeeded attacker synchronisation") + } +} From 2ba7c036a7d029974471f13add74d644ea489489 Mon Sep 17 00:00:00 2001 From: Manav Darji Date: Tue, 24 May 2022 17:13:49 +0530 Subject: [PATCH 33/41] fix tests --- eth/downloader/whitelist/service_test.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/eth/downloader/whitelist/service_test.go b/eth/downloader/whitelist/service_test.go index de1e902e99..79a92da826 100644 --- a/eth/downloader/whitelist/service_test.go +++ b/eth/downloader/whitelist/service_test.go @@ -57,7 +57,8 @@ func TestIsValidChain(t *testing.T) { return nil, nil, nil } - // case2: false fetchHeadersByNumber function provided, should consider the chain as valid + // case2: false fetchHeadersByNumber function provided, should consider the chain as invalid + // and throw `ErrNoRemoteCheckoint` error res, err = s.IsValidChain(nil, falseFetchHeadersByNumber) if err == nil { t.Fatal("expected error, got nil") @@ -67,7 +68,7 @@ func TestIsValidChain(t *testing.T) { t.Fatalf("expected error ErrNoRemoteCheckoint, got %v", err) } - assert.Equal(t, res, true, "expected chain to be valid") + assert.Equal(t, res, false, "expected chain to be invalid") // case3: correct fetchHeadersByNumber function provided, should consider the chain as valid // create a mock function, returning a the required header From d4e7603315cfb0df7c08e284983c5e937d2b2ff1 Mon Sep 17 00:00:00 2001 From: Manav Darji Date: Thu, 2 Jun 2022 16:23:38 +0530 Subject: [PATCH 34/41] add debug rpc endpoints for checkpoint whitelist service --- eth/api_backend.go | 8 ++++++++ eth/downloader/downloader.go | 2 ++ eth/downloader/downloader_test.go | 6 ++++++ eth/downloader/whitelist/service.go | 16 ++++++++++------ internal/ethapi/api.go | 11 +++++++++++ internal/ethapi/backend.go | 2 ++ internal/web3ext/web3ext.go | 10 ++++++++++ les/api_backend.go | 15 +++++++++++---- 8 files changed, 60 insertions(+), 10 deletions(-) diff --git a/eth/api_backend.go b/eth/api_backend.go index 6577ac1e1a..c33f3cf6f2 100644 --- a/eth/api_backend.go +++ b/eth/api_backend.go @@ -359,3 +359,11 @@ func (b *EthAPIBackend) StateAtBlock(ctx context.Context, block *types.Block, re func (b *EthAPIBackend) StateAtTransaction(ctx context.Context, block *types.Block, txIndex int, reexec uint64) (core.Message, vm.BlockContext, *state.StateDB, error) { return b.eth.stateAtTransaction(block, txIndex, reexec) } + +func (b *EthAPIBackend) GetCheckpointWhitelist() map[uint64]common.Hash { + return b.eth.Downloader().ChainValidator.GetCheckpointWhitelist() +} + +func (b *EthAPIBackend) PurgeCheckpointWhitelist() { + b.eth.Downloader().ChainValidator.PurgeCheckpointWhitelist() +} diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go index 12b4a90dde..fa53fe39c0 100644 --- a/eth/downloader/downloader.go +++ b/eth/downloader/downloader.go @@ -157,6 +157,8 @@ type Downloader struct { type ChainValidator interface { IsValidChain(remoteHeader *types.Header, fetchHeadersByNumber func(number uint64, amount int, skip int, reverse bool) ([]*types.Header, []common.Hash, error)) (bool, error) ProcessCheckpoint(endBlockNum uint64, endBlockHash common.Hash) + GetCheckpointWhitelist() map[uint64]common.Hash + PurgeCheckpointWhitelist() } // LightChain encapsulates functions required to synchronise a light chain. diff --git a/eth/downloader/downloader_test.go b/eth/downloader/downloader_test.go index cb0e656e39..3a188298dc 100644 --- a/eth/downloader/downloader_test.go +++ b/eth/downloader/downloader_test.go @@ -1420,6 +1420,12 @@ func (w *whitelistFake) IsValidChain(remoteHeader *types.Header, fetchHeadersByN func (w *whitelistFake) ProcessCheckpoint(endBlockNum uint64, endBlockHash common.Hash) {} +func (w *whitelistFake) GetCheckpointWhitelist() map[uint64]common.Hash { + return nil +} + +func (w *whitelistFake) PurgeCheckpointWhitelist() {} + // TestFakedSyncProgress66WhitelistMismatch tests if in case of whitelisted // checkpoint mismatch with opposite peer, the sync should fail. func TestFakedSyncProgress66WhitelistMismatch(t *testing.T) { diff --git a/eth/downloader/whitelist/service.go b/eth/downloader/whitelist/service.go index f12639454f..62bc842186 100644 --- a/eth/downloader/whitelist/service.go +++ b/eth/downloader/whitelist/service.go @@ -82,12 +82,16 @@ func (w *Service) ProcessCheckpoint(endBlockNum uint64, endBlockHash common.Hash } } -// PurgeWhitelistMap purges data from checkpoint whitelist map -func (w *Service) purgeWhitelistMap() error { - for k := range w.checkpointWhitelist { - delete(w.checkpointWhitelist, k) - } - return nil +// GetCheckpointWhitelist returns the existing whitelisted +// entries of checkpoint of the form block number -> block hash. +func (w *Service) GetCheckpointWhitelist() map[uint64]common.Hash { + return w.checkpointWhitelist +} + +// PurgeCheckpointWhitelist purges data from checkpoint whitelist map +func (w *Service) PurgeCheckpointWhitelist() { + w.checkpointWhitelist = make(map[uint64]common.Hash) + w.checkpointOrder = make([]uint64, 0) } // EnqueueWhitelistBlock enqueues blockNumber, blockHash to the checkpoint whitelist map diff --git a/internal/ethapi/api.go b/internal/ethapi/api.go index 15536d5d72..59b6feba52 100644 --- a/internal/ethapi/api.go +++ b/internal/ethapi/api.go @@ -2156,6 +2156,17 @@ func (api *PrivateDebugAPI) SetHead(number hexutil.Uint64) { api.b.SetHead(uint64(number)) } +// GetCheckpointWhitelist retrieves the current checkpoint whitelist +// entries (of the form block number -> block hash) +func (api *PrivateDebugAPI) GetCheckpointWhitelist() map[uint64]common.Hash { + return api.b.GetCheckpointWhitelist() +} + +// PurgeCheckpointWhitelist purges the current checkpoint whitelist entries +func (api *PrivateDebugAPI) PurgeCheckpointWhitelist() { + api.b.PurgeCheckpointWhitelist() +} + // PublicNetAPI offers network related RPC methods type PublicNetAPI struct { net *p2p.Server diff --git a/internal/ethapi/backend.go b/internal/ethapi/backend.go index 97ce7c24cf..1287640b83 100644 --- a/internal/ethapi/backend.go +++ b/internal/ethapi/backend.go @@ -99,6 +99,8 @@ type Backend interface { GetBorBlockTransaction(ctx context.Context, txHash common.Hash) (*types.Transaction, common.Hash, uint64, uint64, error) GetBorBlockTransactionWithBlockHash(ctx context.Context, txHash common.Hash, blockHash common.Hash) (*types.Transaction, common.Hash, uint64, uint64, error) SubscribeChain2HeadEvent(ch chan<- core.Chain2HeadEvent) event.Subscription + GetCheckpointWhitelist() map[uint64]common.Hash + PurgeCheckpointWhitelist() ChainConfig() *params.ChainConfig Engine() consensus.Engine diff --git a/internal/web3ext/web3ext.go b/internal/web3ext/web3ext.go index dd8b34e025..dcdd5baf23 100644 --- a/internal/web3ext/web3ext.go +++ b/internal/web3ext/web3ext.go @@ -474,6 +474,16 @@ web3._extend({ params: 2, inputFormatter:[web3._extend.formatters.inputBlockNumberFormatter, web3._extend.formatters.inputBlockNumberFormatter], }), + new web3._extend.Method({ + name: 'getCheckpointWhitelist', + call: 'debug_getCheckpointWhitelist', + params: 0, + }), + new web3._extend.Method({ + name: 'purgeCheckpointWhitelist', + call: 'debug_purgeCheckpointWhitelist', + params: 0, + }), ], properties: [] }); diff --git a/les/api_backend.go b/les/api_backend.go index e9e51c4ecc..c716a3967f 100644 --- a/les/api_backend.go +++ b/les/api_backend.go @@ -337,17 +337,24 @@ func (b *LesApiBackend) StateAtTransaction(ctx context.Context, block *types.Blo // func (b *LesApiBackend) GetBorBlockReceipt(ctx context.Context, hash common.Hash) (*types.Receipt, error) { - return nil, errors.New("Not implemented") + return nil, errors.New("not implemented") } func (b *LesApiBackend) GetBorBlockLogs(ctx context.Context, hash common.Hash) ([]*types.Log, error) { - return nil, errors.New("Not implemented") + return nil, errors.New("not implemented") } func (b *LesApiBackend) GetBorBlockTransaction(ctx context.Context, txHash common.Hash) (*types.Transaction, common.Hash, uint64, uint64, error) { - return nil, common.Hash{}, 0, 0, errors.New("Not implemented") + return nil, common.Hash{}, 0, 0, errors.New("not implemented") } func (b *LesApiBackend) GetBorBlockTransactionWithBlockHash(ctx context.Context, txHash common.Hash, blockHash common.Hash) (*types.Transaction, common.Hash, uint64, uint64, error) { - return nil, common.Hash{}, 0, 0, errors.New("Not implemented") + return nil, common.Hash{}, 0, 0, errors.New("not implemented") +} + +func (b *LesApiBackend) GetCheckpointWhitelist() map[uint64]common.Hash { + return nil +} + +func (b *LesApiBackend) PurgeCheckpointWhitelist() { } From 8255d194ae43333ab06ccb413999e5ceb9efdf75 Mon Sep 17 00:00:00 2001 From: Manav Darji Date: Thu, 2 Jun 2022 16:34:46 +0530 Subject: [PATCH 35/41] minor fixes and enhancements --- consensus/bor/rest.go | 6 +++--- eth/backend.go | 8 +++---- eth/downloader/whitelist/service.go | 6 ++++++ eth/handler_bor.go | 33 +++++++++++++++++++++++------ 4 files changed, 40 insertions(+), 13 deletions(-) diff --git a/consensus/bor/rest.go b/consensus/bor/rest.go index 627262ffe6..cee7c11063 100644 --- a/consensus/bor/rest.go +++ b/consensus/bor/rest.go @@ -91,17 +91,17 @@ func (h *HeimdallClient) FetchStateSyncEvents(fromID uint64, to int64) ([]*Event // FetchLatestCheckpoint fetches the latest bor submitted checkpoint from heimdall func (h *HeimdallClient) FetchLatestCheckpoint() (*Checkpoint, error) { - var checkpoint Checkpoint + checkpoint := &Checkpoint{} response, err := h.Fetch("/checkpoints/latest", "") if err != nil { return nil, err } - if err := json.Unmarshal(response.Result, &checkpoint); err != nil { + if err = json.Unmarshal(response.Result, checkpoint); err != nil { return nil, err } - return &checkpoint, nil + return checkpoint, nil } // Fetch fetches response from heimdall diff --git a/eth/backend.go b/eth/backend.go index 8f3930f605..bd941a6b11 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -605,7 +605,7 @@ func (s *Ethereum) startCheckpointWhitelistService() { return } - log.Warn("the first run", "err", err) + log.Warn("unable to whitelist checkpoint - first run", "err", err) } ticker := time.NewTicker(100 * time.Second) @@ -616,7 +616,7 @@ func (s *Ethereum) startCheckpointWhitelistService() { case <-ticker.C: err := s.handleWhitelistCheckpoint() if err != nil { - log.Warn("couldn't get whitelist checkpoint", "err", err) + log.Warn("unable to whitelist checkpoint", "err", err) } case <-s.closeCh: return @@ -625,8 +625,8 @@ func (s *Ethereum) startCheckpointWhitelistService() { } var ( - ErrNotBorConsensus = errors.New("not Bor consensus was given") - ErrBorConsensusWithoutHeimdall = errors.New("Bor consensus without Heimdall") + ErrNotBorConsensus = errors.New("not bor consensus was given") + ErrBorConsensusWithoutHeimdall = errors.New("bor consensus without heimdall") ) // handleWhitelistCheckpoint handles the checkpoint whitelist mechanism. diff --git a/eth/downloader/whitelist/service.go b/eth/downloader/whitelist/service.go index 62bc842186..c3b6ad6462 100644 --- a/eth/downloader/whitelist/service.go +++ b/eth/downloader/whitelist/service.go @@ -85,11 +85,17 @@ func (w *Service) ProcessCheckpoint(endBlockNum uint64, endBlockHash common.Hash // GetCheckpointWhitelist returns the existing whitelisted // entries of checkpoint of the form block number -> block hash. func (w *Service) GetCheckpointWhitelist() map[uint64]common.Hash { + w.m.Lock() + defer w.m.Unlock() + return w.checkpointWhitelist } // PurgeCheckpointWhitelist purges data from checkpoint whitelist map func (w *Service) PurgeCheckpointWhitelist() { + w.m.Lock() + defer w.m.Unlock() + w.checkpointWhitelist = make(map[uint64]common.Hash) w.checkpointOrder = make([]uint64, 0) } diff --git a/eth/handler_bor.go b/eth/handler_bor.go index ad1ef16288..11896f3c47 100644 --- a/eth/handler_bor.go +++ b/eth/handler_bor.go @@ -12,6 +12,27 @@ import ( "github.com/ethereum/go-ethereum/rpc" ) +var ( + // errCheckpoint is returned when we are unable to fetch the + // latest checkpoint from the local heimdall. + errCheckpoint = errors.New("failed to fetch latest checkpoint") + + // errMissingCheckpoint is returned when we don't have the + // checkpoint blocks locally, yet. + errMissingCheckpoint = errors.New("missing checkpoint blocks") + + // errRootHash is returned when we aren't able to calculate the root hash + // locally for a range of blocks. + errRootHash = errors.New("failed to get local root hash") + + // errCheckpointRootHashMismatch is returned when the local root hash + // doesn't match with the root hash in checkpoint. + errCheckpointRootHashMismatch = errors.New("checkpoint roothash mismatch") + + // errEndBlock is returned when we're unable to fetch a block locally. + errEndBlock = errors.New("failed to get end block") +) + // fetchWhitelistCheckpoint fetched the latest checkpoint from it's local heimdall // and verifies the data against bor data. func (h *ethHandler) fetchWhitelistCheckpoint(bor *bor.Bor) (uint64, common.Hash, error) { @@ -19,33 +40,33 @@ func (h *ethHandler) fetchWhitelistCheckpoint(bor *bor.Bor) (uint64, common.Hash checkpoint, err := bor.HeimdallClient.FetchLatestCheckpoint() if err != nil { log.Debug("Failed to fetch latest checkpoint for whitelisting") - return 0, common.Hash{}, errors.New("failed to fetch latest checkpoint") + return 0, common.Hash{}, errCheckpoint } // check if we have the checkpoint blocks head := h.ethAPI.BlockNumber() if head < hexutil.Uint64(checkpoint.EndBlock.Uint64()) { - log.Debug("Head block behing checkpoint block", "head", head, "checkpoint end block", checkpoint.EndBlock) - return 0, common.Hash{}, errors.New("missing checkpoint blocks") + log.Debug("Head block behind checkpoint block", "head", head, "checkpoint end block", checkpoint.EndBlock) + return 0, common.Hash{}, errMissingCheckpoint } // verify the root hash of checkpoint roothash, err := h.ethAPI.GetRootHash(context.Background(), checkpoint.StartBlock.Uint64(), checkpoint.EndBlock.Uint64()) if err != nil { log.Debug("Failed to get root hash of checkpoint while whitelisting") - return 0, common.Hash{}, errors.New("failed to get local root hash") + return 0, common.Hash{}, errRootHash } if roothash != checkpoint.RootHash.String()[2:] { log.Warn("Checkpoint root hash mismatch while whitelisting", "expected", checkpoint.RootHash.String()[2:], "got", roothash) - return 0, common.Hash{}, errors.New("checkpoint roothash mismatch") + return 0, common.Hash{}, errCheckpointRootHashMismatch } // fetch the end checkpoint block hash block, err := h.ethAPI.GetBlockByNumber(context.Background(), rpc.BlockNumber(checkpoint.EndBlock.Uint64()), false) if err != nil { log.Debug("Failed to get end block hash of checkpoint while whitelisting") - return 0, common.Hash{}, errors.New("failed to get end block") + return 0, common.Hash{}, errEndBlock } hash := fmt.Sprintf("%v", block["hash"]) From c9a3b9971b62f14a7936b3c445d755164bcb8de6 Mon Sep 17 00:00:00 2001 From: Evgeny Danienko <6655321@bk.ru> Date: Fri, 3 Jun 2022 12:31:48 +0300 Subject: [PATCH 36/41] use typed mocks --- Makefile | 3 + consensus/bor/rest.go | 1 + go.mod | 3 +- go.sum | 1 + tests/bor/bor_test.go | 92 ++++++++------- tests/bor/mocks/IHeimdallClient.go | 181 ++++++++++++++--------------- tests/deps/fake.go | 7 ++ 7 files changed, 154 insertions(+), 134 deletions(-) create mode 100644 tests/deps/fake.go diff --git a/Makefile b/Makefile index 6469b8510f..b283928b81 100644 --- a/Makefile +++ b/Makefile @@ -64,6 +64,9 @@ devtools: env GOBIN= go install github.com/fjl/gencodec@latest env GOBIN= go install github.com/golang/protobuf/protoc-gen-go@latest env GOBIN= go install ./cmd/abigen + PATH=$(GOBIN):$(PATH) go generate ./common + PATH=$(GOBIN):$(PATH) go generate ./core/types + PATH=$(GOBIN):$(PATH) go generate ./consensus/bor @type "solc" 2> /dev/null || echo 'Please install solc' @type "protoc" 2> /dev/null || echo 'Please install protoc' diff --git a/consensus/bor/rest.go b/consensus/bor/rest.go index 9bec44c62f..86f6146e77 100644 --- a/consensus/bor/rest.go +++ b/consensus/bor/rest.go @@ -35,6 +35,7 @@ type Checkpoint struct { Timestamp uint64 `json:"timestamp"` } +//go:generate mockgen -destination=../../tests/bor/mocks/IHeimdallClient.go -package=mocks . IHeimdallClient type IHeimdallClient interface { Fetch(path string, query string) (*ResponseWithHeight, error) FetchWithRetry(path string, query string) (*ResponseWithHeight, error) diff --git a/go.mod b/go.mod index edd6d6887a..176df53a40 100644 --- a/go.mod +++ b/go.mod @@ -28,6 +28,7 @@ require ( github.com/go-ole/go-ole v1.2.1 // indirect github.com/go-stack/stack v1.8.0 github.com/golang-jwt/jwt/v4 v4.3.0 + github.com/golang/mock v1.3.1 github.com/golang/protobuf v1.5.2 github.com/golang/snappy v0.0.4 github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa @@ -83,5 +84,5 @@ require ( gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6 gopkg.in/urfave/cli.v1 v1.20.0 - gotest.tools v2.2.0+incompatible // indirect + gotest.tools v2.2.0+incompatible ) diff --git a/go.sum b/go.sum index 19a6002886..ec2f200044 100644 --- a/go.sum +++ b/go.sum @@ -194,6 +194,7 @@ github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4er github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1 h1:qGJ6qTW+x6xX/my+8YUVl4WNpX9B7+/l2tRsHGZ7f2s= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= diff --git a/tests/bor/bor_test.go b/tests/bor/bor_test.go index 460b296f31..b922ff9c41 100644 --- a/tests/bor/bor_test.go +++ b/tests/bor/bor_test.go @@ -8,6 +8,10 @@ import ( "testing" "time" + "github.com/golang/mock/gomock" + "github.com/stretchr/testify/assert" + "golang.org/x/crypto/sha3" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/consensus/bor" "github.com/ethereum/go-ethereum/consensus/ethash" @@ -19,9 +23,6 @@ import ( "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rlp" "github.com/ethereum/go-ethereum/tests/bor/mocks" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/mock" - "golang.org/x/crypto/sha3" ) var ( @@ -32,13 +33,12 @@ var ( func TestInsertingSpanSizeBlocks(t *testing.T) { init := buildEthereumInstance(t, rawdb.NewMemoryDatabase()) - chain := init.ethereum.BlockChain() engine := init.ethereum.Engine() - _bor := engine.(*bor.Bor) - h, heimdallSpan := getMockedHeimdallClient(t) + h, heimdallSpan, ctrl := getMockedHeimdallClient(t) + defer ctrl.Finish() _bor.SetHeimdallClient(h) @@ -52,7 +52,6 @@ func TestInsertingSpanSizeBlocks(t *testing.T) { insertNewBlock(t, chain, block) } - assert.True(t, h.AssertCalled(t, "FetchWithRetry", spanPath, "")) validators, err := _bor.GetCurrentValidators(block.Hash(), spanSize) // check validator set at the first block of new span if err != nil { t.Fatalf("%s", err) @@ -74,7 +73,6 @@ func TestFetchStateSyncEvents(t *testing.T) { // A. Insert blocks for 0th sprint db := init.ethereum.ChainDb() block := init.genesis.ToBlock(db) - // Insert sprintSize # of blocks so that span is fetched at the start of a new sprint for i := uint64(1); i < sprintSize; i++ { block = buildNextBlock(t, _bor, chain, block, nil, init.genesis.Config.Bor) @@ -82,8 +80,13 @@ func TestFetchStateSyncEvents(t *testing.T) { } // B. Before inserting 1st block of the next sprint, mock heimdall deps + // B.1 Mock /bor/span/1 + res, _ := loadSpanFromFile(t) - // B.1 /bor/span/1 + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + h := mocks.NewMockIHeimdallClient(ctrl) // B.2 Mock State Sync events fromID := uint64(1) @@ -96,18 +99,12 @@ func TestFetchStateSyncEvents(t *testing.T) { eventRecords := generateFakeStateSyncEvents(sample, eventCount) // Mock - res, _ := loadSpanFromFile(t) - h := &mocks.IHeimdallClient{} - h.On("FetchWithRetry", spanPath, "").Return(res, nil) - h.On("FetchLatestCheckpoint").Maybe().Return(mock.Anything, nil) - h.On("FetchStateSyncEvents", fromID, to).Return(eventRecords, nil) + h.EXPECT().FetchWithRetry(spanPath, "").Return(res, nil).AnyTimes() + h.EXPECT().FetchStateSyncEvents(fromID, to).Return(eventRecords, nil).AnyTimes() _bor.SetHeimdallClient(h) block = buildNextBlock(t, _bor, chain, block, nil, init.genesis.Config.Bor) insertNewBlock(t, chain, block) - - assert.True(t, h.AssertCalled(t, "FetchWithRetry", spanPath, "")) - assert.True(t, h.AssertCalled(t, "FetchStateSyncEvents", fromID, to)) } func TestFetchStateSyncEvents_2(t *testing.T) { @@ -118,9 +115,12 @@ func TestFetchStateSyncEvents_2(t *testing.T) { // Mock /bor/span/1 res, _ := loadSpanFromFile(t) - h := &mocks.IHeimdallClient{} - h.On("FetchWithRetry", spanPath, "").Return(res, nil) - h.On("FetchLatestCheckpoint").Maybe().Return(mock.Anything, nil) + + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + h := mocks.NewMockIHeimdallClient(ctrl) + h.EXPECT().FetchWithRetry(spanPath, "").Return(res, nil).AnyTimes() // Mock State Sync events // at # sprintSize, events are fetched for [fromID, (block-sprint).Time) @@ -139,7 +139,7 @@ func TestFetchStateSyncEvents_2(t *testing.T) { buildStateEvent(sample, 6, 4), // id = 6, time = 4 } - h.On("FetchStateSyncEvents", fromID, to).Return(eventRecords, nil) + h.EXPECT().FetchStateSyncEvents(fromID, to).Return(eventRecords, nil).AnyTimes() _bor.SetHeimdallClient(h) // Insert blocks for 0th sprint @@ -150,9 +150,6 @@ func TestFetchStateSyncEvents_2(t *testing.T) { insertNewBlock(t, chain, block) } - assert.True(t, h.AssertCalled(t, "FetchWithRetry", spanPath, "")) - assert.True(t, h.AssertCalled(t, "FetchStateSyncEvents", fromID, to)) - lastStateID, _ := _bor.GenesisContractsClient.LastStateId(sprintSize) // state 6 was not written @@ -166,13 +163,13 @@ func TestFetchStateSyncEvents_2(t *testing.T) { buildStateEvent(sample, 6, 4), } - h.On("FetchStateSyncEvents", fromID, to).Return(eventRecords, nil) + h.EXPECT().FetchStateSyncEvents(fromID, to).Return(eventRecords, nil).AnyTimes() + for i := sprintSize + 1; i <= spanSize; i++ { block = buildNextBlock(t, _bor, chain, block, nil, init.genesis.Config.Bor) insertNewBlock(t, chain, block) } - assert.True(t, h.AssertCalled(t, "FetchStateSyncEvents", fromID, to)) lastStateID, _ = _bor.GenesisContractsClient.LastStateId(spanSize) assert.Equal(t, uint64(6), lastStateID.Uint64()) } @@ -181,9 +178,11 @@ func TestOutOfTurnSigning(t *testing.T) { init := buildEthereumInstance(t, rawdb.NewMemoryDatabase()) chain := init.ethereum.BlockChain() engine := init.ethereum.Engine() - _bor := engine.(*bor.Bor) - h, _ := getMockedHeimdallClient(t) + + h, _, ctrl := getMockedHeimdallClient(t) + defer ctrl.Finish() + _bor.SetHeimdallClient(h) db := init.ethereum.ChainDb() @@ -212,7 +211,6 @@ func TestOutOfTurnSigning(t *testing.T) { header := block.Header() header.Time += (bor.CalcProducerDelay(header.Number.Uint64(), expectedSuccessionNumber, init.genesis.Config.Bor) - bor.CalcProducerDelay(header.Number.Uint64(), 0, init.genesis.Config.Bor)) - sign(t, header, signerKey, init.genesis.Config.Bor) block = types.NewBlockWithHeader(header) @@ -233,9 +231,11 @@ func TestSignerNotFound(t *testing.T) { init := buildEthereumInstance(t, rawdb.NewMemoryDatabase()) chain := init.ethereum.BlockChain() engine := init.ethereum.Engine() - _bor := engine.(*bor.Bor) - h, _ := getMockedHeimdallClient(t) + + h, _, ctrl := getMockedHeimdallClient(t) + defer ctrl.Finish() + _bor.SetHeimdallClient(h) db := init.ethereum.ChainDb() @@ -254,17 +254,16 @@ func TestSignerNotFound(t *testing.T) { bor.UnauthorizedSignerError{Number: 0, Signer: addr.Bytes()}) } -func getMockedHeimdallClient(t *testing.T) (*mocks.IHeimdallClient, *bor.HeimdallSpan) { - res, heimdallSpan := loadSpanFromFile(t) - h := &mocks.IHeimdallClient{} - h.On("FetchWithRetry", "bor/span/1", "").Return(res, nil) - h.On( - "FetchStateSyncEvents", - mock.AnythingOfType("uint64"), - mock.AnythingOfType("int64")).Return([]*bor.EventRecordWithTime{getSampleEventRecord(t)}, nil) - h.On("FetchLatestCheckpoint").Maybe().Return(mock.Anything, nil) +func getMockedHeimdallClient(t *testing.T) (*mocks.MockIHeimdallClient, *bor.HeimdallSpan, *gomock.Controller) { + ctrl := gomock.NewController(t) + h := mocks.NewMockIHeimdallClient(ctrl) - return h, heimdallSpan + res, heimdallSpan := loadSpanFromFile(t) + + h.EXPECT().FetchWithRetry(spanPath, "").Return(res, nil).AnyTimes() + h.EXPECT().FetchStateSyncEvents(gomock.Any(), gomock.Any()).Return(getEventRecords(t), nil).AnyTimes() + + return h, heimdallSpan, ctrl } func generateFakeStateSyncEvents(sample *bor.EventRecordWithTime, count int) []*bor.EventRecordWithTime { @@ -299,6 +298,16 @@ func getSampleEventRecord(t *testing.T) *bor.EventRecordWithTime { return _eventRecords[0] } +func getEventRecords(t *testing.T) []*bor.EventRecordWithTime { + res := stateSyncEventsPayload(t) + var _eventRecords []*bor.EventRecordWithTime + if err := json.Unmarshal(res.Result, &_eventRecords); err != nil { + t.Fatalf("%s", err) + } + + return _eventRecords +} + // TestEIP1559Transition tests the following: // // 1. A transaction whose gasFeeCap is greater than the baseFee is valid. @@ -503,6 +512,7 @@ func TestEIP1559Transition(t *testing.T) { tx, _ = types.SignTx(tx, signer, key3) b.AddTx(tx) + }) if n, err := chain.InsertChain(blocks); err != nil { diff --git a/tests/bor/mocks/IHeimdallClient.go b/tests/bor/mocks/IHeimdallClient.go index 3ee599bb2e..9420c261fb 100644 --- a/tests/bor/mocks/IHeimdallClient.go +++ b/tests/bor/mocks/IHeimdallClient.go @@ -1,110 +1,107 @@ -// Code generated by mockery v2.10.0. DO NOT EDIT. +// Code generated by MockGen. DO NOT EDIT. +// Source: github.com/ethereum/go-ethereum/consensus/bor (interfaces: IHeimdallClient) +// Package mocks is a generated GoMock package. package mocks import ( + reflect "reflect" + bor "github.com/ethereum/go-ethereum/consensus/bor" - mock "github.com/stretchr/testify/mock" + gomock "github.com/golang/mock/gomock" ) -// IHeimdallClient is an autogenerated mock type for the IHeimdallClient type -type IHeimdallClient struct { - mock.Mock +// MockIHeimdallClient is a mock of IHeimdallClient interface. +type MockIHeimdallClient struct { + ctrl *gomock.Controller + recorder *MockIHeimdallClientMockRecorder } -// Close provides a mock function with given fields: -func (_m *IHeimdallClient) Close() { - _m.Called() +// MockIHeimdallClientMockRecorder is the mock recorder for MockIHeimdallClient. +type MockIHeimdallClientMockRecorder struct { + mock *MockIHeimdallClient } -// Fetch provides a mock function with given fields: path, query -func (_m *IHeimdallClient) Fetch(path string, query string) (*bor.ResponseWithHeight, error) { - ret := _m.Called(path, query) - - var r0 *bor.ResponseWithHeight - if rf, ok := ret.Get(0).(func(string, string) *bor.ResponseWithHeight); ok { - r0 = rf(path, query) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*bor.ResponseWithHeight) - } - } - - var r1 error - if rf, ok := ret.Get(1).(func(string, string) error); ok { - r1 = rf(path, query) - } else { - r1 = ret.Error(1) - } - - return r0, r1 +// NewMockIHeimdallClient creates a new mock instance. +func NewMockIHeimdallClient(ctrl *gomock.Controller) *MockIHeimdallClient { + mock := &MockIHeimdallClient{ctrl: ctrl} + mock.recorder = &MockIHeimdallClientMockRecorder{mock} + return mock } -// FetchLatestCheckpoint provides a mock function with given fields: -func (_m *IHeimdallClient) FetchLatestCheckpoint() (*bor.Checkpoint, error) { - ret := _m.Called() - - var r0 *bor.Checkpoint - if rf, ok := ret.Get(0).(func() *bor.Checkpoint); ok { - r0 = rf() - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*bor.Checkpoint) - } - } - - var r1 error - if rf, ok := ret.Get(1).(func() error); ok { - r1 = rf() - } else { - r1 = ret.Error(1) - } - - return r0, r1 +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockIHeimdallClient) EXPECT() *MockIHeimdallClientMockRecorder { + return m.recorder } -// FetchStateSyncEvents provides a mock function with given fields: fromID, to -func (_m *IHeimdallClient) FetchStateSyncEvents(fromID uint64, to int64) ([]*bor.EventRecordWithTime, error) { - ret := _m.Called(fromID, to) - - var r0 []*bor.EventRecordWithTime - if rf, ok := ret.Get(0).(func(uint64, int64) []*bor.EventRecordWithTime); ok { - r0 = rf(fromID, to) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).([]*bor.EventRecordWithTime) - } - } - - var r1 error - if rf, ok := ret.Get(1).(func(uint64, int64) error); ok { - r1 = rf(fromID, to) - } else { - r1 = ret.Error(1) - } - - return r0, r1 +// Close mocks base method. +func (m *MockIHeimdallClient) Close() { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Close") } -// FetchWithRetry provides a mock function with given fields: path, query -func (_m *IHeimdallClient) FetchWithRetry(path string, query string) (*bor.ResponseWithHeight, error) { - ret := _m.Called(path, query) - - var r0 *bor.ResponseWithHeight - if rf, ok := ret.Get(0).(func(string, string) *bor.ResponseWithHeight); ok { - r0 = rf(path, query) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*bor.ResponseWithHeight) - } - } - - var r1 error - if rf, ok := ret.Get(1).(func(string, string) error); ok { - r1 = rf(path, query) - } else { - r1 = ret.Error(1) - } - - return r0, r1 +// Close indicates an expected call of Close. +func (mr *MockIHeimdallClientMockRecorder) Close() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Close", reflect.TypeOf((*MockIHeimdallClient)(nil).Close)) +} + +// Fetch mocks base method. +func (m *MockIHeimdallClient) Fetch(arg0, arg1 string) (*bor.ResponseWithHeight, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Fetch", arg0, arg1) + ret0, _ := ret[0].(*bor.ResponseWithHeight) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Fetch indicates an expected call of Fetch. +func (mr *MockIHeimdallClientMockRecorder) Fetch(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Fetch", reflect.TypeOf((*MockIHeimdallClient)(nil).Fetch), arg0, arg1) +} + +// FetchLatestCheckpoint mocks base method. +func (m *MockIHeimdallClient) FetchLatestCheckpoint() (*bor.Checkpoint, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FetchLatestCheckpoint") + ret0, _ := ret[0].(*bor.Checkpoint) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// FetchLatestCheckpoint indicates an expected call of FetchLatestCheckpoint. +func (mr *MockIHeimdallClientMockRecorder) FetchLatestCheckpoint() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FetchLatestCheckpoint", reflect.TypeOf((*MockIHeimdallClient)(nil).FetchLatestCheckpoint)) +} + +// FetchStateSyncEvents mocks base method. +func (m *MockIHeimdallClient) FetchStateSyncEvents(arg0 uint64, arg1 int64) ([]*bor.EventRecordWithTime, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FetchStateSyncEvents", arg0, arg1) + ret0, _ := ret[0].([]*bor.EventRecordWithTime) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// FetchStateSyncEvents indicates an expected call of FetchStateSyncEvents. +func (mr *MockIHeimdallClientMockRecorder) FetchStateSyncEvents(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FetchStateSyncEvents", reflect.TypeOf((*MockIHeimdallClient)(nil).FetchStateSyncEvents), arg0, arg1) +} + +// FetchWithRetry mocks base method. +func (m *MockIHeimdallClient) FetchWithRetry(arg0, arg1 string) (*bor.ResponseWithHeight, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FetchWithRetry", arg0, arg1) + ret0, _ := ret[0].(*bor.ResponseWithHeight) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// FetchWithRetry indicates an expected call of FetchWithRetry. +func (mr *MockIHeimdallClientMockRecorder) FetchWithRetry(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FetchWithRetry", reflect.TypeOf((*MockIHeimdallClient)(nil).FetchWithRetry), arg0, arg1) } diff --git a/tests/deps/fake.go b/tests/deps/fake.go new file mode 100644 index 0000000000..cd04ffa070 --- /dev/null +++ b/tests/deps/fake.go @@ -0,0 +1,7 @@ +package deps + +// it is a fake file to lock deps +//nolint:typecheck +import ( + _ "github.com/golang/mock/mockgen/model" +) From 494687fc484f1ed8654933a08863058f3c6c3b9f Mon Sep 17 00:00:00 2001 From: Evgeny Danienko <6655321@bk.ru> Date: Fri, 3 Jun 2022 13:47:22 +0300 Subject: [PATCH 37/41] fix --- cover.out | 36702 ++++++++++++++++++++++++++++++++++++++++ tests/bor/bor_test.go | 2 + 2 files changed, 36704 insertions(+) create mode 100644 cover.out diff --git a/cover.out b/cover.out new file mode 100644 index 0000000000..0a5f97fd58 --- /dev/null +++ b/cover.out @@ -0,0 +1,36702 @@ +mode: set +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:20.37,21.23 1 1 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:24.2,24.32 1 1 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:21.23,23.3 1 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:29.41,31.16 2 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:34.2,35.11 2 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:43.2,43.38 1 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:46.2,46.10 1 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:31.16,33.3 1 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:35.11,39.26 4 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:39.26,41.4 1 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:43.38,45.3 1 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:51.41,53.16 2 1 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:56.2,56.25 1 1 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:59.2,59.10 1 1 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:53.16,55.3 1 1 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:56.25,58.3 1 1 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:64.37,65.23 1 1 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:68.2,68.32 1 1 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:65.23,67.3 1 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:73.41,75.16 2 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:78.2,79.11 2 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:87.2,87.38 1 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:90.2,90.10 1 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:75.16,77.3 1 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:79.11,83.26 4 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:83.26,85.4 1 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:87.38,89.3 1 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:95.41,97.16 2 1 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:100.2,100.25 1 1 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:103.2,103.10 1 1 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:97.16,99.3 1 1 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:100.25,102.3 1 1 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:108.36,109.23 1 1 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:112.2,112.31 1 1 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:109.23,111.3 1 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:117.40,119.16 2 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:122.2,123.11 2 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:131.2,131.38 1 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:134.2,134.10 1 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:119.16,121.3 1 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:123.11,127.26 4 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:127.26,129.4 1 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:131.38,133.3 1 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:139.40,141.16 2 1 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:144.2,144.25 1 1 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:147.2,147.10 1 1 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:141.16,143.3 1 1 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:144.25,146.3 1 1 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:151.31,152.23 1 1 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:155.2,155.25 1 1 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:152.23,154.3 1 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:160.35,163.11 3 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:171.2,171.38 1 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:176.2,176.14 1 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:163.11,165.26 2 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:165.26,166.18 1 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:166.18,168.5 1 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:171.38,172.16 1 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:172.16,174.4 1 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:181.35,182.30 1 1 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:187.2,187.14 1 0 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:182.30,183.16 1 1 +github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:183.16,185.4 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:60.40,61.58 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:64.2,66.12 3 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:61.58,63.3 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:71.44,73.20 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:77.2,77.20 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:84.2,87.25 3 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:93.2,93.28 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:96.2,96.66 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:73.20,75.3 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:77.20,78.19 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:81.3,81.14 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:78.19,80.4 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:87.25,88.13 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:88.13,91.4 2 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:93.28,95.3 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:102.63,103.24 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:106.2,106.25 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:111.2,111.40 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:103.24,105.3 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:106.25,110.3 3 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:115.65,117.16 2 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:120.2,120.23 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:123.2,123.17 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:117.16,119.3 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:120.23,122.3 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:130.77,132.17 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:136.2,137.20 2 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:140.2,140.17 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:148.2,149.16 2 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:152.2,152.44 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:169.2,169.25 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:132.17,134.3 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:137.20,139.3 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:140.17,142.19 2 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:145.3,145.24 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:142.19,144.4 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:149.16,151.3 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:152.44,153.47 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:153.47,155.24 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:158.4,158.24 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:162.4,162.22 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:165.4,166.9 2 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:155.24,157.5 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:158.24,160.5 1 1 +github.com/ethereum/go-ethereum/common/bitutil/compress.go:162.22,164.5 1 1 +github.com/ethereum/go-ethereum/accounts/accounts.go:184.35,187.2 2 1 +github.com/ethereum/go-ethereum/accounts/accounts.go:196.48,201.2 4 1 +github.com/ethereum/go-ethereum/accounts/errors.go:59.46,63.2 1 0 +github.com/ethereum/go-ethereum/accounts/errors.go:66.44,68.2 1 0 +github.com/ethereum/go-ethereum/accounts/hd.go:68.63,73.9 3 1 +github.com/ethereum/go-ethereum/accounts/hd.go:87.2,87.26 1 1 +github.com/ethereum/go-ethereum/accounts/hd.go:90.2,90.39 1 1 +github.com/ethereum/go-ethereum/accounts/hd.go:117.2,117.20 1 1 +github.com/ethereum/go-ethereum/accounts/hd.go:74.28,75.50 1 0 +github.com/ethereum/go-ethereum/accounts/hd.go:77.46,78.116 1 1 +github.com/ethereum/go-ethereum/accounts/hd.go:80.47,81.30 1 1 +github.com/ethereum/go-ethereum/accounts/hd.go:83.10,84.56 1 1 +github.com/ethereum/go-ethereum/accounts/hd.go:87.26,89.3 1 1 +github.com/ethereum/go-ethereum/accounts/hd.go:90.39,96.40 3 1 +github.com/ethereum/go-ethereum/accounts/hd.go:101.3,102.10 2 1 +github.com/ethereum/go-ethereum/accounts/hd.go:105.3,106.66 2 1 +github.com/ethereum/go-ethereum/accounts/hd.go:112.3,115.33 2 1 +github.com/ethereum/go-ethereum/accounts/hd.go:96.40,99.4 2 1 +github.com/ethereum/go-ethereum/accounts/hd.go:102.10,104.4 1 1 +github.com/ethereum/go-ethereum/accounts/hd.go:106.66,107.18 1 1 +github.com/ethereum/go-ethereum/accounts/hd.go:110.4,110.93 1 1 +github.com/ethereum/go-ethereum/accounts/hd.go:107.18,109.5 1 0 +github.com/ethereum/go-ethereum/accounts/hd.go:122.44,124.33 2 1 +github.com/ethereum/go-ethereum/accounts/hd.go:135.2,135.15 1 1 +github.com/ethereum/go-ethereum/accounts/hd.go:124.33,126.30 2 1 +github.com/ethereum/go-ethereum/accounts/hd.go:130.3,131.15 2 1 +github.com/ethereum/go-ethereum/accounts/hd.go:126.30,129.4 2 1 +github.com/ethereum/go-ethereum/accounts/hd.go:131.15,133.4 1 1 +github.com/ethereum/go-ethereum/accounts/hd.go:139.58,141.2 1 0 +github.com/ethereum/go-ethereum/accounts/hd.go:144.59,147.46 3 0 +github.com/ethereum/go-ethereum/accounts/hd.go:150.2,151.12 2 0 +github.com/ethereum/go-ethereum/accounts/hd.go:147.46,149.3 1 0 +github.com/ethereum/go-ethereum/accounts/hd.go:156.65,161.31 4 1 +github.com/ethereum/go-ethereum/accounts/hd.go:161.31,164.3 2 1 +github.com/ethereum/go-ethereum/accounts/hd.go:170.68,175.31 4 1 +github.com/ethereum/go-ethereum/accounts/hd.go:175.31,179.3 2 1 +github.com/ethereum/go-ethereum/accounts/manager.go:66.63,69.35 2 0 +github.com/ethereum/go-ethereum/accounts/manager.go:73.2,76.35 3 0 +github.com/ethereum/go-ethereum/accounts/manager.go:80.2,90.35 2 0 +github.com/ethereum/go-ethereum/accounts/manager.go:94.2,96.11 2 0 +github.com/ethereum/go-ethereum/accounts/manager.go:69.35,71.3 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:76.35,78.3 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:90.35,93.3 2 0 +github.com/ethereum/go-ethereum/accounts/manager.go:100.34,104.2 3 0 +github.com/ethereum/go-ethereum/accounts/manager.go:107.37,109.2 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:113.48,117.2 3 0 +github.com/ethereum/go-ethereum/accounts/manager.go:121.29,123.15 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:133.2,133.6 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:123.15,125.35 2 0 +github.com/ethereum/go-ethereum/accounts/manager.go:128.3,129.19 2 0 +github.com/ethereum/go-ethereum/accounts/manager.go:125.35,127.4 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:133.6,134.10 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:135.30,138.22 2 0 +github.com/ethereum/go-ethereum/accounts/manager.go:144.4,147.23 2 0 +github.com/ethereum/go-ethereum/accounts/manager.go:148.34,157.26 8 0 +github.com/ethereum/go-ethereum/accounts/manager.go:158.26,164.10 3 0 +github.com/ethereum/go-ethereum/accounts/manager.go:139.23,140.49 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:141.23,142.48 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:170.58,175.2 3 0 +github.com/ethereum/go-ethereum/accounts/manager.go:178.39,183.2 3 0 +github.com/ethereum/go-ethereum/accounts/manager.go:186.45,190.2 3 0 +github.com/ethereum/go-ethereum/accounts/manager.go:193.55,198.16 4 0 +github.com/ethereum/go-ethereum/accounts/manager.go:201.2,201.44 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:206.2,206.30 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:198.16,200.3 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:201.44,202.29 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:202.29,204.4 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:210.48,215.36 4 0 +github.com/ethereum/go-ethereum/accounts/manager.go:220.2,220.18 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:215.36,216.45 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:216.45,218.4 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:226.58,230.36 3 0 +github.com/ethereum/go-ethereum/accounts/manager.go:235.2,235.31 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:230.36,231.31 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:231.31,233.4 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:240.74,242.2 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:248.56,249.33 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:257.2,257.14 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:249.33,250.49 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:251.3,251.22 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:255.3,255.71 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:250.49,250.97 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:251.22,253.12 2 0 +github.com/ethereum/go-ethereum/accounts/manager.go:262.55,263.33 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:271.2,271.14 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:263.33,264.49 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:265.3,265.22 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:269.3,269.44 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:264.49,264.97 1 0 +github.com/ethereum/go-ethereum/accounts/manager.go:265.22,267.12 1 0 +github.com/ethereum/go-ethereum/accounts/sort.go:22.44,22.61 1 0 +github.com/ethereum/go-ethereum/accounts/sort.go:23.44,23.71 1 0 +github.com/ethereum/go-ethereum/accounts/sort.go:24.44,24.81 1 0 +github.com/ethereum/go-ethereum/accounts/sort.go:29.43,29.60 1 0 +github.com/ethereum/go-ethereum/accounts/sort.go:30.43,30.70 1 0 +github.com/ethereum/go-ethereum/accounts/sort.go:31.43,31.84 1 0 +github.com/ethereum/go-ethereum/accounts/url.go:44.40,46.39 2 1 +github.com/ethereum/go-ethereum/accounts/url.go:49.2,52.8 1 1 +github.com/ethereum/go-ethereum/accounts/url.go:46.39,48.3 1 1 +github.com/ethereum/go-ethereum/accounts/url.go:56.30,57.20 1 1 +github.com/ethereum/go-ethereum/accounts/url.go:60.2,60.15 1 1 +github.com/ethereum/go-ethereum/accounts/url.go:57.20,59.3 1 1 +github.com/ethereum/go-ethereum/accounts/url.go:64.38,66.19 2 0 +github.com/ethereum/go-ethereum/accounts/url.go:69.2,69.12 1 0 +github.com/ethereum/go-ethereum/accounts/url.go:66.19,68.3 1 0 +github.com/ethereum/go-ethereum/accounts/url.go:73.44,75.2 1 1 +github.com/ethereum/go-ethereum/accounts/url.go:78.49,81.16 3 1 +github.com/ethereum/go-ethereum/accounts/url.go:84.2,85.16 2 1 +github.com/ethereum/go-ethereum/accounts/url.go:88.2,90.12 3 1 +github.com/ethereum/go-ethereum/accounts/url.go:81.16,83.3 1 0 +github.com/ethereum/go-ethereum/accounts/url.go:85.16,87.3 1 0 +github.com/ethereum/go-ethereum/accounts/url.go:99.31,100.28 1 1 +github.com/ethereum/go-ethereum/accounts/url.go:103.2,103.46 1 1 +github.com/ethereum/go-ethereum/accounts/url.go:100.28,102.3 1 1 +github.com/ethereum/go-ethereum/common/size.go:28.38,29.23 1 1 +github.com/ethereum/go-ethereum/common/size.go:29.23,31.3 1 0 +github.com/ethereum/go-ethereum/common/size.go:31.8,31.27 1 1 +github.com/ethereum/go-ethereum/common/size.go:31.27,33.3 1 0 +github.com/ethereum/go-ethereum/common/size.go:33.8,33.24 1 1 +github.com/ethereum/go-ethereum/common/size.go:33.24,35.3 1 1 +github.com/ethereum/go-ethereum/common/size.go:35.8,35.21 1 1 +github.com/ethereum/go-ethereum/common/size.go:35.21,37.3 1 1 +github.com/ethereum/go-ethereum/common/size.go:37.8,39.3 1 1 +github.com/ethereum/go-ethereum/common/size.go:44.46,45.23 1 0 +github.com/ethereum/go-ethereum/common/size.go:45.23,47.3 1 0 +github.com/ethereum/go-ethereum/common/size.go:47.8,47.27 1 0 +github.com/ethereum/go-ethereum/common/size.go:47.27,49.3 1 0 +github.com/ethereum/go-ethereum/common/size.go:49.8,49.24 1 0 +github.com/ethereum/go-ethereum/common/size.go:49.24,51.3 1 0 +github.com/ethereum/go-ethereum/common/size.go:51.8,51.21 1 0 +github.com/ethereum/go-ethereum/common/size.go:51.21,53.3 1 0 +github.com/ethereum/go-ethereum/common/size.go:53.8,55.3 1 0 +github.com/ethereum/go-ethereum/common/test_utils.go:26.51,28.16 2 0 +github.com/ethereum/go-ethereum/common/test_utils.go:31.2,31.53 1 0 +github.com/ethereum/go-ethereum/common/test_utils.go:38.2,38.12 1 0 +github.com/ethereum/go-ethereum/common/test_utils.go:28.16,30.3 1 0 +github.com/ethereum/go-ethereum/common/test_utils.go:31.53,32.51 1 0 +github.com/ethereum/go-ethereum/common/test_utils.go:36.3,36.65 1 0 +github.com/ethereum/go-ethereum/common/test_utils.go:32.51,35.4 2 0 +github.com/ethereum/go-ethereum/common/test_utils.go:42.53,44.33 2 0 +github.com/ethereum/go-ethereum/common/test_utils.go:52.2,52.8 1 0 +github.com/ethereum/go-ethereum/common/test_utils.go:44.33,45.25 1 0 +github.com/ethereum/go-ethereum/common/test_utils.go:48.3,48.16 1 0 +github.com/ethereum/go-ethereum/common/test_utils.go:45.25,47.4 1 0 +github.com/ethereum/go-ethereum/common/test_utils.go:48.16,50.4 1 0 +github.com/ethereum/go-ethereum/common/types.go:53.33,57.2 3 1 +github.com/ethereum/go-ethereum/common/types.go:61.33,61.66 1 0 +github.com/ethereum/go-ethereum/common/types.go:65.31,65.65 1 0 +github.com/ethereum/go-ethereum/common/types.go:68.30,68.45 1 0 +github.com/ethereum/go-ethereum/common/types.go:71.30,71.68 1 0 +github.com/ethereum/go-ethereum/common/types.go:74.28,74.59 1 0 +github.com/ethereum/go-ethereum/common/types.go:78.39,80.2 1 0 +github.com/ethereum/go-ethereum/common/types.go:84.31,86.2 1 0 +github.com/ethereum/go-ethereum/common/types.go:90.43,95.11 4 1 +github.com/ethereum/go-ethereum/common/types.go:96.16,97.19 1 1 +github.com/ethereum/go-ethereum/common/types.go:100.3,100.15 1 1 +github.com/ethereum/go-ethereum/common/types.go:103.3,103.14 1 1 +github.com/ethereum/go-ethereum/common/types.go:104.16,105.16 1 1 +github.com/ethereum/go-ethereum/common/types.go:106.11,110.13 4 1 +github.com/ethereum/go-ethereum/common/types.go:111.11,112.35 1 1 +github.com/ethereum/go-ethereum/common/types.go:113.10,114.41 1 1 +github.com/ethereum/go-ethereum/common/types.go:97.19,99.4 1 1 +github.com/ethereum/go-ethereum/common/types.go:100.15,102.4 1 1 +github.com/ethereum/go-ethereum/common/types.go:119.50,121.2 1 0 +github.com/ethereum/go-ethereum/common/types.go:124.50,126.2 1 1 +github.com/ethereum/go-ethereum/common/types.go:129.45,131.2 1 0 +github.com/ethereum/go-ethereum/common/types.go:135.35,136.21 1 1 +github.com/ethereum/go-ethereum/common/types.go:140.2,140.32 1 1 +github.com/ethereum/go-ethereum/common/types.go:136.21,138.3 1 0 +github.com/ethereum/go-ethereum/common/types.go:144.65,146.34 2 0 +github.com/ethereum/go-ethereum/common/types.go:149.2,149.27 1 0 +github.com/ethereum/go-ethereum/common/types.go:146.34,148.3 1 0 +github.com/ethereum/go-ethereum/common/types.go:153.44,155.9 2 1 +github.com/ethereum/go-ethereum/common/types.go:158.2,158.29 1 1 +github.com/ethereum/go-ethereum/common/types.go:161.2,162.12 2 1 +github.com/ethereum/go-ethereum/common/types.go:155.9,157.3 1 1 +github.com/ethereum/go-ethereum/common/types.go:158.29,160.3 1 1 +github.com/ethereum/go-ethereum/common/types.go:166.45,168.2 1 1 +github.com/ethereum/go-ethereum/common/types.go:171.53,171.81 1 0 +github.com/ethereum/go-ethereum/common/types.go:174.58,176.31 2 0 +github.com/ethereum/go-ethereum/common/types.go:182.2,182.12 1 0 +github.com/ethereum/go-ethereum/common/types.go:177.14,178.39 1 0 +github.com/ethereum/go-ethereum/common/types.go:179.10,180.57 1 0 +github.com/ethereum/go-ethereum/common/types.go:189.60,191.2 1 0 +github.com/ethereum/go-ethereum/common/types.go:194.55,196.2 1 0 +github.com/ethereum/go-ethereum/common/types.go:205.39,209.2 3 1 +github.com/ethereum/go-ethereum/common/types.go:213.39,213.75 1 0 +github.com/ethereum/go-ethereum/common/types.go:217.37,217.74 1 1 +github.com/ethereum/go-ethereum/common/types.go:221.34,222.20 1 1 +github.com/ethereum/go-ethereum/common/types.go:225.2,225.46 1 1 +github.com/ethereum/go-ethereum/common/types.go:222.20,224.3 1 1 +github.com/ethereum/go-ethereum/common/types.go:229.33,229.48 1 1 +github.com/ethereum/go-ethereum/common/types.go:232.30,232.58 1 0 +github.com/ethereum/go-ethereum/common/types.go:235.31,237.2 1 1 +github.com/ethereum/go-ethereum/common/types.go:240.34,242.2 1 0 +github.com/ethereum/go-ethereum/common/types.go:244.40,251.32 5 1 +github.com/ethereum/go-ethereum/common/types.go:262.2,262.15 1 1 +github.com/ethereum/go-ethereum/common/types.go:251.32,253.15 2 1 +github.com/ethereum/go-ethereum/common/types.go:258.3,258.35 1 1 +github.com/ethereum/go-ethereum/common/types.go:253.15,255.4 1 1 +github.com/ethereum/go-ethereum/common/types.go:255.9,257.4 1 1 +github.com/ethereum/go-ethereum/common/types.go:258.35,260.4 1 1 +github.com/ethereum/go-ethereum/common/types.go:265.31,270.2 4 1 +github.com/ethereum/go-ethereum/common/types.go:274.46,275.11 1 1 +github.com/ethereum/go-ethereum/common/types.go:276.16,277.27 1 1 +github.com/ethereum/go-ethereum/common/types.go:278.11,282.13 4 1 +github.com/ethereum/go-ethereum/common/types.go:283.16,286.19 2 1 +github.com/ethereum/go-ethereum/common/types.go:289.3,289.15 1 1 +github.com/ethereum/go-ethereum/common/types.go:292.3,292.15 1 1 +github.com/ethereum/go-ethereum/common/types.go:293.11,294.35 1 1 +github.com/ethereum/go-ethereum/common/types.go:295.10,296.44 1 1 +github.com/ethereum/go-ethereum/common/types.go:286.19,288.4 1 1 +github.com/ethereum/go-ethereum/common/types.go:289.15,291.4 1 1 +github.com/ethereum/go-ethereum/common/types.go:302.38,303.21 1 1 +github.com/ethereum/go-ethereum/common/types.go:306.2,306.35 1 1 +github.com/ethereum/go-ethereum/common/types.go:303.21,305.3 1 0 +github.com/ethereum/go-ethereum/common/types.go:310.48,312.2 1 0 +github.com/ethereum/go-ethereum/common/types.go:315.53,317.2 1 0 +github.com/ethereum/go-ethereum/common/types.go:320.53,322.2 1 1 +github.com/ethereum/go-ethereum/common/types.go:325.47,327.9 2 1 +github.com/ethereum/go-ethereum/common/types.go:330.2,330.32 1 1 +github.com/ethereum/go-ethereum/common/types.go:333.2,334.12 2 1 +github.com/ethereum/go-ethereum/common/types.go:327.9,329.3 1 1 +github.com/ethereum/go-ethereum/common/types.go:330.32,332.3 1 1 +github.com/ethereum/go-ethereum/common/types.go:338.48,340.2 1 1 +github.com/ethereum/go-ethereum/common/types.go:343.58,343.86 1 0 +github.com/ethereum/go-ethereum/common/types.go:346.61,348.31 2 0 +github.com/ethereum/go-ethereum/common/types.go:354.2,354.12 1 0 +github.com/ethereum/go-ethereum/common/types.go:349.14,350.39 1 0 +github.com/ethereum/go-ethereum/common/types.go:351.10,352.60 1 0 +github.com/ethereum/go-ethereum/common/types.go:361.63,363.2 1 0 +github.com/ethereum/go-ethereum/common/types.go:366.58,368.2 1 0 +github.com/ethereum/go-ethereum/common/types.go:378.57,380.2 1 0 +github.com/ethereum/go-ethereum/common/types.go:383.79,384.28 1 0 +github.com/ethereum/go-ethereum/common/types.go:387.2,388.75 2 0 +github.com/ethereum/go-ethereum/common/types.go:384.28,386.3 1 0 +github.com/ethereum/go-ethereum/common/types.go:392.63,393.80 1 1 +github.com/ethereum/go-ethereum/common/types.go:396.2,396.44 1 1 +github.com/ethereum/go-ethereum/common/types.go:393.80,395.3 1 1 +github.com/ethereum/go-ethereum/common/types.go:400.59,401.82 1 0 +github.com/ethereum/go-ethereum/common/types.go:404.2,404.55 1 0 +github.com/ethereum/go-ethereum/common/types.go:401.82,403.3 1 0 +github.com/ethereum/go-ethereum/common/types.go:408.47,410.2 1 0 +github.com/ethereum/go-ethereum/common/types.go:413.45,414.24 1 0 +github.com/ethereum/go-ethereum/common/types.go:417.2,417.56 1 0 +github.com/ethereum/go-ethereum/common/types.go:414.24,416.3 1 0 +github.com/ethereum/go-ethereum/common/types.go:421.50,423.2 1 1 +github.com/ethereum/go-ethereum/common/types.go:426.47,428.2 1 0 +github.com/ethereum/go-ethereum/common/bytes.go:26.31,27.20 1 1 +github.com/ethereum/go-ethereum/common/bytes.go:30.2,30.19 1 1 +github.com/ethereum/go-ethereum/common/bytes.go:33.2,33.21 1 1 +github.com/ethereum/go-ethereum/common/bytes.go:27.20,29.3 1 1 +github.com/ethereum/go-ethereum/common/bytes.go:30.19,32.3 1 1 +github.com/ethereum/go-ethereum/common/bytes.go:37.47,38.14 1 1 +github.com/ethereum/go-ethereum/common/bytes.go:41.2,44.8 3 1 +github.com/ethereum/go-ethereum/common/bytes.go:38.14,40.3 1 0 +github.com/ethereum/go-ethereum/common/bytes.go:48.35,50.2 1 1 +github.com/ethereum/go-ethereum/common/bytes.go:53.34,55.2 1 1 +github.com/ethereum/go-ethereum/common/bytes.go:58.29,59.21 1 1 +github.com/ethereum/go-ethereum/common/bytes.go:62.2,62.32 1 1 +github.com/ethereum/go-ethereum/common/bytes.go:67.2,67.13 1 1 +github.com/ethereum/go-ethereum/common/bytes.go:59.21,61.3 1 1 +github.com/ethereum/go-ethereum/common/bytes.go:62.32,63.25 1 1 +github.com/ethereum/go-ethereum/common/bytes.go:63.25,65.4 1 1 +github.com/ethereum/go-ethereum/common/bytes.go:71.33,73.2 1 0 +github.com/ethereum/go-ethereum/common/bytes.go:76.35,79.2 2 1 +github.com/ethereum/go-ethereum/common/bytes.go:82.50,84.20 2 0 +github.com/ethereum/go-ethereum/common/bytes.go:87.2,87.19 1 0 +github.com/ethereum/go-ethereum/common/bytes.go:90.2,92.11 3 0 +github.com/ethereum/go-ethereum/common/bytes.go:84.20,86.3 1 0 +github.com/ethereum/go-ethereum/common/bytes.go:87.19,89.3 1 0 +github.com/ethereum/go-ethereum/common/bytes.go:96.48,97.21 1 1 +github.com/ethereum/go-ethereum/common/bytes.go:101.2,104.15 3 1 +github.com/ethereum/go-ethereum/common/bytes.go:97.21,99.3 1 1 +github.com/ethereum/go-ethereum/common/bytes.go:108.47,109.21 1 1 +github.com/ethereum/go-ethereum/common/bytes.go:113.2,116.15 3 1 +github.com/ethereum/go-ethereum/common/bytes.go:109.21,111.3 1 1 +github.com/ethereum/go-ethereum/common/bytes.go:120.38,122.28 2 0 +github.com/ethereum/go-ethereum/common/bytes.go:127.2,127.16 1 0 +github.com/ethereum/go-ethereum/common/bytes.go:122.28,123.18 1 0 +github.com/ethereum/go-ethereum/common/bytes.go:123.18,124.9 1 0 +github.com/ethereum/go-ethereum/common/bytes.go:131.39,133.23 2 1 +github.com/ethereum/go-ethereum/common/bytes.go:138.2,138.16 1 1 +github.com/ethereum/go-ethereum/common/bytes.go:133.23,134.20 1 1 +github.com/ethereum/go-ethereum/common/bytes.go:134.20,135.9 1 1 +github.com/ethereum/go-ethereum/common/debug.go:28.35,38.2 6 0 +github.com/ethereum/go-ethereum/common/debug.go:41.42,52.2 3 0 +github.com/ethereum/go-ethereum/common/format.go:34.41,36.65 2 0 +github.com/ethereum/go-ethereum/common/format.go:39.2,39.14 1 0 +github.com/ethereum/go-ethereum/common/format.go:36.65,38.3 1 0 +github.com/ethereum/go-ethereum/common/format.go:62.36,65.24 2 0 +github.com/ethereum/go-ethereum/common/format.go:69.2,71.32 2 0 +github.com/ethereum/go-ethereum/common/format.go:81.2,81.15 1 0 +github.com/ethereum/go-ethereum/common/format.go:65.24,67.3 1 0 +github.com/ethereum/go-ethereum/common/format.go:71.32,72.23 1 0 +github.com/ethereum/go-ethereum/common/format.go:72.23,76.28 3 0 +github.com/ethereum/go-ethereum/common/format.go:76.28,77.10 1 0 +github.com/ethereum/go-ethereum/common/path.go:29.44,31.2 1 0 +github.com/ethereum/go-ethereum/common/path.go:34.38,36.38 2 0 +github.com/ethereum/go-ethereum/common/path.go:40.2,40.13 1 0 +github.com/ethereum/go-ethereum/common/path.go:36.38,38.3 1 0 +github.com/ethereum/go-ethereum/common/path.go:44.59,45.30 1 0 +github.com/ethereum/go-ethereum/common/path.go:48.2,48.41 1 0 +github.com/ethereum/go-ethereum/common/path.go:45.30,47.3 1 0 +github.com/ethereum/go-ethereum/common/compiler/helpers.go:55.49,57.29 2 0 +github.com/ethereum/go-ethereum/common/compiler/helpers.go:64.2,64.29 1 0 +github.com/ethereum/go-ethereum/common/compiler/helpers.go:57.29,59.17 2 0 +github.com/ethereum/go-ethereum/common/compiler/helpers.go:62.3,62.24 1 0 +github.com/ethereum/go-ethereum/common/compiler/helpers.go:59.17,61.4 1 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:61.40,67.47 2 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:70.2,70.10 1 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:67.47,69.3 1 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:74.54,75.16 1 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:78.2,82.16 5 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:85.2,86.23 2 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:89.2,90.57 2 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:93.2,93.57 1 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:96.2,96.57 1 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:99.2,99.15 1 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:75.16,77.3 1 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:82.16,84.3 1 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:86.23,88.3 1 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:90.57,92.3 1 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:93.57,95.3 1 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:96.57,98.3 1 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:103.79,104.22 1 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:107.2,108.16 2 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:111.2,114.27 4 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:104.22,106.3 1 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:108.16,110.3 1 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:118.88,119.27 1 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:122.2,123.16 2 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:126.2,127.16 2 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:130.2,132.27 3 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:119.27,121.3 1 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:123.16,125.3 1 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:127.16,129.3 1 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:135.84,139.34 4 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:142.2,142.105 1 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:139.34,141.3 1 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:154.162,156.62 2 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:161.2,162.43 2 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:191.2,191.23 1 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:156.62,159.3 1 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:162.43,165.64 2 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:168.3,189.4 4 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:165.64,167.4 1 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:196.164,198.62 2 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:202.2,203.43 2 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:223.2,223.23 1 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:198.62,200.3 1 0 +github.com/ethereum/go-ethereum/common/compiler/solidity.go:203.43,222.3 1 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:36.37,41.2 2 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:44.49,45.17 1 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:48.2,52.16 5 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:55.2,56.23 2 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:59.2,60.57 2 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:63.2,63.57 1 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:66.2,66.57 1 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:69.2,69.15 1 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:45.17,47.3 1 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:52.16,54.3 1 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:56.23,58.3 1 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:60.57,62.3 1 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:63.57,65.3 1 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:66.57,68.3 1 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:73.86,74.27 1 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:77.2,78.16 2 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:81.2,82.16 2 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:85.2,87.27 3 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:74.27,76.3 1 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:78.16,80.3 1 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:82.16,84.3 1 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:90.81,94.34 4 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:98.2,98.102 1 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:94.34,96.3 1 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:110.159,112.62 2 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:117.2,118.33 2 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:143.2,143.23 1 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:112.62,114.3 1 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:118.33,120.24 1 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:123.3,141.4 2 0 +github.com/ethereum/go-ethereum/common/compiler/vyper.go:120.24,121.12 1 0 +github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:27.40,30.73 2 1 +github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:34.2,35.21 2 1 +github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:38.2,38.73 1 1 +github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:42.2,42.73 1 1 +github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:45.2,45.23 1 1 +github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:30.73,32.3 1 0 +github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:35.21,37.3 1 1 +github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:38.73,40.3 1 0 +github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:42.73,44.3 1 0 +github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:50.29,52.73 2 1 +github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:55.2,55.28 1 1 +github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:52.73,54.3 1 0 +github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:60.29,63.73 2 1 +github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:67.2,67.27 1 1 +github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:70.2,70.28 1 1 +github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:63.73,65.3 1 0 +github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:67.27,69.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:78.123,91.2 6 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:96.86,98.2 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:101.42,104.2 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:108.37,112.84 3 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:117.2,117.28 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:112.84,113.13 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:121.39,126.2 3 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:128.58,129.112 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:131.2,132.86 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:129.113,129.114 0 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:147.80,151.45 3 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:154.2,155.16 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:158.2,159.12 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:151.45,153.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:155.16,157.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:163.114,164.86 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:167.2,168.16 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:171.2,171.43 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:164.86,166.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:168.16,170.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:175.119,180.16 4 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:184.2,184.39 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:180.16,182.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:188.124,193.16 4 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:197.2,197.42 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:193.16,195.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:201.120,206.16 4 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:210.2,210.40 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:206.16,208.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:214.139,219.16 4 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:223.2,224.20 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:219.16,221.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:228.112,233.20 4 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:236.2,236.21 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:233.20,235.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:243.121,248.15 4 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:251.2,252.15 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:255.2,255.38 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:248.15,250.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:252.15,254.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:259.101,264.2 3 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:267.101,268.35 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:272.2,273.18 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:277.2,277.34 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:268.35,270.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:273.18,275.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:282.102,287.2 3 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:291.102,292.63 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:296.2,297.18 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:301.2,301.19 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:292.63,294.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:297.18,299.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:305.103,309.35 3 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:313.2,314.19 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:318.2,318.20 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:309.35,311.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:314.19,316.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:323.103,327.61 3 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:331.2,331.67 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:327.61,329.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:335.103,339.40 3 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:343.2,344.18 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:348.2,348.46 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:339.40,341.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:344.18,346.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:352.131,356.40 3 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:365.2,366.18 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:370.2,371.39 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:375.2,375.33 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:356.40,358.40 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:362.3,362.34 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:358.40,360.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:366.18,368.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:371.39,373.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:379.104,384.2 3 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:386.64,389.22 3 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:392.2,395.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:389.22,391.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:407.39,409.2 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:412.47,414.2 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:417.123,421.86 3 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:424.2,425.16 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:428.2,429.16 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:433.2,433.27 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:436.2,436.30 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:421.86,423.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:425.16,427.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:429.16,431.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:433.27,435.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:440.108,446.16 5 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:450.2,450.27 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:453.2,453.30 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:446.16,448.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:450.27,452.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:458.104,463.2 3 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:467.83,471.44 3 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:474.2,474.27 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:471.44,473.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:479.84,481.2 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:485.100,495.30 4 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:501.2,502.78 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:512.2,512.26 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:532.2,535.70 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:551.2,551.16 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:568.2,568.15 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:584.2,584.16 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:495.30,497.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:497.8,499.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:502.78,504.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:504.8,504.33 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:504.33,506.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:506.8,506.34 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:506.34,508.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:508.8,510.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:512.26,515.24 3 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:521.3,522.54 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:515.24,516.38 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:519.4,519.40 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:516.38,518.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:522.54,524.23 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:527.4,529.27 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:524.23,526.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:535.70,542.17 5 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:548.3,548.32 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:542.17,543.44 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:546.4,546.25 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:543.44,545.5 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:551.16,558.17 3 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:561.3,561.13 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:558.17,560.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:561.13,563.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:563.9,565.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:568.15,570.17 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:573.3,573.13 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:570.17,572.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:573.13,574.53 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:581.4,581.68 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:574.53,575.33 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:578.5,578.25 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:575.33,577.6 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:589.160,591.78 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:594.2,595.50 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:622.2,622.19 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:625.2,625.23 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:629.2,641.68 8 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:591.78,593.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:595.50,597.27 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:600.3,600.64 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:597.27,599.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:601.8,603.27 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:603.27,606.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:606.9,608.29 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:611.4,611.29 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:615.4,616.66 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:608.29,610.5 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:611.29,613.5 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:616.66,618.5 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:622.19,624.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:625.23,627.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:645.94,651.16 4 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:655.2,657.16 3 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:660.2,661.25 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:665.2,665.124 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:671.2,675.12 4 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:651.16,653.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:657.16,659.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:661.25,663.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:665.124,666.52 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:669.3,669.41 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:666.52,668.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:682.109,684.28 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:701.2,702.16 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:705.2,706.28 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:709.2,709.17 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:684.28,687.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:687.8,690.29 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:693.3,694.27 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:698.3,698.117 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:690.29,692.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:694.27,696.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:702.16,704.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:706.28,708.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:714.149,719.16 3 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:723.2,723.64 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:719.16,721.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:723.64,725.7 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:725.7,726.11 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:727.24,728.31 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:737.28,738.15 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:739.16,740.15 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:728.31,729.13 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:730.23,730.23 0 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:731.30,732.17 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:733.18,734.17 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:747.122,752.64 3 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:752.64,754.7 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:754.7,755.11 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:756.24,757.12 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:764.28,765.15 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:766.16,767.15 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:758.21,758.21 0 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:759.29,760.16 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:761.17,762.16 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:775.71,779.45 3 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:783.2,783.146 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:786.2,791.12 4 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:779.45,781.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:783.146,785.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:795.58,797.2 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:804.48,804.73 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:805.48,805.60 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:806.48,806.63 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:807.48,807.71 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:808.48,808.77 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:809.48,809.78 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:810.48,810.78 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:811.48,811.72 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:812.48,812.74 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:813.48,813.73 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:814.48,814.79 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:823.52,823.68 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:824.52,824.76 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:826.108,827.36 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:830.2,830.60 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:827.36,829.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:833.101,835.2 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:837.101,839.19 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:842.2,842.70 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:839.19,841.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:845.97,847.19 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:850.2,851.21 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:854.2,855.35 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:858.2,858.18 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:847.19,849.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:851.21,853.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:855.35,857.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:861.94,863.2 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:865.92,867.2 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:869.104,871.2 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:873.88,875.2 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:877.95,879.2 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:881.57,881.75 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:883.91,884.24 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:887.44,888.64 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:888.64,891.3 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/bor_simulated.go:13.108,15.19 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/bor_simulated.go:18.2,19.20 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/bor_simulated.go:23.2,23.21 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/bor_simulated.go:15.19,17.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/bor_simulated.go:19.20,21.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/bor_simulated.go:26.103,28.34 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/bor_simulated.go:32.2,32.26 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/bor_simulated.go:28.34,30.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/backends/bor_simulated.go:36.100,38.2 1 1 +github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:31.65,32.21 1 1 +github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:35.2,35.47 1 1 +github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:32.21,34.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:40.54,41.64 1 1 +github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:45.2,45.43 1 1 +github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:49.2,49.48 1 1 +github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:55.2,55.57 1 1 +github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:58.2,58.12 1 1 +github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:41.64,43.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:45.43,47.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:49.48,50.20 1 1 +github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:50.20,52.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:55.57,57.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:63.51,64.38 1 1 +github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:69.2,69.40 1 1 +github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:64.38,66.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:69.40,71.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:71.8,71.57 1 1 +github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:71.57,73.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:73.8,75.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:80.47,82.2 1 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:13.27,15.2 1 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:17.27,19.2 1 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:21.38,23.2 1 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:25.81,26.33 1 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:29.2,31.73 3 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:34.2,34.40 1 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:41.2,41.72 1 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:26.33,28.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:31.73,33.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:34.40,36.81 2 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:39.3,39.13 1 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:36.81,37.9 1 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:44.72,46.2 1 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:48.76,50.16 2 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:54.2,54.38 1 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:67.2,67.30 1 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:50.16,52.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:54.38,57.41 3 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:61.3,61.39 1 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:64.3,65.18 2 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:57.41,60.4 2 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:61.39,63.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:70.82,71.64 1 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:74.2,75.16 2 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:78.2,79.38 2 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:86.2,86.38 1 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:89.2,89.30 1 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:71.64,73.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:75.16,77.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:79.38,81.17 2 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:84.3,84.38 1 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:81.17,83.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:86.38,88.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:92.71,93.33 1 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:96.2,96.33 1 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:93.33,95.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:96.33,98.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:98.8,100.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:103.69,105.27 2 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:120.2,120.23 1 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:105.27,108.32 2 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:108.32,110.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:110.9,110.55 1 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:110.55,112.18 2 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:115.4,115.93 1 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:112.18,114.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:116.9,118.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:127.74,129.16 2 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:132.2,133.56 2 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:141.2,141.19 1 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:146.2,147.16 2 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:151.2,151.60 1 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:129.16,131.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:133.56,135.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:135.8,137.17 2 1 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:137.17,139.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:141.19,143.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:147.16,149.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:36.50,37.21 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:52.2,52.18 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:37.21,38.19 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:39.10,40.22 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:41.11,42.48 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:43.11,44.48 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:45.11,46.48 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:47.11,49.35 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:53.9,54.27 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:55.10,56.54 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:57.10,58.54 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:59.10,60.54 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:61.10,67.24 2 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:72.3,72.13 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:67.24,71.4 3 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:77.42,78.30 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:83.2,83.18 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:78.30,79.13 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:79.13,81.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:84.9,85.20 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:86.9,87.19 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:88.10,89.27 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:96.73,97.23 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:100.2,100.67 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:105.2,105.8 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:97.23,99.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:100.67,102.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:102.8,104.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:109.63,110.25 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:114.2,117.31 3 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:110.25,112.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:122.81,123.14 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:126.2,126.33 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:131.2,133.20 2 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:145.2,147.57 2 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:158.2,158.34 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:123.14,125.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:126.33,128.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:133.20,136.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:136.8,136.27 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:136.27,139.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:139.8,141.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:147.57,149.17 2 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:154.3,154.48 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:149.17,151.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:161.65,164.40 3 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:188.2,188.32 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:164.40,166.49 2 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:183.3,183.17 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:186.3,186.60 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:166.49,178.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:178.9,178.56 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:178.56,182.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:183.17,185.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:193.70,194.28 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:198.2,205.30 2 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:214.2,214.13 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:194.28,196.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:205.30,207.17 2 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:207.17,209.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:210.8,212.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:215.15,216.23 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:223.3,223.43 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:224.15,225.53 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:226.15,227.29 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:234.3,234.53 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:235.16,236.51 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:237.21,238.43 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:239.14,240.32 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:241.17,242.50 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:243.14,244.47 1 0 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:245.15,246.43 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:247.20,248.41 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:249.18,250.43 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:251.10,252.54 1 0 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:216.23,218.18 2 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:221.4,221.44 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:218.18,220.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:227.29,229.36 2 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:232.4,232.55 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:229.36,231.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:257.88,262.40 4 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:266.2,266.32 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:270.2,276.29 6 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:280.2,280.37 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:283.2,285.8 3 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:262.40,264.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:266.32,268.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:276.29,278.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:280.37,282.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:289.69,293.31 3 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:296.2,296.26 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:299.2,299.34 1 1 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:293.31,295.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/unpack.go:296.26,298.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/error.go:42.52,47.31 3 1 +github.com/ethereum/go-ethereum/accounts/abi/error.go:66.2,76.3 4 1 +github.com/ethereum/go-ethereum/accounts/abi/error.go:47.31,48.23 1 1 +github.com/ethereum/go-ethereum/accounts/abi/error.go:58.3,59.20 2 1 +github.com/ethereum/go-ethereum/accounts/abi/error.go:63.3,63.33 1 1 +github.com/ethereum/go-ethereum/accounts/abi/error.go:48.23,54.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/error.go:54.9,56.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/error.go:59.20,61.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/error.go:79.33,81.2 1 0 +github.com/ethereum/go-ethereum/accounts/abi/error.go:83.58,84.19 1 0 +github.com/ethereum/go-ethereum/accounts/abi/error.go:87.2,87.38 1 0 +github.com/ethereum/go-ethereum/accounts/abi/error.go:90.2,90.34 1 0 +github.com/ethereum/go-ethereum/accounts/abi/error.go:84.19,86.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/error.go:87.38,89.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/event.go:59.77,64.31 3 1 +github.com/ethereum/go-ethereum/accounts/abi/event.go:83.2,95.3 4 1 +github.com/ethereum/go-ethereum/accounts/abi/event.go:64.31,65.23 1 1 +github.com/ethereum/go-ethereum/accounts/abi/event.go:75.3,76.20 2 1 +github.com/ethereum/go-ethereum/accounts/abi/event.go:80.3,80.33 1 1 +github.com/ethereum/go-ethereum/accounts/abi/event.go:65.23,71.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/event.go:71.9,73.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/event.go:76.20,78.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/event.go:98.32,100.2 1 1 +github.com/ethereum/go-ethereum/accounts/abi/method.go:94.155,100.31 2 1 +github.com/ethereum/go-ethereum/accounts/abi/method.go:104.2,104.33 1 1 +github.com/ethereum/go-ethereum/accounts/abi/method.go:112.2,116.25 2 1 +github.com/ethereum/go-ethereum/accounts/abi/method.go:122.2,123.27 2 1 +github.com/ethereum/go-ethereum/accounts/abi/method.go:126.2,126.17 1 1 +github.com/ethereum/go-ethereum/accounts/abi/method.go:129.2,130.25 2 1 +github.com/ethereum/go-ethereum/accounts/abi/method.go:137.2,151.3 2 1 +github.com/ethereum/go-ethereum/accounts/abi/method.go:100.31,103.3 2 1 +github.com/ethereum/go-ethereum/accounts/abi/method.go:104.33,106.27 2 1 +github.com/ethereum/go-ethereum/accounts/abi/method.go:106.27,108.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/method.go:116.25,119.3 2 1 +github.com/ethereum/go-ethereum/accounts/abi/method.go:123.27,125.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/method.go:126.17,128.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/method.go:130.25,132.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/method.go:132.8,132.31 1 1 +github.com/ethereum/go-ethereum/accounts/abi/method.go:132.31,134.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/method.go:134.8,134.35 1 1 +github.com/ethereum/go-ethereum/accounts/abi/method.go:134.35,136.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/method.go:154.38,156.2 1 1 +github.com/ethereum/go-ethereum/accounts/abi/method.go:159.40,161.2 1 0 +github.com/ethereum/go-ethereum/accounts/abi/method.go:165.39,167.2 1 0 +github.com/ethereum/go-ethereum/accounts/abi/pack.go:31.49,34.2 2 1 +github.com/ethereum/go-ethereum/accounts/abi/pack.go:38.70,39.13 1 1 +github.com/ethereum/go-ethereum/accounts/abi/pack.go:40.21,41.36 1 1 +github.com/ethereum/go-ethereum/accounts/abi/pack.go:42.16,43.80 1 1 +github.com/ethereum/go-ethereum/accounts/abi/pack.go:44.17,45.43 1 1 +github.com/ethereum/go-ethereum/accounts/abi/pack.go:49.3,49.60 1 1 +github.com/ethereum/go-ethereum/accounts/abi/pack.go:50.14,51.26 1 1 +github.com/ethereum/go-ethereum/accounts/abi/pack.go:54.3,54.51 1 1 +github.com/ethereum/go-ethereum/accounts/abi/pack.go:55.15,56.43 1 1 +github.com/ethereum/go-ethereum/accounts/abi/pack.go:59.3,59.54 1 1 +github.com/ethereum/go-ethereum/accounts/abi/pack.go:62.3,62.71 1 1 +github.com/ethereum/go-ethereum/accounts/abi/pack.go:63.32,64.43 1 1 +github.com/ethereum/go-ethereum/accounts/abi/pack.go:67.3,67.61 1 1 +github.com/ethereum/go-ethereum/accounts/abi/pack.go:68.10,69.79 1 0 +github.com/ethereum/go-ethereum/accounts/abi/pack.go:45.43,47.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/pack.go:51.26,53.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/pack.go:56.43,58.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/pack.go:59.54,61.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/pack.go:64.43,66.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/pack.go:74.42,75.36 1 1 +github.com/ethereum/go-ethereum/accounts/abi/pack.go:76.83,77.62 1 1 +github.com/ethereum/go-ethereum/accounts/abi/pack.go:78.78,79.49 1 1 +github.com/ethereum/go-ethereum/accounts/abi/pack.go:80.19,81.72 1 1 +github.com/ethereum/go-ethereum/accounts/abi/pack.go:82.10,83.28 1 0 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:38.65,40.49 2 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:44.2,44.73 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:47.2,47.14 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:40.49,42.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:44.73,45.13 1 0 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:52.46,53.77 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:56.2,56.10 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:53.77,55.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:61.59,62.14 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:74.2,74.14 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:84.2,84.35 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:62.14,63.15 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:64.10,65.35 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:66.11,67.36 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:68.11,69.36 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:70.11,71.36 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:75.9,76.33 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:77.10,78.34 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:79.10,80.34 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:81.10,82.34 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:89.62,93.2 3 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:99.40,101.9 2 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:117.2,117.12 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:102.67,103.30 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:104.84,105.30 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:106.53,107.15 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:108.90,109.28 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:110.39,111.28 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:112.40,113.29 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:114.10,115.81 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:123.45,125.33 2 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:130.2,130.18 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:134.2,134.65 1 0 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:125.33,126.59 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:126.59,128.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:130.18,133.3 2 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:137.45,138.31 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:141.2,143.27 3 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:146.2,146.27 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:151.2,151.18 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:155.2,155.65 1 0 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:138.31,140.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:143.27,145.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:146.27,147.59 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:147.59,149.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:151.18,154.3 2 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:158.46,159.38 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:169.2,169.12 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:159.38,162.49 3 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:165.3,165.49 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:162.49,164.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:165.49,167.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:179.99,186.38 4 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:222.2,222.35 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:259.2,259.24 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:186.38,190.66 2 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:194.3,195.10 2 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:199.3,199.20 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:203.3,204.32 2 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:216.3,216.13 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:190.66,191.12 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:195.10,196.12 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:199.20,201.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:204.32,205.22 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:205.22,206.30 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:210.5,212.17 3 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:206.30,208.6 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:216.13,218.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:222.35,226.28 2 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:234.3,234.32 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:244.3,244.40 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:248.3,248.51 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:226.28,228.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:234.32,237.50 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:240.4,240.12 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:237.50,239.5 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:244.40,246.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:248.51,252.4 2 1 +github.com/ethereum/go-ethereum/accounts/abi/reflect.go:252.9,257.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:47.42,51.41 3 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:54.2,54.17 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:51.41,53.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:62.71,64.16 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:72.2,73.12 2 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:76.2,77.16 2 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:81.2,81.45 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:64.16,67.17 2 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:70.3,70.24 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:67.17,69.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:73.12,75.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:77.16,79.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:84.74,88.41 2 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:94.2,94.39 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:97.2,97.17 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:100.2,100.18 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:88.41,89.24 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:92.3,92.24 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:89.24,91.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:94.39,96.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:97.17,99.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:104.72,106.16 2 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:109.2,109.26 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:106.16,108.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:115.83,117.16 2 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:120.2,121.16 2 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:124.2,124.31 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:117.16,119.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:121.16,123.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:128.94,130.16 2 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:133.2,133.36 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:130.16,132.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:137.50,156.54 2 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:159.2,162.31 4 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:195.2,195.12 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:156.54,158.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:162.31,163.21 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:164.22,165.125 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:166.19,167.59 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:168.4,168.144 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:169.19,172.25 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:175.4,175.110 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:176.18,179.24 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:182.4,182.42 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:185.4,185.108 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:186.16,187.59 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:188.4,188.80 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:189.16,190.63 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:191.11,192.93 1 0 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:167.59,167.97 2 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:172.25,174.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:179.24,181.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:182.42,184.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:187.59,187.96 2 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:200.61,201.22 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:204.2,204.37 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:209.2,209.63 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:201.22,203.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:204.37,205.42 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:205.42,207.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:214.62,215.35 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:220.2,220.62 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:215.35,216.51 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:216.51,218.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:224.36,226.2 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:229.35,231.2 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:240.48,241.19 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:244.2,244.44 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:247.2,249.16 3 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:252.2,252.34 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:241.19,243.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:244.44,246.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:249.16,251.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:262.71,265.26 3 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:269.2,269.13 1 1 +github.com/ethereum/go-ethereum/accounts/abi/abi.go:265.26,268.3 2 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:45.60,48.16 3 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:52.2,53.16 2 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:56.2,59.12 3 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:48.16,50.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:53.16,55.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:63.51,65.32 2 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:70.2,70.12 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:65.32,66.19 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:66.19,68.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:74.43,76.2 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:79.71,80.20 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:86.2,86.37 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:80.20,81.26 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:84.3,84.37 1 0 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:81.26,83.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:90.87,92.14 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:95.2,95.20 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:101.2,102.16 2 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:105.2,105.45 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:108.2,108.12 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:92.14,94.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:95.20,96.26 1 0 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:99.3,99.13 1 0 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:96.26,98.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:102.16,104.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:105.45,107.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:112.76,114.46 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:117.2,117.22 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:123.2,123.25 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:126.2,126.43 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:114.46,116.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:117.22,118.26 1 0 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:121.3,121.13 1 0 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:118.26,120.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:123.25,125.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:130.90,134.34 3 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:137.2,137.22 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:134.34,136.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:141.91,145.22 3 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:177.2,177.12 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:146.22,148.38 2 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:151.3,153.17 3 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:156.3,156.38 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:165.36,166.42 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:169.3,169.33 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:174.10,175.77 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:148.38,150.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:153.17,155.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:156.38,158.24 2 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:161.4,161.75 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:158.24,160.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:161.75,163.5 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:166.42,168.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:169.33,170.84 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:170.84,172.5 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:183.77,187.41 4 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:211.2,211.20 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:187.41,189.56 2 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:206.3,206.17 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:209.3,209.43 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:189.56,201.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:201.9,201.63 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:201.63,205.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:206.17,208.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:216.75,218.2 1 0 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:221.70,224.31 2 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:229.2,233.33 3 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:236.2,237.25 2 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:258.2,260.17 2 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:224.31,226.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:233.33,235.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:237.25,241.17 3 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:245.3,245.32 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:241.17,243.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:245.32,252.4 3 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:252.9,255.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:264.39,266.26 2 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:271.2,271.32 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:266.26,267.17 1 1 +github.com/ethereum/go-ethereum/accounts/abi/argument.go:267.17,269.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:31.66,33.31 2 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:98.2,98.20 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:33.31,34.31 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:34.31,38.31 2 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:95.4,95.40 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:39.21,40.28 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:41.24,42.66 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:43.18,45.52 2 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:46.14,47.13 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:50.14,51.47 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:52.15,53.47 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:54.15,55.47 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:56.15,57.40 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:58.15,60.52 2 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:61.16,63.52 2 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:64.16,66.52 2 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:67.16,69.52 2 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:70.16,72.28 2 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:73.16,75.28 2 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:77.12,87.12 2 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:47.13,49.6 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:89.93,90.59 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:91.13,92.66 1 0 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:101.47,103.14 2 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:108.2,108.34 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:111.2,111.17 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:103.14,107.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:108.34,110.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:115.81,117.44 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:117.44,120.4 2 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:124.99,126.44 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:126.44,128.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:136.109,138.32 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:142.2,142.29 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:172.2,172.12 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:138.32,140.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:142.29,143.19 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:146.3,147.21 2 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:169.3,169.24 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:143.19,145.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:148.16,149.59 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:150.44,153.24 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:154.19,155.72 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:158.4,160.18 3 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:161.11,164.18 3 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:155.72,157.5 1 1 +github.com/ethereum/go-ethereum/accounts/abi/topics.go:164.18,166.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/type.go:68.100,70.52 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:73.2,77.32 2 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:115.2,116.23 2 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:119.2,123.28 3 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:137.2,137.43 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:214.2,214.8 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:70.52,72.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:77.32,80.57 2 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:84.3,86.17 3 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:90.3,95.21 4 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:112.3,112.18 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:80.57,82.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/type.go:86.17,88.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:95.21,100.4 3 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:100.9,100.28 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:100.28,105.18 4 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:108.4,108.53 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:105.18,107.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/type.go:109.9,111.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/type.go:116.23,118.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:123.28,126.17 3 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:126.17,128.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/type.go:129.8,130.56 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:130.56,134.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:138.13,140.16 2 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:141.14,143.17 2 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:144.14,145.17 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:146.17,148.20 2 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:149.16,150.19 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:151.15,152.19 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:158.15,167.34 4 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:189.3,201.74 8 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:207.18,209.16 2 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:210.10,211.59 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:152.19,154.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:154.9,157.4 2 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:167.34,169.18 2 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:172.4,173.18 2 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:176.4,185.32 6 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:169.18,171.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/type.go:173.18,175.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/type.go:185.32,187.5 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:201.74,205.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:218.38,219.13 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:220.13,221.39 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:222.14,223.38 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:224.14,225.31 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:226.16,227.28 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:228.15,229.43 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:230.15,231.51 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:232.15,233.21 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:234.17,235.42 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:236.20,237.58 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:238.15,239.50 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:240.14,242.54 1 0 +github.com/ethereum/go-ethereum/accounts/abi/type.go:243.20,245.54 1 0 +github.com/ethereum/go-ethereum/accounts/abi/type.go:246.18,247.54 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:248.10,249.24 1 0 +github.com/ethereum/go-ethereum/accounts/abi/type.go:253.81,255.21 2 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:259.2,260.26 2 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:264.2,264.23 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:255.21,257.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/type.go:260.26,263.3 2 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:268.37,270.2 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:272.53,275.40 2 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:279.2,279.13 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:275.40,277.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:280.24,283.31 2 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:289.3,291.16 3 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:294.3,295.32 2 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:308.3,308.35 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:309.15,320.17 2 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:324.3,325.37 2 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:328.3,329.37 2 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:346.3,346.35 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:348.10,349.27 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:283.31,286.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:291.16,293.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:295.32,297.18 2 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:300.4,300.18 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:304.4,306.31 3 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:297.18,299.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/type.go:300.18,302.13 2 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:320.17,322.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/type.go:325.37,327.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:329.37,331.24 2 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:334.4,335.18 2 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:338.4,338.28 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:331.24,333.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/type.go:335.18,337.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/type.go:338.28,342.5 3 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:342.10,344.5 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:355.43,357.2 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:366.33,367.20 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:375.2,375.106 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:367.20,368.37 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:373.3,373.15 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:368.37,369.28 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:369.28,371.5 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:386.30,387.47 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:400.2,400.11 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:387.47,389.49 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:392.3,392.21 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:389.49,391.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:393.8,393.48 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:393.48,395.37 2 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:398.3,398.15 1 1 +github.com/ethereum/go-ethereum/accounts/abi/type.go:395.37,397.4 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:57.36,57.54 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:60.43,61.21 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:64.2,64.25 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:67.2,68.16 2 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:71.2,71.15 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:61.21,63.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:64.25,66.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:68.16,70.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:75.38,77.16 2 0 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:80.2,80.12 1 0 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:77.16,78.13 1 0 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:84.30,89.2 4 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:92.49,94.16 2 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:97.2,98.16 2 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:101.2,101.17 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:94.16,96.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:98.16,100.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:106.44,108.16 2 0 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:111.2,111.12 1 0 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:108.16,109.13 1 0 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:115.36,119.2 3 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:123.13,127.23 2 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:128.9,129.22 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:130.9,131.21 1 0 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:132.10,133.31 1 0 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:139.48,141.16 2 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:144.2,144.19 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:147.2,149.23 3 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:164.2,165.17 2 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:141.16,143.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:144.19,146.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:149.23,151.16 2 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:154.3,154.35 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:162.3,162.14 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:151.16,153.4 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:154.35,156.24 2 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:159.4,160.29 2 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:156.24,158.5 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:170.43,172.16 2 0 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:175.2,175.12 1 0 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:172.16,173.13 1 0 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:179.40,180.38 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:180.38,182.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:182.8,182.21 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:182.21,184.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:184.8,186.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:189.37,191.2 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:193.56,194.21 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:197.2,197.25 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:200.2,201.21 2 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:204.2,204.39 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:207.2,207.19 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:194.21,196.3 1 0 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:197.25,199.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:201.21,203.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:204.39,206.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:212.35,213.9 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:214.30,215.26 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:216.30,217.31 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:218.30,219.31 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:220.10,221.19 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:225.32,226.44 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:234.2,234.45 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:237.2,237.26 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:240.2,240.12 1 0 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:226.44,227.18 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:228.25,229.25 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:230.26,231.20 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:234.45,236.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:237.26,239.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:40.46,45.2 4 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:48.51,49.22 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:52.2,52.70 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:49.22,51.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:56.51,58.16 2 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:61.2,62.47 2 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:67.2,67.12 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:58.16,60.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:62.47,64.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:64.8,66.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:71.32,73.2 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:76.56,76.82 1 0 +github.com/ethereum/go-ethereum/common/hexutil/json.go:79.59,81.31 2 0 +github.com/ethereum/go-ethereum/common/hexutil/json.go:91.2,91.12 1 0 +github.com/ethereum/go-ethereum/common/hexutil/json.go:82.14,84.17 2 0 +github.com/ethereum/go-ethereum/common/hexutil/json.go:87.3,87.12 1 0 +github.com/ethereum/go-ethereum/common/hexutil/json.go:88.10,89.58 1 0 +github.com/ethereum/go-ethereum/common/hexutil/json.go:84.17,86.4 1 0 +github.com/ethereum/go-ethereum/common/hexutil/json.go:97.68,98.22 1 0 +github.com/ethereum/go-ethereum/common/hexutil/json.go:101.2,101.89 1 0 +github.com/ethereum/go-ethereum/common/hexutil/json.go:98.22,100.3 1 0 +github.com/ethereum/go-ethereum/common/hexutil/json.go:107.66,109.16 2 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:112.2,112.28 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:116.2,116.24 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:121.2,122.12 2 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:109.16,111.3 1 0 +github.com/ethereum/go-ethereum/common/hexutil/json.go:112.28,114.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:116.24,117.35 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:117.35,119.4 1 0 +github.com/ethereum/go-ethereum/common/hexutil/json.go:128.76,130.16 2 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:133.2,133.28 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:137.2,137.24 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:142.2,143.12 2 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:130.16,132.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:133.28,135.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:137.24,138.35 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:138.35,140.4 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:155.44,157.2 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:160.49,161.22 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:164.2,164.68 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:161.22,163.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:168.49,170.16 2 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:173.2,173.19 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:176.2,178.23 3 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:193.2,196.12 4 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:170.16,172.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:173.19,175.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:178.23,180.16 2 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:183.3,183.35 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:191.3,191.14 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:180.16,182.4 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:183.35,185.24 2 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:188.4,189.29 2 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:185.24,187.5 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:200.32,202.2 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:205.31,207.2 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:210.54,210.81 1 0 +github.com/ethereum/go-ethereum/common/hexutil/json.go:213.57,215.31 2 0 +github.com/ethereum/go-ethereum/common/hexutil/json.go:225.2,225.12 1 0 +github.com/ethereum/go-ethereum/common/hexutil/json.go:216.14,217.40 1 0 +github.com/ethereum/go-ethereum/common/hexutil/json.go:218.13,221.16 3 0 +github.com/ethereum/go-ethereum/common/hexutil/json.go:222.10,223.59 1 0 +github.com/ethereum/go-ethereum/common/hexutil/json.go:233.47,238.2 4 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:241.52,242.22 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:245.2,245.71 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:242.22,244.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:249.52,251.16 2 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:254.2,254.19 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:257.2,258.27 2 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:266.2,267.12 2 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:251.16,253.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:254.19,256.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:258.27,260.23 2 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:263.3,264.13 2 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:260.23,262.4 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:271.33,273.2 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:276.57,276.82 1 0 +github.com/ethereum/go-ethereum/common/hexutil/json.go:279.60,281.31 2 0 +github.com/ethereum/go-ethereum/common/hexutil/json.go:289.2,289.12 1 0 +github.com/ethereum/go-ethereum/common/hexutil/json.go:282.14,283.40 1 0 +github.com/ethereum/go-ethereum/common/hexutil/json.go:284.13,285.21 1 0 +github.com/ethereum/go-ethereum/common/hexutil/json.go:286.10,287.57 1 0 +github.com/ethereum/go-ethereum/common/hexutil/json.go:297.45,299.2 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:302.50,303.22 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:306.2,306.69 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:303.22,305.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:310.50,313.53 3 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:318.2,319.12 2 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:313.53,315.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:315.8,315.23 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:315.23,317.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:323.31,325.2 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:327.34,329.2 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:331.43,333.2 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:335.63,336.21 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:339.2,339.30 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:344.2,344.23 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:347.2,347.19 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:336.21,338.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:339.30,341.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:341.8,341.23 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:341.23,343.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:344.23,346.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:350.60,351.21 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:354.2,354.31 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:357.2,358.21 2 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:361.2,361.39 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:364.2,364.19 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:351.21,353.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:354.31,356.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:358.21,360.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:361.39,363.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:367.55,368.34 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:371.2,371.12 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:368.34,370.3 1 1 +github.com/ethereum/go-ethereum/common/hexutil/json.go:374.43,376.2 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:46.51,50.2 3 0 +github.com/ethereum/go-ethereum/common/math/big.go:53.61,55.9 2 1 +github.com/ethereum/go-ethereum/common/math/big.go:58.2,59.12 2 1 +github.com/ethereum/go-ethereum/common/math/big.go:55.9,57.3 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:63.57,64.14 1 0 +github.com/ethereum/go-ethereum/common/math/big.go:67.2,67.55 1 0 +github.com/ethereum/go-ethereum/common/math/big.go:64.14,66.3 1 0 +github.com/ethereum/go-ethereum/common/math/big.go:75.41,79.2 3 0 +github.com/ethereum/go-ethereum/common/math/big.go:82.56,84.9 2 0 +github.com/ethereum/go-ethereum/common/math/big.go:87.2,88.12 2 0 +github.com/ethereum/go-ethereum/common/math/big.go:84.9,86.3 1 0 +github.com/ethereum/go-ethereum/common/math/big.go:92.52,94.2 1 0 +github.com/ethereum/go-ethereum/common/math/big.go:97.38,98.14 1 0 +github.com/ethereum/go-ethereum/common/math/big.go:101.2,101.42 1 0 +github.com/ethereum/go-ethereum/common/math/big.go:98.14,100.3 1 0 +github.com/ethereum/go-ethereum/common/math/big.go:106.45,107.13 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:110.2,112.53 3 1 +github.com/ethereum/go-ethereum/common/math/big.go:117.2,117.33 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:120.2,120.19 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:107.13,109.3 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:112.53,114.3 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:114.8,116.3 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:117.33,119.3 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:124.41,126.9 2 1 +github.com/ethereum/go-ethereum/common/math/big.go:129.2,129.10 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:126.9,127.41 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:133.34,136.2 2 1 +github.com/ethereum/go-ethereum/common/math/big.go:139.37,140.18 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:143.2,143.10 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:140.18,142.3 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:147.37,148.18 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:151.2,151.10 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:148.18,150.3 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:155.34,156.34 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:161.2,161.19 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:156.34,157.19 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:157.19,159.4 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:166.52,167.28 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:170.2,172.12 3 1 +github.com/ethereum/go-ethereum/common/math/big.go:167.28,169.3 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:178.51,182.21 3 1 +github.com/ethereum/go-ethereum/common/math/big.go:185.2,189.28 3 1 +github.com/ethereum/go-ethereum/common/math/big.go:182.21,184.3 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:196.51,197.20 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:200.2,200.47 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:197.20,199.3 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:205.44,207.34 2 1 +github.com/ethereum/go-ethereum/common/math/big.go:207.34,208.43 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:208.43,212.4 3 1 +github.com/ethereum/go-ethereum/common/math/big.go:217.32,219.2 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:223.35,225.2 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:234.32,235.22 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:238.2,238.35 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:235.22,237.3 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:246.44,249.39 2 1 +github.com/ethereum/go-ethereum/common/math/big.go:258.2,258.15 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:249.39,250.33 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:250.33,251.19 1 1 +github.com/ethereum/go-ethereum/common/math/big.go:254.4,255.14 2 1 +github.com/ethereum/go-ethereum/common/math/big.go:251.19,253.5 1 1 +github.com/ethereum/go-ethereum/common/math/integer.go:45.60,47.9 2 1 +github.com/ethereum/go-ethereum/common/math/integer.go:50.2,51.12 2 1 +github.com/ethereum/go-ethereum/common/math/integer.go:47.9,49.3 1 1 +github.com/ethereum/go-ethereum/common/math/integer.go:55.55,57.2 1 0 +github.com/ethereum/go-ethereum/common/math/integer.go:61.43,62.13 1 1 +github.com/ethereum/go-ethereum/common/math/integer.go:65.2,65.53 1 1 +github.com/ethereum/go-ethereum/common/math/integer.go:69.2,70.22 2 1 +github.com/ethereum/go-ethereum/common/math/integer.go:62.13,64.3 1 1 +github.com/ethereum/go-ethereum/common/math/integer.go:65.53,68.3 2 1 +github.com/ethereum/go-ethereum/common/math/integer.go:74.39,76.9 2 1 +github.com/ethereum/go-ethereum/common/math/integer.go:79.2,79.10 1 1 +github.com/ethereum/go-ethereum/common/math/integer.go:76.9,77.49 1 1 +github.com/ethereum/go-ethereum/common/math/integer.go:83.42,86.2 2 1 +github.com/ethereum/go-ethereum/common/math/integer.go:89.42,92.2 2 1 +github.com/ethereum/go-ethereum/common/math/integer.go:95.42,98.2 2 1 +github.com/ethereum/go-ethereum/common/mclock/mclock.go:34.20,36.2 1 0 +github.com/ethereum/go-ethereum/common/mclock/mclock.go:39.47,41.2 1 1 +github.com/ethereum/go-ethereum/common/mclock/mclock.go:44.48,46.2 1 0 +github.com/ethereum/go-ethereum/common/mclock/mclock.go:80.31,82.2 1 0 +github.com/ethereum/go-ethereum/common/mclock/mclock.go:85.40,87.2 1 0 +github.com/ethereum/go-ethereum/common/mclock/mclock.go:90.53,92.32 2 0 +github.com/ethereum/go-ethereum/common/mclock/mclock.go:101.2,101.28 1 0 +github.com/ethereum/go-ethereum/common/mclock/mclock.go:92.32,96.10 1 0 +github.com/ethereum/go-ethereum/common/mclock/mclock.go:97.22,97.22 0 0 +github.com/ethereum/go-ethereum/common/mclock/mclock.go:98.11,98.11 0 0 +github.com/ethereum/go-ethereum/common/mclock/mclock.go:105.55,107.27 2 0 +github.com/ethereum/go-ethereum/common/mclock/mclock.go:108.2,108.11 1 0 +github.com/ethereum/go-ethereum/common/mclock/mclock.go:107.27,107.44 1 0 +github.com/ethereum/go-ethereum/common/mclock/mclock.go:112.60,114.2 1 0 +github.com/ethereum/go-ethereum/common/mclock/mclock.go:121.47,123.2 1 0 +github.com/ethereum/go-ethereum/common/mclock/mclock.go:125.43,127.2 1 0 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:50.28,51.19 1 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:51.19,53.3 1 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:57.42,63.55 5 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:67.2,70.24 3 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:63.55,66.3 2 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:70.24,72.3 1 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:76.40,81.2 3 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:84.42,89.27 4 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:89.27,91.3 1 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:95.35,100.2 3 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:103.44,105.2 1 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:108.57,114.31 5 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:115.2,116.14 2 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:114.31,114.49 1 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:121.59,123.2 1 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:127.65,132.2 3 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:134.68,142.2 6 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:144.33,148.18 3 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:151.2,154.13 4 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:148.18,150.3 1 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:157.44,158.18 1 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:162.2,165.18 4 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:170.2,170.23 1 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:158.18,159.57 1 0 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:165.18,167.3 1 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:167.8,169.3 1 0 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:173.40,174.18 1 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:177.2,177.14 1 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:174.18,175.53 1 0 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:182.34,184.2 1 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:186.44,188.2 1 0 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:190.39,194.2 3 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:196.44,200.2 3 1 +github.com/ethereum/go-ethereum/common/mclock/simclock.go:202.42,209.2 6 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:56.55,59.16 3 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:62.2,62.19 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:65.2,65.13 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:59.16,60.61 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:62.19,64.3 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:69.47,71.2 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:74.82,78.2 3 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:83.64,84.25 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:87.2,87.16 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:94.2,100.29 5 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:104.2,104.26 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:84.25,85.31 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:87.16,88.73 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:100.29,102.3 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:107.60,108.25 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:114.2,114.18 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:121.2,123.20 3 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:108.25,109.31 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:114.18,116.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:123.20,124.39 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:124.39,126.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:130.66,131.38 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:137.2,141.16 3 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:131.38,135.3 2 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:145.62,148.38 3 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:151.2,152.19 2 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:157.2,157.81 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:148.38,150.3 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:152.19,154.3 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:161.58,162.25 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:165.2,167.36 3 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:175.2,176.14 2 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:162.25,163.31 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:167.36,168.31 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:171.3,171.31 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:168.31,170.4 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:171.31,173.4 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:176.14,178.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:178.8,180.3 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:183.63,185.38 2 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:188.2,188.12 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:185.38,187.3 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:191.56,192.25 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:195.2,196.38 2 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:192.25,193.31 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:196.38,198.3 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:202.60,203.21 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:206.2,207.31 2 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:210.2,210.17 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:203.21,205.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:207.31,209.3 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:214.48,220.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:224.59,225.60 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:228.2,228.97 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:225.60,227.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:233.92,234.60 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:237.2,237.102 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:240.2,240.16 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:234.60,236.3 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:237.102,239.3 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:246.82,247.48 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:250.2,251.40 2 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:247.48,249.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:255.38,257.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:260.58,263.38 2 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:270.2,271.12 2 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:263.38,266.32 2 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:266.32,268.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:276.52,277.32 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:284.2,284.30 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:277.32,279.55 2 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:279.55,281.14 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:289.63,290.31 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:293.2,293.26 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:296.2,296.29 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:290.31,292.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:293.26,295.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:299.53,301.38 2 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:306.2,306.17 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:301.38,302.85 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:302.85,304.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:323.76,324.38 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:324.38,326.11 2 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:326.11,327.9 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:339.91,349.36 6 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:370.2,370.31 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:349.36,350.63 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:354.3,354.32 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:358.3,358.50 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:363.3,363.33 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:368.3,368.31 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:350.63,353.4 2 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:354.32,357.4 2 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:358.50,362.4 2 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:363.33,365.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:365.9,367.4 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:384.127,388.36 2 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:408.2,408.55 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:388.36,391.17 3 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:399.3,400.15 2 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:391.17,395.4 2 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:395.9,398.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:400.15,405.4 2 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:416.100,418.36 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:418.36,421.17 3 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:421.17,431.4 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:431.9,433.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:442.62,448.44 4 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:465.2,465.37 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:470.2,470.36 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:475.2,475.30 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:448.44,449.81 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:461.3,461.6 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:449.81,452.4 2 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:452.9,455.76 2 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:459.4,459.25 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:455.76,458.5 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:465.37,468.3 2 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:470.36,473.3 2 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:480.69,482.36 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:489.2,489.41 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:492.2,492.12 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:482.36,485.17 3 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:485.17,487.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:489.41,490.40 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:497.63,505.23 4 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:516.2,516.37 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:521.2,521.30 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:505.23,506.75 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:512.3,512.26 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:506.75,508.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:508.9,511.4 2 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:516.37,519.3 2 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:528.94,530.23 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:535.2,536.16 2 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:540.2,540.40 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:545.2,545.54 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:550.2,551.16 2 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:556.2,556.67 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:561.2,567.54 4 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:572.2,575.12 3 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:530.23,532.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:536.16,538.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:540.40,542.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:545.54,547.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:551.16,553.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:556.67,558.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:567.54,569.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:590.75,592.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:597.41,598.20 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:599.24,600.14 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:601.10,602.15 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:611.42,613.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:617.43,619.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:621.64,622.17 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:625.2,626.52 2 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:630.2,638.10 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:622.17,624.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:626.52,629.3 2 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:648.43,650.2 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:652.53,654.2 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:656.48,660.2 3 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:665.40,666.34 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:671.2,671.21 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:666.34,668.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:668.8,668.41 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:668.41,670.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:674.40,675.34 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:680.2,680.21 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:675.34,677.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:677.8,677.41 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:677.41,679.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:683.36,685.14 2 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:691.2,691.10 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:685.14,686.12 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:689.3,689.23 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:686.12,688.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:694.36,696.14 2 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:702.2,702.10 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:696.14,697.12 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:700.3,700.23 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:697.12,699.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:129.107,132.49 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:136.2,136.35 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:139.2,143.16 3 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:146.2,150.20 4 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:132.49,134.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:136.35,138.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:143.16,145.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:154.77,159.2 4 1 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:161.78,179.40 2 1 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:184.2,184.43 1 1 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:179.40,180.28 1 1 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:180.28,182.4 1 1 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:184.43,185.40 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:190.83,194.26 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:197.2,197.20 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:200.2,200.14 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:194.26,196.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:197.20,199.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:210.63,214.2 3 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:248.8,253.47 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:258.2,279.53 8 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:285.2,285.10 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:253.47,255.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:279.53,280.61 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:280.61,281.87 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:290.68,292.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:295.102,297.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:302.135,306.12 3 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:317.2,317.23 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:306.12,307.34 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:307.34,310.11 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:311.17,312.11 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:313.24,313.24 0 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:324.116,325.26 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:328.2,331.45 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:335.2,335.63 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:340.2,344.39 3 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:347.2,347.65 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:351.2,351.41 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:355.2,355.35 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:359.2,359.16 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:365.2,366.27 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:370.2,370.77 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:374.2,374.56 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:325.26,327.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:331.45,333.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:335.63,337.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:344.39,346.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:347.65,349.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:351.41,353.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:355.35,357.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:359.16,360.31 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:360.31,362.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:366.27,368.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:370.77,372.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:379.56,380.35 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:383.2,383.45 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:386.2,386.12 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:380.35,382.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:383.45,385.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:393.125,396.17 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:401.2,402.22 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:408.2,408.95 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:413.2,413.38 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:416.2,416.45 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:429.2,429.64 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:434.2,435.16 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:440.2,440.44 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:457.2,457.45 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:396.17,398.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:402.22,404.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:404.8,406.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:408.95,410.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:413.38,415.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:416.45,418.28 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:421.3,421.79 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:418.28,420.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:421.79,423.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:424.8,424.88 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:424.88,427.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:429.64,431.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:435.16,437.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:440.44,447.47 5 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:451.3,451.58 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:447.47,449.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:451.58,453.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:461.136,468.18 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:532.2,532.17 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:537.2,537.38 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:541.2,542.16 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:545.2,548.61 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:554.2,554.18 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:468.18,470.39 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:476.3,476.37 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:489.3,489.18 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:512.3,513.23 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:527.3,528.45 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:470.39,472.9 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:476.37,477.88 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:477.88,480.10 3 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:489.18,491.25 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:491.25,497.19 3 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:502.5,503.44 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:506.5,507.10 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:497.19,499.6 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:503.44,505.6 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:513.23,516.65 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:519.4,519.38 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:516.65,518.5 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:520.9,523.21 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:523.21,525.5 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:532.17,534.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:537.38,539.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:542.16,544.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:548.61,549.41 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:552.3,552.81 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:549.41,551.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:559.83,560.29 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:563.2,563.12 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:560.29,562.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:568.89,570.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:576.114,579.17 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:583.2,584.16 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:589.2,590.16 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:593.2,593.51 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:598.2,599.16 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:603.2,604.22 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:610.2,610.96 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:615.2,615.17 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:622.2,622.12 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:579.17,581.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:584.16,586.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:590.16,592.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:593.51,596.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:599.16,601.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:604.22,606.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:606.8,606.23 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:606.23,608.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:610.96,612.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:615.17,617.47 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:617.47,619.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:627.86,635.16 5 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:640.2,643.37 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:646.2,649.37 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:663.2,670.19 4 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:674.2,676.68 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:683.2,684.45 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:687.2,687.12 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:635.16,637.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:643.37,645.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:649.37,651.17 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:656.3,657.43 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:651.17,653.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:657.43,659.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:670.19,672.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:676.68,678.17 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:678.17,680.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:684.45,686.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:692.153,697.39 4 1 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:715.2,715.73 1 1 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:721.2,726.32 4 1 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:697.39,700.65 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:705.3,705.25 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:700.65,703.4 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:705.25,708.18 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:708.18,711.5 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:715.73,718.3 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:729.67,732.16 3 1 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:735.2,735.50 1 1 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:738.2,738.19 1 1 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:732.16,734.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:735.50,737.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:741.91,742.61 1 1 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:754.2,754.12 1 1 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:742.61,743.58 1 1 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:743.58,745.18 2 1 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:748.4,748.38 1 1 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:745.18,747.5 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:748.38,751.5 2 1 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:759.213,764.39 3 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:784.2,784.74 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:790.2,801.19 6 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:764.39,769.17 3 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:774.3,774.25 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:769.17,772.4 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:774.25,777.18 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:777.18,780.5 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:784.74,787.3 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:806.65,812.2 4 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:816.132,820.17 3 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:824.2,824.77 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:829.2,834.16 5 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:839.2,839.51 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:844.2,845.16 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:850.2,856.16 4 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:859.2,863.12 3 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:890.2,890.12 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:820.17,822.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:824.77,827.3 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:834.16,836.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:839.51,842.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:845.16,847.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:856.16,858.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:863.12,864.10 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:884.3,884.10 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:865.15,867.10 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:868.28,869.18 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:877.4,882.5 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:869.18,876.5 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:885.42,885.42 0 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:886.11,887.110 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:896.109,898.16 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:901.2,901.58 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:898.16,900.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:905.58,907.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:911.65,918.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:921.29,924.2 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:927.69,938.16 6 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:943.2,951.16 5 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:956.2,961.83 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:966.2,972.19 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:938.16,941.3 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:951.16,953.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:961.83,963.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:976.102,987.16 6 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:993.2,1001.16 5 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1006.2,1015.83 3 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1019.2,1020.26 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1027.2,1027.18 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:987.16,990.3 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1001.16,1002.13 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1015.83,1017.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1020.26,1025.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1034.9,1037.16 3 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1040.2,1040.44 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1044.2,1044.12 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1037.16,1039.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1040.44,1043.3 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1047.70,1049.17 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1054.2,1054.24 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1059.2,1059.88 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1063.2,1063.14 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1049.17,1051.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1054.24,1056.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1059.88,1061.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1071.9,1074.23 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1092.2,1092.60 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1101.2,1102.59 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1105.2,1106.16 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1111.2,1112.53 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1115.2,1116.16 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1121.2,1138.16 4 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1144.2,1148.12 3 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1074.23,1076.17 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1079.3,1079.20 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1076.17,1078.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1080.8,1082.17 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1086.3,1086.72 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1082.17,1084.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1086.72,1088.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1092.60,1098.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1102.59,1104.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1106.16,1108.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1112.53,1114.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1116.16,1118.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1138.16,1141.3 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1156.35,1160.16 4 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1164.2,1171.46 5 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1177.2,1180.43 3 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1205.2,1206.24 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1160.16,1162.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1171.46,1172.87 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1172.87,1174.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1180.43,1181.36 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1184.3,1184.92 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1189.3,1198.17 4 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1201.3,1203.16 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1181.36,1182.12 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1184.92,1186.9 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1198.17,1200.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1209.131,1211.103 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1214.2,1214.12 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1211.103,1213.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1217.52,1219.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1230.26,1233.16 3 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1238.2,1241.16 3 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1246.2,1247.24 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1252.2,1255.49 3 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1258.2,1265.26 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1233.16,1235.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1241.16,1243.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1247.24,1249.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1249.8,1251.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1255.49,1257.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1278.49,1280.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1282.80,1284.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1291.40,1291.65 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1292.40,1292.52 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1293.40,1293.56 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1294.40,1294.63 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1295.40,1295.69 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1296.40,1296.64 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1297.40,1297.66 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1298.40,1298.65 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1301.70,1312.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1321.19,1338.16 5 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1342.2,1343.21 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1338.16,1340.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1346.73,1347.22 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1352.2,1352.19 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1347.22,1348.63 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1348.63,1350.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1355.96,1360.29 4 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1370.2,1370.29 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1376.2,1377.10 2 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1360.29,1361.50 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1367.3,1367.32 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1361.50,1363.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1363.9,1365.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1370.29,1371.51 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1371.51,1373.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/bor.go:1380.48,1382.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/errors.go:14.56,21.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/errors.go:29.52,35.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/errors.go:42.59,49.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/errors.go:59.53,66.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/errors.go:73.44,79.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/errors.go:87.52,93.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/errors.go:101.50,107.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/errors.go:118.47,126.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/errors.go:135.52,143.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:31.47,31.64 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:32.47,32.93 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:33.47,33.74 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:45.13,56.2 2 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:59.161,61.16 2 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:64.2,65.51 2 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:68.2,73.67 4 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:77.2,77.18 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:61.16,63.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:65.51,67.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:73.67,75.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:81.51,83.16 2 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:86.2,86.59 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:83.16,85.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:90.37,100.39 2 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:104.2,104.12 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:100.39,102.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:107.70,109.23 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:113.2,113.38 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:118.2,118.46 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:122.2,124.33 2 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:165.2,168.18 3 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:109.23,111.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:113.38,114.67 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:114.67,116.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:118.46,120.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:124.33,129.63 2 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:134.3,135.17 2 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:140.3,140.52 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:144.3,144.66 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:149.3,152.52 2 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:129.63,131.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:135.17,137.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:140.52,142.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:144.66,146.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:152.52,153.65 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:156.4,162.25 5 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:153.65,155.5 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:172.82,176.25 4 1 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:179.2,180.23 2 1 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:184.2,185.32 2 1 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:190.2,190.39 1 1 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:176.25,178.3 1 1 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:180.23,182.3 1 1 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:185.32,186.32 1 1 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:186.32,188.4 1 1 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:194.47,196.48 2 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:199.2,199.13 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:196.48,198.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:203.61,205.66 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:209.2,218.31 7 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:222.2,222.62 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:205.66,207.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:218.31,220.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:53.67,62.2 2 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:64.104,66.6 2 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:87.2,87.53 1 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:90.2,90.26 1 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:66.6,70.17 4 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:73.3,74.29 2 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:77.3,77.73 1 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:80.3,81.43 2 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:84.3,84.36 1 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:70.17,72.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:74.29,75.9 1 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:77.73,79.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:81.43,82.9 1 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:87.53,89.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:94.71,98.16 3 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:101.2,101.67 1 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:105.2,105.24 1 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:98.16,100.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:101.67,103.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:109.94,111.16 2 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:115.2,118.27 3 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:111.16,113.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:122.103,124.16 2 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:128.2,136.30 5 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:141.2,144.6 3 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:124.16,126.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:136.30,138.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:144.6,147.10 3 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:148.20,150.35 2 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:151.19,153.32 2 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:153.32,155.5 1 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:161.81,163.16 2 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:166.2,169.52 2 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:174.2,175.27 2 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:180.2,181.16 2 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:185.2,185.56 1 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:189.2,189.23 1 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:163.16,165.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:169.52,171.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:175.27,177.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:181.16,183.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:185.56,187.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/rest.go:193.34,196.2 2 0 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:24.73,30.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:34.39,37.2 2 1 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:41.54,43.14 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:46.2,46.18 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:49.2,49.49 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:43.14,45.3 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:46.18,48.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:49.49,51.3 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:51.8,51.56 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:51.56,53.3 1 1 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:53.8,55.17 2 0 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:55.17,57.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:57.9,57.24 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:57.24,59.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:59.9,60.48 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:65.37,66.14 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:69.2,72.22 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:66.14,68.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:76.52,78.27 2 0 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:82.2,82.34 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:78.27,80.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:86.42,91.2 4 0 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:94.41,99.2 4 0 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:102.45,108.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:111.68,112.34 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:116.2,117.48 2 0 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:127.2,127.20 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:112.34,114.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:117.48,125.3 5 0 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:141.59,142.36 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:145.2,145.10 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:142.36,144.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:149.77,150.27 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:153.2,153.8 1 0 +github.com/ethereum/go-ethereum/consensus/bor/validator.go:150.27,152.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:34.73,37.55 2 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:43.2,43.19 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:46.2,46.80 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:37.55,39.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:39.8,41.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:43.19,45.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:50.77,53.55 2 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:59.2,59.19 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:62.2,63.21 2 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:53.55,55.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:55.8,57.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:59.19,61.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:67.72,69.19 2 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:72.2,72.80 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:69.19,71.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:76.79,79.55 2 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:85.2,85.19 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:88.2,89.16 2 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:92.2,92.28 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:79.55,81.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:81.8,83.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:85.19,87.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:89.16,91.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:96.78,98.19 2 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:101.2,102.16 2 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:105.2,105.28 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:98.19,100.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:102.16,104.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:109.62,111.16 2 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:114.2,114.53 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:111.16,113.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:118.62,120.16 2 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:123.2,123.42 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:120.16,122.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:127.71,128.54 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:131.2,132.54 2 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:135.2,136.34 2 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:139.2,140.46 2 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:143.2,146.32 4 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:155.2,159.41 4 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:173.2,174.83 2 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:177.2,179.18 3 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:128.54,130.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:132.54,134.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:136.34,138.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:140.46,142.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:146.32,149.26 3 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:149.26,153.4 3 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:159.41,171.3 5 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:174.83,176.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:182.49,184.30 2 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:187.2,187.12 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:184.30,186.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/api.go:190.54,192.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/clerk.go:27.61,39.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/clerk.go:41.63,50.2 1 0 +github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:38.27,49.2 3 0 +github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:56.19,59.16 3 0 +github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:62.2,65.16 4 0 +github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:69.2,73.16 4 0 +github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:76.2,76.21 1 0 +github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:59.16,61.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:65.16,68.3 2 0 +github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:73.16,75.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:79.88,83.16 4 0 +github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:88.2,96.16 5 0 +github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:100.2,101.85 2 0 +github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:104.2,104.18 1 0 +github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:83.16,86.3 2 0 +github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:96.16,98.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:101.85,103.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/merkle.go:3.43,5.25 2 0 +github.com/ethereum/go-ethereum/consensus/bor/merkle.go:11.2,11.15 1 0 +github.com/ethereum/go-ethereum/consensus/bor/merkle.go:5.25,7.17 2 0 +github.com/ethereum/go-ethereum/consensus/bor/merkle.go:7.17,9.4 1 0 +github.com/ethereum/go-ethereum/consensus/bor/merkle.go:14.38,15.12 1 0 +github.com/ethereum/go-ethereum/consensus/bor/merkle.go:19.2,27.10 9 0 +github.com/ethereum/go-ethereum/consensus/bor/merkle.go:15.12,17.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/merkle.go:30.61,32.22 2 0 +github.com/ethereum/go-ethereum/consensus/bor/merkle.go:35.2,36.8 2 0 +github.com/ethereum/go-ethereum/consensus/bor/merkle.go:32.22,34.3 1 0 +github.com/ethereum/go-ethereum/consensus/bor/merkle.go:39.43,41.27 2 0 +github.com/ethereum/go-ethereum/consensus/bor/merkle.go:47.2,47.15 1 0 +github.com/ethereum/go-ethereum/consensus/bor/merkle.go:41.27,46.3 3 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:39.73,42.55 2 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:48.2,48.19 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:51.2,51.83 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:42.55,44.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:44.8,46.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:48.19,50.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:55.72,57.19 2 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:60.2,60.83 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:57.19,59.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:64.79,67.55 2 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:73.2,73.19 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:76.2,77.16 2 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:80.2,80.28 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:67.55,69.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:69.8,71.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:73.19,75.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:77.16,79.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:84.78,86.19 2 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:89.2,90.16 2 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:93.2,93.28 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:86.19,88.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:90.16,92.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:97.53,102.50 4 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:105.2,105.18 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:102.50,104.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:110.60,115.2 3 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:119.49,124.2 3 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:136.43,144.16 3 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:147.2,152.21 2 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:156.2,157.28 2 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:160.2,160.31 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:175.2,179.8 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:144.16,146.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:152.21,155.3 2 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:157.28,159.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:160.31,162.15 2 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:165.3,165.40 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:168.3,170.17 3 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:173.3,173.23 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:162.15,164.4 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:165.40,167.4 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:170.17,172.4 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:187.68,190.53 2 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:195.2,196.53 2 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:199.2,200.16 2 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:203.2,204.12 2 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:190.53,193.3 2 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:196.53,198.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:200.16,202.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:210.89,211.32 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:226.2,227.65 2 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:230.2,231.66 2 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:234.2,234.34 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:211.32,214.27 3 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:221.3,221.20 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:224.3,224.35 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:214.27,216.4 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:216.9,216.50 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:216.50,218.4 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:218.9,218.54 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:218.54,220.4 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:221.20,223.4 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:227.65,229.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/api.go:231.66,233.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:146.86,149.49 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:153.2,153.35 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:156.2,160.16 3 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:163.2,167.20 4 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:149.49,151.3 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:153.35,155.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:160.16,162.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:191.66,194.21 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:198.2,207.3 3 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:194.21,196.3 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:212.71,214.2 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:217.105,219.2 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:224.138,228.12 3 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:239.2,239.23 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:228.12,229.34 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:229.34,232.11 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:233.17,234.11 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:235.24,235.24 0 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:246.119,247.26 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:250.2,253.45 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:257.2,258.57 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:262.2,262.98 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:265.2,265.64 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:269.2,269.37 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:272.2,272.47 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:276.2,277.38 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:280.2,280.58 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:284.2,284.41 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:288.2,288.35 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:292.2,292.16 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:298.2,298.42 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:302.2,302.77 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:306.2,306.56 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:247.26,249.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:253.45,255.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:258.57,260.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:262.98,264.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:265.64,267.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:269.37,271.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:272.47,274.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:277.38,279.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:280.58,282.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:284.41,286.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:288.35,290.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:292.16,293.117 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:293.117,295.4 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:298.42,300.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:302.77,304.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:313.128,316.17 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:320.2,321.22 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:326.2,326.95 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:329.2,329.47 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:333.2,333.38 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:336.2,336.45 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:349.2,350.16 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:354.2,354.32 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:365.2,365.44 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:316.17,318.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:321.22,323.3 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:323.8,325.3 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:326.95,328.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:329.47,331.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:333.38,335.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:336.45,338.28 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:341.3,341.79 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:338.28,340.4 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:341.79,343.4 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:344.8,344.88 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:344.88,347.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:350.16,352.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:354.32,356.41 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:359.3,360.67 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:356.41,358.4 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:360.67,362.4 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:369.139,375.18 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:430.2,430.38 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:433.2,434.16 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:437.2,440.61 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:446.2,446.18 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:375.18,377.39 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:382.3,382.37 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:393.3,393.147 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:411.3,412.23 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:426.3,427.45 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:377.39,379.9 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:382.37,383.78 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:383.78,386.10 3 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:393.147,395.25 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:395.25,399.39 3 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:402.5,403.44 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:406.5,407.10 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:399.39,401.6 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:403.44,405.6 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:412.23,415.65 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:418.4,418.38 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:415.65,417.5 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:419.9,422.21 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:422.21,424.5 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:430.38,432.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:434.16,436.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:440.61,441.41 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:444.3,444.88 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:441.41,443.4 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:451.86,452.29 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:455.2,455.12 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:452.29,454.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:462.98,465.17 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:469.2,470.16 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:473.2,473.40 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:476.2,476.41 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:485.2,485.17 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:494.2,494.12 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:465.17,467.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:470.16,472.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:473.40,475.3 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:476.41,477.23 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:477.23,479.69 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:479.69,481.5 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:485.17,487.55 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:490.3,490.56 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:487.55,489.4 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:490.56,492.4 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:499.89,507.16 5 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:510.2,510.32 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:532.2,535.37 2 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:538.2,540.32 2 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:545.2,552.19 4 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:555.2,556.45 2 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:559.2,559.12 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:507.16,509.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:510.32,515.47 3 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:521.3,521.25 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:529.3,529.19 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:515.47,516.42 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:516.42,518.5 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:521.25,523.36 2 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:523.36,525.5 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:525.10,527.5 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:535.37,537.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:540.32,541.41 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:541.41,543.4 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:552.19,554.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:556.45,558.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:564.156,568.2 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:572.216,578.2 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:582.68,588.2 4 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:592.135,597.17 3 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:601.2,601.60 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:605.2,611.16 5 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:614.2,614.56 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:618.2,618.41 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:627.2,628.44 2 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:636.2,637.16 2 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:640.2,643.12 3 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:657.2,657.12 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:597.17,599.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:601.60,603.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:611.16,613.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:614.56,616.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:618.41,619.23 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:619.23,621.87 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:621.87,623.5 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:628.44,634.3 3 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:637.16,639.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:643.12,644.10 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:650.3,650.10 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:645.15,646.10 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:647.28,647.28 0 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:651.42,651.42 0 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:652.11,653.81 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:664.112,666.16 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:669.2,669.39 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:666.16,668.3 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:672.69,673.40 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:676.2,676.37 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:673.40,675.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:680.61,682.2 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:685.32,687.2 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:691.68,698.2 1 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:701.56,706.2 4 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:715.45,719.2 3 0 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:721.57,739.27 2 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:742.2,742.43 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:739.27,741.3 1 1 +github.com/ethereum/go-ethereum/consensus/clique/clique.go:742.43,743.40 1 0 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:65.47,65.64 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:66.47,66.93 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:67.47,67.74 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:72.140,82.33 2 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:85.2,85.13 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:82.33,84.3 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:89.128,91.16 2 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:94.2,95.51 2 0 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:98.2,101.18 3 0 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:91.16,93.3 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:95.51,97.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:105.51,107.16 2 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:110.2,110.62 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:107.16,109.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:114.37,125.32 2 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:128.2,128.39 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:131.2,131.38 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:134.2,136.12 2 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:125.32,127.3 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:128.39,130.3 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:131.38,133.3 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:141.75,144.2 2 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:147.70,149.38 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:153.2,153.37 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:159.2,159.13 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:149.38,151.3 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:153.37,156.3 2 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:156.8,158.3 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:163.72,166.9 2 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:170.2,170.34 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:174.2,174.21 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:180.2,180.13 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:166.9,168.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:170.34,172.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:174.21,177.3 2 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:177.8,179.3 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:185.70,187.23 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:191.2,191.38 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:196.2,196.46 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:200.2,206.33 3 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:300.2,300.39 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:303.2,306.18 3 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:187.23,189.3 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:191.38,192.67 1 0 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:192.67,194.4 1 0 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:196.46,198.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:206.33,209.33 2 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:214.3,214.64 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:218.3,219.17 2 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:222.3,222.41 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:225.3,225.39 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:230.3,233.35 2 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:244.3,245.10 2 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:253.3,253.44 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:262.3,262.78 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:295.3,295.41 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:209.33,212.4 2 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:214.64,216.4 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:219.17,221.4 1 0 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:222.41,224.4 1 0 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:225.39,226.24 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:226.24,228.5 1 0 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:233.35,234.64 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:234.64,240.10 3 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:246.52,247.20 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:248.52,249.21 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:250.11,251.30 1 0 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:253.44,260.4 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:262.78,263.23 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:286.4,286.41 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:292.4,292.39 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:263.23,265.5 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:265.10,269.66 2 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:273.5,273.42 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:269.66,271.6 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:273.42,274.49 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:274.49,282.7 3 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:286.41,287.49 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:287.49,290.6 2 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:295.41,298.4 2 0 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:300.39,302.3 1 0 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:310.47,312.29 2 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:315.2,316.13 2 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:312.29,314.3 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:320.70,322.57 2 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:325.2,325.58 1 1 +github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:322.57,324.3 1 0 +github.com/ethereum/go-ethereum/common/prque/prque.go:30.44,32.2 1 1 +github.com/ethereum/go-ethereum/common/prque/prque.go:35.54,37.2 1 0 +github.com/ethereum/go-ethereum/common/prque/prque.go:40.56,42.2 1 1 +github.com/ethereum/go-ethereum/common/prque/prque.go:45.45,48.2 2 0 +github.com/ethereum/go-ethereum/common/prque/prque.go:52.44,55.2 2 1 +github.com/ethereum/go-ethereum/common/prque/prque.go:58.39,60.2 1 0 +github.com/ethereum/go-ethereum/common/prque/prque.go:63.43,64.11 1 0 +github.com/ethereum/go-ethereum/common/prque/prque.go:67.2,67.31 1 0 +github.com/ethereum/go-ethereum/common/prque/prque.go:64.11,66.3 1 0 +github.com/ethereum/go-ethereum/common/prque/prque.go:71.30,73.2 1 1 +github.com/ethereum/go-ethereum/common/prque/prque.go:76.28,78.2 1 1 +github.com/ethereum/go-ethereum/common/prque/prque.go:81.25,83.2 1 1 +github.com/ethereum/go-ethereum/common/prque/sstack.go:45.68,53.2 7 1 +github.com/ethereum/go-ethereum/common/prque/sstack.go:57.41,58.26 1 1 +github.com/ethereum/go-ethereum/common/prque/sstack.go:67.2,67.23 1 1 +github.com/ethereum/go-ethereum/common/prque/sstack.go:70.2,72.10 3 1 +github.com/ethereum/go-ethereum/common/prque/sstack.go:58.26,63.3 4 1 +github.com/ethereum/go-ethereum/common/prque/sstack.go:63.8,63.34 1 1 +github.com/ethereum/go-ethereum/common/prque/sstack.go:63.34,66.3 2 1 +github.com/ethereum/go-ethereum/common/prque/sstack.go:67.23,69.3 1 1 +github.com/ethereum/go-ethereum/common/prque/sstack.go:77.42,80.18 3 1 +github.com/ethereum/go-ethereum/common/prque/sstack.go:84.2,85.23 2 1 +github.com/ethereum/go-ethereum/common/prque/sstack.go:88.2,88.8 1 1 +github.com/ethereum/go-ethereum/common/prque/sstack.go:80.18,83.3 2 1 +github.com/ethereum/go-ethereum/common/prque/sstack.go:85.23,87.3 1 1 +github.com/ethereum/go-ethereum/common/prque/sstack.go:92.28,94.2 1 1 +github.com/ethereum/go-ethereum/common/prque/sstack.go:98.38,100.18 2 1 +github.com/ethereum/go-ethereum/common/prque/sstack.go:103.2,103.14 1 1 +github.com/ethereum/go-ethereum/common/prque/sstack.go:100.18,102.3 1 0 +github.com/ethereum/go-ethereum/common/prque/sstack.go:107.33,110.23 3 1 +github.com/ethereum/go-ethereum/common/prque/sstack.go:114.2,114.43 1 1 +github.com/ethereum/go-ethereum/common/prque/sstack.go:110.23,113.3 2 1 +github.com/ethereum/go-ethereum/common/prque/sstack.go:118.26,120.2 1 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:56.166,70.2 4 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:73.29,76.2 2 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:79.31,81.54 2 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:81.54,85.3 3 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:89.49,91.28 2 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:94.2,96.40 3 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:91.28,93.3 1 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:100.44,102.2 1 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:105.39,107.2 1 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:110.48,115.57 2 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:120.2,120.24 1 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:115.57,119.3 3 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:125.37,126.27 1 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:132.2,132.27 1 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:135.2,135.11 1 0 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:126.27,127.99 1 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:130.3,130.11 1 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:127.99,129.4 1 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:132.27,134.3 1 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:141.84,143.22 2 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:143.22,147.129 4 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:147.129,149.38 2 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:155.4,155.29 1 0 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:149.38,150.31 1 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:153.5,153.11 1 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:150.31,152.6 1 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:161.43,164.2 2 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:167.51,168.15 1 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:171.2,171.76 1 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:168.15,170.3 1 0 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:175.34,177.2 1 0 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:180.32,182.2 1 0 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:185.60,186.17 1 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:186.17,188.3 1 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:188.8,190.3 1 1 +github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:194.60,196.2 1 1 +github.com/ethereum/go-ethereum/consensus/misc/dao.go:47.87,49.32 1 0 +github.com/ethereum/go-ethereum/consensus/misc/dao.go:53.2,54.81 2 0 +github.com/ethereum/go-ethereum/consensus/misc/dao.go:58.2,58.27 1 0 +github.com/ethereum/go-ethereum/consensus/misc/dao.go:68.2,68.12 1 0 +github.com/ethereum/go-ethereum/consensus/misc/dao.go:49.32,51.3 1 0 +github.com/ethereum/go-ethereum/consensus/misc/dao.go:54.81,56.3 1 0 +github.com/ethereum/go-ethereum/consensus/misc/dao.go:58.27,59.59 1 0 +github.com/ethereum/go-ethereum/consensus/misc/dao.go:59.59,61.4 1 0 +github.com/ethereum/go-ethereum/consensus/misc/dao.go:62.8,63.58 1 0 +github.com/ethereum/go-ethereum/consensus/misc/dao.go:63.58,65.4 1 0 +github.com/ethereum/go-ethereum/consensus/misc/dao.go:74.47,76.46 1 0 +github.com/ethereum/go-ethereum/consensus/misc/dao.go:81.2,81.45 1 0 +github.com/ethereum/go-ethereum/consensus/misc/dao.go:76.46,78.3 1 0 +github.com/ethereum/go-ethereum/consensus/misc/dao.go:81.45,84.3 2 0 +github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:32.90,35.37 2 1 +github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:38.2,38.72 1 1 +github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:42.2,42.27 1 1 +github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:46.2,47.46 2 1 +github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:51.2,51.12 1 1 +github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:35.37,37.3 1 1 +github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:38.72,40.3 1 1 +github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:42.27,44.3 1 0 +github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:47.46,50.3 1 0 +github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:55.77,57.37 1 1 +github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:61.2,67.39 2 1 +github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:70.2,70.38 1 1 +github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:57.37,59.3 1 1 +github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:67.39,69.3 1 1 +github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:70.38,81.3 5 1 +github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:81.8,92.3 5 1 +github.com/ethereum/go-ethereum/consensus/misc/forks.go:30.91,32.11 1 0 +github.com/ethereum/go-ethereum/consensus/misc/forks.go:36.2,36.77 1 0 +github.com/ethereum/go-ethereum/consensus/misc/forks.go:42.2,42.12 1 0 +github.com/ethereum/go-ethereum/consensus/misc/forks.go:32.11,34.3 1 0 +github.com/ethereum/go-ethereum/consensus/misc/forks.go:36.77,37.81 1 0 +github.com/ethereum/go-ethereum/consensus/misc/forks.go:37.81,39.4 1 0 +github.com/ethereum/go-ethereum/consensus/misc/gaslimit.go:28.66,31.14 2 1 +github.com/ethereum/go-ethereum/consensus/misc/gaslimit.go:34.2,35.27 2 1 +github.com/ethereum/go-ethereum/consensus/misc/gaslimit.go:38.2,38.41 1 1 +github.com/ethereum/go-ethereum/consensus/misc/gaslimit.go:41.2,41.12 1 1 +github.com/ethereum/go-ethereum/consensus/misc/gaslimit.go:31.14,33.3 1 1 +github.com/ethereum/go-ethereum/consensus/misc/gaslimit.go:35.27,37.3 1 1 +github.com/ethereum/go-ethereum/consensus/misc/gaslimit.go:38.41,40.3 1 0 +github.com/ethereum/go-ethereum/core/asm/asm.go:38.63,42.2 3 1 +github.com/ethereum/go-ethereum/core/asm/asm.go:45.44,46.54 1 1 +github.com/ethereum/go-ethereum/core/asm/asm.go:51.2,51.16 1 1 +github.com/ethereum/go-ethereum/core/asm/asm.go:62.2,62.35 1 1 +github.com/ethereum/go-ethereum/core/asm/asm.go:67.2,68.20 2 1 +github.com/ethereum/go-ethereum/core/asm/asm.go:79.2,79.13 1 1 +github.com/ethereum/go-ethereum/core/asm/asm.go:46.54,49.3 1 1 +github.com/ethereum/go-ethereum/core/asm/asm.go:51.16,53.20 1 1 +github.com/ethereum/go-ethereum/core/asm/asm.go:56.3,56.10 1 1 +github.com/ethereum/go-ethereum/core/asm/asm.go:53.20,55.4 1 1 +github.com/ethereum/go-ethereum/core/asm/asm.go:57.8,60.3 1 1 +github.com/ethereum/go-ethereum/core/asm/asm.go:62.35,65.3 1 1 +github.com/ethereum/go-ethereum/core/asm/asm.go:68.20,71.64 3 1 +github.com/ethereum/go-ethereum/core/asm/asm.go:75.3,75.32 1 1 +github.com/ethereum/go-ethereum/core/asm/asm.go:71.64,74.4 2 1 +github.com/ethereum/go-ethereum/core/asm/asm.go:76.8,78.3 1 1 +github.com/ethereum/go-ethereum/core/asm/asm.go:83.46,85.2 1 1 +github.com/ethereum/go-ethereum/core/asm/asm.go:88.44,90.2 1 0 +github.com/ethereum/go-ethereum/core/asm/asm.go:93.47,95.2 1 0 +github.com/ethereum/go-ethereum/core/asm/asm.go:98.45,100.2 1 0 +github.com/ethereum/go-ethereum/core/asm/asm.go:103.43,105.16 2 0 +github.com/ethereum/go-ethereum/core/asm/asm.go:109.2,110.16 2 0 +github.com/ethereum/go-ethereum/core/asm/asm.go:117.2,117.19 1 0 +github.com/ethereum/go-ethereum/core/asm/asm.go:105.16,107.3 1 0 +github.com/ethereum/go-ethereum/core/asm/asm.go:110.16,111.43 1 0 +github.com/ethereum/go-ethereum/core/asm/asm.go:111.43,113.4 1 0 +github.com/ethereum/go-ethereum/core/asm/asm.go:113.9,115.4 1 0 +github.com/ethereum/go-ethereum/core/asm/asm.go:121.51,125.16 3 0 +github.com/ethereum/go-ethereum/core/asm/asm.go:132.2,132.35 1 0 +github.com/ethereum/go-ethereum/core/asm/asm.go:135.2,135.20 1 0 +github.com/ethereum/go-ethereum/core/asm/asm.go:125.16,126.43 1 0 +github.com/ethereum/go-ethereum/core/asm/asm.go:126.43,128.4 1 0 +github.com/ethereum/go-ethereum/core/asm/asm.go:128.9,130.4 1 0 +github.com/ethereum/go-ethereum/core/asm/asm.go:132.35,134.3 1 0 +github.com/ethereum/go-ethereum/core/asm/compiler.go:43.40,48.2 1 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:59.42,61.20 2 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:86.2,86.13 1 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:61.20,62.16 1 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:83.3,84.11 2 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:63.15,65.21 2 0 +github.com/ethereum/go-ethereum/core/asm/compiler.go:68.4,68.20 1 0 +github.com/ethereum/go-ethereum/core/asm/compiler.go:69.20,70.27 1 0 +github.com/ethereum/go-ethereum/core/asm/compiler.go:71.16,72.10 1 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:73.17,75.10 2 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:76.14,78.48 2 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:65.21,67.5 1 0 +github.com/ethereum/go-ethereum/core/asm/compiler.go:78.48,80.5 1 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:86.13,88.3 1 0 +github.com/ethereum/go-ethereum/core/asm/compiler.go:97.48,101.28 2 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:108.2,109.29 2 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:117.2,117.20 1 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:101.28,102.41 1 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:102.41,104.4 1 0 +github.com/ethereum/go-ethereum/core/asm/compiler.go:109.29,110.24 1 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:111.18,112.45 1 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:113.15,114.31 1 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:122.33,126.2 3 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:130.40,132.24 2 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:136.2,137.20 2 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:152.2,152.37 1 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:156.2,156.12 1 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:132.24,134.3 1 0 +github.com/ethereum/go-ethereum/core/asm/compiler.go:138.11,139.13 1 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:140.15,141.50 1 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:144.16,145.19 1 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:146.15,147.13 1 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:148.10,149.85 1 0 +github.com/ethereum/go-ethereum/core/asm/compiler.go:141.50,143.4 1 0 +github.com/ethereum/go-ethereum/core/asm/compiler.go:152.37,154.3 1 0 +github.com/ethereum/go-ethereum/core/asm/compiler.go:160.62,162.19 2 0 +github.com/ethereum/go-ethereum/core/asm/compiler.go:165.2,166.22 2 0 +github.com/ethereum/go-ethereum/core/asm/compiler.go:162.19,164.3 1 0 +github.com/ethereum/go-ethereum/core/asm/compiler.go:172.56,175.26 1 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:227.2,227.12 1 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:175.26,177.21 2 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:195.3,196.13 2 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:178.15,180.27 1 0 +github.com/ethereum/go-ethereum/core/asm/compiler.go:181.20,183.50 1 0 +github.com/ethereum/go-ethereum/core/asm/compiler.go:184.14,188.18 4 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:189.16,190.11 1 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:191.11,192.69 1 0 +github.com/ethereum/go-ethereum/core/asm/compiler.go:197.8,197.33 1 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:197.33,202.21 3 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:217.3,217.22 1 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:221.3,222.19 2 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:203.15,205.23 2 0 +github.com/ethereum/go-ethereum/core/asm/compiler.go:208.20,209.55 1 0 +github.com/ethereum/go-ethereum/core/asm/compiler.go:210.14,212.56 2 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:213.11,214.69 1 0 +github.com/ethereum/go-ethereum/core/asm/compiler.go:205.23,207.5 1 0 +github.com/ethereum/go-ethereum/core/asm/compiler.go:217.22,219.4 1 0 +github.com/ethereum/go-ethereum/core/asm/compiler.go:223.8,225.3 1 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:231.35,233.2 1 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:236.43,237.13 1 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:240.2,240.32 1 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:237.13,239.3 1 0 +github.com/ethereum/go-ethereum/core/asm/compiler.go:245.29,247.2 1 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:250.29,252.2 1 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:255.38,257.2 1 1 +github.com/ethereum/go-ethereum/core/asm/compiler.go:266.40,268.2 1 0 +github.com/ethereum/go-ethereum/core/asm/compiler.go:270.50,276.2 1 0 +github.com/ethereum/go-ethereum/core/asm/lexer.go:62.37,63.37 1 0 +github.com/ethereum/go-ethereum/core/asm/lexer.go:66.2,66.29 1 0 +github.com/ethereum/go-ethereum/core/asm/lexer.go:63.37,65.3 1 0 +github.com/ethereum/go-ethereum/core/asm/lexer.go:98.50,106.12 3 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:115.2,115.11 1 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:106.12,108.22 2 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:111.3,112.18 2 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:108.22,110.4 1 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:119.36,120.27 1 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:124.2,126.13 3 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:120.27,123.3 2 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:130.26,132.2 1 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:135.29,139.2 3 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:142.26,144.2 1 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:147.43,148.43 1 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:152.2,154.14 2 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:148.43,150.3 1 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:159.41,160.44 1 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:162.2,162.12 1 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:160.45,161.3 0 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:167.49,169.75 1 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:175.2,175.13 1 0 +github.com/ethereum/go-ethereum/core/asm/lexer.go:169.75,170.13 1 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:170.13,172.4 1 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:179.31,181.2 1 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:184.35,187.13 2 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:191.2,192.17 2 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:187.13,189.3 1 0 +github.com/ethereum/go-ethereum/core/asm/lexer.go:196.32,197.6 1 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:197.6,198.25 1 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:199.18,204.21 4 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:205.36,206.21 1 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:207.19,208.14 1 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:209.32,210.21 1 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:211.20,212.20 1 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:213.17,215.19 2 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:216.17,217.26 1 0 +github.com/ethereum/go-ethereum/core/asm/lexer.go:218.11,219.14 1 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:226.35,231.2 3 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:236.33,242.2 3 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:247.40,248.27 1 0 +github.com/ethereum/go-ethereum/core/asm/lexer.go:252.2,252.16 1 0 +github.com/ethereum/go-ethereum/core/asm/lexer.go:248.27,250.3 1 0 +github.com/ethereum/go-ethereum/core/asm/lexer.go:255.34,257.20 2 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:260.2,264.16 3 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:257.20,259.3 1 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:267.35,270.21 2 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:278.2,278.16 1 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:270.21,275.3 3 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:275.8,277.3 1 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:281.28,283.2 1 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:285.27,287.2 1 1 +github.com/ethereum/go-ethereum/core/asm/lexer.go:289.28,291.2 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:90.47,93.17 3 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:96.2,96.67 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:101.2,101.18 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:93.17,95.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:96.67,98.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:98.8,100.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:117.156,125.2 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:129.179,134.16 3 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:137.2,138.16 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:141.2,142.30 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:134.16,136.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:138.16,140.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:149.114,151.17 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:154.2,154.20 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:158.2,159.16 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:162.2,168.18 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:197.2,197.24 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:202.2,203.58 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:151.17,153.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:154.20,156.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:159.16,161.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:168.18,170.10 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:173.3,174.37 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:170.10,172.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:174.37,176.64 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:176.64,178.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:178.10,178.29 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:178.29,180.5 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:182.8,184.17 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:187.3,187.23 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:184.17,186.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:187.23,189.81 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:189.81,191.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:191.10,191.29 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:191.29,193.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:197.24,201.3 3 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:207.120,210.16 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:215.2,215.44 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:210.16,212.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:220.102,224.2 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:228.82,232.2 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:234.149,237.18 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:241.2,242.22 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:250.2,251.22 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:257.2,257.34 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:261.2,262.24 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:270.2,271.16 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:274.2,283.33 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:237.18,239.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:242.22,244.17 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:247.3,247.18 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:244.17,246.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:251.22,256.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:257.34,259.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:262.24,265.17 3 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:265.17,267.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:271.16,273.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:286.128,287.52 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:291.2,292.18 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:296.2,297.21 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:305.2,306.24 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:314.2,315.16 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:318.2,326.33 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:287.52,289.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:292.18,294.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:297.21,299.17 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:302.3,302.19 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:299.17,301.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:306.24,309.17 3 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:309.17,311.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:315.16,317.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:329.166,330.21 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:338.2,347.67 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:330.21,332.98 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:332.98,334.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:334.9,334.28 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:334.28,336.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:350.70,351.23 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:351.23,353.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:353.8,355.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:360.122,361.78 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:365.2,369.26 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:382.2,382.16 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:386.2,386.24 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:389.2,390.16 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:393.2,393.17 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:396.2,396.92 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:399.2,399.22 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:361.78,363.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:369.26,371.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:371.8,373.101 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:373.101,375.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:375.9,375.33 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:375.33,377.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:377.9,380.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:382.16,384.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:386.24,388.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:390.16,392.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:393.17,395.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:396.92,398.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:404.135,406.17 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:410.2,413.16 3 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:417.2,424.21 3 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:430.2,431.16 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:434.2,434.69 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:445.2,445.16 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:448.2,448.23 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:406.17,408.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:413.16,415.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:424.21,426.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:431.16,433.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:434.69,435.28 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:442.3,442.13 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:435.28,436.11 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:437.21,437.21 0 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:438.16,439.15 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:445.16,447.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:453.133,455.17 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:459.2,462.16 3 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:466.2,472.23 3 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:475.2,476.16 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:479.2,479.23 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:455.17,457.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:462.16,464.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:472.23,474.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:476.16,478.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:483.87,484.45 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:487.2,487.23 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:492.2,493.49 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:498.2,498.54 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:484.45,486.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:487.23,488.73 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:488.73,490.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:493.49,494.18 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:494.18,496.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:502.105,503.45 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:506.2,506.23 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:511.2,512.49 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:517.2,517.61 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:503.45,505.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:506.23,507.67 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:507.67,509.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:512.49,513.18 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:513.18,515.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:522.57,523.16 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:526.2,526.12 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:523.16,525.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:50.179,61.34 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:213.2,213.34 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:218.2,234.51 5 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:238.2,238.20 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:246.2,246.29 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:61.34,64.17 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:68.3,68.48 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:76.3,92.51 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:98.3,98.43 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:139.3,139.42 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:169.3,169.27 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:172.3,172.26 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:176.3,176.43 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:180.3,194.21 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:198.3,198.35 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:64.17,66.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:68.48,69.26 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:72.4,72.12 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:69.26,71.5 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:92.51,93.29 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:93.29,95.5 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:98.43,104.30 4 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:107.4,107.35 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:110.4,114.44 5 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:122.4,124.46 3 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:133.4,133.29 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:104.30,106.5 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:107.35,109.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:114.44,115.25 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:118.5,118.30 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:115.25,117.6 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:118.30,120.6 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:124.46,125.26 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:128.5,128.31 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:125.26,127.6 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:128.31,130.6 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:133.29,135.5 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:135.10,137.5 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:139.42,141.26 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:145.4,149.40 3 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:152.4,157.44 5 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:166.4,166.82 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:141.26,142.13 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:149.40,151.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:157.44,158.25 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:161.5,161.30 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:158.25,160.6 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:161.30,163.6 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:169.27,171.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:172.26,174.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:176.43,178.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:194.21,196.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:198.35,200.18 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:203.4,203.15 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:200.18,202.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:203.15,206.34 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:206.34,208.6 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:213.34,216.3 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:234.51,236.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:238.20,240.17 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:243.3,243.27 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:240.17,242.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:257.44,258.16 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:259.21,260.26 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:261.29,263.19 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:267.3,267.20 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:268.24,269.44 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:270.19,271.18 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:272.22,273.20 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:274.10,276.23 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:264.30,265.53 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:283.71,284.16 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:285.19,286.55 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:287.19,288.74 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:289.19,290.48 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:291.10,292.31 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:297.46,298.16 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:299.21,300.19 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:301.29,305.22 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:310.3,310.22 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:314.3,322.22 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:325.3,325.19 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:326.37,327.18 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:328.18,329.19 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:330.20,331.18 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:332.22,333.20 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:334.10,335.23 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:305.22,307.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:310.22,312.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:322.22,324.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:341.43,342.13 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:354.2,354.19 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:343.17,344.17 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:345.16,346.19 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:347.17,348.21 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:349.16,350.20 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:351.16,352.19 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:360.73,361.16 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:362.19,363.55 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:364.32,365.62 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:366.10,367.33 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:380.76,389.44 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:392.2,392.14 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:389.44,391.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:397.78,406.44 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:409.2,409.14 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:406.44,408.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:422.77,423.16 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:424.19,432.37 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:435.3,436.40 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:440.3,441.17 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:444.3,448.14 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:449.19,450.80 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:451.19,452.54 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:453.10,454.31 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:432.37,434.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:436.40,439.4 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:441.17,443.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:461.79,462.16 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:463.19,471.37 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:474.3,475.40 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:479.3,480.17 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:483.3,487.14 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:488.32,489.68 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:490.10,491.33 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:471.37,473.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:475.40,478.4 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:480.17,482.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:498.42,498.77 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:504.62,505.18 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:506.16,507.18 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:508.17,509.16 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:510.10,512.22 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:515.3,515.19 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:512.22,514.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:516.30,517.22 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:520.4,520.66 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:522.11,523.19 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:517.22,519.5 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:530.56,531.39 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:534.2,534.10 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:531.39,533.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:548.40,549.21 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:553.2,554.49 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:549.21,551.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:559.42,560.19 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:563.2,564.27 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:577.2,577.13 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:560.19,562.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:564.27,566.21 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:571.3,572.35 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:575.3,575.23 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:566.21,568.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:572.35,574.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:582.33,583.13 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:584.19,585.28 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:586.19,587.28 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:588.19,589.14 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:590.10,591.15 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:32.101,37.6 4 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:37.6,39.17 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:43.3,43.40 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:50.3,50.10 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:39.17,41.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:43.40,45.4 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:45.9,47.4 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:51.21,52.25 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:53.24,53.24 0 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:60.104,61.20 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:64.2,65.16 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:68.2,68.51 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:74.2,75.34 2 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:78.2,78.37 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:61.20,63.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:65.16,67.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:68.51,70.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:75.34,77.3 1 1 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:46.79,49.16 3 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:52.2,53.16 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:56.2,56.48 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:49.16,51.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:53.16,55.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:63.106,68.91 3 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:68.91,69.34 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:72.4,73.18 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:76.4,76.46 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:69.34,71.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:73.18,75.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:86.62,92.91 4 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:92.91,93.26 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:96.4,97.18 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:100.4,100.46 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:93.26,95.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:97.18,99.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:108.108,110.16 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:113.2,114.16 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:117.2,117.63 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:110.16,112.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:114.16,116.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:122.135,123.20 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:126.2,129.91 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:123.20,125.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:129.91,130.34 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:133.4,134.18 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:137.4,137.46 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:130.34,132.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:134.18,136.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:145.100,147.20 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:150.2,153.91 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:147.20,149.3 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:153.91,154.26 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:157.4,158.18 2 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:161.4,161.46 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:154.26,156.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:158.18,160.5 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:169.95,172.100 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:172.100,173.34 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:176.4,176.49 1 0 +github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:173.34,175.5 1 0 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:69.77,75.43 3 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:84.2,84.52 1 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:75.43,76.19 1 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:81.3,82.8 2 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:76.19,79.12 2 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:88.42,94.2 1 0 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:98.41,102.17 1 0 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:102.17,104.4 1 0 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:109.78,110.24 1 0 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:111.2,111.41 1 0 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:110.24,110.36 1 0 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:117.94,125.29 4 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:131.2,134.27 2 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:125.29,128.3 2 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:134.27,155.30 2 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:194.3,195.13 2 0 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:155.30,158.20 1 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:163.4,163.26 1 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:174.4,174.27 1 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:185.4,185.39 1 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:192.4,192.38 1 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:158.20,159.13 1 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:163.26,166.39 1 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:170.5,170.15 1 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:166.39,168.6 1 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:174.27,175.27 1 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:175.27,177.29 1 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:180.6,180.16 1 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:177.29,179.7 1 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:185.39,186.27 1 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:186.27,189.6 1 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:201.54,205.2 3 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:208.43,212.2 3 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:215.55,221.39 4 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:237.2,237.34 1 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:245.2,245.34 1 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:252.2,252.37 1 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:255.2,255.14 1 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:221.39,224.46 2 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:227.3,227.49 1 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:231.3,232.18 2 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:224.46,225.12 1 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:227.49,228.12 1 0 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:232.18,234.4 1 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:237.34,238.39 1 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:238.39,239.27 1 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:239.27,241.5 1 0 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:245.34,246.29 1 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:246.29,249.4 2 1 +github.com/ethereum/go-ethereum/core/forkid/forkid.go:252.37,254.3 1 1 +github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:39.112,41.16 2 0 +github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:44.2,44.67 1 0 +github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:41.16,43.3 1 0 +github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:48.63,50.2 1 0 +github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:53.71,55.2 1 0 +github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:59.162,62.33 2 0 +github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:73.2,73.14 1 0 +github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:62.33,63.28 1 0 +github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:63.28,65.18 2 0 +github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:68.4,68.62 1 0 +github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:65.18,66.13 1 0 +github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:68.62,70.5 1 0 +github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:81.178,87.33 2 0 +github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:95.2,95.99 1 0 +github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:87.33,88.25 1 0 +github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:91.3,93.29 3 0 +github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:88.25,90.4 1 0 +github.com/ethereum/go-ethereum/core/bloombits/generator.go:45.54,46.21 1 1 +github.com/ethereum/go-ethereum/core/bloombits/generator.go:49.2,50.44 2 1 +github.com/ethereum/go-ethereum/core/bloombits/generator.go:53.2,53.15 1 1 +github.com/ethereum/go-ethereum/core/bloombits/generator.go:46.21,48.3 1 0 +github.com/ethereum/go-ethereum/core/bloombits/generator.go:50.44,52.3 1 1 +github.com/ethereum/go-ethereum/core/bloombits/generator.go:58.67,60.29 1 1 +github.com/ethereum/go-ethereum/core/bloombits/generator.go:63.2,63.24 1 1 +github.com/ethereum/go-ethereum/core/bloombits/generator.go:67.2,69.51 3 1 +github.com/ethereum/go-ethereum/core/bloombits/generator.go:84.2,85.12 2 1 +github.com/ethereum/go-ethereum/core/bloombits/generator.go:60.29,62.3 1 0 +github.com/ethereum/go-ethereum/core/bloombits/generator.go:63.24,65.3 1 0 +github.com/ethereum/go-ethereum/core/bloombits/generator.go:69.51,71.21 2 1 +github.com/ethereum/go-ethereum/core/bloombits/generator.go:74.3,82.59 9 1 +github.com/ethereum/go-ethereum/core/bloombits/generator.go:71.21,72.12 1 1 +github.com/ethereum/go-ethereum/core/bloombits/generator.go:90.54,91.29 1 1 +github.com/ethereum/go-ethereum/core/bloombits/generator.go:94.2,94.33 1 1 +github.com/ethereum/go-ethereum/core/bloombits/generator.go:97.2,97.27 1 1 +github.com/ethereum/go-ethereum/core/bloombits/generator.go:91.29,93.3 1 0 +github.com/ethereum/go-ethereum/core/bloombits/generator.go:94.33,96.3 1 0 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:38.46,42.33 3 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:45.2,45.13 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:42.33,44.3 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:92.66,105.33 3 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:124.2,124.44 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:131.2,131.10 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:105.33,107.23 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:110.3,111.33 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:119.3,119.23 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:107.23,108.12 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:111.33,112.21 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:116.4,116.43 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:112.21,114.10 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:119.23,121.4 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:124.44,125.50 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:125.50,126.46 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:126.46,128.5 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:137.42,138.36 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:141.2,141.39 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:138.36,140.3 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:147.111,149.43 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:152.2,160.41 3 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:163.2,167.12 3 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:214.2,214.21 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:149.43,151.3 1 0 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:160.41,162.3 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:167.12,171.7 3 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:171.7,172.11 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:173.24,174.11 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:176.27,178.12 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:182.5,185.22 3 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:188.5,189.19 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:193.5,193.36 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:178.12,180.6 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:185.22,187.6 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:189.19,191.6 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:193.36,196.19 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:203.6,203.44 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:196.19,197.19 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:200.7,200.15 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:197.19,199.8 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:203.44,204.14 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:205.27,206.14 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:207.25,207.25 0 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:224.100,229.12 3 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:242.2,245.34 3 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:249.2,252.13 3 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:229.12,233.63 3 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:233.63,234.11 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:235.24,236.11 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:237.88,237.88 0 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:245.34,247.3 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:259.145,263.29 3 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:272.2,276.12 4 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:319.2,319.12 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:376.2,376.16 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:263.29,264.28 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:264.28,269.4 3 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:276.12,281.16 3 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:289.3,289.7 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:281.16,282.48 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:282.48,283.44 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:283.44,285.6 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:289.7,290.11 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:291.24,292.11 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:294.32,296.12 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:300.5,300.49 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:310.5,310.12 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:296.12,298.6 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:300.49,301.45 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:301.45,302.14 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:303.27,304.14 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:305.40,305.40 0 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:311.25,312.12 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:313.28,313.28 0 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:319.12,325.7 3 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:325.7,326.11 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:327.24,328.11 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:330.33,332.12 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:336.5,337.45 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:360.5,360.24 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:363.5,363.29 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:366.5,366.36 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:332.12,334.6 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:337.45,339.41 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:353.6,353.25 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:339.41,341.14 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:346.7,346.27 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:342.27,343.14 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:344.29,344.29 0 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:346.27,349.8 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:349.13,351.8 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:353.25,355.7 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:355.12,357.7 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:360.24,362.6 1 0 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:363.29,365.6 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:366.36,367.13 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:368.26,369.13 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:370.64,370.64 0 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:381.76,394.27 3 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:406.2,406.6 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:394.27,395.10 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:396.34,398.18 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:399.11,402.30 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:406.6,407.10 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:408.19,412.19 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:416.22,419.54 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:420.4,423.23 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:427.32,430.30 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:436.4,437.26 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:440.4,441.18 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:443.32,445.45 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:447.34,450.67 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:457.4,460.35 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:464.33,472.42 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:480.4,484.24 3 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:498.4,498.38 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:412.19,414.5 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:419.54,419.88 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:423.23,425.5 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:430.30,431.32 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:431.32,433.6 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:437.26,439.5 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:450.67,453.5 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:453.10,456.5 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:460.35,462.5 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:472.42,473.25 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:477.5,478.38 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:473.25,475.14 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:484.24,486.37 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:490.5,492.35 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:486.37,487.56 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:488.6,488.83 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:487.56,487.86 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:492.35,494.6 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:498.38,500.5 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:523.34,524.21 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:524.21,528.3 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:532.40,537.2 3 0 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:542.59,545.9 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:546.16,547.18 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:548.39,550.17 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:556.56,559.9 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:560.16,561.11 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:562.37,564.24 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:570.73,573.9 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:574.16,575.13 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:576.39,582.30 3 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:588.89,590.2 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:598.93,599.6 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:599.6,602.10 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:606.3,606.37 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:619.3,622.10 3 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:602.10,604.4 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:606.37,607.11 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:608.18,612.11 3 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:614.28,614.28 0 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:623.17,626.10 2 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:628.23,633.27 3 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:639.4,639.66 1 1 +github.com/ethereum/go-ethereum/core/bloombits/matcher.go:633.27,638.5 4 0 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:49.40,54.2 1 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:59.125,68.2 4 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:73.29,77.40 3 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:77.40,78.24 1 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:78.24,80.4 1 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:87.134,93.6 3 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:93.6,94.10 1 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:95.15,96.10 1 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:98.30,100.11 1 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:104.4,107.35 3 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:113.4,116.14 2 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:123.4,123.11 1 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:100.11,102.5 1 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:107.35,112.5 2 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:116.14,117.12 1 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:118.17,119.12 1 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:120.57,120.57 0 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:124.16,125.11 1 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:126.25,126.25 0 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:134.116,140.6 3 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:140.6,141.10 1 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:142.15,143.10 1 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:145.26,147.11 1 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:151.4,155.11 4 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:161.4,161.11 1 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:147.11,149.5 1 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:156.16,157.11 1 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:158.20,158.20 0 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:162.16,163.11 1 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:164.28,164.28 0 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:171.63,175.35 3 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:175.35,176.67 1 1 +github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:176.67,179.4 2 1 +github.com/ethereum/go-ethereum/core/vm/memory.go:32.26,34.2 1 1 +github.com/ethereum/go-ethereum/core/vm/memory.go:37.57,40.14 1 0 +github.com/ethereum/go-ethereum/core/vm/memory.go:40.14,43.41 1 0 +github.com/ethereum/go-ethereum/core/vm/memory.go:46.3,46.43 1 0 +github.com/ethereum/go-ethereum/core/vm/memory.go:43.41,44.40 1 0 +github.com/ethereum/go-ethereum/core/vm/memory.go:52.57,55.38 1 1 +github.com/ethereum/go-ethereum/core/vm/memory.go:59.2,61.36 2 1 +github.com/ethereum/go-ethereum/core/vm/memory.go:55.38,56.39 1 0 +github.com/ethereum/go-ethereum/core/vm/memory.go:65.38,66.28 1 1 +github.com/ethereum/go-ethereum/core/vm/memory.go:66.28,68.3 1 1 +github.com/ethereum/go-ethereum/core/vm/memory.go:72.59,73.15 1 1 +github.com/ethereum/go-ethereum/core/vm/memory.go:77.2,77.32 1 1 +github.com/ethereum/go-ethereum/core/vm/memory.go:84.2,84.8 1 0 +github.com/ethereum/go-ethereum/core/vm/memory.go:73.15,75.3 1 0 +github.com/ethereum/go-ethereum/core/vm/memory.go:77.32,82.3 3 1 +github.com/ethereum/go-ethereum/core/vm/memory.go:88.52,89.15 1 0 +github.com/ethereum/go-ethereum/core/vm/memory.go:93.2,93.32 1 0 +github.com/ethereum/go-ethereum/core/vm/memory.go:97.2,97.12 1 0 +github.com/ethereum/go-ethereum/core/vm/memory.go:89.15,91.3 1 0 +github.com/ethereum/go-ethereum/core/vm/memory.go:93.32,95.3 1 0 +github.com/ethereum/go-ethereum/core/vm/memory.go:101.28,103.2 1 1 +github.com/ethereum/go-ethereum/core/vm/memory.go:106.32,108.2 1 0 +github.com/ethereum/go-ethereum/core/vm/memory.go:111.26,113.22 2 0 +github.com/ethereum/go-ethereum/core/vm/memory.go:122.2,122.37 1 0 +github.com/ethereum/go-ethereum/core/vm/memory.go:113.22,115.45 2 0 +github.com/ethereum/go-ethereum/core/vm/memory.go:115.45,118.4 2 0 +github.com/ethereum/go-ethereum/core/vm/memory.go:119.8,121.3 1 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:19.51,21.2 1 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:23.54,25.2 1 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:27.56,29.2 1 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:31.50,33.2 1 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:35.53,37.2 1 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:39.47,41.2 1 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:43.49,45.2 1 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:47.48,49.2 1 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:51.48,53.2 1 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:55.49,57.2 1 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:59.46,61.14 2 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:64.2,65.14 2 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:68.2,68.11 1 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:71.2,71.17 1 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:61.14,63.3 1 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:65.14,67.3 1 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:68.11,70.3 1 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:73.54,75.14 2 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:78.2,79.14 2 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:82.2,82.11 1 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:85.2,85.17 1 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:75.14,77.3 1 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:79.14,81.3 1 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:82.11,84.3 1 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:88.52,90.14 2 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:93.2,94.14 2 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:97.2,97.11 1 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:100.2,100.17 1 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:90.14,92.3 1 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:94.14,96.3 1 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:97.11,99.3 1 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:103.48,105.2 1 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:107.48,109.2 1 0 +github.com/ethereum/go-ethereum/core/vm/memory_table.go:111.45,113.2 1 0 +github.com/ethereum/go-ethereum/core/vm/opcodes.go:27.32,28.12 1 0 +github.com/ethereum/go-ethereum/core/vm/opcodes.go:32.2,32.14 1 0 +github.com/ethereum/go-ethereum/core/vm/opcodes.go:29.253,30.14 1 0 +github.com/ethereum/go-ethereum/core/vm/opcodes.go:387.34,389.19 2 0 +github.com/ethereum/go-ethereum/core/vm/opcodes.go:393.2,393.12 1 0 +github.com/ethereum/go-ethereum/core/vm/opcodes.go:389.19,391.3 1 0 +github.com/ethereum/go-ethereum/core/vm/opcodes.go:543.36,545.2 1 0 +github.com/ethereum/go-ethereum/core/vm/stack.go:27.26,29.3 1 1 +github.com/ethereum/go-ethereum/core/vm/stack.go:39.24,41.2 1 1 +github.com/ethereum/go-ethereum/core/vm/stack.go:43.28,46.2 2 1 +github.com/ethereum/go-ethereum/core/vm/stack.go:49.39,51.2 1 0 +github.com/ethereum/go-ethereum/core/vm/stack.go:53.39,56.2 1 1 +github.com/ethereum/go-ethereum/core/vm/stack.go:58.42,62.2 3 1 +github.com/ethereum/go-ethereum/core/vm/stack.go:64.28,66.2 1 1 +github.com/ethereum/go-ethereum/core/vm/stack.go:68.30,70.2 1 0 +github.com/ethereum/go-ethereum/core/vm/stack.go:72.29,74.2 1 1 +github.com/ethereum/go-ethereum/core/vm/stack.go:76.38,78.2 1 1 +github.com/ethereum/go-ethereum/core/vm/stack.go:81.43,83.2 1 1 +github.com/ethereum/go-ethereum/core/vm/stack.go:86.26,88.22 2 0 +github.com/ethereum/go-ethereum/core/vm/stack.go:95.2,95.30 1 0 +github.com/ethereum/go-ethereum/core/vm/stack.go:88.22,89.31 1 0 +github.com/ethereum/go-ethereum/core/vm/stack.go:89.31,91.4 1 0 +github.com/ethereum/go-ethereum/core/vm/stack.go:92.8,94.3 1 0 +github.com/ethereum/go-ethereum/core/vm/common.go:27.56,28.19 1 0 +github.com/ethereum/go-ethereum/core/vm/common.go:31.2,31.47 1 0 +github.com/ethereum/go-ethereum/core/vm/common.go:28.19,30.3 1 0 +github.com/ethereum/go-ethereum/core/vm/common.go:37.78,39.19 1 0 +github.com/ethereum/go-ethereum/core/vm/common.go:43.2,44.14 2 0 +github.com/ethereum/go-ethereum/core/vm/common.go:47.2,49.28 2 0 +github.com/ethereum/go-ethereum/core/vm/common.go:39.19,41.3 1 0 +github.com/ethereum/go-ethereum/core/vm/common.go:44.14,46.3 1 0 +github.com/ethereum/go-ethereum/core/vm/common.go:54.61,56.20 2 1 +github.com/ethereum/go-ethereum/core/vm/common.go:59.2,60.18 2 1 +github.com/ethereum/go-ethereum/core/vm/common.go:63.2,63.57 1 1 +github.com/ethereum/go-ethereum/core/vm/common.go:56.20,58.3 1 1 +github.com/ethereum/go-ethereum/core/vm/common.go:60.18,62.3 1 1 +github.com/ethereum/go-ethereum/core/vm/common.go:67.37,68.30 1 1 +github.com/ethereum/go-ethereum/core/vm/common.go:72.2,72.25 1 1 +github.com/ethereum/go-ethereum/core/vm/common.go:68.30,70.3 1 0 +github.com/ethereum/go-ethereum/core/vm/common.go:75.29,76.25 1 1 +github.com/ethereum/go-ethereum/core/vm/common.go:81.2,81.13 1 1 +github.com/ethereum/go-ethereum/core/vm/common.go:76.25,77.16 1 1 +github.com/ethereum/go-ethereum/core/vm/common.go:77.16,79.4 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:29.90,33.2 3 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:35.90,39.2 3 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:41.90,45.2 3 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:47.90,51.2 3 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:53.91,57.2 3 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:59.90,63.2 3 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:65.91,69.2 3 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:71.90,75.2 3 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:77.97,81.2 3 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:83.90,87.2 3 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:89.89,91.13 2 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:96.2,96.17 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:91.13,93.3 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:93.8,95.3 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:99.89,101.13 2 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:106.2,106.17 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:101.13,103.3 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:103.8,105.3 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:109.90,111.14 2 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:116.2,116.17 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:111.14,113.3 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:113.8,115.3 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:119.90,121.14 2 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:126.2,126.17 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:121.14,123.3 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:123.8,125.3 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:129.89,131.13 2 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:136.2,136.17 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:131.13,133.3 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:133.8,135.3 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:139.93,141.16 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:146.2,146.17 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:141.16,143.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:143.8,145.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:149.90,153.2 3 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:155.89,159.2 3 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:161.90,165.2 3 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:167.91,171.2 3 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:173.93,175.16 2 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:180.2,180.17 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:175.16,177.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:177.8,179.3 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:183.93,187.2 3 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:192.90,195.25 2 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:200.2,200.17 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:195.25,197.3 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:197.8,199.3 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:206.90,209.25 2 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:214.2,214.17 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:209.25,211.3 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:211.8,213.3 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:220.90,222.25 2 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:231.2,233.17 3 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:222.25,223.24 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:229.3,229.18 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:223.24,225.4 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:225.9,228.4 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:236.96,240.31 3 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:245.2,249.40 4 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:253.2,254.17 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:240.31,242.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:242.8,244.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:249.40,251.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:256.94,259.2 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:261.94,266.2 4 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:268.93,271.2 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:272.93,275.2 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:277.96,281.2 3 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:283.99,285.59 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:291.2,291.17 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:285.59,288.3 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:288.8,290.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:294.99,297.2 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:299.99,306.14 3 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:310.2,314.17 4 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:306.14,308.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:317.101,320.2 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:322.101,330.14 3 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:334.2,337.61 4 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:340.2,341.17 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:330.14,332.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:337.61,339.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:344.98,348.2 3 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:350.95,355.2 4 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:357.95,364.14 3 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:367.2,370.17 3 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:364.14,366.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:373.98,382.14 3 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:385.2,389.17 4 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:382.14,384.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:418.98,421.44 3 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:426.2,426.17 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:421.44,423.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:423.8,425.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:429.95,433.2 3 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:435.96,438.14 3 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:442.2,444.17 3 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:449.2,449.37 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:454.2,454.17 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:438.14,441.3 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:444.17,446.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:446.8,448.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:449.37,451.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:451.8,453.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:457.95,460.2 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:462.96,466.2 3 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:468.93,472.2 3 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:474.97,478.2 3 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:480.93,484.2 3 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:486.95,489.2 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:491.90,494.2 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:496.92,501.2 4 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:503.93,508.2 3 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:510.94,514.2 3 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:516.92,522.2 5 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:524.93,525.26 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:528.2,532.17 4 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:525.26,527.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:535.91,536.51 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:539.2,540.41 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:543.2,544.17 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:536.51,538.3 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:540.41,542.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:547.92,548.51 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:551.2,552.20 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:558.2,558.17 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:548.51,550.3 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:552.20,553.42 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:556.3,556.25 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:553.42,555.4 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:561.95,563.2 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:565.89,568.2 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:570.92,573.2 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:575.90,578.2 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:580.93,581.26 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:584.2,590.41 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:594.2,599.21 4 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:603.2,608.78 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:615.2,618.36 3 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:622.2,623.17 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:581.26,583.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:590.41,592.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:599.21,601.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:608.78,610.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:610.8,610.60 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:610.60,612.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:612.8,614.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:618.36,621.3 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:626.94,627.26 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:630.2,645.25 6 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:648.2,651.19 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:656.2,659.36 3 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:663.2,664.17 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:627.26,629.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:645.25,647.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:651.19,653.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:653.8,655.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:659.36,662.3 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:667.91,679.45 7 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:682.2,686.21 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:691.2,693.16 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:698.2,699.47 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:703.2,706.17 3 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:679.45,681.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:686.21,689.3 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:693.16,695.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:695.8,697.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:699.47,702.3 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:709.95,723.21 8 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:728.2,729.16 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:734.2,735.47 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:739.2,742.17 3 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:723.21,726.3 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:729.16,731.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:731.8,733.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:735.47,738.3 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:745.99,758.16 8 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:763.2,764.47 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:768.2,771.17 3 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:758.16,760.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:760.8,762.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:764.47,767.3 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:774.97,787.16 8 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:792.2,793.47 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:797.2,800.17 3 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:787.16,789.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:789.8,791.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:793.47,796.3 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:803.93,808.2 3 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:810.93,816.2 4 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:818.96,820.2 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:822.91,824.2 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:826.99,827.26 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:830.2,834.27 5 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:838.2,838.26 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:827.26,829.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:834.27,837.3 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:844.38,845.92 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:845.92,846.27 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:849.3,852.29 4 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:857.3,867.18 3 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:846.27,848.4 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:852.29,855.4 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:872.92,878.19 3 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:883.2,883.17 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:878.19,880.3 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:880.8,882.3 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:887.60,888.92 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:888.92,892.28 3 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:896.3,897.37 2 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:901.3,906.18 4 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:892.28,894.4 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:897.37,899.4 1 0 +github.com/ethereum/go-ethereum/core/vm/instructions.go:911.40,912.92 1 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:912.92,915.3 2 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:919.41,922.92 2 1 +github.com/ethereum/go-ethereum/core/vm/instructions.go:922.92,925.3 2 0 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:68.62,70.26 1 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:104.2,107.3 1 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:70.26,71.10 1 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:93.3,93.37 1 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:72.31,73.40 1 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:74.32,75.41 1 0 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:76.32,77.41 1 0 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:78.34,79.43 1 0 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:80.40,81.49 1 0 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:82.35,83.44 1 0 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:84.32,85.49 1 0 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:86.32,87.51 1 0 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:88.35,89.44 1 0 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:90.11,91.43 1 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:93.37,95.48 2 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:100.4,100.25 1 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:95.48,99.5 2 0 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:116.104,120.15 2 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:124.2,124.30 1 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:131.2,134.29 2 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:138.2,161.15 2 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:164.2,166.18 2 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:181.2,181.6 1 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:242.2,242.25 1 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:246.2,246.17 1 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:120.15,120.33 1 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:124.30,126.16 2 0 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:126.16,126.39 1 0 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:134.29,136.3 1 0 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:161.15,163.3 1 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:166.18,167.16 1 0 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:167.16,168.18 1 0 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:168.18,169.16 1 0 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:169.16,171.6 1 0 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:171.11,173.6 1 0 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:181.6,182.19 1 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:188.3,192.53 4 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:197.3,197.29 1 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:200.3,200.34 1 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:230.3,230.19 1 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:235.3,236.17 2 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:239.3,239.7 1 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:182.19,185.4 1 0 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:192.53,194.4 1 0 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:194.9,194.39 1 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:194.39,196.4 1 0 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:197.29,199.4 1 0 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:200.34,207.35 2 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:220.4,223.51 4 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:226.4,226.22 1 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:207.35,209.17 2 0 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:214.5,214.79 1 0 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:209.17,211.6 1 0 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:214.79,216.6 1 0 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:223.51,225.5 1 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:226.22,228.5 1 0 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:230.19,233.4 2 0 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:236.17,237.9 1 1 +github.com/ethereum/go-ethereum/core/vm/interpreter.go:242.25,244.3 1 1 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:27.55,28.106 1 1 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:28.106,30.52 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:34.3,41.103 2 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:52.3,54.23 2 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:59.3,60.26 2 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:71.3,71.34 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:78.3,78.24 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:94.3,94.55 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:30.52,32.4 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:41.103,45.20 3 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:45.20,49.86 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:54.23,58.4 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:60.26,61.35 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:64.4,64.32 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:69.4,69.83 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:61.35,63.5 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:64.32,66.5 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:71.34,72.34 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:72.34,74.5 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:74.10,74.39 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:74.39,76.5 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:78.24,79.35 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:79.35,83.5 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:83.10,90.5 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:103.114,107.92 3 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:113.2,113.47 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:107.92,112.3 2 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:121.120,124.16 2 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:127.2,129.44 2 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:138.2,138.17 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:124.16,126.3 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:129.44,133.121 3 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:136.3,136.18 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:133.121,135.4 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:148.121,151.44 2 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:157.2,157.15 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:151.44,156.3 2 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:160.67,161.106 1 1 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:161.106,168.18 4 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:181.3,182.31 2 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:189.3,190.29 2 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:168.18,172.34 2 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:172.34,174.5 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:182.31,184.4 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:223.57,224.110 1 1 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:243.2,243.16 1 1 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:224.110,229.48 2 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:235.3,235.91 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:238.3,238.69 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:241.3,241.18 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:229.48,233.4 2 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:235.91,237.4 1 0 +github.com/ethereum/go-ethereum/core/vm/operations_acl.go:238.69,240.4 1 0 +github.com/ethereum/go-ethereum/core/vm/gas.go:37.95,38.14 1 0 +github.com/ethereum/go-ethereum/core/vm/gas.go:48.2,48.26 1 0 +github.com/ethereum/go-ethereum/core/vm/gas.go:52.2,52.31 1 0 +github.com/ethereum/go-ethereum/core/vm/gas.go:38.14,44.54 3 0 +github.com/ethereum/go-ethereum/core/vm/gas.go:44.54,46.4 1 0 +github.com/ethereum/go-ethereum/core/vm/gas.go:48.26,50.3 1 0 +github.com/ethereum/go-ethereum/core/vm/eips.go:39.49,41.9 2 1 +github.com/ethereum/go-ethereum/core/vm/eips.go:44.2,45.12 2 1 +github.com/ethereum/go-ethereum/core/vm/eips.go:41.9,43.3 1 0 +github.com/ethereum/go-ethereum/core/vm/eips.go:48.32,51.2 2 0 +github.com/ethereum/go-ethereum/core/vm/eips.go:52.34,54.28 2 0 +github.com/ethereum/go-ethereum/core/vm/eips.go:57.2,58.13 2 0 +github.com/ethereum/go-ethereum/core/vm/eips.go:54.28,56.3 1 0 +github.com/ethereum/go-ethereum/core/vm/eips.go:66.32,79.2 4 1 +github.com/ethereum/go-ethereum/core/vm/eips.go:81.98,85.2 3 0 +github.com/ethereum/go-ethereum/core/vm/eips.go:89.32,97.2 1 1 +github.com/ethereum/go-ethereum/core/vm/eips.go:100.94,104.2 3 0 +github.com/ethereum/go-ethereum/core/vm/eips.go:107.32,110.2 2 1 +github.com/ethereum/go-ethereum/core/vm/eips.go:114.32,148.2 21 1 +github.com/ethereum/go-ethereum/core/vm/eips.go:154.32,157.2 2 1 +github.com/ethereum/go-ethereum/core/vm/eips.go:161.32,169.2 1 1 +github.com/ethereum/go-ethereum/core/vm/eips.go:172.94,176.2 3 0 +github.com/ethereum/go-ethereum/core/vm/errors.go:52.44,54.2 1 0 +github.com/ethereum/go-ethereum/core/vm/errors.go:63.43,65.2 1 0 +github.com/ethereum/go-ethereum/core/vm/errors.go:72.43,72.97 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:44.77,46.9 2 1 +github.com/ethereum/go-ethereum/core/vm/evm.go:56.2,57.14 2 1 +github.com/ethereum/go-ethereum/core/vm/evm.go:47.31,48.43 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:49.33,50.45 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:51.34,52.46 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:53.10,54.46 1 1 +github.com/ethereum/go-ethereum/core/vm/evm.go:128.123,139.2 3 1 +github.com/ethereum/go-ethereum/core/vm/evm.go:143.57,146.2 2 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:150.26,152.2 1 1 +github.com/ethereum/go-ethereum/core/vm/evm.go:155.34,157.2 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:160.47,162.2 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:168.149,170.45 1 1 +github.com/ethereum/go-ethereum/core/vm/evm.go:174.2,174.89 1 1 +github.com/ethereum/go-ethereum/core/vm/evm.go:177.2,180.30 3 1 +github.com/ethereum/go-ethereum/core/vm/evm.go:196.2,199.22 2 1 +github.com/ethereum/go-ethereum/core/vm/evm.go:214.2,214.18 1 1 +github.com/ethereum/go-ethereum/core/vm/evm.go:235.2,235.16 1 1 +github.com/ethereum/go-ethereum/core/vm/evm.go:244.2,244.22 1 1 +github.com/ethereum/go-ethereum/core/vm/evm.go:170.45,172.3 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:174.89,176.3 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:180.30,181.68 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:194.3,194.34 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:181.68,183.24 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:192.4,192.24 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:183.24,184.23 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:184.23,187.6 2 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:187.11,190.6 2 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:199.22,200.21 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:200.21,202.53 2 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:202.53,204.5 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:205.9,208.32 2 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:208.32,210.5 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:214.18,216.3 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:216.8,220.21 2 1 +github.com/ethereum/go-ethereum/core/vm/evm.go:220.21,222.4 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:222.9,230.4 5 1 +github.com/ethereum/go-ethereum/core/vm/evm.go:235.16,237.34 2 1 +github.com/ethereum/go-ethereum/core/vm/evm.go:237.34,239.4 1 1 +github.com/ethereum/go-ethereum/core/vm/evm.go:254.153,256.45 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:263.2,263.68 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:266.2,269.22 2 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:277.2,277.59 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:288.2,288.16 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:294.2,294.22 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:256.45,258.3 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:263.68,265.3 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:269.22,271.31 2 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:271.31,273.4 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:277.59,279.3 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:279.8,287.3 5 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:288.16,290.34 2 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:290.34,292.4 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:302.141,304.45 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:307.2,310.22 2 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:318.2,318.59 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:328.2,328.16 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:334.2,334.22 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:304.45,306.3 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:310.22,312.31 2 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:312.31,314.4 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:318.59,320.3 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:320.8,327.3 5 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:328.16,330.34 2 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:330.34,332.4 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:341.139,343.45 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:351.2,360.22 3 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:367.2,367.59 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:384.2,384.16 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:390.2,390.22 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:343.45,345.3 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:360.22,362.31 2 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:362.31,364.4 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:367.59,369.3 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:369.8,383.3 5 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:384.16,386.34 2 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:386.34,388.4 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:398.42,399.31 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:402.2,402.15 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:399.31,401.3 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:406.174,409.45 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:412.2,412.68 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:415.2,416.21 2 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:419.2,422.29 2 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:426.2,427.110 2 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:431.2,433.29 3 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:436.2,443.22 4 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:451.2,456.76 3 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:461.2,461.78 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:469.2,469.16 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:481.2,481.79 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:488.2,488.22 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:495.2,495.40 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:409.45,411.3 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:412.68,414.3 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:416.21,418.3 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:422.29,424.3 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:427.110,429.3 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:433.29,435.3 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:443.22,444.21 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:444.21,446.4 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:446.9,448.4 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:456.76,458.3 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:461.78,463.3 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:469.16,471.37 2 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:471.37,473.4 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:473.9,475.4 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:481.79,483.34 2 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:483.34,485.4 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:488.22,489.21 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:489.21,491.4 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:491.9,493.4 1 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:499.158,502.2 2 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:508.182,512.2 3 0 +github.com/ethereum/go-ethereum/core/vm/evm.go:515.51,515.77 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:29.68,30.21 1 1 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:38.2,38.31 1 1 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:41.2,44.36 3 1 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:55.2,55.15 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:30.21,32.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:38.31,40.3 1 1 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:44.36,54.3 7 1 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:65.44,66.106 1 1 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:66.106,69.17 2 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:73.3,74.15 2 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:78.3,78.82 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:82.3,82.57 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:85.3,85.18 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:69.17,71.4 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:74.15,76.4 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:78.82,80.4 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:82.57,84.4 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:96.108,104.69 2 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:134.2,135.22 2 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:138.2,139.25 2 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:148.2,148.33 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:155.2,155.23 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:162.2,162.38 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:104.69,110.10 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:111.52,112.35 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:113.52,115.37 2 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:116.11,117.37 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:135.22,137.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:139.25,140.34 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:143.3,143.31 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:146.3,146.39 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:140.34,142.4 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:143.31,145.4 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:148.33,149.33 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:149.33,151.4 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:151.9,151.38 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:151.38,153.4 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:155.23,156.34 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:156.34,158.4 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:158.9,160.4 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:178.115,180.51 1 1 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:184.2,190.22 3 1 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:193.2,194.25 2 1 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:203.2,203.33 1 1 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:210.2,210.23 1 1 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:217.2,217.36 1 1 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:180.51,182.3 1 1 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:190.22,192.3 1 1 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:194.25,195.34 1 1 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:198.3,198.31 1 1 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:201.3,201.43 1 1 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:195.34,197.4 1 1 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:198.31,200.4 1 1 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:203.33,204.33 1 1 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:204.33,206.4 1 1 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:206.9,206.38 1 1 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:206.38,208.4 1 1 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:210.23,211.34 1 1 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:211.34,213.4 1 1 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:213.9,215.4 1 1 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:220.35,221.106 1 1 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:221.106,223.15 2 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:227.3,228.17 2 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:232.3,232.65 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:235.3,235.72 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:239.3,240.89 2 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:243.3,243.65 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:246.3,246.18 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:223.15,225.4 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:228.17,230.4 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:232.65,234.4 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:235.72,237.4 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:240.89,242.4 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:243.65,245.4 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:250.111,252.16 2 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:255.2,256.14 2 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:259.2,259.94 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:262.2,262.58 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:265.2,265.17 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:252.16,254.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:256.14,258.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:259.94,261.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:262.58,264.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:271.116,273.2 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:284.109,286.16 2 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:289.2,290.14 2 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:293.2,293.94 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:296.2,296.58 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:299.2,299.17 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:286.16,288.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:290.14,292.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:293.94,295.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:296.58,298.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:302.113,309.64 3 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:312.2,312.17 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:309.64,311.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:315.111,322.64 3 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:325.2,325.17 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:322.64,324.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:328.106,334.29 2 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:341.2,341.20 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:344.2,345.16 2 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:348.2,349.60 2 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:353.2,354.16 2 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:357.2,357.66 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:360.2,360.17 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:334.29,335.51 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:335.51,337.4 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:338.8,338.40 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:338.40,340.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:341.20,343.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:345.16,347.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:349.60,351.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:354.16,356.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:357.66,359.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:363.110,365.16 2 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:368.2,372.31 2 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:375.2,375.60 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:378.2,379.16 2 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:382.2,382.66 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:385.2,385.17 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:365.16,367.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:372.31,374.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:375.60,377.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:379.16,381.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:382.66,384.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:388.114,390.16 2 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:393.2,394.16 2 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:397.2,398.66 2 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:401.2,401.17 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:390.16,392.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:394.16,396.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:398.66,400.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:404.112,406.16 2 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:409.2,410.16 2 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:413.2,414.66 2 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:417.2,417.17 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:406.16,408.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:410.16,412.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:414.66,416.3 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:420.114,423.29 2 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:437.2,437.50 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:440.2,440.17 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:423.29,427.30 3 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:427.30,429.92 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:429.92,431.5 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:432.9,432.41 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:432.41,434.4 1 0 +github.com/ethereum/go-ethereum/core/vm/gas_table.go:437.50,439.3 1 0 +github.com/ethereum/go-ethereum/core/vm/jump_table.go:63.39,64.24 1 1 +github.com/ethereum/go-ethereum/core/vm/jump_table.go:78.2,78.11 1 1 +github.com/ethereum/go-ethereum/core/vm/jump_table.go:64.24,65.16 1 1 +github.com/ethereum/go-ethereum/core/vm/jump_table.go:74.3,74.51 1 1 +github.com/ethereum/go-ethereum/core/vm/jump_table.go:65.16,66.47 1 0 +github.com/ethereum/go-ethereum/core/vm/jump_table.go:74.51,75.90 1 0 +github.com/ethereum/go-ethereum/core/vm/jump_table.go:81.41,90.2 3 1 +github.com/ethereum/go-ethereum/core/vm/jump_table.go:94.42,99.2 4 1 +github.com/ethereum/go-ethereum/core/vm/jump_table.go:103.42,107.2 3 1 +github.com/ethereum/go-ethereum/core/vm/jump_table.go:111.44,119.2 5 1 +github.com/ethereum/go-ethereum/core/vm/jump_table.go:123.50,158.2 7 1 +github.com/ethereum/go-ethereum/core/vm/jump_table.go:162.45,194.2 6 1 +github.com/ethereum/go-ethereum/core/vm/jump_table.go:197.50,202.2 3 1 +github.com/ethereum/go-ethereum/core/vm/jump_table.go:205.52,215.2 9 1 +github.com/ethereum/go-ethereum/core/vm/jump_table.go:219.45,230.2 3 1 +github.com/ethereum/go-ethereum/core/vm/jump_table.go:234.44,1039.28 2 1 +github.com/ethereum/go-ethereum/core/vm/jump_table.go:1045.2,1045.22 1 1 +github.com/ethereum/go-ethereum/core/vm/jump_table.go:1039.28,1040.19 1 1 +github.com/ethereum/go-ethereum/core/vm/jump_table.go:1040.19,1042.4 1 1 +github.com/ethereum/go-ethereum/core/vm/contract.go:41.47,41.78 1 1 +github.com/ethereum/go-ethereum/core/vm/contract.go:66.96,69.42 2 1 +github.com/ethereum/go-ethereum/core/vm/contract.go:78.2,82.10 3 1 +github.com/ethereum/go-ethereum/core/vm/contract.go:69.42,72.3 1 0 +github.com/ethereum/go-ethereum/core/vm/contract.go:72.8,74.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contract.go:85.58,89.46 2 0 +github.com/ethereum/go-ethereum/core/vm/contract.go:93.2,93.39 1 0 +github.com/ethereum/go-ethereum/core/vm/contract.go:96.2,96.24 1 0 +github.com/ethereum/go-ethereum/core/vm/contract.go:89.46,91.3 1 0 +github.com/ethereum/go-ethereum/core/vm/contract.go:93.39,95.3 1 0 +github.com/ethereum/go-ethereum/core/vm/contract.go:101.46,103.23 1 0 +github.com/ethereum/go-ethereum/core/vm/contract.go:109.2,109.35 1 0 +github.com/ethereum/go-ethereum/core/vm/contract.go:126.2,126.23 1 0 +github.com/ethereum/go-ethereum/core/vm/contract.go:129.2,129.38 1 0 +github.com/ethereum/go-ethereum/core/vm/contract.go:103.23,105.3 1 0 +github.com/ethereum/go-ethereum/core/vm/contract.go:109.35,112.13 2 0 +github.com/ethereum/go-ethereum/core/vm/contract.go:119.3,120.37 2 0 +github.com/ethereum/go-ethereum/core/vm/contract.go:112.13,117.4 2 0 +github.com/ethereum/go-ethereum/core/vm/contract.go:126.23,128.3 1 0 +github.com/ethereum/go-ethereum/core/vm/contract.go:134.43,142.2 4 0 +github.com/ethereum/go-ethereum/core/vm/contract.go:145.43,146.29 1 1 +github.com/ethereum/go-ethereum/core/vm/contract.go:150.2,150.13 1 1 +github.com/ethereum/go-ethereum/core/vm/contract.go:146.29,148.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contract.go:157.44,159.2 1 0 +github.com/ethereum/go-ethereum/core/vm/contract.go:162.49,163.17 1 1 +github.com/ethereum/go-ethereum/core/vm/contract.go:166.2,167.13 2 1 +github.com/ethereum/go-ethereum/core/vm/contract.go:163.17,165.3 1 0 +github.com/ethereum/go-ethereum/core/vm/contract.go:171.45,173.2 1 1 +github.com/ethereum/go-ethereum/core/vm/contract.go:176.37,178.2 1 0 +github.com/ethereum/go-ethereum/core/vm/contract.go:182.85,186.2 3 1 +github.com/ethereum/go-ethereum/core/vm/contract.go:190.88,194.2 3 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:116.13,117.47 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:120.2,120.47 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:123.2,123.46 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:126.2,126.44 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:117.47,119.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:120.47,122.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:123.46,125.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:126.44,128.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:132.61,133.9 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:134.22,135.36 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:136.24,137.38 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:138.25,139.39 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:140.10,141.39 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:150.131,152.27 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:155.2,157.33 3 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:152.27,154.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:163.54,165.2 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:167.55,179.79 6 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:184.2,190.16 5 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:195.2,195.72 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:179.79,181.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:190.16,192.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:205.55,207.2 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:208.56,211.2 2 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:220.58,222.2 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:223.59,227.2 3 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:236.53,238.2 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:239.51,241.2 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:274.48,275.9 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:291.2,291.10 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:276.25,277.14 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:278.27,283.4 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:284.10,289.4 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:295.54,301.21 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:307.2,308.53 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:318.2,319.44 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:322.2,323.27 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:327.2,330.15 3 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:355.2,359.23 4 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:362.2,362.21 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:301.21,303.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:303.8,305.3 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:308.53,310.3 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:310.8,311.28 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:311.28,313.4 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:313.9,315.4 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:319.44,321.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:323.27,326.3 2 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:330.15,346.24 6 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:350.3,350.25 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:353.3,353.22 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:346.24,348.4 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:350.25,352.4 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:359.23,361.3 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:365.55,371.21 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:377.2,377.33 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:381.2,386.23 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:390.2,390.80 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:371.21,373.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:373.8,375.3 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:377.33,379.3 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:386.23,389.3 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:395.52,397.45 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:400.2,400.15 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:397.45,399.3 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:405.52,407.45 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:410.2,410.15 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:407.45,409.3 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:415.48,417.16 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:420.2,421.16 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:424.2,426.27 3 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:417.16,419.3 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:421.16,423.3 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:434.61,436.2 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:438.62,440.2 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:447.62,449.2 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:451.63,453.2 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:457.54,459.16 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:462.2,464.27 3 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:459.16,461.3 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:472.67,474.2 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:476.68,478.2 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:485.68,487.2 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:489.69,491.2 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:506.52,508.24 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:512.2,516.39 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:529.2,529.32 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:532.2,532.25 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:508.24,510.3 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:516.39,518.17 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:521.3,522.17 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:525.3,526.21 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:518.17,520.4 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:522.17,524.4 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:529.32,531.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:540.65,542.2 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:544.66,546.2 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:553.66,555.2 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:557.67,559.2 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:563.52,566.38 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:569.2,569.52 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:566.38,568.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:583.53,585.38 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:588.2,588.85 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:592.2,600.25 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:604.2,604.26 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:608.2,615.25 5 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:619.2,619.20 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:585.38,587.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:588.85,590.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:600.25,603.3 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:604.26,607.3 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:615.25,618.3 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:633.58,635.2 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:637.59,641.23 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:644.2,651.54 4 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:655.2,655.54 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:660.2,664.30 3 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:641.23,643.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:651.54,653.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:655.54,657.3 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:671.58,673.2 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:675.59,679.23 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:682.2,689.54 4 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:693.2,700.30 4 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:679.23,681.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:689.54,691.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:707.63,710.12 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:715.2,716.65 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:722.2,722.64 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:710.12,713.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:716.65,718.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:718.8,720.3 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:725.64,730.44 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:733.2,741.25 5 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:753.2,757.30 3 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:730.44,732.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:741.25,745.63 3 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:749.3,749.51 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:745.63,747.4 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:764.58,766.2 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:768.59,772.23 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:775.2,783.54 5 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:787.2,787.54 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:792.2,795.30 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:772.23,774.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:783.54,785.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:787.54,789.3 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:802.58,804.2 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:806.59,810.23 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:813.2,820.54 4 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:824.2,831.30 4 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:810.23,812.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:820.54,822.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:838.63,841.12 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:846.2,847.65 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:853.2,853.64 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:841.12,844.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:847.65,849.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:849.8,851.3 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:856.64,861.44 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:864.2,872.25 5 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:884.2,888.30 3 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:861.44,863.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:872.25,876.63 3 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:880.3,880.51 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:876.63,878.4 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:895.60,897.2 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:899.61,907.44 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:912.2,916.25 3 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:944.2,947.15 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:950.2,950.17 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:907.44,909.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:916.25,922.17 4 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:926.3,927.17 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:933.3,933.32 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:936.3,936.32 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:941.3,941.20 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:922.17,924.4 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:927.17,929.4 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:933.32,935.4 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:936.32,938.4 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:947.15,949.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:955.60,956.19 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:960.2,960.26 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:965.2,967.17 3 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:956.19,958.3 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:960.26,961.26 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:961.26,963.4 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:974.58,976.2 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:978.59,982.22 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:987.2,988.16 2 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:993.2,997.16 3 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:1002.2,1002.30 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:982.22,984.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:988.16,990.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:997.16,999.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:1009.58,1011.2 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:1013.59,1017.23 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:1022.2,1024.16 3 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:1027.2,1029.16 3 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:1032.2,1039.16 4 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:1044.2,1044.30 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:1017.23,1019.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:1024.16,1026.3 1 0 +github.com/ethereum/go-ethereum/core/vm/contracts.go:1029.16,1031.3 1 1 +github.com/ethereum/go-ethereum/core/vm/contracts.go:1039.16,1041.3 1 1 +github.com/ethereum/go-ethereum/core/vm/stack_table.go:23.30,25.2 1 1 +github.com/ethereum/go-ethereum/core/vm/stack_table.go:26.30,28.2 1 1 +github.com/ethereum/go-ethereum/core/vm/stack_table.go:30.29,32.2 1 1 +github.com/ethereum/go-ethereum/core/vm/stack_table.go:33.29,35.2 1 1 +github.com/ethereum/go-ethereum/core/vm/stack_table.go:37.34,39.2 1 1 +github.com/ethereum/go-ethereum/core/vm/stack_table.go:40.35,42.2 1 1 +github.com/ethereum/go-ethereum/core/vm/analysis.go:33.37,35.2 1 1 +github.com/ethereum/go-ethereum/core/vm/analysis.go:37.50,40.31 3 1 +github.com/ethereum/go-ethereum/core/vm/analysis.go:40.31,42.3 1 0 +github.com/ethereum/go-ethereum/core/vm/analysis.go:45.37,49.2 3 1 +github.com/ethereum/go-ethereum/core/vm/analysis.go:51.38,56.2 4 1 +github.com/ethereum/go-ethereum/core/vm/analysis.go:59.50,61.2 1 0 +github.com/ethereum/go-ethereum/core/vm/analysis.go:64.37,70.2 2 1 +github.com/ethereum/go-ethereum/core/vm/analysis.go:75.51,76.47 1 1 +github.com/ethereum/go-ethereum/core/vm/analysis.go:117.2,117.13 1 1 +github.com/ethereum/go-ethereum/core/vm/analysis.go:76.47,79.32 3 1 +github.com/ethereum/go-ethereum/core/vm/analysis.go:82.3,83.19 2 1 +github.com/ethereum/go-ethereum/core/vm/analysis.go:93.3,93.18 1 1 +github.com/ethereum/go-ethereum/core/vm/analysis.go:79.32,80.12 1 1 +github.com/ethereum/go-ethereum/core/vm/analysis.go:83.19,84.39 1 1 +github.com/ethereum/go-ethereum/core/vm/analysis.go:88.4,88.37 1 1 +github.com/ethereum/go-ethereum/core/vm/analysis.go:84.39,87.5 2 1 +github.com/ethereum/go-ethereum/core/vm/analysis.go:88.37,91.5 2 1 +github.com/ethereum/go-ethereum/core/vm/analysis.go:94.10,96.11 2 1 +github.com/ethereum/go-ethereum/core/vm/analysis.go:97.10,99.11 2 1 +github.com/ethereum/go-ethereum/core/vm/analysis.go:100.10,102.11 2 1 +github.com/ethereum/go-ethereum/core/vm/analysis.go:103.10,105.11 2 0 +github.com/ethereum/go-ethereum/core/vm/analysis.go:106.10,108.11 2 0 +github.com/ethereum/go-ethereum/core/vm/analysis.go:109.10,111.11 2 0 +github.com/ethereum/go-ethereum/core/vm/analysis.go:112.10,114.11 2 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:122.78,128.12 2 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:133.2,133.10 1 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:128.12,130.3 1 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:130.8,132.3 1 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:138.48,140.28 2 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:143.2,146.49 4 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:149.2,149.35 1 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:140.28,142.3 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:146.49,148.3 1 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:153.72,156.2 2 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:159.51,160.28 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:163.2,166.25 4 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:160.28,162.3 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:171.50,173.9 2 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:174.18,175.13 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:176.24,179.40 2 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:182.3,183.27 2 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:184.10,187.17 2 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:190.3,190.26 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:179.40,181.4 1 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:187.17,189.4 1 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:196.51,197.31 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:208.2,208.25 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:197.31,201.17 3 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:204.3,205.28 2 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:201.17,203.4 1 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:212.47,213.17 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:216.2,216.14 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:213.17,215.3 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:217.42,220.17 3 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:223.3,224.28 2 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:225.10,226.31 1 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:220.17,222.4 1 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:230.53,233.2 2 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:235.61,236.9 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:246.2,246.12 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:237.66,238.37 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:239.62,240.33 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:241.52,242.34 1 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:243.10,244.68 1 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:249.43,250.27 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:256.2,256.20 1 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:250.27,251.38 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:254.3,254.36 1 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:251.38,253.4 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:261.45,264.29 3 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:267.2,267.13 1 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:264.29,266.3 1 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:276.59,282.29 6 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:287.2,289.18 3 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:282.29,283.44 1 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:283.44,285.4 1 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:294.60,297.16 2 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:303.2,303.56 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:306.2,306.58 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:309.2,309.42 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:297.16,299.3 1 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:303.56,305.3 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:306.58,308.3 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:312.70,314.55 2 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:317.2,317.74 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:320.2,322.34 3 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:325.2,327.12 2 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:314.55,316.3 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:317.74,319.3 1 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:322.34,324.3 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:330.72,332.55 2 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:335.2,335.74 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:338.2,343.34 6 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:346.2,348.12 2 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:332.55,334.3 1 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:335.74,337.3 1 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:343.34,345.3 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:351.72,353.55 2 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:356.2,356.74 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:359.2,365.34 7 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:368.2,368.12 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:353.55,355.3 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:356.74,358.3 1 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:365.34,367.3 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:375.30,375.48 1 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:378.56,381.16 3 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:382.20,383.22 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:384.24,386.22 2 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:387.24,389.22 2 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:390.10,390.10 0 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:399.118,403.25 3 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:406.2,406.31 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:438.2,438.12 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:403.25,405.3 1 0 +github.com/ethereum/go-ethereum/core/types/receipt.go:406.31,417.25 6 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:423.3,423.13 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:429.3,429.40 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:417.25,421.4 2 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:423.13,425.4 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:425.9,427.4 1 1 +github.com/ethereum/go-ethereum/core/types/receipt.go:429.40,436.4 6 1 +github.com/ethereum/go-ethereum/core/types/bor_receipt.go:25.60,29.2 3 0 +github.com/ethereum/go-ethereum/core/types/bor_receipt.go:32.57,34.2 1 0 +github.com/ethereum/go-ethereum/core/types/bor_receipt.go:37.39,39.2 1 0 +github.com/ethereum/go-ethereum/core/types/bor_receipt.go:43.108,55.37 8 0 +github.com/ethereum/go-ethereum/core/types/bor_receipt.go:60.2,60.41 1 0 +github.com/ethereum/go-ethereum/core/types/bor_receipt.go:68.2,68.12 1 0 +github.com/ethereum/go-ethereum/core/types/bor_receipt.go:55.37,57.3 1 0 +github.com/ethereum/go-ethereum/core/types/bor_receipt.go:60.41,67.3 6 0 +github.com/ethereum/go-ethereum/core/types/bor_receipt.go:73.104,78.33 2 0 +github.com/ethereum/go-ethereum/core/types/bor_receipt.go:78.33,85.3 6 0 +github.com/ethereum/go-ethereum/core/types/bor_receipt.go:89.55,92.51 2 0 +github.com/ethereum/go-ethereum/core/types/bor_receipt.go:96.2,96.15 1 0 +github.com/ethereum/go-ethereum/core/types/bor_receipt.go:92.51,94.3 1 0 +github.com/ethereum/go-ethereum/core/types/log.go:86.44,89.2 2 1 +github.com/ethereum/go-ethereum/core/types/log.go:92.46,95.16 3 1 +github.com/ethereum/go-ethereum/core/types/log.go:98.2,98.12 1 1 +github.com/ethereum/go-ethereum/core/types/log.go:95.16,97.3 1 1 +github.com/ethereum/go-ethereum/core/types/log.go:106.54,109.2 2 1 +github.com/ethereum/go-ethereum/core/types/log.go:114.56,116.16 2 1 +github.com/ethereum/go-ethereum/core/types/log.go:119.2,121.16 3 1 +github.com/ethereum/go-ethereum/core/types/log.go:139.2,139.12 1 1 +github.com/ethereum/go-ethereum/core/types/log.go:116.16,118.3 1 1 +github.com/ethereum/go-ethereum/core/types/log.go:121.16,127.3 1 1 +github.com/ethereum/go-ethereum/core/types/log.go:127.8,131.17 3 0 +github.com/ethereum/go-ethereum/core/types/log.go:131.17,137.4 1 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:17.47,56.2 20 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:59.52,79.52 3 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:82.2,82.27 1 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:85.2,86.26 2 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:89.2,90.25 2 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:93.2,94.21 2 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:97.2,98.23 2 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:101.2,102.28 2 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:105.2,106.22 2 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:109.2,110.27 2 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:113.2,114.23 2 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:117.2,118.25 2 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:121.2,122.24 2 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:125.2,126.21 2 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:129.2,130.22 2 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:133.2,134.26 2 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:137.2,137.22 1 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:140.2,140.24 1 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:143.2,143.12 1 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:79.52,81.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:82.27,84.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:86.26,88.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:90.25,92.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:94.21,96.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:98.23,100.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:102.28,104.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:106.22,108.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:110.27,112.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:114.23,116.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:118.25,120.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:122.24,124.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:126.21,128.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:130.22,132.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:134.26,136.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:137.22,139.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_header_json.go:140.24,142.3 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:54.53,61.30 4 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:98.2,98.27 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:62.17,71.31 9 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:72.21,83.31 11 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:84.21,96.31 12 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:102.57,104.52 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:109.2,110.18 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:271.2,274.12 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:104.52,106.3 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:111.20,114.20 3 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:117.3,117.23 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:120.3,121.26 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:124.3,125.21 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:128.3,129.23 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:132.3,133.22 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:136.3,137.19 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:140.3,141.19 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:144.3,145.19 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:148.3,150.20 3 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:156.24,160.28 3 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:163.3,163.25 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:166.3,167.20 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:170.3,170.23 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:173.3,174.26 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:177.3,178.21 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:181.3,182.23 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:185.3,186.22 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:189.3,190.19 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:193.3,194.19 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:197.3,198.19 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:201.3,203.20 3 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:209.24,213.28 3 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:216.3,216.25 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:219.3,220.20 2 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:223.3,223.23 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:226.3,227.38 2 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:230.3,231.30 2 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:234.3,235.21 2 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:238.3,239.23 2 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:242.3,243.22 2 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:246.3,247.19 2 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:250.3,251.19 2 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:254.3,255.19 2 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:258.3,260.20 3 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:266.10,267.31 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:114.20,116.4 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:117.23,119.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:121.26,123.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:125.21,127.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:129.23,131.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:133.22,135.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:137.19,139.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:141.19,143.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:145.19,147.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:150.20,151.74 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:151.74,153.5 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:160.28,162.4 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:163.25,165.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:167.20,169.4 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:170.23,172.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:174.26,176.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:178.21,180.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:182.23,184.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:186.22,188.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:190.19,192.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:194.19,196.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:198.19,200.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:203.20,204.75 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:204.75,206.5 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:213.28,215.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:216.25,218.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:220.20,222.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:223.23,225.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:227.38,229.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:231.30,233.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:235.21,237.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:239.23,241.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:243.22,245.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:247.19,249.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:251.19,253.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:255.19,257.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:260.20,261.75 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:261.75,263.5 1 0 +github.com/ethereum/go-ethereum/core/types/bloom9.go:45.35,49.2 3 0 +github.com/ethereum/go-ethereum/core/types/bloom9.go:53.36,54.21 1 1 +github.com/ethereum/go-ethereum/core/types/bloom9.go:57.2,57.37 1 1 +github.com/ethereum/go-ethereum/core/types/bloom9.go:54.21,55.66 1 0 +github.com/ethereum/go-ethereum/core/types/bloom9.go:61.31,63.2 1 1 +github.com/ethereum/go-ethereum/core/types/bloom9.go:66.43,71.2 4 1 +github.com/ethereum/go-ethereum/core/types/bloom9.go:76.31,78.2 1 0 +github.com/ethereum/go-ethereum/core/types/bloom9.go:81.31,83.2 1 1 +github.com/ethereum/go-ethereum/core/types/bloom9.go:86.40,91.2 2 1 +github.com/ethereum/go-ethereum/core/types/bloom9.go:94.46,96.2 1 0 +github.com/ethereum/go-ethereum/core/types/bloom9.go:99.51,101.2 1 0 +github.com/ethereum/go-ethereum/core/types/bloom9.go:104.43,107.35 3 1 +github.com/ethereum/go-ethereum/core/types/bloom9.go:115.2,115.12 1 1 +github.com/ethereum/go-ethereum/core/types/bloom9.go:107.35,108.36 1 1 +github.com/ethereum/go-ethereum/core/types/bloom9.go:108.36,110.33 2 1 +github.com/ethereum/go-ethereum/core/types/bloom9.go:110.33,112.5 1 1 +github.com/ethereum/go-ethereum/core/types/bloom9.go:119.36,122.27 3 0 +github.com/ethereum/go-ethereum/core/types/bloom9.go:128.2,128.15 1 0 +github.com/ethereum/go-ethereum/core/types/bloom9.go:122.27,124.32 2 0 +github.com/ethereum/go-ethereum/core/types/bloom9.go:124.32,126.4 1 0 +github.com/ethereum/go-ethereum/core/types/bloom9.go:132.33,136.2 3 0 +github.com/ethereum/go-ethereum/core/types/bloom9.go:139.84,155.2 12 1 +github.com/ethereum/go-ethereum/core/types/bloom9.go:158.53,160.2 1 0 +github.com/ethereum/go-ethereum/core/types/gen_account_rlp.go:11.56,15.24 4 0 +github.com/ethereum/go-ethereum/core/types/gen_account_rlp.go:23.2,26.18 4 0 +github.com/ethereum/go-ethereum/core/types/gen_account_rlp.go:15.24,17.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_account_rlp.go:17.8,18.31 1 0 +github.com/ethereum/go-ethereum/core/types/gen_account_rlp.go:21.3,21.29 1 0 +github.com/ethereum/go-ethereum/core/types/gen_account_rlp.go:18.31,20.4 1 0 +github.com/ethereum/go-ethereum/core/types/gen_access_tuple.go:13.52,22.2 5 1 +github.com/ethereum/go-ethereum/core/types/gen_access_tuple.go:25.57,31.52 3 1 +github.com/ethereum/go-ethereum/core/types/gen_access_tuple.go:34.2,34.24 1 1 +github.com/ethereum/go-ethereum/core/types/gen_access_tuple.go:37.2,38.28 2 1 +github.com/ethereum/go-ethereum/core/types/gen_access_tuple.go:41.2,42.12 2 1 +github.com/ethereum/go-ethereum/core/types/gen_access_tuple.go:31.52,33.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_access_tuple.go:34.24,36.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_access_tuple.go:38.28,40.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:11.50,21.27 10 1 +github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:29.2,29.23 1 1 +github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:37.2,44.11 8 1 +github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:54.2,55.18 2 1 +github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:21.27,23.3 1 1 +github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:23.8,24.34 1 1 +github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:27.3,27.32 1 1 +github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:24.34,26.4 1 0 +github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:29.23,31.3 1 1 +github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:31.8,32.30 1 1 +github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:35.3,35.28 1 1 +github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:32.30,34.4 1 0 +github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:44.11,45.25 1 1 +github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:45.25,47.4 1 0 +github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:47.9,48.32 1 1 +github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:51.4,51.30 1 1 +github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:48.32,50.5 1 0 +github.com/ethereum/go-ethereum/core/types/gen_log_json.go:16.44,39.2 12 0 +github.com/ethereum/go-ethereum/core/types/gen_log_json.go:42.49,55.52 3 1 +github.com/ethereum/go-ethereum/core/types/gen_log_json.go:58.2,58.24 1 1 +github.com/ethereum/go-ethereum/core/types/gen_log_json.go:61.2,62.23 2 1 +github.com/ethereum/go-ethereum/core/types/gen_log_json.go:65.2,66.21 2 1 +github.com/ethereum/go-ethereum/core/types/gen_log_json.go:69.2,70.28 2 1 +github.com/ethereum/go-ethereum/core/types/gen_log_json.go:73.2,73.23 1 1 +github.com/ethereum/go-ethereum/core/types/gen_log_json.go:76.2,77.24 2 1 +github.com/ethereum/go-ethereum/core/types/gen_log_json.go:80.2,80.26 1 1 +github.com/ethereum/go-ethereum/core/types/gen_log_json.go:83.2,83.22 1 1 +github.com/ethereum/go-ethereum/core/types/gen_log_json.go:86.2,86.24 1 1 +github.com/ethereum/go-ethereum/core/types/gen_log_json.go:89.2,89.12 1 1 +github.com/ethereum/go-ethereum/core/types/gen_log_json.go:55.52,57.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_log_json.go:58.24,60.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_log_json.go:62.23,64.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_log_json.go:66.21,68.3 1 1 +github.com/ethereum/go-ethereum/core/types/gen_log_json.go:70.28,72.3 1 1 +github.com/ethereum/go-ethereum/core/types/gen_log_json.go:73.23,75.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_log_json.go:77.24,79.3 1 1 +github.com/ethereum/go-ethereum/core/types/gen_log_json.go:80.26,82.3 1 1 +github.com/ethereum/go-ethereum/core/types/gen_log_json.go:83.22,85.3 1 1 +github.com/ethereum/go-ethereum/core/types/gen_log_json.go:86.24,88.3 1 1 +github.com/ethereum/go-ethereum/core/types/gen_log_rlp.go:11.50,16.35 5 1 +github.com/ethereum/go-ethereum/core/types/gen_log_rlp.go:19.2,22.18 4 1 +github.com/ethereum/go-ethereum/core/types/gen_log_rlp.go:16.35,18.3 1 1 +github.com/ethereum/go-ethereum/core/types/hashing.go:31.26,31.62 1 1 +github.com/ethereum/go-ethereum/core/types/hashing.go:36.26,36.54 1 1 +github.com/ethereum/go-ethereum/core/types/hashing.go:40.45,47.2 6 1 +github.com/ethereum/go-ethereum/core/types/hashing.go:51.66,59.2 7 1 +github.com/ethereum/go-ethereum/core/types/hashing.go:77.75,84.2 3 1 +github.com/ethereum/go-ethereum/core/types/hashing.go:87.67,97.47 5 1 +github.com/ethereum/go-ethereum/core/types/hashing.go:102.2,102.20 1 1 +github.com/ethereum/go-ethereum/core/types/hashing.go:107.2,107.37 1 1 +github.com/ethereum/go-ethereum/core/types/hashing.go:112.2,112.22 1 1 +github.com/ethereum/go-ethereum/core/types/hashing.go:97.47,101.3 3 1 +github.com/ethereum/go-ethereum/core/types/hashing.go:102.20,106.3 3 1 +github.com/ethereum/go-ethereum/core/types/hashing.go:107.37,111.3 3 1 +github.com/ethereum/go-ethereum/core/types/legacy.go:28.55,30.50 2 0 +github.com/ethereum/go-ethereum/core/types/legacy.go:33.2,34.50 2 0 +github.com/ethereum/go-ethereum/core/types/legacy.go:37.2,39.50 2 0 +github.com/ethereum/go-ethereum/core/types/legacy.go:42.2,42.67 1 0 +github.com/ethereum/go-ethereum/core/types/legacy.go:30.50,32.3 1 0 +github.com/ethereum/go-ethereum/core/types/legacy.go:34.50,36.3 1 0 +github.com/ethereum/go-ethereum/core/types/legacy.go:39.50,41.3 1 0 +github.com/ethereum/go-ethereum/core/types/legacy.go:47.62,49.56 2 0 +github.com/ethereum/go-ethereum/core/types/legacy.go:52.2,52.37 1 0 +github.com/ethereum/go-ethereum/core/types/legacy.go:49.56,51.3 1 0 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:37.40,39.27 2 0 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:42.2,42.12 1 0 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:39.27,41.3 1 0 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:59.39,75.21 3 1 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:78.2,78.23 1 1 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:81.2,81.24 1 1 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:84.2,84.17 1 1 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:87.2,87.17 1 1 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:90.2,90.17 1 1 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:93.2,93.12 1 1 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:75.21,77.3 1 1 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:78.23,80.3 1 1 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:81.24,83.3 1 1 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:84.17,86.3 1 1 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:87.17,89.3 1 1 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:90.17,92.3 1 1 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:97.49,97.76 1 1 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:98.49,98.70 1 1 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:99.49,99.73 1 1 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:100.49,100.67 1 1 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:101.49,101.66 1 1 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:102.49,102.71 1 1 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:103.49,103.71 1 0 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:104.49,104.71 1 0 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:105.49,105.68 1 1 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:106.49,106.68 1 1 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:107.49,107.65 1 1 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:109.65,111.2 1 1 +github.com/ethereum/go-ethereum/core/types/access_list_tx.go:113.71,115.2 1 1 +github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:43.39,60.21 3 1 +github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:63.2,63.23 1 1 +github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:66.2,66.25 1 1 +github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:69.2,69.25 1 1 +github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:72.2,72.17 1 1 +github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:75.2,75.17 1 1 +github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:78.2,78.17 1 1 +github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:81.2,81.12 1 1 +github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:60.21,62.3 1 1 +github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:63.23,65.3 1 1 +github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:66.25,68.3 1 1 +github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:69.25,71.3 1 1 +github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:72.17,74.3 1 1 +github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:75.17,77.3 1 1 +github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:78.17,80.3 1 1 +github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:85.49,85.76 1 1 +github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:86.49,86.70 1 1 +github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:87.49,87.73 1 1 +github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:88.49,88.67 1 1 +github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:89.49,89.66 1 1 +github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:90.49,90.72 1 1 +github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:91.49,91.72 1 1 +github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:92.49,92.72 1 0 +github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:93.49,93.68 1 1 +github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:94.49,94.68 1 1 +github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:95.49,95.65 1 1 +github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:97.65,99.2 1 1 +github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:101.71,103.2 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:40.74,42.9 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:54.2,54.15 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:43.36,44.43 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:45.36,46.44 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:47.36,48.43 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:49.39,50.29 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:51.10,52.28 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:64.54,65.27 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:76.2,76.26 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:65.27,66.32 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:69.3,69.32 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:72.3,72.32 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:66.32,68.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:69.32,71.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:72.32,74.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:86.54,87.20 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:90.2,90.33 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:87.20,89.3 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:94.85,97.16 3 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:100.2,100.33 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:97.16,99.3 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:104.86,108.16 4 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:111.2,111.33 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:108.16,110.3 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:116.81,118.16 2 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:121.2,121.11 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:118.16,119.13 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:131.69,132.37 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:142.2,143.16 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:146.2,147.18 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:132.37,137.36 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:137.36,139.4 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:143.16,145.3 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:180.47,182.2 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:184.71,185.35 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:188.2,192.38 3 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:195.2,195.48 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:185.35,187.3 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:192.38,194.3 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:198.45,201.2 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:203.98,205.9 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:210.2,210.70 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:213.2,215.21 3 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:205.9,207.3 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:210.70,212.3 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:220.57,221.35 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:224.2,236.5 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:221.35,223.3 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:243.48,245.2 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:247.43,249.2 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:251.46,254.2 2 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:256.72,258.19 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:272.2,272.38 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:275.2,275.48 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:259.20,260.22 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:263.3,264.17 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:265.24,268.42 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:269.10,270.49 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:260.22,262.4 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:272.38,274.3 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:278.99,279.35 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:293.2,293.21 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:280.17,281.49 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:282.21,285.71 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:288.3,289.33 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:290.10,291.46 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:285.71,287.4 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:298.58,299.19 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:300.20,309.5 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:310.24,322.6 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:323.10,328.23 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:338.53,339.20 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:342.2,345.3 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:339.20,341.3 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:348.42,350.2 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:352.45,355.2 2 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:359.71,360.31 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:363.2,363.21 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:366.2,366.38 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:369.2,372.48 4 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:360.31,362.3 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:363.21,365.3 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:366.38,368.3 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:377.98,378.31 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:381.2,382.27 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:386.2,386.21 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:378.31,380.3 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:382.27,385.3 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:391.57,401.2 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:407.45,409.2 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:411.48,414.2 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:418.102,420.2 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:422.75,423.31 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:426.2,427.49 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:423.31,425.3 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:432.44,434.2 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:436.47,439.2 2 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:441.74,442.31 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:445.2,446.50 2 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:442.31,444.3 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:451.101,452.31 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:455.2,456.21 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:452.31,454.3 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:461.60,470.2 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:472.53,473.40 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:476.2,479.16 4 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:473.40,474.100 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:482.99,483.21 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:486.2,487.57 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:491.2,498.16 7 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:501.2,501.34 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:504.2,506.18 3 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:483.21,485.3 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:487.57,489.3 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:498.16,500.3 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:501.34,503.3 1 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:510.41,511.22 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:518.2,519.32 2 0 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:511.22,513.25 2 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:516.3,516.46 1 1 +github.com/ethereum/go-ethereum/core/types/transaction_signing.go:513.25,515.4 1 1 +github.com/ethereum/go-ethereum/core/types/legacy_tx.go:38.133,47.2 1 1 +github.com/ethereum/go-ethereum/core/types/legacy_tx.go:51.119,59.2 1 0 +github.com/ethereum/go-ethereum/core/types/legacy_tx.go:62.35,75.21 2 1 +github.com/ethereum/go-ethereum/core/types/legacy_tx.go:78.2,78.24 1 1 +github.com/ethereum/go-ethereum/core/types/legacy_tx.go:81.2,81.17 1 1 +github.com/ethereum/go-ethereum/core/types/legacy_tx.go:84.2,84.17 1 1 +github.com/ethereum/go-ethereum/core/types/legacy_tx.go:87.2,87.17 1 1 +github.com/ethereum/go-ethereum/core/types/legacy_tx.go:90.2,90.12 1 1 +github.com/ethereum/go-ethereum/core/types/legacy_tx.go:75.21,77.3 1 1 +github.com/ethereum/go-ethereum/core/types/legacy_tx.go:78.24,80.3 1 1 +github.com/ethereum/go-ethereum/core/types/legacy_tx.go:81.17,83.3 1 1 +github.com/ethereum/go-ethereum/core/types/legacy_tx.go:84.17,86.3 1 1 +github.com/ethereum/go-ethereum/core/types/legacy_tx.go:87.17,89.3 1 1 +github.com/ethereum/go-ethereum/core/types/legacy_tx.go:94.45,94.68 1 1 +github.com/ethereum/go-ethereum/core/types/legacy_tx.go:95.45,95.75 1 1 +github.com/ethereum/go-ethereum/core/types/legacy_tx.go:96.45,96.59 1 1 +github.com/ethereum/go-ethereum/core/types/legacy_tx.go:97.45,97.63 1 1 +github.com/ethereum/go-ethereum/core/types/legacy_tx.go:98.45,98.62 1 1 +github.com/ethereum/go-ethereum/core/types/legacy_tx.go:99.45,99.67 1 1 +github.com/ethereum/go-ethereum/core/types/legacy_tx.go:100.45,100.67 1 1 +github.com/ethereum/go-ethereum/core/types/legacy_tx.go:101.45,101.67 1 0 +github.com/ethereum/go-ethereum/core/types/legacy_tx.go:102.45,102.64 1 1 +github.com/ethereum/go-ethereum/core/types/legacy_tx.go:103.45,103.64 1 1 +github.com/ethereum/go-ethereum/core/types/legacy_tx.go:104.45,104.61 1 1 +github.com/ethereum/go-ethereum/core/types/legacy_tx.go:106.61,108.2 1 1 +github.com/ethereum/go-ethereum/core/types/legacy_tx.go:110.67,112.2 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:62.39,66.2 3 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:91.53,92.31 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:96.2,99.44 4 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:102.2,102.35 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:92.31,94.3 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:99.44,101.3 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:106.59,109.2 2 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:114.56,115.31 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:118.2,120.25 3 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:115.31,117.3 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:124.55,126.9 2 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:127.18,128.13 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:129.24,133.17 3 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:136.3,136.13 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:137.10,140.37 2 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:143.3,144.17 2 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:147.3,147.13 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:133.17,135.4 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:140.37,142.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:144.17,146.4 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:153.56,154.31 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:165.2,166.16 2 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:169.2,170.12 2 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:154.31,158.17 3 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:161.3,162.13 2 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:158.17,160.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:166.16,168.3 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:174.62,175.17 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:178.2,178.14 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:175.17,177.3 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:179.24,182.21 3 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:183.24,186.21 3 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:187.10,188.36 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:193.59,196.14 3 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:196.14,198.3 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:201.90,202.40 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:206.2,207.21 2 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:220.2,220.58 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:224.2,224.12 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:202.40,204.3 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:207.21,210.3 2 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:210.8,210.27 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:210.27,215.3 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:215.8,219.3 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:220.58,222.3 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:227.36,228.21 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:233.2,233.13 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:228.21,231.3 2 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:237.41,238.31 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:239.17,240.43 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:241.10,242.14 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:247.37,249.2 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:254.43,256.2 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:259.38,259.64 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:262.48,262.80 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:265.37,265.62 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:268.44,268.92 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:271.45,271.94 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:274.45,274.94 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:277.41,277.86 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:280.39,280.66 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:284.45,286.2 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:289.40,293.2 3 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:297.64,299.2 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:302.61,304.2 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:307.60,309.2 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:312.61,314.2 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:317.60,319.2 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:324.76,325.20 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:328.2,330.34 3 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:333.2,333.76 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:325.20,327.3 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:330.34,332.3 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:338.72,341.2 2 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:344.85,345.20 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:348.2,348.82 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:345.20,347.3 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:352.84,353.20 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:356.2,356.52 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:353.20,355.3 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:360.43,361.41 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:365.2,366.31 2 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:371.2,372.10 2 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:361.41,363.3 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:366.31,368.3 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:368.8,370.3 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:377.50,378.41 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:381.2,384.30 4 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:378.41,380.3 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:389.87,391.16 2 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:394.2,396.53 3 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:391.16,393.3 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:403.33,403.50 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:408.59,410.31 2 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:410.31,412.3 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:412.8,414.3 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:418.51,422.23 3 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:426.2,426.23 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:432.2,432.13 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:422.23,424.3 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:426.23,427.38 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:427.38,429.4 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:440.40,440.57 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:441.40,441.78 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:442.40,442.67 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:453.84,455.16 2 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:458.2,461.8 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:455.16,457.3 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:468.37,468.54 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:469.47,473.14 2 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:476.2,476.16 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:473.14,475.3 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:478.42,478.69 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:480.48,482.2 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:484.46,490.2 5 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:507.136,510.32 2 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:521.2,529.3 2 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:510.32,514.32 3 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:518.3,519.25 2 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:514.32,516.12 2 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:533.59,534.23 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:537.2,537.22 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:534.23,536.3 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:541.47,543.47 2 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:550.2,550.20 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:543.47,544.71 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:544.71,548.4 3 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:556.45,558.2 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:577.204,591.2 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:594.79,608.20 2 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:611.2,613.17 3 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:608.20,610.3 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:616.42,616.59 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:617.42,617.57 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:618.42,618.63 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:619.42,619.64 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:620.42,620.64 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:621.42,621.61 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:622.42,622.63 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:623.42,623.60 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:624.42,624.59 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:625.42,625.65 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:626.42,626.61 1 0 +github.com/ethereum/go-ethereum/core/types/transaction.go:629.56,630.14 1 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:633.2,634.13 2 1 +github.com/ethereum/go-ethereum/core/types/transaction.go:630.14,632.3 1 1 +github.com/ethereum/go-ethereum/core/types/block.go:45.39,49.2 3 0 +github.com/ethereum/go-ethereum/core/types/block.go:52.37,54.2 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:57.51,59.2 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:62.56,64.2 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:111.37,113.2 1 1 +github.com/ethereum/go-ethereum/core/types/block.go:119.44,121.2 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:127.38,128.45 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:131.2,131.25 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:136.2,136.43 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:139.2,139.22 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:144.2,144.12 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:128.45,130.3 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:131.25,132.53 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:132.53,134.4 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:136.43,138.3 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:139.22,140.47 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:140.47,142.4 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:149.35,151.2 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:154.39,156.2 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:199.116,203.19 2 0 +github.com/ethereum/go-ethereum/core/types/block.go:211.2,211.24 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:218.2,218.22 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:228.2,228.10 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:203.19,205.3 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:205.8,209.3 3 0 +github.com/ethereum/go-ethereum/core/types/block.go:211.24,213.3 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:213.8,216.3 2 0 +github.com/ethereum/go-ethereum/core/types/block.go:218.22,220.3 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:220.8,223.25 3 0 +github.com/ethereum/go-ethereum/core/types/block.go:223.25,225.4 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:234.48,236.2 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:240.36,242.56 2 0 +github.com/ethereum/go-ethereum/core/types/block.go:245.2,245.48 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:248.2,248.22 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:251.2,251.22 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:255.2,255.13 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:242.56,244.3 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:245.48,247.3 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:248.22,250.3 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:251.22,254.3 2 0 +github.com/ethereum/go-ethereum/core/types/block.go:259.48,262.38 3 1 +github.com/ethereum/go-ethereum/core/types/block.go:265.2,267.12 3 1 +github.com/ethereum/go-ethereum/core/types/block.go:262.38,264.3 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:271.46,277.2 1 1 +github.com/ethereum/go-ethereum/core/types/block.go:281.45,281.64 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:282.45,282.70 1 1 +github.com/ethereum/go-ethereum/core/types/block.go:284.60,285.45 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:290.2,290.12 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:285.45,286.33 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:286.33,288.4 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:293.39,293.83 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:294.39,294.67 1 1 +github.com/ethereum/go-ethereum/core/types/block.go:295.39,295.66 1 1 +github.com/ethereum/go-ethereum/core/types/block.go:296.39,296.87 1 1 +github.com/ethereum/go-ethereum/core/types/block.go:297.39,297.63 1 1 +github.com/ethereum/go-ethereum/core/types/block.go:299.43,299.78 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:300.43,300.72 1 1 +github.com/ethereum/go-ethereum/core/types/block.go:301.43,301.96 1 1 +github.com/ethereum/go-ethereum/core/types/block.go:302.43,302.68 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:303.43,303.71 1 1 +github.com/ethereum/go-ethereum/core/types/block.go:304.43,304.67 1 1 +github.com/ethereum/go-ethereum/core/types/block.go:305.43,305.73 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:306.43,306.69 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:307.43,307.74 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:308.43,308.72 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:309.43,309.86 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:311.36,312.29 1 1 +github.com/ethereum/go-ethereum/core/types/block.go:315.2,315.43 1 1 +github.com/ethereum/go-ethereum/core/types/block.go:312.29,314.3 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:318.34,318.65 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:321.30,321.72 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:325.43,326.40 1 1 +github.com/ethereum/go-ethereum/core/types/block.go:329.2,332.30 4 0 +github.com/ethereum/go-ethereum/core/types/block.go:326.40,328.3 1 1 +github.com/ethereum/go-ethereum/core/types/block.go:337.37,339.2 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:343.53,346.2 2 0 +github.com/ethereum/go-ethereum/core/types/block.go:348.50,349.22 1 1 +github.com/ethereum/go-ethereum/core/types/block.go:352.2,352.24 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:349.22,351.3 1 1 +github.com/ethereum/go-ethereum/core/types/block.go:357.49,365.2 2 0 +github.com/ethereum/go-ethereum/core/types/block.go:368.80,375.24 3 0 +github.com/ethereum/go-ethereum/core/types/block.go:378.2,378.14 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:375.24,377.3 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:383.36,384.40 1 1 +github.com/ethereum/go-ethereum/core/types/block.go:387.2,389.10 3 1 +github.com/ethereum/go-ethereum/core/types/block.go:384.40,386.3 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:396.57,399.16 2 1 +github.com/ethereum/go-ethereum/core/types/block.go:402.2,403.16 2 1 +github.com/ethereum/go-ethereum/core/types/block.go:406.2,406.27 1 1 +github.com/ethereum/go-ethereum/core/types/block.go:409.2,409.39 1 1 +github.com/ethereum/go-ethereum/core/types/block.go:399.16,401.3 1 1 +github.com/ethereum/go-ethereum/core/types/block.go:403.16,405.3 1 0 +github.com/ethereum/go-ethereum/core/types/block.go:406.27,408.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:17.48,46.2 15 0 +github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:49.53,65.52 3 0 +github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:68.2,68.21 1 0 +github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:71.2,71.26 1 0 +github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:74.2,74.23 1 0 +github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:77.2,77.34 1 0 +github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:80.2,81.22 2 0 +github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:84.2,85.21 2 0 +github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:88.2,89.23 2 0 +github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:92.2,93.32 2 0 +github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:96.2,96.24 1 0 +github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:99.2,100.26 2 0 +github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:103.2,103.28 1 0 +github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:106.2,106.33 1 0 +github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:109.2,109.12 1 0 +github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:65.52,67.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:68.21,70.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:71.26,73.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:74.23,76.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:77.34,79.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:81.22,83.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:85.21,87.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:89.23,91.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:93.32,95.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:96.24,98.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:100.26,102.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:103.28,105.3 1 0 +github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:106.33,108.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:42.59,44.9 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:54.2,61.10 4 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:44.9,53.3 4 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:67.78,69.9 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:96.2,97.16 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:106.2,113.10 4 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:69.9,73.17 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:84.3,92.11 5 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:73.17,81.4 4 0 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:97.16,105.3 4 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:119.39,120.26 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:124.2,124.14 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:129.2,129.14 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:134.2,135.57 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:144.2,146.13 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:120.26,122.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:124.14,128.3 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:129.14,133.3 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:135.57,139.3 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:139.8,139.22 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:139.22,142.13 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:151.41,153.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:156.46,158.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:165.44,166.25 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:170.2,171.16 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:175.2,175.13 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:166.25,168.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:171.16,174.3 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:183.41,184.24 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:187.2,188.16 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:192.2,192.13 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:184.24,186.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:188.16,191.3 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:196.37,199.2 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:203.65,206.2 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:210.84,213.2 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:39.40,39.59 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:43.50,48.43 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:55.2,55.42 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:49.10,50.14 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:51.9,52.15 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:59.45,61.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:81.136,83.17 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:86.2,92.42 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:114.2,115.16 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:83.17,85.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:92.42,93.22 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:112.3,112.29 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:93.22,98.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:98.9,108.18 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:108.18,109.10 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:120.32,125.41 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:170.2,171.22 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:125.41,130.7 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:130.7,132.21 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:144.4,145.48 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:132.21,141.10 7 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:145.48,147.10 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:148.10,157.51 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:157.51,159.14 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:160.11,164.14 3 0 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:175.37,176.28 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:179.2,179.19 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:205.2,205.6 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:222.2,222.13 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:176.28,178.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:179.19,183.17 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:188.3,188.62 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:192.3,192.48 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:183.17,185.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:185.9,187.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:188.62,191.4 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:192.48,194.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:205.6,206.18 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:209.3,209.17 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:214.3,214.62 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:218.3,218.48 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:206.18,208.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:209.17,211.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:211.9,213.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:214.62,217.4 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:218.48,219.9 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:231.44,235.44 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:242.2,242.32 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:246.2,250.62 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:260.2,261.59 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:284.2,285.17 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:288.2,288.13 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:235.44,240.3 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:242.32,244.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:250.62,253.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:253.8,253.54 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:253.54,257.3 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:261.59,265.14 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:268.3,268.31 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:272.3,273.63 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:280.3,282.51 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:265.14,267.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:268.31,271.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:273.63,275.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:275.9,275.22 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:275.22,277.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:285.17,287.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:292.49,296.2 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:300.39,302.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:305.44,307.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:311.42,313.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:317.39,319.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:323.35,324.34 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:327.2,327.20 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:324.34,326.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:331.33,332.34 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:335.2,335.15 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:332.34,334.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:341.102,343.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:348.123,350.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:186.146,194.12 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:198.2,199.14 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:203.2,203.16 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:212.2,212.18 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:216.2,216.18 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:194.12,196.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:199.14,202.3 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:203.16,204.14 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:209.3,209.18 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:204.14,208.4 3 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:212.18,215.3 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:221.28,226.33 3 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:232.2,235.17 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:226.33,227.42 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:227.42,229.9 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:235.17,237.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:243.26,248.33 3 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:272.2,284.38 8 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:248.33,249.32 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:250.19,252.29 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:258.4,260.23 3 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:262.19,266.23 3 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:268.11,269.55 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:252.29,256.5 3 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:284.38,286.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:291.57,296.2 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:301.80,305.17 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:308.2,309.18 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:312.2,313.6 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:328.2,328.12 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:305.17,307.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:309.18,311.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:313.6,314.56 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:317.3,319.18 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:322.3,323.20 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:326.3,326.17 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:314.56,315.9 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:319.18,320.9 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:323.20,324.9 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:333.193,340.29 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:344.2,345.19 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:348.2,355.12 5 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:340.29,342.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:345.19,347.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:367.56,370.17 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:373.2,374.9 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:378.2,379.48 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:382.2,391.17 4 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:401.2,405.35 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:411.2,412.34 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:419.2,419.35 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:425.2,425.22 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:437.2,437.12 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:370.17,372.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:374.9,376.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:379.48,381.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:391.17,400.3 5 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:405.35,406.40 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:406.40,409.4 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:412.34,414.40 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:417.3,417.25 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:414.40,416.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:419.35,420.19 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:420.19,422.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:425.22,427.36 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:435.3,435.26 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:427.36,428.51 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:431.4,431.41 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:428.51,430.5 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:431.41,433.5 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:451.60,453.32 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:464.2,464.38 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:498.2,506.13 7 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:453.32,455.49 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:455.49,457.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:457.9,460.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:465.18,466.13 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:468.18,481.25 5 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:484.3,485.47 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:494.10,495.55 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:481.25,483.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:485.47,490.53 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:490.53,492.5 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:514.47,521.26 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:527.2,531.16 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:534.2,538.39 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:567.2,567.45 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:591.2,591.55 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:617.2,624.38 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:627.2,641.51 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:646.2,646.12 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:521.26,525.3 3 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:531.16,532.38 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:538.39,540.74 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:544.3,548.17 4 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:564.3,564.15 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:540.74,541.12 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:548.17,557.48 5 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:557.48,558.41 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:561.5,561.18 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:558.41,560.6 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:567.45,569.74 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:573.3,583.47 6 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:569.74,570.12 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:583.47,584.40 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:587.4,587.17 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:584.40,586.5 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:591.55,593.81 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:597.3,599.42 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:593.81,594.12 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:599.42,601.91 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:604.4,604.21 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:612.4,613.56 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:601.91,602.13 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:604.21,608.5 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:608.10,611.5 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:624.38,626.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:641.51,645.3 3 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:655.63,658.17 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:662.2,667.60 4 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:670.2,671.33 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:676.2,676.54 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:680.2,681.16 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:685.2,686.18 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:658.17,660.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:667.60,669.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:671.33,673.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:676.54,678.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:681.16,683.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:692.42,702.33 5 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:728.2,731.3 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:702.33,703.32 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:704.19,706.29 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:712.4,714.23 3 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:716.19,720.23 3 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:722.11,723.55 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:706.29,710.5 3 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:736.93,738.16 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:741.2,741.8 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:744.2,744.46 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:738.16,740.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:741.8,743.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:749.114,751.16 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:754.2,754.8 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:757.2,757.55 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:751.16,753.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:754.8,756.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:762.47,764.16 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:767.2,769.185 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:783.2,783.16 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:786.2,786.17 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:789.2,789.12 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:764.16,766.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:769.185,771.17 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:774.3,777.17 3 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:780.3,780.19 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:771.17,773.4 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:777.17,779.4 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:783.16,785.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:786.17,788.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:794.39,796.29 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:800.2,800.17 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:803.2,803.30 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:796.29,798.8 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:800.17,802.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:804.18,805.15 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:806.18,807.22 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:808.10,809.50 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:815.39,817.22 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:820.2,820.25 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:817.22,819.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:825.43,830.18 4 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:833.2,835.36 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:830.18,832.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:839.39,844.2 3 0 +github.com/ethereum/go-ethereum/core/state/snapshot/sort.go:29.28,29.46 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/sort.go:33.38,33.86 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/sort.go:36.33,36.64 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/account.go:39.93,44.23 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/account.go:47.2,47.42 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/account.go:50.2,50.13 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/account.go:44.23,46.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/account.go:47.42,49.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/account.go:55.95,57.16 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/account.go:60.2,60.13 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/account.go:57.16,58.13 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/account.go:65.48,67.56 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/account.go:70.2,70.28 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/account.go:73.2,73.32 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/account.go:76.2,76.21 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/account.go:67.56,69.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/account.go:70.28,72.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/account.go:73.32,75.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/account.go:80.50,82.16 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/account.go:85.2,85.35 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/account.go:82.16,84.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:48.41,50.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:53.40,55.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:59.35,64.2 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:68.66,70.16 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:73.2,73.20 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:76.2,77.55 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:80.2,80.21 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:70.16,72.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:73.20,75.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:77.55,78.13 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:85.67,91.14 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:96.2,96.69 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:100.2,103.57 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:109.2,113.27 4 1 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:118.2,118.18 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:91.14,93.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:96.69,98.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:103.57,107.3 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:113.27,115.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:115.8,117.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:123.84,129.14 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:132.2,136.65 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:140.2,143.53 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:149.2,153.27 4 1 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:158.2,158.18 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:129.14,131.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:136.65,138.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:143.53,147.3 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:153.27,155.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:155.8,157.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:164.180,166.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:108.76,110.29 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:114.2,114.21 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:124.2,131.21 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:141.2,141.23 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:110.29,112.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:115.25,116.72 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:117.29,121.8 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:131.21,132.72 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:132.72,139.4 3 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:147.114,156.38 4 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:159.2,170.13 4 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:156.38,158.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:174.85,182.18 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:187.2,188.16 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:191.2,192.9 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:202.2,203.40 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:182.18,186.3 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:188.16,189.13 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:193.21,194.18 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:195.37,196.19 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:197.40,198.38 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:199.10,200.90 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:218.41,220.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:224.42,226.26 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:229.2,229.13 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:226.26,228.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:234.87,235.40 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:241.2,241.12 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:235.40,237.44 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:237.44,239.4 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:251.193,262.18 5 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:294.2,294.23 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:299.2,299.30 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:308.2,308.32 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:323.2,324.16 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:329.2,330.19 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:334.2,334.19 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:337.2,337.51 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:347.2,347.17 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:361.2,369.6 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:262.18,264.48 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:267.3,267.23 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:273.3,275.28 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:264.48,265.12 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:267.23,271.9 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:275.28,277.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:277.9,279.18 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:279.18,288.5 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:288.10,290.5 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:294.23,296.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:296.8,298.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:299.30,300.24 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:300.24,302.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:302.9,304.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:308.32,310.28 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:313.3,313.49 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:320.3,320.51 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:310.28,312.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:313.49,319.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:324.16,327.3 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:330.19,332.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:334.19,336.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:337.51,346.3 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:347.17,348.50 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:348.50,357.4 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:384.221,387.16 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:390.2,394.21 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:397.2,400.20 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:413.2,421.34 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:431.2,432.26 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:442.2,443.15 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:451.2,469.18 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:508.2,508.21 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:512.2,513.29 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:519.2,522.23 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:527.2,532.49 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:387.16,389.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:394.21,396.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:400.20,407.63 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:411.3,411.57 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:407.63,407.105 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:407.119,409.4 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:421.34,423.24 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:426.3,426.16 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:423.24,425.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:432.26,436.35 4 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:439.3,440.38 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:436.35,438.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:443.15,445.17 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:445.17,448.4 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:469.18,470.55 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:474.3,477.23 4 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:502.3,503.69 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:506.3,506.33 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:470.55,472.9 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:477.23,478.58 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:500.4,500.9 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:478.58,481.64 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:484.5,488.13 5 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:481.64,483.6 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:489.10,489.23 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:489.23,492.59 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:497.5,498.24 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:492.59,494.6 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:494.11,496.6 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:503.69,505.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:508.21,510.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:513.29,514.56 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:517.3,517.15 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:514.56,516.4 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:522.23,524.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:524.8,526.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:539.54,544.27 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:549.2,557.54 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:595.2,595.75 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:719.2,719.6 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:741.2,742.38 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:749.2,761.14 8 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:544.27,548.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:557.54,558.10 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:562.3,562.63 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:588.3,588.41 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:592.3,592.13 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:559.30,559.30 0 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:560.11,560.11 0 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:562.63,563.56 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:572.4,574.40 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:577.4,583.20 5 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:563.56,567.5 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:574.40,576.5 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:583.20,586.5 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:588.41,591.4 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:595.75,600.13 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:614.3,620.52 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:624.3,624.66 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:643.3,646.98 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:650.3,650.47 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:655.3,655.28 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:714.3,715.13 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:600.13,607.117 5 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:610.4,611.14 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:607.117,609.5 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:620.52,622.4 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:624.66,626.14 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:640.4,641.20 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:626.14,627.48 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:630.5,630.30 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:633.5,633.38 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:627.48,629.6 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:630.30,632.6 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:634.10,639.5 4 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:646.98,648.4 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:650.47,652.4 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:655.28,663.117 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:666.4,666.64 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:663.117,665.5 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:667.9,671.107 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:674.4,674.77 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:699.4,700.8 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:671.107,673.5 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:674.77,675.33 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:679.5,679.15 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:684.5,684.14 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:690.5,694.73 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:697.5,697.15 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:675.33,677.6 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:679.15,683.6 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:684.14,687.6 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:687.11,689.6 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:694.73,696.6 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:700.8,702.19 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:705.5,705.18 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:708.5,708.60 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:702.19,704.6 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:705.18,706.11 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:708.60,709.11 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:719.6,722.17 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:730.3,730.16 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:733.3,733.54 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:736.3,736.35 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:722.17,723.20 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:726.4,727.10 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:723.20,725.5 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:730.16,731.9 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:733.54,734.9 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:742.38,748.3 4 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:766.37,767.37 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:773.2,773.12 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:767.37,769.20 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:769.20,771.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:86.72,89.53 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:93.2,96.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:89.53,91.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:100.44,105.20 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:109.2,109.23 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:112.2,112.22 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:117.2,120.13 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:105.20,106.68 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:109.23,111.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:112.22,115.3 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:125.46,127.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:130.51,132.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:142.49,145.9 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:152.2,153.22 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:156.2,156.13 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:145.9,146.52 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:150.3,150.81 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:146.52,149.4 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:153.22,155.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:160.43,160.44 0 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:170.72,176.2 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:179.44,181.18 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:185.2,185.6 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:195.2,195.13 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:181.18,183.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:185.6,186.20 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:191.3,191.77 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:186.20,190.4 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:191.77,192.9 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:203.46,204.18 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:207.2,207.22 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:204.18,206.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:211.51,213.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:216.49,218.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:221.42,223.18 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:223.18,226.3 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:250.101,255.53 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:259.2,263.15 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:255.53,257.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:267.44,272.20 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:276.2,276.23 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:279.2,279.22 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:284.2,287.13 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:272.20,273.68 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:276.23,278.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:279.22,282.3 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:292.46,294.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:297.51,299.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:309.46,312.9 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:316.2,317.9 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:320.2,321.22 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:324.2,324.13 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:312.9,313.89 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:317.9,318.86 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:321.22,323.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:328.43,328.44 0 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:342.101,349.2 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:352.44,354.18 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:358.2,358.6 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:368.2,368.13 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:354.18,356.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:358.6,359.20 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:364.3,364.95 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:359.20,363.4 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:364.95,365.9 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:376.46,377.18 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:380.2,380.22 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:377.18,379.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:384.51,386.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:389.46,391.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:394.42,396.18 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:396.18,399.3 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:69.56,70.29 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:73.2,74.67 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:79.2,80.49 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:88.2,89.77 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:70.29,72.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:74.67,77.3 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:81.25,82.36 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:83.29,84.91 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:85.10,86.33 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:93.103,98.29 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:101.2,102.67 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:111.2,112.23 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:116.2,120.16 3 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:124.2,124.31 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:131.2,132.40 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:138.2,138.51 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:143.2,144.16 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:147.2,148.33 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:98.29,100.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:102.67,104.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:112.23,115.3 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:120.16,123.3 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:124.31,127.3 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:132.40,134.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:138.51,141.3 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:144.16,146.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:152.138,155.40 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:160.2,161.33 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:164.2,171.16 3 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:183.2,183.43 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:197.2,197.21 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:218.2,218.29 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:155.40,157.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:161.33,163.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:171.16,174.3 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:183.43,187.16 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:194.3,194.89 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:187.16,189.4 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:197.21,200.28 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:203.3,207.33 4 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:210.3,216.5 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:200.28,202.4 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:207.33,209.4 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:223.70,226.40 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:233.2,234.45 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:237.2,238.34 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:241.2,242.44 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:245.2,246.33 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:253.2,254.43 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:257.2,258.32 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:269.2,269.92 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:226.40,228.20 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:231.3,231.52 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:228.20,230.4 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:234.45,236.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:238.34,240.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:242.44,244.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:246.33,247.26 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:247.26,249.4 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:249.9,251.4 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:254.43,256.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:258.32,260.34 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:267.3,267.34 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:260.34,261.30 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:261.30,263.5 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:263.10,265.5 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:274.73,277.24 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:286.2,289.14 3 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:293.2,296.21 3 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:277.24,281.36 3 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:281.36,283.4 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:289.14,291.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:301.73,304.16 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:308.2,311.16 3 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:315.2,315.52 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:318.2,319.35 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:322.2,322.54 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:325.2,326.41 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:329.2,329.53 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:332.2,333.42 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:342.2,342.52 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:345.2,346.18 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:304.16,306.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:311.16,313.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:315.52,317.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:319.35,321.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:322.54,324.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:326.41,328.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:329.53,331.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:333.42,336.31 3 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:340.3,340.80 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:336.31,339.4 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:342.52,344.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:34.152,45.18 5 1 +github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:48.2,48.16 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:80.2,81.38 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:84.2,84.18 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:87.2,87.12 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:90.2,90.12 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:45.18,47.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:48.16,51.36 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:54.3,54.25 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:57.3,57.51 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:61.3,64.23 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:51.36,52.9 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:54.25,55.12 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:57.51,58.9 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:64.23,67.40 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:70.4,74.52 4 0 +github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:67.40,69.5 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:74.52,77.5 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:81.38,83.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:84.18,86.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:87.12,89.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:54.71,56.2 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:59.92,61.2 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:66.105,69.16 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:72.2,74.186 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:97.2,97.16 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:100.2,100.17 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:103.2,103.12 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:69.16,71.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:74.186,76.28 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:84.3,85.17 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:88.3,91.17 3 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:94.3,94.19 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:76.28,78.22 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:81.4,81.40 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:78.22,80.5 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:85.17,87.4 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:91.17,93.4 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:97.16,99.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:100.17,102.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:122.40,128.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:131.79,137.2 4 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:140.56,145.2 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:148.97,154.44 5 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:154.44,156.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:160.77,167.2 5 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:170.37,179.23 4 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:206.2,206.46 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:179.23,181.79 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:181.79,188.42 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:201.4,203.9 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:188.42,190.60 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:190.60,196.80 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:196.80,198.7 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:210.41,216.21 5 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:219.2,220.39 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:216.21,218.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:224.54,228.6 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:228.6,229.10 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:230.18,232.32 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:233.26,234.15 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:237.4,237.10 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:234.15,236.5 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:245.196,254.12 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:259.2,259.28 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:269.2,271.31 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:276.2,276.48 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:289.2,295.16 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:353.2,353.35 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:360.2,360.18 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:254.12,257.3 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:259.28,261.13 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:261.13,264.4 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:271.31,273.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:276.48,279.32 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:284.3,287.22 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:279.32,280.51 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:280.51,282.5 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:295.16,296.33 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:339.3,343.57 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:296.33,301.27 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:335.4,335.38 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:301.27,303.19 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:303.19,305.6 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:306.10,309.37 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:314.5,315.19 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:318.5,318.31 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:330.5,331.19 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:309.37,312.6 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:315.19,317.6 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:318.31,320.20 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:324.6,324.53 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:328.6,328.20 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:320.20,323.7 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:324.53,327.7 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:331.19,333.6 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:336.9,338.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:343.57,344.34 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:349.4,349.37 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:344.34,346.5 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:346.10,348.5 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:353.35,354.33 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:354.33,356.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:356.9,358.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:363.87,365.23 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:368.2,369.15 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:374.2,374.13 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:365.23,367.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:369.15,371.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:371.8,373.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:80.13,89.60 4 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:89.60,91.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:131.65,131.91 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:132.65,132.91 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:133.65,133.91 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:134.65,134.91 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:135.65,135.77 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:136.45,138.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:145.64,145.90 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:146.64,146.90 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:147.64,147.90 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:148.64,148.90 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:149.64,149.76 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:150.44,152.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:159.64,159.90 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:160.64,160.90 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:161.64,161.90 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:162.64,162.90 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:163.64,163.76 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:164.44,167.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:171.182,181.33 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:190.2,190.42 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:198.2,198.42 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:208.2,209.11 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:182.18,183.21 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:184.18,185.28 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:186.10,187.31 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:190.42,191.18 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:195.3,196.56 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:191.18,192.54 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:198.42,199.19 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:203.3,203.30 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:199.19,200.54 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:203.30,206.4 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:214.49,218.30 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:223.2,226.46 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:234.2,234.35 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:237.2,237.35 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:240.2,240.49 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:248.2,251.79 4 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:218.30,220.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:226.46,230.3 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:230.8,232.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:234.35,236.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:237.35,239.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:240.49,241.34 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:241.34,243.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:255.41,257.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:260.40,262.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:266.35,268.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:272.66,274.16 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:277.2,277.20 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:280.2,281.55 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:284.2,284.21 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:274.16,276.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:277.20,279.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:281.55,282.13 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:291.67,296.10 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:299.2,300.10 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:303.2,307.19 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:312.2,312.31 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:296.10,298.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:300.10,302.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:307.19,310.3 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:318.78,324.16 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:328.2,328.42 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:336.2,336.39 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:344.2,344.44 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:348.2,349.35 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:324.16,326.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:328.42,334.3 5 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:336.39,342.3 5 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:344.44,346.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:357.84,362.10 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:365.2,366.10 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:369.2,373.19 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:378.2,378.48 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:362.10,364.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:366.10,368.3 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:373.19,376.3 2 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:384.95,390.16 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:394.2,394.52 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:408.2,408.46 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:416.2,416.44 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:420.2,421.52 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:390.16,392.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:394.52,395.43 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:395.43,398.29 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:403.4,404.20 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:398.29,400.5 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:400.10,402.5 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:408.46,414.3 5 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:416.44,418.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:426.180,428.2 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:433.41,436.9 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:442.2,449.46 4 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:453.2,453.35 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:458.2,458.41 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:462.2,462.51 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:476.2,486.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:436.9,438.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:449.46,450.38 1 0 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:453.35,457.3 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:458.41,460.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:462.51,464.52 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:469.3,470.42 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:473.3,473.46 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:464.52,466.12 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:470.42,472.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:493.50,499.17 4 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:503.2,507.35 4 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:510.2,510.35 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:515.2,517.23 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:499.17,501.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:507.35,509.3 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:510.35,511.41 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:511.41,513.4 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:529.81,532.47 3 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:538.2,538.55 1 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:542.2,550.28 6 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:553.2,556.32 4 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:532.47,536.3 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:538.55,541.3 2 1 +github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:550.28,552.3 1 1 +github.com/ethereum/go-ethereum/core/state/access_list.go:29.68,32.2 2 1 +github.com/ethereum/go-ethereum/core/state/access_list.go:36.114,38.9 2 1 +github.com/ethereum/go-ethereum/core/state/access_list.go:42.2,42.15 1 1 +github.com/ethereum/go-ethereum/core/state/access_list.go:46.2,47.26 2 1 +github.com/ethereum/go-ethereum/core/state/access_list.go:38.9,41.3 1 0 +github.com/ethereum/go-ethereum/core/state/access_list.go:42.15,45.3 1 1 +github.com/ethereum/go-ethereum/core/state/access_list.go:51.34,55.2 1 1 +github.com/ethereum/go-ethereum/core/state/access_list.go:58.41,60.32 2 1 +github.com/ethereum/go-ethereum/core/state/access_list.go:63.2,64.34 2 1 +github.com/ethereum/go-ethereum/core/state/access_list.go:71.2,71.11 1 1 +github.com/ethereum/go-ethereum/core/state/access_list.go:60.32,62.3 1 1 +github.com/ethereum/go-ethereum/core/state/access_list.go:64.34,66.26 2 1 +github.com/ethereum/go-ethereum/core/state/access_list.go:69.3,69.27 1 1 +github.com/ethereum/go-ethereum/core/state/access_list.go:66.26,68.4 1 1 +github.com/ethereum/go-ethereum/core/state/access_list.go:76.63,77.50 1 1 +github.com/ethereum/go-ethereum/core/state/access_list.go:80.2,81.13 2 1 +github.com/ethereum/go-ethereum/core/state/access_list.go:77.50,79.3 1 1 +github.com/ethereum/go-ethereum/core/state/access_list.go:89.108,91.31 2 1 +github.com/ethereum/go-ethereum/core/state/access_list.go:99.2,100.33 2 1 +github.com/ethereum/go-ethereum/core/state/access_list.go:106.2,106.21 1 1 +github.com/ethereum/go-ethereum/core/state/access_list.go:91.31,97.3 4 1 +github.com/ethereum/go-ethereum/core/state/access_list.go:100.33,104.3 2 1 +github.com/ethereum/go-ethereum/core/state/access_list.go:113.76,116.13 2 1 +github.com/ethereum/go-ethereum/core/state/access_list.go:119.2,124.23 3 1 +github.com/ethereum/go-ethereum/core/state/access_list.go:116.13,117.62 1 0 +github.com/ethereum/go-ethereum/core/state/access_list.go:124.23,127.3 2 1 +github.com/ethereum/go-ethereum/core/state/access_list.go:134.61,136.2 1 1 +github.com/ethereum/go-ethereum/core/state/database.go:112.46,114.2 1 1 +github.com/ethereum/go-ethereum/core/state/database.go:119.77,126.2 2 1 +github.com/ethereum/go-ethereum/core/state/database.go:135.63,137.16 2 1 +github.com/ethereum/go-ethereum/core/state/database.go:140.2,140.16 1 1 +github.com/ethereum/go-ethereum/core/state/database.go:137.16,139.3 1 0 +github.com/ethereum/go-ethereum/core/state/database.go:144.80,146.16 2 1 +github.com/ethereum/go-ethereum/core/state/database.go:149.2,149.16 1 1 +github.com/ethereum/go-ethereum/core/state/database.go:146.16,148.3 1 1 +github.com/ethereum/go-ethereum/core/state/database.go:153.44,154.23 1 1 +github.com/ethereum/go-ethereum/core/state/database.go:155.24,156.18 1 1 +github.com/ethereum/go-ethereum/core/state/database.go:157.10,158.47 1 0 +github.com/ethereum/go-ethereum/core/state/database.go:163.83,164.68 1 1 +github.com/ethereum/go-ethereum/core/state/database.go:167.2,168.19 2 1 +github.com/ethereum/go-ethereum/core/state/database.go:173.2,173.37 1 1 +github.com/ethereum/go-ethereum/core/state/database.go:164.68,166.3 1 1 +github.com/ethereum/go-ethereum/core/state/database.go:168.19,172.3 3 1 +github.com/ethereum/go-ethereum/core/state/database.go:179.93,180.68 1 0 +github.com/ethereum/go-ethereum/core/state/database.go:183.2,184.19 2 0 +github.com/ethereum/go-ethereum/core/state/database.go:189.2,189.37 1 0 +github.com/ethereum/go-ethereum/core/state/database.go:180.68,182.3 1 0 +github.com/ethereum/go-ethereum/core/state/database.go:184.19,188.3 3 0 +github.com/ethereum/go-ethereum/core/state/database.go:193.84,194.54 1 0 +github.com/ethereum/go-ethereum/core/state/database.go:197.2,198.23 2 0 +github.com/ethereum/go-ethereum/core/state/database.go:194.54,196.3 1 0 +github.com/ethereum/go-ethereum/core/state/database.go:202.46,204.2 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:48.52,52.2 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:57.37,59.21 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:63.2,63.34 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:67.2,67.22 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:59.21,61.3 1 0 +github.com/ethereum/go-ethereum/core/state/iterator.go:63.34,66.3 2 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:71.38,73.21 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:77.2,77.23 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:81.2,81.22 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:91.2,91.20 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:96.2,96.42 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:104.2,104.24 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:108.2,109.85 2 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:112.2,113.16 2 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:116.2,117.27 2 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:120.2,120.51 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:128.2,129.12 2 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:73.21,75.3 1 0 +github.com/ethereum/go-ethereum/core/state/iterator.go:77.23,79.3 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:81.22,82.42 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:88.3,88.13 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:82.42,83.32 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:86.4,86.19 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:83.32,85.5 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:91.20,94.3 2 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:96.42,97.32 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:100.3,101.13 2 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:97.32,99.4 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:104.24,106.3 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:109.85,111.3 1 0 +github.com/ethereum/go-ethereum/core/state/iterator.go:113.16,115.3 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:117.27,119.3 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:120.51,124.17 4 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:124.17,126.4 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:134.41,139.21 2 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:143.2,143.9 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:154.2,154.13 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:139.21,141.3 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:144.24,146.35 2 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:149.22,150.51 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:151.25,152.62 1 1 +github.com/ethereum/go-ethereum/core/state/iterator.go:146.35,148.4 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:37.31,39.2 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:43.40,44.28 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:48.2,48.8 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:44.28,46.3 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:51.33,53.28 2 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:57.2,57.12 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:53.28,55.3 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:97.36,99.2 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:102.91,103.25 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:106.2,106.26 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:109.2,109.34 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:112.2,120.3 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:103.25,105.3 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:106.26,108.3 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:109.34,111.3 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:124.52,126.2 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:129.43,130.20 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:130.20,132.3 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:135.38,137.2 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:139.31,143.25 2 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:143.25,147.3 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:150.49,151.19 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:168.2,168.15 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:151.19,154.57 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:159.3,159.20 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:154.57,158.4 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:159.20,162.18 3 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:162.18,165.5 2 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:172.74,174.26 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:178.2,179.11 2 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:183.2,183.37 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:174.26,176.3 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:179.11,181.3 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:187.83,189.26 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:193.2,193.54 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:196.2,196.51 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:200.2,204.22 2 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:221.2,221.36 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:232.2,233.18 2 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:240.2,241.14 2 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:189.26,191.3 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:193.54,195.3 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:196.51,198.3 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:204.22,211.66 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:214.3,216.31 3 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:211.66,213.4 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:216.31,218.4 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:221.36,224.31 3 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:227.3,227.17 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:224.31,226.4 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:227.17,230.4 2 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:233.18,235.17 2 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:238.3,238.26 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:235.17,237.4 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:245.69,247.26 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:252.2,253.19 2 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:257.2,262.24 2 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:247.26,250.3 2 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:253.19,255.3 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:271.71,273.26 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:276.2,276.34 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:273.26,275.3 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:276.34,278.3 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:283.56,285.2 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:289.47,291.41 2 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:297.2,297.96 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:300.2,300.29 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:291.41,293.36 2 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:293.36,295.4 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:297.96,299.3 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:300.29,302.3 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:307.52,310.32 2 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:314.2,314.30 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:318.2,324.43 5 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:354.2,354.28 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:357.2,357.31 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:360.2,360.11 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:310.32,312.3 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:314.30,315.31 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:315.31,315.75 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:324.43,326.36 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:329.3,332.31 3 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:342.3,342.23 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:352.3,352.62 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:326.36,327.12 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:332.31,335.4 2 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:335.9,340.4 3 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:342.23,343.22 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:350.4,350.48 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:343.22,345.63 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:345.63,348.6 2 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:354.28,356.3 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:357.31,359.3 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:364.47,366.29 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:370.2,370.30 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:373.2,373.29 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:366.29,368.3 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:370.30,371.31 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:371.31,371.74 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:378.60,380.29 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:383.2,383.20 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:387.2,387.30 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:390.2,391.16 2 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:394.2,394.23 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:380.29,382.3 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:383.20,385.3 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:387.30,388.31 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:388.31,388.75 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:391.16,393.3 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:399.51,402.24 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:408.2,408.53 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:402.24,403.16 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:406.3,406.9 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:403.16,405.4 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:413.51,414.24 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:417.2,417.53 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:414.24,416.3 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:420.51,426.2 2 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:428.51,430.2 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:432.58,434.19 2 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:437.2,444.20 8 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:434.19,436.3 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:452.48,454.2 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:457.48,458.19 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:461.2,461.46 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:464.2,465.16 2 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:468.2,469.13 2 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:458.19,460.3 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:461.46,463.3 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:465.16,467.3 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:475.49,476.19 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:479.2,479.46 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:482.2,483.16 2 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:486.2,486.13 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:476.19,478.3 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:479.46,481.3 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:483.16,485.3 1 0 +github.com/ethereum/go-ethereum/core/state/state_object.go:489.66,497.2 3 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:499.66,503.2 3 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:505.46,511.2 2 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:513.46,515.2 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:517.41,519.2 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:521.42,523.2 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:525.38,527.2 1 1 +github.com/ethereum/go-ethereum/core/state/state_object.go:532.40,533.54 1 0 +github.com/ethereum/go-ethereum/core/state/sync.go:30.127,33.19 2 1 +github.com/ethereum/go-ethereum/core/state/sync.go:40.2,41.91 2 1 +github.com/ethereum/go-ethereum/core/state/sync.go:55.2,56.15 2 1 +github.com/ethereum/go-ethereum/core/state/sync.go:33.19,34.88 1 0 +github.com/ethereum/go-ethereum/core/state/sync.go:34.88,36.4 1 0 +github.com/ethereum/go-ethereum/core/state/sync.go:41.91,42.20 1 1 +github.com/ethereum/go-ethereum/core/state/sync.go:47.3,48.65 2 1 +github.com/ethereum/go-ethereum/core/state/sync.go:51.3,53.13 3 1 +github.com/ethereum/go-ethereum/core/state/sync.go:42.20,43.46 1 0 +github.com/ethereum/go-ethereum/core/state/sync.go:43.46,45.5 1 0 +github.com/ethereum/go-ethereum/core/state/sync.go:48.65,50.4 1 0 +github.com/ethereum/go-ethereum/core/state/dump.go:70.41,72.2 1 1 +github.com/ethereum/go-ethereum/core/state/dump.go:75.68,77.2 1 1 +github.com/ethereum/go-ethereum/core/state/dump.go:87.49,89.2 1 0 +github.com/ethereum/go-ethereum/core/state/dump.go:92.76,94.2 1 0 +github.com/ethereum/go-ethereum/core/state/dump.go:102.76,113.32 2 0 +github.com/ethereum/go-ethereum/core/state/dump.go:116.2,116.23 1 0 +github.com/ethereum/go-ethereum/core/state/dump.go:113.32,115.3 1 0 +github.com/ethereum/go-ethereum/core/state/dump.go:120.49,124.2 1 0 +github.com/ethereum/go-ethereum/core/state/dump.go:128.87,130.17 1 1 +github.com/ethereum/go-ethereum/core/state/dump.go:133.2,143.16 5 1 +github.com/ethereum/go-ethereum/core/state/dump.go:195.2,195.26 1 1 +github.com/ethereum/go-ethereum/core/state/dump.go:198.2,201.16 2 1 +github.com/ethereum/go-ethereum/core/state/dump.go:130.17,132.3 1 1 +github.com/ethereum/go-ethereum/core/state/dump.go:143.16,145.58 2 1 +github.com/ethereum/go-ethereum/core/state/dump.go:148.3,156.23 3 1 +github.com/ethereum/go-ethereum/core/state/dump.go:164.3,166.21 3 1 +github.com/ethereum/go-ethereum/core/state/dump.go:169.3,169.24 1 1 +github.com/ethereum/go-ethereum/core/state/dump.go:181.3,183.41 3 1 +github.com/ethereum/go-ethereum/core/state/dump.go:188.3,188.43 1 1 +github.com/ethereum/go-ethereum/core/state/dump.go:145.58,146.14 1 0 +github.com/ethereum/go-ethereum/core/state/dump.go:156.23,159.30 2 0 +github.com/ethereum/go-ethereum/core/state/dump.go:162.4,162.30 1 0 +github.com/ethereum/go-ethereum/core/state/dump.go:159.30,160.13 1 0 +github.com/ethereum/go-ethereum/core/state/dump.go:166.21,168.4 1 1 +github.com/ethereum/go-ethereum/core/state/dump.go:169.24,172.25 3 1 +github.com/ethereum/go-ethereum/core/state/dump.go:172.25,174.19 2 0 +github.com/ethereum/go-ethereum/core/state/dump.go:178.5,178.98 1 0 +github.com/ethereum/go-ethereum/core/state/dump.go:174.19,176.14 2 0 +github.com/ethereum/go-ethereum/core/state/dump.go:183.41,187.4 2 0 +github.com/ethereum/go-ethereum/core/state/dump.go:188.43,189.17 1 0 +github.com/ethereum/go-ethereum/core/state/dump.go:192.4,192.9 1 0 +github.com/ethereum/go-ethereum/core/state/dump.go:189.17,191.5 1 0 +github.com/ethereum/go-ethereum/core/state/dump.go:195.26,197.3 1 0 +github.com/ethereum/go-ethereum/core/state/dump.go:205.50,211.2 3 1 +github.com/ethereum/go-ethereum/core/state/dump.go:214.49,217.16 3 1 +github.com/ethereum/go-ethereum/core/state/dump.go:220.2,220.13 1 1 +github.com/ethereum/go-ethereum/core/state/dump.go:217.16,219.3 1 0 +github.com/ethereum/go-ethereum/core/state/dump.go:224.73,226.2 1 0 +github.com/ethereum/go-ethereum/core/state/dump.go:229.63,235.2 3 0 +github.com/ethereum/go-ethereum/core/state/journal.go:44.28,48.2 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:51.46,53.42 2 1 +github.com/ethereum/go-ethereum/core/state/journal.go:53.42,55.3 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:60.58,61.50 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:72.2,72.34 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:61.50,66.50 2 1 +github.com/ethereum/go-ethereum/core/state/journal.go:66.50,67.49 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:67.49,69.5 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:78.46,80.2 1 0 +github.com/ethereum/go-ethereum/core/state/journal.go:83.32,85.2 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:143.49,146.2 2 1 +github.com/ethereum/go-ethereum/core/state/journal.go:148.56,150.2 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:152.48,154.39 2 1 +github.com/ethereum/go-ethereum/core/state/journal.go:154.39,156.3 1 0 +github.com/ethereum/go-ethereum/core/state/journal.go:159.55,161.2 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:163.44,165.16 2 1 +github.com/ethereum/go-ethereum/core/state/journal.go:165.16,168.3 2 1 +github.com/ethereum/go-ethereum/core/state/journal.go:171.51,173.2 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:177.43,178.2 0 1 +github.com/ethereum/go-ethereum/core/state/journal.go:180.49,182.2 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:184.44,186.2 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:188.51,190.2 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:192.42,194.2 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:196.49,198.2 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:200.41,202.2 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:204.48,206.2 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:208.44,210.2 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:212.51,214.2 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:216.43,218.2 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:220.50,222.2 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:224.43,226.20 2 1 +github.com/ethereum/go-ethereum/core/state/journal.go:231.2,231.13 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:226.20,228.3 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:228.8,230.3 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:234.50,236.2 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:238.48,240.2 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:242.55,244.2 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:246.57,257.2 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:259.64,261.2 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:263.54,265.2 1 1 +github.com/ethereum/go-ethereum/core/state/journal.go:267.61,269.2 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:50.57,53.2 2 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:55.46,56.24 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:128.81,130.16 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:133.2,147.22 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:154.2,154.17 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:130.16,132.3 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:147.22,148.59 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:148.59,152.4 3 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:160.53,161.25 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:165.2,165.19 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:161.25,164.3 2 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:165.19,167.3 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:172.36,173.25 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:173.25,176.3 2 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:180.39,181.20 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:181.20,183.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:186.33,188.2 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:190.42,198.2 6 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:200.81,202.25 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:205.2,205.13 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:202.25,204.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:208.39,210.29 2 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:213.2,213.13 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:210.29,212.3 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:217.66,218.37 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:218.37,223.3 4 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:227.54,229.2 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:232.41,235.2 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:239.41,241.20 2 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:244.2,244.17 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:241.20,242.88 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:249.51,251.2 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:255.51,258.2 2 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:261.60,263.24 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:266.2,266.20 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:263.24,265.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:269.56,271.24 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:275.2,275.10 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:271.24,273.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:279.33,281.2 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:283.55,285.24 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:288.2,288.12 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:285.24,287.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:291.56,293.24 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:296.2,296.10 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:293.24,295.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:299.64,301.24 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:304.2,304.51 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:301.24,303.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:308.79,310.24 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:313.2,313.22 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:310.24,312.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:317.67,319.2 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:322.74,326.2 3 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:329.88,332.17 3 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:335.2,336.19 2 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:332.17,334.3 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:340.88,342.24 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:345.2,345.22 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:342.24,344.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:349.39,351.2 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:355.57,357.24 2 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:360.2,362.26 3 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:357.24,359.3 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:365.57,367.24 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:370.2,370.14 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:367.24,369.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:378.68,380.24 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:380.24,382.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:386.68,388.24 2 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:388.24,390.3 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:393.68,395.24 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:395.24,397.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:400.63,402.24 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:402.24,404.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:407.61,409.24 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:409.24,411.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:414.73,416.24 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:416.24,418.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:423.88,425.24 2 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:425.24,427.3 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:435.53,437.24 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:440.2,448.13 4 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:437.24,439.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:456.55,458.30 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:462.2,463.68 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:471.2,471.19 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:458.30,459.31 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:459.31,459.72 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:463.68,465.3 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:471.19,473.3 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:477.55,479.30 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:483.2,484.50 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:479.30,480.31 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:480.31,480.72 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:484.50,486.3 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:492.68,493.70 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:496.2,496.12 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:493.70,495.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:503.75,505.45 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:509.2,510.19 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:535.2,535.17 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:555.2,557.12 3 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:505.45,507.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:510.19,513.31 3 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:516.3,516.17 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:513.31,515.4 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:516.17,517.18 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:520.4,526.31 2 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:529.4,529.36 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:517.18,519.5 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:526.31,528.5 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:529.36,531.5 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:535.17,538.31 3 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:541.3,541.17 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:545.3,545.20 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:548.3,549.52 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:538.31,540.4 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:541.17,544.4 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:545.20,547.4 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:549.52,552.4 2 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:560.55,562.2 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:565.73,567.24 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:570.2,570.20 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:567.24,569.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:575.81,579.34 3 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:585.2,586.17 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:591.2,592.34 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:595.2,595.20 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:579.34,581.20 2 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:581.20,583.4 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:586.17,588.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:588.8,590.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:592.34,594.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:608.54,610.17 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:610.17,612.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:615.100,617.15 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:620.2,622.16 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:641.2,641.12 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:617.15,619.3 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:622.16,624.50 2 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:631.3,631.24 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:624.50,625.23 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:628.4,628.12 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:625.23,627.5 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:631.24,633.18 2 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:636.4,636.45 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:633.18,635.5 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:636.45,638.5 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:646.35,662.38 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:680.2,680.42 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:686.2,686.40 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:692.2,692.33 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:700.2,700.42 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:708.2,713.25 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:716.2,716.20 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:741.2,741.14 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:662.38,667.51 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:667.51,675.4 3 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:680.42,681.51 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:684.3,684.47 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:681.51,683.4 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:686.40,687.51 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:690.3,690.45 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:687.51,689.4 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:692.33,694.26 2 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:698.3,698.25 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:694.26,697.4 2 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:700.42,702.3 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:713.25,715.3 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:716.20,725.37 4 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:728.3,729.36 2 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:732.3,733.35 2 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:725.37,727.4 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:729.36,731.4 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:733.35,735.26 2 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:738.4,738.31 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:735.26,737.5 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:745.34,750.2 4 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:753.47,755.61 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:758.2,758.71 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:761.2,765.43 3 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:755.61,757.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:758.71,759.64 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:769.38,771.2 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:776.53,778.38 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:812.2,812.57 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:816.2,816.27 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:778.38,780.13 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:789.3,789.58 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:804.3,810.79 3 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:780.13,787.12 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:789.58,796.21 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:796.21,800.5 3 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:801.9,803.4 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:812.57,814.3 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:822.73,834.25 3 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:845.2,845.42 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:853.2,853.23 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:858.2,859.42 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:869.2,869.23 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:872.2,872.36 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:876.2,876.30 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:879.2,879.22 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:834.25,835.16 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:835.16,838.4 2 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:845.42,846.48 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:846.48,848.4 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:853.23,854.59 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:854.59,856.4 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:859.42,860.47 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:867.3,867.59 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:860.47,863.4 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:863.9,866.4 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:869.23,871.3 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:872.36,874.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:876.30,877.31 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:877.31,877.71 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:884.54,887.2 2 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:889.43,890.32 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:894.2,894.41 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:890.32,893.3 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:898.72,899.20 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:903.2,908.40 4 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:923.2,923.34 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:926.2,926.32 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:932.2,933.30 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:938.2,939.113 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:948.2,948.16 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:951.2,951.30 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:964.2,964.19 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:983.2,983.18 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:899.20,901.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:908.40,909.48 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:909.48,911.40 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:916.4,917.18 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:920.4,920.33 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:911.40,914.5 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:917.18,919.5 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:923.34,925.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:926.32,927.44 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:927.44,929.4 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:933.30,935.3 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:939.113,940.57 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:943.3,943.32 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:946.3,946.13 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:940.57,942.4 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:943.32,945.4 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:948.16,950.3 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:951.30,962.3 9 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:964.19,965.31 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:969.3,969.46 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:981.3,981.78 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:965.31,966.32 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:966.32,966.74 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:969.46,970.103 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:977.4,977.49 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:970.103,972.5 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:977.49,979.5 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:995.134,1000.16 3 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:1004.2,1004.35 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:1007.2,1007.26 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:1000.16,1003.3 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:1004.35,1006.3 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:1007.26,1009.38 2 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:1009.38,1011.4 1 0 +github.com/ethereum/go-ethereum/core/state/statedb.go:1016.63,1017.35 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:1017.35,1019.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:1023.78,1025.13 2 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:1032.2,1032.13 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:1025.13,1031.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:1032.13,1037.3 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:1041.65,1043.2 1 1 +github.com/ethereum/go-ethereum/core/state/statedb.go:1046.115,1048.2 1 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:55.89,73.2 3 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:77.34,78.37 1 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:104.2,104.18 1 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:78.37,81.22 2 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:81.22,82.30 1 0 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:82.30,87.38 4 0 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:90.5,90.55 1 0 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:87.38,89.6 1 0 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:91.10,96.38 4 0 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:99.5,99.55 1 0 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:96.38,98.6 1 0 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:111.49,128.22 2 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:135.2,135.40 1 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:138.2,138.13 1 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:128.22,129.38 1 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:132.3,132.14 1 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:129.38,131.4 1 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:135.40,137.3 1 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:142.68,144.22 1 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:148.2,149.20 2 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:153.2,153.24 1 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:144.22,146.3 1 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:149.20,152.3 2 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:158.54,160.22 1 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:169.2,170.20 2 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:176.2,179.17 3 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:183.2,183.13 1 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:160.22,162.18 2 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:166.3,166.29 1 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:162.18,165.4 2 0 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:170.20,173.3 2 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:179.17,182.3 2 0 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:188.64,189.49 1 0 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:189.49,191.3 1 0 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:218.63,230.2 3 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:233.47,240.9 4 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:241.29,241.29 0 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:242.10,242.10 0 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:248.35,250.9 2 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:251.21,253.14 1 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:255.17,257.21 1 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:260.3,260.33 1 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:257.21,259.4 1 0 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:266.31,267.9 1 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:272.2,272.11 1 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:268.17,268.17 0 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:269.10,270.17 1 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:277.30,283.16 3 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:287.2,290.6 2 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:283.16,286.3 2 0 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:290.6,291.10 1 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:292.18,300.31 5 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:324.24,326.33 1 0 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:328.18,330.10 1 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:300.31,301.12 1 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:302.20,307.12 4 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:309.26,311.35 1 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:313.13,315.44 1 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:315.44,317.7 1 1 +github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:317.12,320.7 2 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:64.35,66.2 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:69.60,74.2 4 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:77.39,80.25 3 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:83.2,84.10 2 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:80.25,82.3 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:89.52,91.25 2 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:94.2,95.10 2 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:91.25,93.3 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:99.39,101.25 2 0 +github.com/ethereum/go-ethereum/crypto/crypto.go:104.2,104.19 1 0 +github.com/ethereum/go-ethereum/crypto/crypto.go:101.25,103.3 1 0 +github.com/ethereum/go-ethereum/crypto/crypto.go:108.67,111.2 2 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:115.86,117.2 1 0 +github.com/ethereum/go-ethereum/crypto/crypto.go:120.51,122.2 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:127.48,130.2 2 0 +github.com/ethereum/go-ethereum/crypto/crypto.go:135.64,138.49 3 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:141.2,144.33 2 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:148.2,148.24 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:152.2,153.29 2 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:156.2,156.18 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:138.49,140.3 1 0 +github.com/ethereum/go-ethereum/crypto/crypto.go:144.33,146.3 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:148.24,150.3 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:153.29,155.3 1 0 +github.com/ethereum/go-ethereum/crypto/crypto.go:160.47,161.17 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:164.2,164.61 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:161.17,163.3 1 0 +github.com/ethereum/go-ethereum/crypto/crypto.go:168.60,170.14 2 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:173.2,173.57 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:170.14,172.3 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:176.48,177.48 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:180.2,180.47 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:177.48,179.3 1 0 +github.com/ethereum/go-ethereum/crypto/crypto.go:184.59,186.51 2 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:191.2,191.19 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:186.51,188.3 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:188.8,188.23 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:188.23,190.3 1 0 +github.com/ethereum/go-ethereum/crypto/crypto.go:195.56,197.16 2 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:200.2,205.16 5 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:210.2,210.43 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:214.2,214.32 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:197.16,199.3 1 0 +github.com/ethereum/go-ethereum/crypto/crypto.go:205.16,207.3 1 0 +github.com/ethereum/go-ethereum/crypto/crypto.go:207.8,207.26 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:207.26,209.3 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:210.43,212.3 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:219.64,220.26 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:229.2,229.15 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:220.26,222.10 2 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:223.38,224.17 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:225.19,226.17 1 0 +github.com/ethereum/go-ethereum/crypto/crypto.go:233.45,234.20 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:234.20,236.10 2 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:237.22,238.14 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:239.19,240.14 1 0 +github.com/ethereum/go-ethereum/crypto/crypto.go:241.31,242.67 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:243.15,244.66 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:251.58,254.2 2 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:257.47,259.2 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:263.74,264.54 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:269.2,269.44 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:273.2,273.77 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:264.54,266.3 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:269.44,271.3 1 0 +github.com/ethereum/go-ethereum/crypto/crypto.go:276.56,279.2 2 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:281.30,282.23 1 1 +github.com/ethereum/go-ethereum/crypto/crypto.go:282.23,284.3 1 1 +github.com/ethereum/go-ethereum/crypto/signature_cgo.go:32.50,34.2 1 1 +github.com/ethereum/go-ethereum/crypto/signature_cgo.go:37.59,39.16 2 1 +github.com/ethereum/go-ethereum/crypto/signature_cgo.go:43.2,44.57 2 1 +github.com/ethereum/go-ethereum/crypto/signature_cgo.go:39.16,41.3 1 0 +github.com/ethereum/go-ethereum/crypto/signature_cgo.go:55.77,56.37 1 1 +github.com/ethereum/go-ethereum/crypto/signature_cgo.go:59.2,61.43 3 1 +github.com/ethereum/go-ethereum/crypto/signature_cgo.go:56.37,58.3 1 1 +github.com/ethereum/go-ethereum/crypto/signature_cgo.go:67.65,69.2 1 1 +github.com/ethereum/go-ethereum/crypto/signature_cgo.go:72.64,74.14 2 1 +github.com/ethereum/go-ethereum/crypto/signature_cgo.go:77.2,77.57 1 1 +github.com/ethereum/go-ethereum/crypto/signature_cgo.go:74.14,76.3 1 1 +github.com/ethereum/go-ethereum/crypto/signature_cgo.go:81.53,83.2 1 1 +github.com/ethereum/go-ethereum/crypto/signature_cgo.go:86.28,88.2 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:43.77,59.46 4 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:64.2,64.39 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:70.2,70.86 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:76.2,76.22 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:59.46,61.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:61.8,63.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:64.39,66.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:70.86,75.3 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:82.78,104.12 6 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:112.2,114.9 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:119.2,119.39 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:124.2,124.86 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:128.2,128.22 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:104.12,107.3 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:107.8,107.21 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:107.21,109.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:109.8,111.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:114.9,116.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:116.8,118.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:119.39,121.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:124.86,127.3 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:134.104,138.58 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:138.58,149.47 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:152.3,153.11 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:159.3,159.13 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:163.3,170.11 7 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:176.3,176.36 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:181.3,182.34 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:189.3,189.19 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:149.47,151.4 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:153.11,156.4 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:156.9,158.4 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:159.13,161.4 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:170.11,172.4 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:172.9,174.4 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:176.36,178.4 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:182.34,183.93 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:183.93,187.5 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:60.13,67.2 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:71.28,74.2 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:77.79,79.16 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:82.2,83.16 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:87.2,87.34 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:94.2,94.10 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:101.2,101.48 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:79.16,81.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:83.16,86.3 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:87.34,88.25 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:88.25,92.4 3 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:94.10,95.36 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:95.36,99.4 3 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:105.76,108.11 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:111.2,112.16 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:116.2,121.23 6 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:108.11,110.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:112.16,114.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:127.136,129.62 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:133.2,136.16 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:139.2,139.77 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:145.2,146.16 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:151.2,156.36 4 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:159.2,159.37 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:162.2,162.46 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:165.2,165.30 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:129.62,131.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:136.16,138.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:139.77,143.3 3 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:146.16,150.3 3 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:156.36,158.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:159.37,161.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:162.46,164.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:182.81,183.19 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:186.2,186.70 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:189.2,189.49 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:183.19,185.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:186.70,188.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:195.62,201.9 4 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:211.2,211.48 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:217.2,217.21 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:201.9,202.44 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:208.3,208.29 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:202.44,204.4 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:204.9,207.4 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:211.48,216.3 4 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:231.41,233.2 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:236.71,237.19 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:237.19,240.11 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:244.3,244.16 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:250.3,251.24 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:254.3,264.17 6 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:268.3,271.95 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:272.3,272.17 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:279.3,279.49 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:240.11,242.4 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:244.16,248.4 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:251.24,253.4 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:264.17,267.4 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:271.95,271.135 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:272.17,277.4 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:279.49,283.4 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:288.29,289.19 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:289.19,293.3 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:308.43,310.2 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:313.73,314.19 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:314.19,321.11 5 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:326.3,326.16 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:336.3,337.24 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:340.3,350.17 6 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:354.3,360.98 4 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:361.3,361.17 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:368.3,368.49 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:321.11,324.4 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:326.16,334.4 5 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:337.24,339.4 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:350.17,353.4 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:360.98,360.141 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:361.17,366.4 3 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:368.49,372.4 3 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:379.36,381.2 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:384.31,385.19 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:385.19,389.3 3 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:393.42,396.2 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:399.44,402.2 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:461.65,462.23 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:465.2,465.29 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:469.2,469.54 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:472.2,472.58 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:475.2,482.34 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:485.2,486.15 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:462.23,464.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:465.29,468.3 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:469.54,471.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:472.58,474.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:482.34,484.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:491.56,493.2 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:498.25,505.2 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:510.41,518.2 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:523.50,531.2 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:535.29,542.2 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:546.26,548.2 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:551.37,553.2 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:556.48,557.29 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:565.2,565.12 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:557.29,559.27 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:562.3,563.25 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:559.27,561.4 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:571.50,580.20 5 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:584.2,584.16 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:580.20,583.3 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:593.66,600.35 4 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:618.2,618.16 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:600.35,601.13 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:601.13,604.22 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:604.22,607.5 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:609.8,613.21 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:613.21,616.4 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:623.37,628.2 3 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:635.47,640.26 3 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:645.2,646.9 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:640.26,643.3 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:647.35,647.35 0 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:648.10,648.10 0 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:656.42,658.78 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:661.2,663.9 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:671.2,671.49 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:658.78,660.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:664.40,664.40 0 1 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:665.30,667.33 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:675.73,692.2 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:696.36,698.2 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/mmap_help_other.go:30.47,36.2 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:51.140,53.80 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:64.2,64.26 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:68.2,72.24 4 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:80.2,81.18 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:84.2,84.17 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:88.2,88.26 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:91.2,95.31 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:103.2,103.12 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:127.2,127.12 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:53.80,56.10 3 0 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:61.3,61.13 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:57.42,57.42 0 0 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:58.11,59.126 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:64.26,66.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:72.24,74.17 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:78.3,78.55 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:74.17,77.4 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:81.18,83.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:84.17,86.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:88.26,90.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:95.31,97.33 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:97.33,100.4 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:103.12,105.10 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:125.3,125.14 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:106.15,108.16 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:109.26,111.11 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:116.4,116.16 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:117.24,120.67 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:112.27,112.27 0 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:113.12,114.128 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:120.67,122.5 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:132.115,150.6 5 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:187.2,187.28 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:150.6,151.10 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:152.16,156.16 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:158.11,161.35 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:166.4,167.51 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:182.4,182.11 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:161.35,164.5 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:167.51,174.12 4 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:180.5,180.17 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:175.42,176.93 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:177.18,178.94 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:245.84,265.2 4 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:267.31,268.15 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:275.2,278.6 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:268.15,273.3 4 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:278.6,279.10 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:280.27,285.18 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:287.32,289.29 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:295.35,297.65 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:303.35,306.22 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:308.31,311.33 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:315.4,315.16 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:317.19,319.34 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:325.4,325.29 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:333.24,334.10 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:289.29,291.5 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:291.10,293.5 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:297.65,299.5 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:299.10,301.5 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:311.33,314.5 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:319.34,320.47 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:320.47,322.6 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:325.29,326.38 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:326.38,327.72 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:327.72,329.7 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:346.53,356.2 7 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:360.37,366.32 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:372.2,373.35 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:366.32,368.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:368.8,370.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:373.35,375.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:378.103,382.16 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:386.2,392.16 6 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:382.16,385.3 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:392.16,394.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:394.8,397.3 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:403.109,404.27 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:409.2,410.18 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:415.2,420.17 5 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:427.2,427.22 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:431.2,437.70 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:448.2,449.14 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:404.27,407.3 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:410.18,413.3 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:420.17,421.64 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:421.64,424.4 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:427.22,430.3 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:437.70,438.10 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:439.30,441.15 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:442.11,444.16 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:53.37,55.22 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:58.2,58.29 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:55.22,57.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:64.38,66.65 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:69.2,69.13 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:66.65,68.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:74.39,76.22 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:79.2,79.31 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:76.22,78.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:85.40,87.64 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:90.2,90.13 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:87.64,89.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:100.37,108.9 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:111.2,112.40 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:108.9,109.42 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:112.40,116.3 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:121.36,123.25 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:126.2,127.46 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:130.2,130.13 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:123.25,125.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:127.46,129.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:139.62,144.15 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:154.2,171.12 12 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:182.2,186.70 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:191.2,193.35 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:207.2,207.23 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:144.15,148.30 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:151.3,151.90 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:148.30,150.4 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:171.12,172.7 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:172.7,173.11 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:174.16,175.11 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:176.39,177.186 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:186.70,189.3 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:193.35,194.29 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:194.29,204.4 4 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:207.23,209.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:213.26,214.38 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:214.38,216.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:223.30,225.2 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:228.43,229.32 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:229.32,231.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:236.81,244.33 4 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:247.2,251.35 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:255.2,255.46 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:260.2,260.29 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:263.2,264.12 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:244.33,246.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:251.35,253.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:255.46,258.3 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:260.29,262.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:269.67,274.15 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:285.2,303.31 13 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:333.2,333.13 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:274.15,278.30 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:281.3,281.90 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:278.30,280.4 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:303.31,304.19 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:304.19,314.30 6 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:318.4,319.47 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:314.30,316.5 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:319.47,321.16 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:324.5,326.70 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:321.16,323.6 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:326.70,328.6 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:338.109,352.32 8 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:356.2,358.36 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:366.2,366.35 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:369.2,372.26 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:375.2,375.58 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:352.32,354.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:358.36,360.51 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:363.3,363.21 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:360.51,362.4 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:366.35,368.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:372.26,374.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:381.94,384.40 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:393.2,393.45 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:384.40,388.34 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:391.3,391.14 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:388.34,390.4 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:399.82,400.40 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:404.2,404.63 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:400.40,403.3 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/api.go:41.46,42.30 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/api.go:46.2,50.9 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/api.go:55.2,55.9 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/api.go:42.30,44.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/api.go:51.75,51.75 0 1 +github.com/ethereum/go-ethereum/consensus/ethash/api.go:52.34,53.39 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/api.go:56.24,57.19 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/api.go:58.21,59.26 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/api.go:66.83,67.30 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/api.go:71.2,72.9 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/api.go:82.2,83.19 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/api.go:67.30,69.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/api.go:78.4,78.4 0 1 +github.com/ethereum/go-ethereum/consensus/ethash/api.go:79.34,80.15 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/api.go:92.74,93.30 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/api.go:97.2,98.9 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/api.go:105.2,106.13 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/api.go:93.30,95.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/api.go:99.91,99.91 0 1 +github.com/ethereum/go-ethereum/consensus/ethash/api.go:100.34,101.15 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/api.go:110.38,112.2 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:94.76,96.2 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:100.110,102.43 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:106.2,107.51 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:110.2,111.19 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:115.2,115.83 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:102.43,104.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:107.51,109.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:111.19,113.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:121.143,123.64 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:132.2,133.28 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:138.2,145.31 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:154.2,155.12 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:181.2,181.25 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:123.64,125.37 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:128.3,128.24 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:125.37,127.4 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:133.28,135.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:145.31,146.13 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:146.13,147.30 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:147.30,150.5 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:155.12,162.7 3 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:162.7,163.11 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:164.22,165.33 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:169.25,170.52 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:176.17,177.11 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:165.33,168.6 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:170.52,172.31 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:172.31,174.7 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:184.148,186.16 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:191.2,191.19 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:194.2,194.89 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:186.16,188.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:188.8,188.65 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:188.65,190.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:191.19,193.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:199.91,201.43 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:205.2,205.37 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:208.2,208.30 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:212.2,215.25 3 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:234.2,238.39 3 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:257.2,257.12 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:201.43,203.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:205.37,207.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:208.30,210.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:215.25,217.28 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:220.3,222.55 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:232.3,232.55 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:217.28,218.9 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:222.55,225.23 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:228.4,228.44 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:225.23,226.10 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:228.44,230.5 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:238.39,241.28 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:244.3,247.29 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:250.3,250.83 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:253.3,253.119 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:241.28,243.4 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:247.29,249.4 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:250.83,252.4 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:253.119,255.4 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:263.145,265.61 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:269.2,269.12 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:274.2,274.32 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:278.2,280.42 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:284.2,284.42 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:288.2,288.38 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:292.2,292.45 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:305.2,305.90 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:309.2,309.10 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:315.2,315.78 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:318.2,318.77 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:321.2,321.12 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:265.61,267.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:269.12,270.66 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:270.66,272.4 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:274.32,276.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:280.42,282.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:284.42,286.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:288.38,290.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:292.45,294.28 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:297.3,297.79 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:294.28,296.4 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:297.79,299.4 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:300.8,300.88 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:300.88,303.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:305.90,307.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:309.10,310.65 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:310.65,312.4 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:315.78,317.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:318.77,320.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:327.117,329.2 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:334.93,336.9 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:337.35,338.45 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:339.29,340.45 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:341.34,342.45 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:343.37,344.52 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:345.32,346.47 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:347.32,348.47 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:349.10,350.46 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:367.100,371.58 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:371.58,388.47 7 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:394.3,394.28 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:398.3,403.42 4 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:408.3,409.50 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:413.3,418.32 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:423.3,423.11 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:388.47,390.4 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:390.9,392.4 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:394.28,396.4 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:403.42,405.4 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:409.50,411.4 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:418.32,422.4 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:430.74,450.27 8 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:454.2,459.41 4 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:463.2,468.31 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:473.2,473.10 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:450.27,452.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:459.41,461.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:468.31,472.3 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:479.73,488.71 7 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:493.2,493.44 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:497.2,499.31 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:506.2,506.13 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:488.71,490.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:490.8,492.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:493.44,495.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:499.31,505.3 4 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:517.111,519.80 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:527.2,527.26 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:531.2,531.35 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:535.2,542.13 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:556.2,556.14 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:570.2,570.47 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:573.2,574.51 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:577.2,577.12 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:519.80,521.48 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:524.3,524.13 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:521.48,523.4 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:527.26,529.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:531.35,533.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:542.13,544.26 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:544.26,550.4 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:550.9,553.4 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:556.14,560.40 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:563.3,567.27 2 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:560.40,562.4 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:570.47,572.3 1 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:574.51,576.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:582.94,584.19 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:587.2,588.12 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:584.19,586.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:593.161,597.2 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:601.221,607.2 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:610.73,628.27 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:631.2,633.13 3 1 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:628.27,630.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:645.120,648.39 2 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:651.2,651.44 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:655.2,657.31 3 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:667.2,667.43 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:648.39,650.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:651.44,653.3 1 0 +github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:657.31,666.3 7 0 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b_generic.go:28.80,32.31 3 0 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b_generic.go:43.2,43.21 1 0 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b_generic.go:32.31,34.21 2 0 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b_generic.go:37.3,37.20 1 0 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b_generic.go:41.3,41.36 1 0 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b_generic.go:34.21,36.4 1 0 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b_generic.go:37.20,40.4 2 0 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b_generic.go:46.87,53.35 6 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b_generic.go:172.2,179.18 8 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b_generic.go:53.35,171.3 113 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b_ref.go:10.80,12.2 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:50.51,51.21 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:54.2,54.38 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:59.2,59.33 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:62.2,71.15 4 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:51.21,53.3 1 0 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:54.38,58.3 1 0 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:59.33,61.3 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:84.50,85.16 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:88.2,88.21 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:85.16,86.44 1 0 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:91.27,94.2 2 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:96.23,106.45 8 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:109.2,110.20 2 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:106.45,108.3 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:113.49,114.17 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:119.2,119.22 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:123.2,124.29 2 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:129.2,129.18 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:142.2,142.21 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:155.2,155.30 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:169.2,169.8 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:114.17,117.3 2 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:119.22,121.3 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:124.29,127.3 2 0 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:129.18,131.25 2 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:136.3,139.40 4 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:131.25,135.4 3 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:142.21,153.3 8 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:155.30,156.33 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:159.3,167.30 7 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:156.33,158.4 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:172.46,174.21 2 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:174.21,176.3 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/register.go:15.13,16.33 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/register.go:20.2,20.33 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/register.go:25.2,25.33 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/register.go:30.2,32.53 3 1 +github.com/ethereum/go-ethereum/crypto/blake2b/register.go:16.33,19.3 2 0 +github.com/ethereum/go-ethereum/crypto/blake2b/register.go:20.33,23.3 2 0 +github.com/ethereum/go-ethereum/crypto/blake2b/register.go:25.33,28.3 2 0 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:53.37,57.2 3 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:60.40,66.2 5 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:69.40,75.2 5 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:79.44,79.75 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:83.44,83.78 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:87.44,87.78 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:97.51,97.82 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:103.76,105.11 2 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:108.2,108.44 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:105.11,107.3 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:111.59,112.37 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:115.2,115.21 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:118.2,124.15 4 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:112.37,114.3 1 0 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:115.21,117.3 1 0 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:127.59,132.45 4 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:141.2,144.22 4 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:147.2,151.39 3 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:132.45,134.18 2 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:137.3,138.18 2 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:134.18,136.4 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:144.22,146.3 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:151.39,153.3 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:156.73,160.31 3 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:171.2,171.21 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:160.31,162.21 2 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:165.3,165.20 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:169.3,169.29 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:162.21,164.4 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:165.20,168.4 2 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:190.50,191.19 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:194.2,196.25 3 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:199.2,205.15 6 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:191.19,193.3 1 0 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:196.25,198.3 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:208.50,209.60 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:212.2,212.29 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:215.2,216.25 2 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:219.2,226.12 8 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:209.60,211.3 1 0 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:212.29,214.3 1 0 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:216.25,218.3 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:229.34,229.54 1 0 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:231.29,231.46 1 0 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:233.26,237.18 4 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:237.18,240.3 2 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:243.53,246.18 2 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:258.2,258.42 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:267.2,267.16 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:271.2,271.8 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:246.18,248.21 2 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:252.3,255.20 4 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:248.21,251.4 2 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:258.42,260.19 2 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:263.3,264.13 2 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:260.19,262.4 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:267.16,269.3 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:274.41,278.2 3 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:280.45,286.22 5 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:289.2,294.22 4 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:286.22,288.3 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:294.22,296.3 1 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:299.46,303.2 3 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:305.46,309.2 3 0 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:311.47,314.2 2 1 +github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:316.47,319.2 2 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:44.52,49.25 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:55.2,58.25 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:69.2,71.12 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:49.25,52.3 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:58.25,61.26 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:66.3,67.67 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:61.26,64.4 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:74.51,78.31 3 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:78.31,79.36 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:79.36,80.21 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:80.21,82.5 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:87.50,91.27 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:97.2,98.27 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:104.2,104.12 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:91.27,92.26 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:92.26,94.4 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:98.27,99.31 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:99.31,101.4 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:108.33,112.22 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:112.22,114.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:28.51,29.6 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:29.6,31.33 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:31.33,33.4 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:44.51,46.16 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:50.2,50.42 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:46.16,48.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:53.30,55.2 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:59.45,60.16 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:63.2,64.10 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:60.16,62.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:68.48,69.16 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:72.2,73.10 2 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:69.16,71.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:77.32,78.16 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:81.2,82.10 2 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:78.16,80.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:86.29,87.16 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:90.2,91.10 2 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:87.16,89.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:95.29,96.16 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:99.2,100.10 2 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:96.16,98.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:104.31,108.16 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:112.2,114.22 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:117.2,124.12 6 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:108.16,110.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:114.22,116.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:129.50,132.25 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:136.2,136.16 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:141.2,142.42 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:145.2,145.53 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:149.2,153.36 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:166.2,166.28 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:132.25,134.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:136.16,138.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:138.8,140.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:142.42,144.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:145.53,147.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:153.36,158.3 3 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:158.8,162.23 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:162.23,164.4 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:176.51,178.16 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:182.2,182.42 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:178.16,180.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:185.30,187.2 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:191.45,192.16 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:195.2,196.10 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:192.16,194.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:200.48,201.16 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:204.2,205.10 2 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:201.16,203.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:209.32,210.16 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:213.2,214.10 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:210.16,212.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:218.29,219.16 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:222.2,223.10 2 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:219.16,221.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:227.29,228.16 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:231.2,232.10 2 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:228.16,230.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:236.31,240.16 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:244.2,246.22 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:249.2,260.12 10 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:240.16,242.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:246.22,248.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:265.50,268.25 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:272.2,272.16 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:275.2,276.44 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:279.2,279.55 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:282.2,282.57 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:285.2,285.57 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:289.2,294.38 5 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:307.2,307.28 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:268.25,270.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:272.16,274.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:276.44,278.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:279.55,281.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:282.57,284.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:285.57,287.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:294.38,299.3 3 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:299.8,303.23 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:303.23,305.4 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:317.31,319.2 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:322.42,326.30 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:332.2,332.41 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:326.30,327.49 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:330.3,330.39 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:327.49,328.12 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:338.33,340.2 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:342.30,344.2 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:347.48,348.16 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:351.2,352.10 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:348.16,350.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:356.32,357.16 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:360.2,361.10 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:357.16,359.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:365.29,366.16 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:369.2,370.10 2 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:366.16,368.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:374.29,375.16 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:378.2,379.10 2 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:375.16,377.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:383.29,387.2 3 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:390.31,394.16 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:399.2,427.12 27 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:394.16,397.3 2 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:432.50,436.26 2 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:440.2,440.16 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:444.2,445.46 2 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:448.2,448.57 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:451.2,451.59 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:454.2,454.59 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:457.2,457.59 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:460.2,460.59 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:463.2,463.59 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:466.2,466.59 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:469.2,469.59 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:472.2,472.59 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:475.2,475.60 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:478.2,478.60 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:481.2,494.29 13 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:436.26,438.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:440.16,442.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:445.46,447.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:448.57,450.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:451.59,453.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:454.59,456.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:457.59,459.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:460.59,462.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:463.59,465.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:466.59,468.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:469.59,471.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:472.59,474.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:475.60,477.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:478.60,480.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/constants.go:11.39,14.2 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:23.38,29.2 5 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:31.41,36.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:39.39,41.20 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:45.2,51.19 6 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:41.20,43.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:54.36,59.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:61.40,63.2 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:65.44,66.20 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:70.2,70.20 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:80.2,117.22 23 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:121.2,149.21 19 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:66.20,69.3 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:70.20,73.3 2 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:117.22,120.3 2 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:152.44,183.2 24 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:185.58,198.45 10 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:206.2,206.12 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:198.45,200.26 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:200.26,202.4 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:202.9,204.4 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:209.35,210.23 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:219.2,230.18 9 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:210.23,212.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:212.8,212.30 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:212.30,217.3 4 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:233.41,238.2 4 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:10.33,11.12 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:18.2,19.12 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:11.12,13.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:13.8,16.3 2 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:22.31,24.2 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:26.27,31.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:33.30,40.34 5 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:49.2,50.12 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:40.34,41.39 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:41.39,42.32 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:45.4,45.31 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:42.32,44.5 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:53.35,54.31 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:54.31,55.32 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:55.32,57.4 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:61.42,63.31 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:70.2,70.26 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:78.2,78.55 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:63.31,65.32 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:65.32,67.4 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:70.26,71.19 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:74.3,74.19 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:71.19,73.4 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:74.19,76.4 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:81.28,81.48 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:82.28,82.53 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:17.33,19.2 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:21.38,25.2 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:27.34,31.2 3 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:33.33,37.2 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:39.31,41.2 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:43.30,45.2 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:47.44,51.2 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:53.38,57.2 3 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:60.44,65.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:68.46,73.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:75.46,80.2 4 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:82.41,86.2 3 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:88.41,92.2 3 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:94.41,105.2 8 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:107.53,111.2 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:113.54,117.43 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:126.2,127.10 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:117.43,119.24 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:119.24,121.4 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:121.9,123.4 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:130.41,144.2 10 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:146.41,160.2 9 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:13.33,18.2 4 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:20.32,22.2 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:24.35,28.2 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:30.32,34.2 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:36.31,40.2 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:42.30,45.2 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:47.29,50.2 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:52.41,56.2 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:58.35,62.2 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:64.38,68.2 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:70.38,74.2 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:78.38,92.2 11 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:94.49,98.2 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:101.37,122.2 15 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:124.38,138.2 9 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:140.38,156.2 10 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:3.99,50.2 29 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:52.89,92.2 26 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:94.41,112.2 14 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:122.50,141.45 13 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:178.2,206.12 19 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:141.45,143.31 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:147.3,150.28 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:159.3,160.11 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:143.31,145.4 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:151.10,152.60 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:153.11,154.59 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:155.11,156.12 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:212.44,261.2 36 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:263.54,267.38 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:270.2,270.12 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:267.38,269.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:33.38,37.2 3 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:39.41,44.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:47.39,49.20 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:53.2,57.16 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:60.2,62.24 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:49.20,51.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:57.16,59.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:65.36,70.2 4 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:72.40,74.2 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:76.44,79.20 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:83.2,83.20 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:89.2,109.22 16 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:113.2,132.16 16 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:79.20,82.3 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:83.20,86.3 2 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:109.22,112.3 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:135.44,162.2 21 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:164.58,167.40 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:176.2,176.12 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:167.40,169.25 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:169.25,171.4 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:171.9,173.4 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:179.35,180.17 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:189.2,196.14 8 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:180.17,182.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:182.8,182.25 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:182.25,187.3 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:199.41,204.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:13.32,15.2 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:17.35,22.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:24.32,29.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:31.31,36.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:38.30,40.2 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:42.29,44.2 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:46.35,51.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:53.41,61.2 6 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:64.43,71.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:73.43,78.2 4 0 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:80.38,85.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:87.38,92.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:94.38,122.2 20 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:124.50,129.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:131.46,136.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:139.38,147.2 6 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:149.38,169.2 15 1 +github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:171.38,213.2 22 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:62.54,64.2 1 0 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:67.57,74.2 1 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:83.56,87.2 3 0 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:90.53,93.2 2 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:97.106,99.16 2 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:102.2,107.19 6 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:110.2,111.8 2 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:99.16,101.3 1 0 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:107.19,109.3 1 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:116.45,118.2 1 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:121.97,122.38 1 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:125.2,125.44 1 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:129.2,130.14 2 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:134.2,137.16 4 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:122.38,124.3 1 0 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:125.44,127.3 1 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:130.14,132.3 1 0 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:146.64,149.54 3 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:157.2,157.18 1 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:149.54,156.3 6 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:161.39,163.2 1 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:166.75,174.2 7 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:178.71,184.2 5 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:187.77,191.2 3 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:194.92,196.16 2 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:200.2,201.16 2 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:204.2,209.8 5 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:196.16,198.3 1 0 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:201.16,203.3 1 0 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:214.76,216.16 2 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:220.2,224.8 4 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:216.16,218.3 1 0 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:232.87,234.16 2 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:238.2,239.16 2 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:243.2,244.16 2 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:248.2,252.47 4 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:256.2,263.16 7 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:234.16,236.3 1 0 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:239.16,241.3 1 0 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:244.16,246.3 1 0 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:252.47,254.3 1 0 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:267.72,268.17 1 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:271.2,272.16 2 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:276.2,285.14 3 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:295.2,301.16 6 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:305.2,306.16 2 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:309.2,312.50 3 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:316.2,316.47 1 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:268.17,270.3 1 0 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:272.16,274.3 1 0 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:286.15,288.33 2 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:291.10,292.34 1 1 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:288.33,290.4 1 0 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:301.16,303.3 1 0 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:306.16,308.3 1 0 +github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:312.50,314.3 1 1 +github.com/ethereum/go-ethereum/crypto/ecies/params.go:123.67,125.2 1 0 +github.com/ethereum/go-ethereum/crypto/ecies/params.go:129.66,131.2 1 1 +github.com/ethereum/go-ethereum/crypto/ecies/params.go:133.57,135.19 2 1 +github.com/ethereum/go-ethereum/crypto/ecies/params.go:140.2,140.31 1 1 +github.com/ethereum/go-ethereum/crypto/ecies/params.go:143.2,143.20 1 1 +github.com/ethereum/go-ethereum/crypto/ecies/params.go:135.19,136.57 1 0 +github.com/ethereum/go-ethereum/crypto/ecies/params.go:136.57,138.4 1 0 +github.com/ethereum/go-ethereum/crypto/ecies/params.go:140.31,142.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:42.39,45.15 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:48.2,51.25 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:58.2,58.11 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:45.15,47.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:51.25,57.3 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:61.38,63.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:65.48,66.19 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:69.2,70.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:73.2,73.32 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:66.19,68.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:70.16,72.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:76.32,84.2 7 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:86.30,89.25 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:100.2,100.12 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:89.25,99.3 9 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:103.30,105.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:107.35,108.26 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:111.2,111.17 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:108.26,110.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:114.26,122.2 7 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:124.25,126.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:128.46,130.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:133.2,133.27 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:130.16,132.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:136.30,138.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:140.28,143.2 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:145.29,148.2 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:150.29,152.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:154.28,156.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:158.32,159.26 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:166.2,166.10 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:159.26,160.21 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:160.21,162.4 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:162.9,162.28 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:162.28,164.4 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:169.35,171.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:173.26,177.2 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:179.30,186.2 6 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:188.29,197.2 8 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:199.27,203.2 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:205.26,209.2 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:211.33,215.2 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:217.47,219.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:222.2,223.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:226.2,226.28 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:219.16,221.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:223.16,225.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:229.28,231.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:233.29,235.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:237.35,239.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:241.27,243.20 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:247.2,248.20 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:243.20,246.3 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:251.27,256.2 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:258.26,263.2 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:265.33,270.2 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:272.47,274.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:277.2,278.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:281.2,282.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:285.2,285.33 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:274.16,276.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:278.16,280.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:282.16,284.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:288.28,290.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:292.29,294.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:296.35,298.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:300.29,304.2 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:306.28,310.2 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:312.36,316.2 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:318.49,320.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:323.2,324.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:327.2,327.29 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:320.16,322.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:324.16,326.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:330.29,332.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:334.30,336.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:338.37,340.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:32.27,34.30 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:37.2,37.19 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:34.30,36.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:40.20,43.2 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:45.50,46.19 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:49.2,50.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:53.2,54.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:57.2,57.28 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:46.19,48.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:50.16,52.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:54.16,56.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:60.38,65.2 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:67.26,69.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:71.27,73.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:75.26,77.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:79.33,82.2 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:84.36,87.2 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:89.34,92.2 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:94.33,97.2 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:99.36,102.2 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:104.34,107.2 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:109.33,112.2 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:114.36,117.2 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:119.30,122.2 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:124.33,134.2 9 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:136.36,146.2 9 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:148.33,155.2 6 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:157.36,164.2 6 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:166.42,171.2 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:173.33,181.2 7 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:183.34,192.2 8 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:194.41,197.2 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:199.42,201.39 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:207.2,207.10 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:201.39,203.20 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:203.20,205.4 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:210.51,212.18 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:216.2,216.17 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:212.18,215.3 2 0 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:219.54,220.18 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:220.18,223.3 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:226.36,233.31 7 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:238.2,242.23 5 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:233.31,237.3 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:245.50,252.2 5 1 +github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:21.33,24.25 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:27.2,36.8 10 1 +github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:39.2,52.8 14 1 +github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:59.2,61.26 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:64.2,64.13 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:24.25,26.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:36.8,38.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:52.8,55.3 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:55.8,58.3 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:61.26,63.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:69.44,70.14 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:73.2,75.25 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:78.2,86.8 9 1 +github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:89.2,102.8 14 1 +github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:109.2,111.26 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:114.2,114.13 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:70.14,72.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:75.25,77.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:86.8,88.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:102.8,105.3 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:105.8,108.3 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:111.26,113.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:35.29,38.31 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:41.2,41.31 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:44.2,44.34 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:38.31,40.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:41.31,43.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:47.30,49.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:52.2,52.22 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:49.16,51.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:55.27,57.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:59.52,60.20 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:63.2,65.16 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:68.2,69.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:72.2,72.29 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:60.20,62.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:65.16,67.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:69.16,71.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:75.40,81.2 5 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:83.28,85.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:87.29,89.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:91.28,93.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:95.35,100.2 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:102.35,106.2 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:108.35,113.2 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:115.32,119.2 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:121.38,125.2 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:127.35,138.2 10 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:140.45,164.2 23 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:166.35,178.2 11 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:180.38,192.2 11 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:194.47,204.2 9 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:206.36,216.2 9 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:218.57,229.2 10 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:231.44,233.39 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:239.2,239.10 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:233.39,235.20 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:235.20,237.4 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:242.54,244.39 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:250.2,250.10 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:244.39,246.20 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:246.20,248.4 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:253.53,257.15 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:258.9,259.9 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:260.9,261.24 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:262.10,263.62 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:267.56,271.15 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:272.9,273.9 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:274.9,275.24 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:276.10,277.62 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:33.27,35.30 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:38.2,38.19 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:35.30,37.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:41.26,43.14 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:46.2,46.19 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:43.14,45.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:49.49,50.18 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:53.2,55.16 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:58.2,59.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:62.2,63.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:66.2,66.33 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:50.18,52.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:55.16,57.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:59.16,61.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:63.16,65.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:69.38,76.2 6 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:78.26,80.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:82.27,84.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:86.26,88.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:90.33,95.2 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:97.36,102.2 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:104.33,109.2 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:111.36,116.2 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:118.33,123.2 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:125.36,130.2 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:132.30,137.2 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:139.33,165.2 25 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:167.36,193.2 25 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:195.33,214.2 18 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:216.50,234.2 17 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:236.47,254.2 17 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:256.42,262.2 5 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:264.42,270.2 5 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:272.49,277.2 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:279.42,281.39 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:287.2,287.10 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:281.39,283.20 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:283.20,285.4 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:290.34,313.2 22 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:315.51,320.19 5 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:321.9,322.9 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:323.9,326.24 3 0 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:327.10,329.53 2 0 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:333.54,339.19 6 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:340.9,341.9 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:342.9,346.24 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:347.10,349.52 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:32.27,34.2 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:37.22,40.2 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:43.26,45.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:48.31,50.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:53.18,56.2 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:59.27,61.2 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:65.47,67.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:70.2,70.19 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:73.2,73.15 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:67.16,69.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:70.19,72.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:77.35,79.2 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:82.33,86.2 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:89.23,91.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:94.30,96.2 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:99.30,101.2 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:104.30,106.2 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:109.30,111.2 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:114.39,116.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:119.31,121.2 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/isogeny.go:20.29,29.35 8 1 +github.com/ethereum/go-ethereum/crypto/bls12381/isogeny.go:39.2,45.13 7 1 +github.com/ethereum/go-ethereum/crypto/bls12381/isogeny.go:29.35,38.3 8 1 +github.com/ethereum/go-ethereum/crypto/bls12381/isogeny.go:49.38,50.14 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/isogeny.go:54.2,60.35 7 1 +github.com/ethereum/go-ethereum/crypto/bls12381/isogeny.go:70.2,76.13 7 1 +github.com/ethereum/go-ethereum/crypto/bls12381/isogeny.go:50.14,52.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/isogeny.go:60.35,69.3 8 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:24.40,26.19 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:29.2,30.19 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:33.2,34.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:26.19,28.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:30.19,32.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:37.40,39.19 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:42.2,43.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:39.19,41.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:46.41,48.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:51.2,51.19 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:54.2,55.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:48.16,50.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:51.19,53.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:58.28,62.2 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:64.28,68.2 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:70.33,74.2 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:76.23,78.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:80.25,82.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:84.32,86.35 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:92.2,92.10 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:86.35,88.20 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:88.20,90.4 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:95.26,96.16 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:100.2,108.27 8 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:133.2,133.12 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:138.2,138.28 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:143.2,143.36 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:146.2,150.29 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:153.2,153.12 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:96.16,99.3 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:108.27,109.17 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:113.3,113.17 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:130.3,130.9 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:109.17,111.9 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:113.17,116.4 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:116.9,116.24 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:116.24,119.4 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:119.9,119.27 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:119.27,124.4 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:124.9,129.4 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:133.12,136.3 2 0 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:138.28,141.3 2 0 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:143.36,145.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:150.29,152.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:156.26,161.2 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:163.43,167.2 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:31.45,36.2 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:39.35,45.2 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:58.18,60.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:62.24,63.14 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:66.2,67.18 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:63.14,65.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:70.25,72.25 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:75.2,75.18 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:72.25,74.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:79.27,81.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:83.62,85.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:88.2,89.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:92.2,93.37 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:85.16,87.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:89.16,91.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:101.53,102.20 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:105.2,106.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:109.2,110.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:114.2,114.32 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:117.2,119.21 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:122.2,122.15 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:102.20,104.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:106.16,108.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:110.16,112.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:114.32,116.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:119.21,121.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:126.55,127.20 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:130.2,132.16 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:135.2,136.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:139.2,140.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:143.2,144.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:147.2,151.32 5 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:127.20,129.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:132.16,134.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:136.16,138.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:140.16,142.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:144.16,146.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:157.41,159.17 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:162.2,165.12 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:159.17,161.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:169.45,180.2 7 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:183.29,185.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:188.30,190.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:193.29,196.2 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:199.38,201.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:204.42,205.18 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:208.2,208.18 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:211.2,220.45 10 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:205.18,207.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:208.18,210.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:224.49,228.2 3 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:231.41,232.17 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:235.2,244.25 10 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:232.17,234.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:248.40,250.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:253.42,254.17 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:257.2,257.20 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:266.2,266.10 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:254.17,256.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:257.20,265.3 7 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:270.47,272.18 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:275.2,275.18 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:278.2,287.22 10 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:293.2,314.10 22 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:272.18,274.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:275.18,277.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:287.22,288.23 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:291.3,291.18 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:288.23,290.4 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:318.45,320.17 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:323.2,346.10 24 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:320.17,322.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:350.42,355.2 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:358.45,363.2 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:366.60,370.25 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:376.2,376.17 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:370.25,371.20 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:374.3,374.17 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:371.20,373.4 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:380.40,382.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:388.91,389.32 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:392.2,393.23 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:396.2,400.34 5 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:403.2,406.21 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:430.2,431.41 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:437.2,437.24 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:389.32,391.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:393.23,395.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:400.34,402.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:406.21,409.36 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:412.3,412.36 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:420.3,421.41 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:425.3,428.11 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:409.36,411.4 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:412.36,415.18 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:418.4,418.52 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:415.18,417.5 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:421.41,424.4 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:431.41,432.34 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:435.3,435.30 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:432.34,434.4 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:444.54,447.16 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:450.2,455.25 6 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:447.16,449.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:24.45,26.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:39.33,52.2 6 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:59.40,61.26 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:64.2,65.35 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:61.26,63.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:69.60,71.18 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:75.2,75.10 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:71.18,74.3 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:79.63,83.2 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:86.34,89.2 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:91.38,93.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:95.33,98.2 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:100.58,132.2 30 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:134.61,163.2 27 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:165.73,167.29 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:170.2,172.39 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:167.29,169.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:172.39,174.20 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:179.3,179.6 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:174.20,178.4 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:183.38,186.34 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:189.2,193.48 5 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:212.2,212.22 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:186.34,188.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:193.48,194.14 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:197.3,197.38 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:202.3,202.20 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:210.3,210.6 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:194.14,196.4 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:197.38,201.4 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:202.20,204.39 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:204.39,208.5 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:215.34,219.2 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:221.36,255.2 31 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:257.36,259.23 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:262.2,264.10 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:259.23,261.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:268.31,270.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:273.30,277.2 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:280.27,282.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:43.23,55.361 8 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:55.361,63.3 7 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:66.26,78.361 8 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:78.361,86.3 7 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:89.24,97.2 7 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:99.27,107.2 7 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:109.23,121.361 8 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:121.361,129.3 7 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:132.26,144.361 8 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:144.361,152.3 7 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:155.24,164.2 7 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:166.23,174.12 8 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:174.12,182.3 7 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:185.26,193.12 8 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:193.12,201.3 7 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:204.27,212.2 7 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:214.24,215.16 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:219.2,225.57 7 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:215.16,218.3 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:228.23,231.2 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:336.2,336.361 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:231.2,247.3 14 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:248.2,264.3 14 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:265.2,281.3 14 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:282.2,298.3 14 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:299.2,315.3 14 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:316.2,332.3 14 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:336.361,344.3 7 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:347.23,352.2 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:440.2,440.361 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:352.2,368.3 14 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:369.2,384.3 13 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:385.2,399.3 12 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:400.2,413.3 11 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:414.2,425.3 9 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:426.2,436.3 8 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:440.361,448.3 7 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:468.58,475.2 6 0 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:478.40,484.2 5 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:487.51,493.2 5 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:496.54,504.2 7 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:507.60,520.2 10 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:522.57,532.2 8 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:534.58,546.2 9 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:548.55,557.2 7 1 +github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:559.57,567.2 7 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:30.45,35.2 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:38.35,43.2 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:55.18,58.2 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:60.25,62.25 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:65.2,65.18 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:62.25,64.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:69.27,71.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:73.62,75.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:78.2,79.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:82.2,83.37 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:75.16,77.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:79.16,81.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:91.53,92.19 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:95.2,96.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:99.2,100.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:104.2,104.32 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:107.2,109.21 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:112.2,112.15 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:92.19,94.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:96.16,98.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:100.16,102.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:104.32,106.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:109.21,111.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:116.55,117.20 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:120.2,123.16 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:127.2,128.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:131.2,133.32 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:117.20,119.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:123.16,125.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:128.16,130.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:139.41,141.17 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:144.2,147.12 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:141.17,143.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:151.45,159.2 5 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:162.29,164.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:167.30,169.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:172.29,175.2 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:178.38,180.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:183.42,184.18 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:187.2,187.18 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:190.2,199.45 10 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:184.18,186.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:187.18,189.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:203.49,207.2 3 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:210.41,211.17 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:214.2,223.25 10 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:211.17,213.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:227.40,229.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:232.42,233.17 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:236.2,236.20 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:245.2,245.10 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:233.17,235.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:236.20,244.3 7 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:249.47,251.18 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:254.2,254.18 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:257.2,266.22 10 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:272.2,293.10 22 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:251.18,253.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:254.18,256.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:266.22,267.23 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:270.3,270.18 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:267.23,269.4 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:297.45,299.17 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:302.2,325.10 24 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:299.17,301.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:329.42,334.2 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:337.45,342.2 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:345.60,349.25 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:355.2,355.17 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:349.25,350.20 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:353.3,353.17 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:350.20,352.4 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:359.40,361.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:367.91,368.32 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:371.2,372.23 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:375.2,379.34 5 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:382.2,385.21 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:409.2,410.41 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:416.2,416.24 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:368.32,370.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:372.23,374.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:379.34,381.3 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:385.21,388.36 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:391.3,391.36 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:399.3,400.41 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:404.3,407.11 4 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:388.36,390.4 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:391.36,394.18 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:397.4,397.52 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:394.18,396.5 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:400.41,403.4 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:410.41,411.34 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:414.3,414.30 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:411.34,413.4 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:423.54,425.16 2 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:428.2,433.25 6 1 +github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:425.16,427.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/utils.go:26.38,28.2 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/utils.go:32.52,33.19 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/utils.go:37.2,37.26 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/utils.go:42.2,44.17 3 1 +github.com/ethereum/go-ethereum/crypto/bls12381/utils.go:33.19,35.3 1 0 +github.com/ethereum/go-ethereum/crypto/bls12381/utils.go:37.26,38.26 1 1 +github.com/ethereum/go-ethereum/crypto/bls12381/utils.go:38.26,40.4 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:43.46,50.2 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:52.38,54.2 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:56.40,61.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:63.41,68.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:71.39,80.42 8 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:83.2,85.24 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:80.42,82.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:88.36,90.2 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:92.40,94.2 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:96.58,99.20 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:103.2,103.20 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:109.2,129.22 16 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:133.2,167.14 30 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:99.20,102.3 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:103.20,106.3 2 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:129.22,132.3 2 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:170.58,206.2 29 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:208.84,213.40 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:222.2,225.10 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:213.40,215.25 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:215.25,217.4 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:217.9,219.4 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:230.59,231.17 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:234.2,234.20 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:241.2,254.10 12 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:231.17,233.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:234.20,240.3 5 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:257.60,263.2 5 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:41.51,45.6 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:55.2,55.42 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:45.6,47.17 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:50.3,50.19 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:47.17,49.4 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:50.19,51.9 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:58.30,60.2 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:63.69,65.2 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:69.45,70.16 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:73.2,74.10 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:70.16,72.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:78.48,79.16 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:82.2,83.10 2 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:79.16,81.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:88.32,89.16 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:92.2,93.10 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:89.16,91.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:97.29,98.16 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:101.2,102.10 2 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:98.16,100.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:106.31,110.22 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:114.2,123.12 7 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:110.22,112.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:128.50,131.26 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:135.2,135.16 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:138.2,139.23 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:142.2,143.23 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:147.2,147.44 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:160.2,160.28 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:131.26,133.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:135.16,137.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:139.23,141.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:143.23,145.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:147.44,152.3 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:152.8,156.23 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:156.23,158.4 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:170.51,174.6 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:184.2,184.42 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:174.6,176.17 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:179.3,179.19 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:176.17,178.4 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:179.19,180.9 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:187.30,189.2 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:193.57,195.2 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:199.45,200.16 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:203.2,204.10 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:200.16,202.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:208.48,209.16 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:212.2,213.10 2 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:209.16,211.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:218.32,219.16 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:222.2,223.10 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:219.16,221.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:227.31,231.22 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:235.2,248.12 11 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:231.22,233.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:253.50,256.26 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:260.2,260.16 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:263.2,264.25 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:267.2,268.25 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:271.2,272.25 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:275.2,276.25 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:280.2,283.23 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:296.2,296.28 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:256.26,258.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:260.16,262.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:264.25,266.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:268.25,270.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:272.25,274.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:276.25,278.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:283.23,288.3 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:288.8,292.23 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:292.23,294.4 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:305.30,307.2 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:310.48,311.16 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:314.2,315.10 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:311.16,313.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:319.32,320.16 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:323.2,324.10 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:320.16,322.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:328.29,329.16 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:332.2,333.10 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:329.16,331.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:337.31,371.2 28 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:375.46,379.27 2 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:383.2,383.16 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:387.2,400.16 13 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:379.27,381.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:383.16,385.3 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:404.31,406.2 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:409.42,415.30 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:421.2,424.20 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:415.30,416.49 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:419.3,419.51 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:416.49,417.12 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:434.36,435.17 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:439.2,441.12 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:445.2,447.11 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:435.17,437.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:441.12,443.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:450.38,451.17 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:454.2,455.14 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:451.17,453.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:458.33,460.2 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/constants.go:11.39,14.2 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:28.46,35.2 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:37.38,40.2 2 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:42.40,47.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:49.41,54.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:57.39,63.37 6 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:66.2,66.23 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:63.37,65.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:69.36,71.2 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:73.40,75.2 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:77.58,78.20 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:82.2,82.20 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:92.2,131.22 26 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:135.2,180.14 36 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:78.20,81.3 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:82.20,85.3 2 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:131.22,134.3 2 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:183.58,226.2 36 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:228.84,233.40 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:242.2,245.10 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:233.40,235.25 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:235.25,237.4 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:237.9,239.4 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:250.59,251.59 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:254.2,254.20 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:261.2,278.10 16 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:251.59,253.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:254.20,260.3 5 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:281.46,286.2 4 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:21.36,23.2 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:25.33,27.2 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:29.35,32.2 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:34.38,38.2 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:40.34,44.2 3 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:46.33,50.2 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:52.27,55.2 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:57.31,60.2 2 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:62.30,65.2 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:67.44,71.2 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:73.43,77.2 3 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:80.58,85.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:88.60,93.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:95.41,99.2 3 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:101.41,105.2 3 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:107.55,125.2 15 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:127.67,131.2 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:133.68,138.43 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:147.2,152.10 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:138.43,140.24 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:140.24,142.4 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:142.9,144.4 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:155.55,178.2 17 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:180.55,200.2 13 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:21.34,23.2 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:25.32,29.2 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:31.34,34.2 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:36.35,40.2 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:42.32,46.2 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:48.31,52.2 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:54.26,55.39 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:58.2,58.39 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:55.39,57.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:58.39,60.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:63.30,65.2 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:67.29,68.21 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:71.2,72.41 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:68.21,70.3 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:75.41,79.2 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:81.40,85.2 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:87.38,91.2 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:93.38,97.2 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:99.38,103.2 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:105.65,110.43 4 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:119.2,124.10 4 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:110.43,112.24 2 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:112.24,114.4 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:114.9,116.4 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:129.52,146.2 13 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:148.53,152.2 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:155.51,172.2 11 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:174.52,193.2 12 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:195.52,219.2 16 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:221.32,223.2 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:225.32,227.2 1 0 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:21.34,23.2 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:25.32,27.2 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:29.34,33.2 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:35.35,40.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:42.32,47.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:49.31,54.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:56.26,60.2 3 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:62.30,64.2 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:66.29,68.2 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:70.40,75.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:77.55,85.2 6 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:88.43,95.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:97.38,102.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:104.38,109.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:111.38,116.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:118.52,172.2 43 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:174.64,179.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:181.50,186.2 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:189.46,199.2 9 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:201.52,239.2 31 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:241.52,296.2 33 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:7.113,83.2 56 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:85.103,152.2 51 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:154.55,182.2 23 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:192.64,213.45 15 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:258.2,302.12 34 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:213.45,215.31 2 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:219.3,226.28 7 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:235.3,240.11 6 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:215.31,217.4 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:227.10,228.66 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:229.11,230.65 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:231.11,232.12 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:308.58,386.2 64 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:388.68,393.38 4 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:396.2,396.12 1 1 +github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:393.38,395.3 1 1 +github.com/ethereum/go-ethereum/crypto/signify/signify.go:38.98,40.16 2 1 +github.com/ethereum/go-ethereum/crypto/signify/signify.go:43.2,43.25 1 1 +github.com/ethereum/go-ethereum/crypto/signify/signify.go:46.2,46.33 1 1 +github.com/ethereum/go-ethereum/crypto/signify/signify.go:49.2,49.55 1 1 +github.com/ethereum/go-ethereum/crypto/signify/signify.go:40.16,42.3 1 0 +github.com/ethereum/go-ethereum/crypto/signify/signify.go:43.25,45.3 1 0 +github.com/ethereum/go-ethereum/crypto/signify/signify.go:46.33,48.3 1 0 +github.com/ethereum/go-ethereum/crypto/signify/signify.go:56.110,58.52 1 1 +github.com/ethereum/go-ethereum/crypto/signify/signify.go:61.2,61.50 1 1 +github.com/ethereum/go-ethereum/crypto/signify/signify.go:64.2,64.28 1 1 +github.com/ethereum/go-ethereum/crypto/signify/signify.go:67.2,67.26 1 1 +github.com/ethereum/go-ethereum/crypto/signify/signify.go:71.2,72.16 2 1 +github.com/ethereum/go-ethereum/crypto/signify/signify.go:75.2,76.16 2 1 +github.com/ethereum/go-ethereum/crypto/signify/signify.go:81.2,99.52 15 1 +github.com/ethereum/go-ethereum/crypto/signify/signify.go:58.52,60.3 1 0 +github.com/ethereum/go-ethereum/crypto/signify/signify.go:61.50,63.3 1 1 +github.com/ethereum/go-ethereum/crypto/signify/signify.go:64.28,66.3 1 1 +github.com/ethereum/go-ethereum/crypto/signify/signify.go:67.26,69.3 1 1 +github.com/ethereum/go-ethereum/crypto/signify/signify.go:72.16,74.3 1 0 +github.com/ethereum/go-ethereum/crypto/signify/signify.go:76.16,78.3 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/queue.go:53.38,57.2 1 1 +github.com/ethereum/go-ethereum/eth/catalyst/queue.go:60.80,69.2 4 0 +github.com/ethereum/go-ethereum/eth/catalyst/queue.go:72.74,76.34 3 0 +github.com/ethereum/go-ethereum/eth/catalyst/queue.go:84.2,84.12 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/queue.go:76.34,77.18 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/queue.go:80.3,80.20 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/queue.go:77.18,79.4 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/queue.go:80.20,82.4 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/queue.go:103.36,107.2 1 1 +github.com/ethereum/go-ethereum/eth/catalyst/queue.go:110.65,119.2 4 0 +github.com/ethereum/go-ethereum/eth/catalyst/queue.go:122.59,126.33 3 0 +github.com/ethereum/go-ethereum/eth/catalyst/queue.go:134.2,134.12 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/queue.go:126.33,127.18 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/queue.go:130.3,130.24 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/queue.go:127.18,129.4 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/queue.go:130.24,132.4 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:39.62,58.2 3 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:68.55,69.62 1 1 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:72.2,76.3 1 1 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:69.62,70.59 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:89.161,91.45 2 1 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:98.2,99.18 2 1 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:124.2,124.63 1 1 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:140.2,140.91 1 1 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:150.2,154.50 2 1 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:169.2,169.45 1 1 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:183.2,183.30 1 1 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:198.2,198.46 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:91.45,94.3 2 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:99.18,105.20 2 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:112.3,112.55 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:116.3,117.85 2 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:120.3,120.36 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:105.20,108.4 2 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:112.55,115.4 2 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:117.85,119.4 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:124.63,130.57 2 1 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:134.3,134.69 1 1 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:130.57,133.4 2 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:134.69,137.4 2 1 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:140.91,142.66 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:142.66,144.4 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:145.8,149.3 1 1 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:154.50,155.57 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:159.3,160.24 2 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:155.57,157.4 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:160.24,163.4 2 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:163.9,163.109 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:163.109,166.4 2 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:169.45,171.23 2 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:175.3,175.96 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:171.23,174.4 2 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:175.96,178.4 2 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:183.30,188.17 4 1 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:192.3,196.47 4 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:188.17,191.4 2 1 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:203.98,209.2 2 1 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:213.144,214.43 1 1 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:217.2,218.58 2 1 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:223.2,223.49 1 1 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:233.2,233.93 1 1 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:214.43,216.3 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:218.58,221.3 2 1 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:223.49,224.122 1 1 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:231.3,231.56 1 1 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:224.122,230.4 1 1 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:237.101,240.17 3 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:243.2,243.18 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:240.17,242.3 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:247.103,250.16 3 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:256.2,256.82 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:267.2,268.19 2 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:289.2,293.21 2 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:297.2,297.35 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:301.2,301.85 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:306.2,307.78 2 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:314.2,314.54 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:318.2,319.82 2 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:250.16,253.3 2 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:256.82,260.3 3 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:268.19,276.95 2 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:284.3,285.62 2 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:276.95,279.4 2 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:293.21,296.3 2 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:297.35,300.3 2 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:301.85,305.3 3 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:307.78,310.3 2 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:314.54,317.3 2 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:323.103,333.2 8 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:336.68,340.2 3 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:344.134,347.16 3 1 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:350.2,350.49 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:347.16,349.3 1 1 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:354.75,355.25 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:358.2,358.12 1 0 +github.com/ethereum/go-ethereum/eth/catalyst/api.go:355.25,357.3 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:50.44,52.34 2 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:52.34,53.43 1 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:53.43,57.4 3 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:82.58,91.2 1 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:94.57,106.2 7 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:111.86,112.19 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:116.2,124.8 8 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:112.19,114.3 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:128.77,131.38 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:134.2,134.38 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:137.2,138.40 2 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:141.2,141.80 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:131.38,133.3 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:134.38,136.3 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:138.40,140.3 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:146.103,158.20 10 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:161.2,172.20 11 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:175.2,196.21 19 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:199.2,200.21 2 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:203.2,206.19 3 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:158.20,160.3 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:172.20,174.3 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:196.21,198.3 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:200.21,202.3 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:210.72,213.2 2 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:217.91,247.2 21 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:251.73,253.2 1 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:257.57,264.2 6 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:268.66,270.30 2 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:273.2,273.18 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:276.2,278.8 3 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:270.30,272.3 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:273.18,275.3 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:283.13,293.2 6 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:296.23,298.2 1 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/panic_cb.go:17.64,18.47 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/panic_cb.go:22.62,23.45 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/scalar_mult_cgo.go:24.91,27.22 1 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/scalar_mult_cgo.go:31.2,47.23 12 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/scalar_mult_cgo.go:50.2,50.24 1 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/scalar_mult_cgo.go:53.2,53.14 1 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/scalar_mult_cgo.go:56.2,56.13 1 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/scalar_mult_cgo.go:27.22,28.43 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/scalar_mult_cgo.go:47.23,49.3 1 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/scalar_mult_cgo.go:50.24,52.3 1 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/scalar_mult_cgo.go:53.14,55.3 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:47.13,52.2 3 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:70.54,71.20 1 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:74.2,74.23 1 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:77.2,78.60 2 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:82.2,87.103 2 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:91.2,98.17 4 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:71.20,73.3 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:74.23,76.3 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:78.60,80.3 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:87.103,89.3 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:105.60,106.20 1 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:109.2,109.44 1 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:113.2,118.107 2 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:121.2,121.20 1 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:106.20,108.3 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:109.44,111.3 1 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:118.107,120.3 1 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:126.58,127.64 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:130.2,133.101 4 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:127.64,129.3 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:138.54,139.23 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:142.2,149.91 2 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:152.2,152.74 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:139.23,141.3 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:149.91,151.3 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:156.43,165.91 2 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:168.2,168.12 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:165.91,166.30 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:171.39,172.20 1 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:175.2,175.18 1 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:178.2,178.12 1 1 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:172.20,174.3 1 0 +github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:175.18,177.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:21.44,27.2 1 0 +github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:36.192,43.37 1 1 +github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:49.2,54.16 4 1 +github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:58.2,58.23 1 1 +github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:62.2,66.86 3 1 +github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:70.2,70.37 1 1 +github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:43.37,46.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:54.16,56.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:58.23,60.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:66.86,68.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:73.83,80.37 4 1 +github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:80.37,82.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:87.67,92.2 3 0 +github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:95.46,101.2 4 0 +github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:104.75,105.46 1 1 +github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:105.46,110.3 3 1 +github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:114.48,115.32 1 1 +github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:115.32,120.3 3 1 +github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:124.32,126.2 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:75.37,75.54 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:76.42,78.2 1 0 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:79.47,81.2 1 0 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:86.74,88.71 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:91.2,91.65 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:96.2,97.27 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:101.2,101.82 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:106.2,107.39 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:115.2,116.45 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:120.2,125.32 4 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:88.71,90.3 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:91.65,93.3 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:93.8,95.3 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:97.27,100.3 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:101.82,104.3 2 0 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:107.39,109.36 1 0 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:112.3,112.9 1 0 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:109.36,111.4 1 0 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:116.45,119.3 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:125.32,127.81 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:131.3,131.48 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:127.81,130.4 2 0 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:140.154,147.41 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:160.2,160.25 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:168.2,168.40 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:174.2,174.43 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:177.2,177.70 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:147.41,148.100 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:148.100,151.4 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:151.9,155.19 3 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:155.19,157.5 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:160.25,162.97 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:162.97,164.4 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:164.9,166.4 1 0 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:168.40,170.3 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:170.8,170.57 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:170.57,172.3 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:174.43,176.3 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:193.188,194.16 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:197.2,198.33 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:201.2,201.28 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:205.2,205.38 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:213.2,219.31 3 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:222.2,229.38 4 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:232.2,232.54 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:279.2,285.29 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:300.2,300.23 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:303.2,303.33 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:308.2,309.80 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:194.16,196.3 1 0 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:198.33,200.3 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:201.28,204.3 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:205.38,206.23 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:209.3,209.42 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:206.23,208.4 1 0 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:209.42,211.4 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:219.31,221.3 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:229.38,231.3 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:232.54,233.13 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:233.13,234.8 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:234.8,237.32 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:241.5,242.71 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:237.32,239.6 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:242.71,247.6 4 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:247.11,253.56 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:253.56,256.7 2 0 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:256.12,257.38 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:266.7,266.48 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:273.7,273.22 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:257.38,259.48 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:259.48,262.9 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:263.13,265.8 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:266.48,268.27 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:268.27,270.9 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:285.29,287.22 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:290.3,291.34 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:287.22,289.4 1 0 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:291.34,293.4 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:293.9,295.24 1 0 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:295.24,297.5 1 0 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:300.23,302.3 1 0 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:303.33,305.3 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:305.8,307.3 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:80.62,82.16 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:86.2,87.17 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:94.2,95.46 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:99.2,100.52 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:106.2,107.26 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:111.2,112.25 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:117.2,129.3 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:82.16,85.3 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:87.17,90.3 2 0 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:90.8,90.26 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:90.26,93.3 2 0 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:95.46,98.3 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:100.52,103.3 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:103.8,103.36 1 0 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:103.36,105.3 1 0 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:107.26,110.3 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:112.25,115.3 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:132.38,135.12 3 0 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:135.12,137.29 2 0 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:137.29,138.41 1 0 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:141.4,141.30 1 0 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:138.41,140.5 1 0 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:152.76,160.26 6 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:163.2,170.26 6 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:173.2,180.46 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:186.2,186.14 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:211.2,212.22 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:216.2,216.36 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:219.2,224.37 5 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:160.26,162.3 1 0 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:170.26,172.3 1 0 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:180.46,185.3 4 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:186.14,188.21 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:192.3,197.27 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:203.3,203.86 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:209.3,209.43 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:188.21,191.4 2 0 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:197.27,199.4 1 0 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:203.86,208.4 4 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:212.22,215.3 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:216.36,218.3 1 0 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:237.70,242.2 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:244.30,244.51 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:245.35,247.2 1 0 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:248.40,254.2 3 0 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:260.171,262.18 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:270.2,276.32 6 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:289.2,289.9 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:262.18,263.10 1 0 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:267.3,267.9 1 0 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:264.36,264.36 0 0 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:265.15,265.15 0 0 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:276.32,278.55 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:281.3,282.47 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:278.55,279.12 1 0 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:282.47,284.28 2 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:284.28,285.10 1 0 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:290.38,290.38 0 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:291.14,291.14 0 0 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:297.42,297.59 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:298.42,298.71 1 1 +github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:299.42,299.69 1 1 +github.com/ethereum/go-ethereum/console/bridge.go:45.93,51.2 1 1 +github.com/ethereum/go-ethereum/console/bridge.go:53.45,55.17 2 0 +github.com/ethereum/go-ethereum/console/bridge.go:58.2,58.26 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:55.17,56.50 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:64.65,70.9 2 0 +github.com/ethereum/go-ethereum/console/bridge.go:89.2,90.15 2 0 +github.com/ethereum/go-ethereum/console/bridge.go:93.2,94.16 2 0 +github.com/ethereum/go-ethereum/console/bridge.go:97.2,97.17 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:72.32,73.76 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:76.3,76.82 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:79.3,79.26 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:83.70,84.50 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:85.10,86.60 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:73.76,75.4 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:76.82,78.4 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:79.26,81.4 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:90.15,92.3 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:94.16,96.3 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:102.65,104.64 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:107.2,110.73 3 0 +github.com/ethereum/go-ethereum/console/bridge.go:116.2,117.15 2 0 +github.com/ethereum/go-ethereum/console/bridge.go:120.2,121.16 2 0 +github.com/ethereum/go-ethereum/console/bridge.go:126.2,126.9 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:190.2,190.17 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:104.64,106.3 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:110.73,112.3 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:112.8,114.3 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:117.15,119.3 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:121.16,123.3 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:127.76,129.17 2 0 +github.com/ethereum/go-ethereum/console/bridge.go:132.3,133.17 2 0 +github.com/ethereum/go-ethereum/console/bridge.go:137.81,140.17 2 0 +github.com/ethereum/go-ethereum/console/bridge.go:143.3,144.69 2 0 +github.com/ethereum/go-ethereum/console/bridge.go:158.76,162.17 3 0 +github.com/ethereum/go-ethereum/console/bridge.go:165.3,167.17 3 0 +github.com/ethereum/go-ethereum/console/bridge.go:170.3,172.86 2 0 +github.com/ethereum/go-ethereum/console/bridge.go:176.69,179.17 2 0 +github.com/ethereum/go-ethereum/console/bridge.go:182.3,182.85 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:186.10,188.18 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:129.17,131.4 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:133.17,135.4 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:140.17,142.4 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:144.69,145.70 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:149.4,150.18 2 0 +github.com/ethereum/go-ethereum/console/bridge.go:153.4,153.86 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:145.70,147.5 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:150.18,152.5 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:153.86,155.5 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:162.17,164.4 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:167.17,169.4 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:172.86,174.4 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:179.17,181.4 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:182.85,184.4 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:193.84,196.16 3 0 +github.com/ethereum/go-ethereum/console/bridge.go:199.2,200.15 2 0 +github.com/ethereum/go-ethereum/console/bridge.go:203.2,203.64 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:196.16,198.3 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:200.15,202.3 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:206.77,217.16 9 0 +github.com/ethereum/go-ethereum/console/bridge.go:220.2,221.15 2 0 +github.com/ethereum/go-ethereum/console/bridge.go:224.2,224.64 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:217.16,219.3 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:221.15,223.3 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:231.68,232.29 1 1 +github.com/ethereum/go-ethereum/console/bridge.go:236.2,238.104 2 1 +github.com/ethereum/go-ethereum/console/bridge.go:243.2,244.73 2 0 +github.com/ethereum/go-ethereum/console/bridge.go:259.2,260.75 2 0 +github.com/ethereum/go-ethereum/console/bridge.go:268.2,269.15 2 0 +github.com/ethereum/go-ethereum/console/bridge.go:272.2,272.62 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:232.29,234.3 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:238.104,240.3 1 1 +github.com/ethereum/go-ethereum/console/bridge.go:244.73,247.17 3 0 +github.com/ethereum/go-ethereum/console/bridge.go:250.3,250.34 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:247.17,249.4 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:251.8,252.61 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:255.3,255.28 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:252.61,254.4 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:260.75,261.34 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:264.3,264.30 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:261.34,263.4 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:269.15,271.3 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:278.59,279.45 1 1 +github.com/ethereum/go-ethereum/console/bridge.go:282.2,288.80 2 0 +github.com/ethereum/go-ethereum/console/bridge.go:291.2,291.80 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:296.2,296.53 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:308.2,309.15 2 0 +github.com/ethereum/go-ethereum/console/bridge.go:312.2,312.52 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:279.45,281.3 1 1 +github.com/ethereum/go-ethereum/console/bridge.go:288.80,290.3 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:291.80,293.3 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:296.53,299.17 3 0 +github.com/ethereum/go-ethereum/console/bridge.go:302.3,302.34 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:299.17,301.4 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:303.8,303.57 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:303.57,305.3 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:309.15,311.3 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:316.60,317.45 1 1 +github.com/ethereum/go-ethereum/console/bridge.go:320.2,321.80 2 1 +github.com/ethereum/go-ethereum/console/bridge.go:324.2,326.35 3 0 +github.com/ethereum/go-ethereum/console/bridge.go:317.45,319.3 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:321.80,323.3 1 1 +github.com/ethereum/go-ethereum/console/bridge.go:331.66,338.16 3 0 +github.com/ethereum/go-ethereum/console/bridge.go:341.2,341.16 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:347.2,347.16 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:355.2,357.70 3 0 +github.com/ethereum/go-ethereum/console/bridge.go:360.2,360.34 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:374.2,374.35 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:338.16,340.3 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:341.16,342.105 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:345.3,345.40 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:342.105,344.4 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:347.16,348.105 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:351.3,351.39 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:348.105,350.4 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:357.70,359.3 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:360.34,362.67 2 0 +github.com/ethereum/go-ethereum/console/bridge.go:365.3,365.27 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:369.3,369.18 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:372.3,372.26 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:362.67,364.4 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:365.27,368.4 2 0 +github.com/ethereum/go-ethereum/console/bridge.go:369.18,370.9 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:384.59,387.16 2 1 +github.com/ethereum/go-ethereum/console/bridge.go:391.2,398.22 3 1 +github.com/ethereum/go-ethereum/console/bridge.go:408.2,409.27 2 1 +github.com/ethereum/go-ethereum/console/bridge.go:448.2,449.11 2 1 +github.com/ethereum/go-ethereum/console/bridge.go:454.2,454.65 1 1 +github.com/ethereum/go-ethereum/console/bridge.go:458.2,458.20 1 1 +github.com/ethereum/go-ethereum/console/bridge.go:387.16,389.3 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:398.22,401.3 2 0 +github.com/ethereum/go-ethereum/console/bridge.go:401.8,405.3 3 1 +github.com/ethereum/go-ethereum/console/bridge.go:409.27,415.74 5 1 +github.com/ethereum/go-ethereum/console/bridge.go:444.3,444.30 1 1 +github.com/ethereum/go-ethereum/console/bridge.go:415.74,416.21 1 1 +github.com/ethereum/go-ethereum/console/bridge.go:416.21,420.5 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:420.10,423.18 3 1 +github.com/ethereum/go-ethereum/console/bridge.go:426.5,427.19 2 1 +github.com/ethereum/go-ethereum/console/bridge.go:423.18,425.6 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:427.19,429.6 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:429.11,431.6 1 1 +github.com/ethereum/go-ethereum/console/bridge.go:433.9,436.38 3 0 +github.com/ethereum/go-ethereum/console/bridge.go:439.4,439.42 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:442.4,442.43 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:436.38,438.5 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:439.42,441.5 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:449.11,451.3 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:451.8,453.3 1 1 +github.com/ethereum/go-ethereum/console/bridge.go:454.65,457.3 2 0 +github.com/ethereum/go-ethereum/console/bridge.go:461.74,465.17 4 0 +github.com/ethereum/go-ethereum/console/bridge.go:468.2,468.24 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:465.17,467.3 1 0 +github.com/ethereum/go-ethereum/console/bridge.go:472.34,475.2 2 0 +github.com/ethereum/go-ethereum/console/bridge.go:477.60,479.14 2 1 +github.com/ethereum/go-ethereum/console/bridge.go:482.2,482.23 1 1 +github.com/ethereum/go-ethereum/console/bridge.go:479.14,481.3 1 0 +github.com/ethereum/go-ethereum/console/console.go:90.43,92.28 1 1 +github.com/ethereum/go-ethereum/console/console.go:95.2,95.25 1 1 +github.com/ethereum/go-ethereum/console/console.go:98.2,98.27 1 1 +github.com/ethereum/go-ethereum/console/console.go:103.2,115.58 2 1 +github.com/ethereum/go-ethereum/console/console.go:118.2,118.53 1 1 +github.com/ethereum/go-ethereum/console/console.go:122.2,125.21 3 1 +github.com/ethereum/go-ethereum/console/console.go:92.28,94.3 1 0 +github.com/ethereum/go-ethereum/console/console.go:95.25,97.3 1 1 +github.com/ethereum/go-ethereum/console/console.go:98.27,100.3 1 0 +github.com/ethereum/go-ethereum/console/console.go:115.58,117.3 1 0 +github.com/ethereum/go-ethereum/console/console.go:118.53,120.3 1 0 +github.com/ethereum/go-ethereum/console/console.go:130.48,135.43 3 1 +github.com/ethereum/go-ethereum/console/console.go:138.2,138.43 1 1 +github.com/ethereum/go-ethereum/console/console.go:143.2,143.35 1 1 +github.com/ethereum/go-ethereum/console/console.go:149.2,149.31 1 1 +github.com/ethereum/go-ethereum/console/console.go:160.2,160.23 1 1 +github.com/ethereum/go-ethereum/console/console.go:169.2,169.12 1 1 +github.com/ethereum/go-ethereum/console/console.go:135.43,137.3 1 0 +github.com/ethereum/go-ethereum/console/console.go:138.43,140.3 1 0 +github.com/ethereum/go-ethereum/console/console.go:143.35,146.3 2 1 +github.com/ethereum/go-ethereum/console/console.go:149.31,150.43 1 1 +github.com/ethereum/go-ethereum/console/console.go:150.43,152.48 2 0 +github.com/ethereum/go-ethereum/console/console.go:155.4,155.46 1 0 +github.com/ethereum/go-ethereum/console/console.go:152.48,154.5 1 0 +github.com/ethereum/go-ethereum/console/console.go:160.23,161.62 1 1 +github.com/ethereum/go-ethereum/console/console.go:167.3,167.51 1 1 +github.com/ethereum/go-ethereum/console/console.go:161.62,163.4 1 1 +github.com/ethereum/go-ethereum/console/console.go:163.9,166.4 2 0 +github.com/ethereum/go-ethereum/console/console.go:172.39,173.35 1 1 +github.com/ethereum/go-ethereum/console/console.go:173.35,178.3 4 1 +github.com/ethereum/go-ethereum/console/console.go:181.50,184.61 3 1 +github.com/ethereum/go-ethereum/console/console.go:187.2,187.58 1 1 +github.com/ethereum/go-ethereum/console/console.go:190.2,190.69 1 1 +github.com/ethereum/go-ethereum/console/console.go:193.2,194.35 2 1 +github.com/ethereum/go-ethereum/console/console.go:201.2,201.12 1 1 +github.com/ethereum/go-ethereum/console/console.go:184.61,186.3 1 0 +github.com/ethereum/go-ethereum/console/console.go:187.58,189.3 1 0 +github.com/ethereum/go-ethereum/console/console.go:190.69,192.3 1 0 +github.com/ethereum/go-ethereum/console/console.go:194.35,200.3 5 1 +github.com/ethereum/go-ethereum/console/console.go:205.42,208.16 2 1 +github.com/ethereum/go-ethereum/console/console.go:211.2,212.24 2 1 +github.com/ethereum/go-ethereum/console/console.go:225.2,225.35 1 1 +github.com/ethereum/go-ethereum/console/console.go:233.2,233.12 1 1 +github.com/ethereum/go-ethereum/console/console.go:208.16,210.3 1 0 +github.com/ethereum/go-ethereum/console/console.go:212.24,213.20 1 1 +github.com/ethereum/go-ethereum/console/console.go:216.3,217.43 2 1 +github.com/ethereum/go-ethereum/console/console.go:213.20,214.12 1 1 +github.com/ethereum/go-ethereum/console/console.go:217.43,218.57 1 1 +github.com/ethereum/go-ethereum/console/console.go:218.57,220.5 1 0 +github.com/ethereum/go-ethereum/console/console.go:225.35,227.29 2 1 +github.com/ethereum/go-ethereum/console/console.go:227.29,228.37 1 1 +github.com/ethereum/go-ethereum/console/console.go:228.37,230.5 1 1 +github.com/ethereum/go-ethereum/console/console.go:237.63,238.51 1 1 +github.com/ethereum/go-ethereum/console/console.go:238.51,242.3 3 1 +github.com/ethereum/go-ethereum/console/console.go:251.66,253.42 2 1 +github.com/ethereum/go-ethereum/console/console.go:256.2,265.58 10 1 +github.com/ethereum/go-ethereum/console/console.go:253.42,255.3 1 0 +github.com/ethereum/go-ethereum/console/console.go:268.34,271.46 3 0 +github.com/ethereum/go-ethereum/console/console.go:271.46,273.3 1 0 +github.com/ethereum/go-ethereum/console/console.go:273.8,275.3 1 0 +github.com/ethereum/go-ethereum/console/console.go:280.68,282.42 2 0 +github.com/ethereum/go-ethereum/console/console.go:285.2,286.20 2 0 +github.com/ethereum/go-ethereum/console/console.go:282.42,284.3 1 0 +github.com/ethereum/go-ethereum/console/console.go:291.86,293.32 1 0 +github.com/ethereum/go-ethereum/console/console.go:298.2,299.27 2 0 +github.com/ethereum/go-ethereum/console/console.go:313.2,313.75 1 0 +github.com/ethereum/go-ethereum/console/console.go:293.32,295.3 1 0 +github.com/ethereum/go-ethereum/console/console.go:299.27,301.117 1 0 +github.com/ethereum/go-ethereum/console/console.go:305.3,305.50 1 0 +github.com/ethereum/go-ethereum/console/console.go:310.3,311.8 2 0 +github.com/ethereum/go-ethereum/console/console.go:301.117,302.12 1 0 +github.com/ethereum/go-ethereum/console/console.go:305.50,307.12 2 0 +github.com/ethereum/go-ethereum/console/console.go:318.29,332.17 2 1 +github.com/ethereum/go-ethereum/console/console.go:336.2,336.58 1 1 +github.com/ethereum/go-ethereum/console/console.go:344.2,345.34 2 1 +github.com/ethereum/go-ethereum/console/console.go:332.17,334.3 1 1 +github.com/ethereum/go-ethereum/console/console.go:336.58,338.34 2 1 +github.com/ethereum/go-ethereum/console/console.go:341.3,342.62 2 1 +github.com/ethereum/go-ethereum/console/console.go:338.34,340.4 1 1 +github.com/ethereum/go-ethereum/console/console.go:350.46,351.15 1 1 +github.com/ethereum/go-ethereum/console/console.go:356.2,359.25 2 1 +github.com/ethereum/go-ethereum/console/console.go:351.15,352.31 1 1 +github.com/ethereum/go-ethereum/console/console.go:352.31,354.4 1 0 +github.com/ethereum/go-ethereum/console/console.go:364.38,377.6 5 1 +github.com/ethereum/go-ethereum/console/console.go:377.6,378.10 1 1 +github.com/ethereum/go-ethereum/console/console.go:379.14,381.47 2 0 +github.com/ethereum/go-ethereum/console/console.go:382.30,384.47 2 0 +github.com/ethereum/go-ethereum/console/console.go:385.20,386.10 1 1 +github.com/ethereum/go-ethereum/console/console.go:391.39,392.9 1 0 +github.com/ethereum/go-ethereum/console/console.go:393.38,393.38 0 0 +github.com/ethereum/go-ethereum/console/console.go:394.10,394.10 0 0 +github.com/ethereum/go-ethereum/console/console.go:398.41,399.9 1 1 +github.com/ethereum/go-ethereum/console/console.go:400.26,400.26 0 0 +github.com/ethereum/go-ethereum/console/console.go:401.10,401.10 0 1 +github.com/ethereum/go-ethereum/console/console.go:406.37,407.9 1 0 +github.com/ethereum/go-ethereum/console/console.go:408.41,408.41 0 0 +github.com/ethereum/go-ethereum/console/console.go:409.19,409.19 0 0 +github.com/ethereum/go-ethereum/console/console.go:415.33,425.15 2 1 +github.com/ethereum/go-ethereum/console/console.go:430.2,433.6 3 1 +github.com/ethereum/go-ethereum/console/console.go:425.15,427.3 1 1 +github.com/ethereum/go-ethereum/console/console.go:433.6,437.10 2 1 +github.com/ethereum/go-ethereum/console/console.go:438.31,440.10 2 0 +github.com/ethereum/go-ethereum/console/console.go:442.27,447.10 2 0 +github.com/ethereum/go-ethereum/console/console.go:449.26,450.37 1 1 +github.com/ethereum/go-ethereum/console/console.go:456.4,456.10 1 1 +github.com/ethereum/go-ethereum/console/console.go:458.28,460.46 1 1 +github.com/ethereum/go-ethereum/console/console.go:463.4,463.40 1 1 +github.com/ethereum/go-ethereum/console/console.go:467.4,469.20 3 1 +github.com/ethereum/go-ethereum/console/console.go:475.4,475.20 1 1 +github.com/ethereum/go-ethereum/console/console.go:450.37,454.13 2 0 +github.com/ethereum/go-ethereum/console/console.go:460.46,462.5 1 0 +github.com/ethereum/go-ethereum/console/console.go:463.40,464.13 1 0 +github.com/ethereum/go-ethereum/console/console.go:469.20,471.5 1 1 +github.com/ethereum/go-ethereum/console/console.go:471.10,473.5 1 0 +github.com/ethereum/go-ethereum/console/console.go:475.20,476.80 1 1 +github.com/ethereum/go-ethereum/console/console.go:484.5,485.15 2 1 +github.com/ethereum/go-ethereum/console/console.go:476.80,477.108 1 1 +github.com/ethereum/go-ethereum/console/console.go:477.108,479.28 2 1 +github.com/ethereum/go-ethereum/console/console.go:479.28,481.8 1 1 +github.com/ethereum/go-ethereum/console/console.go:492.91,493.24 1 1 +github.com/ethereum/go-ethereum/console/console.go:493.24,495.17 2 1 +github.com/ethereum/go-ethereum/console/console.go:495.17,497.4 1 1 +github.com/ethereum/go-ethereum/console/console.go:497.9,499.4 1 1 +github.com/ethereum/go-ethereum/console/console.go:505.37,513.26 2 1 +github.com/ethereum/go-ethereum/console/console.go:543.2,543.16 1 1 +github.com/ethereum/go-ethereum/console/console.go:513.26,514.12 1 1 +github.com/ethereum/go-ethereum/console/console.go:515.13,517.32 1 1 +github.com/ethereum/go-ethereum/console/console.go:520.18,521.52 1 1 +github.com/ethereum/go-ethereum/console/console.go:527.4,527.23 1 1 +github.com/ethereum/go-ethereum/console/console.go:528.17,529.17 1 1 +github.com/ethereum/go-ethereum/console/console.go:532.4,532.23 1 1 +github.com/ethereum/go-ethereum/console/console.go:533.17,534.17 1 1 +github.com/ethereum/go-ethereum/console/console.go:537.4,537.23 1 1 +github.com/ethereum/go-ethereum/console/console.go:538.11,539.23 1 1 +github.com/ethereum/go-ethereum/console/console.go:517.32,519.5 1 1 +github.com/ethereum/go-ethereum/console/console.go:521.52,523.5 1 1 +github.com/ethereum/go-ethereum/console/console.go:523.10,523.40 1 1 +github.com/ethereum/go-ethereum/console/console.go:523.40,526.5 2 1 +github.com/ethereum/go-ethereum/console/console.go:529.17,531.5 1 1 +github.com/ethereum/go-ethereum/console/console.go:534.17,536.5 1 1 +github.com/ethereum/go-ethereum/console/console.go:547.46,549.2 1 1 +github.com/ethereum/go-ethereum/console/console.go:552.45,553.23 1 1 +github.com/ethereum/go-ethereum/console/console.go:559.2,560.12 2 1 +github.com/ethereum/go-ethereum/console/console.go:553.23,557.3 2 1 +github.com/ethereum/go-ethereum/console/console.go:563.40,564.98 1 1 +github.com/ethereum/go-ethereum/console/console.go:567.2,567.35 1 0 +github.com/ethereum/go-ethereum/console/console.go:564.98,566.3 1 1 +github.com/ethereum/go-ethereum/eth/backend.go:110.73,112.45 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:115.2,115.32 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:118.2,118.81 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:122.2,122.51 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:131.2,139.16 5 0 +github.com/ethereum/go-ethereum/eth/backend.go:142.2,143.79 2 0 +github.com/ethereum/go-ethereum/eth/backend.go:146.2,148.127 2 0 +github.com/ethereum/go-ethereum/eth/backend.go:151.2,172.40 4 0 +github.com/ethereum/go-ethereum/eth/backend.go:175.2,176.30 2 0 +github.com/ethereum/go-ethereum/eth/backend.go:179.2,188.22 6 0 +github.com/ethereum/go-ethereum/eth/backend.go:191.2,193.32 2 0 +github.com/ethereum/go-ethereum/eth/backend.go:203.2,220.16 3 0 +github.com/ethereum/go-ethereum/eth/backend.go:223.2,230.62 3 0 +github.com/ethereum/go-ethereum/eth/backend.go:235.2,237.33 2 0 +github.com/ethereum/go-ethereum/eth/backend.go:240.2,245.23 4 0 +github.com/ethereum/go-ethereum/eth/backend.go:248.2,260.17 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:264.2,270.16 5 0 +github.com/ethereum/go-ethereum/eth/backend.go:273.2,274.16 2 0 +github.com/ethereum/go-ethereum/eth/backend.go:279.2,289.17 6 0 +github.com/ethereum/go-ethereum/eth/backend.go:112.45,114.3 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:115.32,117.3 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:118.81,121.3 2 0 +github.com/ethereum/go-ethereum/eth/backend.go:122.51,123.31 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:129.3,129.28 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:123.31,126.4 2 0 +github.com/ethereum/go-ethereum/eth/backend.go:126.9,128.4 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:139.16,141.3 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:143.79,145.3 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:148.127,150.3 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:172.40,174.3 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:176.30,178.3 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:188.22,190.3 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:193.32,194.62 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:194.62,196.4 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:196.9,196.69 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:196.69,197.24 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:200.4,200.63 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:197.24,199.5 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:220.16,222.3 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:230.62,234.3 3 0 +github.com/ethereum/go-ethereum/eth/backend.go:237.33,239.3 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:245.23,247.3 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:260.17,262.3 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:270.16,272.3 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:274.16,276.3 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:292.41,293.21 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:302.2,302.54 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:306.2,306.14 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:293.21,301.3 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:302.54,305.3 2 0 +github.com/ethereum/go-ethereum/eth/backend.go:311.37,371.2 5 0 +github.com/ethereum/go-ethereum/eth/backend.go:373.59,375.2 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:377.63,382.37 4 0 +github.com/ethereum/go-ethereum/eth/backend.go:385.2,385.63 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:397.2,397.79 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:382.37,384.3 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:385.63,386.59 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:386.59,395.4 6 0 +github.com/ethereum/go-ethereum/eth/backend.go:405.60,407.16 2 0 +github.com/ethereum/go-ethereum/eth/backend.go:412.2,415.25 4 0 +github.com/ethereum/go-ethereum/eth/backend.go:420.2,420.49 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:425.2,425.14 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:407.16,410.3 2 0 +github.com/ethereum/go-ethereum/eth/backend.go:415.25,417.3 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:420.49,421.24 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:421.24,423.4 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:431.62,448.44 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:451.2,451.31 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:448.44,450.3 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:455.59,461.2 4 0 +github.com/ethereum/go-ethereum/eth/backend.go:466.51,471.39 2 0 +github.com/ethereum/go-ethereum/eth/backend.go:479.2,479.19 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:522.2,522.12 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:471.39,473.19 2 0 +github.com/ethereum/go-ethereum/eth/backend.go:476.3,476.25 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:473.19,475.4 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:479.19,488.17 6 0 +github.com/ethereum/go-ethereum/eth/backend.go:492.3,493.45 2 0 +github.com/ethereum/go-ethereum/eth/backend.go:500.3,500.17 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:508.3,508.41 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:518.3,520.23 2 0 +github.com/ethereum/go-ethereum/eth/backend.go:488.17,491.4 2 0 +github.com/ethereum/go-ethereum/eth/backend.go:493.45,495.4 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:495.9,495.53 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:495.53,496.54 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:496.54,498.5 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:500.17,502.35 2 0 +github.com/ethereum/go-ethereum/eth/backend.go:506.4,506.38 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:502.35,505.5 2 0 +github.com/ethereum/go-ethereum/eth/backend.go:508.41,510.35 2 0 +github.com/ethereum/go-ethereum/eth/backend.go:514.4,514.38 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:510.35,513.5 2 0 +github.com/ethereum/go-ethereum/eth/backend.go:527.33,532.39 2 0 +github.com/ethereum/go-ethereum/eth/backend.go:536.2,536.16 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:532.39,534.3 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:539.41,539.68 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:540.41,540.59 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:542.56,542.83 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:543.56,543.79 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:544.56,544.75 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:545.56,545.77 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:546.56,546.75 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:547.56,547.76 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:548.56,548.71 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:549.56,549.87 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:550.56,550.111 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:551.56,551.103 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:552.56,552.85 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:553.56,553.81 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:554.56,554.75 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:555.51,558.2 2 0 +github.com/ethereum/go-ethereum/eth/backend.go:562.47,564.32 2 0 +github.com/ethereum/go-ethereum/eth/backend.go:567.2,567.15 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:564.32,566.3 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:572.34,583.28 5 0 +github.com/ethereum/go-ethereum/eth/backend.go:591.2,595.12 3 0 +github.com/ethereum/go-ethereum/eth/backend.go:583.28,584.50 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:587.3,587.34 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:584.50,586.4 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:600.54,603.16 2 0 +github.com/ethereum/go-ethereum/eth/backend.go:611.2,614.6 3 0 +github.com/ethereum/go-ethereum/eth/backend.go:603.16,604.91 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:608.3,608.69 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:604.91,606.4 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:614.6,615.10 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:616.19,618.18 2 0 +github.com/ethereum/go-ethereum/eth/backend.go:621.20,622.10 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:618.18,620.5 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:633.54,637.9 3 0 +github.com/ethereum/go-ethereum/eth/backend.go:641.2,641.25 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:645.2,646.16 2 0 +github.com/ethereum/go-ethereum/eth/backend.go:651.2,653.12 2 0 +github.com/ethereum/go-ethereum/eth/backend.go:637.9,639.3 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:641.25,643.3 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:646.16,648.3 1 0 +github.com/ethereum/go-ethereum/eth/backend.go:658.33,684.2 14 0 +github.com/ethereum/go-ethereum/eth/backend.go:691.63,693.2 1 0 +github.com/ethereum/go-ethereum/eth/bloombits.go:46.61,47.43 1 0 +github.com/ethereum/go-ethereum/eth/bloombits.go:47.43,48.13 1 0 +github.com/ethereum/go-ethereum/eth/bloombits.go:48.13,49.8 1 0 +github.com/ethereum/go-ethereum/eth/bloombits.go:49.8,50.12 1 0 +github.com/ethereum/go-ethereum/eth/bloombits.go:51.34,52.12 1 0 +github.com/ethereum/go-ethereum/eth/bloombits.go:54.41,57.44 3 0 +github.com/ethereum/go-ethereum/eth/bloombits.go:69.6,69.21 1 0 +github.com/ethereum/go-ethereum/eth/bloombits.go:57.44,59.99 2 0 +github.com/ethereum/go-ethereum/eth/bloombits.go:59.99,60.92 1 0 +github.com/ethereum/go-ethereum/eth/bloombits.go:60.92,62.9 1 0 +github.com/ethereum/go-ethereum/eth/bloombits.go:62.14,64.9 1 0 +github.com/ethereum/go-ethereum/eth/bloombits.go:65.13,67.8 1 0 +github.com/ethereum/go-ethereum/eth/peerset.go:62.28,68.2 1 1 +github.com/ethereum/go-ethereum/eth/peerset.go:73.65,76.62 1 1 +github.com/ethereum/go-ethereum/eth/peerset.go:80.2,84.31 4 1 +github.com/ethereum/go-ethereum/eth/peerset.go:87.2,87.34 1 1 +github.com/ethereum/go-ethereum/eth/peerset.go:91.2,91.37 1 1 +github.com/ethereum/go-ethereum/eth/peerset.go:96.2,97.12 2 1 +github.com/ethereum/go-ethereum/eth/peerset.go:76.62,78.3 1 0 +github.com/ethereum/go-ethereum/eth/peerset.go:84.31,86.3 1 0 +github.com/ethereum/go-ethereum/eth/peerset.go:87.34,89.3 1 0 +github.com/ethereum/go-ethereum/eth/peerset.go:91.37,95.3 3 1 +github.com/ethereum/go-ethereum/eth/peerset.go:102.74,104.64 1 1 +github.com/ethereum/go-ethereum/eth/peerset.go:108.2,111.31 3 1 +github.com/ethereum/go-ethereum/eth/peerset.go:115.2,115.34 1 1 +github.com/ethereum/go-ethereum/eth/peerset.go:120.2,120.37 1 1 +github.com/ethereum/go-ethereum/eth/peerset.go:127.2,131.20 4 1 +github.com/ethereum/go-ethereum/eth/peerset.go:104.64,106.3 1 1 +github.com/ethereum/go-ethereum/eth/peerset.go:111.31,114.3 2 0 +github.com/ethereum/go-ethereum/eth/peerset.go:115.34,118.3 2 0 +github.com/ethereum/go-ethereum/eth/peerset.go:120.37,125.3 3 1 +github.com/ethereum/go-ethereum/eth/peerset.go:136.71,141.15 3 1 +github.com/ethereum/go-ethereum/eth/peerset.go:144.2,145.31 2 1 +github.com/ethereum/go-ethereum/eth/peerset.go:148.2,151.16 2 1 +github.com/ethereum/go-ethereum/eth/peerset.go:155.2,156.12 2 1 +github.com/ethereum/go-ethereum/eth/peerset.go:141.15,143.3 1 0 +github.com/ethereum/go-ethereum/eth/peerset.go:145.31,147.3 1 0 +github.com/ethereum/go-ethereum/eth/peerset.go:151.16,154.3 2 1 +github.com/ethereum/go-ethereum/eth/peerset.go:161.52,166.9 4 1 +github.com/ethereum/go-ethereum/eth/peerset.go:169.2,170.25 2 1 +github.com/ethereum/go-ethereum/eth/peerset.go:173.2,173.12 1 1 +github.com/ethereum/go-ethereum/eth/peerset.go:166.9,168.3 1 0 +github.com/ethereum/go-ethereum/eth/peerset.go:170.25,172.3 1 1 +github.com/ethereum/go-ethereum/eth/peerset.go:177.45,182.2 3 1 +github.com/ethereum/go-ethereum/eth/peerset.go:186.67,191.29 4 1 +github.com/ethereum/go-ethereum/eth/peerset.go:196.2,196.13 1 1 +github.com/ethereum/go-ethereum/eth/peerset.go:191.29,192.26 1 1 +github.com/ethereum/go-ethereum/eth/peerset.go:192.26,194.4 1 1 +github.com/ethereum/go-ethereum/eth/peerset.go:201.73,206.29 4 1 +github.com/ethereum/go-ethereum/eth/peerset.go:211.2,211.13 1 1 +github.com/ethereum/go-ethereum/eth/peerset.go:206.29,207.32 1 1 +github.com/ethereum/go-ethereum/eth/peerset.go:207.32,209.4 1 1 +github.com/ethereum/go-ethereum/eth/peerset.go:217.30,222.2 3 1 +github.com/ethereum/go-ethereum/eth/peerset.go:225.34,230.2 3 1 +github.com/ethereum/go-ethereum/eth/peerset.go:234.50,242.29 4 1 +github.com/ethereum/go-ethereum/eth/peerset.go:247.2,247.17 1 1 +github.com/ethereum/go-ethereum/eth/peerset.go:242.29,243.63 1 1 +github.com/ethereum/go-ethereum/eth/peerset.go:243.63,245.4 1 1 +github.com/ethereum/go-ethereum/eth/peerset.go:251.28,255.29 3 1 +github.com/ethereum/go-ethereum/eth/peerset.go:258.2,258.18 1 1 +github.com/ethereum/go-ethereum/eth/peerset.go:255.29,257.3 1 1 +github.com/ethereum/go-ethereum/eth/peer.go:42.39,50.2 2 0 +github.com/ethereum/go-ethereum/eth/peer.go:64.41,68.2 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:48.160,56.15 2 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:62.2,62.17 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:118.2,123.35 2 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:154.2,154.12 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:158.2,158.21 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:56.15,58.17 2 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:58.17,60.4 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:62.17,63.17 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:73.3,74.77 2 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:63.17,67.73 2 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:67.73,70.5 2 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:75.8,86.17 3 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:93.3,93.39 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:108.3,108.17 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:86.17,88.18 2 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:88.18,90.5 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:93.39,94.32 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:97.4,98.21 2 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:101.4,104.18 3 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:94.32,96.5 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:98.21,100.5 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:104.18,105.10 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:108.17,109.22 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:110.32,111.88 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:112.12,113.20 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:123.35,125.51 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:130.3,131.70 2 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:134.3,135.17 2 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:139.3,140.17 2 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:144.3,145.17 2 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:148.3,149.32 2 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:152.3,152.16 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:125.51,128.4 2 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:131.70,133.4 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:135.17,137.4 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:140.17,143.4 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:145.17,147.4 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:149.32,151.4 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:154.12,157.3 2 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:162.144,164.28 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:168.2,169.19 2 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:174.2,175.16 2 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:178.2,178.52 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:182.2,183.44 2 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:201.2,201.122 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:164.28,166.3 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:169.19,171.3 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:175.16,177.3 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:178.52,180.3 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:183.44,188.21 4 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:192.3,194.94 3 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:199.3,199.65 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:188.21,190.4 1 0 +github.com/ethereum/go-ethereum/eth/state_accessor.go:194.94,196.4 1 0 +github.com/ethereum/go-ethereum/eth/bor_api_backend.go:17.113,19.63 2 0 +github.com/ethereum/go-ethereum/eth/bor_api_backend.go:25.2,25.16 1 0 +github.com/ethereum/go-ethereum/eth/bor_api_backend.go:29.2,30.16 2 0 +github.com/ethereum/go-ethereum/eth/bor_api_backend.go:33.2,33.18 1 0 +github.com/ethereum/go-ethereum/eth/bor_api_backend.go:19.63,20.30 1 0 +github.com/ethereum/go-ethereum/eth/bor_api_backend.go:20.30,22.4 1 0 +github.com/ethereum/go-ethereum/eth/bor_api_backend.go:25.16,27.3 1 0 +github.com/ethereum/go-ethereum/eth/bor_api_backend.go:30.16,32.3 1 0 +github.com/ethereum/go-ethereum/eth/bor_api_backend.go:37.107,39.20 2 0 +github.com/ethereum/go-ethereum/eth/bor_api_backend.go:43.2,43.21 1 0 +github.com/ethereum/go-ethereum/eth/bor_api_backend.go:39.20,41.3 1 0 +github.com/ethereum/go-ethereum/eth/bor_api_backend.go:47.102,49.20 2 0 +github.com/ethereum/go-ethereum/eth/bor_api_backend.go:52.2,52.26 1 0 +github.com/ethereum/go-ethereum/eth/bor_api_backend.go:49.20,51.3 1 0 +github.com/ethereum/go-ethereum/eth/bor_api_backend.go:56.144,59.2 2 0 +github.com/ethereum/go-ethereum/eth/bor_api_backend.go:61.182,64.2 2 0 +github.com/ethereum/go-ethereum/eth/bor_api_backend.go:67.99,69.2 1 0 +github.com/ethereum/go-ethereum/eth/bor_api_backend.go:72.101,74.2 1 0 +github.com/ethereum/go-ethereum/eth/discovery.go:36.35,38.2 1 0 +github.com/ethereum/go-ethereum/eth/discovery.go:41.63,45.12 3 0 +github.com/ethereum/go-ethereum/eth/discovery.go:45.12,47.7 2 0 +github.com/ethereum/go-ethereum/eth/discovery.go:47.7,48.11 1 0 +github.com/ethereum/go-ethereum/eth/discovery.go:49.19,50.34 1 0 +github.com/ethereum/go-ethereum/eth/discovery.go:51.21,54.11 1 0 +github.com/ethereum/go-ethereum/eth/discovery.go:60.50,63.2 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:135.58,137.28 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:140.2,153.40 2 1 +github.com/ethereum/go-ethereum/eth/handler.go:177.2,177.30 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:183.2,183.20 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:205.2,208.48 2 1 +github.com/ethereum/go-ethereum/eth/handler.go:226.2,226.28 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:229.2,229.53 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:292.2,294.59 2 1 +github.com/ethereum/go-ethereum/eth/handler.go:301.2,303.15 3 1 +github.com/ethereum/go-ethereum/eth/handler.go:137.28,139.3 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:153.40,163.62 2 1 +github.com/ethereum/go-ethereum/eth/handler.go:163.62,166.4 2 0 +github.com/ethereum/go-ethereum/eth/handler.go:167.8,168.45 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:168.45,171.4 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:171.9,174.4 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:177.30,180.3 2 0 +github.com/ethereum/go-ethereum/eth/handler.go:183.20,186.42 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:192.3,193.45 2 0 +github.com/ethereum/go-ethereum/eth/handler.go:186.42,189.4 2 0 +github.com/ethereum/go-ethereum/eth/handler.go:193.45,196.66 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:196.66,198.5 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:208.48,211.30 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:219.3,219.58 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:224.3,224.62 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:211.30,214.4 2 0 +github.com/ethereum/go-ethereum/eth/handler.go:219.58,220.34 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:220.34,222.5 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:226.28,228.3 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:229.53,232.30 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:250.3,250.62 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:259.3,259.42 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:263.3,263.28 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:286.3,287.17 2 0 +github.com/ethereum/go-ethereum/eth/handler.go:290.3,290.16 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:232.30,235.23 3 0 +github.com/ethereum/go-ethereum/eth/handler.go:241.4,242.64 2 0 +github.com/ethereum/go-ethereum/eth/handler.go:235.23,240.5 4 0 +github.com/ethereum/go-ethereum/eth/handler.go:250.62,253.4 2 0 +github.com/ethereum/go-ethereum/eth/handler.go:259.42,262.4 2 0 +github.com/ethereum/go-ethereum/eth/handler.go:263.28,270.33 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:284.4,284.17 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:270.33,272.19 2 0 +github.com/ethereum/go-ethereum/eth/handler.go:275.5,276.54 2 0 +github.com/ethereum/go-ethereum/eth/handler.go:280.5,280.68 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:272.19,274.6 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:276.54,279.6 2 0 +github.com/ethereum/go-ethereum/eth/handler.go:280.68,282.6 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:287.17,289.4 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:294.59,296.15 2 1 +github.com/ethereum/go-ethereum/eth/handler.go:299.3,299.30 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:296.15,298.4 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:308.73,312.16 2 1 +github.com/ethereum/go-ethereum/eth/handler.go:317.2,317.40 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:320.2,332.100 5 1 +github.com/ethereum/go-ethereum/eth/handler.go:336.2,337.41 2 1 +github.com/ethereum/go-ethereum/eth/handler.go:348.2,348.39 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:353.2,356.57 2 1 +github.com/ethereum/go-ethereum/eth/handler.go:360.2,363.14 3 1 +github.com/ethereum/go-ethereum/eth/handler.go:367.2,367.83 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:371.2,371.17 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:377.2,388.41 5 1 +github.com/ethereum/go-ethereum/eth/handler.go:435.2,435.43 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:472.2,472.22 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:312.16,315.3 2 0 +github.com/ethereum/go-ethereum/eth/handler.go:317.40,319.3 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:332.100,335.3 2 1 +github.com/ethereum/go-ethereum/eth/handler.go:337.41,338.18 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:338.18,342.69 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:342.69,344.5 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:348.39,349.44 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:349.44,351.4 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:356.57,359.3 2 0 +github.com/ethereum/go-ethereum/eth/handler.go:363.14,365.3 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:367.83,370.3 2 0 +github.com/ethereum/go-ethereum/eth/handler.go:371.17,372.64 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:372.64,375.4 2 0 +github.com/ethereum/go-ethereum/eth/handler.go:388.41,391.96 2 1 +github.com/ethereum/go-ethereum/eth/handler.go:395.3,395.13 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:391.96,393.4 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:395.13,399.11 3 1 +github.com/ethereum/go-ethereum/eth/handler.go:400.24,402.26 2 1 +github.com/ethereum/go-ethereum/eth/handler.go:415.5,415.25 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:419.5,419.46 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:423.5,423.20 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:425.21,427.28 2 1 +github.com/ethereum/go-ethereum/eth/handler.go:429.16,429.16 0 0 +github.com/ethereum/go-ethereum/eth/handler.go:402.26,406.45 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:411.6,412.12 2 1 +github.com/ethereum/go-ethereum/eth/handler.go:406.45,410.7 3 1 +github.com/ethereum/go-ethereum/eth/handler.go:415.25,418.6 2 0 +github.com/ethereum/go-ethereum/eth/handler.go:419.46,422.6 2 1 +github.com/ethereum/go-ethereum/eth/handler.go:435.43,437.84 2 0 +github.com/ethereum/go-ethereum/eth/handler.go:440.3,440.44 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:437.84,439.4 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:440.44,444.11 3 0 +github.com/ethereum/go-ethereum/eth/handler.go:445.24,447.26 2 0 +github.com/ethereum/go-ethereum/eth/handler.go:454.5,454.25 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:458.5,458.74 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:463.5,464.20 2 0 +github.com/ethereum/go-ethereum/eth/handler.go:465.21,467.28 2 0 +github.com/ethereum/go-ethereum/eth/handler.go:447.26,452.6 2 0 +github.com/ethereum/go-ethereum/eth/handler.go:454.25,457.6 2 0 +github.com/ethereum/go-ethereum/eth/handler.go:458.74,462.6 3 0 +github.com/ethereum/go-ethereum/eth/handler.go:479.81,483.60 3 1 +github.com/ethereum/go-ethereum/eth/handler.go:487.2,487.22 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:483.60,486.3 2 0 +github.com/ethereum/go-ethereum/eth/handler.go:491.41,493.17 2 1 +github.com/ethereum/go-ethereum/eth/handler.go:493.17,495.3 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:499.45,502.18 2 1 +github.com/ethereum/go-ethereum/eth/handler.go:509.2,510.17 2 1 +github.com/ethereum/go-ethereum/eth/handler.go:515.2,518.25 2 1 +github.com/ethereum/go-ethereum/eth/handler.go:521.2,524.51 3 1 +github.com/ethereum/go-ethereum/eth/handler.go:502.18,505.3 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:505.8,507.3 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:510.17,513.3 2 0 +github.com/ethereum/go-ethereum/eth/handler.go:518.25,520.3 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:524.51,526.3 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:529.39,546.2 10 1 +github.com/ethereum/go-ethereum/eth/handler.go:548.26,565.2 7 1 +github.com/ethereum/go-ethereum/eth/handler.go:569.70,572.29 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:576.2,576.57 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:581.2,585.15 3 1 +github.com/ethereum/go-ethereum/eth/handler.go:603.2,603.47 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:572.29,574.3 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:576.57,577.41 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:577.41,579.4 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:585.15,588.89 2 1 +github.com/ethereum/go-ethereum/eth/handler.go:595.3,596.33 2 1 +github.com/ethereum/go-ethereum/eth/handler.go:599.3,600.9 2 1 +github.com/ethereum/go-ethereum/eth/handler.go:588.89,590.4 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:590.9,593.4 2 0 +github.com/ethereum/go-ethereum/eth/handler.go:596.33,598.4 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:603.47,604.30 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:607.3,607.136 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:604.30,606.4 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:615.65,627.25 2 1 +github.com/ethereum/go-ethereum/eth/handler.go:639.2,639.34 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:644.2,644.34 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:649.2,651.57 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:627.25,631.42 3 1 +github.com/ethereum/go-ethereum/eth/handler.go:635.3,635.42 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:631.42,633.4 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:635.42,637.4 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:639.34,643.3 3 1 +github.com/ethereum/go-ethereum/eth/handler.go:644.34,648.3 3 1 +github.com/ethereum/go-ethereum/eth/handler.go:655.40,658.42 2 1 +github.com/ethereum/go-ethereum/eth/handler.go:658.42,659.55 1 0 +github.com/ethereum/go-ethereum/eth/handler.go:659.55,662.4 2 0 +github.com/ethereum/go-ethereum/eth/handler.go:667.37,669.6 2 1 +github.com/ethereum/go-ethereum/eth/handler.go:669.6,670.10 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:671.27,672.38 1 1 +github.com/ethereum/go-ethereum/eth/handler.go:673.25,674.10 1 1 +github.com/ethereum/go-ethereum/eth/handler_eth.go:36.47,36.65 1 1 +github.com/ethereum/go-ethereum/eth/handler_eth.go:37.47,37.66 1 1 +github.com/ethereum/go-ethereum/eth/handler_eth.go:40.70,42.2 1 0 +github.com/ethereum/go-ethereum/eth/handler_eth.go:45.56,46.46 1 0 +github.com/ethereum/go-ethereum/eth/handler_eth.go:49.2,49.12 1 0 +github.com/ethereum/go-ethereum/eth/handler_eth.go:46.46,48.3 1 0 +github.com/ethereum/go-ethereum/eth/handler_eth.go:54.39,56.2 1 1 +github.com/ethereum/go-ethereum/eth/handler_eth.go:60.70,62.33 1 1 +github.com/ethereum/go-ethereum/eth/handler_eth.go:63.33,65.55 2 0 +github.com/ethereum/go-ethereum/eth/handler_eth.go:67.27,68.63 1 0 +github.com/ethereum/go-ethereum/eth/handler_eth.go:70.45,71.48 1 1 +github.com/ethereum/go-ethereum/eth/handler_eth.go:73.31,74.56 1 1 +github.com/ethereum/go-ethereum/eth/handler_eth.go:76.37,77.55 1 1 +github.com/ethereum/go-ethereum/eth/handler_eth.go:79.10,80.62 1 0 +github.com/ethereum/go-ethereum/eth/handler_eth.go:86.105,90.29 1 0 +github.com/ethereum/go-ethereum/eth/handler_eth.go:96.2,100.35 2 0 +github.com/ethereum/go-ethereum/eth/handler_eth.go:106.2,106.42 1 0 +github.com/ethereum/go-ethereum/eth/handler_eth.go:109.2,109.12 1 0 +github.com/ethereum/go-ethereum/eth/handler_eth.go:90.29,94.3 1 0 +github.com/ethereum/go-ethereum/eth/handler_eth.go:100.35,101.47 1 0 +github.com/ethereum/go-ethereum/eth/handler_eth.go:101.47,104.4 2 0 +github.com/ethereum/go-ethereum/eth/handler_eth.go:106.42,108.3 1 0 +github.com/ethereum/go-ethereum/eth/handler_eth.go:114.98,118.29 1 0 +github.com/ethereum/go-ethereum/eth/handler_eth.go:124.2,133.46 3 0 +github.com/ethereum/go-ethereum/eth/handler_eth.go:137.2,137.12 1 0 +github.com/ethereum/go-ethereum/eth/handler_eth.go:118.29,122.3 1 0 +github.com/ethereum/go-ethereum/eth/handler_eth.go:133.46,136.3 2 0 +github.com/ethereum/go-ethereum/eth/handler_snap.go:29.48,29.66 1 1 +github.com/ethereum/go-ethereum/eth/handler_snap.go:32.73,34.2 1 0 +github.com/ethereum/go-ethereum/eth/handler_snap.go:37.57,38.46 1 0 +github.com/ethereum/go-ethereum/eth/handler_snap.go:43.2,43.12 1 0 +github.com/ethereum/go-ethereum/eth/handler_snap.go:38.46,39.23 1 0 +github.com/ethereum/go-ethereum/eth/handler_snap.go:39.23,41.4 1 0 +github.com/ethereum/go-ethereum/eth/handler_snap.go:48.73,50.2 1 1 +github.com/ethereum/go-ethereum/eth/api.go:51.59,53.2 1 0 +github.com/ethereum/go-ethereum/eth/api.go:56.67,58.2 1 0 +github.com/ethereum/go-ethereum/eth/api.go:61.66,63.2 1 0 +github.com/ethereum/go-ethereum/eth/api.go:66.57,68.2 1 0 +github.com/ethereum/go-ethereum/eth/api.go:77.53,79.2 1 0 +github.com/ethereum/go-ethereum/eth/api.go:82.42,84.2 1 0 +github.com/ethereum/go-ethereum/eth/api.go:93.55,95.2 1 0 +github.com/ethereum/go-ethereum/eth/api.go:102.55,103.20 1 0 +github.com/ethereum/go-ethereum/eth/api.go:106.2,106.36 1 0 +github.com/ethereum/go-ethereum/eth/api.go:103.20,105.3 1 0 +github.com/ethereum/go-ethereum/eth/api.go:111.36,113.2 1 0 +github.com/ethereum/go-ethereum/eth/api.go:116.66,117.62 1 0 +github.com/ethereum/go-ethereum/eth/api.go:120.2,120.18 1 0 +github.com/ethereum/go-ethereum/eth/api.go:117.62,119.3 1 0 +github.com/ethereum/go-ethereum/eth/api.go:124.68,131.2 5 0 +github.com/ethereum/go-ethereum/eth/api.go:134.71,137.2 2 0 +github.com/ethereum/go-ethereum/eth/api.go:140.73,143.2 2 0 +github.com/ethereum/go-ethereum/eth/api.go:146.63,148.2 1 0 +github.com/ethereum/go-ethereum/eth/api.go:158.57,160.2 1 0 +github.com/ethereum/go-ethereum/eth/api.go:164.97,165.33 1 0 +github.com/ethereum/go-ethereum/eth/api.go:168.2,168.33 1 0 +github.com/ethereum/go-ethereum/eth/api.go:172.2,172.41 1 0 +github.com/ethereum/go-ethereum/eth/api.go:178.2,179.16 2 0 +github.com/ethereum/go-ethereum/eth/api.go:182.2,185.36 3 0 +github.com/ethereum/go-ethereum/eth/api.go:191.2,191.18 1 0 +github.com/ethereum/go-ethereum/eth/api.go:198.2,198.18 1 0 +github.com/ethereum/go-ethereum/eth/api.go:165.33,167.3 1 0 +github.com/ethereum/go-ethereum/eth/api.go:168.33,171.3 2 0 +github.com/ethereum/go-ethereum/eth/api.go:172.41,176.3 1 0 +github.com/ethereum/go-ethereum/eth/api.go:179.16,181.3 1 0 +github.com/ethereum/go-ethereum/eth/api.go:185.36,188.3 2 0 +github.com/ethereum/go-ethereum/eth/api.go:191.18,192.77 1 0 +github.com/ethereum/go-ethereum/eth/api.go:192.77,194.4 1 0 +github.com/ethereum/go-ethereum/eth/api.go:195.8,195.67 1 0 +github.com/ethereum/go-ethereum/eth/api.go:195.67,197.3 1 0 +github.com/ethereum/go-ethereum/eth/api.go:201.67,202.23 1 0 +github.com/ethereum/go-ethereum/eth/api.go:208.2,208.13 1 0 +github.com/ethereum/go-ethereum/eth/api.go:202.23,203.47 1 0 +github.com/ethereum/go-ethereum/eth/api.go:203.47,205.4 1 0 +github.com/ethereum/go-ethereum/eth/api.go:212.68,215.16 2 0 +github.com/ethereum/go-ethereum/eth/api.go:218.2,221.36 3 0 +github.com/ethereum/go-ethereum/eth/api.go:228.2,231.28 3 0 +github.com/ethereum/go-ethereum/eth/api.go:257.2,257.18 1 0 +github.com/ethereum/go-ethereum/eth/api.go:215.16,217.3 1 0 +github.com/ethereum/go-ethereum/eth/api.go:221.36,222.55 1 0 +github.com/ethereum/go-ethereum/eth/api.go:222.55,224.4 1 0 +github.com/ethereum/go-ethereum/eth/api.go:231.28,233.33 1 0 +github.com/ethereum/go-ethereum/eth/api.go:243.3,243.23 1 0 +github.com/ethereum/go-ethereum/eth/api.go:247.3,247.49 1 0 +github.com/ethereum/go-ethereum/eth/api.go:252.3,252.69 1 0 +github.com/ethereum/go-ethereum/eth/api.go:255.3,255.22 1 0 +github.com/ethereum/go-ethereum/eth/api.go:233.33,235.50 2 0 +github.com/ethereum/go-ethereum/eth/api.go:240.4,241.11 2 0 +github.com/ethereum/go-ethereum/eth/api.go:235.50,236.10 1 0 +github.com/ethereum/go-ethereum/eth/api.go:237.10,237.25 1 0 +github.com/ethereum/go-ethereum/eth/api.go:237.25,239.5 1 0 +github.com/ethereum/go-ethereum/eth/api.go:243.23,244.9 1 0 +github.com/ethereum/go-ethereum/eth/api.go:247.49,249.12 2 0 +github.com/ethereum/go-ethereum/eth/api.go:252.69,254.4 1 0 +github.com/ethereum/go-ethereum/eth/api.go:268.55,270.2 1 0 +github.com/ethereum/go-ethereum/eth/api.go:273.83,278.39 2 0 +github.com/ethereum/go-ethereum/eth/api.go:285.2,286.38 2 0 +github.com/ethereum/go-ethereum/eth/api.go:291.2,291.18 1 0 +github.com/ethereum/go-ethereum/eth/api.go:294.2,295.16 2 0 +github.com/ethereum/go-ethereum/eth/api.go:298.2,298.35 1 0 +github.com/ethereum/go-ethereum/eth/api.go:278.39,284.3 2 0 +github.com/ethereum/go-ethereum/eth/api.go:286.38,288.3 1 0 +github.com/ethereum/go-ethereum/eth/api.go:288.8,290.3 1 0 +github.com/ethereum/go-ethereum/eth/api.go:291.18,293.3 1 0 +github.com/ethereum/go-ethereum/eth/api.go:295.16,297.3 1 0 +github.com/ethereum/go-ethereum/eth/api.go:309.57,311.2 1 0 +github.com/ethereum/go-ethereum/eth/api.go:314.100,315.78 1 0 +github.com/ethereum/go-ethereum/eth/api.go:318.2,318.44 1 0 +github.com/ethereum/go-ethereum/eth/api.go:315.78,317.3 1 0 +github.com/ethereum/go-ethereum/eth/api.go:330.88,336.31 2 0 +github.com/ethereum/go-ethereum/eth/api.go:355.2,355.21 1 0 +github.com/ethereum/go-ethereum/eth/api.go:336.31,341.60 2 0 +github.com/ethereum/go-ethereum/eth/api.go:346.3,346.111 1 0 +github.com/ethereum/go-ethereum/eth/api.go:349.3,353.5 1 0 +github.com/ethereum/go-ethereum/eth/api.go:341.60,343.4 1 0 +github.com/ethereum/go-ethereum/eth/api.go:343.9,345.4 1 0 +github.com/ethereum/go-ethereum/eth/api.go:346.111,348.4 1 0 +github.com/ethereum/go-ethereum/eth/api.go:362.173,366.46 3 0 +github.com/ethereum/go-ethereum/eth/api.go:400.2,407.60 2 0 +github.com/ethereum/go-ethereum/eth/api.go:410.2,410.40 1 0 +github.com/ethereum/go-ethereum/eth/api.go:366.46,367.39 1 0 +github.com/ethereum/go-ethereum/eth/api.go:367.39,372.4 1 0 +github.com/ethereum/go-ethereum/eth/api.go:372.9,374.39 2 0 +github.com/ethereum/go-ethereum/eth/api.go:379.4,379.20 1 0 +github.com/ethereum/go-ethereum/eth/api.go:382.4,383.18 2 0 +github.com/ethereum/go-ethereum/eth/api.go:374.39,376.5 1 0 +github.com/ethereum/go-ethereum/eth/api.go:376.10,378.5 1 0 +github.com/ethereum/go-ethereum/eth/api.go:379.20,381.5 1 0 +github.com/ethereum/go-ethereum/eth/api.go:383.18,385.5 1 0 +github.com/ethereum/go-ethereum/eth/api.go:387.8,387.49 1 0 +github.com/ethereum/go-ethereum/eth/api.go:387.49,389.19 2 0 +github.com/ethereum/go-ethereum/eth/api.go:392.3,393.17 2 0 +github.com/ethereum/go-ethereum/eth/api.go:389.19,391.4 1 0 +github.com/ethereum/go-ethereum/eth/api.go:393.17,395.4 1 0 +github.com/ethereum/go-ethereum/eth/api.go:396.8,398.3 1 0 +github.com/ethereum/go-ethereum/eth/api.go:407.60,409.3 1 0 +github.com/ethereum/go-ethereum/eth/api.go:427.179,430.18 2 0 +github.com/ethereum/go-ethereum/eth/api.go:433.2,434.16 2 0 +github.com/ethereum/go-ethereum/eth/api.go:437.2,438.15 2 0 +github.com/ethereum/go-ethereum/eth/api.go:441.2,441.48 1 0 +github.com/ethereum/go-ethereum/eth/api.go:430.18,432.3 1 0 +github.com/ethereum/go-ethereum/eth/api.go:434.16,436.3 1 0 +github.com/ethereum/go-ethereum/eth/api.go:438.15,440.3 1 0 +github.com/ethereum/go-ethereum/eth/api.go:444.93,447.46 3 1 +github.com/ethereum/go-ethereum/eth/api.go:460.2,460.15 1 1 +github.com/ethereum/go-ethereum/eth/api.go:464.2,464.20 1 1 +github.com/ethereum/go-ethereum/eth/api.go:447.46,449.17 2 1 +github.com/ethereum/go-ethereum/eth/api.go:452.3,453.53 2 1 +github.com/ethereum/go-ethereum/eth/api.go:457.3,457.49 1 1 +github.com/ethereum/go-ethereum/eth/api.go:449.17,451.4 1 0 +github.com/ethereum/go-ethereum/eth/api.go:453.53,456.4 2 1 +github.com/ethereum/go-ethereum/eth/api.go:460.15,463.3 2 1 +github.com/ethereum/go-ethereum/eth/api.go:472.116,476.23 3 0 +github.com/ethereum/go-ethereum/eth/api.go:480.2,480.19 1 0 +github.com/ethereum/go-ethereum/eth/api.go:492.2,492.54 1 0 +github.com/ethereum/go-ethereum/eth/api.go:476.23,478.3 1 0 +github.com/ethereum/go-ethereum/eth/api.go:480.19,483.24 3 0 +github.com/ethereum/go-ethereum/eth/api.go:483.24,485.4 1 0 +github.com/ethereum/go-ethereum/eth/api.go:486.8,488.22 2 0 +github.com/ethereum/go-ethereum/eth/api.go:488.22,490.4 1 0 +github.com/ethereum/go-ethereum/eth/api.go:500.126,503.23 3 0 +github.com/ethereum/go-ethereum/eth/api.go:507.2,507.20 1 0 +github.com/ethereum/go-ethereum/eth/api.go:519.2,519.54 1 0 +github.com/ethereum/go-ethereum/eth/api.go:503.23,505.3 1 0 +github.com/ethereum/go-ethereum/eth/api.go:507.20,510.24 3 0 +github.com/ethereum/go-ethereum/eth/api.go:510.24,512.4 1 0 +github.com/ethereum/go-ethereum/eth/api.go:513.8,515.22 2 0 +github.com/ethereum/go-ethereum/eth/api.go:515.22,517.4 1 0 +github.com/ethereum/go-ethereum/eth/api.go:522.110,523.64 1 0 +github.com/ethereum/go-ethereum/eth/api.go:526.2,529.16 3 0 +github.com/ethereum/go-ethereum/eth/api.go:532.2,533.16 2 0 +github.com/ethereum/go-ethereum/eth/api.go:536.2,540.18 4 0 +github.com/ethereum/go-ethereum/eth/api.go:547.2,547.19 1 0 +github.com/ethereum/go-ethereum/eth/api.go:523.64,525.3 1 0 +github.com/ethereum/go-ethereum/eth/api.go:529.16,531.3 1 0 +github.com/ethereum/go-ethereum/eth/api.go:533.16,535.3 1 0 +github.com/ethereum/go-ethereum/eth/api.go:540.18,542.17 2 0 +github.com/ethereum/go-ethereum/eth/api.go:545.3,545.52 1 0 +github.com/ethereum/go-ethereum/eth/api.go:542.17,544.4 1 0 +github.com/ethereum/go-ethereum/eth/api.go:555.90,558.50 3 0 +github.com/ethereum/go-ethereum/eth/api.go:562.2,562.61 1 0 +github.com/ethereum/go-ethereum/eth/api.go:573.2,580.47 2 0 +github.com/ethereum/go-ethereum/eth/api.go:583.2,583.43 1 0 +github.com/ethereum/go-ethereum/eth/api.go:586.2,586.18 1 0 +github.com/ethereum/go-ethereum/eth/api.go:589.2,589.17 1 0 +github.com/ethereum/go-ethereum/eth/api.go:592.2,592.53 1 0 +github.com/ethereum/go-ethereum/eth/api.go:608.2,608.40 1 0 +github.com/ethereum/go-ethereum/eth/api.go:558.50,561.3 2 0 +github.com/ethereum/go-ethereum/eth/api.go:562.61,564.22 1 0 +github.com/ethereum/go-ethereum/eth/api.go:571.3,571.34 1 0 +github.com/ethereum/go-ethereum/eth/api.go:564.22,566.20 2 0 +github.com/ethereum/go-ethereum/eth/api.go:569.4,569.33 1 0 +github.com/ethereum/go-ethereum/eth/api.go:566.20,568.5 1 0 +github.com/ethereum/go-ethereum/eth/api.go:580.47,582.3 1 0 +github.com/ethereum/go-ethereum/eth/api.go:583.43,585.3 1 0 +github.com/ethereum/go-ethereum/eth/api.go:586.18,588.3 1 0 +github.com/ethereum/go-ethereum/eth/api.go:589.17,591.3 1 0 +github.com/ethereum/go-ethereum/eth/api.go:592.53,593.42 1 0 +github.com/ethereum/go-ethereum/eth/api.go:597.3,597.23 1 0 +github.com/ethereum/go-ethereum/eth/api.go:600.3,601.15 2 0 +github.com/ethereum/go-ethereum/eth/api.go:604.3,604.52 1 0 +github.com/ethereum/go-ethereum/eth/api.go:593.42,596.4 2 0 +github.com/ethereum/go-ethereum/eth/api.go:597.23,598.12 1 0 +github.com/ethereum/go-ethereum/eth/api.go:601.15,603.4 1 0 +github.com/ethereum/go-ethereum/eth/api.go:604.52,606.4 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:52.59,54.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:56.53,58.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:60.48,63.2 2 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:65.108,67.38 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:72.2,72.37 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:75.2,75.64 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:67.38,70.3 2 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:72.37,74.3 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:78.127,79.47 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:82.2,82.42 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:92.2,92.79 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:79.47,81.3 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:82.42,84.20 2 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:87.3,87.106 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:90.3,90.21 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:84.20,86.4 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:87.106,89.4 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:95.100,97.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:99.106,101.38 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:106.2,106.37 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:109.2,109.63 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:101.38,104.3 2 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:106.37,108.3 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:112.98,114.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:116.125,117.47 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:120.2,120.42 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:134.2,134.79 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:117.47,119.3 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:120.42,122.20 2 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:125.3,125.106 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:128.3,129.19 2 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:132.3,132.20 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:122.20,124.4 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:125.106,127.4 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:129.19,131.4 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:137.82,139.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:141.132,143.38 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:148.2,149.16 2 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:152.2,152.19 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:155.2,156.29 2 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:143.38,146.3 2 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:149.16,151.3 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:152.19,154.3 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:159.151,160.47 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:163.2,163.42 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:177.2,177.84 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:160.47,162.3 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:163.42,165.17 2 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:168.3,168.20 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:171.3,171.106 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:174.3,175.30 2 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:165.17,167.4 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:168.20,170.4 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:171.106,173.4 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:180.100,182.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:184.96,187.19 3 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:190.2,191.17 2 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:194.2,194.18 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:187.19,189.3 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:191.17,193.3 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:197.79,198.69 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:201.2,201.12 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:198.69,200.3 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:204.167,205.26 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:206.2,206.21 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:209.2,211.97 3 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:205.26,205.40 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:206.21,208.3 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:214.103,216.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:218.94,220.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:222.91,224.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:226.99,228.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:230.99,232.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:234.87,236.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:238.88,240.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:242.75,245.32 3 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:248.2,248.17 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:245.32,247.3 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:251.81,253.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:255.138,258.2 2 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:260.96,262.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:264.59,266.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:268.120,270.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:272.105,274.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:276.47,278.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:280.93,282.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:284.62,286.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:288.81,290.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:292.227,294.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:296.50,298.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:300.51,302.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:304.60,306.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:308.46,310.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:312.51,314.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:316.44,318.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:320.55,322.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:324.47,326.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:328.56,331.2 2 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:333.95,334.42 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:334.42,336.3 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:339.51,341.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:343.55,345.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:347.46,349.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:351.56,353.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:355.167,357.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:359.168,361.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:363.73,365.2 1 0 +github.com/ethereum/go-ethereum/eth/api_backend.go:367.52,369.2 1 0 +github.com/ethereum/go-ethereum/eth/handler_bor.go:38.90,41.16 2 0 +github.com/ethereum/go-ethereum/eth/handler_bor.go:47.2,48.57 2 0 +github.com/ethereum/go-ethereum/eth/handler_bor.go:54.2,55.16 2 0 +github.com/ethereum/go-ethereum/eth/handler_bor.go:60.2,60.50 1 0 +github.com/ethereum/go-ethereum/eth/handler_bor.go:66.2,67.16 2 0 +github.com/ethereum/go-ethereum/eth/handler_bor.go:72.2,74.66 2 0 +github.com/ethereum/go-ethereum/eth/handler_bor.go:41.16,44.3 2 0 +github.com/ethereum/go-ethereum/eth/handler_bor.go:48.57,51.3 2 0 +github.com/ethereum/go-ethereum/eth/handler_bor.go:55.16,58.3 2 0 +github.com/ethereum/go-ethereum/eth/handler_bor.go:60.50,63.3 2 0 +github.com/ethereum/go-ethereum/eth/handler_bor.go:67.16,70.3 2 0 +github.com/ethereum/go-ethereum/eth/sync.go:39.49,48.32 3 1 +github.com/ethereum/go-ethereum/eth/sync.go:51.2,51.19 1 1 +github.com/ethereum/go-ethereum/eth/sync.go:57.2,58.25 2 1 +github.com/ethereum/go-ethereum/eth/sync.go:61.2,61.44 1 1 +github.com/ethereum/go-ethereum/eth/sync.go:48.32,50.3 1 1 +github.com/ethereum/go-ethereum/eth/sync.go:51.19,53.3 1 1 +github.com/ethereum/go-ethereum/eth/sync.go:58.25,60.3 1 1 +github.com/ethereum/go-ethereum/eth/sync.go:83.52,88.2 1 1 +github.com/ethereum/go-ethereum/eth/sync.go:93.61,94.9 1 1 +github.com/ethereum/go-ethereum/eth/sync.go:95.36,96.14 1 1 +github.com/ethereum/go-ethereum/eth/sync.go:97.29,98.15 1 0 +github.com/ethereum/go-ethereum/eth/sync.go:103.31,117.6 9 1 +github.com/ethereum/go-ethereum/eth/sync.go:117.6,118.39 1 1 +github.com/ethereum/go-ethereum/eth/sync.go:121.3,121.10 1 1 +github.com/ethereum/go-ethereum/eth/sync.go:118.39,120.4 1 0 +github.com/ethereum/go-ethereum/eth/sync.go:122.25,122.25 0 1 +github.com/ethereum/go-ethereum/eth/sync.go:124.27,132.95 4 0 +github.com/ethereum/go-ethereum/eth/sync.go:136.21,137.20 1 0 +github.com/ethereum/go-ethereum/eth/sync.go:139.30,145.24 3 1 +github.com/ethereum/go-ethereum/eth/sync.go:148.4,148.10 1 1 +github.com/ethereum/go-ethereum/eth/sync.go:132.95,135.5 2 0 +github.com/ethereum/go-ethereum/eth/sync.go:145.24,147.5 1 0 +github.com/ethereum/go-ethereum/eth/sync.go:154.50,155.22 1 1 +github.com/ethereum/go-ethereum/eth/sync.go:166.2,166.36 1 1 +github.com/ethereum/go-ethereum/eth/sync.go:170.2,171.15 2 1 +github.com/ethereum/go-ethereum/eth/sync.go:176.2,176.39 1 1 +github.com/ethereum/go-ethereum/eth/sync.go:182.2,183.17 2 1 +github.com/ethereum/go-ethereum/eth/sync.go:186.2,188.27 3 1 +github.com/ethereum/go-ethereum/eth/sync.go:198.2,198.11 1 0 +github.com/ethereum/go-ethereum/eth/sync.go:155.22,157.3 1 0 +github.com/ethereum/go-ethereum/eth/sync.go:166.36,168.3 1 0 +github.com/ethereum/go-ethereum/eth/sync.go:171.15,173.3 1 0 +github.com/ethereum/go-ethereum/eth/sync.go:173.8,173.43 1 1 +github.com/ethereum/go-ethereum/eth/sync.go:173.43,175.3 1 0 +github.com/ethereum/go-ethereum/eth/sync.go:176.39,178.3 1 1 +github.com/ethereum/go-ethereum/eth/sync.go:183.17,185.3 1 0 +github.com/ethereum/go-ethereum/eth/sync.go:188.27,192.140 1 1 +github.com/ethereum/go-ethereum/eth/sync.go:196.3,196.13 1 1 +github.com/ethereum/go-ethereum/eth/sync.go:192.140,195.4 2 0 +github.com/ethereum/go-ethereum/eth/sync.go:201.71,204.2 2 1 +github.com/ethereum/go-ethereum/eth/sync.go:206.75,208.50 1 1 +github.com/ethereum/go-ethereum/eth/sync.go:215.2,215.75 1 1 +github.com/ethereum/go-ethereum/eth/sync.go:223.2,225.32 3 1 +github.com/ethereum/go-ethereum/eth/sync.go:208.50,212.3 3 0 +github.com/ethereum/go-ethereum/eth/sync.go:215.75,216.73 1 0 +github.com/ethereum/go-ethereum/eth/sync.go:216.73,220.4 3 0 +github.com/ethereum/go-ethereum/eth/sync.go:229.51,231.12 2 0 +github.com/ethereum/go-ethereum/eth/sync.go:231.12,231.50 1 0 +github.com/ethereum/go-ethereum/eth/sync.go:235.49,236.36 1 1 +github.com/ethereum/go-ethereum/eth/sync.go:255.2,256.16 2 1 +github.com/ethereum/go-ethereum/eth/sync.go:259.2,259.41 1 1 +github.com/ethereum/go-ethereum/eth/sync.go:265.2,266.44 2 1 +github.com/ethereum/go-ethereum/eth/sync.go:273.2,273.26 1 1 +github.com/ethereum/go-ethereum/eth/sync.go:282.2,282.12 1 1 +github.com/ethereum/go-ethereum/eth/sync.go:236.36,247.71 2 1 +github.com/ethereum/go-ethereum/eth/sync.go:247.71,249.4 1 1 +github.com/ethereum/go-ethereum/eth/sync.go:249.9,249.30 1 0 +github.com/ethereum/go-ethereum/eth/sync.go:249.30,252.4 2 0 +github.com/ethereum/go-ethereum/eth/sync.go:256.16,258.3 1 0 +github.com/ethereum/go-ethereum/eth/sync.go:259.41,262.3 2 1 +github.com/ethereum/go-ethereum/eth/sync.go:266.44,269.65 1 1 +github.com/ethereum/go-ethereum/eth/sync.go:269.65,271.4 1 0 +github.com/ethereum/go-ethereum/eth/sync.go:273.26,281.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:97.92,99.43 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:124.2,124.18 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:99.43,106.55 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:106.55,110.57 3 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:110.57,112.6 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:114.33,116.5 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:117.44,119.5 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:138.65,147.2 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:152.48,153.6 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:153.6,154.54 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:154.54,157.4 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:186.55,189.16 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:192.2,192.31 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:195.2,203.21 3 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:214.2,214.51 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:217.2,217.58 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:189.16,191.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:192.31,194.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:203.21,205.31 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:205.31,206.37 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:211.4,211.96 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:206.37,210.5 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:214.51,216.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:32.78,35.43 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:38.2,39.61 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:35.43,37.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:44.115,45.21 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:45.21,48.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:48.8,50.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:53.124,66.65 5 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:139.2,139.16 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:66.65,70.15 3 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:83.3,83.20 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:86.3,86.60 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:93.3,93.10 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:70.15,71.13 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:71.13,74.22 3 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:74.22,76.6 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:77.10,79.5 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:80.9,82.4 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:83.20,84.9 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:86.60,88.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:88.9,91.4 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:94.34,97.21 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:103.35,109.23 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:126.22,128.43 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:134.23,136.41 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:97.21,99.5 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:99.10,102.5 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:109.23,113.5 3 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:113.10,114.63 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:114.63,117.41 3 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:117.41,119.7 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:119.12,121.7 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:122.11,124.6 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:128.43,130.5 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:130.10,132.5 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:142.109,144.29 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:147.2,147.42 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:164.2,169.19 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:176.2,177.20 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:144.29,146.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:147.42,152.21 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:155.3,156.21 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:161.3,161.17 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:152.21,154.4 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:156.21,157.58 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:157.58,159.5 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:169.19,172.3 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:172.8,175.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:177.20,181.66 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:185.3,186.61 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:189.3,190.17 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:181.66,184.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:186.61,188.4 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:192.2,193.55 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:201.3,201.17 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:193.55,195.21 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:198.4,199.38 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:195.21,196.10 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:205.77,208.43 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:211.2,212.60 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:208.43,210.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:217.100,223.35 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:233.2,233.15 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:223.35,225.32 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:228.3,228.53 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:225.32,226.9 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:228.53,231.4 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:236.74,239.43 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:242.2,243.54 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:239.43,241.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:248.88,254.35 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:270.2,270.14 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:254.35,256.34 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:260.3,261.36 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:265.3,265.35 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:256.34,257.9 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:261.36,264.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:265.35,268.4 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:273.74,276.43 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:279.2,280.57 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:276.43,278.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:285.94,291.35 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:311.2,311.17 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:291.35,293.34 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:297.3,298.21 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:304.3,304.61 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:293.34,294.9 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:298.21,299.105 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:299.105,300.13 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:304.61,306.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:306.9,309.4 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:314.75,317.40 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:321.2,321.29 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:325.2,325.34 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:317.40,319.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:321.29,323.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:328.69,331.40 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:334.2,334.42 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:337.2,337.84 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:341.2,341.107 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:345.2,351.34 4 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:331.40,333.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:334.42,336.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:337.84,340.3 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:341.107,344.3 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:354.75,357.40 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:360.2,360.33 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:367.2,371.14 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:357.40,359.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:360.33,362.49 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:365.3,365.16 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:362.49,364.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:374.74,377.40 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:380.2,380.33 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:392.2,396.14 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:377.40,379.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:380.33,386.46 3 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:390.3,390.49 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:386.46,389.4 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:399.71,402.40 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:405.2,409.9 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:402.40,404.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:412.71,415.40 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:418.2,418.33 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:426.2,430.14 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:415.40,417.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:418.33,421.46 3 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:424.3,424.16 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:421.46,423.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:433.87,436.26 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:439.2,440.40 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:444.2,444.28 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:447.2,447.34 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:436.26,438.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:440.40,442.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:444.28,446.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:450.84,453.43 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:456.2,457.70 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:453.43,455.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:460.130,467.29 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:485.2,485.20 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:467.29,468.33 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:472.3,473.16 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:477.3,477.56 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:468.33,469.9 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:473.16,474.12 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:477.56,479.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:479.9,483.4 3 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:488.73,490.26 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:494.2,495.41 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:498.2,498.25 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:505.2,505.35 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:490.26,492.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:495.41,497.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:498.25,500.16 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:503.3,503.34 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:500.16,502.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:508.81,510.26 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:514.2,515.41 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:518.2,518.50 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:525.2,527.60 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:510.26,512.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:515.41,517.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:518.50,520.16 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:523.3,523.34 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:520.16,522.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:37.144,43.12 3 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:53.2,53.12 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:56.2,58.25 3 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:68.2,72.41 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:75.2,75.12 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:43.12,52.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:53.12,55.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:58.25,59.10 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:60.22,61.18 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:64.20,65.30 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:61.18,63.5 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:72.41,74.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:79.118,81.16 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:84.2,84.27 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:87.2,87.31 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:91.2,91.44 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:94.2,94.33 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:97.2,97.47 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:100.2,100.31 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:103.2,103.50 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:106.2,106.12 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:81.16,83.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:84.27,86.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:87.31,89.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:91.44,93.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:94.33,96.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:97.47,99.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:100.31,102.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:103.50,105.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:105.67,110.26 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:113.2,113.24 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:110.26,112.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:141.54,142.32 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:145.2,145.20 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:148.2,148.31 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:142.32,144.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:145.20,147.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:153.56,155.9 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:156.18,157.13 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:158.18,160.28 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:161.17,163.30 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:164.10,165.62 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:195.52,196.52 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:201.2,201.47 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:204.2,204.12 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:196.52,198.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:201.47,203.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:244.82,249.26 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:252.2,252.24 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:249.26,251.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:330.36,330.55 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:331.36,331.56 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:333.44,333.71 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:334.44,334.72 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:336.42,336.67 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:337.42,337.68 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:339.45,339.73 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:340.45,340.74 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:342.42,342.67 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:343.42,343.68 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:345.44,345.71 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:346.44,346.72 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:348.41,348.65 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:349.41,349.66 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:351.38,351.59 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:352.38,352.60 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:354.41,354.65 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:355.41,355.66 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:357.38,357.59 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:358.38,358.60 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:360.41,360.65 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:361.41,361.66 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:363.38,363.59 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:364.38,364.60 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:366.56,366.95 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:367.56,367.96 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:369.51,369.85 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:370.51,370.86 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:372.48,372.79 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:373.48,373.80 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:42.34,43.6 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:43.6,44.10 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:45.33,46.62 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:49.4,49.110 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:51.37,52.105 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:55.4,55.84 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:57.17,58.10 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:46.62,48.5 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:52.105,54.5 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:66.40,73.6 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:73.6,75.36 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:105.3,105.10 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:75.36,82.62 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:89.4,92.20 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:82.62,83.48 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:87.5,87.18 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:83.48,86.6 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:92.20,94.15 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:94.15,95.52 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:99.6,100.59 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:95.52,98.7 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:106.34,108.14 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:112.4,113.33 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:118.15,119.14 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:121.15,122.17 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:124.17,125.10 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:108.14,109.13 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:113.33,116.5 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:133.39,140.6 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:140.6,142.36 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:172.3,172.10 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:142.36,149.73 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:156.4,159.24 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:149.73,150.42 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:150.42,153.6 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:159.24,161.15 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:161.15,162.67 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:166.6,167.76 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:162.67,165.7 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:173.33,175.14 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:179.4,180.36 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:185.15,186.14 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:188.15,189.17 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:191.17,192.10 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:175.14,176.13 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:180.36,183.5 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/discovery.go:35.35,37.2 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/discovery.go:41.67,45.12 3 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/discovery.go:45.12,47.7 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/discovery.go:47.7,48.11 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/discovery.go:49.19,50.35 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/discovery.go:51.21,54.11 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/discovery.go:61.56,65.2 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:61.33,62.19 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:65.2,69.9 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:62.19,64.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:70.36,71.41 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:74.3,75.13 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:76.21,77.25 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:71.41,73.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:122.52,131.9 5 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:132.30,133.22 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:134.16,135.25 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:141.83,149.9 4 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:150.30,152.38 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:157.3,157.22 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:166.3,166.10 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:180.16,181.25 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:152.38,154.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:157.22,159.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:167.25,168.14 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:169.11,172.11 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:173.29,174.22 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:175.26,176.15 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:188.29,191.6 2 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:191.6,192.10 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:193.33,201.18 6 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:205.34,209.18 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:214.4,215.24 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:217.33,224.11 4 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:249.17,250.10 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:201.18,203.5 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:209.18,211.13 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:225.24,229.38 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:231.34,236.105 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:238.12,246.28 3 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:60.24,61.11 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:64.2,64.10 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:61.11,63.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:97.84,122.2 6 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:127.24,129.2 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:132.28,134.2 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:137.31,139.2 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:142.55,148.2 4 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:151.55,157.2 4 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:160.50,162.2 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:165.56,167.2 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:171.44,174.2 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:178.50,181.2 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:192.63,194.25 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:197.2,197.45 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:194.25,196.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:203.60,204.9 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:205.31,207.28 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:208.16,209.74 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:219.72,223.2 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:228.71,229.9 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:230.30,232.28 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:233.16,234.75 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:239.102,248.2 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:252.81,257.35 3 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:261.2,261.51 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:257.35,260.3 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:267.58,268.9 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:269.34,271.34 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:272.10,273.98 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:278.68,285.2 2 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:289.67,290.9 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:291.65,293.34 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:294.10,295.97 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:300.78,305.2 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:308.76,314.2 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:317.62,322.2 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:325.75,330.2 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:334.90,353.47 4 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:356.2,356.17 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:353.47,355.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:361.132,380.47 4 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:383.2,383.17 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:380.47,382.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:388.129,407.47 4 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:410.2,410.17 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:407.47,409.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:415.91,429.47 4 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:432.2,432.17 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:429.47,431.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:437.93,451.47 4 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:454.2,454.17 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:451.47,453.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:458.93,472.47 4 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:475.2,475.17 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:472.47,474.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:479.55,488.2 4 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:497.41,502.2 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:505.49,506.57 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:509.2,509.30 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:506.57,508.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:509.30,511.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:515.54,517.2 1 0 +github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:520.40,522.2 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:140.52,141.26 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:144.2,144.33 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:141.26,143.3 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:148.55,149.26 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:152.2,152.28 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:149.26,151.3 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:201.276,227.2 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:231.32,233.2 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:237.31,239.2 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:244.70,253.9 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:254.25,255.13 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:256.16,257.23 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:262.71,267.9 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:268.22,269.13 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:270.16,271.23 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:277.108,283.9 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:289.2,289.9 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:295.2,295.9 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:284.32,284.32 0 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:285.16,286.13 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:290.77,290.77 0 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:291.16,292.13 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:296.24,297.22 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:298.16,299.13 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:305.173,311.9 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:317.2,317.9 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:323.2,323.9 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:312.30,312.30 0 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:313.16,314.18 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:318.101,318.101 0 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:319.16,320.18 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:324.24,325.40 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:326.16,327.18 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:333.31,344.6 6 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:344.6,346.42 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:352.3,353.24 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:380.3,380.10 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:346.42,347.48 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:347.48,349.5 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:353.24,356.32 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:360.4,361.25 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:369.4,369.120 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:373.4,373.15 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:356.32,358.5 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:361.25,363.33 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:366.5,366.10 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:363.33,365.6 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:369.120,371.13 2 0 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:373.15,375.5 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:375.10,377.5 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:381.17,383.10 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:385.35,390.25 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:395.4,395.32 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:399.4,399.112 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:405.4,405.50 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:408.4,408.52 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:411.4,413.79 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:416.4,416.29 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:420.25,426.15 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:429.4,429.39 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:431.25,434.23 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:436.23,440.45 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:460.4,460.38 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:489.4,489.33 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:491.26,495.43 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:507.4,507.38 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:534.4,534.39 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:536.35,541.11 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:546.4,551.40 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:600.4,601.11 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:607.4,607.40 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:618.4,618.42 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:622.4,622.35 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:628.33,631.11 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:636.4,639.29 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:682.4,683.11 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:689.4,689.33 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:390.25,393.10 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:395.32,396.10 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:399.112,402.10 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:405.50,406.10 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:408.52,409.10 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:413.79,415.5 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:416.29,418.5 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:426.15,427.13 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:440.45,444.16 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:447.5,447.48 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:444.16,446.6 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:447.48,453.88 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:453.88,456.7 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:460.38,465.26 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:465.26,466.31 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:469.6,469.34 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:466.31,468.7 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:469.34,471.33 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:471.33,475.22 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:478.8,483.91 4 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:475.22,477.9 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:495.43,501.32 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:501.32,504.6 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:507.38,511.32 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:514.5,517.48 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:511.32,513.6 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:517.48,521.20 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:524.6,530.51 5 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:521.20,523.7 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:542.25,542.25 0 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:543.18,544.11 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:551.40,555.166 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:555.166,557.51 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:565.6,565.17 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:574.6,574.33 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:557.51,561.15 4 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:565.17,566.35 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:570.7,571.15 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:566.35,569.8 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:574.33,579.91 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:590.7,590.48 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:579.91,587.16 6 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:591.12,594.7 2 0 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:595.11,598.6 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:602.72,602.72 0 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:603.18,604.11 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:607.40,609.40 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:612.5,613.28 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:609.40,610.14 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:613.28,615.6 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:618.42,620.5 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:622.35,623.64 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:623.64,625.6 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:632.25,632.25 0 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:633.18,634.11 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:639.29,640.73 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:640.73,647.47 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:674.6,674.17 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:647.47,648.64 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:651.7,651.39 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:654.7,654.49 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:657.7,657.37 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:660.7,660.44 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:664.7,665.34 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:648.64,649.16 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:651.39,653.8 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:654.49,655.16 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:657.37,659.8 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:660.44,661.16 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:665.34,669.8 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:669.13,671.8 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:674.17,678.15 4 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:684.24,684.24 0 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:685.18,686.11 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:689.33,690.64 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:690.64,692.6 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:699.59,701.27 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:706.2,706.13 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:711.2,712.40 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:717.2,717.51 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:701.27,703.3 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:706.13,709.3 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:712.40,713.40 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:713.40,715.4 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:721.65,723.25 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:727.2,728.38 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:733.2,733.52 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:723.25,725.3 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:728.38,729.40 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:729.40,731.4 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:738.87,743.19 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:749.2,750.24 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:757.2,757.97 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:764.2,764.34 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:743.19,745.3 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:745.8,747.3 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:750.24,755.3 4 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:757.97,762.3 4 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:764.34,766.20 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:771.3,774.31 4 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:777.3,777.120 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:766.20,768.4 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:768.9,770.4 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:774.31,776.4 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:784.73,788.12 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:788.12,789.16 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:791.3,792.20 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:797.3,797.83 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:803.3,803.69 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:808.3,808.28 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:789.16,789.34 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:792.20,795.4 2 0 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:797.83,801.4 3 0 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:803.69,806.4 2 0 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:808.28,810.4 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:817.70,822.12 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:822.12,823.16 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:826.3,827.20 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:832.3,832.53 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:848.3,848.63 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:853.3,857.28 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:823.16,823.34 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:827.20,830.4 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:833.12,836.36 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:838.33,838.33 0 0 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:841.11,845.10 3 0 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:848.63,851.4 2 0 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:857.28,859.4 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:865.53,867.46 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:880.2,880.51 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:889.2,889.43 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:895.2,898.53 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:867.46,868.40 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:874.3,875.34 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:868.40,870.41 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:870.41,872.5 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:875.34,877.4 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:880.51,882.40 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:885.3,885.27 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:882.40,884.4 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:889.43,891.40 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:891.40,893.4 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:898.53,900.40 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:903.3,903.29 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:900.40,902.4 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:909.54,910.45 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:910.45,912.35 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:915.3,915.25 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:912.35,914.4 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:183.147,185.2 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:191.51,212.2 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:216.69,229.30 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:241.2,245.24 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:248.2,252.9 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:229.30,230.10 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:231.22,232.15 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:234.37,235.17 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:237.11,238.37 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:245.24,247.3 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:253.28,254.13 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:255.16,256.23 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:264.87,266.12 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:273.2,280.27 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:305.2,305.12 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:314.2,314.9 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:266.12,268.3 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:268.8,270.3 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:280.27,284.88 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:291.3,291.10 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:303.3,303.39 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:284.88,285.63 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:288.4,288.36 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:285.63,287.5 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:292.19,292.19 0 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:294.45,295.15 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:297.90,298.17 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:300.11,301.17 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:305.12,309.3 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:309.8,313.3 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:315.77,316.13 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:317.16,318.23 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:324.45,325.9 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:326.37,327.13 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:328.16,329.23 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:335.29,337.2 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:341.28,343.2 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:345.28,353.6 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:353.6,354.10 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:671.3,679.20 7 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:355.26,361.30 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:369.4,370.29 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:375.4,378.36 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:430.4,430.39 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:435.4,435.52 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:439.22,443.43 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:467.4,467.27 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:471.4,471.24 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:475.25,480.38 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:515.4,519.53 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:521.32,524.41 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:560.4,560.23 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:614.25,616.43 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:630.4,631.55 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:652.4,652.43 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:662.4,662.22 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:667.17,668.10 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:361.30,367.10 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:370.29,373.5 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:378.36,382.34 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:395.5,395.33 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:409.5,409.32 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:420.5,423.63 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:382.34,386.64 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:391.6,391.14 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:386.64,388.7 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:388.12,390.7 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:395.33,399.64 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:404.6,404.14 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:399.64,401.7 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:401.12,403.7 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:409.32,412.64 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:417.6,417.14 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:412.64,414.7 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:414.12,416.7 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:423.63,425.6 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:425.11,427.6 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:430.39,432.5 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:435.52,437.5 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:443.43,444.78 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:444.78,446.34 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:449.6,450.41 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:462.6,463.30 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:446.34,447.63 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:450.41,451.59 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:456.7,457.38 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:460.7,460.33 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:451.59,453.8 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:453.13,455.8 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:457.38,459.8 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:467.27,469.5 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:471.24,473.5 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:480.38,481.77 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:481.77,485.38 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:507.6,507.37 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:511.6,511.35 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:485.38,487.28 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:493.7,493.41 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:496.7,496.36 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:499.7,500.38 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:503.7,505.31 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:487.28,488.41 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:488.41,489.17 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:493.41,494.66 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:496.36,498.8 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:500.38,502.8 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:507.37,509.7 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:524.41,525.38 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:525.38,526.43 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:532.6,533.30 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:526.43,528.26 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:528.26,530.8 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:534.11,535.43 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:541.6,547.95 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:555.6,555.30 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:535.43,537.26 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:537.26,539.8 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:547.95,549.24 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:553.7,553.32 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:549.24,552.8 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:560.23,566.19 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:570.5,575.42 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:578.5,579.37 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:585.5,585.37 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:611.5,611.57 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:566.19,568.11 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:575.42,577.6 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:579.37,580.38 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:580.38,582.7 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:585.37,587.27 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:592.6,592.39 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:607.6,608.30 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:587.27,588.40 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:588.40,589.16 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:592.39,593.21 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:600.7,600.38 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:593.21,596.50 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:596.50,598.9 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:600.38,601.42 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:604.8,604.46 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:601.42,602.103 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:616.43,617.46 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:624.5,625.28 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:617.46,619.36 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:619.36,622.7 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:625.28,627.6 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:631.55,632.41 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:649.5,649.34 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:632.41,634.31 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:640.6,641.38 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:647.6,647.30 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:634.31,635.44 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:635.44,636.16 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:641.38,643.7 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:643.12,646.7 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:652.43,653.46 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:659.5,659.35 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:653.46,655.37 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:655.37,657.7 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:662.22,665.5 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:679.20,681.4 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:691.80,692.19 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:695.2,698.38 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:706.2,706.81 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:692.19,694.3 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:698.38,699.26 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:699.26,701.65 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:701.65,702.10 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:706.81,708.3 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:725.83,726.19 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:729.2,732.33 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:744.2,744.80 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:726.19,728.3 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:732.33,734.24 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:737.3,737.26 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:734.24,735.12 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:737.26,739.64 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:739.64,740.10 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:744.80,746.3 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:750.112,753.20 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:759.2,759.23 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:763.2,765.43 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:808.2,808.33 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:753.20,755.33 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:755.33,757.4 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:759.23,761.3 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:765.43,766.30 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:769.3,769.34 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:772.3,773.64 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:793.3,793.22 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:766.30,768.4 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:769.34,771.4 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:773.64,774.38 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:790.4,790.15 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:774.38,778.40 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:781.5,786.39 4 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:778.40,779.100 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:786.39,788.6 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:793.22,797.47 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:797.47,800.52 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:800.52,803.6 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:808.33,810.3 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:815.82,817.19 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:824.2,825.26 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:828.2,830.28 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:817.19,818.27 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:821.3,821.9 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:818.27,820.4 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:825.26,827.3 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:830.28,832.3 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:837.98,839.19 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:848.2,849.27 2 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:852.2,854.28 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:839.19,840.28 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:845.3,845.9 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:840.28,841.17 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:841.17,843.5 1 0 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:849.27,851.3 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:854.28,855.16 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:855.16,857.4 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:863.43,867.33 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:867.33,869.3 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:874.38,875.34 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:875.34,876.39 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:876.39,877.51 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:877.51,879.5 1 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:886.47,890.33 3 1 +github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:890.33,892.3 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:91.35,93.2 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:100.56,102.2 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:104.87,106.16 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:109.2,109.27 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:112.2,113.16 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:116.2,116.15 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:106.16,108.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:109.27,111.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:113.16,115.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:121.69,123.2 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:127.98,129.16 2 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:132.2,132.18 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:135.2,135.19 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:129.16,131.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:132.18,134.3 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:140.90,142.16 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:145.2,145.18 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:148.2,148.19 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:142.16,144.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:145.18,147.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:156.123,158.16 2 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:161.2,161.26 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:164.2,164.35 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:158.16,160.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:161.26,163.3 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:224.125,226.16 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:229.2,230.16 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:233.2,233.41 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:236.2,236.46 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:226.16,228.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:230.16,232.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:233.41,235.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:242.122,245.16 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:248.2,253.43 3 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:256.2,258.22 3 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:261.2,267.34 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:304.2,310.12 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:403.2,403.12 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:430.2,430.17 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:245.16,247.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:253.43,255.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:258.22,260.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:267.34,269.13 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:269.13,273.28 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:273.28,277.50 3 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:295.5,295.12 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:277.50,285.20 4 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:291.6,292.51 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:285.20,288.12 3 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:296.26,296.26 0 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:297.30,298.12 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:310.12,320.16 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:334.3,336.70 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:320.16,324.11 3 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:332.4,332.18 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:325.23,326.158 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:327.34,328.161 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:329.12,330.145 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:336.70,338.11 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:344.4,345.32 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:348.4,352.42 3 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:357.4,358.18 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:364.4,365.18 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:369.4,369.60 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:384.4,387.18 3 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:392.4,393.11 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:398.4,398.30 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:339.29,340.11 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:341.12,341.12 0 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:345.32,347.5 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:352.42,355.5 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:358.18,360.10 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:365.18,367.10 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:369.60,374.34 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:378.5,379.59 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:374.34,376.6 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:379.59,382.6 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:387.18,389.10 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:394.138,394.138 0 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:395.29,396.11 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:403.12,408.28 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:408.28,421.62 6 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:421.62,422.58 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:425.5,426.11 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:422.58,424.6 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:435.128,437.16 2 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:440.2,440.43 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:437.16,439.3 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:445.120,447.16 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:450.2,450.43 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:447.16,449.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:455.116,457.65 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:460.2,460.43 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:457.65,459.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:465.117,467.16 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:470.2,470.42 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:467.16,469.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:476.117,478.18 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:481.2,481.43 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:478.18,480.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:487.123,489.16 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:492.2,492.57 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:489.16,491.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:497.118,499.18 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:503.2,503.18 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:506.2,506.28 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:509.2,510.16 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:513.2,514.43 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:517.2,518.16 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:521.2,528.42 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:549.2,549.19 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:499.18,502.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:503.18,505.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:506.28,508.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:510.16,512.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:514.43,516.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:518.16,520.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:528.42,535.95 3 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:547.3,547.70 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:535.95,544.4 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:555.126,557.18 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:560.2,560.57 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:557.18,559.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:566.116,567.28 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:570.2,571.16 2 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:574.2,575.43 2 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:578.2,579.16 2 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:583.2,592.24 3 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:595.2,596.34 2 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:619.2,621.25 3 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:637.2,641.19 3 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:644.2,644.21 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:567.28,569.3 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:571.16,573.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:575.43,577.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:579.16,581.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:592.24,594.3 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:596.34,598.13 2 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:598.13,602.27 3 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:602.27,610.19 4 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:614.5,614.54 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:610.19,612.14 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:621.25,629.95 5 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:635.3,635.65 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:629.95,631.9 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:641.19,643.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:650.125,652.55 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:657.2,657.28 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:660.2,661.16 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:664.2,665.43 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:668.2,669.16 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:673.2,677.19 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:681.2,697.46 3 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:708.2,708.42 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:762.2,762.19 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:652.55,653.40 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:653.40,655.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:657.28,659.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:661.16,663.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:665.43,667.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:669.16,671.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:677.19,680.3 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:697.46,703.67 4 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:703.67,706.4 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:708.42,719.55 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:740.3,743.20 4 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:746.3,746.18 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:750.3,750.17 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:755.3,758.26 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:719.55,722.14 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:725.4,726.18 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:729.4,737.5 3 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:722.14,724.5 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:726.18,728.5 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:743.20,745.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:746.18,749.4 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:750.17,752.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:758.26,759.9 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:767.60,768.42 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:773.2,773.14 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:768.42,769.24 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:769.24,771.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:778.115,780.15 2 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:789.2,789.16 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:794.2,794.22 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:797.2,798.43 2 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:801.2,802.16 2 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:805.2,806.16 2 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:809.2,814.61 2 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:780.15,783.16 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:783.16,787.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:789.16,791.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:794.22,796.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:798.43,800.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:802.16,804.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:806.16,808.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:821.160,827.42 2 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:834.2,834.16 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:838.2,839.43 2 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:842.2,843.16 2 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:847.2,847.19 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:853.2,854.16 2 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:857.2,860.19 3 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:868.2,868.73 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:827.42,829.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:829.8,829.53 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:829.53,831.3 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:831.8,833.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:834.16,836.3 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:839.43,841.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:843.16,845.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:847.19,848.62 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:848.62,850.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:854.16,856.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:860.19,867.3 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:874.173,881.9 2 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:909.2,915.16 4 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:920.2,920.33 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:882.21,883.39 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:884.28,887.28 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:892.3,892.55 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:905.10,906.49 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:887.28,888.70 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:888.70,890.5 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:892.55,894.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:894.9,896.14 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:902.4,903.14 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:896.14,898.63 2 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:898.63,900.6 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:915.16,917.3 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:921.28,924.31 2 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:927.3,932.9 1 1 +github.com/ethereum/go-ethereum/eth/tracers/api.go:934.14,935.28 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:937.10,938.51 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:924.31,926.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/api.go:943.38,953.2 1 0 +github.com/ethereum/go-ethereum/eth/tracers/tracers.go:55.55,56.14 1 0 +github.com/ethereum/go-ethereum/eth/tracers/tracers.go:56.14,58.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/tracers.go:58.8,60.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/tracers.go:65.53,66.33 1 0 +github.com/ethereum/go-ethereum/eth/tracers/tracers.go:71.2,71.44 1 0 +github.com/ethereum/go-ethereum/eth/tracers/tracers.go:66.33,67.51 1 0 +github.com/ethereum/go-ethereum/eth/tracers/tracers.go:67.51,69.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:37.33,39.2 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:42.57,44.41 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:44.41,46.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:50.72,56.2 2 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:60.51,62.27 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:65.2,65.23 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:70.2,70.26 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:76.2,76.30 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:93.2,93.13 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:62.27,64.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:65.23,66.32 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:66.32,68.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:70.26,71.29 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:71.29,73.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:76.30,79.36 2 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:82.3,82.27 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:87.3,87.32 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:79.36,81.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:82.27,83.38 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:83.38,85.5 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:87.32,88.33 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:88.33,90.5 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:97.52,99.30 2 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:106.2,106.12 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:99.30,101.27 2 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:104.3,104.27 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:101.27,103.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:119.121,123.35 2 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:126.2,127.25 2 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:135.2,138.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:123.35,125.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:127.25,128.37 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:131.3,131.39 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:128.37,130.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:131.39,133.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:141.150,142.2 0 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:145.144,149.58 4 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:153.2,153.138 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:159.2,159.107 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:149.58,152.3 2 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:153.138,155.33 2 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:155.33,157.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:159.107,161.33 2 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:161.33,163.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:167.129,168.2 0 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:170.97,170.98 0 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:172.137,173.2 0 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:175.81,175.82 0 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:178.58,180.2 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:183.64,185.2 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:18.50,51.2 17 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:54.55,70.52 3 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:73.2,73.19 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:76.2,76.19 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:79.2,79.20 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:82.2,82.24 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:85.2,85.23 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:88.2,88.27 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:91.2,91.22 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:94.2,94.27 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:97.2,97.24 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:100.2,100.22 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:103.2,103.30 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:106.2,106.20 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:109.2,109.12 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:70.52,72.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:73.19,75.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:76.19,78.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:79.20,81.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:82.24,84.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:85.23,87.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:88.27,90.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:91.22,93.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:94.27,96.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:97.24,99.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:100.22,102.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:103.30,105.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:106.20,108.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:40.33,42.28 2 1 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:45.2,45.12 1 1 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:42.28,44.3 1 1 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:90.37,92.2 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:95.42,96.18 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:99.2,99.11 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:96.18,98.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:118.49,122.16 2 1 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:125.2,125.15 1 1 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:122.16,124.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:129.32,134.2 4 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:137.145,139.2 1 1 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:144.140,149.52 4 1 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:153.2,154.24 2 1 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:159.2,160.25 2 1 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:166.2,170.66 4 1 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:194.2,195.28 2 1 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:200.2,201.30 2 1 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:149.52,151.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:154.24,157.3 2 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:160.25,162.37 2 1 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:162.37,164.4 1 1 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:170.66,173.43 1 1 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:177.3,177.38 1 1 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:173.43,175.4 1 1 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:177.38,184.4 3 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:184.9,184.46 1 1 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:184.46,192.4 3 1 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:195.28,198.3 2 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:206.127,207.2 0 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:210.94,213.17 3 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:213.17,215.17 2 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:215.17,217.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:221.135,222.2 0 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:224.79,224.80 0 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:227.49,227.66 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:230.38,230.54 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:233.40,233.59 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:236.53,237.27 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:237.27,239.21 2 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:242.3,244.25 2 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:250.3,250.26 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:254.3,254.27 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:260.3,260.30 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:264.3,264.23 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:239.21,241.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:244.25,246.45 2 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:246.45,248.5 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:250.26,253.4 2 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:254.27,256.37 2 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:256.37,258.5 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:260.30,263.4 2 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:269.53,270.27 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:270.27,273.36 2 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:277.3,278.23 2 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:273.36,275.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:290.65,292.18 2 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:295.2,295.10 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:292.18,294.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:298.141,300.13 2 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:310.2,313.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:300.13,304.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:304.8,308.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:317.136,321.25 3 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:330.2,332.16 3 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:321.25,324.37 2 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:327.3,328.34 2 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:324.37,326.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:332.16,334.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:337.122,339.2 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:341.91,344.2 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:346.131,347.2 0 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:349.75,349.76 0 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:38.63,40.18 2 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:43.2,43.10 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:40.18,42.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:46.128,48.2 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:50.131,53.2 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:56.138,70.24 4 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:73.2,73.25 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:76.2,76.28 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:79.2,79.23 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:70.24,72.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:73.25,75.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:76.28,78.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:83.92,91.16 3 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:94.2,94.93 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:91.16,93.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:97.133,98.2 0 0 +github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:100.77,100.78 0 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter_system.go:12.90,13.51 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter_system.go:13.51,15.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter_system.go:19.91,32.2 2 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:70.116,75.24 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:82.2,82.35 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:89.2,98.15 6 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:75.24,77.37 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:80.3,80.36 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:77.37,79.4 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:82.35,84.35 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:87.3,87.36 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:84.35,86.4 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:103.117,108.2 3 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:112.93,119.2 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:123.66,125.32 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:136.2,137.19 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:140.2,142.19 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:145.2,146.17 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:150.2,155.59 3 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:165.2,167.18 3 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:125.32,127.17 2 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:130.3,130.20 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:133.3,133.34 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:127.17,129.4 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:130.20,132.4 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:137.19,139.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:142.19,144.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:146.17,148.3 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:155.59,156.20 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:161.3,161.17 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:156.20,158.4 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:158.9,160.4 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:161.17,163.4 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:172.85,177.16 3 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:180.2,187.6 4 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:177.16,179.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:187.6,188.10 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:189.32,191.11 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:198.4,202.35 3 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:205.4,206.18 2 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:209.4,209.33 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:211.21,212.26 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:191.11,193.19 2 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:196.5,196.21 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:193.19,195.6 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:202.35,204.5 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:206.18,208.5 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:219.87,222.41 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:233.2,233.18 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:222.41,224.34 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:227.3,228.17 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:231.3,231.32 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:224.34,226.4 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:228.17,230.4 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:237.102,238.54 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:245.2,245.18 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:238.54,240.17 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:243.3,243.32 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:240.17,242.4 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:250.105,253.16 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:256.2,257.32 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:260.2,261.19 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:276.2,276.17 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:253.16,255.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:257.32,259.3 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:261.19,263.40 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:274.3,274.19 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:263.40,265.18 2 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:268.4,269.37 2 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:272.4,272.66 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:265.18,267.5 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:269.37,271.5 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter.go:279.66,280.33 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:286.2,286.14 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:280.33,281.16 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:281.16,283.4 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:290.130,293.27 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:322.2,322.12 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:293.27,294.89 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:297.3,297.83 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:301.3,301.62 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:305.3,305.36 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:308.3,308.30 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:320.3,320.25 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:294.89,295.12 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:297.83,298.12 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:301.62,302.12 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:305.36,306.17 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:308.30,310.30 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:316.4,316.14 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:310.30,311.31 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:311.31,313.11 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:316.14,317.18 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:325.94,326.24 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:339.2,339.29 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:351.2,351.13 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:326.24,328.34 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:334.3,334.16 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:328.34,329.38 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:329.38,331.10 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:334.16,336.4 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:339.29,341.29 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:347.3,347.16 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:341.29,342.39 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:342.39,344.10 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter.go:347.16,349.4 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:123.67,146.111 8 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:150.2,151.10 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:146.111,148.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:163.45,165.2 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:168.40,169.26 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:169.26,171.7 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:188.3,188.14 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:171.7,176.11 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:177.35,178.24 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:179.22,179.22 0 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:180.24,180.24 0 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:181.25,181.25 0 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:193.67,197.2 3 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:202.112,204.27 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:209.2,209.25 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:216.2,216.68 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:220.2,220.66 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:224.2,224.40 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:228.2,228.67 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:232.2,232.46 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:235.2,235.76 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:204.27,206.3 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:206.8,208.3 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:209.25,211.3 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:211.8,213.3 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:216.68,218.3 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:220.66,222.3 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:224.40,226.3 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:228.67,230.3 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:232.46,234.3 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:240.115,253.2 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:257.103,270.2 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:274.110,287.2 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:291.84,303.2 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:307.85,319.2 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:323.73,324.18 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:327.2,327.46 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:324.18,326.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:327.46,329.27 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:329.27,331.4 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:335.80,336.18 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:339.2,339.53 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:336.18,338.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:339.53,341.27 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:341.27,343.4 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:347.89,348.46 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:348.46,350.27 2 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:350.27,352.4 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:356.81,358.28 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:361.2,361.61 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:358.28,360.3 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:361.61,363.3 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:366.82,367.48 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:370.2,370.56 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:367.48,369.3 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:370.56,371.84 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:371.84,372.48 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:372.48,373.121 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:373.121,375.6 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:381.104,384.17 3 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:387.2,390.33 3 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:405.2,405.31 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:409.2,409.44 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:384.17,386.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:390.33,391.51 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:395.3,395.50 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:391.51,394.4 2 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:395.50,398.19 3 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:398.19,401.5 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:405.31,407.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:409.44,411.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:415.140,416.50 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:451.2,451.12 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:416.50,421.17 4 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:424.3,425.33 2 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:432.3,433.57 2 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:449.3,449.14 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:421.17,423.4 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:425.33,426.29 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:426.29,430.5 3 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:433.57,436.18 2 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:439.4,440.37 2 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:447.4,447.62 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:436.18,438.5 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:440.37,441.38 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:441.38,445.6 3 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:455.36,457.15 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:466.2,467.63 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:471.2,471.6 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:457.15,464.3 6 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:467.63,469.3 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:471.6,472.10 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:473.25,474.32 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:475.26,476.28 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:477.28,478.35 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:479.33,480.35 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:481.27,482.34 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:483.31,484.38 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:486.26,487.48 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:494.4,494.22 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:496.28,497.48 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:504.4,504.16 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:507.26,508.10 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:509.27,510.10 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:511.29,512.10 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:513.28,514.10 1 0 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:487.48,491.5 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:491.10,493.5 1 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:497.48,501.5 2 1 +github.com/ethereum/go-ethereum/eth/filters/filter_system.go:501.10,503.5 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:64.112,75.2 3 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:79.64,83.6 4 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:83.6,86.34 3 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:95.3,100.33 2 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:103.3,103.20 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:86.34,87.11 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:88.24,90.28 2 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:91.12,92.13 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:100.33,102.4 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:114.66,124.12 5 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:142.2,142.24 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:124.12,125.7 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:125.7,126.11 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:127.28,129.56 2 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:132.5,132.27 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:133.30,137.11 4 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:129.56,131.6 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:147.100,149.16 2 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:153.2,155.12 2 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:177.2,177.20 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:149.16,151.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:155.12,159.7 3 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:159.7,160.11 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:161.30,164.30 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:167.24,169.11 2 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:170.29,172.11 2 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:164.30,166.6 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:184.53,194.12 5 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:212.2,212.21 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:194.12,195.7 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:195.7,196.11 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:197.24,199.53 2 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:202.5,202.27 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:203.27,207.11 4 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:199.53,201.6 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:216.86,218.16 2 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:222.2,224.12 2 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:242.2,242.20 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:218.16,220.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:224.12,228.7 3 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:228.7,229.11 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:230.24,231.34 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:232.24,234.11 2 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:235.29,237.11 2 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:246.103,248.16 2 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:252.2,258.16 3 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:262.2,262.12 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:280.2,280.20 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:248.16,250.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:258.16,260.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:262.12,264.7 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:264.7,265.11 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:266.31,267.30 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:270.24,272.11 2 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:273.29,275.11 2 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:267.30,269.6 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:300.76,303.16 3 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:307.2,311.12 4 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:329.2,329.24 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:303.16,305.3 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:311.12,312.7 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:312.7,313.11 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:314.21,316.51 2 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:319.5,319.27 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:320.25,324.11 4 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:316.51,318.6 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:335.101,336.28 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:341.2,345.27 4 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:371.2,372.16 2 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:376.2,376.26 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:387.2,387.30 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:336.28,338.3 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:345.27,349.18 2 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:349.18,351.4 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:352.8,355.28 2 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:358.3,359.26 2 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:363.3,365.18 2 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:355.28,357.4 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:359.26,361.4 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:365.18,367.4 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:372.16,374.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:376.26,379.17 2 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:383.3,383.65 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:379.17,381.4 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:393.61,396.11 3 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:399.2,400.11 2 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:404.2,404.14 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:396.11,398.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:400.11,402.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:411.97,416.41 4 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:420.2,421.29 2 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:438.2,439.16 2 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:442.2,442.30 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:416.41,418.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:421.29,424.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:424.8,427.30 2 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:430.3,431.28 2 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:435.3,435.84 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:427.30,429.4 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:431.28,433.4 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:439.16,441.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:452.78,456.40 3 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:476.2,476.56 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:456.40,457.25 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:462.3,464.16 2 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:457.25,461.4 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:465.60,468.36 3 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:469.58,472.32 3 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:481.55,482.19 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:485.2,485.15 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:482.19,484.3 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:490.49,491.17 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:494.2,494.13 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:491.17,493.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:498.62,508.51 3 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:512.2,512.26 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:528.2,530.26 2 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:558.2,558.25 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:597.2,597.12 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:508.51,510.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:512.26,513.49 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:517.3,517.33 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:513.49,516.4 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:518.8,519.27 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:523.3,523.25 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:519.27,521.4 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:523.25,525.4 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:530.26,532.42 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:533.22,534.33 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:545.15,547.18 2 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:550.4,550.43 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:551.11,552.51 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:534.33,535.41 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:535.41,537.20 2 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:540.6,540.51 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:537.20,539.7 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:541.11,543.6 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:547.18,549.5 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:558.25,560.32 2 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:560.32,561.29 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:562.13,562.13 0 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:565.16,568.19 2 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:571.5,571.40 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:573.23,575.36 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:591.12,592.42 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:568.19,570.6 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:575.36,576.25 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:581.6,581.44 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:576.25,579.12 2 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:581.44,583.21 2 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:586.7,586.54 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:583.21,585.8 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:587.12,589.7 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:600.54,602.50 2 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:605.2,605.38 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:602.50,604.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/api.go:608.49,610.47 2 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:613.2,613.35 1 1 +github.com/ethereum/go-ethereum/eth/filters/api.go:610.47,612.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_api.go:16.77,18.2 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_api.go:20.109,21.28 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_api.go:26.2,29.27 3 0 +github.com/ethereum/go-ethereum/eth/filters/bor_api.go:47.2,48.16 2 0 +github.com/ethereum/go-ethereum/eth/filters/bor_api.go:51.2,51.30 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_api.go:21.28,23.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_api.go:29.27,32.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_api.go:32.8,35.28 2 0 +github.com/ethereum/go-ethereum/eth/filters/bor_api.go:38.3,39.26 2 0 +github.com/ethereum/go-ethereum/eth/filters/bor_api.go:43.3,43.100 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_api.go:35.28,37.4 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_api.go:39.26,41.4 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_api.go:48.16,50.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_api.go:55.120,57.16 2 0 +github.com/ethereum/go-ethereum/eth/filters/bor_api.go:61.2,62.12 2 0 +github.com/ethereum/go-ethereum/eth/filters/bor_api.go:83.2,83.20 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_api.go:57.16,59.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_api.go:62.12,66.7 3 0 +github.com/ethereum/go-ethereum/eth/filters/bor_api.go:66.7,67.11 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_api.go:68.30,70.58 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_api.go:73.24,75.11 2 0 +github.com/ethereum/go-ethereum/eth/filters/bor_api.go:76.29,78.11 2 0 +github.com/ethereum/go-ethereum/eth/filters/bor_api.go:70.58,72.6 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:43.155,50.2 4 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:54.151,59.2 3 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:63.132,71.2 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:75.78,77.32 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:86.2,87.19 2 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:90.2,92.19 2 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:97.2,100.17 3 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:105.2,105.42 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:77.32,79.21 2 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:82.3,82.38 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:79.21,81.4 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:87.19,89.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:92.19,94.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:100.17,102.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:110.99,113.54 2 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:132.2,132.18 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:113.54,115.34 2 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:120.3,121.35 2 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:126.3,127.17 2 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:130.3,130.32 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:115.34,117.4 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:121.35,122.12 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:127.17,129.4 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:136.119,137.55 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:140.2,140.18 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:137.55,139.3 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:143.53,145.12 2 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:149.2,149.19 1 0 +github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:145.12,147.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/discovery.go:30.35,32.2 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:86.76,88.59 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:93.2,94.43 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:116.2,116.18 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:88.59,91.3 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:94.43,101.55 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:101.55,102.76 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:102.76,104.6 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:106.33,108.5 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:109.44,111.5 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:121.48,122.6 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:122.6,123.54 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:123.54,126.4 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:133.55,136.16 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:139.2,139.31 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:142.2,145.21 3 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:157.2,157.9 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:136.16,138.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:139.31,141.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:145.21,147.31 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:147.31,148.37 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:153.4,153.96 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:148.37,152.5 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:158.38,161.42 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:165.3,172.5 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:174.35,177.41 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:181.3,181.42 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:186.3,188.35 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:190.39,193.42 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:197.3,204.5 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:206.36,209.41 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:213.3,213.35 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:220.3,222.35 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:224.35,227.42 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:231.3,237.5 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:239.32,242.41 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:245.3,247.35 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:249.35,252.42 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:256.3,257.17 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:261.3,264.5 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:266.32,269.41 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:272.3,274.35 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:276.10,277.59 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:161.42,163.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:177.41,179.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:181.42,182.78 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:182.78,184.5 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:193.42,195.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:209.41,211.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:213.35,214.36 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:214.36,215.65 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:215.65,217.6 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:227.42,229.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:242.41,244.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:252.42,254.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:257.17,259.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:269.41,271.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:283.113,284.35 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:288.2,289.16 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:292.2,293.16 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:297.2,302.16 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:322.2,326.58 3 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:330.2,330.29 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:336.2,337.40 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:340.2,340.25 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:284.35,286.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:289.16,291.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:293.16,295.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:302.16,315.48 5 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:318.3,318.23 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:315.48,316.9 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:318.23,319.9 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:326.58,329.3 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:330.29,331.53 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:331.53,334.4 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:337.40,339.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:343.117,344.35 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:352.2,360.39 3 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:448.2,448.22 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:344.35,346.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:360.39,363.24 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:367.3,368.26 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:371.3,372.25 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:376.3,377.17 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:381.3,386.17 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:407.3,413.41 3 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:363.24,364.9 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:368.26,370.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:372.25,374.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:377.17,379.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:386.17,387.25 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:391.4,403.45 5 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:387.25,389.10 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:403.45,404.10 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:413.41,417.18 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:420.4,421.73 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:424.4,425.18 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:428.4,429.60 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:433.4,433.31 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:439.4,439.42 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:445.4,445.9 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:417.18,419.5 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:421.73,423.5 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:425.18,427.5 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:429.60,432.5 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:433.31,434.59 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:434.59,437.6 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:439.42,441.5 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:453.89,454.35 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:457.2,457.38 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:461.2,465.34 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:478.2,478.14 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:454.35,456.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:457.38,459.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:465.34,466.24 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:474.3,474.24 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:466.24,470.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:470.9,470.73 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:470.73,473.4 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:474.24,475.9 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:483.115,484.35 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:488.2,491.16 3 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:495.2,496.17 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:504.2,509.36 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:557.2,557.19 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:484.35,486.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:491.16,494.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:496.17,502.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:509.36,510.23 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:553.3,553.98 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:511.10,513.76 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:515.10,519.18 3 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:522.4,523.30 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:525.11,529.36 3 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:532.4,534.18 3 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:537.4,537.37 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:519.18,520.10 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:529.36,530.10 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:534.18,535.10 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:537.37,540.19 3 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:543.5,547.100 3 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:540.19,541.11 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:547.100,548.11 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:553.98,554.9 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:565.49,567.2 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/peer.go:38.69,47.2 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/peer.go:50.71,57.2 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/peer.go:60.28,62.2 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/peer.go:65.31,67.2 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/peer.go:70.33,72.2 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/peer.go:76.112,87.2 3 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/peer.go:92.132,93.41 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/peer.go:98.2,106.4 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/peer.go:93.41,95.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/peer.go:95.8,97.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/peer.go:110.86,119.2 3 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/peer.go:123.107,133.2 3 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:101.72,106.33 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:113.2,113.30 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:106.33,108.17 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:111.3,111.41 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:108.17,110.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:141.70,146.32 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:154.2,154.25 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:146.32,149.30 3 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:149.30,152.4 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:196.45,196.73 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:197.45,197.74 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:199.42,199.67 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:200.42,200.68 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:202.46,202.75 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:203.46,203.76 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:205.43,205.69 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:206.43,206.70 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:208.42,208.67 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:209.42,209.68 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:211.39,211.61 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:212.39,212.62 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:214.42,214.67 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:215.42,215.68 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:217.39,217.61 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:218.39,218.62 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/range.go:35.61,48.2 5 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/range.go:51.33,53.14 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/range.go:56.2,57.13 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/range.go:53.14,55.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/range.go:61.41,63.2 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/range.go:66.39,69.14 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/range.go:72.2,72.42 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/range.go:69.14,71.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/range.go:76.41,81.2 4 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:456.48,481.2 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:484.48,489.30 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:495.2,508.12 10 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:489.30,494.3 3 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:512.46,515.31 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:521.2,536.12 11 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:515.31,520.3 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:543.69,556.34 6 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:560.2,561.60 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:565.2,565.15 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:573.2,576.15 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:582.2,585.15 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:596.2,619.6 8 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:556.34,558.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:561.60,564.3 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:565.15,566.32 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:569.3,570.21 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:566.32,568.4 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:576.15,577.36 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:577.36,580.4 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:585.15,594.3 8 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:619.6,623.61 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:627.3,631.24 4 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:637.3,637.10 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:670.3,670.18 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:623.61,625.4 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:631.24,635.4 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:638.19,638.19 0 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:640.19,640.19 0 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:642.25,643.24 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:644.17,645.23 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:647.33,648.31 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:649.34,650.32 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:651.33,652.31 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:653.38,654.36 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:655.38,656.36 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:658.30,659.33 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:660.31,661.34 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:662.30,663.33 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:664.35,665.38 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:666.35,667.38 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:676.35,679.65 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:727.2,741.42 9 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:679.65,680.59 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:680.59,682.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:682.9,683.40 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:686.4,687.33 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:708.4,721.10 12 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:683.40,685.5 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:687.33,690.44 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:694.5,696.44 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:690.44,692.7 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:696.44,697.39 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:697.39,700.46 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:704.7,704.60 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:700.46,702.9 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:741.42,743.32 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:747.3,749.42 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:753.3,761.69 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:743.32,746.4 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:749.42,751.5 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:766.35,768.31 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:781.2,795.16 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:798.2,798.45 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:768.31,769.47 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:772.3,772.42 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:769.47,771.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:772.42,773.37 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:773.37,774.52 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:774.52,776.6 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:795.16,796.13 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:802.59,819.21 5 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:823.2,823.26 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:819.21,822.3 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:828.38,830.23 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:834.2,834.36 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:841.2,841.23 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:830.23,832.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:834.36,835.22 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:835.22,838.4 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:841.23,848.3 4 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:853.38,854.31 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:854.31,855.48 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:855.48,857.39 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:863.4,863.25 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:868.4,868.41 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:873.4,877.22 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:857.39,858.25 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:858.25,861.6 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:863.25,865.13 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:868.41,869.24 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:869.24,871.6 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:877.22,879.5 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:886.117,896.34 5 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:903.2,903.26 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:906.2,909.31 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:896.34,897.40 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:900.3,901.86 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:897.40,898.12 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:903.26,905.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:909.31,911.41 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:917.3,917.27 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:920.3,929.7 4 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:940.3,952.64 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:957.3,961.29 4 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:978.3,978.17 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:911.41,912.12 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:917.27,919.4 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:929.7,931.18 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:934.4,934.41 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:937.4,937.9 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:931.18,932.13 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:934.41,935.13 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:952.64,956.4 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:961.29,965.28 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:968.4,968.28 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:971.4,971.100 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:965.28,967.5 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:968.28,970.5 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:971.100,974.5 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:983.120,993.35 5 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1000.2,1000.26 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1003.2,1006.31 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:993.35,994.40 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:997.3,998.83 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:994.40,995.12 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1000.26,1002.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1006.31,1008.22 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1012.3,1012.31 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1018.3,1018.27 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1021.3,1030.7 4 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1041.3,1041.32 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1044.3,1045.36 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1052.3,1063.64 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1068.3,1072.13 4 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1008.22,1009.12 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1012.31,1013.12 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1018.27,1020.4 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1030.7,1032.18 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1035.4,1035.42 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1038.4,1038.9 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1032.18,1033.13 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1035.42,1036.13 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1041.32,1043.4 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1045.36,1048.26 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1048.26,1049.10 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1063.64,1067.4 3 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1072.13,1076.79 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1076.79,1079.5 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1086.117,1096.34 5 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1103.2,1103.26 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1106.2,1109.31 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1096.34,1097.40 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1100.3,1101.87 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1097.40,1098.12 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1103.26,1105.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1109.31,1111.22 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1115.3,1115.59 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1121.3,1121.27 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1124.3,1133.7 4 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1146.3,1146.27 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1149.3,1149.27 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1152.3,1159.48 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1175.3,1175.21 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1190.3,1190.25 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1193.3,1206.21 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1210.3,1210.64 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1215.3,1219.29 4 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1234.3,1234.21 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1111.22,1112.12 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1115.59,1116.12 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1121.27,1123.4 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1133.7,1135.18 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1138.4,1138.41 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1141.4,1141.9 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1135.18,1136.13 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1138.41,1139.13 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1146.27,1148.4 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1149.27,1151.4 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1159.48,1160.32 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1171.4,1171.22 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1160.32,1162.22 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1166.5,1169.10 4 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1162.22,1163.14 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1171.22,1172.10 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1175.21,1177.48 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1177.48,1183.37 4 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1183.37,1184.11 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1190.25,1191.12 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1206.21,1209.4 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1210.64,1214.4 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1219.29,1224.22 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1227.4,1227.103 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1224.22,1226.5 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1227.103,1230.5 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1234.21,1236.4 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1242.132,1252.39 5 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1259.2,1259.26 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1262.2,1265.70 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1252.39,1253.40 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1256.3,1257.83 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1253.40,1254.12 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1259.26,1261.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1265.70,1273.18 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1283.3,1283.35 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1289.3,1289.27 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1292.3,1301.7 4 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1312.3,1312.32 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1315.3,1320.49 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1331.3,1343.64 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1348.3,1352.29 4 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1273.18,1275.31 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1278.4,1278.31 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1275.31,1277.5 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1278.31,1280.5 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1283.35,1285.4 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1289.27,1291.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1301.7,1303.18 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1306.4,1306.46 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1309.4,1309.9 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1303.18,1304.13 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1306.46,1307.13 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1312.32,1314.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1320.49,1327.26 5 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1327.26,1328.10 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1343.64,1347.4 3 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1352.29,1356.87 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1356.87,1359.5 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1366.132,1376.39 5 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1383.2,1383.26 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1386.2,1389.70 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1376.39,1377.40 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1380.3,1381.83 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1377.40,1378.12 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1383.26,1385.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1389.70,1397.18 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1407.3,1407.35 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1413.3,1413.27 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1416.3,1425.7 4 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1436.3,1436.32 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1439.3,1440.40 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1448.3,1459.64 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1464.3,1468.13 4 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1397.18,1399.31 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1402.4,1402.31 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1399.31,1401.5 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1402.31,1404.5 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1407.35,1409.4 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1413.27,1415.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1425.7,1427.18 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1430.4,1430.46 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1433.4,1433.9 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1427.18,1428.13 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1430.46,1431.13 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1436.32,1438.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1440.40,1444.26 3 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1444.26,1445.10 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1459.64,1463.4 3 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1468.13,1472.79 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1472.79,1475.5 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1482.46,1486.36 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1491.2,1492.37 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1497.2,1498.36 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1503.2,1504.41 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1509.2,1510.41 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1515.2,1518.34 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1521.2,1521.35 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1524.2,1524.34 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1527.2,1527.39 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1530.2,1530.39 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1486.36,1487.23 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1487.23,1489.4 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1492.37,1493.23 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1493.23,1495.4 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1498.36,1499.23 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1499.23,1501.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1504.41,1505.23 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1505.23,1507.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1510.41,1511.23 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1511.23,1513.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1518.34,1520.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1521.35,1523.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1524.34,1526.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1527.39,1529.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1530.39,1532.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1537.68,1538.9 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1539.25,1539.25 0 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1541.20,1541.20 0 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1543.19,1543.19 0 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1553.60,1555.9 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1561.2,1571.25 6 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1556.19,1558.9 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1559.10,1559.10 0 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1571.25,1573.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1578.70,1579.9 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1580.25,1580.25 0 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1582.20,1582.20 0 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1584.19,1584.19 0 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1594.62,1596.9 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1602.2,1612.34 6 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1597.19,1599.9 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1600.10,1600.10 0 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1612.34,1614.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1619.68,1620.9 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1621.25,1621.25 0 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1623.20,1623.20 0 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1625.19,1625.19 0 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1635.60,1637.9 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1643.2,1653.24 6 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1638.19,1640.9 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1641.10,1641.10 0 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1653.24,1655.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1655.8,1656.40 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1656.40,1658.4 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1664.78,1665.9 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1666.25,1666.25 0 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1668.20,1668.20 0 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1670.19,1670.19 0 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1680.70,1682.9 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1688.2,1698.34 6 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1683.19,1685.9 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1686.10,1686.10 0 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1698.34,1700.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1705.78,1706.9 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1707.25,1707.25 0 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1709.20,1709.20 0 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1711.19,1711.19 0 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1721.70,1723.9 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1729.2,1739.34 6 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1724.19,1726.9 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1727.10,1727.10 0 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1739.34,1741.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1746.63,1753.34 4 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1771.2,1781.39 8 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1815.2,1815.38 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1823.2,1823.24 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1753.34,1757.15 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1761.3,1761.14 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1757.15,1759.12 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1761.14,1766.9 4 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1781.39,1783.51 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1791.3,1791.32 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1783.51,1784.76 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1784.76,1788.5 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1791.32,1792.63 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1792.63,1797.61 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1807.5,1808.20 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1797.61,1799.39 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1802.6,1803.41 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1799.39,1801.7 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1804.11,1806.6 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1815.38,1816.34 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1816.34,1819.4 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1823.24,1826.3 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1833.65,1839.34 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1858.2,1859.38 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1862.2,1869.24 4 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1839.34,1843.18 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1848.3,1848.49 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1855.3,1856.37 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1843.18,1845.12 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1848.49,1849.76 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1849.76,1852.5 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1859.38,1861.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1869.24,1872.3 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1879.63,1881.24 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1884.2,1886.41 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1890.2,1896.39 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2043.2,2043.24 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2064.2,2064.38 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2067.2,2073.28 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1881.24,1883.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1886.41,1888.4 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1896.39,1898.27 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1904.3,1904.48 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2020.3,2022.50 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2032.3,2032.43 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1898.27,1900.12 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1904.48,1905.23 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1908.4,1913.95 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1919.4,1919.93 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1924.4,1924.64 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1992.4,1992.26 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1905.23,1906.13 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1913.95,1916.5 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1919.93,1921.5 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1924.64,1927.57 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1927.57,1933.23 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1942.6,1942.81 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1950.6,1955.45 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1959.6,1966.19 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1981.6,1981.33 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1984.6,1988.28 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1933.23,1935.7 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1942.81,1943.68 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1946.7,1946.125 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1943.68,1945.8 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1947.12,1949.7 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1955.45,1957.8 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1966.19,1969.46 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1973.7,1979.9 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1969.46,1971.9 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1981.33,1983.7 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1992.26,1997.63 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2004.5,2004.19 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2010.5,2010.17 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1997.63,1999.18 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2002.6,2002.20 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1999.18,2001.7 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2004.19,2008.6 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2010.17,2012.6 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2012.11,2014.6 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2022.50,2024.44 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2027.4,2027.15 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2024.44,2026.5 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2032.43,2037.52 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2037.52,2039.5 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2043.24,2044.23 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2056.3,2056.82 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2044.23,2045.61 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2045.61,2047.5 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2047.10,2047.39 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2047.39,2049.53 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2049.53,2050.54 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2050.54,2052.7 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2056.82,2057.55 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2060.4,2060.32 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2057.55,2059.5 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2064.38,2066.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2073.28,2076.3 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2083.73,2084.34 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2107.2,2108.57 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2111.2,2111.38 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2114.2,2114.113 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2084.34,2088.18 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2093.3,2097.14 4 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2088.18,2090.12 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2098.12,2098.12 0 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2099.33,2100.24 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2101.29,2102.24 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2103.11,2104.69 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2108.57,2110.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2111.38,2113.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2119.73,2120.34 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2143.2,2144.57 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2147.2,2147.38 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2150.2,2150.112 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2120.34,2124.18 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2129.3,2133.14 4 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2124.18,2126.12 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2134.12,2134.12 0 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2135.33,2136.24 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2137.29,2138.24 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2139.11,2140.69 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2144.57,2146.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2147.38,2149.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2156.56,2159.16 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2162.2,2171.41 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2175.2,2175.34 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2193.2,2193.38 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2196.2,2200.34 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2207.2,2212.15 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2217.2,2217.67 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2223.2,2223.114 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2159.16,2161.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2171.41,2173.4 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2175.34,2176.44 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2179.3,2184.24 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2176.44,2177.9 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2184.24,2186.18 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2189.4,2189.38 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2186.18,2187.15 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2193.38,2195.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2200.34,2201.44 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2204.3,2204.28 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2201.44,2203.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2212.15,2213.50 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2213.50,2215.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2217.67,2218.47 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2221.3,2221.24 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2218.47,2220.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2228.118,2230.35 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2233.2,2233.29 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2236.2,2243.37 4 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2246.2,2246.9 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2251.2,2252.9 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2258.2,2263.25 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2272.2,2272.63 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2281.2,2286.29 4 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2289.2,2290.29 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2293.2,2296.19 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2299.2,2300.16 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2306.2,2307.35 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2314.2,2320.9 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2325.2,2325.12 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2230.35,2232.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2233.29,2235.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2243.37,2245.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2247.30,2247.30 0 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2248.10,2248.10 0 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2252.9,2257.3 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2263.25,2267.3 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2272.63,2280.3 5 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2286.29,2288.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2290.29,2292.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2296.19,2298.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2300.16,2305.3 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2307.35,2309.55 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2312.3,2312.16 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2309.55,2310.14 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2321.31,2321.31 0 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2322.20,2322.20 0 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2323.19,2323.19 0 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2330.82,2335.13 4 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2338.2,2338.47 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2335.13,2337.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2343.82,2345.33 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2348.2,2355.37 4 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2358.2,2358.9 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2363.2,2364.9 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2370.2,2375.25 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2384.2,2384.25 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2393.2,2401.44 5 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2422.2,2427.9 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2432.2,2432.12 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2345.33,2347.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2355.37,2357.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2359.30,2359.30 0 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2360.10,2360.10 0 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2364.9,2369.3 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2375.25,2379.3 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2384.25,2392.3 5 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2401.44,2407.67 4 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2410.3,2410.26 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2416.3,2419.43 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2407.67,2409.4 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2410.26,2413.12 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2428.31,2428.31 0 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2429.20,2429.20 0 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2430.19,2430.19 0 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2437.118,2444.33 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2448.2,2448.32 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2454.2,2454.29 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2457.2,2464.37 4 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2467.2,2467.9 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2472.2,2473.9 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2479.2,2484.25 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2492.2,2492.31 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2498.2,2498.37 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2508.2,2508.22 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2515.2,2520.35 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2560.2,2569.9 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2574.2,2574.12 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2444.33,2447.3 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2448.32,2449.32 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2452.3,2452.28 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2449.32,2451.4 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2454.29,2456.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2464.37,2466.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2468.30,2468.30 0 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2469.10,2469.10 0 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2473.9,2478.3 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2484.25,2488.3 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2492.31,2497.3 4 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2498.37,2503.3 4 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2508.22,2514.3 5 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2520.35,2523.33 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2526.3,2527.25 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2532.3,2533.22 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2523.33,2525.4 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2527.25,2528.31 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2528.31,2530.5 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2533.22,2537.18 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2537.18,2541.5 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2542.9,2548.21 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2551.4,2552.18 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2548.21,2550.5 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2552.18,2556.5 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2570.31,2570.31 0 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2571.20,2571.20 0 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2572.19,2572.19 0 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2579.82,2581.33 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2584.2,2591.37 4 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2594.2,2594.9 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2599.2,2600.9 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2606.2,2611.25 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2620.2,2620.25 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2629.2,2637.44 5 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2658.2,2664.9 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2669.2,2669.12 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2581.33,2583.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2591.37,2593.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2595.30,2595.30 0 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2596.10,2596.10 0 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2600.9,2605.3 3 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2611.25,2615.3 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2620.25,2628.3 5 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2637.44,2643.67 4 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2646.3,2646.26 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2652.3,2655.51 3 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2643.67,2645.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2646.26,2649.12 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2665.31,2665.31 0 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2666.20,2666.20 0 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2667.19,2667.19 0 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2674.86,2676.33 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2679.2,2686.37 4 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2689.2,2689.9 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2694.2,2695.9 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2701.2,2706.25 3 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2715.2,2715.25 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2724.2,2732.44 5 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2753.2,2758.9 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2763.2,2763.12 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2676.33,2678.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2686.37,2688.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2690.30,2690.30 0 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2691.10,2691.10 0 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2695.9,2700.3 3 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2706.25,2710.3 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2715.25,2723.3 5 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2732.44,2738.67 4 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2741.3,2741.26 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2747.3,2750.51 3 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2738.67,2740.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2741.26,2744.12 3 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2759.31,2759.31 0 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2760.20,2760.20 0 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2761.19,2761.19 0 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2770.66,2771.21 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2781.2,2781.21 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2786.2,2786.54 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2790.2,2790.12 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2771.21,2773.58 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2776.3,2779.80 4 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2773.58,2775.4 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2781.21,2785.3 3 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2786.54,2789.3 2 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2797.37,2798.22 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2802.2,2802.29 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2798.22,2801.3 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2806.49,2808.53 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2812.2,2813.17 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2816.2,2817.31 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2820.2,2821.32 2 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2824.2,2830.20 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2833.2,2844.108 4 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2808.53,2810.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2813.17,2815.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2817.31,2819.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2821.32,2823.3 1 0 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2830.20,2832.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2848.49,2850.53 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2853.2,2863.81 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2850.53,2852.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2869.75,2870.29 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2873.2,2875.23 3 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2879.2,2879.45 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2870.29,2872.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2875.23,2878.3 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2890.34,2892.2 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2894.44,2896.2 1 1 +github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2898.39,2901.2 2 1 +github.com/ethereum/go-ethereum/ethclient/bor_ethclient.go:12.116,14.110 2 0 +github.com/ethereum/go-ethereum/ethclient/bor_ethclient.go:17.2,17.22 1 0 +github.com/ethereum/go-ethereum/ethclient/bor_ethclient.go:14.110,16.3 1 0 +github.com/ethereum/go-ethereum/ethclient/bor_ethclient.go:21.101,24.28 3 0 +github.com/ethereum/go-ethereum/ethclient/bor_ethclient.go:27.2,27.15 1 0 +github.com/ethereum/go-ethereum/ethclient/bor_ethclient.go:24.28,26.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:40.43,42.2 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:44.71,46.16 2 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:49.2,49.26 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:46.16,48.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:53.39,55.2 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:57.27,59.2 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:64.66,67.16 3 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:70.2,70.33 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:67.16,69.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:77.92,79.2 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:81.138,84.16 3 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:87.2,87.16 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:84.16,86.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:95.93,97.2 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:100.68,104.2 3 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:112.107,115.16 3 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:121.2,123.51 3 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:126.2,126.51 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:130.2,130.73 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:133.2,133.74 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:136.2,136.71 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:140.2,141.31 2 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:164.2,165.39 2 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:171.2,171.66 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:115.16,117.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:117.8,117.26 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:117.26,119.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:123.51,125.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:126.51,128.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:130.73,132.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:133.74,135.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:136.71,138.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:141.31,144.23 3 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:151.3,151.58 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:154.3,154.23 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:144.23,150.4 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:151.58,153.4 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:154.23,155.28 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:158.4,158.24 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:155.28,157.5 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:158.24,160.5 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:165.39,166.21 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:169.3,169.17 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:166.21,168.4 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:175.94,178.31 3 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:181.2,181.18 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:178.31,180.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:186.95,189.31 3 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:192.2,192.18 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:189.31,191.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:206.59,207.52 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:210.2,210.45 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:207.52,209.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:214.127,217.16 3 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:224.2,224.47 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:227.2,227.46 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:217.16,219.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:219.8,219.24 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:219.24,221.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:221.8,221.62 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:221.62,223.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:224.47,226.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:236.136,239.16 2 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:244.2,248.123 2 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:251.2,251.60 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:254.2,254.23 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:239.16,241.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:248.123,250.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:251.60,253.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:258.94,262.2 3 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:265.122,268.16 3 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:271.2,271.17 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:276.2,276.47 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:279.2,279.21 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:268.16,270.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:271.17,273.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:273.8,273.62 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:273.62,275.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:276.47,278.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:284.103,287.16 3 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:292.2,292.15 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:287.16,288.15 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:288.15,290.4 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:297.85,299.67 2 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:303.2,304.54 2 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:307.2,308.48 2 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:311.2,311.32 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:299.67,301.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:304.54,306.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:308.48,310.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:316.113,318.2 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:323.68,326.67 3 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:329.2,329.46 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:332.2,332.21 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:326.67,328.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:329.46,331.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:337.114,341.2 3 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:345.129,349.2 3 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:353.109,357.2 3 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:361.110,365.2 3 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:370.96,373.16 3 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:376.2,377.20 2 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:373.16,375.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:381.136,383.16 2 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:386.2,386.48 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:383.16,385.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:389.63,394.24 2 1 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:407.2,407.17 1 1 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:394.24,396.45 2 1 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:396.45,398.4 1 1 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:399.8,400.25 1 1 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:405.3,405.44 1 1 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:400.25,402.4 1 1 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:402.9,404.4 1 1 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:413.99,417.2 3 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:420.114,424.2 3 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:427.94,431.2 3 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:435.95,439.2 3 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:442.78,446.2 3 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:456.113,459.16 3 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:462.2,462.17 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:459.16,461.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:467.120,470.16 3 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:473.2,473.17 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:470.16,472.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:478.98,481.16 3 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:484.2,484.17 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:481.16,483.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:489.74,491.68 2 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:494.2,494.30 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:491.68,493.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:499.75,501.80 2 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:504.2,504.30 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:501.80,503.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:511.90,514.16 3 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:517.2,517.25 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:514.16,516.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:524.85,526.16 2 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:529.2,529.83 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:526.16,528.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:532.44,533.19 1 1 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:536.2,537.30 2 1 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:540.2,540.34 1 1 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:533.19,535.3 1 1 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:537.30,539.3 1 1 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:543.50,548.23 2 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:551.2,551.22 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:554.2,554.18 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:557.2,557.25 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:560.2,560.12 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:548.23,550.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:551.22,553.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:554.18,556.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:557.25,559.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:586.63,587.14 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:590.2,608.3 1 0 +github.com/ethereum/go-ethereum/ethclient/ethclient.go:587.14,589.3 1 0 +github.com/ethereum/go-ethereum/ethclient/signer.go:37.89,40.2 1 0 +github.com/ethereum/go-ethereum/ethclient/signer.go:42.59,45.2 2 0 +github.com/ethereum/go-ethereum/ethclient/signer.go:47.82,48.34 1 0 +github.com/ethereum/go-ethereum/ethclient/signer.go:51.2,51.20 1 0 +github.com/ethereum/go-ethereum/ethclient/signer.go:48.34,50.3 1 0 +github.com/ethereum/go-ethereum/ethclient/signer.go:54.47,55.43 1 0 +github.com/ethereum/go-ethereum/ethclient/signer.go:57.68,58.43 1 0 +github.com/ethereum/go-ethereum/ethclient/signer.go:60.109,61.43 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:43.31,45.35 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:48.2,48.33 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:45.35,47.3 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:54.13,55.44 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:59.2,59.44 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:55.44,58.3 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:68.54,76.2 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:79.44,83.2 3 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:86.51,90.2 3 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:99.54,102.51 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:103.2,105.51 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:106.2,108.51 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:109.2,109.33 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:102.51,102.88 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:105.51,105.95 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:108.51,108.96 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:118.57,119.18 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:122.2,122.30 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:128.2,128.32 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:134.2,134.44 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:119.18,121.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:122.30,127.3 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:128.32,133.3 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:138.55,139.48 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:145.2,145.58 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:139.48,144.3 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:150.58,154.51 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:162.2,165.51 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:172.2,172.34 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:154.51,161.3 5 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:165.51,171.3 4 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:181.48,182.44 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:188.2,188.35 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:182.44,187.3 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:193.57,196.51 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:197.2,200.51 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:207.2,207.31 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:196.51,196.98 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:200.51,206.3 4 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:217.54,221.51 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:225.2,228.51 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:232.2,235.51 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:242.2,245.51 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:255.2,258.51 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:262.2,262.33 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:221.51,224.3 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:228.51,231.3 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:235.51,241.3 4 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:245.51,254.3 6 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:258.51,261.3 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:272.60,276.51 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:281.2,284.51 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:289.2,292.51 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:296.2,299.51 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:306.2,306.35 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:276.51,280.3 3 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:284.51,288.3 3 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:292.51,295.3 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:299.51,305.3 4 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:318.24,325.2 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:327.49,330.51 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:331.2,333.51 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:334.2,336.51 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:337.2,339.51 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:340.2,342.51 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:343.2,345.51 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:353.2,353.35 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:330.51,330.87 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:333.51,333.88 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:336.51,336.86 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:339.51,339.88 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:342.51,342.87 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:345.51,346.21 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:351.3,351.11 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:346.21,348.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:348.9,350.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:362.36,366.2 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:368.55,371.51 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:372.2,374.51 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:375.2,377.51 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:385.2,385.35 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:371.51,371.91 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:374.51,374.89 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:377.51,378.26 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:383.3,383.11 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:378.26,380.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:380.9,382.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:427.79,428.37 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:431.2,431.16 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:434.2,450.38 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:459.2,459.73 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:463.2,463.74 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:474.2,474.77 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:485.2,485.78 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:499.2,499.79 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:521.2,521.81 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:532.2,532.73 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:550.2,550.64 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:554.2,559.60 4 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:562.2,564.61 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:567.2,573.25 6 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:576.2,600.58 15 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:601.2,603.58 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:604.2,606.58 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:607.2,609.58 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:610.2,612.58 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:613.2,615.58 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:623.2,636.20 9 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:428.37,430.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:431.16,433.3 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:450.38,453.36 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:453.36,456.4 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:459.73,462.3 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:463.74,465.49 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:470.3,472.11 3 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:465.49,467.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:467.9,469.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:474.77,476.49 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:481.3,483.11 3 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:476.49,478.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:478.9,480.4 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:485.78,487.49 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:492.3,497.11 5 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:487.49,489.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:489.9,491.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:499.79,501.49 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:507.3,510.49 3 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:515.3,519.11 5 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:501.49,503.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:503.9,505.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:510.49,512.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:512.9,514.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:521.81,523.46 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:529.3,530.11 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:523.46,524.17 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:524.17,527.5 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:532.73,539.50 5 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:546.3,547.11 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:539.50,545.4 3 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:550.64,553.3 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:559.60,561.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:564.61,566.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:573.25,575.3 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:600.58,600.101 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:603.58,603.102 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:606.58,606.103 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:609.58,609.104 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:612.58,612.105 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:615.58,616.31 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:621.3,621.11 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:616.31,618.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:618.9,620.4 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:640.38,643.2 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:647.95,650.27 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:653.2,656.15 3 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:661.2,661.11 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:667.2,671.39 4 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:675.2,675.54 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:650.27,652.3 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:656.15,659.3 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:661.11,663.3 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:671.39,674.3 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:678.49,680.2 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:683.143,686.12 3 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:689.2,707.16 14 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:710.2,710.40 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:686.12,688.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:707.16,709.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:714.138,715.21 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:718.2,718.20 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:722.2,722.43 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:727.2,739.16 11 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:744.2,744.63 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:715.21,717.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:718.20,720.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:722.43,726.3 3 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:739.16,742.3 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:744.63,746.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:750.124,751.20 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:755.2,758.64 3 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:751.20,753.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:758.64,760.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:764.92,769.16 4 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:769.16,771.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:775.132,776.26 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:779.2,779.20 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:783.2,783.43 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:788.2,794.18 7 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:798.2,798.60 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:776.26,778.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:779.20,781.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:783.43,786.3 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:794.18,796.3 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:798.60,800.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:805.76,806.26 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:810.2,810.43 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:815.2,818.16 4 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:823.2,823.65 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:806.26,808.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:810.43,813.3 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:818.16,821.3 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:823.65,825.3 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:829.59,833.32 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:836.2,840.16 3 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:844.2,847.24 3 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:833.32,835.3 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:840.16,842.3 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:851.69,854.2 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:856.55,857.27 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:858.14,859.26 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:860.14,861.22 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:862.14,864.44 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:865.22,867.35 2 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:868.16,869.23 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:870.11,871.19 1 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:872.12,873.20 1 1 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:874.19,876.35 2 0 +github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:877.10,878.50 1 0 +github.com/ethereum/go-ethereum/core/vm/runtime/env.go:24.34,42.2 3 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:53.31,54.28 1 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:74.2,74.27 1 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:77.2,77.21 1 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:80.2,80.23 1 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:83.2,83.25 1 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:86.2,86.22 1 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:89.2,89.28 1 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:92.2,92.26 1 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:97.2,97.24 1 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:54.28,72.3 1 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:74.27,76.3 1 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:77.21,79.3 1 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:80.23,82.3 1 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:83.25,85.3 1 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:86.22,88.3 1 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:89.28,91.3 1 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:92.26,93.46 1 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:93.46,95.4 1 0 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:97.24,99.3 1 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:107.79,108.16 1 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:111.2,113.22 2 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:116.2,121.108 2 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:124.2,136.28 4 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:108.16,110.3 1 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:113.22,115.3 1 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:121.108,123.3 1 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:140.80,141.16 1 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:144.2,146.22 2 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:149.2,153.108 2 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:157.2,163.40 2 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:141.16,143.3 1 0 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:146.22,148.3 1 0 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:153.108,155.3 1 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:171.86,179.108 5 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:183.2,190.30 2 1 +github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:179.108,181.3 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:54.22,58.2 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:62.37,66.2 1 0 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:70.35,76.2 4 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:79.51,83.18 3 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:86.2,87.16 2 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:83.18,85.3 1 0 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:91.53,95.18 3 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:98.2,98.41 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:101.2,101.33 1 0 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:95.18,97.3 1 0 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:98.41,100.3 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:105.57,109.18 3 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:112.2,113.12 2 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:109.18,111.3 1 0 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:117.46,121.18 3 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:124.2,125.12 2 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:121.18,123.3 1 0 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:130.44,134.2 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:137.60,141.2 1 0 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:146.77,158.25 4 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:167.2,168.27 2 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:171.2,174.3 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:158.25,159.34 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:162.3,162.16 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:159.34,160.12 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:162.16,164.4 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:168.27,170.3 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:180.59,182.2 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:185.59,187.2 1 0 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:191.63,193.2 1 0 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:199.31,204.2 3 0 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:223.46,227.2 3 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:230.42,234.2 3 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:237.33,239.2 1 0 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:242.31,246.36 3 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:253.2,253.12 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:246.36,247.22 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:251.3,251.49 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:247.22,249.12 2 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:257.25,260.2 2 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:263.54,264.36 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:275.2,275.12 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:264.36,265.22 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:271.3,271.61 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:265.22,266.49 1 0 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:269.4,269.12 1 0 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:266.49,268.5 1 0 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:271.61,273.4 1 0 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:289.33,291.16 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:296.2,296.22 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:300.2,300.25 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:291.16,294.3 2 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:296.22,299.3 2 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:305.35,307.2 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:312.34,313.22 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:316.2,316.12 1 0 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:313.22,315.3 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:322.36,323.24 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:326.2,326.12 1 0 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:323.24,325.3 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:331.31,333.2 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:343.42,348.30 4 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:351.2,351.30 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:348.30,350.3 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:356.53,360.20 3 0 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:363.2,364.16 2 0 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:360.20,362.3 1 0 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:369.55,373.20 3 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:376.2,376.43 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:379.2,379.33 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:373.20,375.3 1 0 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:376.43,378.3 1 1 +github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:384.33,389.2 3 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:42.33,44.2 1 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:48.122,55.95 3 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:58.2,58.69 1 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:55.95,57.3 1 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:81.134,103.38 6 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:110.2,118.21 2 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:103.38,109.3 1 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:140.160,147.2 3 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:150.72,154.2 3 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:157.76,161.2 3 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:166.71,168.2 1 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:171.75,175.2 3 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:178.125,180.2 1 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:182.44,183.19 1 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:186.2,187.30 2 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:190.2,190.34 1 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:183.19,185.3 1 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:187.30,189.3 1 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:193.50,198.23 2 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:201.2,201.22 1 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:204.2,204.18 1 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:207.2,207.25 1 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:210.2,210.12 1 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:198.23,200.3 1 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:201.22,203.3 1 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:204.18,206.3 1 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:207.25,209.3 1 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:213.79,214.22 1 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:217.2,225.41 3 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:234.2,234.16 1 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:214.22,216.3 1 0 +github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:225.41,233.3 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:87.99,88.63 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:88.63,90.23 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:93.3,93.27 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:97.3,100.15 4 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:90.23,92.4 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:93.27,95.4 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:100.15,102.4 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:109.104,114.22 5 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:117.2,121.59 3 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:124.2,124.16 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:128.2,149.17 15 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:114.22,116.3 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:121.59,123.3 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:124.16,126.3 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:153.68,160.24 2 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:163.2,163.16 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:160.24,162.3 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:168.35,172.24 3 1 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:180.2,180.22 1 1 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:172.24,175.32 3 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:178.3,178.20 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:175.32,177.4 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:184.51,186.2 1 1 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:189.53,191.16 2 1 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:194.2,194.17 1 1 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:191.16,193.3 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:198.57,200.2 1 1 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:203.46,205.2 1 1 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:209.44,214.2 1 1 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:217.60,222.2 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:227.77,229.2 1 1 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:236.59,238.16 2 1 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:241.2,241.33 1 1 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:238.16,240.3 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:245.59,247.2 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:256.63,258.2 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:261.35,263.2 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:282.50,285.25 2 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:289.2,306.46 6 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:462.2,462.17 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:465.2,465.14 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:285.25,287.3 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:306.46,309.17 2 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:315.3,316.70 2 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:319.3,319.22 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:324.3,327.46 2 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:330.3,330.30 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:346.3,346.30 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:349.3,349.30 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:352.3,352.30 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:355.3,355.31 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:359.3,360.17 2 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:365.3,371.127 2 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:376.3,377.17 2 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:382.3,382.33 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:385.3,385.32 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:390.3,391.67 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:395.3,399.17 3 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:404.3,406.21 3 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:411.3,411.82 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:416.3,416.84 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:421.3,421.30 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:424.3,424.31 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:427.3,430.17 3 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:436.3,442.167 2 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:447.3,453.10 5 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:309.17,312.12 3 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:316.70,318.4 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:319.22,322.12 3 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:327.46,329.4 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:330.30,332.23 2 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:335.4,335.40 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:332.23,333.10 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:335.40,337.19 2 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:342.5,342.35 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:337.19,340.14 3 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:346.30,348.4 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:349.30,351.4 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:352.30,354.4 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:355.31,357.4 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:360.17,363.12 3 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:371.127,374.12 3 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:377.17,380.12 3 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:382.33,384.4 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:385.32,387.4 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:391.67,394.4 2 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:399.17,402.12 3 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:406.21,409.12 3 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:411.82,414.12 3 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:416.84,419.12 3 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:421.30,423.4 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:424.31,426.4 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:430.17,433.12 3 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:442.167,445.12 3 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:454.29,454.29 0 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:456.18,457.24 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:462.17,464.3 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:477.46,481.2 3 1 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:484.42,488.2 3 1 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:491.33,493.2 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:496.31,498.2 1 1 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:501.25,504.2 2 1 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:507.54,509.2 1 1 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:518.43,520.22 1 1 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:523.2,523.38 1 1 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:520.22,522.3 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:527.39,529.22 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:532.2,532.34 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:529.22,531.3 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:538.57,542.2 3 1 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:551.53,553.2 1 0 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:557.55,559.2 1 1 +github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:563.33,565.2 1 0 +github.com/ethereum/go-ethereum/event/event.go:53.74,57.17 4 1 +github.com/ethereum/go-ethereum/event/event.go:78.2,78.12 1 1 +github.com/ethereum/go-ethereum/event/event.go:57.17,62.3 2 1 +github.com/ethereum/go-ethereum/event/event.go:62.8,63.22 1 1 +github.com/ethereum/go-ethereum/event/event.go:66.3,66.27 1 1 +github.com/ethereum/go-ethereum/event/event.go:63.22,65.4 1 1 +github.com/ethereum/go-ethereum/event/event.go:66.27,69.32 3 1 +github.com/ethereum/go-ethereum/event/event.go:72.4,75.25 4 1 +github.com/ethereum/go-ethereum/event/event.go:69.32,70.70 1 1 +github.com/ethereum/go-ethereum/event/event.go:83.48,90.17 4 1 +github.com/ethereum/go-ethereum/event/event.go:94.2,96.27 3 1 +github.com/ethereum/go-ethereum/event/event.go:99.2,99.12 1 1 +github.com/ethereum/go-ethereum/event/event.go:90.17,93.3 2 1 +github.com/ethereum/go-ethereum/event/event.go:96.27,98.3 1 1 +github.com/ethereum/go-ethereum/event/event.go:105.28,108.32 3 1 +github.com/ethereum/go-ethereum/event/event.go:113.2,114.20 2 1 +github.com/ethereum/go-ethereum/event/event.go:108.32,109.28 1 1 +github.com/ethereum/go-ethereum/event/event.go:109.28,111.4 1 1 +github.com/ethereum/go-ethereum/event/event.go:117.49,120.34 3 1 +github.com/ethereum/go-ethereum/event/event.go:120.34,121.37 1 1 +github.com/ethereum/go-ethereum/event/event.go:121.37,122.22 1 1 +github.com/ethereum/go-ethereum/event/event.go:122.22,124.5 1 1 +github.com/ethereum/go-ethereum/event/event.go:124.10,126.5 1 1 +github.com/ethereum/go-ethereum/event/event.go:131.72,132.26 1 1 +github.com/ethereum/go-ethereum/event/event.go:137.2,137.11 1 1 +github.com/ethereum/go-ethereum/event/event.go:132.26,133.16 1 1 +github.com/ethereum/go-ethereum/event/event.go:133.16,135.4 1 1 +github.com/ethereum/go-ethereum/event/event.go:140.78,145.2 4 1 +github.com/ethereum/go-ethereum/event/event.go:163.48,172.2 2 1 +github.com/ethereum/go-ethereum/event/event.go:174.59,176.2 1 1 +github.com/ethereum/go-ethereum/event/event.go:178.45,181.2 2 1 +github.com/ethereum/go-ethereum/event/event.go:183.45,187.2 3 0 +github.com/ethereum/go-ethereum/event/event.go:189.43,192.14 3 1 +github.com/ethereum/go-ethereum/event/event.go:195.2,201.15 6 1 +github.com/ethereum/go-ethereum/event/event.go:192.14,194.3 1 1 +github.com/ethereum/go-ethereum/event/event.go:204.60,206.33 1 1 +github.com/ethereum/go-ethereum/event/event.go:210.2,213.9 3 1 +github.com/ethereum/go-ethereum/event/event.go:206.33,208.3 1 1 +github.com/ethereum/go-ethereum/event/event.go:214.24,214.24 0 1 +github.com/ethereum/go-ethereum/event/event.go:215.19,215.19 0 1 +github.com/ethereum/go-ethereum/event/feed.go:56.39,58.2 1 0 +github.com/ethereum/go-ethereum/event/feed.go:60.23,65.2 4 1 +github.com/ethereum/go-ethereum/event/feed.go:72.60,77.78 4 1 +github.com/ethereum/go-ethereum/event/feed.go:80.2,84.34 4 1 +github.com/ethereum/go-ethereum/event/feed.go:89.2,91.12 3 1 +github.com/ethereum/go-ethereum/event/feed.go:77.78,78.23 1 1 +github.com/ethereum/go-ethereum/event/feed.go:84.34,85.102 1 1 +github.com/ethereum/go-ethereum/event/feed.go:95.49,96.20 1 1 +github.com/ethereum/go-ethereum/event/feed.go:100.2,100.23 1 1 +github.com/ethereum/go-ethereum/event/feed.go:96.20,99.3 2 1 +github.com/ethereum/go-ethereum/event/feed.go:103.37,109.17 4 1 +github.com/ethereum/go-ethereum/event/feed.go:114.2,116.9 2 1 +github.com/ethereum/go-ethereum/event/feed.go:109.17,113.3 3 1 +github.com/ethereum/go-ethereum/event/feed.go:117.25,117.25 0 1 +github.com/ethereum/go-ethereum/event/feed.go:119.20,122.27 2 1 +github.com/ethereum/go-ethereum/event/feed.go:128.52,139.33 7 1 +github.com/ethereum/go-ethereum/event/feed.go:144.2,147.55 2 1 +github.com/ethereum/go-ethereum/event/feed.go:154.2,155.6 2 1 +github.com/ethereum/go-ethereum/event/feed.go:185.2,185.55 1 1 +github.com/ethereum/go-ethereum/event/feed.go:188.2,189.14 2 1 +github.com/ethereum/go-ethereum/event/feed.go:139.33,142.70 3 1 +github.com/ethereum/go-ethereum/event/feed.go:147.55,149.3 1 1 +github.com/ethereum/go-ethereum/event/feed.go:155.6,159.50 1 1 +github.com/ethereum/go-ethereum/event/feed.go:166.3,166.37 1 1 +github.com/ethereum/go-ethereum/event/feed.go:170.3,171.38 2 1 +github.com/ethereum/go-ethereum/event/feed.go:159.50,160.37 1 1 +github.com/ethereum/go-ethereum/event/feed.go:160.37,164.5 3 1 +github.com/ethereum/go-ethereum/event/feed.go:166.37,167.9 1 1 +github.com/ethereum/go-ethereum/event/feed.go:171.38,174.40 3 1 +github.com/ethereum/go-ethereum/event/feed.go:174.40,177.5 1 1 +github.com/ethereum/go-ethereum/event/feed.go:178.9,181.4 2 1 +github.com/ethereum/go-ethereum/event/feed.go:185.55,187.3 1 1 +github.com/ethereum/go-ethereum/event/feed.go:199.35,200.24 1 1 +github.com/ethereum/go-ethereum/event/feed.go:200.24,203.3 2 1 +github.com/ethereum/go-ethereum/event/feed.go:206.40,208.2 1 1 +github.com/ethereum/go-ethereum/event/feed.go:213.50,214.25 1 1 +github.com/ethereum/go-ethereum/event/feed.go:219.2,219.11 1 1 +github.com/ethereum/go-ethereum/event/feed.go:214.25,215.38 1 1 +github.com/ethereum/go-ethereum/event/feed.go:215.38,217.4 1 1 +github.com/ethereum/go-ethereum/event/feed.go:223.47,225.2 1 1 +github.com/ethereum/go-ethereum/event/feed.go:228.51,232.2 3 1 +github.com/ethereum/go-ethereum/event/subscription.go:49.73,51.12 2 1 +github.com/ethereum/go-ethereum/event/subscription.go:63.2,63.10 1 1 +github.com/ethereum/go-ethereum/event/subscription.go:51.12,56.22 5 1 +github.com/ethereum/go-ethereum/event/subscription.go:56.22,57.18 1 1 +github.com/ethereum/go-ethereum/event/subscription.go:60.4,60.25 1 1 +github.com/ethereum/go-ethereum/event/subscription.go:57.18,59.5 1 1 +github.com/ethereum/go-ethereum/event/subscription.go:73.33,75.20 2 1 +github.com/ethereum/go-ethereum/event/subscription.go:79.2,83.9 4 1 +github.com/ethereum/go-ethereum/event/subscription.go:75.20,78.3 2 1 +github.com/ethereum/go-ethereum/event/subscription.go:86.38,88.2 1 1 +github.com/ethereum/go-ethereum/event/subscription.go:97.77,98.93 1 1 +github.com/ethereum/go-ethereum/event/subscription.go:98.93,100.3 1 1 +github.com/ethereum/go-ethereum/event/subscription.go:117.83,127.2 3 1 +github.com/ethereum/go-ethereum/event/subscription.go:144.40,145.24 1 1 +github.com/ethereum/go-ethereum/event/subscription.go:145.24,148.3 2 1 +github.com/ethereum/go-ethereum/event/subscription.go:151.45,153.2 1 1 +github.com/ethereum/go-ethereum/event/subscription.go:155.33,158.12 3 1 +github.com/ethereum/go-ethereum/event/subscription.go:158.12,160.17 2 1 +github.com/ethereum/go-ethereum/event/subscription.go:163.3,164.20 2 1 +github.com/ethereum/go-ethereum/event/subscription.go:160.17,161.9 1 1 +github.com/ethereum/go-ethereum/event/subscription.go:168.51,171.6 3 1 +github.com/ethereum/go-ethereum/event/subscription.go:171.6,174.13 3 1 +github.com/ethereum/go-ethereum/event/subscription.go:179.3,179.10 1 1 +github.com/ethereum/go-ethereum/event/subscription.go:174.13,178.4 3 1 +github.com/ethereum/go-ethereum/event/subscription.go:180.28,182.18 2 1 +github.com/ethereum/go-ethereum/event/subscription.go:189.4,189.23 1 1 +github.com/ethereum/go-ethereum/event/subscription.go:192.18,195.14 3 1 +github.com/ethereum/go-ethereum/event/subscription.go:182.18,183.19 1 1 +github.com/ethereum/go-ethereum/event/subscription.go:186.5,186.15 1 1 +github.com/ethereum/go-ethereum/event/subscription.go:183.19,184.76 1 0 +github.com/ethereum/go-ethereum/event/subscription.go:189.23,191.5 1 0 +github.com/ethereum/go-ethereum/event/subscription.go:200.62,202.9 2 1 +github.com/ethereum/go-ethereum/event/subscription.go:203.26,205.20 2 1 +github.com/ethereum/go-ethereum/event/subscription.go:206.17,207.14 1 0 +github.com/ethereum/go-ethereum/event/subscription.go:211.45,212.58 1 1 +github.com/ethereum/go-ethereum/event/subscription.go:221.2,223.9 3 1 +github.com/ethereum/go-ethereum/event/subscription.go:212.58,214.3 1 1 +github.com/ethereum/go-ethereum/event/subscription.go:214.8,216.32 2 1 +github.com/ethereum/go-ethereum/event/subscription.go:216.32,218.4 1 0 +github.com/ethereum/go-ethereum/event/subscription.go:224.13,225.15 1 1 +github.com/ethereum/go-ethereum/event/subscription.go:226.17,227.14 1 0 +github.com/ethereum/go-ethereum/event/subscription.go:252.65,255.15 3 1 +github.com/ethereum/go-ethereum/event/subscription.go:258.2,258.20 1 1 +github.com/ethereum/go-ethereum/event/subscription.go:261.2,263.11 3 1 +github.com/ethereum/go-ethereum/event/subscription.go:255.15,257.3 1 0 +github.com/ethereum/go-ethereum/event/subscription.go:258.20,260.3 1 1 +github.com/ethereum/go-ethereum/event/subscription.go:268.38,271.15 3 1 +github.com/ethereum/go-ethereum/event/subscription.go:274.2,275.25 2 1 +github.com/ethereum/go-ethereum/event/subscription.go:278.2,278.15 1 1 +github.com/ethereum/go-ethereum/event/subscription.go:271.15,273.3 1 0 +github.com/ethereum/go-ethereum/event/subscription.go:275.25,277.3 1 1 +github.com/ethereum/go-ethereum/event/subscription.go:283.42,287.2 3 0 +github.com/ethereum/go-ethereum/event/subscription.go:289.34,294.2 4 1 +github.com/ethereum/go-ethereum/event/subscription.go:296.39,298.2 1 1 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:94.51,96.2 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:142.62,144.2 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:147.54,152.2 3 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:155.53,160.2 3 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:163.37,167.2 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:172.63,176.48 3 1 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:179.2,182.21 3 1 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:185.2,186.33 2 1 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:190.2,190.44 1 1 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:176.48,178.3 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:182.21,184.3 1 1 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:186.33,188.3 1 1 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:194.87,196.16 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:199.2,211.12 3 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:196.16,198.3 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:215.33,227.2 9 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:230.32,235.2 4 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:239.135,247.12 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:290.2,294.36 3 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:298.2,301.6 3 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:247.12,251.7 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:286.3,286.16 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:251.7,252.11 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:254.31,255.12 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:261.38,262.12 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:268.21,269.57 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:272.5,274.12 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:280.25,281.21 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:282.27,283.21 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:256.31,256.31 0 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:257.13,257.13 0 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:263.32,263.32 0 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:264.13,264.13 0 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:269.57,270.14 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:275.29,275.29 0 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:276.13,276.13 0 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:294.36,296.3 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:301.6,302.10 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:303.17,304.10 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:305.21,314.29 5 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:322.4,322.18 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:328.4,328.39 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:334.4,337.40 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:344.4,346.19 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:381.4,385.21 3 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:314.29,317.19 3 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:317.19,319.11 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:322.18,325.13 3 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:328.39,332.13 4 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:337.40,341.13 4 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:346.19,347.12 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:348.19,352.12 3 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:354.25,355.42 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:358.29,359.55 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:362.27,363.53 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:366.6,366.49 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:370.34,371.65 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:375.17,376.49 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:355.42,357.7 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:359.55,361.7 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:363.53,365.7 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:366.49,368.7 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:371.65,373.7 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:376.49,378.7 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:394.47,398.6 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:398.6,401.46 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:406.3,407.98 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:415.3,416.52 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:420.3,421.28 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:425.3,426.10 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:431.3,431.54 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:443.3,443.52 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:476.3,476.48 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:401.46,404.4 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:407.98,408.84 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:412.4,412.12 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:408.84,411.5 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:416.52,419.4 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:421.28,424.4 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:426.10,429.4 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:431.54,432.11 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:433.32,435.13 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:436.12,439.11 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:443.52,446.11 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:454.4,455.11 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:460.4,461.29 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:469.4,469.11 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:446.11,448.12 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:452.5,452.13 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:449.26,449.26 0 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:450.13,450.13 0 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:455.11,458.5 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:461.29,463.12 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:467.5,467.27 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:463.12,466.6 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:470.29,471.13 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:472.12,472.12 0 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:504.50,509.43 3 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:512.2,513.49 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:518.2,538.46 3 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:542.2,543.98 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:546.2,546.12 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:509.43,511.3 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:513.49,515.3 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:515.8,517.3 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:538.46,540.3 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:543.98,545.3 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:552.51,553.46 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:556.2,556.49 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:559.2,559.46 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:562.2,562.44 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:565.2,565.12 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:553.46,555.3 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:556.49,558.3 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:559.46,561.3 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:562.44,564.3 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:570.58,580.45 3 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:584.2,584.9 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:591.2,602.30 4 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:580.45,582.3 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:585.18,585.18 0 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:587.37,589.38 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:631.51,632.53 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:635.2,635.26 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:632.53,634.3 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:639.76,654.2 5 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:658.70,669.8 3 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:693.2,709.3 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:669.8,670.19 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:673.3,677.43 4 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:680.3,680.26 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:670.19,672.4 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:677.43,679.4 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:681.8,683.19 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:688.3,689.20 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:683.19,685.4 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:685.9,687.4 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:714.73,717.19 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:732.2,733.33 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:754.2,754.22 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:759.2,766.31 3 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:717.19,720.3 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:720.8,724.16 3 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:727.3,727.50 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:724.16,726.4 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:727.50,729.4 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:733.33,737.9 3 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:745.3,745.19 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:750.3,751.8 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:737.9,739.4 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:739.9,740.107 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:740.107,742.5 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:745.19,747.12 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:754.22,756.3 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:756.8,758.3 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:776.58,792.2 5 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:800.44,807.2 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:816.99,820.48 2 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:823.2,823.48 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:827.2,834.31 3 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:820.48,822.3 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:823.48,825.3 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:850.56,860.8 3 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:877.2,894.31 4 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:860.8,869.69 7 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:869.69,871.4 1 0 +github.com/ethereum/go-ethereum/ethstats/ethstats.go:872.8,875.3 2 0 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:83.65,88.2 4 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:92.52,97.2 4 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:99.41,111.45 5 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:115.2,117.33 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:111.45,113.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:117.33,119.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:124.49,134.2 6 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:138.38,149.31 4 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:171.2,171.36 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:174.2,178.31 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:149.31,151.71 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:156.3,156.71 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:164.3,164.45 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:151.71,154.4 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:156.71,161.12 4 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:164.45,167.12 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:171.36,173.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:178.31,180.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:185.84,194.18 4 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:198.2,198.12 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:194.18,197.3 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:206.31,207.6 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:207.6,209.10 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:214.3,218.34 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:223.3,223.17 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:210.21,210.21 0 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:211.41,211.41 0 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:218.34,222.4 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:228.58,230.2 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:233.51,235.2 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:239.73,244.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:247.2,247.16 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:253.2,254.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:258.2,258.12 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:244.16,246.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:247.16,249.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:254.16,257.3 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:263.79,269.12 4 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:273.2,273.50 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:269.12,271.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:277.117,283.12 4 0 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:287.2,288.57 2 0 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:283.12,285.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:294.126,296.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:299.2,300.42 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:296.16,298.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:305.150,307.16 2 0 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:310.2,313.49 3 0 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:307.16,309.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:317.73,319.2 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:322.53,324.44 2 0 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:330.2,330.12 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:324.44,327.3 2 0 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:327.8,329.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:340.101,342.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:346.2,349.11 4 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:359.2,359.17 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:365.2,366.12 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:342.16,344.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:349.11,350.21 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:357.3,357.17 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:350.21,355.4 2 0 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:359.17,362.3 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:362.8,364.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:370.72,376.2 5 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:378.102,380.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:383.2,384.20 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:380.16,382.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:387.85,390.9 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:391.17,391.17 0 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:393.13,399.29 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:403.3,403.17 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:399.29,402.4 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:409.77,411.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:416.2,418.21 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:411.16,413.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:422.110,424.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:427.2,428.55 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:433.2,433.45 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:424.16,426.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:428.55,430.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:430.8,432.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:437.104,439.41 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:442.2,442.16 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:445.2,448.38 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:453.2,453.41 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:439.41,441.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:442.16,444.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:448.38,452.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:457.102,462.38 4 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:467.2,467.38 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:462.38,466.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:470.86,472.73 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:475.2,477.15 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:472.73,474.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:481.88,483.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:486.2,486.60 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:483.16,485.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:491.99,493.16 2 0 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:496.2,498.15 3 0 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:493.16,495.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:502.35,504.19 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:504.19,506.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:83.95,86.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:89.2,90.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:94.2,94.25 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:97.2,97.17 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:86.16,88.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:90.16,92.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:94.25,96.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:101.81,104.2 2 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:106.85,108.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:112.2,113.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:116.2,116.33 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:130.2,130.37 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:108.16,110.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:113.16,115.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:116.33,119.17 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:119.17,128.4 2 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:133.63,134.30 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:137.2,137.48 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:134.30,136.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:141.81,144.58 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:147.2,148.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:151.2,154.56 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:157.2,158.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:161.2,181.26 10 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:144.58,145.59 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:148.16,150.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:154.56,155.59 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:158.16,160.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:186.78,189.16 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:192.2,198.41 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:189.16,191.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:202.60,205.52 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:209.2,213.64 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:227.2,227.16 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:230.2,232.16 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:235.2,239.8 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:205.52,207.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:213.64,215.52 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:218.3,218.47 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:215.52,217.4 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:219.8,221.52 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:224.3,224.47 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:221.52,223.4 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:227.16,229.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:232.16,234.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:242.72,243.40 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:246.2,247.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:251.2,252.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:256.2,257.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:261.2,262.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:266.2,267.38 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:271.2,272.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:275.2,275.23 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:243.40,245.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:247.16,249.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:252.16,254.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:257.16,259.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:262.16,264.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:267.38,269.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:272.16,274.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:278.109,279.37 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:282.2,283.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:286.2,288.16 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:291.2,291.30 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:279.37,281.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:283.16,285.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:288.16,290.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:294.109,296.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:299.2,301.16 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:305.2,306.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:310.2,311.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:315.2,316.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:320.2,321.38 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:325.2,326.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:329.2,329.30 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:296.16,298.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:301.16,303.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:306.16,308.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:311.16,313.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:316.16,318.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:321.38,323.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:326.16,328.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:332.68,335.16 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:338.2,340.36 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:356.2,356.63 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:335.16,337.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:340.36,346.3 4 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:346.8,346.39 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:346.39,349.27 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:352.3,353.18 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:349.27,351.4 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:362.35,364.9 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:367.2,367.12 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:364.9,366.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/plain.go:32.90,34.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/plain.go:37.2,39.56 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/plain.go:42.2,42.25 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/plain.go:45.2,45.17 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/plain.go:34.16,36.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/plain.go:39.56,41.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/plain.go:42.25,44.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/plain.go:48.80,50.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/plain.go:53.2,53.40 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/plain.go:50.16,52.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/plain.go:56.58,57.30 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/plain.go:60.2,60.48 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/plain.go:57.30,59.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:35.107,37.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:40.2,41.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:44.2,52.20 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:37.16,39.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:41.16,43.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:55.83,63.16 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:66.2,67.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:70.2,70.28 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:73.2,85.16 6 1 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:88.2,98.33 6 1 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:101.2,101.17 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:63.16,65.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:67.16,69.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:70.28,72.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:85.16,87.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:98.33,100.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:104.56,107.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:110.2,113.21 4 1 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:107.16,109.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:116.64,118.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:121.2,125.22 5 1 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:128.2,128.23 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:118.16,120.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:125.22,127.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:132.35,133.18 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:137.2,138.55 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:144.2,144.56 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:149.2,149.34 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:133.18,135.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:138.55,140.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:140.8,140.25 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:140.25,142.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:144.56,145.23 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/presale.go:145.23,147.4 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:40.86,45.16 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:48.2,58.27 7 1 +github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:76.2,88.39 8 1 +github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:45.16,47.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:58.27,61.21 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:66.3,69.33 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:72.3,72.33 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:61.21,63.12 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:69.33,71.4 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:72.33,74.4 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:92.38,94.76 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:98.2,98.46 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:101.2,101.14 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:94.76,96.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:98.46,100.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:94.51,103.2 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:105.51,108.16 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:112.2,114.16 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:117.2,119.16 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:122.2,123.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:127.2,130.12 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:108.16,110.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:114.16,116.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:119.16,121.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:123.16,125.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:133.62,135.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:138.2,143.12 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:135.16,136.62 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:149.47,152.16 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:155.2,157.16 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:160.2,161.51 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:164.2,164.12 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:152.16,153.77 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:157.16,158.68 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:161.51,163.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:167.43,169.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:172.2,172.46 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:169.16,171.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:175.92,177.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:180.2,184.59 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:188.2,188.20 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:177.16,179.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:184.59,187.3 2 0 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:191.73,195.65 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:200.2,201.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:204.2,204.44 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:209.2,210.22 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:195.65,197.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:201.16,203.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:204.44,208.3 3 0 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:213.54,215.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:218.2,218.30 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:215.16,217.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:223.49,226.2 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:228.36,231.19 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:236.2,237.86 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:231.19,233.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/key.go:233.8,235.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:36.45,38.2 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:42.51,46.57 3 0 +github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:49.2,49.22 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:46.57,48.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:54.56,54.70 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:58.40,58.54 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:62.56,64.2 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:68.66,70.2 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:74.99,76.2 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:80.104,81.2 0 0 +github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:87.90,89.26 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:93.2,93.43 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:89.26,91.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:97.107,99.2 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:102.133,104.26 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:108.2,108.87 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:104.26,106.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:113.90,115.2 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:119.123,121.26 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:125.2,125.88 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:121.26,123.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:132.128,134.26 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:138.2,138.48 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:134.26,136.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:143.161,145.26 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:149.2,149.74 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:145.26,147.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/watch.go:37.44,43.2 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/watch.go:48.27,49.29 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/watch.go:52.2,53.13 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/watch.go:49.29,51.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/watch.go:56.27,58.2 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/watch.go:60.26,61.15 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/watch.go:67.2,69.68 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/watch.go:73.2,90.22 8 1 +github.com/ethereum/go-ethereum/accounts/keystore/watch.go:93.2,94.6 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/watch.go:61.15,66.3 4 1 +github.com/ethereum/go-ethereum/accounts/keystore/watch.go:69.68,72.3 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/watch.go:90.22,92.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/watch.go:94.6,95.10 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/watch.go:96.17,97.10 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/watch.go:98.15,100.24 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/watch.go:104.21,106.27 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/watch.go:100.24,103.5 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:43.44,43.61 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:44.44,44.81 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:45.44,45.71 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:54.47,56.32 2 0 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:62.2,62.63 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:56.32,58.29 2 0 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:58.29,60.4 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:77.68,86.2 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:88.55,95.2 6 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:97.62,102.2 4 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:104.58,108.49 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:109.2,109.48 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:113.2,116.83 4 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:108.49,108.98 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:109.48,111.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:120.58,125.76 4 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:125.76,127.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:127.8,129.3 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:133.51,136.49 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:138.2,138.51 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:136.49,136.86 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:138.51,141.77 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:141.77,143.4 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:143.9,145.4 1 0 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:149.88,150.23 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:155.2,155.14 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:150.23,151.23 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:151.23,153.4 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:161.76,164.37 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:167.2,167.22 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:181.2,181.22 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:164.37,166.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:167.22,169.60 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:172.3,172.26 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:177.3,177.38 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:169.60,171.4 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:172.26,173.31 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:173.31,175.5 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:177.38,179.4 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:182.9,183.25 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:184.9,185.40 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:186.10,190.33 4 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:194.39,197.24 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:201.2,201.24 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:212.2,215.19 4 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:197.24,200.3 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:201.24,203.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:203.8,204.10 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:205.24,205.24 0 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:206.11,208.10 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:218.33,221.24 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:224.2,224.22 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:228.2,228.16 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:221.24,223.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:224.22,227.3 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:233.46,236.16 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:240.2,240.92 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:244.2,250.53 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:276.2,278.38 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:283.2,283.38 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:286.2,286.38 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:293.2,295.9 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:299.2,300.12 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:236.16,239.3 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:240.92,242.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:250.53,252.17 2 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:256.3,262.10 6 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:273.3,273.13 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:252.17,255.4 2 0 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:263.19,264.72 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:265.33,266.94 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:267.11,271.5 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:278.38,279.45 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:279.45,281.4 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:283.38,285.3 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:286.38,289.39 3 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:289.39,291.4 1 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:296.31,296.31 0 1 +github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:297.10,297.10 0 1 +github.com/ethereum/go-ethereum/graphql/graphiql.go:37.60,42.2 4 0 +github.com/ethereum/go-ethereum/graphql/graphiql.go:44.35,48.2 3 0 +github.com/ethereum/go-ethereum/graphql/graphiql.go:50.69,51.23 1 0 +github.com/ethereum/go-ethereum/graphql/graphiql.go:55.2,56.19 2 0 +github.com/ethereum/go-ethereum/graphql/graphiql.go:51.23,54.3 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:46.55,46.80 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:49.58,51.31 2 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:71.2,71.12 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:52.14,62.13 3 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:64.13,65.19 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:66.13,67.19 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:68.10,69.57 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:82.73,85.2 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:87.72,89.2 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:91.69,93.16 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:96.2,97.20 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:100.2,100.35 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:93.16,95.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:97.20,99.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:103.81,105.86 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:112.2,113.16 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:116.2,116.55 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:105.86,107.17 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:110.3,110.36 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:107.17,109.4 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:113.16,115.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:119.68,121.16 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:124.2,124.38 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:121.16,123.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:127.102,129.16 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:132.2,132.50 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:129.16,131.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:142.61,144.2 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:146.75,152.2 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:154.48,156.2 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:158.57,160.2 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:162.55,164.2 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:172.68,174.2 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:176.71,178.2 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:191.80,192.17 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:208.2,208.18 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:192.17,195.30 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:206.3,206.46 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:195.30,204.4 5 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:211.61,213.2 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:215.77,217.29 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:220.2,220.23 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:217.29,219.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:223.72,225.29 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:228.2,228.38 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:225.29,227.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:231.74,233.29 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:236.2,236.19 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:233.29,235.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:237.30,238.42 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:239.30,240.21 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:246.3,246.42 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:247.10,248.42 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:240.21,241.64 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:241.64,244.5 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:252.84,254.29 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:258.2,258.20 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:261.2,262.33 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:265.2,265.27 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:268.2,268.107 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:254.29,256.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:258.20,260.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:262.33,264.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:265.27,267.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:271.79,273.29 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:276.2,276.19 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:273.29,275.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:277.30,278.18 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:279.30,280.45 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:281.10,282.18 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:286.87,288.29 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:291.2,291.19 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:288.29,290.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:292.30,293.18 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:294.30,295.45 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:296.10,297.18 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:301.79,303.29 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:307.2,307.20 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:310.2,311.33 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:314.2,314.27 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:318.2,319.16 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:322.2,322.33 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:303.29,305.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:307.20,309.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:311.33,313.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:314.27,316.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:319.16,321.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:325.71,327.29 2 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:330.2,330.23 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:333.2,333.38 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:327.29,329.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:330.23,332.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:336.74,338.29 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:341.2,341.40 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:338.29,340.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:344.87,346.29 2 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:349.2,350.15 2 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:353.2,357.8 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:346.29,348.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:350.15,352.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:360.89,362.29 2 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:365.2,371.8 3 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:362.29,364.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:374.66,375.42 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:378.2,378.21 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:375.42,377.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:381.66,382.42 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:385.2,385.20 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:388.2,389.20 2 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:382.42,384.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:385.20,387.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:393.79,394.42 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:397.2,397.20 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:400.2,401.16 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:404.2,404.31 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:394.42,396.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:397.20,399.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:401.16,403.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:407.66,409.34 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:412.2,412.33 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:415.2,416.18 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:409.34,411.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:412.33,414.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:419.67,421.34 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:424.2,425.18 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:421.34,423.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:428.77,430.34 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:433.2,434.18 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:430.34,432.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:437.100,439.83 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:442.2,446.8 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:439.83,441.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:449.66,451.34 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:454.2,455.35 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:462.2,462.18 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:451.34,453.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:455.35,461.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:465.65,467.16 2 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:470.2,471.21 2 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:467.16,469.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:474.80,476.29 2 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:479.2,481.32 3 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:487.2,487.18 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:476.29,478.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:481.32,486.3 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:490.67,492.29 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:495.2,496.29 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:492.29,494.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:499.67,501.29 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:504.2,505.29 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:501.29,503.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:508.67,510.29 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:513.2,514.29 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:510.29,512.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:533.68,534.20 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:537.2,537.27 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:541.2,543.39 3 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:549.2,549.21 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:534.20,536.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:537.27,540.3 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:543.39,545.44 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:545.44,547.4 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:555.75,556.56 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:559.2,560.21 2 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:567.2,567.22 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:556.56,558.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:560.21,561.32 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:561.32,563.4 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:563.9,565.4 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:572.80,573.23 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:588.2,588.24 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:573.23,575.30 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:582.3,583.17 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:586.3,586.24 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:575.30,577.18 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:580.4,580.24 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:577.18,579.5 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:583.17,585.4 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:591.59,593.16 2 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:597.2,597.42 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:593.16,595.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:600.64,601.31 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:608.2,608.20 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:601.31,603.17 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:606.3,606.25 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:603.17,605.4 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:611.61,613.16 2 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:616.2,616.35 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:613.16,615.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:619.60,621.16 2 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:624.2,624.34 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:621.16,623.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:627.74,629.16 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:632.2,632.27 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:635.2,635.44 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:629.16,631.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:632.27,634.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:638.78,640.16 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:643.2,644.27 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:650.2,651.41 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:640.16,642.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:644.27,646.71 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:646.71,648.4 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:654.61,655.48 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:658.2,658.53 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:661.2,666.8 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:655.48,657.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:658.53,660.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:669.70,671.16 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:674.2,674.45 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:671.16,673.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:677.72,679.16 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:682.2,682.41 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:679.16,681.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:685.67,687.16 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:690.2,690.29 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:687.16,689.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:693.67,695.16 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:698.2,698.30 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:695.16,697.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:701.76,703.16 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:706.2,706.27 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:703.16,705.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:709.69,711.16 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:714.2,714.25 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:711.16,713.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:717.72,719.16 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:722.2,722.32 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:719.16,721.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:725.69,727.16 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:730.2,730.30 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:727.16,729.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:733.65,735.32 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:738.2,739.20 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:735.32,737.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:742.64,744.32 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:747.2,748.39 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:756.2,756.18 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:744.32,746.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:748.39,755.3 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:759.71,761.16 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:764.2,764.26 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:761.16,763.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:767.71,769.16 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:772.2,772.34 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:769.16,771.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:775.75,777.26 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:784.2,785.15 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:788.2,788.30 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:777.26,779.17 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:782.3,782.20 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:779.17,781.4 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:785.15,787.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:801.88,802.20 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:806.2,806.16 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:802.20,805.3 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:811.65,813.2 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:815.84,817.16 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:820.2,824.8 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:817.16,819.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:827.71,829.32 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:832.2,833.20 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:829.32,831.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:836.76,838.32 2 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:841.2,842.42 2 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:851.2,851.18 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:838.32,840.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:842.42,850.3 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:854.102,856.32 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:859.2,860.51 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:863.2,870.8 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:856.32,858.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:860.51,862.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:873.90,875.32 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:878.2,879.54 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:882.2,888.8 3 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:875.32,877.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:879.54,881.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:912.96,914.31 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:917.2,918.27 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:925.2,925.17 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:914.31,916.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:918.27,924.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:928.102,930.34 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:933.2,934.31 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:937.2,938.29 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:946.2,949.42 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:930.34,932.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:934.31,936.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:938.29,940.17 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:943.3,943.23 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:940.17,942.4 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:954.22,955.27 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:961.2,965.8 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:955.27,957.17 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:957.17,959.4 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:988.43,990.2 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:992.37,994.2 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:996.36,998.2 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:1002.25,1003.27 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:1009.2,1010.16 2 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:1013.2,1014.21 2 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:1018.2,1022.8 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:1003.27,1005.17 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1005.17,1007.4 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1010.16,1012.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1014.21,1016.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1027.18,1028.27 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:1034.2,1035.23 2 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:1028.27,1030.17 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1030.17,1032.4 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1042.72,1045.2 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1047.78,1049.16 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1052.2,1053.25 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1061.2,1061.18 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1049.16,1051.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1053.25,1060.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1066.13,1073.2 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1077.25,1080.16 3 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1083.2,1084.21 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1088.2,1092.8 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1080.16,1082.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1084.21,1086.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1097.18,1101.2 3 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1111.20,1113.24 2 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:1139.2,1140.16 2 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:1145.2,1145.19 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:1113.24,1114.23 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:1117.3,1122.4 3 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:1114.23,1116.4 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:1123.8,1123.29 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:1123.29,1129.3 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1129.8,1135.3 2 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:1140.16,1142.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1142.8,1142.21 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:1142.21,1144.3 1 1 +github.com/ethereum/go-ethereum/graphql/graphql.go:1151.22,1155.20 3 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1160.2,1160.15 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1163.2,1164.30 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1182.2,1182.17 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1155.20,1157.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1157.8,1159.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1160.15,1162.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1164.30,1174.17 4 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1180.3,1180.27 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1174.17,1176.4 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1176.9,1176.22 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1176.22,1178.9 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1185.58,1187.2 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1189.108,1196.16 3 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1201.2,1201.16 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1196.16,1198.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1198.8,1198.21 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1198.21,1200.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1204.116,1206.54 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1209.2,1210.18 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1206.54,1208.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1233.100,1236.34 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1239.2,1240.32 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1243.2,1244.34 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1247.2,1248.31 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1252.2,1253.42 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1236.34,1238.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1240.32,1242.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1244.34,1246.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1248.31,1250.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1256.71,1258.16 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1261.2,1261.60 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1264.2,1264.36 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1258.16,1260.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1261.60,1263.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1267.83,1269.16 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1272.2,1272.36 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1269.16,1271.3 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1275.70,1277.2 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1284.52,1286.2 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1287.51,1289.2 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1290.51,1292.2 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1293.53,1295.2 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1296.57,1298.2 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1299.54,1301.2 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1302.58,1304.2 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1305.52,1307.2 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1308.57,1310.2 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1311.54,1313.2 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1314.58,1316.2 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1317.54,1319.2 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1320.58,1322.2 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1323.55,1325.2 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1326.54,1328.2 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1347.50,1351.52 2 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1355.2,1355.34 1 0 +github.com/ethereum/go-ethereum/graphql/graphql.go:1351.52,1353.3 1 0 +github.com/ethereum/go-ethereum/graphql/service.go:32.68,38.64 2 1 +github.com/ethereum/go-ethereum/graphql/service.go:43.2,45.16 3 1 +github.com/ethereum/go-ethereum/graphql/service.go:49.2,49.30 1 1 +github.com/ethereum/go-ethereum/graphql/service.go:53.2,54.23 2 1 +github.com/ethereum/go-ethereum/graphql/service.go:38.64,41.3 2 0 +github.com/ethereum/go-ethereum/graphql/service.go:45.16,48.3 2 0 +github.com/ethereum/go-ethereum/graphql/service.go:49.30,51.3 1 1 +github.com/ethereum/go-ethereum/graphql/service.go:59.81,60.20 1 1 +github.com/ethereum/go-ethereum/graphql/service.go:64.2,64.49 1 1 +github.com/ethereum/go-ethereum/graphql/service.go:60.20,61.27 1 0 +github.com/ethereum/go-ethereum/graphql/service.go:69.88,73.16 3 1 +github.com/ethereum/go-ethereum/graphql/service.go:76.2,83.12 6 1 +github.com/ethereum/go-ethereum/graphql/service.go:73.16,75.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:16.39,22.2 2 1 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:29.40,31.2 1 1 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:33.33,36.31 3 0 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:39.2,39.42 1 0 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:36.31,38.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:42.46,44.2 1 1 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:46.35,48.2 1 0 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:57.41,63.2 2 1 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:72.45,78.2 2 0 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:87.39,93.2 2 0 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:102.45,108.2 2 0 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:116.38,117.20 1 0 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:120.2,120.25 1 0 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:117.20,119.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:123.46,127.36 3 0 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:132.2,132.9 1 0 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:135.2,136.12 2 0 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:127.36,129.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:129.8,131.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:132.9,134.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:139.45,145.2 2 0 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:153.43,154.20 1 1 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:157.2,157.36 1 1 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:154.20,156.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:160.51,163.2 2 1 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:165.55,171.2 2 1 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:180.49,186.2 2 1 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:194.41,195.20 1 1 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:198.2,199.29 2 1 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:202.2,202.30 1 1 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:195.20,197.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:199.29,201.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:205.49,206.20 1 1 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:209.2,209.46 1 1 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:218.2,218.12 1 1 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:206.20,208.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:209.46,210.14 1 1 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:210.14,213.20 2 1 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:213.20,215.5 1 1 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:221.51,227.2 2 1 +github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:236.47,242.2 2 0 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:50.51,53.16 3 0 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:56.2,56.29 1 0 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:61.2,61.16 1 0 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:53.16,55.3 1 0 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:56.29,57.32 1 0 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:57.32,59.4 1 0 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:66.56,67.19 1 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:70.2,73.16 4 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:67.19,69.3 1 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:78.54,80.2 1 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:82.52,84.29 2 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:96.2,96.16 1 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:84.29,95.3 9 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:114.51,119.2 1 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:122.48,125.2 2 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:128.54,129.20 1 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:134.2,134.28 1 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:129.20,133.3 2 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:138.46,141.14 3 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:141.14,143.3 1 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:143.8,145.3 1 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:155.53,161.2 2 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:163.44,165.2 1 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:168.50,170.2 1 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:172.42,174.14 2 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:177.2,179.20 3 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:174.14,176.3 1 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:189.66,191.2 1 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:193.59,194.17 1 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:218.2,218.15 1 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:194.17,195.16 1 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:202.3,203.16 2 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:209.3,212.17 4 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:215.3,216.19 2 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:195.16,196.60 1 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:199.4,199.19 1 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:196.60,198.5 1 0 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:203.16,207.4 3 0 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:212.17,214.4 1 0 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:222.32,223.14 1 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:223.14,226.3 2 0 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:230.37,232.23 2 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:237.2,237.14 1 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:232.23,233.15 1 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:233.15,235.4 1 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:241.36,245.2 3 0 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:247.48,250.12 3 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:262.2,263.17 2 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:250.12,252.16 2 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:260.3,260.13 1 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:252.16,253.36 1 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:253.36,258.5 4 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:275.23,275.24 0 0 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:279.23,282.2 2 0 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:285.20,289.2 3 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:292.27,296.2 3 0 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:300.36,304.2 3 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:308.52,311.55 3 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:314.2,314.38 1 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:311.55,313.3 1 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:318.38,321.2 2 1 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:324.54,327.2 2 0 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:330.38,333.2 2 0 +github.com/ethereum/go-ethereum/internal/utesting/utesting.go:336.54,339.2 2 0 +github.com/ethereum/go-ethereum/internal/jsre/completion.go:28.58,30.33 2 1 +github.com/ethereum/go-ethereum/internal/jsre/completion.go:33.2,33.16 1 1 +github.com/ethereum/go-ethereum/internal/jsre/completion.go:30.33,32.3 1 1 +github.com/ethereum/go-ethereum/internal/jsre/completion.go:36.71,38.21 2 1 +github.com/ethereum/go-ethereum/internal/jsre/completion.go:44.2,45.36 2 1 +github.com/ethereum/go-ethereum/internal/jsre/completion.go:56.2,57.52 2 1 +github.com/ethereum/go-ethereum/internal/jsre/completion.go:69.2,69.45 1 1 +github.com/ethereum/go-ethereum/internal/jsre/completion.go:80.2,81.16 2 1 +github.com/ethereum/go-ethereum/internal/jsre/completion.go:38.21,40.3 1 0 +github.com/ethereum/go-ethereum/internal/jsre/completion.go:45.36,47.56 2 1 +github.com/ethereum/go-ethereum/internal/jsre/completion.go:50.3,50.23 1 1 +github.com/ethereum/go-ethereum/internal/jsre/completion.go:47.56,49.4 1 0 +github.com/ethereum/go-ethereum/internal/jsre/completion.go:57.52,58.35 1 1 +github.com/ethereum/go-ethereum/internal/jsre/completion.go:58.35,59.23 1 1 +github.com/ethereum/go-ethereum/internal/jsre/completion.go:59.23,61.5 1 1 +github.com/ethereum/go-ethereum/internal/jsre/completion.go:61.10,63.5 1 1 +github.com/ethereum/go-ethereum/internal/jsre/completion.go:69.45,71.17 2 1 +github.com/ethereum/go-ethereum/internal/jsre/completion.go:71.17,72.53 1 1 +github.com/ethereum/go-ethereum/internal/jsre/completion.go:72.53,74.5 1 1 +github.com/ethereum/go-ethereum/internal/jsre/completion.go:74.10,76.5 1 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:71.52,84.2 5 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:87.32,90.45 3 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:94.2,95.22 2 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:90.45,92.3 1 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:107.32,116.81 6 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:135.2,135.56 1 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:140.2,140.57 1 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:145.2,145.58 1 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:153.2,173.6 8 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:217.2,217.33 1 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:116.81,118.17 2 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:121.3,128.55 3 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:132.3,132.37 1 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:118.17,120.4 1 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:128.55,130.4 1 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:135.56,138.3 2 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:140.57,143.3 2 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:145.58,147.40 2 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:151.3,151.26 1 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:147.40,150.4 2 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:173.6,174.10 1 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:175.25,178.37 2 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:187.4,189.15 3 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:192.4,195.31 3 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:203.30,207.48 3 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:210.46,211.49 1 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:178.37,181.31 3 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:181.31,183.6 1 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:184.10,186.5 1 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:189.15,190.79 1 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:195.31,197.5 1 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:197.10,199.49 2 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:199.49,200.16 1 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:207.48,208.15 1 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:211.49,212.15 1 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:217.33,220.3 2 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:225.44,228.9 3 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:229.27,230.9 1 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:231.19,231.19 0 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:236.45,240.6 3 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:240.6,241.10 1 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:242.20,243.10 1 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:244.45,246.10 2 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:247.20,249.53 1 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:256.41,258.16 2 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:261.2,261.39 1 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:258.16,260.3 1 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:265.60,266.31 1 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:267.2,267.15 1 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:266.31,266.62 1 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:271.59,272.31 1 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:273.2,273.12 1 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:272.31,272.48 1 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:277.83,278.60 1 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:278.60,280.17 2 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:283.3,283.16 1 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:280.17,281.29 1 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:288.52,289.31 1 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:289.31,291.17 2 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:296.3,296.18 1 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:291.17,293.4 1 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:293.9,295.4 1 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:301.42,303.30 2 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:305.2,305.9 1 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:303.31,303.32 0 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:306.44,306.44 0 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:308.10,309.21 1 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:314.66,315.31 1 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:316.2,316.12 1 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:315.31,315.76 1 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:320.59,324.16 4 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:327.2,328.16 2 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:331.2,331.19 1 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:324.16,326.3 1 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:328.16,330.3 1 0 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:334.87,336.16 2 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:339.2,339.30 1 1 +github.com/ethereum/go-ethereum/internal/jsre/jsre.go:336.16,338.3 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:56.67,58.2 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:61.60,63.46 2 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:66.2,66.42 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:63.46,65.3 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:69.66,70.35 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:74.2,74.25 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:70.35,73.3 2 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:82.43,84.2 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:86.68,87.43 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:91.2,92.9 2 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:87.43,90.3 2 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:93.28,94.55 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:95.30,96.51 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:97.57,98.51 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:99.10,100.38 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:100.38,102.4 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:102.9,104.4 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:111.61,112.15 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:117.2,119.12 2 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:112.15,113.31 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:113.31,115.4 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:122.73,123.25 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:124.26,127.15 3 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:131.3,131.34 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:135.3,136.35 2 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:145.3,145.25 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:147.16,149.27 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:154.3,155.21 2 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:159.3,159.34 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:163.3,164.26 2 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:173.3,173.14 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:176.3,176.47 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:178.18,182.47 4 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:184.16,185.54 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:187.10,188.35 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:127.15,130.4 2 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:131.34,134.4 2 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:136.35,138.17 2 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:141.4,141.17 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:138.17,140.5 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:141.17,143.5 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:149.27,152.4 2 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:155.21,158.4 2 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:159.34,162.4 2 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:164.26,168.23 4 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:171.4,171.23 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:168.23,170.5 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:173.14,175.4 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:188.35,191.4 2 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:191.9,193.4 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:197.52,202.24 2 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:224.2,227.33 4 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:202.24,203.60 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:206.3,209.17 3 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:203.60,205.4 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:209.17,215.4 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:215.9,216.57 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:216.57,218.5 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:218.10,220.5 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:230.84,232.41 2 1 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:236.2,236.52 1 1 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:232.41,235.3 2 1 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:236.52,237.41 1 1 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:237.41,238.19 1 1 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:238.19,240.5 1 1 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:245.70,248.13 3 1 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:251.2,252.16 2 1 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:255.2,256.25 2 1 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:248.13,249.67 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:252.16,253.77 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:257.21,258.24 1 1 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:261.16,262.24 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:265.10,266.82 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:258.24,260.4 1 1 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:262.24,264.4 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:270.51,272.62 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:278.2,279.22 2 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:282.2,284.15 3 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:287.2,288.23 2 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:272.62,273.61 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:273.61,275.4 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:279.22,281.3 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:284.15,286.3 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:291.40,293.2 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:295.76,296.43 1 1 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:301.2,301.12 1 0 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:296.43,297.53 1 1 +github.com/ethereum/go-ethereum/internal/jsre/pretty.go:297.53,299.4 1 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:33.67,45.2 3 0 +github.com/ethereum/go-ethereum/les/catalyst/api.go:53.60,54.62 1 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:57.2,57.32 1 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:54.62,55.59 1 0 +github.com/ethereum/go-ethereum/les/catalyst/api.go:70.160,71.44 1 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:75.2,75.78 1 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:83.2,83.49 1 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:90.2,90.57 1 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:93.2,93.30 1 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:96.2,96.43 1 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:71.44,74.3 2 0 +github.com/ethereum/go-ethereum/les/catalyst/api.go:75.78,76.89 1 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:80.3,80.36 1 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:76.89,79.4 1 0 +github.com/ethereum/go-ethereum/les/catalyst/api.go:83.49,84.94 1 0 +github.com/ethereum/go-ethereum/les/catalyst/api.go:84.94,87.4 1 0 +github.com/ethereum/go-ethereum/les/catalyst/api.go:90.57,92.3 1 0 +github.com/ethereum/go-ethereum/les/catalyst/api.go:93.30,95.3 1 0 +github.com/ethereum/go-ethereum/les/catalyst/api.go:100.101,102.2 1 0 +github.com/ethereum/go-ethereum/les/catalyst/api.go:105.107,107.16 2 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:110.2,110.78 1 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:120.2,121.19 2 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:124.2,126.21 3 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:129.2,129.73 1 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:132.2,132.54 1 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:135.2,136.82 2 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:107.16,109.3 1 0 +github.com/ethereum/go-ethereum/les/catalyst/api.go:110.78,119.3 1 0 +github.com/ethereum/go-ethereum/les/catalyst/api.go:121.19,123.3 1 0 +github.com/ethereum/go-ethereum/les/catalyst/api.go:126.21,128.3 1 0 +github.com/ethereum/go-ethereum/les/catalyst/api.go:129.73,131.3 1 0 +github.com/ethereum/go-ethereum/les/catalyst/api.go:132.54,134.3 1 0 +github.com/ethereum/go-ethereum/les/catalyst/api.go:139.78,144.2 2 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:147.59,150.2 2 0 +github.com/ethereum/go-ethereum/les/catalyst/api.go:152.79,154.37 1 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:158.2,159.19 2 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:162.2,163.84 2 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:166.2,166.12 1 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:154.37,156.3 1 0 +github.com/ethereum/go-ethereum/les/catalyst/api.go:159.19,161.3 1 0 +github.com/ethereum/go-ethereum/les/catalyst/api.go:163.84,165.3 1 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:170.61,174.34 3 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:177.2,178.26 2 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:181.2,181.73 1 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:185.2,185.56 1 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:188.2,188.12 1 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:174.34,176.3 1 1 +github.com/ethereum/go-ethereum/les/catalyst/api.go:178.26,180.3 1 0 +github.com/ethereum/go-ethereum/les/catalyst/api.go:181.73,183.3 1 0 +github.com/ethereum/go-ethereum/les/catalyst/api.go:185.56,187.3 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:73.72,82.18 2 1 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:85.2,86.13 2 1 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:82.18,84.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:90.38,96.2 4 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:99.57,103.21 3 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:106.2,110.12 5 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:113.2,113.41 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:103.21,105.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:110.12,112.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:121.50,129.2 6 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:133.34,138.2 4 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:142.52,143.73 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:148.2,148.20 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:143.73,147.3 3 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:152.54,154.25 2 1 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:157.2,158.49 2 1 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:161.2,161.21 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:164.2,164.21 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:154.25,156.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:158.49,160.3 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:161.21,163.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:168.59,174.51 5 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:174.51,177.3 2 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:177.8,178.41 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:185.3,185.128 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:178.41,179.50 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:179.50,183.5 3 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:190.79,192.14 2 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:197.2,197.41 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:192.14,194.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:194.8,194.51 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:194.51,196.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:203.118,209.36 5 1 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:216.2,218.21 3 1 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:221.2,222.54 2 1 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:209.36,210.22 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:214.3,214.51 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:210.22,213.4 2 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:218.21,220.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:226.89,234.21 7 1 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:237.2,238.12 2 1 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:241.2,241.19 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:234.21,236.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:238.12,240.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:259.73,268.18 2 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:271.2,271.13 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:268.18,270.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:275.59,280.44 4 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:287.2,287.22 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:280.44,282.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:282.8,283.41 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:283.41,285.4 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:292.55,293.25 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:296.2,296.22 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:304.2,305.21 2 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:293.25,295.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:296.22,299.47 3 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:299.47,302.4 2 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:305.21,307.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:316.74,320.31 3 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:323.2,326.36 4 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:329.2,329.33 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:336.2,337.21 2 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:340.2,340.20 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:320.31,322.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:326.36,328.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:329.33,331.22 2 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:334.3,334.19 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:331.22,333.4 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:337.21,339.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:346.62,355.33 5 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:361.2,363.21 3 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:355.33,357.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:357.8,360.3 2 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:363.21,365.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:370.57,376.31 5 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:379.2,380.9 2 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:383.2,386.13 4 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:389.2,389.36 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:396.2,398.21 3 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:376.31,378.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:380.9,382.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:386.13,388.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:389.36,394.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:398.21,400.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:405.49,409.34 3 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:412.2,414.31 3 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:417.2,420.21 4 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:409.34,411.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:414.31,416.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:420.21,422.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:426.36,430.21 3 0 +github.com/ethereum/go-ethereum/les/flowcontrol/control.go:430.21,432.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/logger.go:41.44,46.2 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/logger.go:49.56,51.68 2 0 +github.com/ethereum/go-ethereum/les/flowcontrol/logger.go:55.2,56.14 2 0 +github.com/ethereum/go-ethereum/les/flowcontrol/logger.go:51.68,54.3 2 0 +github.com/ethereum/go-ethereum/les/flowcontrol/logger.go:60.43,61.41 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/logger.go:61.41,64.3 2 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:108.81,111.65 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:115.2,115.18 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:118.2,118.12 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:132.2,132.11 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:111.65,111.99 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:115.18,117.3 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:118.12,120.7 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:120.7,121.11 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:122.35,125.21 3 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:126.27,128.11 2 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:136.33,140.2 3 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:143.66,150.20 6 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:150.20,152.3 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:152.8,154.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:161.77,162.13 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:165.2,166.13 2 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:169.2,172.22 4 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:162.13,164.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:166.13,168.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:177.52,189.2 10 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:192.55,201.2 7 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:207.106,214.2 5 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:220.100,221.24 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:224.2,224.53 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:221.24,223.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:229.88,234.39 4 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:234.39,235.22 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:238.3,238.36 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:235.22,237.4 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:243.98,252.2 7 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:256.45,257.36 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:261.2,263.20 3 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:266.2,266.15 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:269.2,269.44 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:257.36,260.3 2 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:263.20,265.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:266.15,268.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:274.61,279.25 3 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:279.25,281.37 2 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:284.3,287.21 4 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:290.3,295.18 4 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:302.3,304.60 2 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:308.3,308.45 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:281.37,283.4 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:287.21,289.4 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:295.18,301.4 3 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:304.60,307.4 2 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:314.110,317.54 3 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:325.2,327.14 3 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:330.2,331.49 2 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:335.2,335.14 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:338.2,338.28 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:341.2,341.13 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:317.54,320.54 3 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:323.3,323.42 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:320.54,322.4 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:327.14,329.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:331.49,334.3 2 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:335.14,337.3 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:338.28,340.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:341.13,343.28 2 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:346.3,348.46 3 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:343.28,345.4 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:353.64,358.35 4 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:361.2,364.40 4 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:367.2,367.35 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:358.35,360.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:364.40,366.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:376.80,380.47 3 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:386.2,386.40 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:389.2,389.13 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:380.47,382.48 2 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:382.48,384.4 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:386.40,388.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:389.13,391.3 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:396.44,398.88 2 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:401.2,402.31 2 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:398.88,400.3 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:402.31,403.10 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:404.55,404.55 0 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:405.11,405.11 0 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:412.72,418.2 4 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:424.54,427.12 3 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:430.2,430.13 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:438.2,438.12 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:441.2,442.19 2 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:445.2,446.12 2 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:449.2,449.87 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:427.12,429.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:430.13,432.19 2 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:432.19,434.4 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:434.9,436.4 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:438.12,440.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:442.19,444.3 1 1 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:446.12,448.3 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:453.41,455.24 2 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:461.2,461.13 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:455.24,456.18 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:459.3,459.14 1 0 +github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:456.18,458.4 1 0 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:38.66,40.2 1 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:44.53,46.2 1 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:49.53,51.2 1 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:54.47,56.2 1 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:59.71,60.43 1 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:68.2,69.8 2 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:60.43,63.44 2 0 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:63.44,66.4 2 0 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:69.8,71.18 2 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:71.18,73.4 1 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:74.8,75.18 1 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:75.18,76.41 1 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:83.4,83.45 1 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:76.41,82.5 4 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:92.49,93.6 1 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:93.6,94.26 1 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:97.3,100.27 4 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:103.3,103.78 1 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:94.26,96.4 1 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:100.27,102.4 1 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:103.78,105.4 1 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:120.59,122.124 2 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:128.2,131.18 4 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:135.2,136.28 2 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:142.2,143.41 2 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:122.124,124.28 2 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:124.28,125.14 1 0 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:131.18,134.3 2 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:136.28,139.3 2 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:139.8,141.3 1 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:148.60,149.18 1 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:160.2,165.17 6 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:168.2,168.13 1 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:149.18,154.18 5 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:158.3,158.14 1 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:154.18,157.4 2 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:165.17,167.3 1 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:172.56,173.30 1 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:182.2,182.12 1 0 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:173.30,174.14 1 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:180.3,180.11 1 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:174.14,175.20 1 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:178.4,178.44 1 1 +github.com/ethereum/go-ethereum/les/utils/weighted_select.go:175.20,177.5 1 1 +github.com/ethereum/go-ethereum/les/utils/exec_queue.go:31.44,36.2 4 1 +github.com/ethereum/go-ethereum/les/utils/exec_queue.go:38.28,39.61 1 1 +github.com/ethereum/go-ethereum/les/utils/exec_queue.go:42.2,42.20 1 1 +github.com/ethereum/go-ethereum/les/utils/exec_queue.go:39.61,41.3 1 1 +github.com/ethereum/go-ethereum/les/utils/exec_queue.go:45.52,47.30 2 1 +github.com/ethereum/go-ethereum/les/utils/exec_queue.go:52.2,52.20 1 1 +github.com/ethereum/go-ethereum/les/utils/exec_queue.go:59.2,60.10 2 1 +github.com/ethereum/go-ethereum/les/utils/exec_queue.go:47.30,51.3 1 1 +github.com/ethereum/go-ethereum/les/utils/exec_queue.go:52.20,53.23 1 1 +github.com/ethereum/go-ethereum/les/utils/exec_queue.go:57.3,57.16 1 1 +github.com/ethereum/go-ethereum/les/utils/exec_queue.go:53.23,55.9 2 1 +github.com/ethereum/go-ethereum/les/utils/exec_queue.go:63.37,65.2 1 1 +github.com/ethereum/go-ethereum/les/utils/exec_queue.go:68.37,73.2 4 1 +github.com/ethereum/go-ethereum/les/utils/exec_queue.go:76.42,79.8 3 1 +github.com/ethereum/go-ethereum/les/utils/exec_queue.go:83.2,84.11 2 1 +github.com/ethereum/go-ethereum/les/utils/exec_queue.go:79.8,82.3 2 1 +github.com/ethereum/go-ethereum/les/utils/exec_queue.go:88.29,92.2 3 0 +github.com/ethereum/go-ethereum/les/utils/exec_queue.go:97.28,99.19 2 1 +github.com/ethereum/go-ethereum/les/utils/exec_queue.go:103.2,104.15 2 1 +github.com/ethereum/go-ethereum/les/utils/exec_queue.go:99.19,102.3 2 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:60.52,62.2 1 0 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:66.67,68.2 1 0 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:71.55,74.2 2 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:77.67,81.21 4 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:84.2,84.21 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:88.2,88.42 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:100.2,102.12 3 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:81.21,83.3 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:84.21,87.3 2 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:88.42,93.16 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:98.3,98.16 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:93.16,95.4 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:95.9,97.4 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:106.47,107.19 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:110.2,110.19 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:114.2,114.18 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:107.19,109.3 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:110.19,113.3 2 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:118.47,119.19 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:122.2,122.19 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:126.2,126.21 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:119.19,121.3 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:122.19,125.3 2 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:126.21,128.3 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:128.8,130.3 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:134.38,136.2 1 0 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:148.62,150.23 2 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:158.2,158.14 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:150.23,152.20 2 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:152.20,154.4 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:154.9,156.4 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:163.75,165.23 2 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:174.2,174.43 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:179.2,179.14 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:165.23,167.20 2 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:172.3,172.20 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:167.20,169.4 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:169.9,171.4 1 0 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:174.43,176.3 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:176.8,178.3 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:203.61,208.12 4 0 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:211.2,212.15 2 0 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:208.12,210.3 1 0 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:216.71,222.2 4 0 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:225.57,230.13 4 0 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:233.2,233.67 1 0 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:230.13,232.3 1 0 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:243.40,245.2 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:248.42,250.2 1 0 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:253.38,255.2 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:258.39,260.2 1 1 +github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:268.35,270.2 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:71.42,71.81 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:76.44,77.25 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:80.2,85.35 6 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:77.25,78.59 1 0 +github.com/ethereum/go-ethereum/les/utils/limiter.go:91.62,92.92 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:95.2,98.26 4 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:92.92,93.59 1 0 +github.com/ethereum/go-ethereum/les/utils/limiter.go:103.47,104.92 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:108.2,109.24 2 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:113.2,116.12 4 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:121.2,121.26 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:104.92,105.59 1 0 +github.com/ethereum/go-ethereum/les/utils/limiter.go:109.24,112.3 2 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:116.12,118.3 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:118.8,120.3 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:125.45,127.2 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:130.45,132.72 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:138.2,140.10 3 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:132.72,132.115 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:133.72,133.112 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:146.98,147.24 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:150.2,150.15 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:154.2,154.25 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:157.2,159.22 3 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:164.2,166.21 3 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:169.2,169.8 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:147.24,149.3 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:150.15,153.3 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:154.25,156.3 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:159.22,161.3 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:161.8,163.3 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:166.21,168.3 1 0 +github.com/ethereum/go-ethereum/les/utils/limiter.go:177.100,182.12 4 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:186.2,186.18 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:189.2,189.31 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:224.2,225.32 2 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:228.2,228.16 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:182.12,185.3 2 0 +github.com/ethereum/go-ethereum/les/utils/limiter.go:186.18,188.3 1 0 +github.com/ethereum/go-ethereum/les/utils/limiter.go:189.31,190.22 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:190.22,194.29 4 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:194.29,198.5 2 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:199.9,205.4 4 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:206.8,215.24 3 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:218.3,219.26 2 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:222.3,222.28 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:215.24,217.4 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:219.26,221.4 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:225.32,227.3 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:232.41,234.21 2 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:239.2,244.26 6 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:234.21,236.3 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:236.8,238.3 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:249.61,252.15 3 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:256.2,257.28 2 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:252.15,255.3 2 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:261.50,264.24 3 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:267.2,267.28 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:264.24,266.3 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:272.41,274.25 2 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:277.2,277.24 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:274.25,276.3 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:281.39,282.52 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:288.2,290.11 3 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:282.52,283.61 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:283.61,286.4 2 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:294.33,298.6 3 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:298.6,299.13 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:307.3,308.16 2 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:312.3,312.22 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:299.13,300.31 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:305.4,305.10 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:300.31,301.38 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:301.38,303.6 1 0 +github.com/ethereum/go-ethereum/les/utils/limiter.go:308.16,310.12 2 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:312.22,322.25 10 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:322.25,324.5 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:324.10,326.5 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:327.9,330.4 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:335.26,341.2 4 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:351.29,353.2 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:355.39,357.2 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:359.34,361.2 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:366.34,371.29 2 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:374.2,374.29 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:387.2,388.28 2 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:371.29,373.3 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:374.29,375.22 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:378.3,379.19 2 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:382.3,385.5 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:375.22,376.12 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:379.19,381.4 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:388.28,389.41 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:396.3,401.36 6 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:389.41,391.4 1 1 +github.com/ethereum/go-ethereum/les/utils/limiter.go:401.36,403.4 1 1 +github.com/ethereum/go-ethereum/les/utils/timeutils.go:33.79,35.19 1 1 +github.com/ethereum/go-ethereum/les/utils/timeutils.go:39.2,39.18 1 1 +github.com/ethereum/go-ethereum/les/utils/timeutils.go:42.2,46.3 1 1 +github.com/ethereum/go-ethereum/les/utils/timeutils.go:35.19,37.3 1 1 +github.com/ethereum/go-ethereum/les/utils/timeutils.go:39.18,41.3 1 0 +github.com/ethereum/go-ethereum/les/utils/timeutils.go:49.75,51.2 1 1 +github.com/ethereum/go-ethereum/les/utils/timeutils.go:53.96,58.14 4 1 +github.com/ethereum/go-ethereum/les/utils/timeutils.go:61.2,61.24 1 1 +github.com/ethereum/go-ethereum/les/utils/timeutils.go:64.2,64.20 1 1 +github.com/ethereum/go-ethereum/les/utils/timeutils.go:68.2,68.14 1 0 +github.com/ethereum/go-ethereum/les/utils/timeutils.go:58.14,60.3 1 0 +github.com/ethereum/go-ethereum/les/utils/timeutils.go:61.24,63.3 1 1 +github.com/ethereum/go-ethereum/les/utils/timeutils.go:64.20,67.3 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:142.52,143.26 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:146.2,146.33 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:143.26,145.3 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:150.55,151.26 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:154.2,154.28 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:151.26,153.3 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:203.276,229.2 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:233.32,235.2 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:239.31,241.2 1 0 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:246.70,255.9 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:256.25,257.13 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:258.16,259.23 1 0 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:264.71,269.9 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:270.22,271.13 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:272.16,273.23 1 0 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:279.108,285.9 3 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:291.2,291.9 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:297.2,297.9 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:286.32,286.32 0 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:287.16,288.13 1 0 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:292.77,292.77 0 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:293.16,294.13 1 0 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:298.24,299.22 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:300.16,301.13 1 0 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:307.173,313.9 3 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:319.2,319.9 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:325.2,325.9 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:314.30,314.30 0 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:315.16,316.18 1 0 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:320.101,320.101 0 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:321.16,322.18 1 0 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:326.24,327.40 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:328.16,329.18 1 0 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:335.31,346.6 6 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:346.6,348.42 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:354.3,355.24 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:382.3,382.10 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:348.42,349.48 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:349.48,351.5 1 0 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:355.24,358.32 3 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:362.4,363.25 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:371.4,371.120 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:375.4,375.15 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:358.32,360.5 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:363.25,365.33 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:368.5,368.10 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:365.33,367.6 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:371.120,373.13 2 0 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:375.15,377.5 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:377.10,379.5 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:383.17,385.10 1 0 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:387.35,392.25 3 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:398.4,398.31 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:406.4,406.50 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:409.4,409.52 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:412.4,414.79 3 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:417.4,417.29 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:421.25,427.15 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:430.4,430.39 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:432.25,435.23 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:437.23,441.45 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:461.4,461.38 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:477.4,477.33 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:479.26,483.43 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:495.4,495.38 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:506.4,506.39 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:508.35,513.11 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:518.4,523.40 3 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:572.4,573.11 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:579.4,579.40 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:590.4,590.42 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:594.4,594.35 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:600.33,603.11 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:608.4,611.29 3 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:654.4,655.11 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:661.4,661.33 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:392.25,395.10 3 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:398.31,399.113 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:399.113,402.11 3 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:406.50,407.10 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:409.52,410.10 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:414.79,416.5 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:417.29,419.5 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:427.15,428.13 1 0 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:441.45,445.16 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:448.5,448.48 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:445.16,447.6 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:448.48,454.88 3 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:454.88,457.7 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:461.38,466.15 3 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:466.15,467.31 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:470.6,470.34 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:467.31,469.7 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:470.34,473.7 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:483.43,489.32 3 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:489.32,492.6 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:495.38,499.32 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:502.5,503.51 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:499.32,501.6 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:514.25,514.25 0 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:515.18,516.11 1 0 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:523.40,527.166 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:527.166,529.51 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:537.6,537.17 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:546.6,546.33 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:529.51,533.15 4 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:537.17,538.35 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:542.7,543.15 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:538.35,541.8 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:546.33,551.91 3 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:562.7,562.48 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:551.91,559.16 6 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:563.12,566.7 2 0 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:567.11,570.6 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:574.72,574.72 0 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:575.18,576.11 1 0 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:579.40,581.40 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:584.5,585.28 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:581.40,582.14 1 0 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:585.28,587.6 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:590.42,592.5 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:594.35,595.64 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:595.64,597.6 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:604.25,604.25 0 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:605.18,606.11 1 0 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:611.29,612.73 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:612.73,619.47 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:646.6,646.17 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:619.47,620.64 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:623.7,623.39 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:626.7,626.49 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:629.7,629.37 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:632.7,632.44 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:636.7,637.34 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:620.64,621.16 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:623.39,625.8 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:626.49,627.16 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:629.37,631.8 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:632.44,633.16 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:637.34,641.8 3 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:641.13,643.8 1 0 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:646.17,650.15 4 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:656.24,656.24 0 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:657.18,658.11 1 0 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:661.33,662.64 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:662.64,664.6 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:671.59,673.27 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:678.2,678.13 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:683.2,684.40 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:689.2,689.51 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:673.27,675.3 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:678.13,681.3 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:684.40,685.40 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:685.40,687.4 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:693.65,695.25 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:699.2,700.38 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:705.2,705.52 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:695.25,697.3 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:700.38,701.40 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:701.40,703.4 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:710.87,715.19 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:721.2,722.24 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:729.2,729.97 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:736.2,736.34 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:715.19,717.3 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:717.8,719.3 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:722.24,727.3 4 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:729.97,734.3 4 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:736.34,738.20 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:743.3,746.31 4 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:749.3,749.120 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:738.20,740.4 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:740.9,742.4 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:746.31,748.4 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:756.73,760.12 3 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:760.12,761.16 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:763.3,764.20 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:769.3,769.83 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:775.3,775.69 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:780.3,780.28 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:761.16,761.34 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:764.20,767.4 2 0 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:769.83,773.4 3 0 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:775.69,778.4 2 0 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:780.28,782.4 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:789.70,794.12 3 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:794.12,795.16 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:798.3,799.20 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:804.3,804.53 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:820.3,820.63 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:825.3,829.28 3 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:795.16,795.34 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:799.20,802.4 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:805.12,808.36 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:810.33,810.33 0 0 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:813.11,817.10 3 0 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:820.63,823.4 2 0 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:829.28,831.4 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:837.53,839.46 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:852.2,852.51 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:861.2,861.43 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:867.2,870.53 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:839.46,840.40 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:846.3,847.34 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:840.40,842.41 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:842.41,844.5 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:847.34,849.4 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:852.51,854.40 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:857.3,857.27 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:854.40,856.4 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:861.43,863.40 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:863.40,865.4 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:870.53,872.40 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:875.3,875.29 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:872.40,874.4 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:881.54,882.45 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:882.45,884.35 2 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:887.3,887.25 1 1 +github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:884.35,886.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/api.go:33.62,35.2 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/api.go:38.53,39.51 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/api.go:42.2,42.71 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/api.go:39.51,41.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/api.go:42.71,44.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/api.go:44.8,46.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/api.go:51.64,53.2 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/api.go:61.100,63.17 2 0 +github.com/ethereum/go-ethereum/les/vflux/client/api.go:66.2,66.19 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/api.go:69.2,69.50 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/api.go:63.17,65.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/api.go:66.19,68.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/api.go:69.50,71.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/api.go:71.8,73.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/api.go:83.89,84.19 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/api.go:87.2,87.50 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/api.go:84.19,86.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/api.go:87.50,89.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/api.go:89.8,91.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/api.go:96.86,99.19 3 0 +github.com/ethereum/go-ethereum/les/vflux/client/api.go:102.2,102.50 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/api.go:99.19,101.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/api.go:102.50,104.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/api.go:104.8,106.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:42.103,50.83 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:64.2,65.11 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:50.83,52.29 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:55.3,55.29 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:58.3,58.27 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:61.3,61.19 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:52.29,54.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:55.29,57.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:58.27,60.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:70.31,71.6 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:71.6,73.43 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:77.3,78.23 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:81.3,81.66 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:73.43,75.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:78.23,80.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:89.42,94.26 4 1 +github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:94.26,96.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:100.28,107.2 5 1 +github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:42.150,50.107 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:74.2,74.11 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:50.107,53.27 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:57.3,60.15 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:72.3,72.19 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:53.27,55.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:60.15,62.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:62.9,64.32 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:64.32,65.22 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:65.22,68.11 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:78.38,80.38 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:91.2,91.15 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:97.2,97.13 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:105.2,106.13 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:80.38,81.29 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:84.3,84.40 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:87.3,87.29 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:81.29,83.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:84.40,86.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:87.29,89.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:91.15,95.3 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:97.13,101.3 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:101.8,104.3 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:110.34,115.2 4 1 +github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:118.45,123.2 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:75.44,76.17 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:85.2,85.17 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:76.17,78.32 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:83.3,83.14 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:78.32,82.4 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:85.17,87.32 2 0 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:92.3,92.14 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:87.32,91.4 3 0 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:98.39,99.27 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:99.27,101.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:106.105,111.2 4 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:115.57,117.2 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:122.62,127.35 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:139.2,139.12 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:127.35,130.20 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:133.3,133.19 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:136.3,137.36 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:130.20,132.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:133.19,135.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:144.42,148.2 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:153.56,160.36 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:164.2,164.19 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:172.2,172.21 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:160.36,163.3 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:164.19,167.37 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:167.37,170.4 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:177.45,179.35 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:179.35,180.19 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:180.19,182.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:182.9,184.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:189.39,191.35 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:195.2,196.35 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:191.35,194.3 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:196.35,199.3 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:204.69,209.35 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:213.2,213.19 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:216.2,216.55 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:209.35,212.3 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:213.19,215.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:220.51,222.2 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:225.53,229.40 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:232.2,233.12 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:229.40,231.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:237.54,239.2 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:242.56,247.39 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:250.2,251.12 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:247.39,249.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:259.112,261.34 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:264.2,266.34 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:273.2,273.22 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:278.2,278.34 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:284.2,284.11 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:261.34,263.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:266.34,267.34 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:267.34,271.4 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:273.22,275.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:275.8,277.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:278.34,279.34 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:279.34,282.4 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:110.43,111.40 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:120.4,120.48 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:111.40,119.5 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:122.41,131.4 4 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:136.43,137.42 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:141.4,141.48 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:137.42,140.5 2 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:143.41,145.53 2 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:148.4,148.20 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:145.53,147.5 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:154.200,158.30 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:164.2,172.18 8 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:176.2,176.132 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:184.2,186.34 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:158.30,158.58 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:172.18,174.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:176.132,177.63 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:177.63,181.4 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:186.34,187.26 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:187.26,190.5 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:203.42,204.27 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:208.2,208.14 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:204.27,207.3 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:212.49,214.2 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:217.38,219.2 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:224.54,229.34 4 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:232.2,232.30 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:235.2,235.33 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:229.34,231.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:232.30,234.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:235.33,237.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:241.55,242.19 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:242.19,244.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:250.92,252.93 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:297.2,297.88 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:252.93,253.32 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:260.3,262.30 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:265.3,265.48 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:274.3,274.13 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:253.32,254.32 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:258.4,258.10 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:254.32,257.5 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:262.30,264.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:265.48,273.4 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:274.13,276.15 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:286.4,286.26 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:276.15,279.34 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:279.34,282.6 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:283.10,285.5 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:286.26,288.15 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:293.5,293.55 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:288.15,290.6 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:290.11,292.6 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:297.88,298.14 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:298.14,300.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:300.9,302.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:307.30,309.36 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:314.2,314.36 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:321.2,322.24 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:337.2,337.35 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:309.36,313.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:314.36,315.64 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:315.64,317.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:317.9,319.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:322.24,323.93 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:323.93,325.100 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:325.100,328.24 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:333.5,333.93 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:328.24,332.6 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:341.29,342.22 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:345.2,345.24 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:351.2,352.13 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:342.22,344.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:345.24,346.91 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:346.91,349.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:356.80,357.40 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:360.2,361.24 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:368.2,368.17 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:357.40,359.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:361.24,364.29 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:364.29,366.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:372.55,373.24 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:378.2,378.28 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:373.24,377.3 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:384.37,390.69 5 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:394.2,404.40 4 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:407.2,407.44 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:410.2,411.26 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:422.2,423.24 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:390.69,392.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:404.40,406.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:407.44,409.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:411.26,415.37 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:418.3,418.31 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:415.37,417.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:418.31,420.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:427.49,432.2 4 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:436.81,441.2 4 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:445.71,447.16 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:450.2,451.30 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:454.2,454.22 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:447.16,449.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:451.30,453.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:458.88,460.16 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:463.2,468.85 5 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:476.2,476.8 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:460.16,462.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:468.85,472.33 4 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:472.33,474.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:482.95,484.35 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:493.2,493.20 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:484.35,487.3 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:487.8,492.3 4 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:505.91,522.32 7 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:537.2,538.34 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:543.2,545.23 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:548.2,548.33 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:551.2,552.26 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:522.32,525.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:525.8,534.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:538.34,540.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:545.23,547.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:548.33,550.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:552.26,558.3 5 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:558.8,564.3 3 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:571.56,576.2 4 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:579.46,581.2 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:585.65,585.79 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:586.65,586.81 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:595.58,596.68 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:600.2,600.10 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:596.68,599.3 2 0 +github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:604.45,606.2 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:53.47,54.11 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:57.2,58.11 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:61.2,62.26 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:65.2,65.10 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:54.11,56.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:58.11,60.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:62.26,64.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:70.47,72.11 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:75.2,75.52 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:72.11,74.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:83.70,84.21 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:92.2,92.8 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:84.21,86.20 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:86.20,88.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:88.9,90.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:96.59,102.2 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:105.61,110.39 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:113.2,114.12 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:110.39,112.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:118.108,125.26 7 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:125.26,127.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:132.49,133.18 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:140.2,140.18 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:133.18,135.30 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:138.3,138.15 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:135.30,137.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:140.18,142.30 2 0 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:145.3,145.15 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:142.30,144.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:151.106,153.29 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:156.2,156.11 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:159.2,159.55 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:153.29,155.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:156.11,158.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:163.61,165.28 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:165.28,167.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:171.61,173.28 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:173.28,174.22 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:174.22,176.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:176.9,178.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:188.70,190.29 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:193.2,195.32 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:199.2,200.21 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:203.2,203.11 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:206.2,207.26 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:210.2,210.11 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:190.29,192.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:195.32,198.3 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:200.21,202.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:203.11,205.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:207.26,209.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:219.114,221.16 2 0 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:232.2,232.29 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:236.2,236.8 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:221.16,223.30 2 0 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:226.3,226.14 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:223.30,225.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:226.14,228.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:229.8,231.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:232.29,235.3 2 0 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:57.60,62.2 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:68.99,75.2 5 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:83.120,89.12 5 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:92.2,95.84 4 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:89.12,91.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:104.82,113.25 7 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:117.2,117.44 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:113.25,116.3 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:121.57,126.2 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:175.183,182.30 5 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:186.2,187.30 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:193.2,204.35 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:210.2,214.12 4 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:227.2,227.11 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:182.30,185.3 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:187.30,191.3 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:204.35,209.3 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:214.12,215.7 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:215.7,216.11 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:217.37,220.21 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:221.27,223.11 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:232.55,234.2 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:238.65,243.2 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:247.60,249.16 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:252.2,254.48 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:258.2,258.26 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:262.2,263.44 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:267.2,269.12 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:272.2,277.32 5 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:289.2,289.29 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:293.2,293.52 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:302.2,302.12 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:249.16,251.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:254.48,257.3 2 0 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:258.26,261.3 2 0 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:263.44,266.3 2 0 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:269.12,271.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:277.32,278.29 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:281.3,281.29 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:286.3,287.8 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:278.29,279.17 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:281.29,282.17 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:282.17,283.18 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:289.29,292.3 2 0 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:293.52,295.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:295.8,296.53 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:300.3,300.115 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:296.53,299.4 2 0 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:306.36,316.16 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:320.2,321.16 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:325.2,325.64 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:316.16,319.3 2 0 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:321.16,324.3 2 0 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:325.64,327.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:332.32,338.35 6 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:341.2,343.18 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:338.35,340.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:347.65,351.25 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:355.2,363.11 8 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:351.25,354.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:367.49,371.39 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:371.39,374.3 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:379.64,384.2 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:388.70,389.36 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:392.2,394.16 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:397.2,399.48 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:403.2,403.27 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:407.2,408.44 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:412.2,414.55 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:423.2,423.11 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:389.36,391.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:394.16,396.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:399.48,402.3 2 0 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:403.27,406.3 2 0 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:408.44,411.3 2 0 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:414.55,416.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:416.8,417.56 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:421.3,421.141 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:417.56,420.4 2 0 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:427.69,439.16 7 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:443.2,444.16 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:448.2,448.86 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:439.16,442.3 2 0 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:444.16,447.3 2 0 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:448.86,450.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:454.53,460.2 4 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:465.42,471.34 5 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:476.2,478.34 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:481.2,481.15 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:471.34,475.3 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:478.34,480.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:491.59,500.49 8 0 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:505.2,505.12 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:500.49,504.3 3 0 +github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:42.139,43.36 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:52.2,58.108 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:67.2,67.107 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:83.2,83.10 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:43.36,45.15 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:48.3,49.12 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:45.15,47.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:58.108,59.64 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:59.64,64.4 4 1 +github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:67.107,70.27 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:74.3,75.15 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:80.3,81.18 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:70.27,72.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:75.15,77.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:77.9,79.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:87.35,90.2 2 1 +github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:92.48,96.6 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:96.6,97.36 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:100.3,100.15 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:106.3,106.36 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:97.36,99.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:100.15,102.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:106.36,110.4 3 1 +github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:116.31,121.2 4 1 +github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:124.42,128.2 3 1 +github.com/ethereum/go-ethereum/log/handler_glog.go:54.45,58.2 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:61.46,63.2 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:74.44,76.2 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:93.53,95.51 2 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:136.2,143.12 6 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:95.51,97.21 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:101.3,102.22 2 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:105.3,107.47 3 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:111.3,112.17 2 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:115.3,115.17 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:119.3,120.53 2 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:127.3,127.42 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:130.3,133.51 3 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:97.21,98.12 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:102.22,104.4 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:107.47,109.4 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:112.17,114.4 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:115.17,116.12 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:120.53,121.19 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:121.19,123.5 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:123.10,123.25 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:123.25,125.5 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:127.42,129.4 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:151.58,154.21 2 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:157.2,159.46 3 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:163.2,163.41 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:166.2,166.50 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:170.2,176.12 5 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:154.21,156.3 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:159.46,161.3 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:163.41,165.3 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:166.50,168.3 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:181.44,183.41 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:201.2,201.50 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:205.2,205.41 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:209.2,214.9 4 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:228.2,228.18 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:231.2,231.12 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:183.41,191.12 4 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:191.12,198.4 4 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:201.50,203.3 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:205.41,207.3 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:214.9,216.35 2 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:223.3,223.10 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:226.3,226.18 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:216.35,217.60 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:217.60,219.10 2 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:223.10,225.4 1 0 +github.com/ethereum/go-ethereum/log/handler_glog.go:228.18,230.3 1 0 +github.com/ethereum/go-ethereum/log/handler_go14.go:14.44,16.2 1 0 +github.com/ethereum/go-ethereum/log/handler_go14.go:18.48,20.2 1 1 +github.com/ethereum/go-ethereum/log/handler_go14.go:22.37,24.2 1 0 +github.com/ethereum/go-ethereum/log/logger.go:30.37,31.11 1 0 +github.com/ethereum/go-ethereum/log/logger.go:32.16,33.17 1 0 +github.com/ethereum/go-ethereum/log/logger.go:34.16,35.17 1 0 +github.com/ethereum/go-ethereum/log/logger.go:36.15,37.17 1 0 +github.com/ethereum/go-ethereum/log/logger.go:38.15,39.17 1 0 +github.com/ethereum/go-ethereum/log/logger.go:40.16,41.17 1 0 +github.com/ethereum/go-ethereum/log/logger.go:42.15,43.17 1 0 +github.com/ethereum/go-ethereum/log/logger.go:44.10,45.21 1 0 +github.com/ethereum/go-ethereum/log/logger.go:50.30,51.11 1 0 +github.com/ethereum/go-ethereum/log/logger.go:52.16,53.16 1 0 +github.com/ethereum/go-ethereum/log/logger.go:54.16,55.16 1 0 +github.com/ethereum/go-ethereum/log/logger.go:56.15,57.16 1 0 +github.com/ethereum/go-ethereum/log/logger.go:58.15,59.16 1 0 +github.com/ethereum/go-ethereum/log/logger.go:60.16,61.16 1 0 +github.com/ethereum/go-ethereum/log/logger.go:62.15,63.16 1 0 +github.com/ethereum/go-ethereum/log/logger.go:64.10,65.21 1 0 +github.com/ethereum/go-ethereum/log/logger.go:71.51,72.19 1 0 +github.com/ethereum/go-ethereum/log/logger.go:73.23,74.23 1 0 +github.com/ethereum/go-ethereum/log/logger.go:75.23,76.23 1 0 +github.com/ethereum/go-ethereum/log/logger.go:77.14,78.22 1 0 +github.com/ethereum/go-ethereum/log/logger.go:79.14,80.22 1 0 +github.com/ethereum/go-ethereum/log/logger.go:81.23,82.23 1 0 +github.com/ethereum/go-ethereum/log/logger.go:83.14,84.22 1 0 +github.com/ethereum/go-ethereum/log/logger.go:85.10,86.62 1 0 +github.com/ethereum/go-ethereum/log/logger.go:133.74,147.2 1 0 +github.com/ethereum/go-ethereum/log/logger.go:149.49,153.2 3 0 +github.com/ethereum/go-ethereum/log/logger.go:155.75,161.2 5 0 +github.com/ethereum/go-ethereum/log/logger.go:163.56,165.2 1 0 +github.com/ethereum/go-ethereum/log/logger.go:167.56,169.2 1 0 +github.com/ethereum/go-ethereum/log/logger.go:171.55,173.2 1 0 +github.com/ethereum/go-ethereum/log/logger.go:175.55,177.2 1 0 +github.com/ethereum/go-ethereum/log/logger.go:179.56,181.2 1 0 +github.com/ethereum/go-ethereum/log/logger.go:183.55,186.2 2 0 +github.com/ethereum/go-ethereum/log/logger.go:188.39,190.2 1 0 +github.com/ethereum/go-ethereum/log/logger.go:192.40,194.2 1 1 +github.com/ethereum/go-ethereum/log/logger.go:196.49,198.19 1 0 +github.com/ethereum/go-ethereum/log/logger.go:209.2,209.21 1 0 +github.com/ethereum/go-ethereum/log/logger.go:213.2,213.12 1 0 +github.com/ethereum/go-ethereum/log/logger.go:198.19,199.37 1 0 +github.com/ethereum/go-ethereum/log/logger.go:199.37,201.4 1 0 +github.com/ethereum/go-ethereum/log/logger.go:209.21,211.3 1 0 +github.com/ethereum/go-ethereum/log/logger.go:234.38,238.22 3 0 +github.com/ethereum/go-ethereum/log/logger.go:244.2,244.12 1 0 +github.com/ethereum/go-ethereum/log/logger.go:238.22,242.3 3 0 +github.com/ethereum/go-ethereum/log/root.go:13.13,15.2 1 1 +github.com/ethereum/go-ethereum/log/root.go:19.37,21.2 1 0 +github.com/ethereum/go-ethereum/log/root.go:24.20,26.2 1 0 +github.com/ethereum/go-ethereum/log/root.go:33.44,35.2 1 0 +github.com/ethereum/go-ethereum/log/root.go:38.44,40.2 1 0 +github.com/ethereum/go-ethereum/log/root.go:43.43,45.2 1 0 +github.com/ethereum/go-ethereum/log/root.go:48.43,50.2 1 0 +github.com/ethereum/go-ethereum/log/root.go:53.44,55.2 1 0 +github.com/ethereum/go-ethereum/log/root.go:58.43,61.2 2 0 +github.com/ethereum/go-ethereum/log/root.go:68.69,70.2 1 0 +github.com/ethereum/go-ethereum/log/syslog.go:13.88,16.2 2 0 +github.com/ethereum/go-ethereum/log/syslog.go:20.109,23.2 2 0 +github.com/ethereum/go-ethereum/log/syslog.go:25.82,26.16 1 0 +github.com/ethereum/go-ethereum/log/syslog.go:29.2,29.41 1 0 +github.com/ethereum/go-ethereum/log/syslog.go:49.2,49.52 1 0 +github.com/ethereum/go-ethereum/log/syslog.go:26.16,28.3 1 0 +github.com/ethereum/go-ethereum/log/syslog.go:29.41,31.16 2 0 +github.com/ethereum/go-ethereum/log/syslog.go:46.3,47.21 2 0 +github.com/ethereum/go-ethereum/log/syslog.go:32.16,33.25 1 0 +github.com/ethereum/go-ethereum/log/syslog.go:34.17,35.24 1 0 +github.com/ethereum/go-ethereum/log/syslog.go:36.16,37.28 1 0 +github.com/ethereum/go-ethereum/log/syslog.go:38.16,39.25 1 0 +github.com/ethereum/go-ethereum/log/syslog.go:40.17,41.26 1 0 +github.com/ethereum/go-ethereum/log/syslog.go:42.17,43.36 1 0 +github.com/ethereum/go-ethereum/log/syslog.go:43.36,43.50 1 0 +github.com/ethereum/go-ethereum/log/syslog.go:52.90,54.2 1 0 +github.com/ethereum/go-ethereum/log/syslog.go:56.111,58.2 1 0 +github.com/ethereum/go-ethereum/log/format.go:32.31,33.11 1 0 +github.com/ethereum/go-ethereum/log/format.go:33.11,35.3 1 0 +github.com/ethereum/go-ethereum/log/format.go:35.8,37.3 1 0 +github.com/ethereum/go-ethereum/log/format.go:61.48,63.2 1 1 +github.com/ethereum/go-ethereum/log/format.go:67.46,69.2 1 0 +github.com/ethereum/go-ethereum/log/format.go:88.43,89.43 1 0 +github.com/ethereum/go-ethereum/log/format.go:89.43,91.15 2 0 +github.com/ethereum/go-ethereum/log/format.go:108.3,110.47 3 0 +github.com/ethereum/go-ethereum/log/format.go:138.3,139.45 2 0 +github.com/ethereum/go-ethereum/log/format.go:143.3,144.19 2 0 +github.com/ethereum/go-ethereum/log/format.go:91.15,92.17 1 0 +github.com/ethereum/go-ethereum/log/format.go:93.17,94.15 1 0 +github.com/ethereum/go-ethereum/log/format.go:95.18,96.15 1 0 +github.com/ethereum/go-ethereum/log/format.go:97.17,98.15 1 0 +github.com/ethereum/go-ethereum/log/format.go:99.17,100.15 1 0 +github.com/ethereum/go-ethereum/log/format.go:101.18,102.15 1 0 +github.com/ethereum/go-ethereum/log/format.go:103.18,104.15 1 0 +github.com/ethereum/go-ethereum/log/format.go:110.47,113.41 2 0 +github.com/ethereum/go-ethereum/log/format.go:117.4,118.29 2 0 +github.com/ethereum/go-ethereum/log/format.go:122.4,125.17 2 0 +github.com/ethereum/go-ethereum/log/format.go:113.41,115.5 1 0 +github.com/ethereum/go-ethereum/log/format.go:118.29,121.5 2 0 +github.com/ethereum/go-ethereum/log/format.go:125.17,127.5 1 0 +github.com/ethereum/go-ethereum/log/format.go:127.10,129.5 1 0 +github.com/ethereum/go-ethereum/log/format.go:130.9,131.17 1 0 +github.com/ethereum/go-ethereum/log/format.go:131.17,133.5 1 0 +github.com/ethereum/go-ethereum/log/format.go:133.10,135.5 1 0 +github.com/ethereum/go-ethereum/log/format.go:139.45,141.4 1 0 +github.com/ethereum/go-ethereum/log/format.go:153.28,154.43 1 1 +github.com/ethereum/go-ethereum/log/format.go:154.43,159.3 4 0 +github.com/ethereum/go-ethereum/log/format.go:162.73,163.35 1 0 +github.com/ethereum/go-ethereum/log/format.go:198.2,198.21 1 0 +github.com/ethereum/go-ethereum/log/format.go:163.35,164.13 1 0 +github.com/ethereum/go-ethereum/log/format.go:168.3,170.10 3 0 +github.com/ethereum/go-ethereum/log/format.go:175.3,180.54 5 0 +github.com/ethereum/go-ethereum/log/format.go:187.3,187.16 1 0 +github.com/ethereum/go-ethereum/log/format.go:193.3,194.41 2 0 +github.com/ethereum/go-ethereum/log/format.go:164.13,166.4 1 0 +github.com/ethereum/go-ethereum/log/format.go:170.10,172.4 1 0 +github.com/ethereum/go-ethereum/log/format.go:180.54,186.4 4 0 +github.com/ethereum/go-ethereum/log/format.go:187.16,189.4 1 0 +github.com/ethereum/go-ethereum/log/format.go:189.9,192.4 2 0 +github.com/ethereum/go-ethereum/log/format.go:194.41,196.4 1 0 +github.com/ethereum/go-ethereum/log/format.go:203.26,205.2 1 0 +github.com/ethereum/go-ethereum/log/format.go:210.61,212.12 2 0 +github.com/ethereum/go-ethereum/log/format.go:217.2,217.43 1 0 +github.com/ethereum/go-ethereum/log/format.go:212.12,213.53 1 0 +github.com/ethereum/go-ethereum/log/format.go:213.53,215.4 1 0 +github.com/ethereum/go-ethereum/log/format.go:217.43,225.38 6 0 +github.com/ethereum/go-ethereum/log/format.go:233.3,236.17 3 0 +github.com/ethereum/go-ethereum/log/format.go:242.3,242.20 1 0 +github.com/ethereum/go-ethereum/log/format.go:245.3,245.11 1 0 +github.com/ethereum/go-ethereum/log/format.go:225.38,227.11 2 0 +github.com/ethereum/go-ethereum/log/format.go:230.4,231.50 2 0 +github.com/ethereum/go-ethereum/log/format.go:227.11,229.5 1 0 +github.com/ethereum/go-ethereum/log/format.go:236.17,241.4 2 0 +github.com/ethereum/go-ethereum/log/format.go:242.20,244.4 1 0 +github.com/ethereum/go-ethereum/log/format.go:252.54,254.12 2 0 +github.com/ethereum/go-ethereum/log/format.go:260.2,260.43 1 0 +github.com/ethereum/go-ethereum/log/format.go:254.12,255.53 1 0 +github.com/ethereum/go-ethereum/log/format.go:255.53,257.4 1 0 +github.com/ethereum/go-ethereum/log/format.go:260.43,267.38 5 0 +github.com/ethereum/go-ethereum/log/format.go:275.3,276.17 2 0 +github.com/ethereum/go-ethereum/log/format.go:283.3,283.20 1 0 +github.com/ethereum/go-ethereum/log/format.go:287.3,287.11 1 0 +github.com/ethereum/go-ethereum/log/format.go:267.38,269.11 2 0 +github.com/ethereum/go-ethereum/log/format.go:272.4,272.42 1 0 +github.com/ethereum/go-ethereum/log/format.go:269.11,271.5 1 0 +github.com/ethereum/go-ethereum/log/format.go:276.17,281.4 2 0 +github.com/ethereum/go-ethereum/log/format.go:283.20,285.4 1 0 +github.com/ethereum/go-ethereum/log/format.go:291.59,292.15 1 0 +github.com/ethereum/go-ethereum/log/format.go:302.2,302.27 1 0 +github.com/ethereum/go-ethereum/log/format.go:292.15,293.35 1 0 +github.com/ethereum/go-ethereum/log/format.go:293.35,294.73 1 0 +github.com/ethereum/go-ethereum/log/format.go:294.73,296.5 1 0 +github.com/ethereum/go-ethereum/log/format.go:296.10,297.15 1 0 +github.com/ethereum/go-ethereum/log/format.go:303.17,304.30 1 0 +github.com/ethereum/go-ethereum/log/format.go:306.13,307.19 1 0 +github.com/ethereum/go-ethereum/log/format.go:309.20,310.20 1 0 +github.com/ethereum/go-ethereum/log/format.go:312.10,313.11 1 0 +github.com/ethereum/go-ethereum/log/format.go:317.53,319.22 2 0 +github.com/ethereum/go-ethereum/log/format.go:320.101,321.15 1 0 +github.com/ethereum/go-ethereum/log/format.go:322.10,323.35 1 0 +github.com/ethereum/go-ethereum/log/format.go:328.61,329.18 1 0 +github.com/ethereum/go-ethereum/log/format.go:333.2,333.27 1 0 +github.com/ethereum/go-ethereum/log/format.go:348.2,348.10 1 0 +github.com/ethereum/go-ethereum/log/format.go:354.2,355.27 2 0 +github.com/ethereum/go-ethereum/log/format.go:329.18,331.3 1 0 +github.com/ethereum/go-ethereum/log/format.go:334.17,338.30 1 0 +github.com/ethereum/go-ethereum/log/format.go:340.16,343.15 1 0 +github.com/ethereum/go-ethereum/log/format.go:346.3,346.31 1 0 +github.com/ethereum/go-ethereum/log/format.go:343.15,345.4 1 0 +github.com/ethereum/go-ethereum/log/format.go:348.10,349.44 1 0 +github.com/ethereum/go-ethereum/log/format.go:349.44,352.4 1 0 +github.com/ethereum/go-ethereum/log/format.go:356.12,357.31 1 0 +github.com/ethereum/go-ethereum/log/format.go:358.15,359.61 1 0 +github.com/ethereum/go-ethereum/log/format.go:360.15,361.52 1 0 +github.com/ethereum/go-ethereum/log/format.go:362.12,363.41 1 0 +github.com/ethereum/go-ethereum/log/format.go:364.13,365.41 1 0 +github.com/ethereum/go-ethereum/log/format.go:366.13,367.41 1 0 +github.com/ethereum/go-ethereum/log/format.go:368.14,369.41 1 0 +github.com/ethereum/go-ethereum/log/format.go:371.11,372.37 1 0 +github.com/ethereum/go-ethereum/log/format.go:373.13,374.37 1 0 +github.com/ethereum/go-ethereum/log/format.go:375.13,376.30 1 0 +github.com/ethereum/go-ethereum/log/format.go:377.12,378.39 1 0 +github.com/ethereum/go-ethereum/log/format.go:379.14,380.39 1 0 +github.com/ethereum/go-ethereum/log/format.go:381.14,382.31 1 0 +github.com/ethereum/go-ethereum/log/format.go:383.14,384.25 1 0 +github.com/ethereum/go-ethereum/log/format.go:385.10,386.49 1 0 +github.com/ethereum/go-ethereum/log/format.go:391.40,392.11 1 1 +github.com/ethereum/go-ethereum/log/format.go:395.2,395.45 1 1 +github.com/ethereum/go-ethereum/log/format.go:392.11,394.3 1 1 +github.com/ethereum/go-ethereum/log/format.go:399.42,401.2 1 1 +github.com/ethereum/go-ethereum/log/format.go:403.52,405.16 1 1 +github.com/ethereum/go-ethereum/log/format.go:413.2,420.19 3 1 +github.com/ethereum/go-ethereum/log/format.go:430.2,430.9 1 1 +github.com/ethereum/go-ethereum/log/format.go:434.2,434.26 1 1 +github.com/ethereum/go-ethereum/log/format.go:405.16,406.10 1 1 +github.com/ethereum/go-ethereum/log/format.go:406.10,408.4 1 1 +github.com/ethereum/go-ethereum/log/format.go:408.9,410.4 1 1 +github.com/ethereum/go-ethereum/log/format.go:420.19,421.17 1 1 +github.com/ethereum/go-ethereum/log/format.go:421.17,424.4 2 1 +github.com/ethereum/go-ethereum/log/format.go:424.9,428.4 3 1 +github.com/ethereum/go-ethereum/log/format.go:430.9,433.3 2 1 +github.com/ethereum/go-ethereum/log/format.go:438.44,439.18 1 1 +github.com/ethereum/go-ethereum/log/format.go:442.2,442.17 1 1 +github.com/ethereum/go-ethereum/log/format.go:446.2,452.50 2 1 +github.com/ethereum/go-ethereum/log/format.go:468.2,468.26 1 1 +github.com/ethereum/go-ethereum/log/format.go:439.18,441.3 1 0 +github.com/ethereum/go-ethereum/log/format.go:442.17,444.3 1 0 +github.com/ethereum/go-ethereum/log/format.go:452.50,455.10 2 1 +github.com/ethereum/go-ethereum/log/format.go:456.17,457.14 1 1 +github.com/ethereum/go-ethereum/log/format.go:458.19,462.15 4 1 +github.com/ethereum/go-ethereum/log/format.go:463.11,465.11 2 1 +github.com/ethereum/go-ethereum/log/format.go:473.36,475.22 2 0 +github.com/ethereum/go-ethereum/log/format.go:482.2,482.19 1 0 +github.com/ethereum/go-ethereum/log/format.go:485.2,485.25 1 0 +github.com/ethereum/go-ethereum/log/format.go:475.22,477.38 1 0 +github.com/ethereum/go-ethereum/log/format.go:477.38,479.9 2 0 +github.com/ethereum/go-ethereum/log/format.go:482.19,484.3 1 0 +github.com/ethereum/go-ethereum/log/handler.go:24.52,26.2 1 1 +github.com/ethereum/go-ethereum/log/handler.go:30.43,32.2 1 0 +github.com/ethereum/go-ethereum/log/handler.go:41.55,42.41 1 1 +github.com/ethereum/go-ethereum/log/handler.go:46.2,46.36 1 1 +github.com/ethereum/go-ethereum/log/handler.go:42.41,45.3 2 0 +github.com/ethereum/go-ethereum/log/handler.go:52.37,54.43 2 1 +github.com/ethereum/go-ethereum/log/handler.go:54.43,58.3 3 0 +github.com/ethereum/go-ethereum/log/handler.go:65.61,67.16 2 0 +github.com/ethereum/go-ethereum/log/handler.go:70.2,70.55 1 0 +github.com/ethereum/go-ethereum/log/handler.go:67.16,69.3 1 0 +github.com/ethereum/go-ethereum/log/handler.go:75.69,77.16 2 0 +github.com/ethereum/go-ethereum/log/handler.go:81.2,81.61 1 0 +github.com/ethereum/go-ethereum/log/handler.go:77.16,79.3 1 0 +github.com/ethereum/go-ethereum/log/handler.go:92.40,94.2 1 0 +github.com/ethereum/go-ethereum/log/handler.go:98.43,99.43 1 0 +github.com/ethereum/go-ethereum/log/handler.go:99.43,102.3 2 0 +github.com/ethereum/go-ethereum/log/handler.go:107.43,108.43 1 0 +github.com/ethereum/go-ethereum/log/handler.go:108.43,111.3 2 0 +github.com/ethereum/go-ethereum/log/handler.go:115.53,117.2 1 0 +github.com/ethereum/go-ethereum/log/handler.go:124.59,125.43 1 0 +github.com/ethereum/go-ethereum/log/handler.go:125.43,127.17 2 0 +github.com/ethereum/go-ethereum/log/handler.go:130.3,130.18 1 0 +github.com/ethereum/go-ethereum/log/handler.go:127.17,129.4 1 0 +github.com/ethereum/go-ethereum/log/handler.go:147.64,148.43 1 0 +github.com/ethereum/go-ethereum/log/handler.go:148.43,149.12 1 0 +github.com/ethereum/go-ethereum/log/handler.go:152.3,152.13 1 0 +github.com/ethereum/go-ethereum/log/handler.go:149.12,151.4 1 0 +github.com/ethereum/go-ethereum/log/handler.go:163.75,164.51 1 0 +github.com/ethereum/go-ethereum/log/handler.go:164.51,165.14 1 0 +github.com/ethereum/go-ethereum/log/handler.go:174.3,174.38 1 0 +github.com/ethereum/go-ethereum/log/handler.go:179.3,179.15 1 0 +github.com/ethereum/go-ethereum/log/handler.go:166.23,167.25 1 0 +github.com/ethereum/go-ethereum/log/handler.go:168.24,169.26 1 0 +github.com/ethereum/go-ethereum/log/handler.go:170.23,171.25 1 0 +github.com/ethereum/go-ethereum/log/handler.go:174.38,175.23 1 0 +github.com/ethereum/go-ethereum/log/handler.go:175.23,177.5 1 0 +github.com/ethereum/go-ethereum/log/handler.go:190.54,191.51 1 0 +github.com/ethereum/go-ethereum/log/handler.go:191.51,193.3 1 0 +github.com/ethereum/go-ethereum/log/handler.go:205.42,206.43 1 0 +github.com/ethereum/go-ethereum/log/handler.go:206.43,207.24 1 0 +github.com/ethereum/go-ethereum/log/handler.go:211.3,211.13 1 0 +github.com/ethereum/go-ethereum/log/handler.go:207.24,210.4 1 0 +github.com/ethereum/go-ethereum/log/handler.go:230.45,231.43 1 0 +github.com/ethereum/go-ethereum/log/handler.go:231.43,233.24 2 0 +github.com/ethereum/go-ethereum/log/handler.go:241.3,241.13 1 0 +github.com/ethereum/go-ethereum/log/handler.go:233.24,235.18 2 0 +github.com/ethereum/go-ethereum/log/handler.go:238.4,238.65 1 0 +github.com/ethereum/go-ethereum/log/handler.go:235.18,237.5 1 0 +github.com/ethereum/go-ethereum/log/handler.go:248.50,249.43 1 0 +github.com/ethereum/go-ethereum/log/handler.go:249.43,252.3 2 0 +github.com/ethereum/go-ethereum/log/handler.go:260.54,262.12 2 0 +github.com/ethereum/go-ethereum/log/handler.go:267.2,267.29 1 0 +github.com/ethereum/go-ethereum/log/handler.go:262.12,263.23 1 0 +github.com/ethereum/go-ethereum/log/handler.go:263.23,265.4 1 0 +github.com/ethereum/go-ethereum/log/handler.go:274.37,275.43 1 1 +github.com/ethereum/go-ethereum/log/handler.go:275.43,279.38 2 0 +github.com/ethereum/go-ethereum/log/handler.go:295.3,295.13 1 0 +github.com/ethereum/go-ethereum/log/handler.go:299.3,299.18 1 0 +github.com/ethereum/go-ethereum/log/handler.go:279.38,281.10 2 0 +github.com/ethereum/go-ethereum/log/handler.go:281.10,283.19 2 0 +github.com/ethereum/go-ethereum/log/handler.go:283.19,286.6 2 0 +github.com/ethereum/go-ethereum/log/handler.go:286.11,287.43 1 0 +github.com/ethereum/go-ethereum/log/handler.go:290.6,290.18 1 0 +github.com/ethereum/go-ethereum/log/handler.go:287.43,289.7 1 0 +github.com/ethereum/go-ethereum/log/handler.go:295.13,297.4 1 0 +github.com/ethereum/go-ethereum/log/handler.go:303.49,306.30 2 0 +github.com/ethereum/go-ethereum/log/handler.go:310.2,310.19 1 0 +github.com/ethereum/go-ethereum/log/handler.go:314.2,314.21 1 0 +github.com/ethereum/go-ethereum/log/handler.go:318.2,320.23 3 0 +github.com/ethereum/go-ethereum/log/handler.go:323.2,324.28 2 0 +github.com/ethereum/go-ethereum/log/handler.go:327.2,327.20 1 0 +github.com/ethereum/go-ethereum/log/handler.go:306.30,308.3 1 0 +github.com/ethereum/go-ethereum/log/handler.go:310.19,312.3 1 0 +github.com/ethereum/go-ethereum/log/handler.go:314.21,316.3 1 0 +github.com/ethereum/go-ethereum/log/handler.go:320.23,322.3 1 0 +github.com/ethereum/go-ethereum/log/handler.go:324.28,326.3 1 0 +github.com/ethereum/go-ethereum/log/handler.go:333.31,334.43 1 1 +github.com/ethereum/go-ethereum/log/handler.go:334.43,336.3 1 0 +github.com/ethereum/go-ethereum/log/handler.go:344.41,345.16 1 0 +github.com/ethereum/go-ethereum/log/handler.go:348.2,348.10 1 0 +github.com/ethereum/go-ethereum/log/handler.go:345.16,346.13 1 0 +github.com/ethereum/go-ethereum/log/handler.go:353.63,355.2 1 0 +github.com/ethereum/go-ethereum/log/handler.go:357.71,359.2 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:117.92,122.2 4 0 +github.com/ethereum/go-ethereum/light/postprocess.go:125.88,129.2 3 0 +github.com/ethereum/go-ethereum/light/postprocess.go:144.118,156.2 3 0 +github.com/ethereum/go-ethereum/light/postprocess.go:160.108,163.6 3 0 +github.com/ethereum/go-ethereum/light/postprocess.go:163.6,165.14 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:166.12,168.24 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:169.19,171.11 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:177.11,178.14 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:172.22,173.21 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:174.40,174.40 0 0 +github.com/ethereum/go-ethereum/light/postprocess.go:184.107,186.17 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:189.2,192.32 3 0 +github.com/ethereum/go-ethereum/light/postprocess.go:198.2,199.12 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:186.17,188.3 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:192.32,194.17 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:194.17,196.4 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:203.86,208.15 4 0 +github.com/ethereum/go-ethereum/light/postprocess.go:211.2,215.12 5 0 +github.com/ethereum/go-ethereum/light/postprocess.go:208.15,209.13 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:219.44,221.16 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:225.2,225.23 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:251.2,253.12 3 0 +github.com/ethereum/go-ethereum/light/postprocess.go:221.16,223.3 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:225.23,228.55 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:230.3,238.17 4 0 +github.com/ethereum/go-ethereum/light/postprocess.go:247.3,247.140 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:228.55,228.78 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:238.17,240.56 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:240.56,243.5 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:243.10,245.5 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:248.8,250.3 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:259.59,261.22 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:264.2,269.6 4 0 +github.com/ethereum/go-ethereum/light/postprocess.go:294.2,294.38 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:297.2,298.12 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:261.22,263.3 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:269.6,271.24 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:274.3,274.37 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:286.3,286.47 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:292.3,292.38 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:271.24,272.9 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:274.37,285.4 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:286.47,287.40 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:290.4,290.17 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:287.40,289.5 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:294.38,296.3 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:307.98,312.2 4 0 +github.com/ethereum/go-ethereum/light/postprocess.go:315.94,319.2 3 0 +github.com/ethereum/go-ethereum/light/postprocess.go:337.126,352.2 5 0 +github.com/ethereum/go-ethereum/light/postprocess.go:356.114,363.26 4 0 +github.com/ethereum/go-ethereum/light/postprocess.go:385.2,385.50 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:388.2,390.50 3 0 +github.com/ethereum/go-ethereum/light/postprocess.go:397.2,397.22 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:363.26,364.13 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:364.13,365.34 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:365.34,367.9 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:367.9,368.58 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:368.58,370.14 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:371.25,373.14 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:374.43,374.43 0 0 +github.com/ethereum/go-ethereum/light/postprocess.go:377.12,379.12 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:385.50,387.3 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:390.50,392.21 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:395.3,395.25 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:392.21,394.4 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:401.113,403.17 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:406.2,408.32 3 0 +github.com/ethereum/go-ethereum/light/postprocess.go:414.2,415.12 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:403.17,405.3 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:408.32,410.17 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:410.17,412.4 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:419.92,421.31 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:424.2,424.12 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:421.31,423.3 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:428.50,431.50 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:457.2,458.16 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:462.2,462.23 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:488.2,492.12 4 0 +github.com/ethereum/go-ethereum/light/postprocess.go:431.50,436.49 5 0 +github.com/ethereum/go-ethereum/light/postprocess.go:447.3,451.20 4 0 +github.com/ethereum/go-ethereum/light/postprocess.go:436.49,438.18 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:441.4,442.19 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:445.4,445.42 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:438.18,440.5 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:442.19,444.5 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:451.20,453.4 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:453.9,455.4 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:458.16,460.3 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:462.23,465.55 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:467.3,475.17 4 0 +github.com/ethereum/go-ethereum/light/postprocess.go:484.3,484.142 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:465.55,465.78 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:475.17,477.56 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:477.56,480.5 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:480.10,482.5 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:485.8,487.3 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:497.65,499.22 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:502.2,503.50 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:506.2,507.12 2 0 +github.com/ethereum/go-ethereum/light/postprocess.go:499.22,501.3 1 0 +github.com/ethereum/go-ethereum/light/postprocess.go:503.50,505.3 1 0 +github.com/ethereum/go-ethereum/light/trie.go:38.87,41.2 2 1 +github.com/ethereum/go-ethereum/light/trie.go:43.95,45.2 1 1 +github.com/ethereum/go-ethereum/light/trie.go:53.71,55.2 1 1 +github.com/ethereum/go-ethereum/light/trie.go:57.88,59.2 1 1 +github.com/ethereum/go-ethereum/light/trie.go:61.58,62.23 1 0 +github.com/ethereum/go-ethereum/light/trie.go:63.16,65.20 2 0 +github.com/ethereum/go-ethereum/light/trie.go:69.3,69.13 1 0 +github.com/ethereum/go-ethereum/light/trie.go:70.10,71.47 1 0 +github.com/ethereum/go-ethereum/light/trie.go:65.20,68.4 2 0 +github.com/ethereum/go-ethereum/light/trie.go:75.85,76.25 1 1 +github.com/ethereum/go-ethereum/light/trie.go:79.2,80.20 2 1 +github.com/ethereum/go-ethereum/light/trie.go:83.2,87.22 5 1 +github.com/ethereum/go-ethereum/light/trie.go:76.25,78.3 1 0 +github.com/ethereum/go-ethereum/light/trie.go:80.20,82.3 1 1 +github.com/ethereum/go-ethereum/light/trie.go:90.86,93.2 2 0 +github.com/ethereum/go-ethereum/light/trie.go:95.48,97.2 1 0 +github.com/ethereum/go-ethereum/light/trie.go:105.54,108.38 3 1 +github.com/ethereum/go-ethereum/light/trie.go:112.2,112.17 1 1 +github.com/ethereum/go-ethereum/light/trie.go:108.38,111.3 2 1 +github.com/ethereum/go-ethereum/light/trie.go:115.79,118.16 3 0 +github.com/ethereum/go-ethereum/light/trie.go:121.2,121.32 1 0 +github.com/ethereum/go-ethereum/light/trie.go:118.16,120.3 1 0 +github.com/ethereum/go-ethereum/light/trie.go:121.32,123.3 1 0 +github.com/ethereum/go-ethereum/light/trie.go:126.54,128.32 2 0 +github.com/ethereum/go-ethereum/light/trie.go:128.32,130.3 1 0 +github.com/ethereum/go-ethereum/light/trie.go:133.47,135.32 2 0 +github.com/ethereum/go-ethereum/light/trie.go:135.32,137.3 1 0 +github.com/ethereum/go-ethereum/light/trie.go:140.78,141.19 1 0 +github.com/ethereum/go-ethereum/light/trie.go:144.2,144.30 1 0 +github.com/ethereum/go-ethereum/light/trie.go:141.19,143.3 1 0 +github.com/ethereum/go-ethereum/light/trie.go:147.38,148.19 1 0 +github.com/ethereum/go-ethereum/light/trie.go:151.2,151.22 1 0 +github.com/ethereum/go-ethereum/light/trie.go:148.19,150.3 1 0 +github.com/ethereum/go-ethereum/light/trie.go:154.67,156.2 1 1 +github.com/ethereum/go-ethereum/light/trie.go:158.45,160.2 1 0 +github.com/ethereum/go-ethereum/light/trie.go:162.89,164.2 1 0 +github.com/ethereum/go-ethereum/light/trie.go:168.57,169.6 1 1 +github.com/ethereum/go-ethereum/light/trie.go:169.6,171.20 2 1 +github.com/ethereum/go-ethereum/light/trie.go:174.3,174.17 1 1 +github.com/ethereum/go-ethereum/light/trie.go:177.3,177.49 1 1 +github.com/ethereum/go-ethereum/light/trie.go:180.3,181.60 2 1 +github.com/ethereum/go-ethereum/light/trie.go:171.20,173.4 1 1 +github.com/ethereum/go-ethereum/light/trie.go:174.17,176.4 1 1 +github.com/ethereum/go-ethereum/light/trie.go:177.49,179.4 1 1 +github.com/ethereum/go-ethereum/light/trie.go:181.60,183.4 1 1 +github.com/ethereum/go-ethereum/light/trie.go:193.69,196.19 2 1 +github.com/ethereum/go-ethereum/light/trie.go:205.2,205.21 1 1 +github.com/ethereum/go-ethereum/light/trie.go:209.2,209.11 1 1 +github.com/ethereum/go-ethereum/light/trie.go:196.19,197.22 1 1 +github.com/ethereum/go-ethereum/light/trie.go:197.22,199.18 2 1 +github.com/ethereum/go-ethereum/light/trie.go:202.4,202.14 1 1 +github.com/ethereum/go-ethereum/light/trie.go:199.18,201.5 1 1 +github.com/ethereum/go-ethereum/light/trie.go:205.21,208.3 2 1 +github.com/ethereum/go-ethereum/light/trie.go:212.49,214.21 2 1 +github.com/ethereum/go-ethereum/light/trie.go:218.2,218.11 1 1 +github.com/ethereum/go-ethereum/light/trie.go:214.21,217.3 2 1 +github.com/ethereum/go-ethereum/light/trie.go:222.45,224.6 2 1 +github.com/ethereum/go-ethereum/light/trie.go:224.6,227.10 3 1 +github.com/ethereum/go-ethereum/light/trie.go:230.3,230.35 1 1 +github.com/ethereum/go-ethereum/light/trie.go:234.3,236.71 3 1 +github.com/ethereum/go-ethereum/light/trie.go:227.10,229.4 1 1 +github.com/ethereum/go-ethereum/light/trie.go:230.35,233.4 2 0 +github.com/ethereum/go-ethereum/light/trie.go:236.71,238.4 1 0 +github.com/ethereum/go-ethereum/light/trie.go:242.39,243.19 1 1 +github.com/ethereum/go-ethereum/light/trie.go:246.2,246.32 1 1 +github.com/ethereum/go-ethereum/light/trie.go:243.19,245.3 1 0 +github.com/ethereum/go-ethereum/light/trie.go:249.38,250.45 1 1 +github.com/ethereum/go-ethereum/light/trie.go:253.2,253.21 1 1 +github.com/ethereum/go-ethereum/light/trie.go:256.2,257.57 2 1 +github.com/ethereum/go-ethereum/light/trie.go:260.2,260.12 1 1 +github.com/ethereum/go-ethereum/light/trie.go:250.45,252.3 1 0 +github.com/ethereum/go-ethereum/light/trie.go:253.21,255.3 1 1 +github.com/ethereum/go-ethereum/light/trie.go:257.57,259.3 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:90.93,111.2 4 1 +github.com/ethereum/go-ethereum/light/txpool.go:114.70,116.2 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:121.88,124.26 3 0 +github.com/ethereum/go-ethereum/light/txpool.go:127.2,128.22 2 0 +github.com/ethereum/go-ethereum/light/txpool.go:131.2,131.23 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:134.2,134.19 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:124.26,126.3 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:128.22,130.3 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:131.23,133.3 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:142.68,144.27 2 1 +github.com/ethereum/go-ethereum/light/txpool.go:144.27,146.3 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:146.8,148.3 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:152.84,153.29 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:160.2,160.8 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:153.29,154.10 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:154.10,156.4 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:156.9,158.4 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:166.115,168.28 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:171.2,172.16 2 1 +github.com/ethereum/go-ethereum/light/txpool.go:176.2,177.42 2 1 +github.com/ethereum/go-ethereum/light/txpool.go:183.2,183.17 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:197.2,197.12 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:168.28,170.3 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:172.16,174.3 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:177.42,178.43 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:178.43,180.4 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:183.17,185.74 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:188.3,191.27 2 1 +github.com/ethereum/go-ethereum/light/txpool.go:195.3,195.26 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:185.74,187.4 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:191.27,194.4 2 1 +github.com/ethereum/go-ethereum/light/txpool.go:202.71,204.38 2 0 +github.com/ethereum/go-ethereum/light/txpool.go:213.2,213.15 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:204.38,205.27 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:211.3,211.27 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:205.27,210.4 4 0 +github.com/ethereum/go-ethereum/light/txpool.go:222.106,228.33 5 1 +github.com/ethereum/go-ethereum/light/txpool.go:242.2,242.42 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:246.2,246.33 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:249.2,251.43 2 1 +github.com/ethereum/go-ethereum/light/txpool.go:260.2,260.71 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:278.2,278.17 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:228.33,229.51 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:233.3,233.50 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:229.51,232.4 2 0 +github.com/ethereum/go-ethereum/light/txpool.go:233.50,236.19 3 1 +github.com/ethereum/go-ethereum/light/txpool.go:236.19,239.5 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:242.42,244.3 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:246.33,248.3 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:251.43,253.97 2 1 +github.com/ethereum/go-ethereum/light/txpool.go:256.3,256.19 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:253.97,255.4 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:260.71,262.26 2 1 +github.com/ethereum/go-ethereum/light/txpool.go:275.3,275.23 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:262.26,263.42 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:263.42,265.41 2 1 +github.com/ethereum/go-ethereum/light/txpool.go:265.41,267.30 2 1 +github.com/ethereum/go-ethereum/light/txpool.go:270.6,271.30 2 1 +github.com/ethereum/go-ethereum/light/txpool.go:267.30,269.7 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:287.33,288.6 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:288.6,289.10 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:290.33,294.32 2 1 +github.com/ethereum/go-ethereum/light/txpool.go:297.34,298.10 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:303.52,318.2 10 1 +github.com/ethereum/go-ethereum/light/txpool.go:321.28,328.2 4 0 +github.com/ethereum/go-ethereum/light/txpool.go:332.89,334.2 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:337.43,343.2 4 0 +github.com/ethereum/go-ethereum/light/txpool.go:346.82,355.59 2 1 +github.com/ethereum/go-ethereum/light/txpool.go:359.2,360.54 2 1 +github.com/ethereum/go-ethereum/light/txpool.go:366.2,367.32 2 1 +github.com/ethereum/go-ethereum/light/txpool.go:374.2,374.27 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:380.2,380.62 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:385.2,386.16 2 1 +github.com/ethereum/go-ethereum/light/txpool.go:389.2,389.20 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:392.2,392.29 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:355.59,357.3 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:360.54,362.3 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:367.32,369.3 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:374.27,376.3 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:380.62,382.3 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:386.16,388.3 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:389.20,391.3 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:397.75,400.31 2 1 +github.com/ethereum/go-ethereum/light/txpool.go:403.2,404.16 2 1 +github.com/ethereum/go-ethereum/light/txpool.go:408.2,408.38 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:425.2,425.95 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:426.2,426.12 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:400.31,402.3 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:404.16,406.3 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:408.38,414.31 4 1 +github.com/ethereum/go-ethereum/light/txpool.go:421.3,421.69 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:414.31,416.4 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:425.95,425.152 2 0 +github.com/ethereum/go-ethereum/light/txpool.go:431.75,435.16 4 1 +github.com/ethereum/go-ethereum/light/txpool.go:439.2,439.42 1 1 +github.com/ethereum/go-ethereum/light/txpool.go:443.2,446.12 3 1 +github.com/ethereum/go-ethereum/light/txpool.go:435.16,437.3 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:439.42,441.3 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:451.77,456.25 4 0 +github.com/ethereum/go-ethereum/light/txpool.go:461.2,461.21 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:456.25,457.43 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:457.43,459.4 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:461.21,463.3 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:468.73,470.38 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:473.2,473.12 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:470.38,472.3 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:478.75,484.34 5 0 +github.com/ethereum/go-ethereum/light/txpool.go:488.2,488.17 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:484.34,487.3 2 0 +github.com/ethereum/go-ethereum/light/txpool.go:493.110,499.34 4 0 +github.com/ethereum/go-ethereum/light/txpool.go:504.2,505.24 2 0 +github.com/ethereum/go-ethereum/light/txpool.go:499.34,502.3 2 0 +github.com/ethereum/go-ethereum/light/txpool.go:510.95,516.34 4 0 +github.com/ethereum/go-ethereum/light/txpool.go:524.2,524.38 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:516.34,518.22 2 0 +github.com/ethereum/go-ethereum/light/txpool.go:521.3,521.32 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:518.22,519.12 1 0 +github.com/ethereum/go-ethereum/light/txpool.go:528.64,534.25 5 0 +github.com/ethereum/go-ethereum/light/txpool.go:540.2,541.28 2 0 +github.com/ethereum/go-ethereum/light/txpool.go:534.25,539.3 4 0 +github.com/ethereum/go-ethereum/light/txpool.go:545.48,552.2 5 0 +github.com/ethereum/go-ethereum/light/lightchain.go:84.148,102.16 8 1 +github.com/ethereum/go-ethereum/light/lightchain.go:105.2,106.28 2 1 +github.com/ethereum/go-ethereum/light/lightchain.go:109.2,109.23 1 1 +github.com/ethereum/go-ethereum/light/lightchain.go:112.2,112.43 1 1 +github.com/ethereum/go-ethereum/light/lightchain.go:116.2,116.35 1 1 +github.com/ethereum/go-ethereum/light/lightchain.go:123.2,123.16 1 1 +github.com/ethereum/go-ethereum/light/lightchain.go:102.16,104.3 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:106.28,108.3 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:109.23,111.3 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:112.43,114.3 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:116.35,117.56 1 1 +github.com/ethereum/go-ethereum/light/lightchain.go:117.56,121.4 3 1 +github.com/ethereum/go-ethereum/light/lightchain.go:127.74,128.32 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:132.2,132.38 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:136.2,136.34 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:139.2,139.119 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:128.32,131.3 2 0 +github.com/ethereum/go-ethereum/light/lightchain.go:132.38,135.3 2 0 +github.com/ethereum/go-ethereum/light/lightchain.go:136.34,138.3 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:142.47,144.2 1 1 +github.com/ethereum/go-ethereum/light/lightchain.go:147.40,149.2 1 1 +github.com/ethereum/go-ethereum/light/lightchain.go:152.55,154.2 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:158.45,159.75 1 1 +github.com/ethereum/go-ethereum/light/lightchain.go:172.2,175.12 4 1 +github.com/ethereum/go-ethereum/light/lightchain.go:159.75,162.3 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:162.8,164.20 2 1 +github.com/ethereum/go-ethereum/light/lightchain.go:164.20,167.4 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:167.9,169.4 1 1 +github.com/ethereum/go-ethereum/light/lightchain.go:180.50,186.2 4 1 +github.com/ethereum/go-ethereum/light/lightchain.go:189.41,191.2 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:194.31,196.2 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:200.67,212.38 8 0 +github.com/ethereum/go-ethereum/light/lightchain.go:215.2,217.50 3 0 +github.com/ethereum/go-ethereum/light/lightchain.go:212.38,214.3 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:223.49,223.69 1 1 +github.com/ethereum/go-ethereum/light/lightchain.go:226.46,228.2 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:230.51,231.26 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:236.91,238.46 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:242.2,243.19 2 0 +github.com/ethereum/go-ethereum/light/lightchain.go:246.2,247.16 2 0 +github.com/ethereum/go-ethereum/light/lightchain.go:251.2,252.18 2 0 +github.com/ethereum/go-ethereum/light/lightchain.go:238.46,241.3 2 0 +github.com/ethereum/go-ethereum/light/lightchain.go:243.19,245.3 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:247.16,249.3 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:257.95,259.49 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:262.2,263.19 2 0 +github.com/ethereum/go-ethereum/light/lightchain.go:266.2,267.16 2 0 +github.com/ethereum/go-ethereum/light/lightchain.go:271.2,272.18 2 0 +github.com/ethereum/go-ethereum/light/lightchain.go:259.49,261.3 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:263.19,265.3 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:267.16,269.3 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:277.70,280.2 2 0 +github.com/ethereum/go-ethereum/light/lightchain.go:284.108,286.46 1 1 +github.com/ethereum/go-ethereum/light/lightchain.go:289.2,290.16 2 1 +github.com/ethereum/go-ethereum/light/lightchain.go:294.2,295.19 2 1 +github.com/ethereum/go-ethereum/light/lightchain.go:286.46,288.3 1 1 +github.com/ethereum/go-ethereum/light/lightchain.go:290.16,292.3 1 1 +github.com/ethereum/go-ethereum/light/lightchain.go:300.99,302.19 2 1 +github.com/ethereum/go-ethereum/light/lightchain.go:305.2,305.40 1 1 +github.com/ethereum/go-ethereum/light/lightchain.go:302.19,304.3 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:310.98,312.43 2 1 +github.com/ethereum/go-ethereum/light/lightchain.go:315.2,315.39 1 1 +github.com/ethereum/go-ethereum/light/lightchain.go:312.43,314.3 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:320.30,321.52 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:324.2,327.32 4 0 +github.com/ethereum/go-ethereum/light/lightchain.go:321.52,323.3 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:333.36,335.2 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:339.53,344.39 4 0 +github.com/ethereum/go-ethereum/light/lightchain.go:356.2,356.38 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:344.39,351.57 2 0 +github.com/ethereum/go-ethereum/light/lightchain.go:351.57,354.4 2 0 +github.com/ethereum/go-ethereum/light/lightchain.go:356.38,358.3 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:363.61,364.31 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:364.31,365.29 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:366.24,367.44 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:370.4,370.25 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:371.28,372.29 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:367.44,369.5 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:377.64,380.67 2 0 +github.com/ethereum/go-ethereum/light/lightchain.go:384.2,392.12 7 0 +github.com/ethereum/go-ethereum/light/lightchain.go:380.67,382.3 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:395.64,402.61 5 0 +github.com/ethereum/go-ethereum/light/lightchain.go:406.2,410.12 5 0 +github.com/ethereum/go-ethereum/light/lightchain.go:402.61,404.3 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:424.92,425.21 1 1 +github.com/ethereum/go-ethereum/light/lightchain.go:428.2,428.49 1 1 +github.com/ethereum/go-ethereum/light/lightchain.go:431.2,432.71 2 1 +github.com/ethereum/go-ethereum/light/lightchain.go:437.2,444.35 6 1 +github.com/ethereum/go-ethereum/light/lightchain.go:449.2,453.16 2 1 +github.com/ethereum/go-ethereum/light/lightchain.go:460.2,460.15 1 1 +github.com/ethereum/go-ethereum/light/lightchain.go:425.21,427.3 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:428.49,430.3 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:432.71,434.3 1 1 +github.com/ethereum/go-ethereum/light/lightchain.go:444.35,446.3 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:454.24,456.59 2 1 +github.com/ethereum/go-ethereum/light/lightchain.go:457.23,458.59 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:465.53,467.2 1 1 +github.com/ethereum/go-ethereum/light/lightchain.go:471.71,473.2 1 1 +github.com/ethereum/go-ethereum/light/lightchain.go:477.95,479.15 2 0 +github.com/ethereum/go-ethereum/light/lightchain.go:482.2,483.11 2 0 +github.com/ethereum/go-ethereum/light/lightchain.go:479.15,481.3 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:488.80,490.2 1 1 +github.com/ethereum/go-ethereum/light/lightchain.go:494.71,496.2 1 1 +github.com/ethereum/go-ethereum/light/lightchain.go:500.71,502.2 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:505.67,507.2 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:514.125,516.2 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:520.70,522.2 1 1 +github.com/ethereum/go-ethereum/light/lightchain.go:526.103,527.62 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:530.2,530.47 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:527.62,529.3 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:534.52,534.77 1 1 +github.com/ethereum/go-ethereum/light/lightchain.go:541.102,546.52 3 0 +github.com/ethereum/go-ethereum/light/lightchain.go:549.2,549.20 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:553.2,553.88 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:565.2,565.14 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:546.52,548.3 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:549.20,551.3 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:553.88,558.69 3 0 +github.com/ethereum/go-ethereum/light/lightchain.go:563.3,563.14 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:558.69,562.4 3 0 +github.com/ethereum/go-ethereum/light/lightchain.go:570.35,572.2 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:575.37,577.2 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:580.89,582.2 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:585.97,587.2 1 1 +github.com/ethereum/go-ethereum/light/lightchain.go:590.97,592.2 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:596.85,598.2 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:602.101,604.2 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:607.99,609.2 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:612.42,614.2 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:617.41,619.2 1 0 +github.com/ethereum/go-ethereum/light/lightchain.go:623.97,625.2 1 0 +github.com/ethereum/go-ethereum/light/nodeset.go:40.28,44.2 1 1 +github.com/ethereum/go-ethereum/light/nodeset.go:47.56,51.40 3 1 +github.com/ethereum/go-ethereum/light/nodeset.go:54.2,60.12 5 1 +github.com/ethereum/go-ethereum/light/nodeset.go:51.40,53.3 1 0 +github.com/ethereum/go-ethereum/light/nodeset.go:64.45,70.2 4 0 +github.com/ethereum/go-ethereum/light/nodeset.go:73.52,77.44 3 0 +github.com/ethereum/go-ethereum/light/nodeset.go:80.2,80.37 1 0 +github.com/ethereum/go-ethereum/light/nodeset.go:77.44,79.3 1 0 +github.com/ethereum/go-ethereum/light/nodeset.go:84.50,87.2 2 0 +github.com/ethereum/go-ethereum/light/nodeset.go:90.35,95.2 3 0 +github.com/ethereum/go-ethereum/light/nodeset.go:98.35,103.2 3 0 +github.com/ethereum/go-ethereum/light/nodeset.go:106.40,111.31 4 0 +github.com/ethereum/go-ethereum/light/nodeset.go:114.2,114.15 1 0 +github.com/ethereum/go-ethereum/light/nodeset.go:111.31,113.3 1 0 +github.com/ethereum/go-ethereum/light/nodeset.go:118.55,122.35 3 1 +github.com/ethereum/go-ethereum/light/nodeset.go:122.35,124.3 1 1 +github.com/ethereum/go-ethereum/light/nodeset.go:131.50,132.25 1 0 +github.com/ethereum/go-ethereum/light/nodeset.go:132.25,134.3 1 0 +github.com/ethereum/go-ethereum/light/nodeset.go:138.38,142.2 3 0 +github.com/ethereum/go-ethereum/light/nodeset.go:145.56,148.2 2 0 +github.com/ethereum/go-ethereum/light/nodeset.go:151.45,152.24 1 0 +github.com/ethereum/go-ethereum/light/nodeset.go:156.34,158.25 2 0 +github.com/ethereum/go-ethereum/light/nodeset.go:161.2,161.13 1 0 +github.com/ethereum/go-ethereum/light/nodeset.go:158.25,160.3 1 0 +github.com/ethereum/go-ethereum/light/odr.go:63.48,70.2 1 1 +github.com/ethereum/go-ethereum/light/odr.go:75.71,82.2 1 1 +github.com/ethereum/go-ethereum/light/odr.go:92.56,94.2 1 1 +github.com/ethereum/go-ethereum/light/odr.go:104.56,106.2 1 1 +github.com/ethereum/go-ethereum/light/odr.go:117.57,119.2 1 1 +github.com/ethereum/go-ethereum/light/odr.go:131.60,132.20 1 1 +github.com/ethereum/go-ethereum/light/odr.go:132.20,134.3 1 1 +github.com/ethereum/go-ethereum/light/odr.go:148.55,153.2 4 0 +github.com/ethereum/go-ethereum/light/odr.go:168.57,169.50 1 0 +github.com/ethereum/go-ethereum/light/odr.go:169.50,176.3 2 0 +github.com/ethereum/go-ethereum/light/odr.go:193.61,193.62 0 0 +github.com/ethereum/go-ethereum/light/odr_util.go:39.99,46.29 3 1 +github.com/ethereum/go-ethereum/light/odr_util.go:53.2,54.48 2 0 +github.com/ethereum/go-ethereum/light/odr_util.go:57.2,63.45 2 0 +github.com/ethereum/go-ethereum/light/odr_util.go:66.2,66.22 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:46.29,47.66 1 1 +github.com/ethereum/go-ethereum/light/odr_util.go:47.66,49.4 1 1 +github.com/ethereum/go-ethereum/light/odr_util.go:54.48,56.3 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:63.45,65.3 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:70.96,72.29 2 1 +github.com/ethereum/go-ethereum/light/odr_util.go:75.2,76.16 2 0 +github.com/ethereum/go-ethereum/light/odr_util.go:80.2,80.27 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:72.29,74.3 1 1 +github.com/ethereum/go-ethereum/light/odr_util.go:76.16,78.3 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:84.100,86.15 2 0 +github.com/ethereum/go-ethereum/light/odr_util.go:89.2,90.16 2 0 +github.com/ethereum/go-ethereum/light/odr_util.go:93.2,93.27 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:97.2,97.56 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:86.15,88.3 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:90.16,92.3 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:93.27,95.3 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:101.109,102.74 1 1 +github.com/ethereum/go-ethereum/light/odr_util.go:106.2,107.16 2 1 +github.com/ethereum/go-ethereum/light/odr_util.go:110.2,110.27 1 1 +github.com/ethereum/go-ethereum/light/odr_util.go:113.2,114.45 2 1 +github.com/ethereum/go-ethereum/light/odr_util.go:117.2,117.19 1 1 +github.com/ethereum/go-ethereum/light/odr_util.go:102.74,104.3 1 1 +github.com/ethereum/go-ethereum/light/odr_util.go:107.16,109.3 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:110.27,112.3 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:114.45,116.3 1 1 +github.com/ethereum/go-ethereum/light/odr_util.go:122.105,124.16 2 1 +github.com/ethereum/go-ethereum/light/odr_util.go:127.2,128.64 2 1 +github.com/ethereum/go-ethereum/light/odr_util.go:131.2,131.18 1 1 +github.com/ethereum/go-ethereum/light/odr_util.go:124.16,126.3 1 1 +github.com/ethereum/go-ethereum/light/odr_util.go:128.64,130.3 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:136.107,139.16 2 1 +github.com/ethereum/go-ethereum/light/odr_util.go:142.2,143.16 2 1 +github.com/ethereum/go-ethereum/light/odr_util.go:147.2,147.87 1 1 +github.com/ethereum/go-ethereum/light/odr_util.go:139.16,141.3 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:143.16,145.3 1 1 +github.com/ethereum/go-ethereum/light/odr_util.go:152.117,155.21 2 1 +github.com/ethereum/go-ethereum/light/odr_util.go:170.2,170.64 1 1 +github.com/ethereum/go-ethereum/light/odr_util.go:183.2,183.22 1 1 +github.com/ethereum/go-ethereum/light/odr_util.go:155.21,157.17 2 1 +github.com/ethereum/go-ethereum/light/odr_util.go:160.3,160.28 1 1 +github.com/ethereum/go-ethereum/light/odr_util.go:163.3,164.46 2 1 +github.com/ethereum/go-ethereum/light/odr_util.go:167.3,167.24 1 1 +github.com/ethereum/go-ethereum/light/odr_util.go:157.17,159.4 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:160.28,162.4 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:164.46,166.4 1 1 +github.com/ethereum/go-ethereum/light/odr_util.go:170.64,172.17 2 1 +github.com/ethereum/go-ethereum/light/odr_util.go:175.3,178.110 3 1 +github.com/ethereum/go-ethereum/light/odr_util.go:181.3,181.62 1 1 +github.com/ethereum/go-ethereum/light/odr_util.go:172.17,174.4 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:178.110,180.4 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:188.113,191.16 2 0 +github.com/ethereum/go-ethereum/light/odr_util.go:194.2,195.35 2 0 +github.com/ethereum/go-ethereum/light/odr_util.go:198.2,198.18 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:191.16,193.3 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:195.35,197.3 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:204.111,208.21 3 0 +github.com/ethereum/go-ethereum/light/odr_util.go:218.2,219.35 2 0 +github.com/ethereum/go-ethereum/light/odr_util.go:222.2,222.18 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:208.21,210.46 2 0 +github.com/ethereum/go-ethereum/light/odr_util.go:213.3,213.24 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:210.46,212.4 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:219.35,221.3 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:227.103,235.35 3 0 +github.com/ethereum/go-ethereum/light/odr_util.go:252.2,252.24 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:256.2,263.45 2 0 +github.com/ethereum/go-ethereum/light/odr_util.go:266.2,266.31 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:269.2,269.20 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:235.35,240.94 2 0 +github.com/ethereum/go-ethereum/light/odr_util.go:245.3,245.24 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:248.3,249.33 2 0 +github.com/ethereum/go-ethereum/light/odr_util.go:240.94,242.12 2 0 +github.com/ethereum/go-ethereum/light/odr_util.go:245.24,247.4 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:252.24,254.3 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:263.45,265.3 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:266.31,268.3 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:278.135,280.100 2 0 +github.com/ethereum/go-ethereum/light/odr_util.go:283.2,286.110 2 0 +github.com/ethereum/go-ethereum/light/odr_util.go:289.2,290.112 2 0 +github.com/ethereum/go-ethereum/light/odr_util.go:293.2,293.84 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:280.100,282.3 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:286.110,288.3 1 0 +github.com/ethereum/go-ethereum/light/odr_util.go:290.112,292.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:208.147,209.23 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:212.2,237.11 3 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:209.23,211.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:247.55,254.9 5 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:264.2,270.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:255.47,256.52 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:257.47,258.56 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:259.27,260.57 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:261.10,262.124 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:274.43,276.2 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:280.77,282.18 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:288.2,289.87 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:293.2,293.12 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:282.18,285.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:285.8,287.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:289.87,292.3 2 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:297.87,299.2 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:304.54,307.18 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:313.2,314.47 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:318.2,320.12 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:307.18,310.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:310.8,312.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:314.47,317.3 2 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:325.97,328.13 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:332.2,334.106 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:345.2,346.12 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:329.33,330.13 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:334.106,336.24 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:343.3,343.13 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:336.24,340.4 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:340.9,342.4 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:352.97,354.30 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:358.2,358.57 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:361.2,364.51 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:370.2,370.22 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:384.2,387.64 3 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:393.2,393.72 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:402.2,402.30 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:410.2,422.14 8 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:425.2,425.36 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:354.30,356.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:358.57,360.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:364.51,366.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:370.22,371.18 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:381.3,381.18 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:371.18,375.63 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:378.4,379.21 2 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:375.63,377.5 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:387.64,388.10 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:389.13,389.13 0 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:390.11,390.11 0 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:393.72,394.31 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:394.31,395.11 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:396.14,396.14 0 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:397.12,398.17 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:402.30,403.10 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:404.25,404.25 0 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:405.11,406.16 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:422.14,424.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:428.41,430.2 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:434.97,436.15 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:445.2,445.27 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:448.2,451.30 3 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:456.2,457.16 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:460.2,460.38 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:467.2,470.16 3 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:473.2,474.73 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:477.2,481.22 3 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:494.2,495.52 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:498.2,498.22 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:538.2,539.27 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:542.2,543.16 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:548.2,548.22 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:557.2,557.30 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:436.15,438.17 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:438.17,440.4 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:440.9,443.4 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:445.27,447.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:451.30,453.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:457.16,459.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:460.38,466.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:470.16,472.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:474.73,476.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:481.22,482.40 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:482.40,484.4 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:484.9,486.29 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:491.4,491.54 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:486.29,488.5 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:495.52,497.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:498.22,513.64 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:520.3,524.38 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:531.3,531.24 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:513.64,515.4 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:515.9,515.44 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:515.44,517.4 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:517.9,519.4 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:524.38,527.4 2 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:527.9,527.32 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:527.32,529.4 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:531.24,532.59 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:532.59,534.5 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:539.27,541.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:543.16,543.54 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:544.16,544.52 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:545.16,545.54 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:546.16,546.57 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:548.22,553.44 4 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:553.44,553.81 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:554.8,554.29 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:554.29,556.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:562.63,565.30 3 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:570.2,571.37 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:582.2,584.12 3 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:565.30,567.13 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:567.13,567.54 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:571.37,572.27 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:578.3,578.53 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:572.27,577.4 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:578.53,579.9 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:590.31,595.23 3 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:595.23,596.10 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:597.21,597.21 0 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:599.11,600.21 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:607.31,610.2 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:614.34,617.9 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:622.2,625.12 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:618.18,618.18 0 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:619.10,620.18 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:630.104,637.22 5 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:640.2,644.6 4 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:637.22,639.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:644.6,645.10 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:646.21,647.32 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:649.31,651.31 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:656.4,657.49 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:663.4,664.86 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:667.4,667.25 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:676.4,677.77 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:680.4,680.27 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:682.18,684.31 2 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:686.19,686.19 0 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:687.22,687.22 0 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:651.31,653.10 2 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:657.49,659.5 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:664.86,666.5 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:667.25,668.75 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:671.5,672.26 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:668.75,670.6 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:677.77,679.5 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:701.87,712.21 3 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:717.2,718.23 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:721.2,723.14 3 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:726.2,726.15 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:730.2,731.22 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:734.2,734.15 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:737.2,738.14 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:741.2,742.50 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:712.21,714.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:718.23,720.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:723.14,725.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:726.15,728.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:731.22,733.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:734.15,736.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:738.14,740.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:750.98,758.14 3 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:766.2,770.30 3 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:773.2,773.36 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:779.2,779.23 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:797.2,798.16 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:805.2,805.41 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:809.2,810.16 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:813.2,813.22 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:759.16,760.56 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:761.16,762.60 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:763.10,764.61 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:770.30,772.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:773.36,776.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:779.23,781.21 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:792.3,792.33 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:781.21,783.22 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:783.22,785.36 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:788.5,788.61 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:785.36,786.11 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:792.33,794.4 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:798.16,800.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:805.41,807.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:810.16,812.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:816.161,828.36 7 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:889.2,889.29 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:897.2,897.30 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:828.36,829.10 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:830.21,831.25 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:833.31,835.31 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:840.4,841.25 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:846.4,846.35 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:854.4,855.43 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:879.18,881.24 2 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:883.19,883.19 0 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:884.22,884.22 0 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:835.31,837.10 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:841.25,844.5 2 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:846.35,848.64 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:848.64,851.6 2 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:855.43,857.77 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:861.5,865.17 4 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:873.5,873.14 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:857.77,858.14 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:866.19,867.41 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:868.19,869.45 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:870.13,871.42 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:873.14,875.11 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:889.29,890.29 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:894.3,895.21 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:890.29,893.4 2 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:900.150,905.15 3 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:908.2,910.20 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:975.2,975.27 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:979.2,980.19 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:905.15,907.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:910.20,920.35 5 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:920.35,921.11 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:922.22,923.26 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:925.32,927.32 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:932.5,933.26 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:937.5,944.17 5 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:952.5,952.15 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:956.5,957.40 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:961.5,962.13 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:964.19,966.25 2 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:968.20,968.20 0 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:969.23,969.23 0 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:927.32,929.11 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:933.26,936.6 2 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:945.19,946.41 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:947.19,948.45 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:949.13,950.42 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:952.15,954.11 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:957.40,960.6 2 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:975.27,978.3 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:991.73,1004.34 10 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1018.2,1018.25 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1033.2,1037.6 4 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1004.34,1010.15 4 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1010.15,1013.4 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1013.9,1016.4 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1018.25,1031.3 9 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1037.6,1038.10 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1039.21,1040.22 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1042.31,1044.31 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1048.4,1055.28 5 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1058.4,1060.16 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1090.4,1090.39 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1096.4,1096.27 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1117.4,1120.16 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1160.4,1160.24 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1188.20,1189.25 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1196.4,1201.66 4 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1207.4,1207.11 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1211.4,1211.65 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1044.31,1046.10 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1055.28,1057.5 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1060.16,1061.28 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1085.5,1087.13 3 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1061.28,1065.95 2 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1069.6,1069.99 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1073.6,1083.50 6 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1065.95,1068.7 2 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1069.99,1072.7 2 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1090.39,1093.13 3 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1096.27,1098.61 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1109.5,1110.12 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1098.61,1100.13 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1101.43,1103.15 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1104.24,1105.25 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1111.32,1112.16 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1113.23,1114.24 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1120.16,1122.19 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1126.5,1127.27 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1122.19,1125.6 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1128.10,1132.33 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1132.33,1135.27 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1146.6,1146.25 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1150.6,1150.72 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1135.27,1137.7 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1137.12,1139.71 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1139.71,1141.8 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1146.25,1148.7 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1150.72,1152.20 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1155.7,1155.34 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1152.20,1154.8 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1160.24,1162.12 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1167.5,1171.30 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1163.36,1163.36 0 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1164.23,1165.24 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1171.30,1173.6 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1173.11,1175.6 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1176.10,1179.12 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1180.42,1182.14 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1183.23,1184.24 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1189.25,1193.10 2 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1201.66,1202.12 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1203.22,1203.22 0 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1204.23,1204.23 0 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1208.31,1208.31 0 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1209.22,1209.22 0 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1225.110,1230.48 3 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1244.2,1251.28 4 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1230.48,1233.4 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1234.35,1234.98 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1235.76,1237.4 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1238.63,1238.114 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1239.42,1239.102 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1240.76,1242.4 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1257.53,1261.48 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1270.2,1275.12 3 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1261.48,1264.4 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1265.36,1265.98 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1266.63,1266.92 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1267.42,1267.101 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1268.76,1268.119 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1281.55,1285.48 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1296.2,1301.12 3 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1285.48,1288.4 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1289.36,1289.100 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1290.63,1290.94 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1291.42,1291.103 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1292.76,1294.4 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1332.106,1342.6 5 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1342.6,1343.10 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1344.21,1345.22 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1347.31,1351.58 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1374.4,1374.11 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1379.25,1381.13 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1385.4,1385.11 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1390.19,1392.11 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1397.17,1399.26 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1403.4,1403.37 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1439.4,1439.22 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1447.4,1450.31 4 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1494.4,1494.85 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1351.58,1354.40 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1360.5,1360.42 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1364.5,1364.12 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1354.40,1356.6 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1360.42,1362.6 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1365.44,1366.66 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1367.21,1368.90 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1369.13,1370.82 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1375.30,1375.30 0 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1376.12,1376.12 0 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1381.13,1383.5 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1386.30,1386.30 0 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1387.12,1387.12 0 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1393.30,1393.30 0 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1394.12,1394.12 0 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1399.26,1401.5 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1403.37,1404.47 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1404.47,1412.19 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1412.19,1415.7 2 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1415.12,1418.28 2 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1418.28,1422.8 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1422.13,1430.18 5 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1430.18,1433.9 2 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1439.22,1440.32 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1444.5,1444.10 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1440.32,1443.6 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1450.31,1452.18 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1456.5,1456.46 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1462.5,1463.17 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1466.5,1466.17 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1470.5,1470.23 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1473.5,1473.25 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1479.5,1479.25 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1482.5,1482.48 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1490.5,1490.19 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1452.18,1453.11 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1456.46,1457.11 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1463.17,1465.6 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1466.17,1469.6 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1470.23,1471.14 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1473.25,1475.6 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1475.11,1477.6 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1479.25,1481.6 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1482.48,1488.70 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1494.85,1496.5 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1504.71,1511.15 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1534.2,1536.6 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1511.15,1512.19 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1512.19,1514.25 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1518.4,1518.61 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1522.4,1523.25 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1527.4,1530.80 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1514.25,1517.5 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1518.61,1521.5 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1523.25,1526.5 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1536.6,1537.10 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1538.21,1540.22 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1542.36,1544.25 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1588.4,1589.25 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1661.4,1662.39 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1665.4,1668.66 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1544.25,1546.67 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1564.5,1564.26 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1577.5,1577.46 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1584.5,1585.15 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1546.67,1547.13 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1548.23,1548.23 0 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1549.24,1549.24 0 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1564.26,1566.86 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1566.86,1568.7 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1577.46,1579.75 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1579.75,1581.7 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1589.25,1591.12 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1598.5,1599.29 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1602.5,1605.46 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1640.5,1640.45 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1657.5,1658.28 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1592.23,1594.24 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1595.13,1595.13 0 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1599.29,1601.6 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1605.46,1610.30 3 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1613.6,1616.81 3 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1619.6,1619.80 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1630.6,1630.26 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1610.30,1612.7 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1616.81,1618.7 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1619.80,1623.72 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1626.7,1627.56 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1623.72,1625.8 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1630.26,1632.52 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1632.52,1634.8 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1634.13,1636.8 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1640.45,1642.103 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1651.6,1652.36 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1642.103,1643.14 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1644.25,1646.26 2 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1647.38,1647.38 0 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1652.36,1655.7 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1662.39,1664.5 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1668.66,1669.12 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1670.21,1670.21 0 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1671.13,1671.13 0 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1679.53,1680.6 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1680.6,1682.24 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1685.3,1685.31 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1688.3,1688.55 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1682.24,1684.4 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1685.31,1687.4 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1688.55,1690.4 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1694.71,1696.23 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1699.2,1699.9 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1705.2,1711.33 4 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1714.2,1714.64 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1726.2,1726.12 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1696.23,1698.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1700.18,1701.36 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1702.10,1702.10 0 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1711.33,1713.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1714.64,1715.27 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1724.3,1724.52 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1715.27,1717.4 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1717.9,1723.4 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1731.53,1738.15 4 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1745.2,1745.35 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1750.2,1758.6 3 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1738.15,1743.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1745.35,1746.114 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1746.114,1748.4 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1758.6,1762.24 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1775.3,1775.31 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1780.3,1784.22 4 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1795.3,1795.42 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1817.3,1818.61 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1821.3,1821.15 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1847.3,1847.54 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1762.24,1764.23 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1768.4,1768.11 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1764.23,1766.5 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1769.22,1771.23 2 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1772.12,1772.12 0 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1775.31,1777.4 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1784.22,1785.31 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1785.31,1790.5 3 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1791.9,1793.4 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1795.42,1804.128 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1804.128,1815.5 6 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1818.61,1820.4 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1821.15,1823.21 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1831.4,1831.11 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1823.21,1829.5 4 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1832.21,1833.24 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1836.5,1836.49 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1839.5,1839.19 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1841.35,1843.13 2 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1833.24,1835.6 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1836.49,1838.6 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1847.54,1849.4 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1853.108,1854.23 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1857.2,1857.80 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1862.2,1862.33 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1873.2,1873.25 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1854.23,1856.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1857.80,1860.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1862.33,1864.10 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1865.20,1866.35 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1867.21,1868.14 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1869.11,1870.33 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1876.93,1878.23 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1881.2,1881.9 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1891.2,1898.33 5 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1902.2,1902.97 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1906.2,1906.12 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1878.23,1880.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1882.18,1883.36 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1884.24,1885.42 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1888.10,1888.10 0 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1885.42,1887.4 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1898.33,1901.3 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1902.97,1905.3 2 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1909.66,1914.133 3 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1917.2,1917.70 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1920.2,1921.12 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1914.133,1916.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1917.70,1919.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1926.79,1928.2 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1931.116,1933.2 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1936.84,1938.2 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1941.70,1943.2 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1947.83,1948.33 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1949.32,1951.17 2 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1954.3,1954.82 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1956.33,1958.81 2 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1960.29,1961.65 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1963.29,1964.65 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1966.10,1967.63 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1951.17,1953.4 1 0 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1972.115,1975.15 2 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1981.2,1984.19 4 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1987.2,1987.9 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1975.15,1976.17 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1976.17,1978.4 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1984.19,1986.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1988.24,1989.13 1 1 +github.com/ethereum/go-ethereum/les/downloader/downloader.go:1990.16,1991.25 1 1 +github.com/ethereum/go-ethereum/les/downloader/modes.go:32.37,34.2 1 0 +github.com/ethereum/go-ethereum/les/downloader/modes.go:37.38,38.14 1 0 +github.com/ethereum/go-ethereum/les/downloader/modes.go:39.16,40.16 1 0 +github.com/ethereum/go-ethereum/les/downloader/modes.go:41.16,42.16 1 0 +github.com/ethereum/go-ethereum/les/downloader/modes.go:43.16,44.16 1 0 +github.com/ethereum/go-ethereum/les/downloader/modes.go:45.17,46.17 1 0 +github.com/ethereum/go-ethereum/les/downloader/modes.go:47.10,48.19 1 0 +github.com/ethereum/go-ethereum/les/downloader/modes.go:52.52,53.14 1 0 +github.com/ethereum/go-ethereum/les/downloader/modes.go:54.16,55.29 1 0 +github.com/ethereum/go-ethereum/les/downloader/modes.go:56.16,57.29 1 0 +github.com/ethereum/go-ethereum/les/downloader/modes.go:58.16,59.29 1 0 +github.com/ethereum/go-ethereum/les/downloader/modes.go:60.17,61.30 1 0 +github.com/ethereum/go-ethereum/les/downloader/modes.go:62.10,63.55 1 0 +github.com/ethereum/go-ethereum/les/downloader/modes.go:67.56,68.22 1 0 +github.com/ethereum/go-ethereum/les/downloader/modes.go:80.2,80.12 1 0 +github.com/ethereum/go-ethereum/les/downloader/modes.go:69.14,70.19 1 0 +github.com/ethereum/go-ethereum/les/downloader/modes.go:71.14,72.19 1 0 +github.com/ethereum/go-ethereum/les/downloader/modes.go:73.14,74.19 1 0 +github.com/ethereum/go-ethereum/les/downloader/modes.go:75.15,76.20 1 0 +github.com/ethereum/go-ethereum/les/downloader/modes.go:77.10,78.82 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:48.38,50.2 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:62.61,65.9 2 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:75.2,75.10 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:66.29,70.14 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:71.18,73.16 2 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:80.37,81.6 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:81.6,82.10 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:83.32,84.32 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:87.20,87.20 0 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:89.19,90.10 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:84.32,86.5 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:97.60,105.15 3 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:113.2,121.6 6 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:105.15,108.30 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:108.30,111.4 2 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:121.6,127.24 2 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:132.3,132.10 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:127.24,130.4 2 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:134.35,136.15 2 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:138.17,140.14 2 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:143.35,147.41 3 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:150.28,153.18 2 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:158.4,163.33 5 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:166.24,169.18 2 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:173.4,178.24 5 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:181.25,185.34 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:188.4,191.31 3 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:194.33,201.46 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:210.4,210.51 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:213.4,213.29 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:153.18,155.13 2 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:169.18,170.13 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:185.34,186.13 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:201.46,208.5 5 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:210.51,212.5 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:221.146,223.22 2 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:252.2,252.31 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:223.22,228.10 2 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:241.3,241.17 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:244.3,247.56 4 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:230.28,232.24 2 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:234.24,236.23 2 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:238.24,239.22 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:241.17,242.12 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:252.31,254.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:296.63,309.2 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:314.27,316.18 2 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:321.2,321.15 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:316.18,318.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:318.8,320.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:325.34,328.2 2 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:331.36,332.25 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:335.2,335.17 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:332.25,334.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:344.40,349.15 4 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:357.2,357.28 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:407.2,407.12 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:349.15,351.17 2 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:351.17,353.4 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:357.28,358.40 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:361.3,363.10 2 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:358.40,360.4 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:364.18,364.18 0 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:367.19,368.30 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:370.23,371.22 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:373.27,376.57 2 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:399.4,401.18 3 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:376.57,380.28 2 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:380.28,384.6 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:384.11,392.16 5 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:392.16,395.7 2 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:401.18,404.5 2 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:410.46,411.57 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:414.2,416.42 3 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:419.2,419.34 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:422.2,425.12 4 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:411.57,413.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:416.42,418.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:419.34,421.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:430.35,433.26 2 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:433.26,441.32 4 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:441.32,443.11 2 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:444.34,445.52 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:446.20,446.20 0 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:447.24,447.24 0 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:455.119,457.65 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:473.2,480.35 6 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:495.2,495.35 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:513.2,514.28 2 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:457.65,459.30 2 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:465.3,465.30 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:459.30,464.4 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:465.30,469.4 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:480.35,482.33 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:486.3,486.43 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:490.3,493.28 4 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:482.33,483.9 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:486.43,487.12 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:495.35,497.33 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:501.3,501.43 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:505.3,511.28 5 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:497.33,498.9 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:501.43,502.12 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:521.57,525.30 2 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:532.2,532.36 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:551.2,552.40 2 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:567.2,567.40 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:582.2,582.24 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:525.30,526.38 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:526.38,528.4 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:532.36,534.14 2 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:547.3,548.30 2 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:535.12,538.16 3 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:539.29,540.16 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:541.33,542.15 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:543.11,544.90 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:552.40,556.46 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:561.3,561.35 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:565.3,565.27 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:556.46,558.4 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:561.35,563.4 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:567.40,571.46 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:576.3,576.35 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:580.3,580.27 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:571.46,573.4 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:576.35,578.4 1 0 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:588.71,595.2 6 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:599.93,608.52 7 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:611.2,611.17 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:608.52,610.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/statesync.go:611.18,613.3 0 1 +github.com/ethereum/go-ethereum/les/downloader/types.go:41.38,41.57 1 1 +github.com/ethereum/go-ethereum/les/downloader/types.go:42.38,42.63 1 1 +github.com/ethereum/go-ethereum/les/downloader/types.go:43.38,43.82 1 1 +github.com/ethereum/go-ethereum/les/downloader/types.go:52.36,52.55 1 1 +github.com/ethereum/go-ethereum/les/downloader/types.go:53.32,54.42 1 1 +github.com/ethereum/go-ethereum/les/downloader/types.go:57.2,57.22 1 0 +github.com/ethereum/go-ethereum/les/downloader/types.go:54.42,56.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/types.go:59.35,59.102 1 1 +github.com/ethereum/go-ethereum/les/downloader/types.go:67.39,67.58 1 1 +github.com/ethereum/go-ethereum/les/downloader/types.go:68.39,68.65 1 1 +github.com/ethereum/go-ethereum/les/downloader/types.go:69.39,69.84 1 1 +github.com/ethereum/go-ethereum/les/downloader/types.go:77.37,77.56 1 1 +github.com/ethereum/go-ethereum/les/downloader/types.go:78.37,78.61 1 1 +github.com/ethereum/go-ethereum/les/downloader/types.go:79.37,79.80 1 0 +github.com/ethereum/go-ethereum/les/downloader/api.go:41.83,52.2 3 0 +github.com/ethereum/go-ethereum/les/downloader/api.go:56.45,62.6 2 0 +github.com/ethereum/go-ethereum/les/downloader/api.go:62.6,63.10 1 0 +github.com/ethereum/go-ethereum/les/downloader/api.go:64.43,65.37 1 0 +github.com/ethereum/go-ethereum/les/downloader/api.go:66.45,68.24 2 0 +github.com/ethereum/go-ethereum/les/downloader/api.go:69.30,70.20 1 0 +github.com/ethereum/go-ethereum/les/downloader/api.go:74.4,75.29 2 0 +github.com/ethereum/go-ethereum/les/downloader/api.go:85.4,85.37 1 0 +github.com/ethereum/go-ethereum/les/downloader/api.go:70.20,72.5 1 0 +github.com/ethereum/go-ethereum/les/downloader/api.go:76.20,80.6 1 0 +github.com/ethereum/go-ethereum/les/downloader/api.go:81.32,82.25 1 0 +github.com/ethereum/go-ethereum/les/downloader/api.go:85.37,87.5 1 0 +github.com/ethereum/go-ethereum/les/downloader/api.go:93.89,95.16 2 0 +github.com/ethereum/go-ethereum/les/downloader/api.go:99.2,101.12 2 0 +github.com/ethereum/go-ethereum/les/downloader/api.go:119.2,119.20 1 0 +github.com/ethereum/go-ethereum/les/downloader/api.go:95.16,97.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/api.go:101.12,105.7 3 0 +github.com/ethereum/go-ethereum/les/downloader/api.go:105.7,106.11 1 0 +github.com/ethereum/go-ethereum/les/downloader/api.go:107.30,108.39 1 0 +github.com/ethereum/go-ethereum/les/downloader/api.go:109.24,111.11 2 0 +github.com/ethereum/go-ethereum/les/downloader/api.go:112.29,114.11 2 0 +github.com/ethereum/go-ethereum/les/downloader/api.go:144.48,145.24 1 0 +github.com/ethereum/go-ethereum/les/downloader/api.go:145.24,149.7 3 0 +github.com/ethereum/go-ethereum/les/downloader/api.go:149.7,150.11 1 0 +github.com/ethereum/go-ethereum/les/downloader/api.go:151.15,153.13 1 0 +github.com/ethereum/go-ethereum/les/downloader/api.go:154.27,155.11 1 0 +github.com/ethereum/go-ethereum/les/downloader/api.go:163.102,166.2 2 0 +github.com/ethereum/go-ethereum/les/downloader/peer.go:91.59,91.83 1 0 +github.com/ethereum/go-ethereum/les/downloader/peer.go:92.106,94.2 1 0 +github.com/ethereum/go-ethereum/les/downloader/peer.go:95.103,97.2 1 0 +github.com/ethereum/go-ethereum/les/downloader/peer.go:98.63,99.64 1 0 +github.com/ethereum/go-ethereum/les/downloader/peer.go:101.65,102.66 1 0 +github.com/ethereum/go-ethereum/les/downloader/peer.go:104.65,105.66 1 0 +github.com/ethereum/go-ethereum/les/downloader/peer.go:109.95,117.2 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:120.34,130.2 7 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:133.69,135.54 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:138.2,143.12 3 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:135.54,137.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/peer.go:147.67,149.53 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:152.2,154.12 2 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:163.2,163.12 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:149.53,151.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/peer.go:154.12,157.42 2 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:160.3,160.31 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:157.42,159.4 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:167.69,169.55 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:172.2,174.12 2 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:183.2,183.12 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:169.55,171.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/peer.go:174.12,177.42 2 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:180.3,180.33 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:177.42,179.4 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:187.68,189.53 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:192.2,196.12 3 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:189.53,191.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/peer.go:202.80,205.2 2 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:210.79,213.2 2 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:218.81,221.2 2 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:226.81,229.2 2 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:233.70,235.26 2 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:238.2,238.12 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:235.26,237.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:243.69,245.25 2 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:248.2,248.12 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:245.25,247.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:253.71,255.27 2 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:258.2,258.12 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:255.27,257.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:263.72,265.25 2 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:268.2,268.12 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:265.25,267.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:274.56,278.41 3 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:284.2,284.30 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:278.41,279.31 1 0 +github.com/ethereum/go-ethereum/les/downloader/peer.go:279.31,281.9 2 0 +github.com/ethereum/go-ethereum/les/downloader/peer.go:289.55,295.2 4 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:310.28,315.2 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:318.84,320.2 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:323.85,325.2 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:329.28,333.32 3 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:333.32,335.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:344.54,347.33 2 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:351.2,352.54 2 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:355.2,359.12 4 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:347.33,350.3 2 0 +github.com/ethereum/go-ethereum/les/downloader/peer.go:352.54,354.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/peer.go:364.48,367.9 3 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:371.2,376.12 5 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:367.9,370.3 2 0 +github.com/ethereum/go-ethereum/les/downloader/peer.go:380.52,385.2 3 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:388.30,393.2 3 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:396.49,401.29 4 0 +github.com/ethereum/go-ethereum/les/downloader/peer.go:404.2,404.13 1 0 +github.com/ethereum/go-ethereum/les/downloader/peer.go:401.29,403.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/peer.go:409.63,410.39 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:413.2,413.44 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:416.2,416.61 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:410.39,412.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:413.44,415.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:421.61,422.39 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:425.2,425.44 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:428.2,428.61 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:422.39,424.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:425.44,427.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:433.64,434.39 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:437.2,437.44 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:440.2,440.61 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:434.39,436.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:437.44,439.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:445.65,446.39 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:449.2,449.44 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:452.2,452.61 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:446.39,448.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:449.44,451.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:458.160,467.29 4 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:478.2,480.27 3 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:467.29,468.59 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:468.59,469.20 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:473.4,473.11 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:469.20,472.5 2 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:490.39,492.2 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:494.49,496.2 1 1 +github.com/ethereum/go-ethereum/les/downloader/peer.go:498.44,501.2 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:73.71,77.25 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:80.2,80.41 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:83.2,83.13 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:77.25,79.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:80.41,82.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:87.37,88.67 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:88.67,90.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:94.38,96.2 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:99.41,100.70 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:100.70,102.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:106.44,109.2 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:146.69,157.2 4 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:160.70,180.2 14 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:184.25,189.2 4 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:192.38,197.2 3 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:200.37,205.2 3 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:208.39,213.2 3 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:217.40,222.2 3 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:226.39,231.2 3 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:235.41,240.2 3 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:243.29,251.2 5 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:255.73,260.28 3 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:264.2,272.34 8 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:260.28,261.49 1 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:272.34,277.3 3 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:282.58,290.2 5 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:294.80,300.33 4 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:333.2,333.16 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:300.33,303.61 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:307.3,307.75 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:314.3,314.41 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:321.3,321.52 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:329.3,331.9 3 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:303.61,305.9 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:307.75,309.9 2 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:314.41,316.4 1 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:316.9,319.4 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:321.52,322.44 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:322.44,324.5 1 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:324.10,327.5 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:340.52,342.50 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:345.2,346.52 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:365.2,366.33 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:383.2,387.48 3 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:393.2,393.16 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:342.50,344.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:346.52,355.52 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:360.3,362.18 3 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:355.52,357.9 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:366.33,369.39 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:372.3,372.43 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:375.3,375.42 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:378.3,379.61 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:369.39,371.4 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:372.43,374.4 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:375.42,377.4 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:387.48,392.3 4 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:396.39,401.2 3 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:403.39,409.2 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:413.76,419.41 3 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:423.2,424.46 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:435.2,435.28 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:439.2,439.15 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:442.2,448.16 3 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:419.41,421.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:424.46,426.36 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:432.3,432.23 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:426.36,427.58 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:427.58,429.13 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:435.28,437.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:439.15,441.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:454.89,459.2 3 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:464.91,469.2 3 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:484.76,487.23 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:490.2,490.33 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:494.2,498.65 5 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:549.2,549.30 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:552.2,552.39 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:557.2,557.20 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:560.2,566.37 3 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:487.23,489.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:490.33,492.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:498.65,507.12 4 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:517.3,517.15 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:525.3,525.17 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:531.3,531.22 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:540.3,542.29 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:507.12,515.12 6 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:517.15,523.9 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:525.17,529.9 2 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:531.22,537.12 5 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:542.29,544.4 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:544.9,546.4 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:549.30,551.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:552.39,555.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:557.20,559.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:570.54,574.2 3 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:578.53,582.2 3 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:586.55,590.2 3 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:593.106,594.22 1 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:597.2,597.41 1 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:600.2,600.35 1 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:594.22,596.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:597.41,599.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:606.39,610.48 3 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:616.2,616.50 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:610.48,611.42 1 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:614.3,614.34 1 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:611.42,613.4 1 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:616.50,617.42 1 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:620.3,620.36 1 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:617.42,619.4 1 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:626.69,631.2 3 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:635.68,640.2 3 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:644.70,649.2 3 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:657.149,660.36 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:679.2,679.17 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:660.36,661.41 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:661.41,666.24 2 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:669.4,669.43 1 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:673.4,676.24 2 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:666.24,668.5 1 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:669.43,671.5 1 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:689.116,694.18 4 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:701.2,702.20 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:705.2,712.14 5 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:721.2,721.14 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:740.2,740.15 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:754.2,758.98 4 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:761.2,761.15 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:774.2,774.32 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:777.2,777.26 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:694.18,697.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:697.8,699.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:702.20,704.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:712.14,713.49 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:713.49,716.4 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:716.9,716.54 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:716.54,719.4 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:721.14,723.38 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:723.38,725.76 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:730.4,730.39 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:736.4,736.21 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:725.76,728.10 3 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:730.39,733.10 3 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:740.15,744.18 3 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:748.3,751.48 3 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:744.18,747.4 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:758.98,760.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:761.15,766.10 3 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:767.32,769.34 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:770.11,770.11 0 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:774.32,776.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:783.117,787.58 4 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:797.2,797.54 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:802.2,803.53 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:787.58,788.87 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:791.3,791.65 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:794.3,794.13 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:788.87,790.4 1 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:791.65,793.4 1 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:797.54,801.3 3 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:809.89,813.58 4 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:819.2,819.54 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:823.2,824.60 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:813.58,814.92 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:817.3,817.13 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:814.92,816.4 1 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:819.54,822.3 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:835.65,839.20 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:842.2,846.18 3 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:852.2,858.41 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:872.2,872.45 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:887.2,887.52 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:891.2,891.18 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:894.2,894.20 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:898.2,898.18 1 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:901.2,901.66 1 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:839.20,841.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:846.18,847.42 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:847.42,849.4 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:858.41,860.19 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:864.3,864.45 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:868.3,869.6 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:860.19,861.9 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:864.45,866.9 2 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:872.45,873.91 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:883.3,884.13 2 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:873.91,875.4 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:875.9,881.4 2 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:887.52,889.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:891.18,893.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:894.20,896.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/queue.go:898.18,900.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/queue.go:906.55,913.2 4 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:48.44,54.2 1 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:58.69,63.24 4 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:66.2,67.28 2 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:63.24,65.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:78.123,84.38 5 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:87.2,87.17 1 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:91.2,91.36 1 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:84.38,86.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:87.17,90.3 2 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:98.88,104.2 4 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:108.123,113.27 4 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:119.2,119.11 1 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:122.2,123.42 2 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:113.27,118.3 2 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:119.11,121.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:128.48,132.23 3 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:135.2,135.55 1 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:138.2,138.14 1 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:132.23,134.3 1 0 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:135.55,137.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:145.44,149.18 2 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:158.2,159.19 2 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:149.18,150.35 1 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:153.3,154.41 2 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:150.35,151.9 1 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:154.41,155.9 1 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:163.62,168.23 4 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:171.2,176.55 4 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:180.2,183.16 3 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:168.23,170.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:176.55,178.3 1 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:187.46,191.29 3 1 +github.com/ethereum/go-ethereum/les/downloader/resultstore.go:191.29,193.3 1 1 +github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:43.32,47.2 1 1 +github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:49.64,51.2 1 1 +github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:53.60,55.2 1 1 +github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:57.74,59.2 1 1 +github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:61.68,66.20 5 1 +github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:69.2,69.24 1 1 +github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:66.20,68.3 1 1 +github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:72.60,74.2 1 1 +github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:76.60,81.20 5 1 +github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:84.2,84.24 1 1 +github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:81.20,83.3 1 1 +github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:87.78,88.26 1 1 +github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:91.2,98.24 8 1 +github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:88.26,90.3 1 1 +github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:101.71,105.2 3 1 +github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:107.73,111.2 3 1 +github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:113.79,116.2 2 1 +github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:118.35,120.2 1 1 +github.com/ethereum/go-ethereum/metrics/prometheus/prometheus.go:30.49,31.71 1 0 +github.com/ethereum/go-ethereum/metrics/prometheus/prometheus.go:31.71,34.45 2 0 +github.com/ethereum/go-ethereum/metrics/prometheus/prometheus.go:37.3,42.30 3 0 +github.com/ethereum/go-ethereum/metrics/prometheus/prometheus.go:64.3,66.26 3 0 +github.com/ethereum/go-ethereum/metrics/prometheus/prometheus.go:34.45,36.4 1 0 +github.com/ethereum/go-ethereum/metrics/prometheus/prometheus.go:42.30,45.25 2 0 +github.com/ethereum/go-ethereum/metrics/prometheus/prometheus.go:46.25,47.37 1 0 +github.com/ethereum/go-ethereum/metrics/prometheus/prometheus.go:48.23,49.35 1 0 +github.com/ethereum/go-ethereum/metrics/prometheus/prometheus.go:50.30,51.42 1 0 +github.com/ethereum/go-ethereum/metrics/prometheus/prometheus.go:52.27,53.39 1 0 +github.com/ethereum/go-ethereum/metrics/prometheus/prometheus.go:54.23,55.35 1 0 +github.com/ethereum/go-ethereum/metrics/prometheus/prometheus.go:56.23,57.35 1 0 +github.com/ethereum/go-ethereum/metrics/prometheus/prometheus.go:58.32,59.44 1 0 +github.com/ethereum/go-ethereum/metrics/prometheus/prometheus.go:60.12,61.77 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:85.147,99.159 4 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:125.2,125.119 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:133.2,133.148 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:151.2,151.11 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:99.159,100.42 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:108.3,108.104 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:111.3,111.40 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:118.3,118.41 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:100.42,103.70 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:106.4,106.52 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:103.70,105.5 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:108.104,110.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:111.40,114.20 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:114.20,116.5 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:118.41,119.70 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:119.70,121.5 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:125.119,126.69 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:126.69,129.4 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:133.148,134.48 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:137.3,137.48 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:140.3,140.84 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:143.3,143.84 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:146.3,149.55 4 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:134.48,136.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:137.48,139.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:140.84,142.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:143.84,145.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:155.31,157.2 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:161.30,164.2 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:169.66,173.2 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:176.51,178.2 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:183.60,188.2 4 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:191.133,193.29 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:196.2,198.25 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:266.2,266.8 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:193.29,195.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:198.25,200.21 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:204.3,205.20 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:210.3,210.25 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:215.3,215.80 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:219.3,219.25 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:222.3,222.16 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:231.3,232.24 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:258.3,258.113 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:263.3,264.27 2 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:200.21,203.4 2 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:205.20,209.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:210.25,214.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:215.80,218.4 2 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:219.25,221.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:222.16,226.17 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:226.17,228.5 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:232.24,241.62 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:244.4,244.26 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:247.4,252.28 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:241.62,243.5 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:244.26,246.5 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:252.28,254.5 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:255.9,257.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:258.113,261.4 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:272.85,274.40 2 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:277.2,277.70 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:280.2,281.18 2 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:287.2,289.29 3 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:292.2,296.70 3 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:312.2,312.20 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:317.2,318.14 2 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:274.40,276.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:277.70,279.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:281.18,285.3 3 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:289.29,291.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:296.70,298.43 2 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:298.43,300.62 2 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:303.4,303.63 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:306.4,306.29 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:300.62,302.5 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:303.63,305.5 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:306.29,308.5 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:312.20,314.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:314.8,316.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:322.92,323.14 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:324.31,325.45 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:326.10,327.13 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:102.186,113.38 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:116.2,118.121 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:137.2,137.126 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:147.2,147.100 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:152.2,152.11 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:113.38,115.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:118.121,119.22 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:119.22,128.4 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:128.9,130.81 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:133.4,134.50 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:130.81,132.5 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:137.126,138.80 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:138.80,139.26 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:142.4,142.26 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:139.26,141.5 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:142.26,144.5 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:147.100,148.26 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:148.26,150.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:160.115,164.27 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:167.2,167.27 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:170.2,170.26 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:173.2,174.14 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:179.2,180.28 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:184.2,193.19 10 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:164.27,166.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:167.27,169.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:170.26,172.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:174.14,178.3 3 0 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:180.28,183.3 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:197.60,205.9 7 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:209.2,209.9 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:212.2,213.25 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:205.9,208.3 2 0 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:209.9,211.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:213.25,213.52 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:217.59,220.38 3 0 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:223.2,225.25 3 0 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:220.38,222.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:225.25,225.52 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:229.51,234.2 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:237.40,242.2 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:245.51,250.2 3 0 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:253.49,255.2 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:258.47,260.2 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:264.36,265.24 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:268.2,268.11 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:265.24,267.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:272.42,274.17 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:274.17,276.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:276.8,278.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:282.86,285.16 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:288.2,288.98 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:285.16,287.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:292.63,294.2 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:298.52,301.17 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:305.2,309.25 5 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:301.17,304.3 2 0 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:315.55,318.18 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:322.2,327.21 5 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:332.2,333.25 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:318.18,321.3 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:327.21,331.3 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:340.53,341.17 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:344.2,345.34 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:349.2,352.40 4 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:341.17,343.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:345.34,347.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:357.55,358.18 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:361.2,362.34 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:365.2,367.12 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:358.18,360.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:362.34,364.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:373.68,374.18 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:378.2,379.25 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:382.2,382.14 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:385.2,385.22 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:374.18,377.3 2 0 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:379.25,381.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:382.14,384.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:389.72,390.18 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:394.2,394.15 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:390.18,393.3 2 0 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:398.71,399.18 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:403.2,403.21 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:399.18,402.3 2 0 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:409.62,410.64 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:413.2,417.70 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:436.2,436.45 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:410.64,412.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:417.70,421.68 4 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:434.3,434.66 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:421.68,423.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:423.9,425.16 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:428.4,428.40 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:431.4,432.26 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:425.16,427.5 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:428.40,430.5 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:442.76,443.33 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:466.2,467.12 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:470.2,470.8 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:443.33,448.13 4 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:453.3,455.18 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:448.13,450.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:450.9,452.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:455.18,456.23 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:461.4,461.33 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:456.23,458.5 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:458.10,460.5 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:461.33,463.5 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:467.12,469.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:482.58,483.28 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:483.28,484.20 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:487.3,487.20 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:484.20,486.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:487.20,490.4 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:490.9,492.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:497.62,498.34 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:512.2,513.35 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:498.34,505.25 7 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:505.25,508.4 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:508.9,509.9 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:519.58,523.30 4 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:527.2,529.21 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:534.2,536.25 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:523.30,526.3 2 0 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:529.21,531.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:531.8,533.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:554.59,560.72 5 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:564.2,576.23 8 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:615.2,620.24 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:623.2,623.14 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:560.72,562.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:576.23,578.31 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:584.3,590.27 5 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:596.3,597.18 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:601.3,602.19 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:611.3,612.42 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:578.31,580.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:580.9,582.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:590.27,593.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:593.9,595.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:597.18,599.9 2 0 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:602.19,608.4 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:620.24,622.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:627.62,628.41 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:638.2,638.11 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:628.41,637.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:641.53,643.31 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:647.2,647.51 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:655.2,655.11 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:643.31,646.3 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:647.51,649.13 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:652.3,653.40 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:649.13,650.9 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:662.78,664.16 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:673.2,674.34 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:677.2,678.41 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:681.2,682.18 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:690.2,690.13 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:664.16,667.59 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:667.59,669.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:669.9,671.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:674.34,676.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:678.41,680.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:682.18,684.48 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:684.48,686.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:686.9,688.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/service.go:53.55,59.2 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/service.go:62.55,64.35 2 0 +github.com/ethereum/go-ethereum/les/vflux/server/service.go:69.2,71.17 3 0 +github.com/ethereum/go-ethereum/les/vflux/server/service.go:64.35,68.3 2 0 +github.com/ethereum/go-ethereum/les/vflux/server/service.go:78.92,80.52 2 0 +github.com/ethereum/go-ethereum/les/vflux/server/service.go:84.2,85.15 2 0 +github.com/ethereum/go-ethereum/les/vflux/server/service.go:90.2,92.31 3 0 +github.com/ethereum/go-ethereum/les/vflux/server/service.go:97.2,100.16 4 0 +github.com/ethereum/go-ethereum/les/vflux/server/service.go:80.52,82.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/service.go:85.15,87.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/service.go:92.31,93.57 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/service.go:93.57,95.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/service.go:104.82,106.56 2 0 +github.com/ethereum/go-ethereum/les/vflux/server/service.go:109.2,110.20 2 0 +github.com/ethereum/go-ethereum/les/vflux/server/service.go:113.2,114.12 2 0 +github.com/ethereum/go-ethereum/les/vflux/server/service.go:106.56,108.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/service.go:110.20,112.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/service.go:118.25,120.2 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/status.go:48.36,59.2 10 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:52.79,54.2 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:122.54,124.2 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:127.54,129.2 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:134.115,139.9 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:144.2,145.76 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:152.2,153.9 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:158.2,158.41 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:139.9,141.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:141.8,143.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:145.76,146.13 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:149.3,150.22 2 0 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:146.13,148.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:153.9,155.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:155.8,157.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:163.78,164.42 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:167.2,172.12 6 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:164.42,166.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:184.53,191.2 5 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:195.80,202.2 5 0 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:209.72,218.41 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:227.2,227.16 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:231.2,231.31 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:234.2,234.16 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:241.2,241.22 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:218.41,220.82 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:223.3,225.14 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:220.82,222.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:227.16,229.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:231.31,233.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:234.16,235.18 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:239.3,239.27 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:235.18,237.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:246.57,253.41 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:263.2,263.31 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:266.2,266.16 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:273.2,273.12 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:253.41,255.59 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:258.3,260.14 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:255.59,257.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:263.31,265.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:266.16,267.18 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:271.3,271.27 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:267.18,269.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:277.70,286.29 4 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:302.2,302.49 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:306.2,309.11 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:312.2,314.22 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:321.2,321.8 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:286.29,288.19 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:288.19,291.4 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:291.9,294.22 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:299.4,299.16 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:294.22,296.5 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:296.10,298.5 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:302.49,305.3 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:309.11,311.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:314.22,315.28 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:315.28,316.33 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:316.33,318.5 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:325.55,332.2 5 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:339.122,347.21 6 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:350.2,350.16 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:358.2,358.14 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:361.2,367.20 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:370.2,370.12 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:373.2,373.12 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:347.21,349.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:350.16,353.23 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:356.3,356.61 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:353.23,355.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:358.14,360.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:367.20,369.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:370.12,372.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:378.74,385.22 7 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:385.22,386.28 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:386.28,387.33 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:387.33,389.5 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:395.77,400.2 3 0 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:403.34,404.41 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:404.41,405.15 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:408.3,410.14 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:405.15,407.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:415.36,416.41 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:416.41,417.16 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:420.3,421.27 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:425.3,427.14 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:417.16,419.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:421.27,424.4 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:432.57,433.36 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:433.36,436.3 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:440.51,441.9 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:444.2,444.9 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:441.9,443.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:444.9,446.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:454.77,457.70 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:460.2,460.46 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:464.2,469.22 6 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:457.70,459.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:460.46,463.3 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:474.51,476.15 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:479.2,480.43 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:484.2,485.13 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:476.15,478.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:480.43,483.3 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:491.79,492.45 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:495.2,496.78 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:501.2,502.8 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:492.45,494.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:496.78,500.3 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:507.57,508.26 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:508.26,510.10 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:515.3,515.64 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:510.10,514.4 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:515.64,516.23 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:523.4,524.20 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:516.23,522.5 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:526.8,529.3 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:533.53,534.50 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:534.50,535.14 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:535.14,537.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:537.9,538.52 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:538.52,541.29 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:546.5,547.25 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:541.29,545.6 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:547.25,548.31 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:548.31,549.36 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:549.36,551.8 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:561.42,566.16 5 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:566.16,568.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:574.50,575.47 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:580.2,580.14 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:575.47,577.48 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:578.3,578.14 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:577.48,577.72 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:585.46,588.2 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:593.52,600.31 7 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:600.31,602.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:608.95,610.13 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:613.2,613.32 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:610.13,612.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:619.91,620.18 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:623.2,623.29 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:620.18,622.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:628.134,635.21 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:645.2,645.13 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:649.2,649.10 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:635.21,639.18 4 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:639.18,641.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:641.9,643.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:645.13,648.3 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:658.71,665.13 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:684.2,685.21 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:692.2,692.38 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:665.13,667.25 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:670.3,670.20 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:667.25,669.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:670.20,671.23 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:674.4,675.40 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:671.23,673.5 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:676.9,678.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:679.8,680.20 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:680.20,682.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:685.21,687.25 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:690.3,690.49 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance.go:687.25,689.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:62.171,80.82 6 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:85.2,85.122 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:103.2,103.120 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:125.2,127.12 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:138.2,138.11 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:80.82,83.3 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:85.122,87.15 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:91.3,93.25 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:96.3,96.14 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:99.3,99.25 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:87.15,89.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:93.25,95.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:96.14,98.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:99.25,101.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:103.120,107.22 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:107.22,113.4 5 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:113.9,115.81 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:118.4,118.52 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:115.81,117.5 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:127.12,128.7 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:128.7,129.11 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:130.49,132.71 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:133.19,134.11 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:142.34,146.100 4 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:154.2,154.16 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:146.100,147.78 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:147.78,152.4 4 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:158.53,162.52 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:172.2,174.57 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:162.52,164.101 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:170.3,170.14 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:164.101,165.91 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:165.91,168.5 2 0 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:178.100,180.2 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:183.82,188.2 4 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:192.61,198.13 5 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:203.2,203.13 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:198.13,200.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:200.8,202.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:203.13,205.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:205.8,207.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:212.64,217.2 3 0 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:221.109,222.25 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:222.25,224.45 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:227.3,227.16 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:231.3,231.9 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:224.45,226.4 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:227.16,230.4 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:239.108,251.33 4 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:254.2,254.41 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:257.2,257.10 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:251.33,253.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:254.41,256.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:261.87,262.51 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:262.51,264.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:264.8,266.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:271.99,272.9 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:275.2,275.58 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:272.9,274.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:279.84,287.17 6 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:290.2,290.12 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:295.2,295.14 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:287.17,289.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:290.12,292.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:292.8,294.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:295.14,297.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:297.8,299.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:69.68,81.2 5 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:83.27,85.2 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:87.46,89.9 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:92.2,92.40 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:89.9,91.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:95.51,97.9 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:100.2,100.57 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:103.2,106.55 4 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:97.9,99.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:100.57,102.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:109.66,111.35 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:114.2,114.109 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:111.35,113.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:117.57,122.2 4 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:124.75,127.11 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:130.2,132.33 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:135.2,135.49 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:138.2,139.10 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:127.11,129.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:132.33,134.3 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:135.49,137.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:142.73,145.16 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:148.2,149.30 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:145.16,147.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:152.51,156.2 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:160.92,161.19 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:164.2,170.16 5 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:184.2,184.8 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:161.19,163.3 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:170.16,172.30 2 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:175.3,176.51 2 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:179.3,180.30 2 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:172.30,174.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:176.51,178.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:180.30,182.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:188.105,195.16 5 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:195.16,197.30 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:200.3,203.57 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:206.3,206.23 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:197.30,199.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:203.57,204.12 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:206.23,208.4 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:212.29,213.6 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:213.6,214.10 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:215.41,216.20 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:217.21,218.10 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:225.33,231.42 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:246.2,246.27 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:249.2,249.120 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:231.42,233.19 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:233.19,236.66 3 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:239.4,239.81 1 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:236.66,238.5 1 0 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:239.81,242.5 2 1 +github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:246.27,248.3 1 1 +github.com/ethereum/go-ethereum/mobile/params.go:31.30,33.2 1 0 +github.com/ethereum/go-ethereum/mobile/params.go:36.30,38.16 2 0 +github.com/ethereum/go-ethereum/mobile/params.go:41.2,41.20 1 0 +github.com/ethereum/go-ethereum/mobile/params.go:38.16,39.13 1 0 +github.com/ethereum/go-ethereum/mobile/params.go:45.30,47.16 2 0 +github.com/ethereum/go-ethereum/mobile/params.go:50.2,50.20 1 0 +github.com/ethereum/go-ethereum/mobile/params.go:47.16,48.13 1 0 +github.com/ethereum/go-ethereum/mobile/params.go:54.30,56.16 2 0 +github.com/ethereum/go-ethereum/mobile/params.go:59.2,59.20 1 0 +github.com/ethereum/go-ethereum/mobile/params.go:56.16,57.13 1 0 +github.com/ethereum/go-ethereum/mobile/params.go:63.29,65.16 2 0 +github.com/ethereum/go-ethereum/mobile/params.go:68.2,68.20 1 0 +github.com/ethereum/go-ethereum/mobile/params.go:65.16,66.13 1 0 +github.com/ethereum/go-ethereum/mobile/params.go:72.29,74.16 2 0 +github.com/ethereum/go-ethereum/mobile/params.go:77.2,77.20 1 0 +github.com/ethereum/go-ethereum/mobile/params.go:74.16,75.13 1 0 +github.com/ethereum/go-ethereum/mobile/params.go:81.33,83.16 2 0 +github.com/ethereum/go-ethereum/mobile/params.go:86.2,86.20 1 0 +github.com/ethereum/go-ethereum/mobile/params.go:83.16,84.13 1 0 +github.com/ethereum/go-ethereum/mobile/params.go:91.36,93.46 2 1 +github.com/ethereum/go-ethereum/mobile/params.go:100.2,100.14 1 1 +github.com/ethereum/go-ethereum/mobile/params.go:93.46,96.17 3 1 +github.com/ethereum/go-ethereum/mobile/params.go:96.17,97.45 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:37.48,39.16 2 0 +github.com/ethereum/go-ethereum/mobile/types.go:42.2,42.12 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:39.16,41.3 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:52.35,54.2 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:57.33,59.2 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:62.33,64.2 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:72.35,74.2 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:77.33,79.2 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:82.33,84.2 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:92.53,96.74 2 0 +github.com/ethereum/go-ethereum/mobile/types.go:99.2,99.15 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:96.74,98.3 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:103.46,105.2 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:108.54,112.63 2 0 +github.com/ethereum/go-ethereum/mobile/types.go:115.2,115.15 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:112.63,114.3 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:119.47,122.2 2 0 +github.com/ethereum/go-ethereum/mobile/types.go:125.34,127.2 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:129.42,129.79 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:130.42,130.78 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:131.42,131.80 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:132.42,132.73 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:133.42,133.75 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:134.42,134.80 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:135.42,135.75 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:136.42,136.81 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:137.42,137.76 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:138.42,138.77 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:139.42,139.76 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:140.42,140.73 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:141.42,141.67 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:142.42,142.78 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:143.42,143.75 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:144.42,144.75 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:150.30,152.2 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:155.60,156.42 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:159.2,159.39 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:156.42,158.3 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:168.51,172.73 2 0 +github.com/ethereum/go-ethereum/mobile/types.go:175.2,175.15 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:172.73,174.3 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:179.45,181.2 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:184.52,188.62 2 0 +github.com/ethereum/go-ethereum/mobile/types.go:191.2,191.15 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:188.62,190.3 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:195.46,198.2 2 0 +github.com/ethereum/go-ethereum/mobile/types.go:201.33,203.2 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:205.49,205.87 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:206.49,206.86 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:207.49,207.88 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:208.49,208.81 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:209.49,209.83 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:210.49,210.88 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:211.49,211.83 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:212.49,212.89 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:213.49,213.84 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:214.49,214.85 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:215.49,215.84 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:216.49,216.81 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:217.49,217.75 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:218.49,218.86 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:219.49,219.82 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:220.49,220.81 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:221.49,221.85 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:222.49,222.86 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:223.49,223.97 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:224.57,226.2 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:235.115,237.2 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:241.123,242.15 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:245.2,245.144 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:242.15,244.3 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:249.63,253.71 2 0 +github.com/ethereum/go-ethereum/mobile/types.go:256.2,256.16 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:253.71,255.3 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:260.52,262.2 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:265.64,269.60 2 0 +github.com/ethereum/go-ethereum/mobile/types.go:272.2,272.16 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:269.60,271.3 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:276.53,279.2 2 0 +github.com/ethereum/go-ethereum/mobile/types.go:282.40,284.2 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:286.46,286.69 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:287.46,287.75 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:288.46,288.82 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:289.46,289.79 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:290.46,290.77 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:292.42,292.72 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:293.42,293.74 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:295.41,296.33 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:299.2,299.12 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:296.33,298.3 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:302.100,304.20 2 0 +github.com/ethereum/go-ethereum/mobile/types.go:307.2,308.33 2 0 +github.com/ethereum/go-ethereum/mobile/types.go:304.20,306.3 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:315.37,317.2 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:320.68,321.40 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:324.2,324.42 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:321.40,323.3 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:333.55,337.75 2 0 +github.com/ethereum/go-ethereum/mobile/types.go:340.2,340.15 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:337.75,339.3 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:344.47,346.2 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:349.56,353.64 2 0 +github.com/ethereum/go-ethereum/mobile/types.go:356.2,356.15 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:353.64,355.3 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:360.48,363.2 2 0 +github.com/ethereum/go-ethereum/mobile/types.go:366.35,368.2 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:370.49,370.81 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:371.49,371.79 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:372.49,372.94 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:373.49,373.83 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:374.49,374.81 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:375.49,375.83 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:376.49,376.95 1 0 +github.com/ethereum/go-ethereum/mobile/types.go:377.49,377.84 1 0 +github.com/ethereum/go-ethereum/mobile/big.go:34.33,36.2 1 1 +github.com/ethereum/go-ethereum/mobile/big.go:40.54,42.14 2 0 +github.com/ethereum/go-ethereum/mobile/big.go:45.2,45.19 1 0 +github.com/ethereum/go-ethereum/mobile/big.go:42.14,44.3 1 0 +github.com/ethereum/go-ethereum/mobile/big.go:49.37,51.2 1 0 +github.com/ethereum/go-ethereum/mobile/big.go:54.35,56.2 1 0 +github.com/ethereum/go-ethereum/mobile/big.go:60.36,62.2 1 0 +github.com/ethereum/go-ethereum/mobile/big.go:66.40,68.2 1 0 +github.com/ethereum/go-ethereum/mobile/big.go:71.37,73.2 1 0 +github.com/ethereum/go-ethereum/mobile/big.go:81.30,83.2 1 0 +github.com/ethereum/go-ethereum/mobile/big.go:90.49,92.2 1 0 +github.com/ethereum/go-ethereum/mobile/big.go:98.36,102.2 1 1 +github.com/ethereum/go-ethereum/mobile/big.go:105.31,107.2 1 1 +github.com/ethereum/go-ethereum/mobile/big.go:110.61,111.43 1 0 +github.com/ethereum/go-ethereum/mobile/big.go:114.2,114.40 1 0 +github.com/ethereum/go-ethereum/mobile/big.go:111.43,113.3 1 0 +github.com/ethereum/go-ethereum/mobile/big.go:118.57,119.43 1 1 +github.com/ethereum/go-ethereum/mobile/big.go:122.2,123.12 2 1 +github.com/ethereum/go-ethereum/mobile/big.go:119.43,121.3 1 0 +github.com/ethereum/go-ethereum/mobile/big.go:127.46,129.2 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:37.60,39.61 2 0 +github.com/ethereum/go-ethereum/mobile/common.go:42.2,42.15 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:39.61,41.3 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:46.55,48.38 2 0 +github.com/ethereum/go-ethereum/mobile/common.go:51.2,51.15 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:48.38,50.3 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:55.44,56.54 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:59.2,60.12 2 0 +github.com/ethereum/go-ethereum/mobile/common.go:56.54,58.3 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:64.34,66.2 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:69.42,71.40 2 0 +github.com/ethereum/go-ethereum/mobile/common.go:74.2,74.56 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:77.2,78.16 2 0 +github.com/ethereum/go-ethereum/mobile/common.go:81.2,82.12 2 0 +github.com/ethereum/go-ethereum/mobile/common.go:71.40,73.3 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:74.56,76.3 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:78.16,80.3 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:86.32,88.2 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:91.32,93.2 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:99.34,103.2 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:106.31,108.2 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:111.29,113.2 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:116.55,117.41 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:120.2,120.36 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:117.41,119.3 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:124.51,125.41 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:128.2,129.12 2 0 +github.com/ethereum/go-ethereum/mobile/common.go:125.41,127.3 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:133.37,135.2 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:143.69,145.61 2 0 +github.com/ethereum/go-ethereum/mobile/common.go:148.2,148.15 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:145.61,147.3 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:152.64,154.38 2 0 +github.com/ethereum/go-ethereum/mobile/common.go:157.2,157.15 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:154.38,156.3 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:161.50,162.60 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:165.2,166.12 2 0 +github.com/ethereum/go-ethereum/mobile/common.go:162.60,164.3 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:170.37,172.2 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:175.48,177.46 2 0 +github.com/ethereum/go-ethereum/mobile/common.go:180.2,180.62 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:183.2,184.16 2 0 +github.com/ethereum/go-ethereum/mobile/common.go:187.2,188.12 2 0 +github.com/ethereum/go-ethereum/mobile/common.go:177.46,179.3 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:180.62,182.3 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:184.16,186.3 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:192.35,194.2 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:197.35,199.2 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:205.40,209.2 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:212.37,214.2 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:217.32,219.2 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:222.64,223.44 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:226.2,226.42 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:223.44,225.3 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:230.60,231.44 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:234.2,235.12 2 0 +github.com/ethereum/go-ethereum/mobile/common.go:231.44,233.3 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:239.46,241.2 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:244.35,246.2 1 0 +github.com/ethereum/go-ethereum/mobile/common.go:249.46,251.2 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:88.34,91.2 2 0 +github.com/ethereum/go-ethereum/mobile/geth.go:94.55,96.2 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:99.54,102.2 2 0 +github.com/ethereum/go-ethereum/mobile/geth.go:105.41,107.2 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:115.73,117.19 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:120.2,120.26 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:123.2,123.71 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:127.2,127.31 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:132.2,148.16 3 0 +github.com/ethereum/go-ethereum/mobile/geth.go:152.2,155.34 3 0 +github.com/ethereum/go-ethereum/mobile/geth.go:205.2,205.28 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:222.2,222.29 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:117.19,119.3 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:120.26,122.3 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:123.71,125.3 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:127.31,129.3 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:148.16,150.3 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:155.34,158.81 2 0 +github.com/ethereum/go-ethereum/mobile/geth.go:162.3,162.49 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:169.3,169.49 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:176.3,176.49 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:183.3,183.48 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:190.3,190.52 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:197.3,197.48 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:158.81,160.4 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:162.49,164.37 2 0 +github.com/ethereum/go-ethereum/mobile/geth.go:164.37,166.5 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:169.49,171.37 2 0 +github.com/ethereum/go-ethereum/mobile/geth.go:171.37,173.5 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:176.49,178.37 2 0 +github.com/ethereum/go-ethereum/mobile/geth.go:178.37,180.5 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:183.48,185.37 2 0 +github.com/ethereum/go-ethereum/mobile/geth.go:185.37,187.5 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:190.52,192.37 2 0 +github.com/ethereum/go-ethereum/mobile/geth.go:192.37,194.5 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:197.48,199.37 2 0 +github.com/ethereum/go-ethereum/mobile/geth.go:199.37,201.5 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:205.28,212.17 7 0 +github.com/ethereum/go-ethereum/mobile/geth.go:216.3,216.36 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:212.17,214.4 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:216.36,217.118 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:217.118,219.5 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:227.30,229.2 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:232.30,235.2 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:238.70,240.16 2 0 +github.com/ethereum/go-ethereum/mobile/geth.go:243.2,243.55 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:240.16,242.3 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:247.40,249.2 1 0 +github.com/ethereum/go-ethereum/mobile/geth.go:252.42,254.2 1 0 +github.com/ethereum/go-ethereum/mobile/logger.go:26.30,28.2 1 0 +github.com/ethereum/go-ethereum/mobile/p2p.go:32.49,32.70 1 0 +github.com/ethereum/go-ethereum/mobile/p2p.go:33.49,33.72 1 0 +github.com/ethereum/go-ethereum/mobile/p2p.go:34.49,34.73 1 0 +github.com/ethereum/go-ethereum/mobile/p2p.go:35.49,35.70 1 0 +github.com/ethereum/go-ethereum/mobile/p2p.go:36.49,36.83 1 0 +github.com/ethereum/go-ethereum/mobile/p2p.go:37.49,37.82 1 0 +github.com/ethereum/go-ethereum/mobile/p2p.go:38.49,38.78 1 0 +github.com/ethereum/go-ethereum/mobile/p2p.go:39.45,41.39 2 0 +github.com/ethereum/go-ethereum/mobile/p2p.go:44.2,44.25 1 0 +github.com/ethereum/go-ethereum/mobile/p2p.go:41.39,43.3 1 0 +github.com/ethereum/go-ethereum/mobile/p2p.go:52.47,52.68 1 0 +github.com/ethereum/go-ethereum/mobile/p2p.go:53.47,53.70 1 0 +github.com/ethereum/go-ethereum/mobile/p2p.go:54.47,54.80 1 0 +github.com/ethereum/go-ethereum/mobile/p2p.go:55.47,55.86 1 0 +github.com/ethereum/go-ethereum/mobile/p2p.go:56.47,56.87 1 0 +github.com/ethereum/go-ethereum/mobile/p2p.go:64.33,66.2 1 0 +github.com/ethereum/go-ethereum/mobile/p2p.go:69.63,70.41 1 0 +github.com/ethereum/go-ethereum/mobile/p2p.go:73.2,73.40 1 0 +github.com/ethereum/go-ethereum/mobile/p2p.go:70.41,72.3 1 0 +github.com/ethereum/go-ethereum/mobile/context.go:37.28,41.2 1 0 +github.com/ethereum/go-ethereum/mobile/context.go:48.41,54.2 2 0 +github.com/ethereum/go-ethereum/mobile/context.go:61.64,67.2 2 0 +github.com/ethereum/go-ethereum/mobile/context.go:74.52,80.2 2 0 +github.com/ethereum/go-ethereum/mobile/discover.go:56.46,58.16 2 0 +github.com/ethereum/go-ethereum/mobile/discover.go:61.2,61.26 1 0 +github.com/ethereum/go-ethereum/mobile/discover.go:58.16,60.3 1 0 +github.com/ethereum/go-ethereum/mobile/discover.go:68.34,72.2 1 0 +github.com/ethereum/go-ethereum/mobile/discover.go:75.31,77.2 1 0 +github.com/ethereum/go-ethereum/mobile/discover.go:80.29,82.2 1 0 +github.com/ethereum/go-ethereum/mobile/discover.go:85.57,86.40 1 0 +github.com/ethereum/go-ethereum/mobile/discover.go:89.2,89.36 1 0 +github.com/ethereum/go-ethereum/mobile/discover.go:86.40,88.3 1 0 +github.com/ethereum/go-ethereum/mobile/discover.go:93.53,94.40 1 0 +github.com/ethereum/go-ethereum/mobile/discover.go:97.2,98.12 2 0 +github.com/ethereum/go-ethereum/mobile/discover.go:94.40,96.3 1 0 +github.com/ethereum/go-ethereum/mobile/discover.go:102.39,104.2 1 0 +github.com/ethereum/go-ethereum/mobile/init.go:28.13,34.2 2 1 +github.com/ethereum/go-ethereum/mobile/ethclient.go:34.73,37.2 2 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:40.92,43.2 2 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:47.96,48.16 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:52.2,53.30 2 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:48.16,51.3 2 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:57.95,60.2 2 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:64.99,65.16 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:69.2,70.32 2 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:65.16,68.3 2 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:74.101,78.2 2 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:82.134,85.2 2 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:88.94,91.2 2 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:94.113,98.2 2 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:102.103,105.2 2 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:109.88,111.24 2 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:114.2,114.41 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:111.24,113.3 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:126.123,130.16 3 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:134.2,134.12 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:148.2,148.35 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:130.16,132.3 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:134.12,135.7 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:135.7,136.11 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:137.24,138.39 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:140.31,141.19 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:144.5,144.11 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:141.19,143.6 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:155.113,156.16 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:160.2,161.33 2 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:156.16,159.3 2 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:166.123,167.16 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:170.2,170.88 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:167.16,169.3 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:175.106,176.16 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:179.2,179.75 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:176.16,178.3 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:184.107,185.16 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:189.2,190.29 2 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:185.16,188.3 2 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:196.94,198.16 2 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:202.2,203.25 2 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:206.2,206.24 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:198.16,200.3 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:203.25,205.3 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:217.149,221.16 3 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:225.2,225.12 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:239.2,239.35 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:221.16,223.3 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:225.12,226.7 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:226.7,227.11 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:228.21,229.37 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:231.31,232.19 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:235.5,235.11 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:232.19,234.6 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:245.106,248.2 2 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:251.116,253.2 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:256.99,258.2 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:262.100,265.2 2 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:268.89,271.2 2 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:281.107,282.16 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:285.2,285.73 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:282.16,284.3 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:290.100,292.2 1 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:296.82,299.2 2 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:305.88,308.2 2 0 +github.com/ethereum/go-ethereum/mobile/ethclient.go:314.80,316.2 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:36.38,38.2 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:46.28,48.2 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:50.43,50.76 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:51.43,51.72 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:52.43,52.79 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:53.43,53.76 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:54.43,54.66 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:55.38,56.33 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:59.2,59.12 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:56.33,58.3 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:62.48,62.82 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:63.48,63.77 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:64.48,64.83 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:65.48,65.80 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:66.48,66.89 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:67.45,68.20 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:72.2,72.31 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:68.20,71.3 2 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:81.55,81.97 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:82.55,82.96 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:83.55,83.96 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:84.55,84.98 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:85.55,85.102 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:86.55,86.99 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:87.55,87.103 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:88.55,88.97 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:89.55,89.102 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:90.55,90.99 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:91.55,91.103 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:92.55,92.99 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:93.55,93.103 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:94.55,94.100 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:95.55,95.99 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:101.34,105.2 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:108.31,110.2 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:113.29,115.2 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:118.59,119.41 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:122.2,122.38 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:119.41,121.3 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:126.55,127.41 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:130.2,131.12 2 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:127.41,129.3 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:135.41,137.2 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:145.36,147.2 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:149.50,149.88 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:150.50,150.86 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:151.50,151.91 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:152.50,152.85 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:154.59,154.100 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:155.59,155.96 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:156.59,156.103 1 0 +github.com/ethereum/go-ethereum/mobile/ethereum.go:157.59,157.94 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:41.32,43.2 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:45.53,45.70 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:46.53,46.77 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:47.53,47.72 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:48.53,48.78 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:49.53,49.101 2 1 +github.com/ethereum/go-ethereum/mobile/interface.go:50.53,50.86 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:51.53,51.84 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:52.53,52.84 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:53.53,53.78 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:54.53,54.82 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:55.53,55.70 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:56.53,56.70 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:57.53,57.70 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:58.53,58.70 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:59.48,61.37 2 1 +github.com/ethereum/go-ethereum/mobile/interface.go:64.2,64.18 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:61.37,63.3 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:66.49,68.37 2 1 +github.com/ethereum/go-ethereum/mobile/interface.go:71.2,71.18 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:68.37,70.3 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:73.49,75.37 2 1 +github.com/ethereum/go-ethereum/mobile/interface.go:78.2,78.18 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:75.37,77.3 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:80.49,82.37 2 1 +github.com/ethereum/go-ethereum/mobile/interface.go:85.2,85.18 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:82.37,84.3 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:87.47,87.100 2 1 +github.com/ethereum/go-ethereum/mobile/interface.go:88.47,88.101 2 1 +github.com/ethereum/go-ethereum/mobile/interface.go:89.47,89.101 2 1 +github.com/ethereum/go-ethereum/mobile/interface.go:90.47,90.93 2 1 +github.com/ethereum/go-ethereum/mobile/interface.go:91.49,93.37 2 1 +github.com/ethereum/go-ethereum/mobile/interface.go:96.2,96.18 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:93.37,95.3 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:98.50,100.37 2 1 +github.com/ethereum/go-ethereum/mobile/interface.go:103.2,103.18 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:100.37,102.3 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:105.50,107.37 2 1 +github.com/ethereum/go-ethereum/mobile/interface.go:110.2,110.18 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:107.37,109.3 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:112.50,114.37 2 1 +github.com/ethereum/go-ethereum/mobile/interface.go:117.2,117.18 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:114.37,116.3 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:119.50,119.79 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:120.50,120.81 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:122.43,122.67 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:123.43,123.69 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:124.43,124.69 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:125.43,125.71 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:126.43,126.69 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:127.43,127.71 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:128.43,128.77 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:129.43,129.79 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:130.43,130.74 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:131.43,131.76 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:132.43,132.67 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:133.43,133.69 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:134.43,134.68 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:135.43,135.70 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:136.43,136.68 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:137.43,137.70 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:138.43,138.68 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:139.43,139.70 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:140.43,140.68 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:141.43,141.70 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:142.43,142.69 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:143.43,143.71 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:144.43,144.69 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:145.43,145.71 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:146.43,146.69 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:147.43,147.71 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:148.43,148.71 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:149.43,149.73 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:151.47,151.75 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:152.47,152.85 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:153.47,153.77 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:154.47,154.89 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:155.47,155.77 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:156.47,156.90 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:157.47,157.95 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:158.47,158.99 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:159.47,159.89 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:160.47,160.93 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:161.47,161.75 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:162.47,162.76 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:163.47,163.76 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:164.47,164.76 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:165.41,168.25 3 1 +github.com/ethereum/go-ethereum/mobile/interface.go:171.2,171.16 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:168.25,170.3 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:173.42,176.25 3 1 +github.com/ethereum/go-ethereum/mobile/interface.go:179.2,179.16 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:176.25,178.3 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:181.42,184.25 3 1 +github.com/ethereum/go-ethereum/mobile/interface.go:187.2,187.16 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:184.25,186.3 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:189.42,192.25 3 1 +github.com/ethereum/go-ethereum/mobile/interface.go:195.2,195.16 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:192.25,194.3 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:197.40,199.2 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:200.41,202.2 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:203.41,205.2 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:206.41,208.2 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:209.42,212.25 3 1 +github.com/ethereum/go-ethereum/mobile/interface.go:215.2,215.16 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:212.25,214.3 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:217.43,220.25 3 1 +github.com/ethereum/go-ethereum/mobile/interface.go:223.2,223.16 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:220.25,222.3 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:225.43,228.25 3 1 +github.com/ethereum/go-ethereum/mobile/interface.go:231.2,231.16 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:228.25,230.3 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:233.43,236.25 3 1 +github.com/ethereum/go-ethereum/mobile/interface.go:239.2,239.16 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:236.25,238.3 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:241.43,241.84 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:242.43,242.87 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:250.42,252.2 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:255.33,257.2 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:262.65,263.42 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:266.2,266.50 1 1 +github.com/ethereum/go-ethereum/mobile/interface.go:263.42,265.3 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:270.62,271.42 1 0 +github.com/ethereum/go-ethereum/mobile/interface.go:274.2,275.12 2 0 +github.com/ethereum/go-ethereum/mobile/interface.go:271.42,273.3 1 0 +github.com/ethereum/go-ethereum/mobile/vm.go:33.38,33.72 1 0 +github.com/ethereum/go-ethereum/mobile/vm.go:34.38,34.70 1 0 +github.com/ethereum/go-ethereum/mobile/vm.go:35.38,35.59 1 0 +github.com/ethereum/go-ethereum/mobile/vm.go:36.38,36.73 1 0 +github.com/ethereum/go-ethereum/mobile/vm.go:37.38,37.68 1 0 +github.com/ethereum/go-ethereum/mobile/vm.go:38.38,38.67 1 0 +github.com/ethereum/go-ethereum/mobile/vm.go:39.38,39.71 1 0 +github.com/ethereum/go-ethereum/mobile/vm.go:40.38,40.65 1 0 +github.com/ethereum/go-ethereum/mobile/vm.go:46.27,48.2 1 0 +github.com/ethereum/go-ethereum/mobile/vm.go:51.51,52.39 1 0 +github.com/ethereum/go-ethereum/mobile/vm.go:55.2,55.33 1 0 +github.com/ethereum/go-ethereum/mobile/vm.go:52.39,54.3 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:57.31,59.2 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:62.63,63.43 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:66.2,66.41 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:63.43,65.3 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:70.59,71.43 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:74.2,75.12 2 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:71.43,73.3 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:79.41,81.2 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:84.35,86.2 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:92.65,94.2 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:97.55,99.2 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:102.45,104.2 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:108.78,110.2 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:114.89,116.2 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:119.102,120.20 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:123.2,124.16 2 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:127.2,127.34 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:120.20,122.3 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:124.16,126.3 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:133.118,135.2 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:139.131,140.20 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:143.2,144.16 2 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:147.2,147.34 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:140.20,142.3 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:144.16,146.3 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:151.71,153.2 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:156.50,158.2 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:167.91,169.2 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:173.69,175.16 2 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:178.2,178.31 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:175.16,177.3 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:182.93,184.2 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:187.105,189.2 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:192.109,194.16 2 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:197.2,197.27 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:194.16,196.3 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:201.95,203.16 2 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:206.2,207.16 2 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:210.2,210.27 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:203.16,205.3 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:207.16,209.3 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:215.100,217.16 2 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:220.2,220.31 1 0 +github.com/ethereum/go-ethereum/mobile/accounts.go:217.16,219.3 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:42.102,44.16 2 0 +github.com/ethereum/go-ethereum/mobile/bind.go:47.2,47.31 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:44.16,46.3 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:56.30,58.2 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:60.43,60.71 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:61.43,61.76 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:67.52,67.83 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:68.53,68.76 0 0 +github.com/ethereum/go-ethereum/mobile/bind.go:69.52,69.91 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:70.52,70.85 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:79.38,81.2 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:85.103,87.16 2 0 +github.com/ethereum/go-ethereum/mobile/bind.go:90.2,91.16 2 0 +github.com/ethereum/go-ethereum/mobile/bind.go:94.2,94.34 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:87.16,89.3 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:91.16,93.3 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:97.49,97.84 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:98.49,98.83 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:99.49,99.84 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:100.49,100.87 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:101.49,101.85 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:110.50,110.83 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:111.50,111.89 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:112.47,113.98 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:113.98,115.17 2 0 +github.com/ethereum/go-ethereum/mobile/bind.go:118.3,118.21 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:115.17,117.4 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:121.56,121.90 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:122.56,122.93 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:123.56,123.94 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:124.56,124.95 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:137.151,140.16 2 0 +github.com/ethereum/go-ethereum/mobile/bind.go:143.2,144.16 2 0 +github.com/ethereum/go-ethereum/mobile/bind.go:147.2,151.8 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:140.16,142.3 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:144.16,146.3 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:156.112,158.16 2 0 +github.com/ethereum/go-ethereum/mobile/bind.go:161.2,164.8 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:158.16,160.3 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:167.47,167.77 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:168.52,169.23 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:172.2,172.33 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:169.23,171.3 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:177.102,180.87 3 0 +github.com/ethereum/go-ethereum/mobile/bind.go:183.2,184.12 2 0 +github.com/ethereum/go-ethereum/mobile/bind.go:180.87,182.3 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:188.114,190.16 2 0 +github.com/ethereum/go-ethereum/mobile/bind.go:193.2,193.33 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:190.16,192.3 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:197.101,199.16 2 0 +github.com/ethereum/go-ethereum/mobile/bind.go:202.2,202.33 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:199.16,201.3 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:207.81,209.16 2 0 +github.com/ethereum/go-ethereum/mobile/bind.go:212.2,212.33 1 0 +github.com/ethereum/go-ethereum/mobile/bind.go:209.16,211.3 1 0 +github.com/ethereum/go-ethereum/mobile/primitives.go:32.30,34.2 1 0 +github.com/ethereum/go-ethereum/mobile/primitives.go:37.56,38.39 1 0 +github.com/ethereum/go-ethereum/mobile/primitives.go:41.2,41.27 1 0 +github.com/ethereum/go-ethereum/mobile/primitives.go:38.39,40.3 1 0 +github.com/ethereum/go-ethereum/mobile/primitives.go:45.52,46.39 1 0 +github.com/ethereum/go-ethereum/mobile/primitives.go:49.2,50.12 2 0 +github.com/ethereum/go-ethereum/mobile/primitives.go:46.39,48.3 1 0 +github.com/ethereum/go-ethereum/mobile/primitives.go:54.35,56.2 1 0 +github.com/ethereum/go-ethereum/mobile/primitives.go:62.29,64.2 1 0 +github.com/ethereum/go-ethereum/mobile/primitives.go:67.51,68.41 1 0 +github.com/ethereum/go-ethereum/mobile/primitives.go:71.2,71.29 1 0 +github.com/ethereum/go-ethereum/mobile/primitives.go:68.41,70.3 1 0 +github.com/ethereum/go-ethereum/mobile/primitives.go:75.47,76.41 1 0 +github.com/ethereum/go-ethereum/mobile/primitives.go:79.2,80.12 2 0 +github.com/ethereum/go-ethereum/mobile/primitives.go:76.41,78.3 1 0 +github.com/ethereum/go-ethereum/mobile/primitives.go:84.34,86.2 1 0 +github.com/ethereum/go-ethereum/mobile/primitives.go:92.32,94.2 1 0 +github.com/ethereum/go-ethereum/mobile/primitives.go:97.61,98.44 1 0 +github.com/ethereum/go-ethereum/mobile/primitives.go:101.2,101.50 1 0 +github.com/ethereum/go-ethereum/mobile/primitives.go:98.44,100.3 1 0 +github.com/ethereum/go-ethereum/mobile/primitives.go:105.57,106.44 1 0 +github.com/ethereum/go-ethereum/mobile/primitives.go:109.2,110.12 2 0 +github.com/ethereum/go-ethereum/mobile/primitives.go:106.44,108.3 1 0 +github.com/ethereum/go-ethereum/mobile/primitives.go:114.37,116.2 1 0 +github.com/ethereum/go-ethereum/node/rpcstack.go:85.75,91.2 4 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:95.65,99.61 3 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:103.2,105.12 3 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:99.61,101.3 1 0 +github.com/ethereum/go-ethereum/node/rpcstack.go:109.42,113.23 3 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:116.2,116.19 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:113.23,115.3 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:120.36,124.43 3 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:129.2,130.40 2 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:138.2,139.16 2 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:146.2,149.19 3 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:157.2,157.21 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:161.2,170.35 3 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:173.2,175.29 3 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:182.2,182.12 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:124.43,126.3 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:130.40,135.3 4 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:139.16,145.3 3 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:149.19,151.30 2 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:154.3,154.46 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:151.30,153.4 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:157.21,159.3 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:170.35,172.3 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:175.29,177.20 2 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:177.20,180.4 2 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:185.72,188.33 2 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:195.2,196.16 2 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:212.2,212.36 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:188.33,189.38 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:192.3,192.9 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:189.38,191.4 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:196.16,202.20 2 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:207.3,207.40 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:202.20,205.4 2 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:207.40,210.4 2 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:216.51,218.16 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:222.2,222.71 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:218.16,220.3 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:226.46,227.16 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:230.2,230.20 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:233.2,233.37 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:239.2,239.12 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:227.16,229.3 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:230.20,232.3 1 0 +github.com/ethereum/go-ethereum/node/rpcstack.go:233.37,238.3 1 0 +github.com/ethereum/go-ethereum/node/rpcstack.go:243.29,247.2 3 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:249.31,250.23 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:255.2,257.24 3 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:261.2,261.22 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:265.2,271.33 5 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:250.23,252.3 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:257.24,260.3 2 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:261.22,264.3 2 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:275.73,279.20 3 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:284.2,285.71 2 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:288.2,293.12 3 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:279.20,281.3 1 0 +github.com/ethereum/go-ethereum/node/rpcstack.go:285.71,287.3 1 0 +github.com/ethereum/go-ethereum/node/rpcstack.go:297.40,299.20 2 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:303.2,303.23 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:299.20,302.3 2 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:307.70,311.19 3 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:315.2,316.71 2 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:319.2,324.12 3 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:311.19,313.3 1 0 +github.com/ethereum/go-ethereum/node/rpcstack.go:316.71,318.3 1 0 +github.com/ethereum/go-ethereum/node/rpcstack.go:328.31,332.19 3 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:332.19,333.22 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:333.22,335.4 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:340.39,342.15 2 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:346.2,346.18 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:342.15,345.3 2 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:350.40,352.2 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:355.39,357.2 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:360.40,363.2 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:366.107,370.25 3 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:373.2,373.32 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:370.25,372.3 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:377.73,378.25 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:381.2,381.12 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:378.25,380.3 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:384.77,386.30 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:389.2,395.23 2 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:386.30,388.3 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:407.71,409.37 2 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:412.2,412.44 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:409.37,411.3 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:416.80,418.18 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:422.2,423.16 2 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:427.2,427.48 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:434.2,434.38 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:438.2,438.39 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:442.2,442.63 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:418.18,421.3 2 0 +github.com/ethereum/go-ethereum/node/rpcstack.go:423.16,426.3 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:427.48,432.3 2 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:434.38,437.3 2 0 +github.com/ethereum/go-ethereum/node/rpcstack.go:438.39,441.3 2 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:446.26,449.3 2 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:457.54,460.2 2 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:462.59,464.2 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:466.53,467.71 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:467.71,468.65 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:473.3,481.72 6 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:468.65,471.4 2 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:494.63,496.2 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:499.50,503.24 3 0 +github.com/ethereum/go-ethereum/node/rpcstack.go:506.2,507.16 2 0 +github.com/ethereum/go-ethereum/node/rpcstack.go:511.2,513.12 3 0 +github.com/ethereum/go-ethereum/node/rpcstack.go:503.24,505.3 1 0 +github.com/ethereum/go-ethereum/node/rpcstack.go:507.16,510.3 2 0 +github.com/ethereum/go-ethereum/node/rpcstack.go:516.35,520.24 3 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:523.2,527.12 5 0 +github.com/ethereum/go-ethereum/node/rpcstack.go:520.24,522.3 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:532.92,533.76 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:537.2,538.33 2 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:542.2,542.27 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:549.2,549.12 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:533.76,535.3 1 0 +github.com/ethereum/go-ethereum/node/rpcstack.go:538.33,540.3 1 0 +github.com/ethereum/go-ethereum/node/rpcstack.go:542.27,543.83 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:543.83,544.71 1 1 +github.com/ethereum/go-ethereum/node/rpcstack.go:544.71,546.5 1 0 +github.com/ethereum/go-ethereum/node/config.go:212.39,214.21 1 1 +github.com/ethereum/go-ethereum/node/config.go:218.2,218.31 1 1 +github.com/ethereum/go-ethereum/node/config.go:225.2,225.43 1 1 +github.com/ethereum/go-ethereum/node/config.go:231.2,231.18 1 1 +github.com/ethereum/go-ethereum/node/config.go:214.21,216.3 1 1 +github.com/ethereum/go-ethereum/node/config.go:218.31,219.48 1 0 +github.com/ethereum/go-ethereum/node/config.go:222.3,222.33 1 0 +github.com/ethereum/go-ethereum/node/config.go:219.48,221.4 1 0 +github.com/ethereum/go-ethereum/node/config.go:225.43,226.22 1 1 +github.com/ethereum/go-ethereum/node/config.go:229.3,229.45 1 1 +github.com/ethereum/go-ethereum/node/config.go:226.22,228.4 1 1 +github.com/ethereum/go-ethereum/node/config.go:235.34,236.21 1 1 +github.com/ethereum/go-ethereum/node/config.go:239.2,239.43 1 1 +github.com/ethereum/go-ethereum/node/config.go:236.21,238.3 1 1 +github.com/ethereum/go-ethereum/node/config.go:243.57,244.28 1 0 +github.com/ethereum/go-ethereum/node/config.go:250.2,251.29 2 0 +github.com/ethereum/go-ethereum/node/config.go:244.28,246.29 2 0 +github.com/ethereum/go-ethereum/node/config.go:246.29,247.34 1 0 +github.com/ethereum/go-ethereum/node/config.go:256.40,257.22 1 0 +github.com/ethereum/go-ethereum/node/config.go:260.2,260.53 1 0 +github.com/ethereum/go-ethereum/node/config.go:257.22,259.3 1 0 +github.com/ethereum/go-ethereum/node/config.go:264.35,267.2 2 0 +github.com/ethereum/go-ethereum/node/config.go:271.38,272.20 1 0 +github.com/ethereum/go-ethereum/node/config.go:275.2,275.49 1 0 +github.com/ethereum/go-ethereum/node/config.go:272.20,274.3 1 0 +github.com/ethereum/go-ethereum/node/config.go:279.33,282.2 2 0 +github.com/ethereum/go-ethereum/node/config.go:286.39,288.2 1 0 +github.com/ethereum/go-ethereum/node/config.go:291.36,294.46 2 1 +github.com/ethereum/go-ethereum/node/config.go:297.2,297.23 1 1 +github.com/ethereum/go-ethereum/node/config.go:300.2,300.21 1 1 +github.com/ethereum/go-ethereum/node/config.go:303.2,305.13 3 1 +github.com/ethereum/go-ethereum/node/config.go:294.46,296.3 1 0 +github.com/ethereum/go-ethereum/node/config.go:297.23,299.3 1 0 +github.com/ethereum/go-ethereum/node/config.go:300.21,302.3 1 0 +github.com/ethereum/go-ethereum/node/config.go:308.32,309.18 1 1 +github.com/ethereum/go-ethereum/node/config.go:316.2,316.15 1 1 +github.com/ethereum/go-ethereum/node/config.go:309.18,311.21 2 1 +github.com/ethereum/go-ethereum/node/config.go:314.3,314.18 1 1 +github.com/ethereum/go-ethereum/node/config.go:311.21,312.51 1 0 +github.com/ethereum/go-ethereum/node/config.go:329.50,330.26 1 1 +github.com/ethereum/go-ethereum/node/config.go:333.2,333.21 1 1 +github.com/ethereum/go-ethereum/node/config.go:338.2,338.51 1 1 +github.com/ethereum/go-ethereum/node/config.go:350.2,350.45 1 1 +github.com/ethereum/go-ethereum/node/config.go:330.26,332.3 1 0 +github.com/ethereum/go-ethereum/node/config.go:333.21,335.3 1 1 +github.com/ethereum/go-ethereum/node/config.go:338.51,340.25 2 1 +github.com/ethereum/go-ethereum/node/config.go:343.3,343.49 1 1 +github.com/ethereum/go-ethereum/node/config.go:340.25,342.4 1 0 +github.com/ethereum/go-ethereum/node/config.go:343.49,344.12 1 0 +github.com/ethereum/go-ethereum/node/config.go:347.4,347.18 1 0 +github.com/ethereum/go-ethereum/node/config.go:344.12,346.5 1 0 +github.com/ethereum/go-ethereum/node/config.go:353.39,354.21 1 1 +github.com/ethereum/go-ethereum/node/config.go:357.2,357.43 1 1 +github.com/ethereum/go-ethereum/node/config.go:354.21,356.3 1 0 +github.com/ethereum/go-ethereum/node/config.go:363.46,365.29 1 1 +github.com/ethereum/go-ethereum/node/config.go:369.2,369.21 1 1 +github.com/ethereum/go-ethereum/node/config.go:377.2,378.55 2 1 +github.com/ethereum/go-ethereum/node/config.go:382.2,383.16 2 1 +github.com/ethereum/go-ethereum/node/config.go:386.2,387.55 2 1 +github.com/ethereum/go-ethereum/node/config.go:391.2,392.55 2 1 +github.com/ethereum/go-ethereum/node/config.go:395.2,395.12 1 1 +github.com/ethereum/go-ethereum/node/config.go:365.29,367.3 1 1 +github.com/ethereum/go-ethereum/node/config.go:369.21,371.17 2 1 +github.com/ethereum/go-ethereum/node/config.go:374.3,374.13 1 1 +github.com/ethereum/go-ethereum/node/config.go:371.17,373.4 1 0 +github.com/ethereum/go-ethereum/node/config.go:378.55,380.3 1 1 +github.com/ethereum/go-ethereum/node/config.go:383.16,385.3 1 0 +github.com/ethereum/go-ethereum/node/config.go:387.55,390.3 2 0 +github.com/ethereum/go-ethereum/node/config.go:392.55,394.3 1 0 +github.com/ethereum/go-ethereum/node/config.go:399.46,401.2 1 1 +github.com/ethereum/go-ethereum/node/config.go:404.47,406.2 1 1 +github.com/ethereum/go-ethereum/node/config.go:410.75,412.21 1 1 +github.com/ethereum/go-ethereum/node/config.go:415.2,415.41 1 1 +github.com/ethereum/go-ethereum/node/config.go:418.2,422.57 3 0 +github.com/ethereum/go-ethereum/node/config.go:427.2,428.31 2 0 +github.com/ethereum/go-ethereum/node/config.go:439.2,439.14 1 0 +github.com/ethereum/go-ethereum/node/config.go:412.21,414.3 1 1 +github.com/ethereum/go-ethereum/node/config.go:415.41,417.3 1 1 +github.com/ethereum/go-ethereum/node/config.go:422.57,425.3 2 0 +github.com/ethereum/go-ethereum/node/config.go:428.31,429.16 1 0 +github.com/ethereum/go-ethereum/node/config.go:432.3,433.17 2 0 +github.com/ethereum/go-ethereum/node/config.go:437.3,437.30 1 0 +github.com/ethereum/go-ethereum/node/config.go:429.16,430.12 1 0 +github.com/ethereum/go-ethereum/node/config.go:433.17,435.12 2 0 +github.com/ethereum/go-ethereum/node/config.go:443.49,448.9 2 1 +github.com/ethereum/go-ethereum/node/config.go:460.2,460.20 1 1 +github.com/ethereum/go-ethereum/node/config.go:449.37,450.25 1 0 +github.com/ethereum/go-ethereum/node/config.go:451.23,452.26 1 1 +github.com/ethereum/go-ethereum/node/config.go:457.27,458.44 1 0 +github.com/ethereum/go-ethereum/node/config.go:452.26,454.4 1 1 +github.com/ethereum/go-ethereum/node/config.go:454.9,456.4 1 0 +github.com/ethereum/go-ethereum/node/config.go:465.57,467.16 2 1 +github.com/ethereum/go-ethereum/node/config.go:470.2,471.18 2 1 +github.com/ethereum/go-ethereum/node/config.go:477.2,477.16 1 1 +github.com/ethereum/go-ethereum/node/config.go:480.2,480.50 1 1 +github.com/ethereum/go-ethereum/node/config.go:484.2,484.33 1 1 +github.com/ethereum/go-ethereum/node/config.go:467.16,469.3 1 0 +github.com/ethereum/go-ethereum/node/config.go:471.18,475.3 2 1 +github.com/ethereum/go-ethereum/node/config.go:477.16,479.3 1 0 +github.com/ethereum/go-ethereum/node/config.go:480.50,482.3 1 0 +github.com/ethereum/go-ethereum/node/config.go:489.72,493.8 3 0 +github.com/ethereum/go-ethereum/node/config.go:496.2,497.14 2 0 +github.com/ethereum/go-ethereum/node/config.go:500.2,501.11 2 0 +github.com/ethereum/go-ethereum/node/config.go:493.8,495.3 1 0 +github.com/ethereum/go-ethereum/node/config.go:497.14,499.3 1 0 +github.com/ethereum/go-ethereum/node/endpoints.go:29.122,35.61 2 0 +github.com/ethereum/go-ethereum/node/endpoints.go:39.2,48.38 4 0 +github.com/ethereum/go-ethereum/node/endpoints.go:35.61,37.3 1 0 +github.com/ethereum/go-ethereum/node/endpoints.go:54.90,56.27 2 1 +github.com/ethereum/go-ethereum/node/endpoints.go:62.2,62.31 1 1 +github.com/ethereum/go-ethereum/node/endpoints.go:69.2,69.23 1 1 +github.com/ethereum/go-ethereum/node/endpoints.go:56.27,57.48 1 1 +github.com/ethereum/go-ethereum/node/endpoints.go:57.48,60.4 2 1 +github.com/ethereum/go-ethereum/node/endpoints.go:62.31,63.39 1 0 +github.com/ethereum/go-ethereum/node/endpoints.go:63.39,64.56 1 0 +github.com/ethereum/go-ethereum/node/endpoints.go:64.56,66.5 1 0 +github.com/ethereum/go-ethereum/node/endpoints.go:73.48,74.40 1 1 +github.com/ethereum/go-ethereum/node/endpoints.go:78.2,78.41 1 1 +github.com/ethereum/go-ethereum/node/endpoints.go:82.2,82.40 1 1 +github.com/ethereum/go-ethereum/node/endpoints.go:74.40,77.3 2 0 +github.com/ethereum/go-ethereum/node/endpoints.go:78.41,81.3 2 0 +github.com/ethereum/go-ethereum/node/endpoints.go:82.40,85.3 2 0 +github.com/ethereum/go-ethereum/node/errors.go:35.44,36.77 1 1 +github.com/ethereum/go-ethereum/node/errors.go:39.2,39.12 1 0 +github.com/ethereum/go-ethereum/node/errors.go:36.77,38.3 1 1 +github.com/ethereum/go-ethereum/node/errors.go:50.36,52.2 1 0 +github.com/ethereum/go-ethereum/node/node.go:76.39,81.24 3 1 +github.com/ethereum/go-ethereum/node/node.go:88.2,88.24 1 1 +github.com/ethereum/go-ethereum/node/node.go:94.2,94.42 1 1 +github.com/ethereum/go-ethereum/node/node.go:97.2,97.41 1 1 +github.com/ethereum/go-ethereum/node/node.go:100.2,100.42 1 1 +github.com/ethereum/go-ethereum/node/node.go:104.2,118.43 3 1 +github.com/ethereum/go-ethereum/node/node.go:121.2,122.16 2 1 +github.com/ethereum/go-ethereum/node/node.go:125.2,135.43 7 1 +github.com/ethereum/go-ethereum/node/node.go:138.2,138.44 1 1 +github.com/ethereum/go-ethereum/node/node.go:141.2,141.43 1 1 +github.com/ethereum/go-ethereum/node/node.go:146.2,146.68 1 1 +github.com/ethereum/go-ethereum/node/node.go:149.2,149.71 1 1 +github.com/ethereum/go-ethereum/node/node.go:154.2,160.18 6 1 +github.com/ethereum/go-ethereum/node/node.go:81.24,83.17 2 1 +github.com/ethereum/go-ethereum/node/node.go:86.3,86.28 1 1 +github.com/ethereum/go-ethereum/node/node.go:83.17,85.4 1 0 +github.com/ethereum/go-ethereum/node/node.go:88.24,90.3 1 1 +github.com/ethereum/go-ethereum/node/node.go:94.42,96.3 1 0 +github.com/ethereum/go-ethereum/node/node.go:97.41,99.3 1 0 +github.com/ethereum/go-ethereum/node/node.go:100.42,102.3 1 0 +github.com/ethereum/go-ethereum/node/node.go:118.43,120.3 1 1 +github.com/ethereum/go-ethereum/node/node.go:122.16,124.3 1 0 +github.com/ethereum/go-ethereum/node/node.go:135.43,137.3 1 1 +github.com/ethereum/go-ethereum/node/node.go:138.44,140.3 1 1 +github.com/ethereum/go-ethereum/node/node.go:141.43,143.3 1 1 +github.com/ethereum/go-ethereum/node/node.go:146.68,148.3 1 0 +github.com/ethereum/go-ethereum/node/node.go:149.71,151.3 1 0 +github.com/ethereum/go-ethereum/node/node.go:165.30,170.17 4 1 +github.com/ethereum/go-ethereum/node/node.go:178.2,186.16 6 1 +github.com/ethereum/go-ethereum/node/node.go:191.2,192.39 2 1 +github.com/ethereum/go-ethereum/node/node.go:199.2,199.16 1 1 +github.com/ethereum/go-ethereum/node/node.go:203.2,203.12 1 1 +github.com/ethereum/go-ethereum/node/node.go:171.20,173.24 2 1 +github.com/ethereum/go-ethereum/node/node.go:174.19,176.24 2 0 +github.com/ethereum/go-ethereum/node/node.go:186.16,189.3 2 0 +github.com/ethereum/go-ethereum/node/node.go:192.39,193.42 1 1 +github.com/ethereum/go-ethereum/node/node.go:196.3,196.39 1 1 +github.com/ethereum/go-ethereum/node/node.go:193.42,194.9 1 1 +github.com/ethereum/go-ethereum/node/node.go:199.16,202.3 2 1 +github.com/ethereum/go-ethereum/node/node.go:208.30,215.15 6 1 +github.com/ethereum/go-ethereum/node/node.go:216.25,218.24 1 1 +github.com/ethereum/go-ethereum/node/node.go:219.20,222.54 2 1 +github.com/ethereum/go-ethereum/node/node.go:225.3,225.25 1 1 +github.com/ethereum/go-ethereum/node/node.go:226.19,227.24 1 1 +github.com/ethereum/go-ethereum/node/node.go:228.10,229.59 1 0 +github.com/ethereum/go-ethereum/node/node.go:222.54,224.4 1 1 +github.com/ethereum/go-ethereum/node/node.go:234.44,242.41 5 1 +github.com/ethereum/go-ethereum/node/node.go:245.2,245.18 1 1 +github.com/ethereum/go-ethereum/node/node.go:252.2,258.19 3 1 +github.com/ethereum/go-ethereum/node/node.go:242.41,244.3 1 0 +github.com/ethereum/go-ethereum/node/node.go:245.18,246.48 1 1 +github.com/ethereum/go-ethereum/node/node.go:246.48,248.4 1 0 +github.com/ethereum/go-ethereum/node/node.go:259.9,260.13 1 1 +github.com/ethereum/go-ethereum/node/node.go:261.9,262.17 1 1 +github.com/ethereum/go-ethereum/node/node.go:263.10,264.32 1 0 +github.com/ethereum/go-ethereum/node/node.go:269.38,272.41 2 1 +github.com/ethereum/go-ethereum/node/node.go:276.2,277.16 2 1 +github.com/ethereum/go-ethereum/node/node.go:281.2,281.12 1 1 +github.com/ethereum/go-ethereum/node/node.go:272.41,274.3 1 0 +github.com/ethereum/go-ethereum/node/node.go:277.16,280.3 2 0 +github.com/ethereum/go-ethereum/node/node.go:285.59,286.26 1 1 +github.com/ethereum/go-ethereum/node/node.go:291.2,291.14 1 1 +github.com/ethereum/go-ethereum/node/node.go:286.26,287.15 1 1 +github.com/ethereum/go-ethereum/node/node.go:287.15,289.4 1 1 +github.com/ethereum/go-ethereum/node/node.go:296.56,301.41 3 1 +github.com/ethereum/go-ethereum/node/node.go:308.2,310.31 2 1 +github.com/ethereum/go-ethereum/node/node.go:313.2,313.12 1 1 +github.com/ethereum/go-ethereum/node/node.go:301.41,302.43 1 1 +github.com/ethereum/go-ethereum/node/node.go:302.43,304.4 1 1 +github.com/ethereum/go-ethereum/node/node.go:310.31,312.3 1 1 +github.com/ethereum/go-ethereum/node/node.go:316.36,317.28 1 1 +github.com/ethereum/go-ethereum/node/node.go:321.2,322.51 2 1 +github.com/ethereum/go-ethereum/node/node.go:327.2,328.16 2 1 +github.com/ethereum/go-ethereum/node/node.go:331.2,332.12 2 1 +github.com/ethereum/go-ethereum/node/node.go:317.28,319.3 1 1 +github.com/ethereum/go-ethereum/node/node.go:322.51,324.3 1 1 +github.com/ethereum/go-ethereum/node/node.go:328.16,330.3 1 1 +github.com/ethereum/go-ethereum/node/node.go:335.31,337.22 1 1 +github.com/ethereum/go-ethereum/node/node.go:337.22,338.45 1 1 +github.com/ethereum/go-ethereum/node/node.go:341.3,341.18 1 1 +github.com/ethereum/go-ethereum/node/node.go:338.45,340.4 1 0 +github.com/ethereum/go-ethereum/node/node.go:348.65,350.24 2 0 +github.com/ethereum/go-ethereum/node/node.go:355.2,356.52 2 0 +github.com/ethereum/go-ethereum/node/node.go:365.2,368.20 3 0 +github.com/ethereum/go-ethereum/node/node.go:372.2,372.88 1 0 +github.com/ethereum/go-ethereum/node/node.go:375.2,376.23 2 0 +github.com/ethereum/go-ethereum/node/node.go:350.24,353.3 1 0 +github.com/ethereum/go-ethereum/node/node.go:356.52,358.27 2 0 +github.com/ethereum/go-ethereum/node/node.go:361.3,362.47 2 0 +github.com/ethereum/go-ethereum/node/node.go:358.27,360.4 1 0 +github.com/ethereum/go-ethereum/node/node.go:368.20,371.3 2 0 +github.com/ethereum/go-ethereum/node/node.go:372.88,374.3 1 0 +github.com/ethereum/go-ethereum/node/node.go:382.33,383.40 1 1 +github.com/ethereum/go-ethereum/node/node.go:388.2,388.26 1 1 +github.com/ethereum/go-ethereum/node/node.go:393.2,398.71 2 1 +github.com/ethereum/go-ethereum/node/node.go:414.2,414.49 1 1 +github.com/ethereum/go-ethereum/node/node.go:430.2,430.66 1 1 +github.com/ethereum/go-ethereum/node/node.go:464.2,464.29 1 1 +github.com/ethereum/go-ethereum/node/node.go:471.2,471.27 1 1 +github.com/ethereum/go-ethereum/node/node.go:478.2,478.27 1 1 +github.com/ethereum/go-ethereum/node/node.go:488.2,488.33 1 1 +github.com/ethereum/go-ethereum/node/node.go:493.2,493.12 1 1 +github.com/ethereum/go-ethereum/node/node.go:383.40,385.3 1 0 +github.com/ethereum/go-ethereum/node/node.go:388.26,389.48 1 0 +github.com/ethereum/go-ethereum/node/node.go:389.48,391.4 1 0 +github.com/ethereum/go-ethereum/node/node.go:398.71,399.71 1 1 +github.com/ethereum/go-ethereum/node/node.go:402.3,407.18 1 1 +github.com/ethereum/go-ethereum/node/node.go:410.3,411.13 2 1 +github.com/ethereum/go-ethereum/node/node.go:399.71,401.4 1 0 +github.com/ethereum/go-ethereum/node/node.go:407.18,409.4 1 0 +github.com/ethereum/go-ethereum/node/node.go:414.49,416.69 2 1 +github.com/ethereum/go-ethereum/node/node.go:419.3,423.18 1 1 +github.com/ethereum/go-ethereum/node/node.go:426.3,427.13 2 1 +github.com/ethereum/go-ethereum/node/node.go:416.69,418.4 1 0 +github.com/ethereum/go-ethereum/node/node.go:423.18,425.4 1 0 +github.com/ethereum/go-ethereum/node/node.go:430.66,433.71 2 0 +github.com/ethereum/go-ethereum/node/node.go:436.3,442.18 1 0 +github.com/ethereum/go-ethereum/node/node.go:445.3,448.71 3 0 +github.com/ethereum/go-ethereum/node/node.go:451.3,456.18 1 0 +github.com/ethereum/go-ethereum/node/node.go:459.3,460.13 2 0 +github.com/ethereum/go-ethereum/node/node.go:433.71,435.4 1 0 +github.com/ethereum/go-ethereum/node/node.go:442.18,444.4 1 0 +github.com/ethereum/go-ethereum/node/node.go:448.71,450.4 1 0 +github.com/ethereum/go-ethereum/node/node.go:456.18,458.4 1 0 +github.com/ethereum/go-ethereum/node/node.go:464.29,466.67 1 1 +github.com/ethereum/go-ethereum/node/node.go:466.67,468.4 1 0 +github.com/ethereum/go-ethereum/node/node.go:471.27,473.55 1 1 +github.com/ethereum/go-ethereum/node/node.go:473.55,475.4 1 0 +github.com/ethereum/go-ethereum/node/node.go:478.27,480.17 2 0 +github.com/ethereum/go-ethereum/node/node.go:483.3,483.69 1 0 +github.com/ethereum/go-ethereum/node/node.go:480.17,482.4 1 0 +github.com/ethereum/go-ethereum/node/node.go:483.69,485.4 1 0 +github.com/ethereum/go-ethereum/node/node.go:488.33,489.40 1 1 +github.com/ethereum/go-ethereum/node/node.go:489.40,491.4 1 0 +github.com/ethereum/go-ethereum/node/node.go:496.74,498.19 2 1 +github.com/ethereum/go-ethereum/node/node.go:501.2,501.56 1 1 +github.com/ethereum/go-ethereum/node/node.go:504.2,504.17 1 1 +github.com/ethereum/go-ethereum/node/node.go:498.19,500.3 1 0 +github.com/ethereum/go-ethereum/node/node.go:501.56,503.3 1 1 +github.com/ethereum/go-ethereum/node/node.go:507.26,514.2 6 1 +github.com/ethereum/go-ethereum/node/node.go:517.36,518.32 1 1 +github.com/ethereum/go-ethereum/node/node.go:523.2,523.12 1 1 +github.com/ethereum/go-ethereum/node/node.go:518.32,519.82 1 1 +github.com/ethereum/go-ethereum/node/node.go:519.82,521.4 1 0 +github.com/ethereum/go-ethereum/node/node.go:527.29,529.2 1 1 +github.com/ethereum/go-ethereum/node/node.go:532.23,534.2 1 0 +github.com/ethereum/go-ethereum/node/node.go:537.55,541.34 3 1 +github.com/ethereum/go-ethereum/node/node.go:544.2,544.48 1 1 +github.com/ethereum/go-ethereum/node/node.go:547.2,547.48 1 1 +github.com/ethereum/go-ethereum/node/node.go:541.34,542.60 1 0 +github.com/ethereum/go-ethereum/node/node.go:544.48,545.83 1 0 +github.com/ethereum/go-ethereum/node/node.go:551.60,555.34 3 1 +github.com/ethereum/go-ethereum/node/node.go:558.2,558.63 1 1 +github.com/ethereum/go-ethereum/node/node.go:555.34,556.60 1 0 +github.com/ethereum/go-ethereum/node/node.go:562.45,566.34 3 1 +github.com/ethereum/go-ethereum/node/node.go:569.2,569.40 1 1 +github.com/ethereum/go-ethereum/node/node.go:566.34,567.55 1 0 +github.com/ethereum/go-ethereum/node/node.go:574.59,575.32 1 1 +github.com/ethereum/go-ethereum/node/node.go:580.2,580.35 1 1 +github.com/ethereum/go-ethereum/node/node.go:575.32,576.25 1 1 +github.com/ethereum/go-ethereum/node/node.go:576.25,578.4 1 1 +github.com/ethereum/go-ethereum/node/node.go:587.73,591.34 3 1 +github.com/ethereum/go-ethereum/node/node.go:595.2,596.34 2 1 +github.com/ethereum/go-ethereum/node/node.go:591.34,592.63 1 0 +github.com/ethereum/go-ethereum/node/node.go:600.46,602.2 1 0 +github.com/ethereum/go-ethereum/node/node.go:605.50,609.28 3 0 +github.com/ethereum/go-ethereum/node/node.go:612.2,612.29 1 0 +github.com/ethereum/go-ethereum/node/node.go:609.28,611.3 1 0 +github.com/ethereum/go-ethereum/node/node.go:616.33,618.2 1 0 +github.com/ethereum/go-ethereum/node/node.go:623.37,628.2 3 0 +github.com/ethereum/go-ethereum/node/node.go:632.33,634.2 1 0 +github.com/ethereum/go-ethereum/node/node.go:637.37,639.2 1 0 +github.com/ethereum/go-ethereum/node/node.go:642.37,644.2 1 0 +github.com/ethereum/go-ethereum/node/node.go:647.51,649.2 1 0 +github.com/ethereum/go-ethereum/node/node.go:652.37,654.2 1 0 +github.com/ethereum/go-ethereum/node/node.go:658.38,660.2 1 1 +github.com/ethereum/go-ethereum/node/node.go:663.36,664.24 1 1 +github.com/ethereum/go-ethereum/node/node.go:667.2,667.59 1 1 +github.com/ethereum/go-ethereum/node/node.go:664.24,666.3 1 1 +github.com/ethereum/go-ethereum/node/node.go:672.42,674.2 1 0 +github.com/ethereum/go-ethereum/node/node.go:679.119,682.28 3 1 +github.com/ethereum/go-ethereum/node/node.go:686.2,688.28 3 1 +github.com/ethereum/go-ethereum/node/node.go:694.2,694.16 1 1 +github.com/ethereum/go-ethereum/node/node.go:697.2,697.16 1 1 +github.com/ethereum/go-ethereum/node/node.go:682.28,684.3 1 0 +github.com/ethereum/go-ethereum/node/node.go:688.28,690.3 1 1 +github.com/ethereum/go-ethereum/node/node.go:690.8,692.3 1 0 +github.com/ethereum/go-ethereum/node/node.go:694.16,696.3 1 1 +github.com/ethereum/go-ethereum/node/node.go:705.139,708.28 3 0 +github.com/ethereum/go-ethereum/node/node.go:712.2,714.28 3 0 +github.com/ethereum/go-ethereum/node/node.go:727.2,727.16 1 0 +github.com/ethereum/go-ethereum/node/node.go:730.2,730.16 1 0 +github.com/ethereum/go-ethereum/node/node.go:708.28,710.3 1 0 +github.com/ethereum/go-ethereum/node/node.go:714.28,716.3 1 0 +github.com/ethereum/go-ethereum/node/node.go:716.8,718.10 2 0 +github.com/ethereum/go-ethereum/node/node.go:724.3,724.100 1 0 +github.com/ethereum/go-ethereum/node/node.go:719.22,720.44 1 0 +github.com/ethereum/go-ethereum/node/node.go:721.33,722.36 1 0 +github.com/ethereum/go-ethereum/node/node.go:727.16,729.3 1 0 +github.com/ethereum/go-ethereum/node/node.go:734.45,736.2 1 0 +github.com/ethereum/go-ethereum/node/node.go:746.42,751.2 4 1 +github.com/ethereum/go-ethereum/node/node.go:754.63,758.2 3 1 +github.com/ethereum/go-ethereum/node/node.go:761.50,762.30 1 1 +github.com/ethereum/go-ethereum/node/node.go:768.2,768.15 1 1 +github.com/ethereum/go-ethereum/node/node.go:762.30,764.45 2 1 +github.com/ethereum/go-ethereum/node/node.go:764.45,766.4 1 0 +github.com/ethereum/go-ethereum/node/api.go:34.33,56.2 1 1 +github.com/ethereum/go-ethereum/node/api.go:66.63,69.19 2 0 +github.com/ethereum/go-ethereum/node/api.go:73.2,74.16 2 0 +github.com/ethereum/go-ethereum/node/api.go:77.2,78.18 2 0 +github.com/ethereum/go-ethereum/node/api.go:69.19,71.3 1 0 +github.com/ethereum/go-ethereum/node/api.go:74.16,76.3 1 0 +github.com/ethereum/go-ethereum/node/api.go:82.66,85.19 2 0 +github.com/ethereum/go-ethereum/node/api.go:89.2,90.16 2 0 +github.com/ethereum/go-ethereum/node/api.go:93.2,94.18 2 0 +github.com/ethereum/go-ethereum/node/api.go:85.19,87.3 1 0 +github.com/ethereum/go-ethereum/node/api.go:90.16,92.3 1 0 +github.com/ethereum/go-ethereum/node/api.go:98.70,101.19 2 0 +github.com/ethereum/go-ethereum/node/api.go:104.2,105.16 2 0 +github.com/ethereum/go-ethereum/node/api.go:108.2,109.18 2 0 +github.com/ethereum/go-ethereum/node/api.go:101.19,103.3 1 0 +github.com/ethereum/go-ethereum/node/api.go:105.16,107.3 1 0 +github.com/ethereum/go-ethereum/node/api.go:114.73,117.19 2 0 +github.com/ethereum/go-ethereum/node/api.go:120.2,121.16 2 0 +github.com/ethereum/go-ethereum/node/api.go:124.2,125.18 2 0 +github.com/ethereum/go-ethereum/node/api.go:117.19,119.3 1 0 +github.com/ethereum/go-ethereum/node/api.go:121.16,123.3 1 0 +github.com/ethereum/go-ethereum/node/api.go:130.88,133.19 2 0 +github.com/ethereum/go-ethereum/node/api.go:138.2,139.16 2 0 +github.com/ethereum/go-ethereum/node/api.go:142.2,144.12 2 0 +github.com/ethereum/go-ethereum/node/api.go:163.2,163.20 1 0 +github.com/ethereum/go-ethereum/node/api.go:133.19,135.3 1 0 +github.com/ethereum/go-ethereum/node/api.go:139.16,141.3 1 0 +github.com/ethereum/go-ethereum/node/api.go:144.12,149.7 4 0 +github.com/ethereum/go-ethereum/node/api.go:149.7,150.11 1 0 +github.com/ethereum/go-ethereum/node/api.go:151.27,152.38 1 0 +github.com/ethereum/go-ethereum/node/api.go:153.21,154.11 1 0 +github.com/ethereum/go-ethereum/node/api.go:155.24,156.11 1 0 +github.com/ethereum/go-ethereum/node/api.go:157.29,158.11 1 0 +github.com/ethereum/go-ethereum/node/api.go:167.122,172.17 3 1 +github.com/ethereum/go-ethereum/node/api.go:179.2,179.17 1 1 +github.com/ethereum/go-ethereum/node/api.go:184.2,189.17 2 1 +github.com/ethereum/go-ethereum/node/api.go:195.2,195.19 1 1 +github.com/ethereum/go-ethereum/node/api.go:201.2,201.17 1 1 +github.com/ethereum/go-ethereum/node/api.go:208.2,208.66 1 1 +github.com/ethereum/go-ethereum/node/api.go:211.2,211.74 1 1 +github.com/ethereum/go-ethereum/node/api.go:214.2,214.46 1 1 +github.com/ethereum/go-ethereum/node/api.go:217.2,217.18 1 1 +github.com/ethereum/go-ethereum/node/api.go:172.17,174.37 2 0 +github.com/ethereum/go-ethereum/node/api.go:177.3,177.12 1 0 +github.com/ethereum/go-ethereum/node/api.go:174.37,176.4 1 0 +github.com/ethereum/go-ethereum/node/api.go:179.17,181.3 1 0 +github.com/ethereum/go-ethereum/node/api.go:189.17,191.52 2 0 +github.com/ethereum/go-ethereum/node/api.go:191.52,193.4 1 0 +github.com/ethereum/go-ethereum/node/api.go:195.19,197.51 2 0 +github.com/ethereum/go-ethereum/node/api.go:197.51,199.4 1 0 +github.com/ethereum/go-ethereum/node/api.go:201.17,203.47 2 0 +github.com/ethereum/go-ethereum/node/api.go:203.47,205.4 1 0 +github.com/ethereum/go-ethereum/node/api.go:208.66,210.3 1 0 +github.com/ethereum/go-ethereum/node/api.go:211.74,213.3 1 0 +github.com/ethereum/go-ethereum/node/api.go:214.46,216.3 1 1 +github.com/ethereum/go-ethereum/node/api.go:222.121,225.2 2 0 +github.com/ethereum/go-ethereum/node/api.go:228.54,231.2 2 1 +github.com/ethereum/go-ethereum/node/api.go:235.53,238.2 2 0 +github.com/ethereum/go-ethereum/node/api.go:241.114,246.17 3 1 +github.com/ethereum/go-ethereum/node/api.go:253.2,253.17 1 1 +github.com/ethereum/go-ethereum/node/api.go:258.2,263.17 2 1 +github.com/ethereum/go-ethereum/node/api.go:269.2,269.27 1 1 +github.com/ethereum/go-ethereum/node/api.go:277.2,278.59 2 1 +github.com/ethereum/go-ethereum/node/api.go:281.2,282.58 2 1 +github.com/ethereum/go-ethereum/node/api.go:285.2,285.39 1 1 +github.com/ethereum/go-ethereum/node/api.go:288.2,289.18 2 1 +github.com/ethereum/go-ethereum/node/api.go:246.17,248.35 2 0 +github.com/ethereum/go-ethereum/node/api.go:251.3,251.12 1 0 +github.com/ethereum/go-ethereum/node/api.go:248.35,250.4 1 0 +github.com/ethereum/go-ethereum/node/api.go:253.17,255.3 1 0 +github.com/ethereum/go-ethereum/node/api.go:263.17,265.47 2 0 +github.com/ethereum/go-ethereum/node/api.go:265.47,267.4 1 0 +github.com/ethereum/go-ethereum/node/api.go:269.27,271.62 2 0 +github.com/ethereum/go-ethereum/node/api.go:271.62,273.4 1 0 +github.com/ethereum/go-ethereum/node/api.go:278.59,280.3 1 0 +github.com/ethereum/go-ethereum/node/api.go:282.58,284.3 1 0 +github.com/ethereum/go-ethereum/node/api.go:285.39,287.3 1 0 +github.com/ethereum/go-ethereum/node/api.go:293.52,297.2 3 1 +github.com/ethereum/go-ethereum/node/api.go:307.61,309.19 2 0 +github.com/ethereum/go-ethereum/node/api.go:312.2,312.32 1 0 +github.com/ethereum/go-ethereum/node/api.go:309.19,311.3 1 0 +github.com/ethereum/go-ethereum/node/api.go:317.62,319.19 2 0 +github.com/ethereum/go-ethereum/node/api.go:322.2,322.31 1 0 +github.com/ethereum/go-ethereum/node/api.go:319.19,321.3 1 0 +github.com/ethereum/go-ethereum/node/api.go:326.45,328.2 1 0 +github.com/ethereum/go-ethereum/node/api.go:336.48,338.2 1 0 +github.com/ethereum/go-ethereum/node/api.go:342.65,344.2 1 0 +github.com/ethereum/go-ethereum/node/defaults.go:71.30,74.16 2 1 +github.com/ethereum/go-ethereum/node/defaults.go:93.2,93.11 1 0 +github.com/ethereum/go-ethereum/node/defaults.go:74.16,75.23 1 1 +github.com/ethereum/go-ethereum/node/defaults.go:76.17,77.53 1 1 +github.com/ethereum/go-ethereum/node/defaults.go:78.18,84.48 3 0 +github.com/ethereum/go-ethereum/node/defaults.go:87.4,87.45 1 0 +github.com/ethereum/go-ethereum/node/defaults.go:88.11,89.43 1 0 +github.com/ethereum/go-ethereum/node/defaults.go:84.48,86.5 1 0 +github.com/ethereum/go-ethereum/node/defaults.go:96.30,98.13 2 0 +github.com/ethereum/go-ethereum/node/defaults.go:104.2,104.10 1 0 +github.com/ethereum/go-ethereum/node/defaults.go:98.13,102.58 1 0 +github.com/ethereum/go-ethereum/node/defaults.go:107.37,109.16 2 0 +github.com/ethereum/go-ethereum/node/defaults.go:112.2,114.23 3 0 +github.com/ethereum/go-ethereum/node/defaults.go:109.16,111.3 1 0 +github.com/ethereum/go-ethereum/node/defaults.go:117.23,118.43 1 1 +github.com/ethereum/go-ethereum/node/defaults.go:121.2,121.44 1 0 +github.com/ethereum/go-ethereum/node/defaults.go:124.2,124.11 1 0 +github.com/ethereum/go-ethereum/node/defaults.go:118.43,120.3 1 1 +github.com/ethereum/go-ethereum/node/defaults.go:121.44,123.3 1 0 +github.com/ethereum/go-ethereum/node/jwt_handler.go:33.67,35.56 1 1 +github.com/ethereum/go-ethereum/node/jwt_handler.go:35.56,37.4 1 1 +github.com/ethereum/go-ethereum/node/jwt_handler.go:43.80,48.79 2 1 +github.com/ethereum/go-ethereum/node/jwt_handler.go:51.2,51.24 1 1 +github.com/ethereum/go-ethereum/node/jwt_handler.go:58.2,62.9 2 1 +github.com/ethereum/go-ethereum/node/jwt_handler.go:48.79,50.3 1 1 +github.com/ethereum/go-ethereum/node/jwt_handler.go:51.24,54.3 2 1 +github.com/ethereum/go-ethereum/node/jwt_handler.go:63.18,64.53 1 1 +github.com/ethereum/go-ethereum/node/jwt_handler.go:65.20,66.57 1 0 +github.com/ethereum/go-ethereum/node/jwt_handler.go:67.50,68.60 1 1 +github.com/ethereum/go-ethereum/node/jwt_handler.go:69.30,70.61 1 1 +github.com/ethereum/go-ethereum/node/jwt_handler.go:71.56,72.55 1 1 +github.com/ethereum/go-ethereum/node/jwt_handler.go:73.56,74.56 1 1 +github.com/ethereum/go-ethereum/node/jwt_handler.go:75.10,76.33 1 1 +github.com/ethereum/go-ethereum/metrics/graphite.go:27.78,36.2 1 0 +github.com/ethereum/go-ethereum/metrics/graphite.go:40.43,42.39 2 0 +github.com/ethereum/go-ethereum/metrics/graphite.go:42.39,43.38 1 0 +github.com/ethereum/go-ethereum/metrics/graphite.go:43.38,45.4 1 0 +github.com/ethereum/go-ethereum/metrics/graphite.go:52.43,55.2 2 0 +github.com/ethereum/go-ethereum/metrics/graphite.go:57.40,61.16 4 0 +github.com/ethereum/go-ethereum/metrics/graphite.go:64.2,66.51 3 0 +github.com/ethereum/go-ethereum/metrics/graphite.go:112.2,112.12 1 0 +github.com/ethereum/go-ethereum/metrics/graphite.go:61.16,63.3 1 0 +github.com/ethereum/go-ethereum/metrics/graphite.go:66.51,67.29 1 0 +github.com/ethereum/go-ethereum/metrics/graphite.go:110.3,110.12 1 0 +github.com/ethereum/go-ethereum/metrics/graphite.go:68.16,69.78 1 0 +github.com/ethereum/go-ethereum/metrics/graphite.go:70.14,71.78 1 0 +github.com/ethereum/go-ethereum/metrics/graphite.go:72.21,73.78 1 0 +github.com/ethereum/go-ethereum/metrics/graphite.go:74.18,82.44 8 0 +github.com/ethereum/go-ethereum/metrics/graphite.go:86.14,92.77 6 0 +github.com/ethereum/go-ethereum/metrics/graphite.go:93.14,101.44 8 0 +github.com/ethereum/go-ethereum/metrics/graphite.go:105.4,108.82 4 0 +github.com/ethereum/go-ethereum/metrics/graphite.go:82.44,85.5 2 0 +github.com/ethereum/go-ethereum/metrics/graphite.go:101.44,104.5 2 0 +github.com/ethereum/go-ethereum/metrics/healthcheck.go:13.54,14.14 1 0 +github.com/ethereum/go-ethereum/metrics/healthcheck.go:17.2,17.37 1 0 +github.com/ethereum/go-ethereum/metrics/healthcheck.go:14.14,16.3 1 0 +github.com/ethereum/go-ethereum/metrics/healthcheck.go:24.32,24.33 0 0 +github.com/ethereum/go-ethereum/metrics/healthcheck.go:27.37,27.51 1 0 +github.com/ethereum/go-ethereum/metrics/healthcheck.go:30.34,30.35 0 0 +github.com/ethereum/go-ethereum/metrics/healthcheck.go:33.41,33.42 0 0 +github.com/ethereum/go-ethereum/metrics/healthcheck.go:43.39,45.2 1 0 +github.com/ethereum/go-ethereum/metrics/healthcheck.go:48.45,50.2 1 0 +github.com/ethereum/go-ethereum/metrics/healthcheck.go:53.41,55.2 1 0 +github.com/ethereum/go-ethereum/metrics/healthcheck.go:59.52,61.2 1 0 +github.com/ethereum/go-ethereum/metrics/meter.go:26.56,27.14 1 1 +github.com/ethereum/go-ethereum/metrics/meter.go:30.2,30.48 1 1 +github.com/ethereum/go-ethereum/metrics/meter.go:27.14,29.3 1 0 +github.com/ethereum/go-ethereum/metrics/meter.go:37.62,38.14 1 0 +github.com/ethereum/go-ethereum/metrics/meter.go:41.2,41.54 1 0 +github.com/ethereum/go-ethereum/metrics/meter.go:38.14,40.3 1 0 +github.com/ethereum/go-ethereum/metrics/meter.go:46.23,47.14 1 1 +github.com/ethereum/go-ethereum/metrics/meter.go:50.2,54.22 5 1 +github.com/ethereum/go-ethereum/metrics/meter.go:58.2,58.10 1 1 +github.com/ethereum/go-ethereum/metrics/meter.go:47.14,49.3 1 0 +github.com/ethereum/go-ethereum/metrics/meter.go:54.22,57.3 2 1 +github.com/ethereum/go-ethereum/metrics/meter.go:64.29,69.22 5 0 +github.com/ethereum/go-ethereum/metrics/meter.go:73.2,73.10 1 0 +github.com/ethereum/go-ethereum/metrics/meter.go:69.22,72.3 2 0 +github.com/ethereum/go-ethereum/metrics/meter.go:80.56,82.14 2 1 +github.com/ethereum/go-ethereum/metrics/meter.go:85.2,86.10 2 1 +github.com/ethereum/go-ethereum/metrics/meter.go:82.14,84.3 1 0 +github.com/ethereum/go-ethereum/metrics/meter.go:93.62,95.14 2 0 +github.com/ethereum/go-ethereum/metrics/meter.go:98.2,99.10 2 0 +github.com/ethereum/go-ethereum/metrics/meter.go:95.14,97.3 1 0 +github.com/ethereum/go-ethereum/metrics/meter.go:114.39,114.57 1 0 +github.com/ethereum/go-ethereum/metrics/meter.go:117.37,118.41 1 0 +github.com/ethereum/go-ethereum/metrics/meter.go:123.41,123.59 1 0 +github.com/ethereum/go-ethereum/metrics/meter.go:127.41,127.59 1 0 +github.com/ethereum/go-ethereum/metrics/meter.go:131.42,131.61 1 0 +github.com/ethereum/go-ethereum/metrics/meter.go:135.44,135.65 1 1 +github.com/ethereum/go-ethereum/metrics/meter.go:138.42,138.54 1 0 +github.com/ethereum/go-ethereum/metrics/meter.go:141.33,141.34 0 0 +github.com/ethereum/go-ethereum/metrics/meter.go:147.31,147.43 1 0 +github.com/ethereum/go-ethereum/metrics/meter.go:150.32,150.33 0 0 +github.com/ethereum/go-ethereum/metrics/meter.go:153.33,153.47 1 0 +github.com/ethereum/go-ethereum/metrics/meter.go:156.33,156.47 1 0 +github.com/ethereum/go-ethereum/metrics/meter.go:159.34,159.48 1 0 +github.com/ethereum/go-ethereum/metrics/meter.go:162.36,162.50 1 0 +github.com/ethereum/go-ethereum/metrics/meter.go:165.34,165.55 1 0 +github.com/ethereum/go-ethereum/metrics/meter.go:168.25,168.26 0 0 +github.com/ethereum/go-ethereum/metrics/meter.go:179.40,187.2 1 1 +github.com/ethereum/go-ethereum/metrics/meter.go:190.32,192.18 2 1 +github.com/ethereum/go-ethereum/metrics/meter.go:192.18,196.3 3 1 +github.com/ethereum/go-ethereum/metrics/meter.go:201.39,206.2 4 1 +github.com/ethereum/go-ethereum/metrics/meter.go:209.39,211.2 1 1 +github.com/ethereum/go-ethereum/metrics/meter.go:214.41,218.2 3 1 +github.com/ethereum/go-ethereum/metrics/meter.go:221.41,225.2 3 1 +github.com/ethereum/go-ethereum/metrics/meter.go:228.42,232.2 3 1 +github.com/ethereum/go-ethereum/metrics/meter.go:235.44,239.2 3 1 +github.com/ethereum/go-ethereum/metrics/meter.go:242.42,247.2 4 1 +github.com/ethereum/go-ethereum/metrics/meter.go:249.42,256.2 5 1 +github.com/ethereum/go-ethereum/metrics/meter.go:258.39,265.2 5 1 +github.com/ethereum/go-ethereum/metrics/meter.go:267.32,275.2 7 1 +github.com/ethereum/go-ethereum/metrics/meter.go:289.32,290.24 1 1 +github.com/ethereum/go-ethereum/metrics/meter.go:290.24,292.3 1 1 +github.com/ethereum/go-ethereum/metrics/meter.go:295.38,298.31 3 1 +github.com/ethereum/go-ethereum/metrics/meter.go:298.31,300.3 1 1 +github.com/ethereum/go-ethereum/metrics/opentsdb.go:28.78,36.2 1 0 +github.com/ethereum/go-ethereum/metrics/opentsdb.go:40.43,41.39 1 0 +github.com/ethereum/go-ethereum/metrics/opentsdb.go:41.39,42.38 1 0 +github.com/ethereum/go-ethereum/metrics/opentsdb.go:42.38,44.4 1 0 +github.com/ethereum/go-ethereum/metrics/opentsdb.go:48.32,49.25 1 0 +github.com/ethereum/go-ethereum/metrics/opentsdb.go:57.2,57.22 1 0 +github.com/ethereum/go-ethereum/metrics/opentsdb.go:49.25,51.51 2 0 +github.com/ethereum/go-ethereum/metrics/opentsdb.go:51.51,53.4 1 0 +github.com/ethereum/go-ethereum/metrics/opentsdb.go:53.9,55.4 1 0 +github.com/ethereum/go-ethereum/metrics/opentsdb.go:60.40,65.16 5 0 +github.com/ethereum/go-ethereum/metrics/opentsdb.go:68.2,70.51 3 0 +github.com/ethereum/go-ethereum/metrics/opentsdb.go:118.2,118.12 1 0 +github.com/ethereum/go-ethereum/metrics/opentsdb.go:65.16,67.3 1 0 +github.com/ethereum/go-ethereum/metrics/opentsdb.go:70.51,71.29 1 0 +github.com/ethereum/go-ethereum/metrics/opentsdb.go:116.3,116.12 1 0 +github.com/ethereum/go-ethereum/metrics/opentsdb.go:72.16,73.105 1 0 +github.com/ethereum/go-ethereum/metrics/opentsdb.go:74.14,75.105 1 0 +github.com/ethereum/go-ethereum/metrics/opentsdb.go:76.21,77.105 1 0 +github.com/ethereum/go-ethereum/metrics/opentsdb.go:78.18,90.107 12 0 +github.com/ethereum/go-ethereum/metrics/opentsdb.go:91.14,97.104 6 0 +github.com/ethereum/go-ethereum/metrics/opentsdb.go:98.14,114.109 16 0 +github.com/ethereum/go-ethereum/metrics/counter.go:18.60,19.14 1 1 +github.com/ethereum/go-ethereum/metrics/counter.go:22.2,22.52 1 1 +github.com/ethereum/go-ethereum/metrics/counter.go:19.14,21.3 1 0 +github.com/ethereum/go-ethereum/metrics/counter.go:29.66,30.14 1 0 +github.com/ethereum/go-ethereum/metrics/counter.go:33.2,33.58 1 0 +github.com/ethereum/go-ethereum/metrics/counter.go:30.14,32.3 1 0 +github.com/ethereum/go-ethereum/metrics/counter.go:37.27,38.14 1 1 +github.com/ethereum/go-ethereum/metrics/counter.go:41.2,41.28 1 1 +github.com/ethereum/go-ethereum/metrics/counter.go:38.14,40.3 1 0 +github.com/ethereum/go-ethereum/metrics/counter.go:46.33,48.2 1 0 +github.com/ethereum/go-ethereum/metrics/counter.go:51.60,53.14 2 1 +github.com/ethereum/go-ethereum/metrics/counter.go:56.2,57.10 2 1 +github.com/ethereum/go-ethereum/metrics/counter.go:53.14,55.3 1 0 +github.com/ethereum/go-ethereum/metrics/counter.go:64.66,66.14 2 0 +github.com/ethereum/go-ethereum/metrics/counter.go:69.2,70.10 2 0 +github.com/ethereum/go-ethereum/metrics/counter.go:66.14,68.3 1 0 +github.com/ethereum/go-ethereum/metrics/counter.go:77.32,78.44 1 0 +github.com/ethereum/go-ethereum/metrics/counter.go:82.40,82.59 1 1 +github.com/ethereum/go-ethereum/metrics/counter.go:85.35,86.42 1 0 +github.com/ethereum/go-ethereum/metrics/counter.go:90.35,91.42 1 0 +github.com/ethereum/go-ethereum/metrics/counter.go:95.45,95.57 1 0 +github.com/ethereum/go-ethereum/metrics/counter.go:101.28,101.29 0 0 +github.com/ethereum/go-ethereum/metrics/counter.go:104.33,104.45 1 0 +github.com/ethereum/go-ethereum/metrics/counter.go:107.33,107.34 0 0 +github.com/ethereum/go-ethereum/metrics/counter.go:110.33,110.34 0 0 +github.com/ethereum/go-ethereum/metrics/counter.go:113.38,113.61 1 0 +github.com/ethereum/go-ethereum/metrics/counter.go:122.35,124.2 1 1 +github.com/ethereum/go-ethereum/metrics/counter.go:127.41,129.2 1 1 +github.com/ethereum/go-ethereum/metrics/counter.go:132.40,134.2 1 1 +github.com/ethereum/go-ethereum/metrics/counter.go:137.40,139.2 1 1 +github.com/ethereum/go-ethereum/metrics/counter.go:142.46,144.2 1 1 +github.com/ethereum/go-ethereum/metrics/ewma.go:20.34,22.2 1 1 +github.com/ethereum/go-ethereum/metrics/ewma.go:25.22,27.2 1 1 +github.com/ethereum/go-ethereum/metrics/ewma.go:30.22,32.2 1 1 +github.com/ethereum/go-ethereum/metrics/ewma.go:35.23,37.2 1 1 +github.com/ethereum/go-ethereum/metrics/ewma.go:44.38,44.59 1 0 +github.com/ethereum/go-ethereum/metrics/ewma.go:47.39,47.51 1 0 +github.com/ethereum/go-ethereum/metrics/ewma.go:50.28,51.41 1 0 +github.com/ethereum/go-ethereum/metrics/ewma.go:55.35,56.43 1 0 +github.com/ethereum/go-ethereum/metrics/ewma.go:63.31,63.45 1 0 +github.com/ethereum/go-ethereum/metrics/ewma.go:66.32,66.52 1 0 +github.com/ethereum/go-ethereum/metrics/ewma.go:69.24,69.25 0 0 +github.com/ethereum/go-ethereum/metrics/ewma.go:72.33,72.34 0 0 +github.com/ethereum/go-ethereum/metrics/ewma.go:86.39,90.2 3 1 +github.com/ethereum/go-ethereum/metrics/ewma.go:93.40,95.2 1 0 +github.com/ethereum/go-ethereum/metrics/ewma.go:99.31,105.12 6 1 +github.com/ethereum/go-ethereum/metrics/ewma.go:105.12,107.3 1 1 +github.com/ethereum/go-ethereum/metrics/ewma.go:107.8,110.3 2 1 +github.com/ethereum/go-ethereum/metrics/ewma.go:114.40,116.2 1 1 +github.com/ethereum/go-ethereum/metrics/log.go:11.52,13.2 1 0 +github.com/ethereum/go-ethereum/metrics/log.go:17.79,21.28 3 0 +github.com/ethereum/go-ethereum/metrics/log.go:21.28,22.43 1 0 +github.com/ethereum/go-ethereum/metrics/log.go:22.43,23.30 1 0 +github.com/ethereum/go-ethereum/metrics/log.go:24.17,26.53 2 0 +github.com/ethereum/go-ethereum/metrics/log.go:27.15,29.53 2 0 +github.com/ethereum/go-ethereum/metrics/log.go:30.22,32.52 2 0 +github.com/ethereum/go-ethereum/metrics/log.go:33.21,36.52 3 0 +github.com/ethereum/go-ethereum/metrics/log.go:37.19,50.48 13 0 +github.com/ethereum/go-ethereum/metrics/log.go:51.15,58.54 7 0 +github.com/ethereum/go-ethereum/metrics/log.go:59.15,76.54 17 0 +github.com/ethereum/go-ethereum/metrics/metrics.go:38.13,39.30 1 1 +github.com/ethereum/go-ethereum/metrics/metrics.go:39.30,42.40 2 1 +github.com/ethereum/go-ethereum/metrics/metrics.go:48.3,48.49 1 1 +github.com/ethereum/go-ethereum/metrics/metrics.go:42.40,43.35 1 1 +github.com/ethereum/go-ethereum/metrics/metrics.go:43.35,46.5 2 0 +github.com/ethereum/go-ethereum/metrics/metrics.go:48.49,49.44 1 1 +github.com/ethereum/go-ethereum/metrics/metrics.go:49.44,52.5 2 0 +github.com/ethereum/go-ethereum/metrics/metrics.go:59.51,61.14 1 0 +github.com/ethereum/go-ethereum/metrics/metrics.go:64.2,70.37 5 0 +github.com/ethereum/go-ethereum/metrics/metrics.go:76.2,97.20 2 0 +github.com/ethereum/go-ethereum/metrics/metrics.go:61.14,63.3 1 0 +github.com/ethereum/go-ethereum/metrics/metrics.go:70.37,74.3 3 0 +github.com/ethereum/go-ethereum/metrics/metrics.go:97.20,115.49 15 0 +github.com/ethereum/go-ethereum/metrics/metrics.go:124.3,124.22 1 0 +github.com/ethereum/go-ethereum/metrics/metrics.go:115.49,123.4 6 0 +github.com/ethereum/go-ethereum/metrics/sample.go:48.65,49.14 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:52.2,59.10 3 1 +github.com/ethereum/go-ethereum/metrics/sample.go:49.14,51.3 1 0 +github.com/ethereum/go-ethereum/metrics/sample.go:63.34,70.2 6 0 +github.com/ethereum/go-ethereum/metrics/sample.go:74.40,78.2 3 1 +github.com/ethereum/go-ethereum/metrics/sample.go:82.38,84.2 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:87.41,89.2 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:93.38,95.2 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:98.56,100.2 1 0 +github.com/ethereum/go-ethereum/metrics/sample.go:104.62,106.2 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:109.37,113.2 3 1 +github.com/ethereum/go-ethereum/metrics/sample.go:116.44,121.25 5 1 +github.com/ethereum/go-ethereum/metrics/sample.go:124.2,127.3 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:121.25,123.3 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:131.43,133.2 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:136.38,138.2 1 0 +github.com/ethereum/go-ethereum/metrics/sample.go:141.42,143.2 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:146.43,151.25 5 1 +github.com/ethereum/go-ethereum/metrics/sample.go:154.2,154.15 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:151.25,153.3 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:158.45,160.2 1 0 +github.com/ethereum/go-ethereum/metrics/sample.go:164.55,168.40 4 1 +github.com/ethereum/go-ethereum/metrics/sample.go:171.2,175.19 2 1 +github.com/ethereum/go-ethereum/metrics/sample.go:168.40,170.3 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:175.19,181.28 6 1 +github.com/ethereum/go-ethereum/metrics/sample.go:181.28,184.4 2 1 +github.com/ethereum/go-ethereum/metrics/sample.go:192.27,192.28 0 0 +github.com/ethereum/go-ethereum/metrics/sample.go:195.32,195.44 1 0 +github.com/ethereum/go-ethereum/metrics/sample.go:198.30,198.42 1 0 +github.com/ethereum/go-ethereum/metrics/sample.go:201.33,201.47 1 0 +github.com/ethereum/go-ethereum/metrics/sample.go:204.30,204.42 1 0 +github.com/ethereum/go-ethereum/metrics/sample.go:207.48,207.62 1 0 +github.com/ethereum/go-ethereum/metrics/sample.go:210.54,212.2 1 0 +github.com/ethereum/go-ethereum/metrics/sample.go:215.29,215.41 1 0 +github.com/ethereum/go-ethereum/metrics/sample.go:218.36,218.58 1 0 +github.com/ethereum/go-ethereum/metrics/sample.go:221.35,221.49 1 0 +github.com/ethereum/go-ethereum/metrics/sample.go:224.30,224.42 1 0 +github.com/ethereum/go-ethereum/metrics/sample.go:227.35,227.36 0 0 +github.com/ethereum/go-ethereum/metrics/sample.go:230.35,230.55 1 0 +github.com/ethereum/go-ethereum/metrics/sample.go:233.37,233.51 1 0 +github.com/ethereum/go-ethereum/metrics/sample.go:236.38,237.22 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:240.2,241.27 2 1 +github.com/ethereum/go-ethereum/metrics/sample.go:246.2,246.12 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:237.22,239.3 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:241.27,242.14 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:242.14,244.4 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:250.41,251.22 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:254.2,254.58 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:251.22,253.3 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:258.38,259.22 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:262.2,263.27 2 1 +github.com/ethereum/go-ethereum/metrics/sample.go:268.2,268.12 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:259.22,261.3 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:263.27,264.14 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:264.14,266.4 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:272.61,274.2 1 0 +github.com/ethereum/go-ethereum/metrics/sample.go:278.67,281.14 3 1 +github.com/ethereum/go-ethereum/metrics/sample.go:296.2,296.15 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:281.14,283.24 2 1 +github.com/ethereum/go-ethereum/metrics/sample.go:283.24,285.17 2 1 +github.com/ethereum/go-ethereum/metrics/sample.go:285.17,287.5 1 0 +github.com/ethereum/go-ethereum/metrics/sample.go:287.10,287.35 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:287.35,289.5 1 0 +github.com/ethereum/go-ethereum/metrics/sample.go:289.10,293.5 3 1 +github.com/ethereum/go-ethereum/metrics/sample.go:305.69,310.2 1 0 +github.com/ethereum/go-ethereum/metrics/sample.go:313.32,314.43 1 0 +github.com/ethereum/go-ethereum/metrics/sample.go:318.40,318.58 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:321.38,321.68 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:324.41,324.72 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:327.38,327.68 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:331.56,333.2 1 0 +github.com/ethereum/go-ethereum/metrics/sample.go:337.62,339.2 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:342.37,342.61 1 0 +github.com/ethereum/go-ethereum/metrics/sample.go:345.44,345.56 1 0 +github.com/ethereum/go-ethereum/metrics/sample.go:349.43,349.76 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:352.38,352.68 1 0 +github.com/ethereum/go-ethereum/metrics/sample.go:355.38,356.44 1 0 +github.com/ethereum/go-ethereum/metrics/sample.go:360.43,364.2 3 0 +github.com/ethereum/go-ethereum/metrics/sample.go:367.45,367.80 1 0 +github.com/ethereum/go-ethereum/metrics/sample.go:370.43,372.2 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:375.38,377.27 2 1 +github.com/ethereum/go-ethereum/metrics/sample.go:380.2,380.12 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:377.27,379.3 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:384.45,385.22 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:388.2,390.27 3 1 +github.com/ethereum/go-ethereum/metrics/sample.go:394.2,394.35 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:385.22,387.3 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:390.27,393.3 2 1 +github.com/ethereum/go-ethereum/metrics/sample.go:409.49,410.14 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:413.2,416.3 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:410.14,412.3 1 0 +github.com/ethereum/go-ethereum/metrics/sample.go:420.33,425.2 4 0 +github.com/ethereum/go-ethereum/metrics/sample.go:429.39,433.2 3 1 +github.com/ethereum/go-ethereum/metrics/sample.go:437.37,441.2 3 1 +github.com/ethereum/go-ethereum/metrics/sample.go:444.40,448.2 3 1 +github.com/ethereum/go-ethereum/metrics/sample.go:452.37,456.2 3 1 +github.com/ethereum/go-ethereum/metrics/sample.go:459.55,463.2 3 0 +github.com/ethereum/go-ethereum/metrics/sample.go:467.61,471.2 3 1 +github.com/ethereum/go-ethereum/metrics/sample.go:474.36,478.2 3 1 +github.com/ethereum/go-ethereum/metrics/sample.go:481.43,490.2 5 1 +github.com/ethereum/go-ethereum/metrics/sample.go:493.42,497.2 3 1 +github.com/ethereum/go-ethereum/metrics/sample.go:500.37,504.2 3 0 +github.com/ethereum/go-ethereum/metrics/sample.go:507.41,511.37 4 1 +github.com/ethereum/go-ethereum/metrics/sample.go:511.37,513.3 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:513.8,515.31 2 1 +github.com/ethereum/go-ethereum/metrics/sample.go:515.31,517.4 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:522.42,528.2 5 1 +github.com/ethereum/go-ethereum/metrics/sample.go:531.44,535.2 3 0 +github.com/ethereum/go-ethereum/metrics/sample.go:543.67,545.2 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:553.38,555.2 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:557.53,562.2 4 1 +github.com/ethereum/go-ethereum/metrics/sample.go:564.51,573.2 7 1 +github.com/ethereum/go-ethereum/metrics/sample.go:575.41,577.2 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:579.56,581.2 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:583.40,584.6 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:584.6,586.39 2 1 +github.com/ethereum/go-ethereum/metrics/sample.go:589.3,590.8 2 1 +github.com/ethereum/go-ethereum/metrics/sample.go:586.39,587.9 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:594.45,595.6 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:595.6,597.24 2 1 +github.com/ethereum/go-ethereum/metrics/sample.go:600.3,601.55 2 1 +github.com/ethereum/go-ethereum/metrics/sample.go:604.3,604.29 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:607.3,608.8 2 1 +github.com/ethereum/go-ethereum/metrics/sample.go:597.24,598.9 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:601.55,603.4 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:604.29,605.9 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:614.41,614.58 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:615.41,615.63 1 1 +github.com/ethereum/go-ethereum/metrics/sample.go:616.41,616.68 1 1 +github.com/ethereum/go-ethereum/metrics/cputime_unix.go:29.32,31.71 2 0 +github.com/ethereum/go-ethereum/metrics/cputime_unix.go:35.2,35.100 1 0 +github.com/ethereum/go-ethereum/metrics/cputime_unix.go:31.71,34.3 2 0 +github.com/ethereum/go-ethereum/metrics/registry.go:15.43,17.2 1 0 +github.com/ethereum/go-ethereum/metrics/registry.go:61.29,63.2 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:66.62,67.38 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:67.38,69.3 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:73.57,77.2 3 1 +github.com/ethereum/go-ethereum/metrics/registry.go:83.82,86.39 3 1 +github.com/ethereum/go-ethereum/metrics/registry.go:89.2,89.55 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:92.2,93.10 2 1 +github.com/ethereum/go-ethereum/metrics/registry.go:86.39,88.3 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:89.55,91.3 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:98.71,102.2 3 1 +github.com/ethereum/go-ethereum/metrics/registry.go:105.46,108.30 3 0 +github.com/ethereum/go-ethereum/metrics/registry.go:108.30,109.35 1 0 +github.com/ethereum/go-ethereum/metrics/registry.go:109.35,111.4 1 0 +github.com/ethereum/go-ethereum/metrics/registry.go:116.71,118.42 2 1 +github.com/ethereum/go-ethereum/metrics/registry.go:173.2,173.13 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:118.42,120.29 2 1 +github.com/ethereum/go-ethereum/metrics/registry.go:171.3,171.22 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:121.16,122.36 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:123.14,124.36 1 0 +github.com/ethereum/go-ethereum/metrics/registry.go:125.21,126.36 1 0 +github.com/ethereum/go-ethereum/metrics/registry.go:127.20,130.41 3 0 +github.com/ethereum/go-ethereum/metrics/registry.go:133.18,145.27 12 0 +github.com/ethereum/go-ethereum/metrics/registry.go:146.14,152.38 6 0 +github.com/ethereum/go-ethereum/metrics/registry.go:153.14,169.38 16 0 +github.com/ethereum/go-ethereum/metrics/registry.go:130.41,132.5 1 0 +github.com/ethereum/go-ethereum/metrics/registry.go:177.52,182.2 4 1 +github.com/ethereum/go-ethereum/metrics/registry.go:185.44,188.30 3 0 +github.com/ethereum/go-ethereum/metrics/registry.go:188.30,191.3 2 0 +github.com/ethereum/go-ethereum/metrics/registry.go:194.71,195.34 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:198.2,198.18 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:202.2,202.12 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:195.34,197.3 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:199.90,200.22 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:205.64,209.33 4 1 +github.com/ethereum/go-ethereum/metrics/registry.go:212.2,212.16 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:209.33,211.3 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:215.46,216.34 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:216.34,217.33 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:217.33,219.4 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:233.50,238.2 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:240.72,245.2 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:248.63,249.61 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:259.2,260.38 2 1 +github.com/ethereum/go-ethereum/metrics/registry.go:249.61,250.47 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:250.47,251.39 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:251.39,253.5 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:253.10,255.5 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:263.70,264.30 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:270.2,270.16 1 0 +github.com/ethereum/go-ethereum/metrics/registry.go:265.25,266.51 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:267.25,268.19 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:274.57,277.2 2 1 +github.com/ethereum/go-ethereum/metrics/registry.go:282.87,285.2 2 1 +github.com/ethereum/go-ethereum/metrics/registry.go:288.76,291.2 2 1 +github.com/ethereum/go-ethereum/metrics/registry.go:294.46,296.2 1 0 +github.com/ethereum/go-ethereum/metrics/registry.go:299.71,301.2 1 0 +github.com/ethereum/go-ethereum/metrics/registry.go:304.52,307.2 2 1 +github.com/ethereum/go-ethereum/metrics/registry.go:310.44,312.2 1 0 +github.com/ethereum/go-ethereum/metrics/registry.go:321.40,323.2 1 0 +github.com/ethereum/go-ethereum/metrics/registry.go:326.35,328.2 1 0 +github.com/ethereum/go-ethereum/metrics/registry.go:332.60,334.2 1 0 +github.com/ethereum/go-ethereum/metrics/registry.go:338.49,340.2 1 1 +github.com/ethereum/go-ethereum/metrics/registry.go:344.47,345.42 1 0 +github.com/ethereum/go-ethereum/metrics/registry.go:345.42,346.13 1 0 +github.com/ethereum/go-ethereum/metrics/registry.go:351.24,353.2 1 0 +github.com/ethereum/go-ethereum/metrics/registry.go:356.30,358.2 1 0 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:26.74,27.14 1 0 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:30.2,30.66 1 0 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:27.14,29.3 1 0 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:34.74,36.14 2 0 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:39.2,40.10 2 0 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:36.14,38.3 1 0 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:44.41,45.14 1 1 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:48.2,50.3 1 1 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:45.14,47.3 1 0 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:58.43,58.57 1 0 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:61.52,65.2 1 0 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:68.40,68.41 0 0 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:71.49,71.50 0 0 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:74.57,75.52 1 0 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:79.41,80.45 1 0 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:84.50,84.51 0 0 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:94.51,96.2 1 0 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:99.60,108.2 5 1 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:111.65,112.57 1 0 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:116.49,117.50 1 0 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:121.49,125.2 3 0 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:128.58,132.2 3 1 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:135.60,139.2 3 0 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:150.60,150.72 1 0 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:153.45,154.50 1 0 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:158.54,159.52 1 0 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:163.55,164.57 1 0 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:168.51,170.2 1 1 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:173.77,177.2 2 1 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:180.49,181.19 1 1 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:185.2,185.15 1 1 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:181.19,183.3 1 0 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:188.62,192.15 3 1 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:233.2,233.21 1 1 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:192.15,198.30 5 1 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:202.3,206.35 3 1 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:226.3,227.41 2 1 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:198.30,200.4 1 1 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:206.35,207.17 1 1 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:223.4,223.48 1 1 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:207.17,209.17 2 1 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:216.5,217.36 2 1 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:220.5,220.46 1 1 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:209.17,211.6 1 1 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:211.11,213.6 1 0 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:217.36,219.6 1 1 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:228.8,231.3 2 1 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:239.41,239.58 1 1 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:240.41,240.63 1 1 +github.com/ethereum/go-ethereum/metrics/resetting_timer.go:241.41,241.68 1 1 +github.com/ethereum/go-ethereum/metrics/writer.go:12.54,13.25 1 0 +github.com/ethereum/go-ethereum/metrics/writer.go:13.25,15.3 1 0 +github.com/ethereum/go-ethereum/metrics/writer.go:20.41,22.42 2 0 +github.com/ethereum/go-ethereum/metrics/writer.go:26.2,27.43 2 0 +github.com/ethereum/go-ethereum/metrics/writer.go:22.42,24.3 1 0 +github.com/ethereum/go-ethereum/metrics/writer.go:27.43,28.41 1 0 +github.com/ethereum/go-ethereum/metrics/writer.go:29.16,31.58 2 0 +github.com/ethereum/go-ethereum/metrics/writer.go:32.14,34.58 2 0 +github.com/ethereum/go-ethereum/metrics/writer.go:35.21,37.57 2 0 +github.com/ethereum/go-ethereum/metrics/writer.go:38.20,41.57 3 0 +github.com/ethereum/go-ethereum/metrics/writer.go:42.18,55.53 13 0 +github.com/ethereum/go-ethereum/metrics/writer.go:56.14,63.59 7 0 +github.com/ethereum/go-ethereum/metrics/writer.go:64.14,81.59 17 0 +github.com/ethereum/go-ethereum/metrics/writer.go:94.39,94.58 1 1 +github.com/ethereum/go-ethereum/metrics/writer.go:96.44,96.79 1 1 +github.com/ethereum/go-ethereum/metrics/writer.go:98.49,100.2 1 1 +github.com/ethereum/go-ethereum/metrics/cpu_enabled.go:28.36,31.16 2 0 +github.com/ethereum/go-ethereum/metrics/cpu_enabled.go:35.2,35.25 1 0 +github.com/ethereum/go-ethereum/metrics/cpu_enabled.go:40.2,43.39 4 0 +github.com/ethereum/go-ethereum/metrics/cpu_enabled.go:31.16,34.3 2 0 +github.com/ethereum/go-ethereum/metrics/cpu_enabled.go:35.25,38.3 2 0 +github.com/ethereum/go-ethereum/metrics/gauge.go:16.56,17.14 1 1 +github.com/ethereum/go-ethereum/metrics/gauge.go:20.2,20.48 1 1 +github.com/ethereum/go-ethereum/metrics/gauge.go:17.14,19.3 1 1 +github.com/ethereum/go-ethereum/metrics/gauge.go:24.23,25.14 1 1 +github.com/ethereum/go-ethereum/metrics/gauge.go:28.2,28.26 1 1 +github.com/ethereum/go-ethereum/metrics/gauge.go:25.14,27.3 1 0 +github.com/ethereum/go-ethereum/metrics/gauge.go:32.56,34.14 2 1 +github.com/ethereum/go-ethereum/metrics/gauge.go:37.2,38.10 2 1 +github.com/ethereum/go-ethereum/metrics/gauge.go:34.14,36.3 1 0 +github.com/ethereum/go-ethereum/metrics/gauge.go:42.47,43.14 1 1 +github.com/ethereum/go-ethereum/metrics/gauge.go:46.2,46.35 1 1 +github.com/ethereum/go-ethereum/metrics/gauge.go:43.14,45.3 1 0 +github.com/ethereum/go-ethereum/metrics/gauge.go:50.82,52.14 2 1 +github.com/ethereum/go-ethereum/metrics/gauge.go:55.2,56.10 2 1 +github.com/ethereum/go-ethereum/metrics/gauge.go:52.14,54.3 1 0 +github.com/ethereum/go-ethereum/metrics/gauge.go:63.41,63.53 1 0 +github.com/ethereum/go-ethereum/metrics/gauge.go:66.36,67.43 1 0 +github.com/ethereum/go-ethereum/metrics/gauge.go:71.33,72.40 1 0 +github.com/ethereum/go-ethereum/metrics/gauge.go:76.33,77.40 1 0 +github.com/ethereum/go-ethereum/metrics/gauge.go:81.38,81.57 1 1 +github.com/ethereum/go-ethereum/metrics/gauge.go:87.34,87.55 1 0 +github.com/ethereum/go-ethereum/metrics/gauge.go:90.34,90.35 0 0 +github.com/ethereum/go-ethereum/metrics/gauge.go:93.31,93.32 0 0 +github.com/ethereum/go-ethereum/metrics/gauge.go:96.31,96.32 0 0 +github.com/ethereum/go-ethereum/metrics/gauge.go:99.31,99.43 1 0 +github.com/ethereum/go-ethereum/metrics/gauge.go:108.42,110.2 1 1 +github.com/ethereum/go-ethereum/metrics/gauge.go:113.41,115.2 1 1 +github.com/ethereum/go-ethereum/metrics/gauge.go:118.39,120.2 1 1 +github.com/ethereum/go-ethereum/metrics/gauge.go:123.38,125.2 1 0 +github.com/ethereum/go-ethereum/metrics/gauge.go:128.38,130.2 1 0 +github.com/ethereum/go-ethereum/metrics/gauge.go:138.40,140.2 1 1 +github.com/ethereum/go-ethereum/metrics/gauge.go:143.43,143.78 1 0 +github.com/ethereum/go-ethereum/metrics/gauge.go:146.38,147.45 1 0 +github.com/ethereum/go-ethereum/metrics/gauge.go:151.35,152.42 1 0 +github.com/ethereum/go-ethereum/metrics/gauge.go:156.35,157.42 1 0 +github.com/ethereum/go-ethereum/metrics/gauge_float64.go:14.70,15.14 1 1 +github.com/ethereum/go-ethereum/metrics/gauge_float64.go:18.2,18.64 1 1 +github.com/ethereum/go-ethereum/metrics/gauge_float64.go:15.14,17.3 1 0 +github.com/ethereum/go-ethereum/metrics/gauge_float64.go:22.37,23.14 1 1 +github.com/ethereum/go-ethereum/metrics/gauge_float64.go:26.2,28.3 1 1 +github.com/ethereum/go-ethereum/metrics/gauge_float64.go:23.14,25.3 1 0 +github.com/ethereum/go-ethereum/metrics/gauge_float64.go:32.70,34.14 2 1 +github.com/ethereum/go-ethereum/metrics/gauge_float64.go:37.2,38.10 2 1 +github.com/ethereum/go-ethereum/metrics/gauge_float64.go:34.14,36.3 1 0 +github.com/ethereum/go-ethereum/metrics/gauge_float64.go:42.63,43.14 1 1 +github.com/ethereum/go-ethereum/metrics/gauge_float64.go:46.2,46.42 1 1 +github.com/ethereum/go-ethereum/metrics/gauge_float64.go:43.14,45.3 1 0 +github.com/ethereum/go-ethereum/metrics/gauge_float64.go:50.98,52.14 2 1 +github.com/ethereum/go-ethereum/metrics/gauge_float64.go:55.2,56.10 2 1 +github.com/ethereum/go-ethereum/metrics/gauge_float64.go:52.14,54.3 1 0 +github.com/ethereum/go-ethereum/metrics/gauge_float64.go:63.55,63.67 1 0 +github.com/ethereum/go-ethereum/metrics/gauge_float64.go:66.45,67.50 1 0 +github.com/ethereum/go-ethereum/metrics/gauge_float64.go:71.47,71.68 1 1 +github.com/ethereum/go-ethereum/metrics/gauge_float64.go:77.48,77.76 1 0 +github.com/ethereum/go-ethereum/metrics/gauge_float64.go:80.43,80.44 0 0 +github.com/ethereum/go-ethereum/metrics/gauge_float64.go:83.40,83.54 1 0 +github.com/ethereum/go-ethereum/metrics/gauge_float64.go:93.56,95.2 1 1 +github.com/ethereum/go-ethereum/metrics/gauge_float64.go:98.50,102.2 3 1 +github.com/ethereum/go-ethereum/metrics/gauge_float64.go:105.48,109.2 3 1 +github.com/ethereum/go-ethereum/metrics/gauge_float64.go:117.49,119.2 1 1 +github.com/ethereum/go-ethereum/metrics/gauge_float64.go:122.57,122.99 1 0 +github.com/ethereum/go-ethereum/metrics/gauge_float64.go:125.47,126.52 1 0 +github.com/ethereum/go-ethereum/metrics/runtime_cgo.go:8.25,10.2 1 1 +github.com/ethereum/go-ethereum/metrics/runtime_gccpufraction.go:8.56,10.2 1 1 +github.com/ethereum/go-ethereum/metrics/disk_nop.go:25.44,27.2 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:22.74,23.14 1 1 +github.com/ethereum/go-ethereum/metrics/histogram.go:26.2,26.48 1 1 +github.com/ethereum/go-ethereum/metrics/histogram.go:23.14,25.3 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:26.48,26.74 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:31.85,32.14 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:35.2,35.48 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:32.14,34.3 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:35.48,35.76 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:39.39,40.14 1 1 +github.com/ethereum/go-ethereum/metrics/histogram.go:43.2,43.38 1 1 +github.com/ethereum/go-ethereum/metrics/histogram.go:40.14,42.3 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:48.74,50.14 2 1 +github.com/ethereum/go-ethereum/metrics/histogram.go:53.2,54.10 2 1 +github.com/ethereum/go-ethereum/metrics/histogram.go:50.14,52.3 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:63.35,64.46 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:69.43,69.70 1 1 +github.com/ethereum/go-ethereum/metrics/histogram.go:73.41,73.66 1 1 +github.com/ethereum/go-ethereum/metrics/histogram.go:77.44,77.70 1 1 +github.com/ethereum/go-ethereum/metrics/histogram.go:81.41,81.66 1 1 +github.com/ethereum/go-ethereum/metrics/histogram.go:85.59,87.2 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:91.65,93.2 1 1 +github.com/ethereum/go-ethereum/metrics/histogram.go:96.45,96.64 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:99.50,99.62 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:103.46,103.74 1 1 +github.com/ethereum/go-ethereum/metrics/histogram.go:106.41,106.66 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:109.41,110.47 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:114.48,114.78 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:120.30,120.31 0 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:123.35,123.47 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:126.33,126.45 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:129.36,129.50 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:132.33,132.45 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:135.51,135.65 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:138.57,140.2 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:143.37,143.59 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:146.42,146.67 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:149.38,149.52 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:152.33,152.45 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:155.38,155.39 0 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:158.40,158.54 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:167.37,167.57 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:171.43,171.70 1 1 +github.com/ethereum/go-ethereum/metrics/histogram.go:174.41,174.66 1 1 +github.com/ethereum/go-ethereum/metrics/histogram.go:177.44,177.70 1 1 +github.com/ethereum/go-ethereum/metrics/histogram.go:180.41,180.66 1 1 +github.com/ethereum/go-ethereum/metrics/histogram.go:183.59,185.2 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:189.65,191.2 1 1 +github.com/ethereum/go-ethereum/metrics/histogram.go:194.45,194.64 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:197.50,199.2 1 1 +github.com/ethereum/go-ethereum/metrics/histogram.go:202.46,202.74 1 1 +github.com/ethereum/go-ethereum/metrics/histogram.go:205.41,205.66 1 0 +github.com/ethereum/go-ethereum/metrics/histogram.go:208.45,208.67 1 1 +github.com/ethereum/go-ethereum/metrics/histogram.go:211.48,211.78 1 0 +github.com/ethereum/go-ethereum/metrics/runtime.go:57.58,58.25 1 0 +github.com/ethereum/go-ethereum/metrics/runtime.go:58.25,60.3 1 0 +github.com/ethereum/go-ethereum/metrics/runtime.go:71.45,78.22 6 1 +github.com/ethereum/go-ethereum/metrics/runtime.go:83.2,83.23 1 1 +github.com/ethereum/go-ethereum/metrics/runtime.go:89.2,110.59 20 1 +github.com/ethereum/go-ethereum/metrics/runtime.go:125.2,142.69 14 1 +github.com/ethereum/go-ethereum/metrics/runtime.go:78.22,80.3 1 0 +github.com/ethereum/go-ethereum/metrics/runtime.go:80.8,82.3 1 1 +github.com/ethereum/go-ethereum/metrics/runtime.go:83.23,85.3 1 1 +github.com/ethereum/go-ethereum/metrics/runtime.go:85.8,87.3 1 0 +github.com/ethereum/go-ethereum/metrics/runtime.go:110.59,111.53 1 1 +github.com/ethereum/go-ethereum/metrics/runtime.go:111.53,113.4 1 1 +github.com/ethereum/go-ethereum/metrics/runtime.go:114.8,115.13 1 1 +github.com/ethereum/go-ethereum/metrics/runtime.go:121.3,121.21 1 1 +github.com/ethereum/go-ethereum/metrics/runtime.go:115.13,116.49 1 0 +github.com/ethereum/go-ethereum/metrics/runtime.go:119.4,119.9 1 0 +github.com/ethereum/go-ethereum/metrics/runtime.go:116.49,118.5 1 0 +github.com/ethereum/go-ethereum/metrics/runtime.go:121.21,123.4 1 1 +github.com/ethereum/go-ethereum/metrics/runtime.go:148.42,212.2 62 1 +github.com/ethereum/go-ethereum/metrics/debug.go:24.55,25.25 1 0 +github.com/ethereum/go-ethereum/metrics/debug.go:25.25,27.3 1 0 +github.com/ethereum/go-ethereum/metrics/debug.go:38.42,46.56 7 0 +github.com/ethereum/go-ethereum/metrics/debug.go:50.2,50.67 1 0 +github.com/ethereum/go-ethereum/metrics/debug.go:46.56,48.3 1 0 +github.com/ethereum/go-ethereum/metrics/debug.go:56.39,70.2 10 0 +github.com/ethereum/go-ethereum/metrics/debug.go:74.13,76.2 1 1 +github.com/ethereum/go-ethereum/metrics/json.go:11.58,13.2 1 1 +github.com/ethereum/go-ethereum/metrics/json.go:17.58,18.25 1 0 +github.com/ethereum/go-ethereum/metrics/json.go:18.25,20.3 1 0 +github.com/ethereum/go-ethereum/metrics/json.go:25.45,27.2 1 1 +github.com/ethereum/go-ethereum/metrics/json.go:29.58,31.2 1 0 +github.com/ethereum/go-ethereum/metrics/syslog.go:14.60,15.25 1 0 +github.com/ethereum/go-ethereum/metrics/syslog.go:15.25,16.43 1 0 +github.com/ethereum/go-ethereum/metrics/syslog.go:16.43,17.30 1 0 +github.com/ethereum/go-ethereum/metrics/syslog.go:18.17,19.71 1 0 +github.com/ethereum/go-ethereum/metrics/syslog.go:20.15,21.69 1 0 +github.com/ethereum/go-ethereum/metrics/syslog.go:22.22,23.69 1 0 +github.com/ethereum/go-ethereum/metrics/syslog.go:24.21,26.75 2 0 +github.com/ethereum/go-ethereum/metrics/syslog.go:27.19,43.7 3 0 +github.com/ethereum/go-ethereum/metrics/syslog.go:44.15,54.7 2 0 +github.com/ethereum/go-ethereum/metrics/syslog.go:55.15,75.7 3 0 +github.com/ethereum/go-ethereum/metrics/timer.go:34.56,35.14 1 1 +github.com/ethereum/go-ethereum/metrics/timer.go:38.2,38.48 1 1 +github.com/ethereum/go-ethereum/metrics/timer.go:35.14,37.3 1 1 +github.com/ethereum/go-ethereum/metrics/timer.go:43.49,44.14 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:47.2,50.3 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:44.14,46.3 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:56.56,58.14 2 1 +github.com/ethereum/go-ethereum/metrics/timer.go:61.2,62.10 2 1 +github.com/ethereum/go-ethereum/metrics/timer.go:58.14,60.3 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:68.23,69.14 1 1 +github.com/ethereum/go-ethereum/metrics/timer.go:72.2,75.3 1 1 +github.com/ethereum/go-ethereum/metrics/timer.go:69.14,71.3 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:82.31,82.43 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:85.29,85.41 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:88.32,88.46 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:91.29,91.41 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:94.47,94.61 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:97.53,99.2 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:102.33,102.47 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:105.33,105.47 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:108.34,108.48 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:111.36,111.50 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:114.34,114.55 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:117.34,117.48 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:120.25,120.26 0 0 +github.com/ethereum/go-ethereum/metrics/timer.go:123.29,123.41 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:126.31,126.32 0 0 +github.com/ethereum/go-ethereum/metrics/timer.go:129.40,129.41 0 0 +github.com/ethereum/go-ethereum/metrics/timer.go:132.41,132.42 0 0 +github.com/ethereum/go-ethereum/metrics/timer.go:135.36,135.50 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:146.39,148.2 1 1 +github.com/ethereum/go-ethereum/metrics/timer.go:151.37,153.2 1 1 +github.com/ethereum/go-ethereum/metrics/timer.go:156.40,158.2 1 1 +github.com/ethereum/go-ethereum/metrics/timer.go:161.37,163.2 1 1 +github.com/ethereum/go-ethereum/metrics/timer.go:166.55,168.2 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:172.61,174.2 1 1 +github.com/ethereum/go-ethereum/metrics/timer.go:177.41,179.2 1 1 +github.com/ethereum/go-ethereum/metrics/timer.go:182.41,184.2 1 1 +github.com/ethereum/go-ethereum/metrics/timer.go:187.42,189.2 1 1 +github.com/ethereum/go-ethereum/metrics/timer.go:192.44,194.2 1 1 +github.com/ethereum/go-ethereum/metrics/timer.go:197.42,204.2 3 0 +github.com/ethereum/go-ethereum/metrics/timer.go:207.42,209.2 1 1 +github.com/ethereum/go-ethereum/metrics/timer.go:212.32,214.2 1 1 +github.com/ethereum/go-ethereum/metrics/timer.go:217.37,219.2 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:222.40,226.2 3 1 +github.com/ethereum/go-ethereum/metrics/timer.go:229.49,234.2 4 1 +github.com/ethereum/go-ethereum/metrics/timer.go:237.51,242.2 4 1 +github.com/ethereum/go-ethereum/metrics/timer.go:245.44,247.2 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:257.39,257.69 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:260.37,260.65 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:263.40,263.69 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:266.37,266.65 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:270.55,272.2 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:276.61,278.2 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:282.41,282.67 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:286.41,286.67 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:290.42,290.69 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:294.44,294.73 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:297.42,297.54 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:301.42,301.73 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:304.33,304.34 0 0 +github.com/ethereum/go-ethereum/metrics/timer.go:307.37,307.65 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:310.36,311.41 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:315.45,316.43 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:320.46,321.48 1 0 +github.com/ethereum/go-ethereum/metrics/timer.go:326.44,326.77 1 0 +github.com/ethereum/go-ethereum/metrics/resetting_sample.go:7.44,11.2 1 0 +github.com/ethereum/go-ethereum/metrics/resetting_sample.go:20.46,24.2 3 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:133.31,135.2 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:153.62,155.38 2 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:160.2,160.63 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:155.38,157.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:157.8,157.46 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:157.46,159.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:169.32,169.52 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:170.32,170.53 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:172.32,172.52 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:173.32,173.53 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:175.36,175.60 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:176.36,176.61 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:178.37,178.62 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:179.37,179.63 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:181.38,181.64 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:182.38,182.65 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:184.39,184.66 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:185.39,185.67 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:188.30,190.2 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:209.59,210.29 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:213.2,215.36 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:218.2,219.16 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:223.2,224.36 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:240.2,242.32 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:210.29,212.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:215.36,217.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:219.16,221.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:225.18,226.18 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:227.18,228.18 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:229.22,230.22 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:231.23,232.23 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:233.24,234.24 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:235.25,236.25 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:237.10,238.67 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:246.82,250.43 4 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:253.2,255.16 3 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:258.2,262.26 4 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:250.43,252.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:255.16,257.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:266.63,268.16 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:271.2,272.17 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:268.16,270.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:276.48,281.2 4 1 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:284.77,289.34 5 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:292.2,292.15 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:289.34,291.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/command.go:29.33,34.2 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/command.go:37.37,39.2 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/command.go:42.42,44.42 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/command.go:50.2,51.42 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/command.go:62.2,62.50 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/command.go:66.2,69.16 3 0 +github.com/ethereum/go-ethereum/internal/cli/server/command.go:73.2,75.26 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/command.go:44.42,47.3 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/command.go:51.42,53.17 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/command.go:57.3,57.43 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/command.go:53.17,56.4 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/command.go:57.43,60.4 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/command.go:62.50,65.3 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/command.go:69.16,72.3 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/command.go:78.39,88.12 7 0 +github.com/ethereum/go-ethereum/internal/cli/server/command.go:93.2,93.26 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/command.go:101.2,101.10 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/command.go:88.12,91.3 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/command.go:93.26,94.10 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/command.go:95.19,96.79 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/command.go:97.21,98.12 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:381.30,508.2 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:510.37,521.24 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:538.2,538.12 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:521.24,522.19 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:522.19,526.39 3 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:531.4,531.11 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:534.4,535.13 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:526.39,528.5 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:528.10,530.5 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:531.11,533.5 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:541.44,552.24 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:562.2,562.12 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:552.24,553.50 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:553.50,555.18 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:558.4,559.13 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:555.18,557.5 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:565.51,567.20 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:576.2,581.64 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:584.2,584.44 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:587.2,587.51 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:590.2,590.20 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:567.20,570.17 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:573.3,573.32 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:570.17,572.4 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:581.64,583.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:584.44,586.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:587.51,589.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:593.36,594.25 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:597.2,598.9 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:601.2,604.32 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:609.2,609.26 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:614.2,614.12 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:594.25,596.3 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:598.9,600.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:604.32,606.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:609.26,611.3 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:611.8,613.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:617.72,619.16 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:622.2,626.26 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:630.2,634.2 3 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:670.2,670.25 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:777.2,778.22 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:783.2,787.20 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:797.2,797.18 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:811.2,811.16 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:821.2,822.16 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:619.16,621.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:626.26,629.3 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:634.2,639.3 4 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:642.2,653.3 10 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:656.2,661.55 4 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:661.55,662.39 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:665.4,665.54 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:662.39,664.5 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:670.25,673.94 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:678.3,684.46 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:694.3,694.58 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:697.3,713.30 7 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:673.94,675.4 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:684.46,686.4 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:686.9,686.50 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:686.50,688.4 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:688.9,690.18 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:690.18,692.5 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:694.58,696.4 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:713.30,715.4 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:719.2,722.3 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:725.2,727.33 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:727.33,729.18 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:732.4,733.55 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:736.4,736.39 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:729.18,731.5 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:733.55,735.5 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:741.2,743.36 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:748.3,749.17 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:761.3,774.42 12 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:743.36,745.4 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:749.17,750.67 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:754.4,755.25 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:750.67,753.5 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:755.25,758.5 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:778.22,780.3 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:780.8,782.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:788.14,789.35 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:790.14,791.35 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:792.10,793.65 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:798.14,799.22 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:800.17,802.19 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:806.10,807.60 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:802.19,805.4 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:811.16,812.40 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:812.40,814.4 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:814.9,818.4 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:831.52,833.27 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:840.2,865.25 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:887.2,888.16 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:891.2,894.26 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:915.2,915.22 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:920.2,920.17 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:833.27,835.30 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:835.30,837.4 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:865.25,873.3 5 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:876.2,877.29 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:881.3,881.27 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:877.29,880.4 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:881.27,884.4 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:888.16,890.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:894.26,898.26 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:901.3,901.74 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:904.3,904.94 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:907.3,907.89 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:910.3,910.91 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:898.26,900.4 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:901.74,903.4 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:904.94,906.4 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:907.89,909.4 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:910.91,912.4 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:915.22,919.3 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:923.45,924.26 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:929.2,929.12 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:924.26,925.89 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:925.89,927.4 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:932.41,934.16 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:937.2,938.16 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:941.2,941.29 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:934.16,936.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:938.16,940.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:944.59,946.27 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:955.2,955.17 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:946.27,947.16 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:947.16,949.18 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:952.4,952.27 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:949.18,951.5 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:958.30,961.16 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:965.2,965.22 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:961.16,964.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:966.16,967.47 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:968.17,970.20 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:974.3,974.39 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:975.10,976.37 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:970.20,972.59 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:980.24,982.16 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:985.2,985.17 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config.go:982.16,984.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/config_legacy.go:18.41,23.2 4 1 +github.com/ethereum/go-ethereum/internal/cli/server/config_legacy.go:25.53,29.42 3 1 +github.com/ethereum/go-ethereum/internal/cli/server/config_legacy.go:32.2,32.29 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/config_legacy.go:29.42,31.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/flags.go:7.44,484.2 91 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:44.49,52.62 3 1 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:57.2,57.43 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:62.2,63.16 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:66.2,67.16 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:70.2,73.2 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:83.2,84.16 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:88.2,89.16 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:92.2,98.36 3 1 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:105.2,105.27 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:112.2,112.55 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:118.2,118.72 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:123.2,123.41 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:126.2,126.17 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:52.62,54.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:57.43,59.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:63.16,65.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:67.16,69.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:73.2,76.40 3 1 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:79.3,79.72 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:76.40,78.4 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:84.16,86.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:89.16,91.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:98.36,99.107 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:99.107,101.4 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:105.27,106.100 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:106.100,108.4 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:112.55,113.48 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:113.48,115.4 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:118.72,120.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:123.41,125.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:129.25,133.21 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:133.21,134.65 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:134.65,136.4 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:140.82,144.22 3 1 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:149.2,152.106 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:172.2,174.33 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:195.2,195.40 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:236.2,236.12 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:144.22,147.3 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:152.106,153.29 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:157.3,161.16 4 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:165.3,165.16 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:153.29,155.4 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:161.16,164.4 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:165.16,168.4 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:174.33,178.85 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:182.3,187.13 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:178.85,180.4 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:187.13,188.54 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:188.54,190.5 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:195.40,205.17 3 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:210.3,215.17 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:221.3,233.28 5 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:205.17,207.4 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:215.17,217.4 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:239.53,244.16 4 1 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:248.2,248.12 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:254.2,255.12 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:244.16,246.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:248.12,249.49 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:249.49,251.4 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:258.66,260.2 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:262.157,267.2 4 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:269.35,272.14 3 1 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:275.2,280.16 4 1 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:285.2,285.32 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:272.14,274.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:280.16,282.3 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/server.go:282.8,284.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:21.85,27.18 5 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:35.2,35.16 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:40.2,48.16 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:53.2,56.72 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:60.2,60.47 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:65.2,68.16 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:71.2,71.12 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:28.30,29.66 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:30.32,31.61 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:32.33,33.59 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:35.16,37.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:48.16,50.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:56.72,58.4 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:60.47,62.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:68.16,70.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:74.109,76.16 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:79.2,80.17 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:85.2,85.39 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:76.16,78.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:80.17,82.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:82.8,84.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:88.118,90.16 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:93.2,94.17 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:99.2,99.42 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:90.16,92.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:94.17,96.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:96.8,98.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:102.112,106.26 3 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:109.2,109.18 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:106.26,108.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:112.118,114.48 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:122.2,123.21 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:126.2,126.18 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:114.48,115.41 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:115.41,116.23 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:119.4,119.16 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:116.23,118.5 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:123.21,125.3 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:129.53,139.2 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:141.121,144.2 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:146.93,163.2 4 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:165.57,170.2 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:175.74,178.36 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:220.2,220.14 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:178.36,180.34 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:184.3,187.40 3 1 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:180.34,182.4 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:187.40,190.42 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:193.4,193.47 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:197.4,202.29 3 1 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:217.4,217.31 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:190.42,191.13 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:193.47,194.13 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:203.17,205.20 2 1 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:210.24,211.35 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:213.12,214.13 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:205.20,207.6 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:207.11,209.6 1 1 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:223.72,227.31 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:235.2,235.19 1 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:227.31,233.3 2 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:238.99,246.6 5 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:246.6,253.17 3 0 +github.com/ethereum/go-ethereum/internal/cli/server/service.go:253.17,255.4 1 0 +github.com/ethereum/go-ethereum/p2p/peer_error.go:39.73,41.9 2 1 +github.com/ethereum/go-ethereum/p2p/peer_error.go:44.2,45.18 2 1 +github.com/ethereum/go-ethereum/p2p/peer_error.go:48.2,48.12 1 1 +github.com/ethereum/go-ethereum/p2p/peer_error.go:41.9,42.30 1 0 +github.com/ethereum/go-ethereum/p2p/peer_error.go:45.18,47.3 1 1 +github.com/ethereum/go-ethereum/p2p/peer_error.go:51.37,53.2 1 0 +github.com/ethereum/go-ethereum/p2p/peer_error.go:91.37,92.39 1 1 +github.com/ethereum/go-ethereum/p2p/peer_error.go:95.2,95.30 1 1 +github.com/ethereum/go-ethereum/p2p/peer_error.go:92.39,94.3 1 0 +github.com/ethereum/go-ethereum/p2p/peer_error.go:98.36,100.2 1 1 +github.com/ethereum/go-ethereum/p2p/peer_error.go:102.47,103.40 1 1 +github.com/ethereum/go-ethereum/p2p/peer_error.go:106.2,106.32 1 1 +github.com/ethereum/go-ethereum/p2p/peer_error.go:109.2,110.8 2 1 +github.com/ethereum/go-ethereum/p2p/peer_error.go:118.2,118.29 1 1 +github.com/ethereum/go-ethereum/p2p/peer_error.go:103.40,105.3 1 1 +github.com/ethereum/go-ethereum/p2p/peer_error.go:106.32,108.3 1 1 +github.com/ethereum/go-ethereum/p2p/peer_error.go:110.8,111.25 1 0 +github.com/ethereum/go-ethereum/p2p/peer_error.go:112.41,113.28 1 0 +github.com/ethereum/go-ethereum/p2p/peer_error.go:114.11,115.31 1 0 +github.com/ethereum/go-ethereum/p2p/protocol.go:66.29,68.2 1 1 +github.com/ethereum/go-ethereum/p2p/protocol.go:76.32,78.2 1 0 +github.com/ethereum/go-ethereum/p2p/protocol.go:82.47,82.65 1 1 +github.com/ethereum/go-ethereum/p2p/protocol.go:83.47,83.78 1 1 +github.com/ethereum/go-ethereum/p2p/protocol.go:84.52,86.2 1 1 +github.com/ethereum/go-ethereum/p2p/transport.go:54.66,56.2 1 1 +github.com/ethereum/go-ethereum/p2p/transport.go:58.48,65.16 6 1 +github.com/ethereum/go-ethereum/p2p/transport.go:78.2,78.17 1 1 +github.com/ethereum/go-ethereum/p2p/transport.go:65.16,77.3 2 1 +github.com/ethereum/go-ethereum/p2p/transport.go:81.49,87.75 4 1 +github.com/ethereum/go-ethereum/p2p/transport.go:92.2,94.16 3 1 +github.com/ethereum/go-ethereum/p2p/transport.go:99.2,100.48 2 1 +github.com/ethereum/go-ethereum/p2p/transport.go:105.2,105.12 1 1 +github.com/ethereum/go-ethereum/p2p/transport.go:87.75,89.3 1 0 +github.com/ethereum/go-ethereum/p2p/transport.go:94.16,96.3 1 1 +github.com/ethereum/go-ethereum/p2p/transport.go:100.48,104.3 3 0 +github.com/ethereum/go-ethereum/p2p/transport.go:108.42,115.19 3 1 +github.com/ethereum/go-ethereum/p2p/transport.go:126.2,126.16 1 1 +github.com/ethereum/go-ethereum/p2p/transport.go:115.19,116.61 1 1 +github.com/ethereum/go-ethereum/p2p/transport.go:116.61,118.60 2 1 +github.com/ethereum/go-ethereum/p2p/transport.go:118.60,123.5 3 1 +github.com/ethereum/go-ethereum/p2p/transport.go:129.89,132.2 2 1 +github.com/ethereum/go-ethereum/p2p/transport.go:134.98,140.12 2 1 +github.com/ethereum/go-ethereum/p2p/transport.go:141.2,141.55 1 1 +github.com/ethereum/go-ethereum/p2p/transport.go:145.2,145.31 1 1 +github.com/ethereum/go-ethereum/p2p/transport.go:149.2,151.19 2 1 +github.com/ethereum/go-ethereum/p2p/transport.go:140.12,140.50 1 1 +github.com/ethereum/go-ethereum/p2p/transport.go:141.55,144.3 2 0 +github.com/ethereum/go-ethereum/p2p/transport.go:145.31,147.3 1 0 +github.com/ethereum/go-ethereum/p2p/transport.go:154.67,156.16 2 1 +github.com/ethereum/go-ethereum/p2p/transport.go:159.2,159.39 1 1 +github.com/ethereum/go-ethereum/p2p/transport.go:162.2,162.25 1 1 +github.com/ethereum/go-ethereum/p2p/transport.go:171.2,171.30 1 1 +github.com/ethereum/go-ethereum/p2p/transport.go:174.2,175.40 2 1 +github.com/ethereum/go-ethereum/p2p/transport.go:178.2,178.51 1 1 +github.com/ethereum/go-ethereum/p2p/transport.go:181.2,181.17 1 1 +github.com/ethereum/go-ethereum/p2p/transport.go:156.16,158.3 1 0 +github.com/ethereum/go-ethereum/p2p/transport.go:159.39,161.3 1 1 +github.com/ethereum/go-ethereum/p2p/transport.go:162.25,170.3 3 1 +github.com/ethereum/go-ethereum/p2p/transport.go:171.30,173.3 1 1 +github.com/ethereum/go-ethereum/p2p/transport.go:175.40,177.3 1 1 +github.com/ethereum/go-ethereum/p2p/transport.go:178.51,180.3 1 1 +github.com/ethereum/go-ethereum/p2p/util.go:35.47,37.2 1 1 +github.com/ethereum/go-ethereum/p2p/util.go:40.56,42.2 1 1 +github.com/ethereum/go-ethereum/p2p/util.go:45.45,46.22 1 1 +github.com/ethereum/go-ethereum/p2p/util.go:51.2,51.14 1 1 +github.com/ethereum/go-ethereum/p2p/util.go:46.22,47.21 1 1 +github.com/ethereum/go-ethereum/p2p/util.go:47.21,49.4 1 1 +github.com/ethereum/go-ethereum/p2p/util.go:55.66,56.42 1 1 +github.com/ethereum/go-ethereum/p2p/util.go:56.42,58.19 2 1 +github.com/ethereum/go-ethereum/p2p/util.go:58.19,60.4 1 1 +github.com/ethereum/go-ethereum/p2p/util.go:65.39,65.56 1 1 +github.com/ethereum/go-ethereum/p2p/util.go:66.39,66.69 1 1 +github.com/ethereum/go-ethereum/p2p/util.go:67.39,67.66 1 1 +github.com/ethereum/go-ethereum/p2p/util.go:68.39,68.71 1 1 +github.com/ethereum/go-ethereum/p2p/util.go:69.37,75.2 5 1 +github.com/ethereum/go-ethereum/p2p/dial.go:66.82,68.2 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:70.39,72.2 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:144.49,145.29 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:148.2,148.20 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:151.2,151.22 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:154.2,154.21 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:160.2,160.12 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:145.29,147.3 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:148.20,150.3 1 0 +github.com/ethereum/go-ethereum/p2p/dial.go:151.22,153.3 1 0 +github.com/ethereum/go-ethereum/p2p/dial.go:154.21,159.3 4 1 +github.com/ethereum/go-ethereum/p2p/dial.go:163.101,183.2 7 1 +github.com/ethereum/go-ethereum/p2p/dial.go:186.32,189.2 2 1 +github.com/ethereum/go-ethereum/p2p/dial.go:192.50,193.9 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:194.26,194.26 0 1 +github.com/ethereum/go-ethereum/p2p/dial.go:195.22,195.22 0 0 +github.com/ethereum/go-ethereum/p2p/dial.go:200.53,201.9 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:202.26,202.26 0 1 +github.com/ethereum/go-ethereum/p2p/dial.go:203.22,203.22 0 0 +github.com/ethereum/go-ethereum/p2p/dial.go:208.44,209.9 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:210.24,210.24 0 1 +github.com/ethereum/go-ethereum/p2p/dial.go:211.22,211.22 0 0 +github.com/ethereum/go-ethereum/p2p/dial.go:216.46,217.9 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:218.24,218.24 0 1 +github.com/ethereum/go-ethereum/p2p/dial.go:219.22,219.22 0 0 +github.com/ethereum/go-ethereum/p2p/dial.go:224.49,231.6 2 1 +github.com/ethereum/go-ethereum/p2p/dial.go:310.2,311.22 2 1 +github.com/ethereum/go-ethereum/p2p/dial.go:314.2,314.13 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:231.6,235.16 3 1 +github.com/ethereum/go-ethereum/p2p/dial.go:240.3,243.10 3 1 +github.com/ethereum/go-ethereum/p2p/dial.go:235.16,237.4 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:237.9,239.4 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:244.26,245.44 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:251.27,255.24 4 1 +github.com/ethereum/go-ethereum/p2p/dial.go:257.27,258.53 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:261.4,265.48 4 1 +github.com/ethereum/go-ethereum/p2p/dial.go:270.27,271.53 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:274.4,275.35 2 1 +github.com/ethereum/go-ethereum/p2p/dial.go:277.32,281.14 4 1 +github.com/ethereum/go-ethereum/p2p/dial.go:284.4,286.32 3 1 +github.com/ethereum/go-ethereum/p2p/dial.go:290.32,294.19 4 1 +github.com/ethereum/go-ethereum/p2p/dial.go:301.21,302.21 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:304.23,306.14 2 1 +github.com/ethereum/go-ethereum/p2p/dial.go:245.44,247.5 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:247.10,249.5 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:258.53,260.5 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:265.48,267.5 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:271.53,273.5 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:281.14,282.18 1 0 +github.com/ethereum/go-ethereum/p2p/dial.go:286.32,288.5 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:294.19,296.34 2 1 +github.com/ethereum/go-ethereum/p2p/dial.go:296.34,298.6 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:311.22,313.3 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:319.54,322.16 2 1 +github.com/ethereum/go-ethereum/p2p/dial.go:322.16,323.10 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:324.31,324.31 0 1 +github.com/ethereum/go-ethereum/p2p/dial.go:325.23,325.23 0 1 +github.com/ethereum/go-ethereum/p2p/dial.go:333.36,335.52 2 1 +github.com/ethereum/go-ethereum/p2p/dial.go:338.2,338.70 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:341.2,342.22 2 1 +github.com/ethereum/go-ethereum/p2p/dial.go:335.52,337.3 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:338.70,340.3 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:347.61,348.73 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:351.2,354.53 4 1 +github.com/ethereum/go-ethereum/p2p/dial.go:348.73,350.3 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:354.53,354.73 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:358.60,359.53 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:359.53,361.3 1 0 +github.com/ethereum/go-ethereum/p2p/dial.go:365.41,369.52 4 1 +github.com/ethereum/go-ethereum/p2p/dial.go:369.52,373.3 3 1 +github.com/ethereum/go-ethereum/p2p/dial.go:378.45,380.30 2 1 +github.com/ethereum/go-ethereum/p2p/dial.go:383.2,384.13 2 1 +github.com/ethereum/go-ethereum/p2p/dial.go:380.30,382.3 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:388.56,389.22 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:392.2,392.35 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:398.2,398.36 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:401.2,401.34 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:404.2,404.61 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:407.2,407.48 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:410.2,410.12 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:389.22,391.3 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:392.35,397.3 1 0 +github.com/ethereum/go-ethereum/p2p/dial.go:398.36,400.3 1 0 +github.com/ethereum/go-ethereum/p2p/dial.go:401.34,403.3 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:404.61,406.3 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:407.48,409.3 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:414.63,415.67 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:421.2,421.16 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:415.67,420.3 4 1 +github.com/ethereum/go-ethereum/p2p/dial.go:425.55,427.69 2 1 +github.com/ethereum/go-ethereum/p2p/dial.go:427.69,429.3 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:432.57,433.31 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:436.2,437.46 2 1 +github.com/ethereum/go-ethereum/p2p/dial.go:433.31,434.51 1 0 +github.com/ethereum/go-ethereum/p2p/dial.go:442.55,450.2 7 1 +github.com/ethereum/go-ethereum/p2p/dial.go:453.51,458.12 5 1 +github.com/ethereum/go-ethereum/p2p/dial.go:458.12,461.3 2 1 +github.com/ethereum/go-ethereum/p2p/dial.go:475.62,477.2 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:483.42,484.38 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:488.2,489.16 2 1 +github.com/ethereum/go-ethereum/p2p/dial.go:484.38,486.3 1 0 +github.com/ethereum/go-ethereum/p2p/dial.go:489.16,491.69 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:491.69,492.20 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:492.20,494.5 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:499.39,501.2 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:509.51,510.23 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:513.2,513.25 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:516.2,516.88 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:519.2,521.21 3 1 +github.com/ethereum/go-ethereum/p2p/dial.go:530.2,533.13 4 1 +github.com/ethereum/go-ethereum/p2p/dial.go:510.23,512.3 1 0 +github.com/ethereum/go-ethereum/p2p/dial.go:513.25,515.3 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:516.88,518.3 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:521.21,523.39 2 1 +github.com/ethereum/go-ethereum/p2p/dial.go:526.3,527.15 2 1 +github.com/ethereum/go-ethereum/p2p/dial.go:523.39,525.4 1 0 +github.com/ethereum/go-ethereum/p2p/dial.go:537.67,539.16 2 1 +github.com/ethereum/go-ethereum/p2p/dial.go:543.2,544.40 2 1 +github.com/ethereum/go-ethereum/p2p/dial.go:539.16,542.3 2 1 +github.com/ethereum/go-ethereum/p2p/dial.go:547.36,550.2 2 0 +github.com/ethereum/go-ethereum/p2p/dial.go:552.38,553.65 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:556.2,556.12 1 1 +github.com/ethereum/go-ethereum/p2p/dial.go:553.65,555.3 1 0 +github.com/ethereum/go-ethereum/p2p/message.go:55.46,57.38 2 1 +github.com/ethereum/go-ethereum/p2p/message.go:60.2,60.12 1 1 +github.com/ethereum/go-ethereum/p2p/message.go:57.38,59.3 1 1 +github.com/ethereum/go-ethereum/p2p/message.go:63.32,65.2 1 0 +github.com/ethereum/go-ethereum/p2p/message.go:68.32,71.2 2 1 +github.com/ethereum/go-ethereum/p2p/message.go:73.33,75.2 1 0 +github.com/ethereum/go-ethereum/p2p/message.go:100.64,102.16 2 1 +github.com/ethereum/go-ethereum/p2p/message.go:105.2,105.71 1 1 +github.com/ethereum/go-ethereum/p2p/message.go:102.16,104.3 1 0 +github.com/ethereum/go-ethereum/p2p/message.go:117.73,119.2 1 1 +github.com/ethereum/go-ethereum/p2p/message.go:132.51,133.18 1 1 +github.com/ethereum/go-ethereum/p2p/message.go:141.2,142.29 2 1 +github.com/ethereum/go-ethereum/p2p/message.go:145.2,147.50 3 1 +github.com/ethereum/go-ethereum/p2p/message.go:151.2,151.15 1 1 +github.com/ethereum/go-ethereum/p2p/message.go:133.18,134.19 1 1 +github.com/ethereum/go-ethereum/p2p/message.go:138.3,138.19 1 1 +github.com/ethereum/go-ethereum/p2p/message.go:134.19,137.4 2 1 +github.com/ethereum/go-ethereum/p2p/message.go:142.29,144.3 1 1 +github.com/ethereum/go-ethereum/p2p/message.go:147.50,150.3 2 1 +github.com/ethereum/go-ethereum/p2p/message.go:157.41,166.2 2 1 +github.com/ethereum/go-ethereum/p2p/message.go:182.45,183.37 1 1 +github.com/ethereum/go-ethereum/p2p/message.go:199.2,199.22 1 1 +github.com/ethereum/go-ethereum/p2p/message.go:183.37,186.10 3 1 +github.com/ethereum/go-ethereum/p2p/message.go:187.19,188.20 1 1 +github.com/ethereum/go-ethereum/p2p/message.go:195.4,195.14 1 1 +github.com/ethereum/go-ethereum/p2p/message.go:196.20,196.20 0 1 +github.com/ethereum/go-ethereum/p2p/message.go:188.20,190.12 1 1 +github.com/ethereum/go-ethereum/p2p/message.go:191.21,191.21 0 1 +github.com/ethereum/go-ethereum/p2p/message.go:192.22,192.22 0 0 +github.com/ethereum/go-ethereum/p2p/message.go:203.44,204.37 1 1 +github.com/ethereum/go-ethereum/p2p/message.go:211.2,211.29 1 1 +github.com/ethereum/go-ethereum/p2p/message.go:204.37,205.10 1 1 +github.com/ethereum/go-ethereum/p2p/message.go:206.21,207.19 1 1 +github.com/ethereum/go-ethereum/p2p/message.go:208.20,208.20 0 1 +github.com/ethereum/go-ethereum/p2p/message.go:217.35,218.39 1 1 +github.com/ethereum/go-ethereum/p2p/message.go:223.2,224.12 2 1 +github.com/ethereum/go-ethereum/p2p/message.go:218.39,222.3 2 1 +github.com/ethereum/go-ethereum/p2p/message.go:230.69,232.16 2 1 +github.com/ethereum/go-ethereum/p2p/message.go:235.2,235.22 1 1 +github.com/ethereum/go-ethereum/p2p/message.go:238.2,238.20 1 1 +github.com/ethereum/go-ethereum/p2p/message.go:241.2,242.16 2 1 +github.com/ethereum/go-ethereum/p2p/message.go:245.2,245.38 1 1 +github.com/ethereum/go-ethereum/p2p/message.go:248.2,249.16 2 1 +github.com/ethereum/go-ethereum/p2p/message.go:252.2,252.45 1 1 +github.com/ethereum/go-ethereum/p2p/message.go:255.2,255.12 1 1 +github.com/ethereum/go-ethereum/p2p/message.go:232.16,234.3 1 0 +github.com/ethereum/go-ethereum/p2p/message.go:235.22,237.3 1 0 +github.com/ethereum/go-ethereum/p2p/message.go:238.20,240.3 1 1 +github.com/ethereum/go-ethereum/p2p/message.go:242.16,243.48 1 0 +github.com/ethereum/go-ethereum/p2p/message.go:245.38,247.3 1 0 +github.com/ethereum/go-ethereum/p2p/message.go:249.16,251.3 1 0 +github.com/ethereum/go-ethereum/p2p/message.go:252.45,254.3 1 0 +github.com/ethereum/go-ethereum/p2p/message.go:272.114,281.2 1 0 +github.com/ethereum/go-ethereum/p2p/message.go:285.46,287.16 2 0 +github.com/ethereum/go-ethereum/p2p/message.go:290.2,299.17 2 0 +github.com/ethereum/go-ethereum/p2p/message.go:287.16,289.3 1 0 +github.com/ethereum/go-ethereum/p2p/message.go:304.47,306.16 2 0 +github.com/ethereum/go-ethereum/p2p/message.go:309.2,318.12 2 0 +github.com/ethereum/go-ethereum/p2p/message.go:306.16,308.3 1 0 +github.com/ethereum/go-ethereum/p2p/message.go:323.37,324.47 1 0 +github.com/ethereum/go-ethereum/p2p/message.go:327.2,327.12 1 0 +github.com/ethereum/go-ethereum/p2p/message.go:324.47,326.3 1 0 +github.com/ethereum/go-ethereum/p2p/metrics.go:55.78,57.22 1 1 +github.com/ethereum/go-ethereum/p2p/metrics.go:61.2,61.13 1 0 +github.com/ethereum/go-ethereum/p2p/metrics.go:66.2,67.33 2 0 +github.com/ethereum/go-ethereum/p2p/metrics.go:57.22,59.3 1 1 +github.com/ethereum/go-ethereum/p2p/metrics.go:61.13,63.3 1 0 +github.com/ethereum/go-ethereum/p2p/metrics.go:63.8,65.3 1 0 +github.com/ethereum/go-ethereum/p2p/metrics.go:72.57,76.2 3 0 +github.com/ethereum/go-ethereum/p2p/metrics.go:80.58,84.2 3 0 +github.com/ethereum/go-ethereum/p2p/metrics.go:88.37,90.16 2 0 +github.com/ethereum/go-ethereum/p2p/metrics.go:93.2,93.12 1 0 +github.com/ethereum/go-ethereum/p2p/metrics.go:90.16,92.3 1 0 +github.com/ethereum/go-ethereum/p2p/peer.go:123.58,128.27 2 1 +github.com/ethereum/go-ethereum/p2p/peer.go:132.2,137.13 6 1 +github.com/ethereum/go-ethereum/p2p/peer.go:128.27,131.3 2 1 +github.com/ethereum/go-ethereum/p2p/peer.go:143.79,147.2 3 0 +github.com/ethereum/go-ethereum/p2p/peer.go:150.30,152.2 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:155.35,157.2 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:160.30,162.17 2 1 +github.com/ethereum/go-ethereum/p2p/peer.go:165.2,165.10 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:162.17,164.3 1 0 +github.com/ethereum/go-ethereum/p2p/peer.go:169.34,171.2 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:174.29,177.2 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:182.66,183.42 1 0 +github.com/ethereum/go-ethereum/p2p/peer.go:190.2,190.14 1 0 +github.com/ethereum/go-ethereum/p2p/peer.go:183.42,184.32 1 0 +github.com/ethereum/go-ethereum/p2p/peer.go:184.32,185.28 1 0 +github.com/ethereum/go-ethereum/p2p/peer.go:185.28,187.5 1 0 +github.com/ethereum/go-ethereum/p2p/peer.go:194.38,196.2 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:199.37,201.2 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:205.46,206.23 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:210.2,210.9 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:206.23,208.3 1 0 +github.com/ethereum/go-ethereum/p2p/peer.go:211.24,211.24 0 1 +github.com/ethereum/go-ethereum/p2p/peer.go:212.18,212.18 0 1 +github.com/ethereum/go-ethereum/p2p/peer.go:217.32,220.2 2 0 +github.com/ethereum/go-ethereum/p2p/peer.go:223.31,225.2 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:227.70,239.2 3 1 +github.com/ethereum/go-ethereum/p2p/peer.go:241.33,243.2 1 0 +github.com/ethereum/go-ethereum/p2p/peer.go:245.56,262.6 7 1 +github.com/ethereum/go-ethereum/p2p/peer.go:289.2,292.29 4 1 +github.com/ethereum/go-ethereum/p2p/peer.go:262.6,263.10 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:264.25,267.18 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:271.4,271.28 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:272.24,273.37 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:279.4,279.14 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:280.27,282.14 2 1 +github.com/ethereum/go-ethereum/p2p/peer.go:283.23,285.14 2 1 +github.com/ethereum/go-ethereum/p2p/peer.go:267.18,269.15 2 0 +github.com/ethereum/go-ethereum/p2p/peer.go:273.37,276.5 2 1 +github.com/ethereum/go-ethereum/p2p/peer.go:276.10,278.5 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:295.27,299.6 4 1 +github.com/ethereum/go-ethereum/p2p/peer.go:299.6,300.10 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:301.17,302.51 1 0 +github.com/ethereum/go-ethereum/p2p/peer.go:306.4,306.28 1 0 +github.com/ethereum/go-ethereum/p2p/peer.go:307.19,308.10 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:302.51,305.5 2 0 +github.com/ethereum/go-ethereum/p2p/peer.go:313.44,315.6 2 1 +github.com/ethereum/go-ethereum/p2p/peer.go:315.6,317.17 2 1 +github.com/ethereum/go-ethereum/p2p/peer.go:321.3,322.38 2 1 +github.com/ethereum/go-ethereum/p2p/peer.go:317.17,320.4 2 1 +github.com/ethereum/go-ethereum/p2p/peer.go:322.38,325.4 2 1 +github.com/ethereum/go-ethereum/p2p/peer.go:329.38,330.9 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:361.2,361.12 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:331.27,333.30 2 1 +github.com/ethereum/go-ethereum/p2p/peer.go:334.27,339.13 3 1 +github.com/ethereum/go-ethereum/p2p/peer.go:340.37,342.23 1 0 +github.com/ethereum/go-ethereum/p2p/peer.go:343.10,346.17 2 1 +github.com/ethereum/go-ethereum/p2p/peer.go:349.3,349.22 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:354.3,354.10 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:346.17,348.4 1 0 +github.com/ethereum/go-ethereum/p2p/peer.go:349.22,353.4 3 0 +github.com/ethereum/go-ethereum/p2p/peer.go:355.24,356.14 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:357.19,358.17 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:364.67,366.27 2 1 +github.com/ethereum/go-ethereum/p2p/peer.go:373.2,373.10 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:366.27,367.35 1 0 +github.com/ethereum/go-ethereum/p2p/peer.go:367.35,368.62 1 0 +github.com/ethereum/go-ethereum/p2p/peer.go:368.62,370.5 1 0 +github.com/ethereum/go-ethereum/p2p/peer.go:377.93,383.27 4 1 +github.com/ethereum/go-ethereum/p2p/peer.go:398.2,398.15 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:383.27,384.35 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:384.35,385.62 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:385.62,387.44 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:391.5,394.19 3 1 +github.com/ethereum/go-ethereum/p2p/peer.go:387.44,389.6 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:401.82,403.34 2 1 +github.com/ethereum/go-ethereum/p2p/peer.go:403.34,409.22 6 1 +github.com/ethereum/go-ethereum/p2p/peer.go:412.3,413.13 2 1 +github.com/ethereum/go-ethereum/p2p/peer.go:409.22,411.4 1 0 +github.com/ethereum/go-ethereum/p2p/peer.go:413.13,416.18 3 1 +github.com/ethereum/go-ethereum/p2p/peer.go:422.4,422.21 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:416.18,419.5 2 1 +github.com/ethereum/go-ethereum/p2p/peer.go:419.10,419.28 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:419.28,421.5 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:429.56,430.34 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:435.2,435.57 1 0 +github.com/ethereum/go-ethereum/p2p/peer.go:430.34,431.63 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:431.63,433.4 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:448.50,449.27 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:452.2,457.9 4 1 +github.com/ethereum/go-ethereum/p2p/peer.go:468.2,468.12 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:449.27,451.3 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:458.19,464.17 2 1 +github.com/ethereum/go-ethereum/p2p/peer.go:465.19,466.24 1 0 +github.com/ethereum/go-ethereum/p2p/peer.go:471.43,472.9 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:473.22,475.18 2 1 +github.com/ethereum/go-ethereum/p2p/peer.go:476.19,477.23 1 0 +github.com/ethereum/go-ethereum/p2p/peer.go:501.33,504.31 2 1 +github.com/ethereum/go-ethereum/p2p/peer.go:508.2,515.24 2 1 +github.com/ethereum/go-ethereum/p2p/peer.go:518.2,525.34 6 1 +github.com/ethereum/go-ethereum/p2p/peer.go:536.2,536.13 1 1 +github.com/ethereum/go-ethereum/p2p/peer.go:504.31,506.3 1 0 +github.com/ethereum/go-ethereum/p2p/peer.go:515.24,517.3 1 0 +github.com/ethereum/go-ethereum/p2p/peer.go:525.34,527.53 2 0 +github.com/ethereum/go-ethereum/p2p/peer.go:534.3,534.41 1 0 +github.com/ethereum/go-ethereum/p2p/peer.go:527.53,528.50 1 0 +github.com/ethereum/go-ethereum/p2p/peer.go:528.50,530.5 1 0 +github.com/ethereum/go-ethereum/p2p/peer.go:530.10,532.5 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:245.32,247.33 2 0 +github.com/ethereum/go-ethereum/p2p/server.go:250.2,251.10 2 0 +github.com/ethereum/go-ethereum/p2p/server.go:247.33,249.3 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:254.35,256.24 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:259.2,259.26 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:262.2,262.29 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:265.2,265.24 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:268.2,268.13 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:271.2,271.10 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:256.24,258.3 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:259.26,261.3 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:262.29,264.3 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:265.24,267.3 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:268.13,270.3 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:274.36,277.2 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:279.42,280.6 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:280.6,283.10 3 1 +github.com/ethereum/go-ethereum/p2p/server.go:288.3,288.84 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:283.10,285.4 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:285.9,287.4 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:288.84,290.4 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:295.49,297.2 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:300.36,302.46 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:307.2,307.11 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:302.46,303.27 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:303.27,305.4 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:311.36,313.43 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:316.2,316.14 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:313.43,315.3 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:322.46,324.2 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:331.49,337.46 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:346.2,346.15 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:337.46,339.44 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:339.44,343.4 3 1 +github.com/ethereum/go-ethereum/p2p/server.go:346.15,348.22 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:348.22,349.60 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:349.60,351.5 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:358.53,359.9 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:360.30,360.30 0 1 +github.com/ethereum/go-ethereum/p2p/server.go:361.18,361.18 0 0 +github.com/ethereum/go-ethereum/p2p/server.go:366.56,367.9 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:368.33,368.33 0 1 +github.com/ethereum/go-ethereum/p2p/server.go:369.18,369.18 0 0 +github.com/ethereum/go-ethereum/p2p/server.go:374.75,376.2 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:379.39,384.15 4 1 +github.com/ethereum/go-ethereum/p2p/server.go:387.2,387.18 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:384.15,386.3 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:392.27,394.18 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:398.2,399.25 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:403.2,405.19 3 1 +github.com/ethereum/go-ethereum/p2p/server.go:394.18,397.3 2 0 +github.com/ethereum/go-ethereum/p2p/server.go:399.25,402.3 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:416.85,418.9 2 0 +github.com/ethereum/go-ethereum/p2p/server.go:421.2,422.16 2 0 +github.com/ethereum/go-ethereum/p2p/server.go:425.2,426.28 2 0 +github.com/ethereum/go-ethereum/p2p/server.go:418.9,420.3 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:422.16,424.3 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:430.39,432.2 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:436.40,439.17 3 1 +github.com/ethereum/go-ethereum/p2p/server.go:442.2,444.20 3 1 +github.com/ethereum/go-ethereum/p2p/server.go:447.2,447.22 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:450.2,450.40 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:455.2,455.27 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:458.2,458.29 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:461.2,461.27 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:464.2,473.45 9 1 +github.com/ethereum/go-ethereum/p2p/server.go:476.2,476.26 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:481.2,481.45 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:484.2,488.12 4 1 +github.com/ethereum/go-ethereum/p2p/server.go:439.17,441.3 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:444.20,446.3 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:447.22,449.3 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:450.40,452.3 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:455.27,457.3 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:458.29,460.3 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:461.27,463.3 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:473.45,475.3 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:476.26,477.46 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:477.46,479.4 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:481.45,483.3 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:491.43,495.34 3 1 +github.com/ethereum/go-ethereum/p2p/server.go:498.2,502.16 3 1 +github.com/ethereum/go-ethereum/p2p/server.go:505.2,509.34 4 1 +github.com/ethereum/go-ethereum/p2p/server.go:514.2,514.24 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:532.2,532.12 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:495.34,497.3 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:502.16,504.3 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:509.34,510.34 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:510.34,512.4 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:515.11,515.11 0 1 +github.com/ethereum/go-ethereum/p2p/server.go:517.17,520.32 2 0 +github.com/ethereum/go-ethereum/p2p/server.go:521.10,525.13 2 0 +github.com/ethereum/go-ethereum/p2p/server.go:525.13,527.51 2 0 +github.com/ethereum/go-ethereum/p2p/server.go:527.51,529.5 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:535.43,540.38 3 1 +github.com/ethereum/go-ethereum/p2p/server.go:548.2,548.41 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:552.2,553.16 2 0 +github.com/ethereum/go-ethereum/p2p/server.go:556.2,557.16 2 0 +github.com/ethereum/go-ethereum/p2p/server.go:560.2,562.20 3 0 +github.com/ethereum/go-ethereum/p2p/server.go:571.2,576.22 4 0 +github.com/ethereum/go-ethereum/p2p/server.go:597.2,597.21 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:614.2,614.12 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:540.38,541.56 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:541.56,544.4 2 0 +github.com/ethereum/go-ethereum/p2p/server.go:548.41,550.3 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:553.16,555.3 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:557.16,559.3 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:562.20,563.32 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:563.32,565.14 2 0 +github.com/ethereum/go-ethereum/p2p/server.go:565.14,568.5 2 0 +github.com/ethereum/go-ethereum/p2p/server.go:576.22,577.22 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:581.3,589.17 3 0 +github.com/ethereum/go-ethereum/p2p/server.go:592.3,593.44 2 0 +github.com/ethereum/go-ethereum/p2p/server.go:577.22,580.4 2 0 +github.com/ethereum/go-ethereum/p2p/server.go:589.17,591.4 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:597.21,605.19 3 0 +github.com/ethereum/go-ethereum/p2p/server.go:610.3,610.17 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:605.19,607.4 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:607.9,609.4 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:610.17,612.4 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:617.41,627.21 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:630.2,630.26 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:633.2,634.36 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:627.21,629.3 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:630.26,632.3 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:634.36,636.3 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:639.42,641.2 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:643.49,644.37 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:647.2,647.24 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:652.2,652.16 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:655.2,655.14 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:644.37,646.3 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:647.24,649.3 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:649.8,651.3 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:652.16,654.3 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:658.43,661.16 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:664.2,668.51 3 1 +github.com/ethereum/go-ethereum/p2p/server.go:679.2,681.12 3 1 +github.com/ethereum/go-ethereum/p2p/server.go:661.16,663.3 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:668.51,670.45 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:670.45,672.14 2 0 +github.com/ethereum/go-ethereum/p2p/server.go:672.14,675.5 2 0 +github.com/ethereum/go-ethereum/p2p/server.go:685.44,686.9 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:687.24,688.19 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:689.18,689.18 0 0 +github.com/ethereum/go-ethereum/p2p/server.go:694.26,708.37 7 1 +github.com/ethereum/go-ethereum/p2p/server.go:712.1,713.6 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:780.2,783.21 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:786.2,786.23 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:790.2,790.26 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:796.2,796.21 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:708.37,710.3 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:713.6,714.10 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:715.19,717.17 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:719.30,724.34 3 1 +github.com/ethereum/go-ethereum/p2p/server.go:728.33,733.34 3 1 +github.com/ethereum/go-ethereum/p2p/server.go:737.27,740.32 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:742.43,745.28 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:750.4,750.61 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:752.37,756.18 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:766.4,766.17 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:768.28,774.20 5 1 +github.com/ethereum/go-ethereum/p2p/server.go:724.34,726.5 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:733.34,735.5 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:745.28,748.5 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:756.18,762.20 5 1 +github.com/ethereum/go-ethereum/p2p/server.go:762.20,764.6 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:774.20,776.5 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:783.21,785.3 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:786.23,788.3 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:790.26,792.3 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:796.21,800.3 3 1 +github.com/ethereum/go-ethereum/p2p/server.go:803.99,804.9 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:805.56,806.26 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:807.88,808.26 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:809.33,810.30 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:811.41,812.18 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:813.10,814.13 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:818.93,820.82 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:825.2,825.56 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:820.82,822.3 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:830.33,835.29 3 1 +github.com/ethereum/go-ethereum/p2p/server.go:838.2,839.30 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:845.2,846.15 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:852.2,852.6 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:835.29,837.3 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:839.30,841.3 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:846.15,847.35 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:847.35,849.4 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:852.6,861.7 3 1 +github.com/ethereum/go-ethereum/p2p/server.go:878.3,879.56 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:885.3,885.22 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:893.3,893.13 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:861.7,863.37 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:875.4,875.9 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:863.37,864.44 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:868.5,869.13 2 0 +github.com/ethereum/go-ethereum/p2p/server.go:864.44,867.6 2 0 +github.com/ethereum/go-ethereum/p2p/server.go:870.10,870.25 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:870.25,874.5 3 1 +github.com/ethereum/go-ethereum/p2p/server.go:879.56,883.12 4 1 +github.com/ethereum/go-ethereum/p2p/server.go:885.22,887.53 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:890.4,891.65 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:887.53,889.5 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:893.13,896.4 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:900.60,901.21 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:905.2,905.67 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:909.2,911.80 3 1 +github.com/ethereum/go-ethereum/p2p/server.go:914.2,915.12 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:901.21,903.3 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:905.67,907.3 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:911.80,913.3 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:921.87,923.21 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:929.2,930.16 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:933.2,933.12 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:923.21,925.3 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:925.8,927.3 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:930.16,932.3 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:936.83,941.14 4 1 +github.com/ethereum/go-ethereum/p2p/server.go:946.2,946.21 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:956.2,957.16 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:961.2,961.21 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:966.2,968.16 3 1 +github.com/ethereum/go-ethereum/p2p/server.go:974.2,975.16 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:979.2,979.70 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:983.2,985.16 3 1 +github.com/ethereum/go-ethereum/p2p/server.go:990.2,990.12 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:941.14,943.3 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:946.21,948.71 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:948.71,952.4 3 0 +github.com/ethereum/go-ethereum/p2p/server.go:957.16,960.3 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:961.21,963.3 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:963.8,965.3 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:968.16,971.3 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:975.16,978.3 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:979.70,982.3 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:985.16,988.3 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:993.71,996.53 3 1 +github.com/ethereum/go-ethereum/p2p/server.go:1000.2,1000.44 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:996.53,999.3 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:1005.66,1006.9 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:1011.2,1011.17 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:1007.18,1007.18 0 1 +github.com/ethereum/go-ethereum/p2p/server.go:1008.18,1009.26 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:1014.46,1016.25 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:1021.2,1022.10 2 1 +github.com/ethereum/go-ethereum/p2p/server.go:1016.25,1020.3 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:1026.37,1027.28 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:1030.2,1055.4 4 1 +github.com/ethereum/go-ethereum/p2p/server.go:1027.28,1029.3 1 1 +github.com/ethereum/go-ethereum/p2p/server.go:1074.41,1090.38 6 0 +github.com/ethereum/go-ethereum/p2p/server.go:1099.2,1099.13 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:1090.38,1091.47 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:1091.47,1093.45 2 0 +github.com/ethereum/go-ethereum/p2p/server.go:1096.4,1096.41 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:1093.45,1095.5 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:1103.44,1106.35 2 0 +github.com/ethereum/go-ethereum/p2p/server.go:1112.2,1112.34 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:1119.2,1119.14 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:1106.35,1107.18 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:1107.18,1109.4 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:1112.34,1113.39 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:1113.39,1114.33 1 0 +github.com/ethereum/go-ethereum/p2p/server.go:1114.33,1116.5 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:148.86,156.2 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:161.110,169.9 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:185.2,185.16 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:190.2,190.54 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:195.2,198.46 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:209.2,210.29 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:170.40,171.57 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:172.24,174.68 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:175.10,177.21 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:177.21,180.4 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:180.9,183.4 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:185.16,187.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:190.54,192.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:198.46,201.3 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:201.8,201.27 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:201.27,204.17 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:204.17,206.4 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:214.85,225.2 6 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:227.44,232.2 4 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:235.80,237.14 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:247.2,248.32 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:251.2,258.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:238.19,239.35 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:240.21,241.37 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:242.21,243.37 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:244.10,245.64 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:248.32,249.68 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:262.69,267.53 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:270.2,277.30 6 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:267.53,269.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:281.83,283.48 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:288.2,300.18 8 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:283.48,284.60 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:304.115,306.27 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:311.2,312.16 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:317.2,318.16 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:323.2,337.27 10 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:306.27,307.49 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:312.16,314.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:318.16,320.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:341.123,348.78 4 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:351.2,352.16 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:355.2,362.16 6 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:365.2,370.36 4 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:375.2,376.16 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:379.2,379.23 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:348.78,350.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:352.16,354.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:362.16,364.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:370.36,372.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:376.16,378.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:383.80,388.16 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:391.2,396.18 6 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:388.16,390.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:399.103,403.49 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:406.2,410.16 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:413.2,413.23 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:403.49,405.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:410.16,412.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:417.102,419.41 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:422.2,432.56 9 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:437.2,449.19 8 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:459.2,459.28 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:419.41,421.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:432.56,434.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:450.21,451.48 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:452.21,453.73 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:454.19,455.61 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:456.10,457.23 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:463.82,464.51 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:467.2,477.15 6 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:464.51,466.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:480.136,482.16 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:488.2,489.16 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:495.2,497.23 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:482.16,485.3 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:489.16,492.3 2 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:500.127,501.61 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:506.2,507.22 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:511.2,512.16 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:516.2,519.16 4 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:523.2,524.16 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:528.2,530.30 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:501.61,503.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:507.22,509.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:512.16,514.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:519.16,521.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:524.16,526.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:534.91,536.50 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:539.2,550.34 5 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:553.2,556.18 4 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:536.50,538.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:550.34,552.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:562.111,564.21 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:580.2,580.17 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:583.2,583.18 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:564.21,566.58 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:569.3,569.49 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:566.58,568.4 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:569.49,571.18 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:574.4,574.24 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:577.4,577.12 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:571.18,573.5 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:574.24,576.5 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:580.17,582.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:587.106,588.49 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:591.2,599.30 7 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:603.2,603.17 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:588.49,590.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:599.30,602.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:606.90,608.16 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:611.2,611.23 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:614.2,614.47 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:608.16,610.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:611.23,613.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:619.56,620.32 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:623.2,623.28 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:626.2,626.59 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:629.2,629.33 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:632.2,632.12 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:620.32,622.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:623.28,625.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:626.59,628.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:629.33,631.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:636.54,638.16 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:641.2,641.38 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:638.16,639.31 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:644.40,648.2 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:149.61,151.15 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:177.2,177.51 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:180.2,180.56 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:183.2,183.17 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:152.15,153.18 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:154.15,155.18 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:156.19,157.22 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:158.16,159.19 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:160.22,161.25 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:162.23,163.26 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:164.24,165.27 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:166.17,167.20 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:168.19,169.22 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:170.26,171.29 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:172.21,173.24 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:174.10,175.58 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:177.51,179.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:180.56,182.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:186.40,186.65 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:187.40,187.66 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:188.40,188.54 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:189.41,189.42 0 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:191.38,191.61 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:192.38,192.62 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:193.38,193.52 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:194.39,194.40 0 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:196.40,196.60 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:197.40,197.58 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:198.40,198.58 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:199.40,199.56 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:201.40,201.60 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:202.40,202.58 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:203.40,203.58 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:204.40,204.56 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:206.44,206.68 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:207.44,207.66 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:208.44,208.62 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:209.44,209.60 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:211.41,211.62 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:212.41,212.60 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:213.41,213.59 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:214.41,214.57 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:216.47,216.70 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:217.47,217.72 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:218.47,218.65 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:219.47,219.63 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:221.48,221.72 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:222.48,222.74 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:223.48,223.66 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:224.48,224.64 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:226.49,226.74 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:227.49,227.76 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:228.49,228.67 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:229.49,229.65 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:231.44,231.68 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:232.44,232.66 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:233.44,233.62 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:234.44,234.60 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:236.42,236.64 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:237.42,237.62 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:238.42,238.60 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:239.42,239.58 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:241.51,241.82 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:242.51,242.80 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:243.51,243.69 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:244.51,244.67 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:246.46,246.72 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:247.46,247.70 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:248.46,248.64 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:249.46,249.62 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:60.42,62.2 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:64.70,66.16 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:69.2,76.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:66.16,67.38 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:79.57,83.2 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:85.42,88.2 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:91.62,94.2 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:97.68,99.9 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:102.2,102.24 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:99.9,101.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:106.66,107.41 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:110.2,110.12 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:107.41,109.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:114.79,116.2 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:119.75,121.2 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:124.92,127.2 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:130.67,132.2 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:135.39,137.44 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:137.44,138.32 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:138.32,140.4 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:44.48,45.19 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:46.21,47.36 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:48.10,49.77 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:54.77,55.15 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:56.21,57.19 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:60.3,60.36 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:61.10,62.86 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:57.19,59.4 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:67.81,74.2 6 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:77.120,79.19 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:80.21,82.17 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:85.3,85.35 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:86.10,87.74 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:82.17,84.4 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:94.32,94.54 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:97.116,98.59 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:99.12,101.29 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:104.3,105.50 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:108.3,108.13 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:109.10,110.83 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:101.29,103.4 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:105.50,107.4 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:117.120,125.16 7 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:128.2,132.21 5 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:135.2,135.13 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:125.16,127.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:132.21,134.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:139.70,141.17 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:144.2,147.12 4 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:141.17,143.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:153.79,155.16 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:158.2,159.16 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:162.2,162.59 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:155.16,156.58 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:159.16,160.49 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:166.66,168.16 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:171.2,171.32 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:174.2,175.16 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:178.2,179.45 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:168.16,170.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:171.32,173.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:175.16,177.3 1 0 +github.com/ethereum/go-ethereum/miner/miner.go:73.170,86.2 4 1 +github.com/ethereum/go-ethereum/miner/miner.go:92.30,96.15 3 1 +github.com/ethereum/go-ethereum/miner/miner.go:102.2,105.6 4 1 +github.com/ethereum/go-ethereum/miner/miner.go:96.15,97.23 1 1 +github.com/ethereum/go-ethereum/miner/miner.go:97.23,99.4 1 1 +github.com/ethereum/go-ethereum/miner/miner.go:105.6,106.10 1 1 +github.com/ethereum/go-ethereum/miner/miner.go:107.26,108.17 1 1 +github.com/ethereum/go-ethereum/miner/miner.go:113.4,113.26 1 1 +github.com/ethereum/go-ethereum/miner/miner.go:138.32,140.16 2 1 +github.com/ethereum/go-ethereum/miner/miner.go:143.4,143.22 1 1 +github.com/ethereum/go-ethereum/miner/miner.go:144.23,146.23 2 1 +github.com/ethereum/go-ethereum/miner/miner.go:147.23,149.10 2 1 +github.com/ethereum/go-ethereum/miner/miner.go:108.17,111.13 2 1 +github.com/ethereum/go-ethereum/miner/miner.go:114.31,118.18 4 1 +github.com/ethereum/go-ethereum/miner/miner.go:123.32,125.20 2 1 +github.com/ethereum/go-ethereum/miner/miner.go:129.30,131.20 2 1 +github.com/ethereum/go-ethereum/miner/miner.go:136.5,136.25 1 1 +github.com/ethereum/go-ethereum/miner/miner.go:118.18,122.6 2 1 +github.com/ethereum/go-ethereum/miner/miner.go:125.20,128.6 2 1 +github.com/ethereum/go-ethereum/miner/miner.go:131.20,134.6 2 1 +github.com/ethereum/go-ethereum/miner/miner.go:140.16,142.5 1 1 +github.com/ethereum/go-ethereum/miner/miner.go:154.52,156.2 1 1 +github.com/ethereum/go-ethereum/miner/miner.go:158.28,160.2 1 1 +github.com/ethereum/go-ethereum/miner/miner.go:162.29,165.2 2 1 +github.com/ethereum/go-ethereum/miner/miner.go:167.35,169.2 1 1 +github.com/ethereum/go-ethereum/miner/miner.go:171.39,172.49 1 0 +github.com/ethereum/go-ethereum/miner/miner.go:175.2,175.10 1 0 +github.com/ethereum/go-ethereum/miner/miner.go:172.49,174.3 1 0 +github.com/ethereum/go-ethereum/miner/miner.go:178.50,179.54 1 0 +github.com/ethereum/go-ethereum/miner/miner.go:182.2,183.12 2 0 +github.com/ethereum/go-ethereum/miner/miner.go:179.54,181.3 1 0 +github.com/ethereum/go-ethereum/miner/miner.go:187.65,189.2 1 0 +github.com/ethereum/go-ethereum/miner/miner.go:192.62,194.2 1 0 +github.com/ethereum/go-ethereum/miner/miner.go:201.49,203.2 1 0 +github.com/ethereum/go-ethereum/miner/miner.go:206.78,208.2 1 0 +github.com/ethereum/go-ethereum/miner/miner.go:210.55,213.2 2 1 +github.com/ethereum/go-ethereum/miner/miner.go:217.45,219.2 1 0 +github.com/ethereum/go-ethereum/miner/miner.go:225.37,227.2 1 0 +github.com/ethereum/go-ethereum/miner/miner.go:234.38,236.2 1 0 +github.com/ethereum/go-ethereum/miner/miner.go:240.142,242.2 1 0 +github.com/ethereum/go-ethereum/miner/miner.go:246.85,248.2 1 0 +github.com/ethereum/go-ethereum/miner/unconfirmed.go:57.80,62.2 1 1 +github.com/ethereum/go-ethereum/miner/unconfirmed.go:65.70,79.23 6 1 +github.com/ethereum/go-ethereum/miner/unconfirmed.go:85.2,85.71 1 1 +github.com/ethereum/go-ethereum/miner/unconfirmed.go:79.23,81.3 1 1 +github.com/ethereum/go-ethereum/miner/unconfirmed.go:81.8,83.3 1 1 +github.com/ethereum/go-ethereum/miner/unconfirmed.go:91.52,95.24 3 1 +github.com/ethereum/go-ethereum/miner/unconfirmed.go:95.24,98.44 2 1 +github.com/ethereum/go-ethereum/miner/unconfirmed.go:102.3,103.10 2 1 +github.com/ethereum/go-ethereum/miner/unconfirmed.go:128.3,128.50 1 1 +github.com/ethereum/go-ethereum/miner/unconfirmed.go:98.44,99.9 1 1 +github.com/ethereum/go-ethereum/miner/unconfirmed.go:104.22,105.97 1 1 +github.com/ethereum/go-ethereum/miner/unconfirmed.go:106.35,107.91 1 0 +github.com/ethereum/go-ethereum/miner/unconfirmed.go:108.11,111.111 2 0 +github.com/ethereum/go-ethereum/miner/unconfirmed.go:121.4,121.16 1 0 +github.com/ethereum/go-ethereum/miner/unconfirmed.go:111.111,112.66 1 0 +github.com/ethereum/go-ethereum/miner/unconfirmed.go:112.66,113.43 1 0 +github.com/ethereum/go-ethereum/miner/unconfirmed.go:113.43,114.36 1 0 +github.com/ethereum/go-ethereum/miner/unconfirmed.go:114.36,116.13 2 0 +github.com/ethereum/go-ethereum/miner/unconfirmed.go:121.16,123.5 1 0 +github.com/ethereum/go-ethereum/miner/unconfirmed.go:123.10,125.5 1 0 +github.com/ethereum/go-ethereum/miner/unconfirmed.go:128.50,130.4 1 1 +github.com/ethereum/go-ethereum/miner/unconfirmed.go:130.9,134.4 3 1 +github.com/ethereum/go-ethereum/miner/worker.go:99.45,110.24 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:116.2,119.38 4 1 +github.com/ethereum/go-ethereum/miner/worker.go:122.2,122.12 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:110.24,113.3 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:119.38,121.3 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:126.53,128.35 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:131.2,131.15 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:128.35,130.3 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:137.35,138.22 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:141.2,141.28 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:138.22,140.3 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:250.188,283.36 6 1 +github.com/ethereum/go-ethereum/miner/worker.go:288.2,295.10 6 1 +github.com/ethereum/go-ethereum/miner/worker.go:298.2,298.15 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:283.36,286.3 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:295.10,297.3 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:302.52,306.2 3 1 +github.com/ethereum/go-ethereum/miner/worker.go:308.42,312.2 3 0 +github.com/ethereum/go-ethereum/miner/worker.go:315.41,319.2 3 1 +github.com/ethereum/go-ethereum/miner/worker.go:322.62,323.9 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:324.40,324.40 0 0 +github.com/ethereum/go-ethereum/miner/worker.go:325.18,325.18 0 0 +github.com/ethereum/go-ethereum/miner/worker.go:330.35,332.2 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:335.34,337.2 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:340.59,344.28 3 0 +github.com/ethereum/go-ethereum/miner/worker.go:347.2,347.48 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:344.28,346.3 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:351.46,356.2 3 0 +github.com/ethereum/go-ethereum/miner/worker.go:359.75,364.2 3 0 +github.com/ethereum/go-ethereum/miner/worker.go:367.26,370.2 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:373.25,375.2 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:378.35,380.2 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:384.26,388.2 3 1 +github.com/ethereum/go-ethereum/miner/worker.go:391.94,413.2 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:416.54,429.40 6 1 +github.com/ethereum/go-ethereum/miner/worker.go:443.2,443.38 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:453.2,453.6 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:429.40,430.23 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:433.3,434.10 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:439.3,440.34 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:430.23,432.4 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:435.97,435.97 0 1 +github.com/ethereum/go-ethereum/miner/worker.go:436.19,437.10 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:443.38,445.36 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:450.3,450.23 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:445.36,446.52 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:446.52,448.5 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:453.6,454.10 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:455.20,458.41 3 1 +github.com/ethereum/go-ethereum/miner/worker.go:460.32,463.41 3 1 +github.com/ethereum/go-ethereum/miner/worker.go:465.18,468.89 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:477.43,479.38 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:483.4,486.29 3 0 +github.com/ethereum/go-ethereum/miner/worker.go:490.39,492.18 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:503.4,503.29 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:507.19,508.10 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:468.89,470.41 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:474.5,474.42 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:470.41,472.14 2 0 +github.com/ethereum/go-ethereum/miner/worker.go:479.38,482.5 2 0 +github.com/ethereum/go-ethereum/miner/worker.go:486.29,488.5 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:492.18,497.5 4 0 +github.com/ethereum/go-ethereum/miner/worker.go:497.10,501.5 3 1 +github.com/ethereum/go-ethereum/miner/worker.go:503.29,505.5 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:516.29,521.15 5 1 +github.com/ethereum/go-ethereum/miner/worker.go:527.2,530.6 3 1 +github.com/ethereum/go-ethereum/miner/worker.go:521.15,522.23 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:522.23,524.4 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:530.6,531.10 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:532.29,533.59 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:535.29,537.18 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:544.30,546.57 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:549.4,549.58 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:553.4,553.66 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:561.4,561.70 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:568.24,570.43 2 0 +github.com/ethereum/go-ethereum/miner/worker.go:575.4,575.44 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:581.24,587.42 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:614.4,614.50 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:617.19,618.10 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:619.25,620.10 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:621.31,622.10 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:623.31,624.10 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:537.18,540.5 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:540.10,542.5 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:546.57,547.13 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:549.58,550.13 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:553.66,555.5 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:555.10,557.5 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:561.70,563.71 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:563.71,565.6 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:570.43,571.66 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:571.66,573.6 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:575.44,576.66 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:576.66,578.6 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:587.42,589.70 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:592.5,593.31 2 0 +github.com/ethereum/go-ethereum/miner/worker.go:597.5,603.35 4 0 +github.com/ethereum/go-ethereum/miner/worker.go:589.70,590.14 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:593.31,596.6 2 0 +github.com/ethereum/go-ethereum/miner/worker.go:603.35,605.6 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:606.10,610.72 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:610.72,612.6 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:631.29,639.22 3 1 +github.com/ethereum/go-ethereum/miner/worker.go:645.2,645.6 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:639.22,640.20 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:640.20,643.4 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:645.6,646.10 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:647.27,648.28 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:652.4,653.24 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:657.4,660.53 3 1 +github.com/ethereum/go-ethereum/miner/worker.go:663.4,667.81 4 1 +github.com/ethereum/go-ethereum/miner/worker.go:673.19,675.10 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:648.28,650.5 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:653.24,654.13 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:660.53,661.13 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:667.81,672.5 4 1 +github.com/ethereum/go-ethereum/miner/worker.go:682.31,684.6 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:684.6,685.10 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:686.30,688.20 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:692.4,692.57 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:695.4,696.23 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:704.4,711.14 5 1 +github.com/ethereum/go-ethereum/miner/worker.go:716.4,720.46 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:742.4,743.18 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:747.4,754.57 3 1 +github.com/ethereum/go-ethereum/miner/worker.go:756.19,757.10 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:688.20,689.13 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:692.57,693.13 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:696.23,699.41 3 0 +github.com/ethereum/go-ethereum/miner/worker.go:699.41,701.14 2 0 +github.com/ethereum/go-ethereum/miner/worker.go:711.14,713.13 2 0 +github.com/ethereum/go-ethereum/miner/worker.go:720.46,733.46 8 1 +github.com/ethereum/go-ethereum/miner/worker.go:739.5,739.41 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:733.46,738.6 4 1 +github.com/ethereum/go-ethereum/miner/worker.go:743.18,745.13 2 0 +github.com/ethereum/go-ethereum/miner/worker.go:763.116,767.16 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:777.2,777.16 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:780.2,793.71 3 1 +github.com/ethereum/go-ethereum/miner/worker.go:801.2,802.17 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:767.16,776.3 2 0 +github.com/ethereum/go-ethereum/miner/worker.go:777.16,779.3 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:793.71,794.43 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:797.3,798.37 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:794.43,796.4 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:806.75,807.32 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:810.2,811.41 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:814.2,814.47 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:817.2,817.47 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:820.2,820.31 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:823.2,824.12 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:807.32,809.3 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:811.41,813.3 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:814.47,816.3 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:817.47,819.3 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:820.31,822.3 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:828.51,841.2 5 1 +github.com/ethereum/go-ethereum/miner/worker.go:843.99,847.16 3 1 +github.com/ethereum/go-ethereum/miner/worker.go:851.2,854.26 3 1 +github.com/ethereum/go-ethereum/miner/worker.go:847.16,850.3 2 0 +github.com/ethereum/go-ethereum/miner/worker.go:857.118,859.24 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:862.2,864.6 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:947.2,947.46 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:964.2,964.22 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:967.2,967.14 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:859.24,861.3 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:864.6,871.77 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:886.3,886.39 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:891.3,892.16 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:899.3,902.67 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:909.3,912.10 3 1 +github.com/ethereum/go-ethereum/miner/worker.go:871.77,873.62 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:883.4,883.64 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:873.62,875.20 2 0 +github.com/ethereum/go-ethereum/miner/worker.go:878.5,881.6 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:875.20,877.6 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:886.39,888.9 2 0 +github.com/ethereum/go-ethereum/miner/worker.go:892.16,893.9 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:902.67,906.12 3 0 +github.com/ethereum/go-ethereum/miner/worker.go:913.48,916.13 2 0 +github.com/ethereum/go-ethereum/miner/worker.go:918.44,921.15 2 0 +github.com/ethereum/go-ethereum/miner/worker.go:923.45,926.13 2 0 +github.com/ethereum/go-ethereum/miner/worker.go:928.28,932.15 3 1 +github.com/ethereum/go-ethereum/miner/worker.go:934.51,937.13 2 0 +github.com/ethereum/go-ethereum/miner/worker.go:939.11,943.15 2 0 +github.com/ethereum/go-ethereum/miner/worker.go:947.46,956.35 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:960.3,960.30 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:956.35,959.4 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:964.22,966.3 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:984.79,990.45 4 1 +github.com/ethereum/go-ethereum/miner/worker.go:993.2,993.19 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:998.2,999.32 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:1006.2,1014.45 3 1 +github.com/ethereum/go-ethereum/miner/worker.go:1018.2,1018.41 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1022.2,1022.43 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1030.2,1030.58 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1037.2,1038.16 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:1043.2,1043.24 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1060.2,1060.17 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:990.45,992.3 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:993.19,995.3 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:999.32,1000.26 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1003.3,1003.32 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1000.26,1002.4 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:1014.45,1016.3 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1018.41,1020.3 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1022.43,1024.47 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:1024.47,1027.4 2 0 +github.com/ethereum/go-ethereum/miner/worker.go:1030.58,1033.3 2 0 +github.com/ethereum/go-ethereum/miner/worker.go:1038.16,1041.3 2 0 +github.com/ethereum/go-ethereum/miner/worker.go:1043.24,1044.61 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1057.3,1058.31 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:1044.61,1045.36 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1045.36,1046.29 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1049.5,1049.62 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1046.29,1047.11 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1049.62,1051.6 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1051.11,1053.6 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1066.71,1071.50 3 1 +github.com/ethereum/go-ethereum/miner/worker.go:1077.2,1077.23 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1083.2,1083.24 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1071.50,1072.46 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1072.46,1075.4 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:1077.23,1079.48 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:1079.48,1081.4 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:1083.24,1085.48 2 0 +github.com/ethereum/go-ethereum/miner/worker.go:1085.48,1087.4 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:1092.77,1094.16 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:1097.2,1100.114 3 1 +github.com/ethereum/go-ethereum/miner/worker.go:1094.16,1096.3 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1105.78,1110.19 3 1 +github.com/ethereum/go-ethereum/miner/worker.go:1117.2,1121.16 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:1126.2,1126.52 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1130.2,1135.22 3 1 +github.com/ethereum/go-ethereum/miner/worker.go:1138.2,1138.18 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1110.19,1111.39 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1115.3,1115.24 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1111.39,1114.4 2 0 +github.com/ethereum/go-ethereum/miner/worker.go:1121.16,1123.3 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:1126.52,1128.3 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1135.22,1137.3 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1145.96,1146.19 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1172.2,1172.12 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1175.2,1175.12 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1146.19,1147.22 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1152.3,1154.17 3 1 +github.com/ethereum/go-ethereum/miner/worker.go:1158.3,1158.38 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1147.22,1149.4 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1154.17,1156.4 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:1158.38,1159.11 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1160.106,1165.58 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:1167.20,1168.34 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:1172.12,1174.3 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1179.139,1192.9 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:1193.26,1195.19 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:1198.3,1198.20 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1199.18,1200.41 1 0 +github.com/ethereum/go-ethereum/miner/worker.go:1195.19,1197.4 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1206.58,1209.2 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:1212.63,1214.29 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:1218.2,1218.15 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1214.29,1217.3 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:1222.59,1223.9 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1224.30,1224.30 0 1 +github.com/ethereum/go-ethereum/miner/worker.go:1225.18,1225.18 0 0 +github.com/ethereum/go-ethereum/miner/worker.go:1230.74,1232.42 2 1 +github.com/ethereum/go-ethereum/miner/worker.go:1236.2,1236.108 1 1 +github.com/ethereum/go-ethereum/miner/worker.go:1232.42,1235.3 2 1 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:41.34,41.50 1 1 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:43.47,45.2 1 1 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:47.50,49.2 1 1 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:54.47,56.2 1 1 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:61.30,61.46 1 0 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:66.31,66.48 1 0 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:71.30,71.46 1 1 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:76.31,76.48 1 0 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:83.29,83.44 1 1 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:90.29,91.28 1 0 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:94.2,94.13 1 0 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:91.28,93.3 1 0 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:98.42,99.40 1 0 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:102.2,102.41 1 0 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:105.2,105.56 1 0 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:99.40,101.3 1 0 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:102.41,104.3 1 0 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:109.45,110.47 1 0 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:113.2,113.35 1 0 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:116.2,116.12 1 0 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:110.47,112.3 1 0 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:113.35,115.3 1 0 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:122.31,122.46 1 1 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:125.44,127.16 2 1 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:130.2,130.27 1 1 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:127.16,129.3 1 0 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:134.47,135.47 1 1 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:138.2,138.18 1 1 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:141.2,141.12 1 1 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:135.47,137.3 1 0 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:138.18,140.3 1 0 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:147.31,147.47 1 1 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:150.44,152.16 2 1 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:155.2,155.27 1 1 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:152.16,154.3 1 0 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:159.47,160.47 1 1 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:163.2,163.19 1 1 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:166.2,166.12 1 1 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:160.47,162.3 1 0 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:163.19,165.3 1 0 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:176.37,177.28 1 0 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:180.2,180.56 1 0 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:177.28,179.3 1 0 +github.com/ethereum/go-ethereum/p2p/enr/entries.go:185.33,188.2 2 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:69.56,71.14 2 0 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:74.2,74.25 1 0 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:71.14,73.3 1 0 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:77.47,79.14 2 0 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:82.2,82.22 1 0 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:79.14,81.3 1 0 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:100.31,102.2 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:107.35,111.2 3 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:118.38,119.50 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:120.2,120.52 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:126.2,126.53 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:119.50,119.87 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:120.52,121.58 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:124.3,124.13 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:121.58,123.4 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:132.31,134.16 2 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:137.2,141.48 4 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:142.2,142.9 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:156.2,156.17 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:134.16,135.65 1 0 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:141.48,141.83 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:143.50,145.20 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:146.24,151.16 4 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:152.10,154.48 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:159.31,160.24 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:163.2,164.13 2 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:160.24,162.3 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:168.37,169.24 1 0 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:172.2,174.12 3 0 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:169.24,171.3 1 0 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:179.46,180.24 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:183.2,184.12 2 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:180.24,182.3 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:188.49,190.16 2 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:193.2,195.12 3 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:190.16,192.3 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:198.70,200.16 2 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:203.2,203.26 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:208.2,209.36 2 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:212.2,212.48 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:218.2,218.42 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:225.2,226.20 2 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:251.2,251.30 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:200.16,202.3 1 0 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:203.26,205.3 1 0 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:209.36,211.3 1 0 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:212.48,213.21 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:216.3,216.23 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:213.21,215.4 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:218.42,219.21 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:222.3,222.23 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:219.21,221.4 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:226.20,228.41 2 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:234.3,234.41 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:240.3,240.12 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:248.3,249.17 2 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:228.41,229.22 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:232.4,232.24 1 0 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:229.22,230.10 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:234.41,235.22 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:238.4,238.24 1 0 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:235.22,237.5 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:240.12,241.23 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:244.4,244.22 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:241.23,243.5 1 0 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:244.22,246.5 1 0 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:255.42,259.2 3 0 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:262.58,264.2 1 0 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:273.61,274.9 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:294.2,294.12 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:276.30,277.77 1 0 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:278.30,279.77 1 0 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:281.16,282.42 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:285.3,286.17 2 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:289.3,289.32 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:291.10,292.32 1 0 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:282.42,284.4 1 0 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:286.17,288.4 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:298.67,300.28 2 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:303.2,303.13 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:300.28,302.3 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:306.61,310.52 4 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:313.2,313.26 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:316.2,316.17 1 1 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:310.52,312.3 1 0 +github.com/ethereum/go-ethereum/p2p/enr/enr.go:313.26,315.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:64.41,71.22 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:74.2,74.30 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:77.2,77.25 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:80.2,80.24 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:83.2,83.29 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:86.2,86.25 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:89.2,89.23 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:92.2,92.12 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:71.22,73.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:74.30,76.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:77.25,79.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:80.24,82.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:83.29,85.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:86.25,88.3 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:89.23,91.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:96.36,99.16 3 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:102.2,108.3 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:99.16,100.13 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:112.54,114.16 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:117.2,119.46 3 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:122.2,123.15 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:114.16,116.3 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:119.46,121.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:128.70,130.27 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:135.2,135.16 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:130.27,131.41 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:131.41,133.4 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:139.86,140.70 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:153.2,153.27 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:140.70,143.17 3 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:146.3,146.28 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:151.3,151.55 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:143.17,145.4 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:146.28,147.42 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:147.42,149.5 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:156.72,158.16 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:161.2,161.36 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:164.2,164.15 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:158.16,160.3 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:161.36,163.3 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:169.88,173.46 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:176.2,177.42 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:181.2,181.72 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:189.2,190.15 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:173.46,175.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:177.42,179.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:181.72,183.17 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:186.3,187.16 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:183.17,185.4 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:194.90,196.16 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:199.2,202.16 4 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:205.2,205.27 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:217.2,217.41 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:196.16,198.3 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:202.16,204.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:205.27,207.29 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:210.3,210.64 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:215.3,215.16 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:207.29,208.12 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:210.64,212.4 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:212.9,212.24 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:212.24,214.4 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:235.54,243.2 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:246.46,248.2 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:251.35,257.2 4 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:260.39,263.2 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:266.53,268.16 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:271.2,272.12 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:268.16,270.3 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:276.50,277.6 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:277.6,279.16 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:282.3,283.17 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:290.3,290.15 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:279.16,281.4 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:283.17,284.27 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:287.4,288.12 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:284.27,286.5 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:290.15,292.4 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:297.50,303.21 3 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:308.2,308.19 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:313.2,313.6 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:303.21,305.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:308.19,311.3 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:313.6,315.10 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:316.16,318.39 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:319.23,322.37 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:326.11,328.14 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:322.37,325.5 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:334.79,340.30 3 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:347.2,347.30 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:350.2,350.31 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:340.30,341.25 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:341.25,343.4 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:343.9,345.4 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:347.30,349.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:354.72,357.27 3 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:365.2,369.9 5 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:357.27,359.42 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:359.42,362.4 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:370.21,371.14 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:372.23,373.15 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:378.42,380.28 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:386.2,386.34 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:380.28,381.31 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:381.31,383.4 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:386.34,387.27 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:387.27,390.4 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/error.go:49.37,50.40 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/error.go:53.2,53.42 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/error.go:50.40,52.3 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/error.go:61.38,63.2 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:50.74,52.2 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:55.60,56.60 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:59.2,59.50 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:62.2,62.49 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:65.2,65.12 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:56.60,58.3 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:59.50,61.3 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:62.49,64.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:70.82,71.24 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:78.2,78.15 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:85.2,85.22 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:89.2,94.20 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:97.2,97.34 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:71.24,72.44 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:72.44,74.4 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:78.15,79.17 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:79.17,81.4 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:85.22,88.3 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:94.20,96.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:101.44,106.2 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:110.33,111.56 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:114.2,115.31 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:111.56,113.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:118.63,121.16 3 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:124.2,126.36 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:130.2,130.12 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:121.16,123.3 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:126.36,129.3 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:133.83,137.16 4 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:140.2,141.33 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:144.2,144.17 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:137.16,139.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:141.33,143.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:147.39,149.2 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:152.49,153.17 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:156.2,157.18 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:161.2,161.17 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:153.17,155.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:157.18,160.3 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:165.61,166.33 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:170.2,174.16 5 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:178.2,183.52 4 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:187.2,187.50 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:190.2,190.12 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:166.33,168.3 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:174.16,177.3 2 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:183.52,186.3 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:187.50,189.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:194.44,198.2 3 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:200.63,202.2 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:207.68,209.9 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:217.2,219.9 3 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:210.29,211.27 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:212.28,213.26 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:214.10,215.14 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:220.21,221.14 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:222.20,223.15 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:237.85,239.2 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:241.36,243.2 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:245.64,246.17 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:257.2,257.12 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:246.17,251.17 5 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:254.3,255.30 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:251.17,253.4 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:260.85,262.16 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:265.2,265.23 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:279.2,279.15 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:262.16,264.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:266.17,267.14 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:270.3,270.14 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:271.18,272.15 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:275.3,275.14 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:276.20,277.49 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:267.14,269.4 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:272.15,274.4 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:288.50,290.2 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:292.47,293.40 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:297.2,297.24 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:300.2,300.35 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:303.2,304.19 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:293.40,295.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:297.24,299.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:300.35,302.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:308.72,310.19 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:310.19,314.36 3 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:314.36,315.28 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:318.4,318.32 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:321.4,323.22 3 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:315.28,316.13 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:318.32,319.13 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:323.22,326.5 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:43.83,46.16 3 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:49.2,52.27 4 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:46.16,48.3 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:57.78,59.54 2 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:62.2,64.35 3 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:67.2,68.12 2 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:59.54,61.3 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:64.35,66.3 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:72.27,74.2 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:77.35,79.2 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:82.55,84.30 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:91.2,91.16 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:84.30,86.19 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:89.3,89.27 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:86.19,88.4 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:95.33,97.30 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:102.2,102.14 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:97.30,98.35 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:98.35,100.4 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:106.38,108.30 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:113.2,113.14 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:108.30,109.34 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:109.34,111.4 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:154.77,160.28 4 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:167.2,168.28 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:171.2,172.26 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:181.2,187.15 7 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:160.28,161.39 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:161.39,163.4 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:168.28,170.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:172.26,174.17 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:177.3,177.22 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:174.17,176.4 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:190.45,191.23 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:194.2,194.33 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:202.2,203.23 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:213.2,213.26 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:191.23,193.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:194.33,196.29 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:200.3,200.30 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:196.29,199.4 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:203.23,205.23 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:208.3,211.34 4 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:205.23,207.4 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:216.50,217.40 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:220.2,220.14 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:217.40,219.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:263.32,267.2 3 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:269.37,271.2 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:273.38,277.2 3 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:279.67,283.2 3 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:285.39,287.2 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:289.36,291.2 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:293.37,295.2 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:297.70,301.2 3 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:305.75,306.9 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:307.40,308.27 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:309.42,310.24 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:311.39,312.35 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:313.10,314.30 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:318.45,321.108 3 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:324.2,324.48 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:327.2,328.55 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:331.2,331.48 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:321.108,323.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:324.48,326.3 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:328.55,330.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:334.46,336.16 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:339.2,339.16 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:336.16,338.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:342.46,343.39 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:346.2,348.15 3 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:351.2,353.16 3 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:356.2,357.16 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:360.2,360.40 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:343.39,345.3 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:348.15,350.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:353.16,355.3 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:357.16,359.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:363.43,365.13 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:368.2,369.42 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:375.2,375.34 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:365.13,367.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:369.42,370.22 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:373.3,373.29 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:370.22,372.4 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:378.73,381.16 3 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:384.2,385.51 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:388.2,389.16 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:392.2,392.26 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:381.16,383.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:385.51,387.3 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:389.16,391.3 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:395.33,397.73 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:400.2,402.19 3 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:397.73,399.3 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:406.39,408.24 2 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:411.2,411.22 1 1 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:408.24,409.59 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:417.79,419.16 2 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:422.2,422.34 1 0 +github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:419.16,421.3 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:149.70,150.17 1 1 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:153.2,156.3 1 1 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:150.17,152.3 1 1 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:166.70,176.2 4 1 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:180.37,183.2 2 1 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:189.73,195.16 3 1 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:200.2,200.18 1 1 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:203.2,206.110 3 1 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:195.16,198.3 2 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:200.18,202.3 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:246.44,255.2 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:258.61,262.33 3 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:265.2,268.12 3 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:262.33,264.3 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:272.45,276.34 3 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:279.2,280.12 2 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:276.34,278.3 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:287.52,292.2 3 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:296.52,299.32 2 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:304.2,307.33 3 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:313.2,313.29 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:316.2,316.29 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:319.2,319.15 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:299.32,303.3 3 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:307.33,309.3 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:309.8,309.26 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:309.26,311.3 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:313.29,315.3 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:316.29,318.3 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:326.56,331.2 3 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:335.56,337.32 2 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:344.2,344.35 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:347.2,347.19 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:337.32,339.37 2 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:342.3,342.20 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:339.37,341.4 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:344.35,346.3 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:355.52,364.2 4 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:370.50,379.2 4 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:383.50,385.34 2 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:388.2,388.16 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:385.34,387.3 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:393.27,400.12 4 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:405.2,408.56 3 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:412.2,417.86 5 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:400.12,402.3 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:408.56,410.3 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:423.29,425.26 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:431.2,431.44 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:435.2,438.37 3 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:441.2,441.117 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:425.26,428.3 2 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:431.44,433.3 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:438.37,440.3 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:446.82,451.20 4 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:454.2,454.42 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:451.20,453.3 1 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:459.85,463.47 3 0 +github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:463.47,465.3 1 0 +github.com/ethereum/go-ethereum/p2p/netutil/toobig_notwindows.go:25.37,27.2 1 0 +github.com/ethereum/go-ethereum/p2p/netutil/addrutil.go:22.35,23.26 1 0 +github.com/ethereum/go-ethereum/p2p/netutil/addrutil.go:24.19,25.14 1 0 +github.com/ethereum/go-ethereum/p2p/netutil/addrutil.go:26.20,27.14 1 0 +github.com/ethereum/go-ethereum/p2p/netutil/addrutil.go:28.20,29.14 1 0 +github.com/ethereum/go-ethereum/p2p/netutil/addrutil.go:30.10,31.13 1 0 +github.com/ethereum/go-ethereum/p2p/netutil/error.go:20.39,25.2 2 0 +github.com/ethereum/go-ethereum/p2p/netutil/error.go:28.32,33.2 2 0 +github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:50.86,59.2 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:64.48,68.38 4 1 +github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:73.2,73.14 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:68.38,69.52 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:69.52,71.4 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:77.47,83.34 4 1 +github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:90.2,90.12 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:83.34,86.44 3 1 +github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:86.44,88.4 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:94.58,97.56 3 1 +github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:97.56,99.3 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:104.46,107.61 3 1 +github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:107.61,109.3 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:112.55,115.37 3 1 +github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:115.37,116.22 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:116.22,118.4 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:122.52,125.35 3 1 +github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:125.35,126.18 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:126.18,128.4 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:31.13,66.2 30 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:73.47,77.29 4 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:87.2,87.16 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:77.29,78.17 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:81.3,82.17 2 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:85.3,85.20 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:78.17,79.12 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:82.17,84.4 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:91.44,93.24 2 0 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:96.2,96.13 1 0 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:93.24,95.3 1 0 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:100.67,102.35 2 0 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:105.2,105.29 1 0 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:112.2,112.12 1 0 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:102.35,104.3 1 0 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:105.29,107.17 2 0 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:110.3,110.22 1 0 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:107.17,109.4 1 0 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:117.36,119.16 2 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:122.2,122.21 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:119.16,120.13 1 0 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:126.44,127.14 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:130.2,130.25 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:135.2,135.14 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:127.14,129.3 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:130.25,131.23 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:131.23,133.4 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:139.28,140.21 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:143.2,143.31 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:146.2,146.26 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:140.21,142.3 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:143.31,145.3 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:151.39,152.22 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:155.2,155.31 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:158.2,158.30 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:152.22,154.3 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:155.31,157.3 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:177.46,178.58 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:181.2,181.26 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:184.2,184.28 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:187.2,187.47 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:190.2,190.35 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:193.2,193.12 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:178.58,180.3 1 0 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:181.26,183.3 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:184.28,186.3 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:187.47,189.3 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:190.35,192.3 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:197.48,199.9 2 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:200.39,201.15 1 0 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:202.18,203.36 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:204.10,205.48 1 0 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:209.48,212.64 3 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:215.2,215.51 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:212.64,214.3 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:230.46,233.17 3 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:237.2,237.14 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:233.17,236.3 2 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:241.44,243.41 2 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:243.41,244.13 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:244.13,246.4 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:246.9,248.4 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:253.50,257.2 3 0 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:260.35,262.30 2 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:265.2,265.15 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:262.30,264.3 1 0 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:272.48,274.22 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:279.2,280.33 2 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:283.2,284.28 2 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:288.2,292.31 5 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:295.2,295.12 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:274.22,277.3 2 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:280.33,282.3 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:284.28,286.3 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:292.31,294.3 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:299.41,303.27 4 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:306.2,307.25 2 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:320.2,321.21 2 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:303.27,305.3 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:307.25,309.18 2 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:314.3,316.23 3 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:309.18,311.4 1 1 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:311.9,313.4 1 0 +github.com/ethereum/go-ethereum/p2p/netutil/net.go:316.23,318.4 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:40.30,45.2 4 1 +github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:49.63,54.15 3 1 +github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:60.2,65.16 4 1 +github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:68.2,70.39 3 1 +github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:54.15,57.3 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:65.16,67.3 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:74.34,75.28 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:78.2,81.26 4 1 +github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:75.28,77.3 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:90.31,92.2 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:94.48,98.2 3 1 +github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:100.55,103.2 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:107.34,109.2 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:111.36,115.2 3 1 +github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:119.49,120.26 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:123.2,123.26 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:126.2,126.33 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:120.26,122.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:123.26,125.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:81.59,83.44 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:86.2,86.35 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:89.2,89.10 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:83.44,84.76 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:86.35,87.60 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:94.62,99.2 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:104.39,105.12 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:105.12,108.3 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:108.8,111.3 2 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:115.54,117.2 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:120.55,122.2 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:125.50,127.2 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:131.75,132.22 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:136.2,137.16 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:140.2,141.16 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:144.2,147.31 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:159.2,159.34 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:132.22,133.42 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:137.16,139.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:141.16,143.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:147.31,150.17 3 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:153.3,153.29 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:156.3,157.54 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:150.17,152.4 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:153.29,155.4 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:162.66,167.16 3 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:172.2,173.45 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:178.2,182.40 4 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:187.2,188.16 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:193.2,194.16 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:197.2,198.41 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:203.2,204.27 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:167.16,169.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:173.45,175.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:182.40,184.3 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:188.16,190.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:194.16,196.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:198.41,200.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:211.64,212.22 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:215.2,215.27 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:218.2,218.32 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:226.2,228.22 3 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:212.22,213.43 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:215.27,217.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:218.32,224.3 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:231.83,236.23 3 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:239.2,251.40 9 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:254.2,261.12 5 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:236.23,238.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:251.40,253.3 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:265.55,268.2 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:271.57,275.2 3 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:284.53,285.35 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:289.2,290.29 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:293.2,295.18 3 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:285.35,286.28 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:290.29,292.3 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:300.75,306.23 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:311.2,311.16 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:314.2,317.24 4 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:306.23,308.3 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:308.8,310.3 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:311.16,313.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:322.45,323.22 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:326.2,327.16 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:330.2,331.16 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:336.2,342.3 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:323.22,324.33 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:327.16,328.46 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:331.16,332.46 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:346.30,348.2 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:414.105,417.16 3 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:420.2,420.54 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:424.2,425.16 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:428.2,429.16 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:432.2,432.53 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:436.2,436.46 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:417.16,419.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:420.54,422.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:425.16,427.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:429.16,431.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:432.53,434.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:439.85,442.16 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:445.2,450.28 3 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:458.2,459.16 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:462.2,464.16 3 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:467.2,468.12 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:442.16,444.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:450.28,452.17 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:452.17,454.4 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:459.16,461.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:464.16,466.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:473.74,475.16 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:480.2,495.17 10 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:501.2,501.15 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:475.16,477.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:495.17,497.3 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:497.8,499.3 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:506.84,508.2 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:514.130,519.16 4 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:522.2,523.16 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:527.2,527.49 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:531.2,533.16 3 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:536.2,536.54 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:540.2,540.46 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:519.16,521.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:523.16,525.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:527.49,529.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:533.16,535.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:536.54,538.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:544.81,548.16 3 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:552.2,553.16 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:558.2,559.16 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:562.2,564.16 3 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:568.2,573.17 6 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:548.16,550.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:553.16,555.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:559.16,561.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:564.16,566.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:576.70,580.2 3 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:582.70,585.49 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:589.2,593.17 5 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:585.49,587.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:597.103,603.16 4 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:606.2,610.16 3 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:613.2,614.16 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:619.2,621.51 3 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:603.16,605.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:610.16,612.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:614.16,616.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:625.68,629.49 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:634.2,640.36 5 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:629.49,631.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:644.63,646.21 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:656.2,657.16 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:660.2,660.42 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:647.10,649.45 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:650.10,651.20 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:652.10,653.85 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:657.16,659.3 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:663.48,664.16 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:667.2,667.54 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:664.16,665.22 1 0 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:670.42,672.32 2 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:675.2,675.12 1 1 +github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:672.32,674.3 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:185.44,186.20 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:189.2,191.10 3 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:186.20,188.3 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:195.54,196.20 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:199.2,201.10 3 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:196.20,198.3 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:205.37,207.2 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:210.65,217.2 3 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:220.159,229.2 3 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:232.66,233.20 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:239.2,239.20 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:245.2,245.24 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:248.2,249.13 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:252.2,252.13 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:255.2,255.16 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:258.2,258.12 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:233.20,234.18 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:237.3,237.20 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:234.18,235.53 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:239.20,240.18 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:243.3,243.20 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:240.18,241.53 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:245.24,246.56 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:249.13,251.3 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:252.13,254.3 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:255.16,257.3 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:262.35,262.78 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:265.38,265.81 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:268.34,268.75 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:271.35,271.77 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:274.37,274.90 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:277.38,277.91 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:280.37,280.89 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:283.31,283.53 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:286.38,287.20 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:290.2,291.33 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:294.2,294.12 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:287.20,289.3 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:291.33,293.3 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:298.32,299.17 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:302.2,304.41 3 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:313.2,314.10 2 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:299.17,301.3 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:304.41,305.44 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:305.44,306.13 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:309.4,310.16 2 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:306.13,308.5 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:320.116,321.24 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:324.2,324.57 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:327.2,337.39 4 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:346.2,347.41 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:354.2,354.11 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:321.24,322.34 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:324.57,325.37 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:337.39,338.43 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:341.3,342.22 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:338.43,339.57 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:342.22,344.4 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:347.41,348.44 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:351.3,352.35 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:348.44,349.53 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:358.60,359.48 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:362.2,362.19 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:359.48,360.56 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:366.57,367.29 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:370.2,370.20 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:367.29,368.51 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:382.81,386.16 3 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:389.2,389.78 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:386.16,387.41 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:393.81,397.16 3 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:400.2,401.35 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:397.16,398.41 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:405.62,407.2 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:410.44,411.17 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:411.17,412.41 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:418.37,420.16 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:423.2,424.18 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:428.2,431.18 4 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:420.16,421.41 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:424.18,426.3 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:435.36,440.19 4 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:443.2,443.32 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:448.2,448.18 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:451.2,453.15 3 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:440.19,441.26 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:443.32,447.3 3 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:448.18,450.3 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:457.42,459.16 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:459.16,461.49 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:465.3,466.32 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:461.49,463.12 2 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:472.65,472.79 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:473.65,473.81 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:476.66,478.52 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:482.2,486.37 4 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:491.2,491.44 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:496.2,496.38 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:514.2,519.92 6 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:478.52,481.3 2 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:486.37,490.3 3 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:491.44,494.3 2 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:496.38,497.25 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:500.3,500.51 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:497.25,498.12 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:500.51,501.50 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:501.50,504.5 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:504.10,507.5 2 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:508.9,511.4 2 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:523.73,524.18 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:528.2,529.34 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:532.2,540.32 4 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:555.2,555.41 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:563.2,565.16 3 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:568.2,568.72 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:571.2,573.28 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:576.2,576.12 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:524.18,526.3 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:529.34,531.3 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:540.32,541.15 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:544.3,545.20 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:548.3,549.17 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:552.3,553.16 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:541.15,542.12 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:545.20,546.12 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:549.17,551.4 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:555.41,556.14 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:560.3,561.13 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:556.14,559.4 2 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:565.16,567.3 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:568.72,570.3 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:573.28,575.3 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:580.53,582.2 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:585.40,586.33 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:586.33,587.17 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:587.17,589.18 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:589.18,591.5 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:597.78,600.46 3 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:604.2,604.17 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:600.46,603.3 2 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:608.58,613.62 4 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:620.2,620.12 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:613.62,615.17 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:618.3,618.13 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:615.17,617.4 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:625.110,629.19 3 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:632.2,634.12 3 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:629.19,631.3 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:639.107,645.2 4 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:647.104,651.17 4 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:658.2,668.30 6 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:671.2,671.26 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:674.2,674.43 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:684.2,684.21 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:691.2,691.47 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:651.17,652.15 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:655.3,656.22 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:652.15,654.4 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:668.30,670.3 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:671.26,673.3 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:674.43,676.14 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:676.14,678.4 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:679.8,680.32 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:680.32,682.4 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:684.21,685.36 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:685.36,686.29 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:686.29,688.5 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:695.39,696.16 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:696.16,697.37 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:702.44,703.16 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:706.2,706.15 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:709.2,710.13 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:703.16,705.3 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:706.15,708.3 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:717.40,718.29 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:727.2,729.23 3 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:718.29,721.27 3 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:724.3,725.42 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:721.27,723.4 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:735.56,739.14 4 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:742.2,746.12 5 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:739.14,741.3 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:750.58,751.44 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:781.2,781.30 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:751.44,753.22 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:779.3,779.48 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:753.22,754.37 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:766.4,766.32 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:754.37,757.28 3 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:760.5,760.14 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:757.28,758.14 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:760.14,762.6 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:762.11,764.6 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:766.32,767.45 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:770.5,770.44 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:767.45,768.14 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:770.44,771.15 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:771.15,773.7 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:773.12,775.7 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:786.97,791.15 4 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:794.2,795.12 2 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:791.15,793.3 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:799.92,801.17 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:804.2,805.15 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:808.2,810.47 3 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:820.2,821.28 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:801.17,803.3 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:805.15,807.3 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:810.47,814.20 3 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:817.3,818.16 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:814.20,816.4 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:821.28,823.3 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:830.74,831.42 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:831.42,834.17 3 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:837.3,838.18 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:841.3,845.30 5 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:834.17,835.12 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:838.18,839.12 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:845.30,847.4 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:854.78,859.15 4 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:862.2,862.47 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:865.2,865.12 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:859.15,861.3 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:862.47,864.3 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:871.59,876.15 4 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:879.2,879.47 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:882.2,882.16 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:876.15,878.3 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:879.47,881.3 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:886.91,890.19 3 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:893.2,895.12 3 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:890.19,892.3 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:900.94,906.2 4 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:908.91,911.17 3 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:918.2,920.54 3 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:924.2,925.23 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:928.2,928.21 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:931.2,931.18 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:934.2,935.45 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:945.2,946.21 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:951.2,952.12 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:911.17,912.19 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:915.3,916.22 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:912.19,914.4 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:920.54,923.3 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:925.23,927.3 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:928.21,930.3 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:931.18,933.3 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:935.45,937.14 2 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:937.14,939.4 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:940.8,941.22 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:941.22,943.4 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:946.21,947.29 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:947.29,949.4 1 1 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:959.108,968.32 6 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:973.2,974.30 2 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:968.32,969.63 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:969.63,971.4 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:974.30,976.3 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:980.62,985.39 4 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:988.2,988.12 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:985.39,987.3 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:993.144,995.97 2 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:995.97,998.27 3 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:1002.3,1002.15 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:1019.3,1019.19 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:998.27,1000.4 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:1002.15,1004.18 2 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:1007.4,1007.22 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:1004.18,1006.5 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:1007.22,1009.5 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:1010.9,1012.18 2 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:1015.4,1015.23 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:1012.18,1014.5 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:1015.23,1017.5 1 0 +github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:1019.19,1021.4 1 0 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:40.39,42.16 2 0 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:45.2,45.10 1 0 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:42.16,43.44 1 0 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:72.44,73.65 1 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:80.2,80.30 1 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:73.65,75.17 2 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:78.3,78.35 1 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:75.17,77.4 1 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:85.68,87.17 2 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:90.2,90.14 1 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:93.2,93.14 1 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:96.2,98.16 3 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:101.2,101.10 1 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:87.17,89.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:90.14,92.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:93.14,95.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:98.16,99.13 1 0 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:105.28,108.2 2 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:110.50,116.16 3 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:119.2,119.25 1 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:123.2,123.19 1 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:126.2,126.56 1 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:130.2,131.15 2 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:139.2,139.35 1 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:143.2,143.68 1 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:146.2,148.30 3 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:154.2,154.55 1 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:116.16,118.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:119.25,121.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:123.19,125.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:126.56,128.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:131.15,133.17 2 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:136.3,136.14 1 0 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:133.17,135.4 1 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:139.35,141.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:143.68,145.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:148.30,150.17 2 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:150.17,152.4 1 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:158.55,160.16 2 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:165.2,166.34 2 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:160.16,162.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:162.8,162.25 1 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:162.25,164.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:169.31,177.9 4 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:183.2,184.20 2 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:194.2,194.19 1 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:178.50,179.60 1 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:180.10,181.49 1 0 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:184.20,186.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:186.8,190.25 4 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:190.25,192.4 1 1 +github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:198.44,203.2 4 1 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:45.61,54.16 7 1 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:57.2,58.47 2 1 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:61.2,61.12 1 1 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:54.16,56.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:58.47,60.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:64.53,66.39 2 1 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:72.2,74.53 3 1 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:77.2,77.12 1 1 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:66.39,68.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:68.8,68.29 1 1 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:68.29,70.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:74.53,76.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:80.44,83.16 3 1 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:86.2,89.30 4 1 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:83.16,85.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:95.36,95.58 1 1 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:98.49,100.2 1 1 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:103.52,105.16 2 1 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:108.2,109.16 2 1 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:112.2,113.12 2 1 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:105.16,107.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:109.16,111.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:119.32,119.54 1 1 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:127.59,130.2 2 1 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:132.59,134.57 2 1 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:134.57,135.13 1 0 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:143.55,145.2 1 1 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:147.46,151.2 3 0 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:153.43,156.53 3 1 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:159.2,159.29 1 1 +github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:156.53,157.13 1 0 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:36.44,38.38 2 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:47.2,48.28 2 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:51.2,51.15 1 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:38.38,42.40 3 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:45.3,45.25 1 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:42.40,43.12 1 0 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:48.28,50.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:55.40,57.2 1 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:60.41,62.2 1 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:71.34,75.24 3 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:78.2,79.31 2 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:87.2,87.13 1 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:75.24,77.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:79.31,80.15 1 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:80.15,82.4 1 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:82.9,85.4 2 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:90.35,93.24 3 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:96.2,96.27 1 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:93.24,95.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:99.30,104.2 3 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:108.59,110.2 1 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:117.34,118.24 1 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:123.2,123.14 1 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:118.24,119.24 1 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:119.24,121.4 1 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:160.49,167.2 2 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:170.42,174.21 3 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:177.2,180.34 4 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:174.21,176.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:185.27,189.21 3 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:192.2,192.30 1 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:195.2,199.16 5 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:189.21,191.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:192.30,194.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:203.31,207.20 3 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:212.2,212.6 1 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:207.20,211.3 3 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:212.6,214.20 2 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:217.3,217.10 1 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:214.20,216.4 1 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:218.31,219.10 1 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:225.4,225.26 1 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:226.18,228.26 2 0 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:219.10,223.5 3 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:234.32,236.2 1 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:240.38,242.8 2 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:245.2,245.11 1 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:242.8,244.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:249.43,253.25 3 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:256.2,257.26 2 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:253.25,255.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:261.46,265.27 3 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:265.27,266.24 1 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:266.24,270.9 4 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:276.65,279.18 3 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:279.18,281.10 2 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:282.20,282.20 0 1 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:283.23,283.23 0 0 +github.com/ethereum/go-ethereum/p2p/enode/iter.go:284.17,285.10 1 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:70.61,87.2 5 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:90.37,92.2 1 0 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:95.35,98.14 2 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:103.2,108.41 3 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:117.2,118.39 2 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:122.2,124.30 3 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:98.14,100.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:108.41,110.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:118.39,120.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:128.35,133.2 3 0 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:136.30,138.2 1 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:147.39,152.2 3 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:154.39,156.43 2 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:156.43,159.3 2 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:163.42,168.2 3 0 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:170.42,172.12 2 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:172.12,175.3 2 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:178.59,179.21 1 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:182.2,182.22 1 0 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:179.21,181.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:187.45,193.2 4 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:197.47,203.2 4 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:207.47,214.2 5 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:218.76,224.2 4 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:228.54,234.2 4 0 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:237.40,241.40 3 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:246.2,246.40 1 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:251.2,251.15 1 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:256.2,256.31 1 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:241.40,243.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:243.8,245.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:246.40,248.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:248.8,250.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:251.15,253.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:253.8,255.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:256.31,258.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:258.8,260.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:264.59,266.25 2 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:269.2,269.23 1 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:275.2,275.23 1 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:266.25,268.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:269.23,271.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:271.8,271.56 1 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:271.56,274.3 2 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:280.57,282.14 2 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:285.2,288.16 4 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:291.2,291.25 1 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:282.14,284.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:288.16,290.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:294.35,296.2 1 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:298.29,299.42 1 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:303.2,304.31 2 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:307.2,309.43 3 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:312.2,313.16 2 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:316.2,317.110 2 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:299.42,301.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:304.31,306.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:309.43,310.57 1 0 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:313.16,314.65 1 0 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:320.32,323.2 2 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:326.31,328.12 2 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:331.2,331.33 1 1 +github.com/ethereum/go-ethereum/p2p/enode/localnode.go:328.12,330.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:43.73,44.56 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:47.2,48.75 2 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:51.2,51.18 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:44.56,46.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:48.75,50.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:55.37,57.16 2 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:60.2,60.10 1 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:57.16,58.40 1 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:64.74,65.42 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:68.2,68.39 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:71.2,72.16 2 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:75.2,76.49 2 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:79.2,79.30 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:65.42,67.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:68.39,70.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:72.16,74.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:76.49,78.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:83.24,85.2 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:88.29,90.2 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:93.34,95.2 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:98.40,100.2 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:103.28,108.25 2 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:111.2,111.25 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:114.2,114.12 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:108.25,110.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:111.25,113.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:118.26,122.2 3 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:125.26,129.2 3 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:132.42,134.39 2 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:137.2,137.13 1 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:134.39,136.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:142.37,145.2 2 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:149.41,150.20 1 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:153.2,153.18 1 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:156.2,157.44 2 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:161.2,162.21 2 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:150.20,152.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:153.18,155.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:157.44,159.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:166.32,167.16 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:170.2,172.21 3 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:167.16,169.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:176.46,178.2 1 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:181.49,183.16 2 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:186.2,186.12 1 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:183.16,185.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:193.28,195.2 1 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:198.29,200.2 1 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:203.31,205.2 1 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:208.37,210.2 1 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:213.43,215.2 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:218.47,220.16 2 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:223.2,224.12 2 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:220.16,222.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:230.26,232.16 2 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:235.2,235.11 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:232.16,233.13 1 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:238.37,241.16 3 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:246.2,247.16 2 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:241.16,243.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:243.8,243.30 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:243.30,245.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/node.go:253.35,254.24 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:263.2,263.10 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:254.24,257.14 3 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:257.14,259.4 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:259.9,259.21 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:259.21,261.4 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:267.27,269.19 2 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:278.2,278.22 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:269.19,271.13 2 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:271.13,273.4 1 1 +github.com/ethereum/go-ethereum/p2p/enode/node.go:273.9,275.9 2 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:80.39,81.16 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:84.2,84.30 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:81.16,83.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:88.33,90.16 2 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:93.2,93.53 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:90.16,92.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:98.48,101.63 3 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:104.2,104.16 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:109.2,113.13 4 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:131.2,131.53 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:101.63,103.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:104.16,106.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:114.27,116.71 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:121.11,123.37 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:116.71,119.4 2 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:123.37,125.44 2 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:128.4,128.32 1 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:125.44,127.5 1 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:135.28,140.2 4 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:143.52,144.49 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:147.2,149.29 3 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:144.49,146.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:153.57,155.17 2 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:158.2,158.76 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:155.17,156.55 1 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:162.68,165.35 2 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:168.2,171.33 3 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:174.2,177.22 3 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:165.35,167.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:171.33,173.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:180.51,188.2 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:191.47,196.2 4 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:199.44,201.16 2 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:204.2,205.15 2 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:208.2,208.12 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:201.16,203.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:205.15,207.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:212.53,216.2 3 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:219.46,221.16 2 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:224.2,225.12 2 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:221.16,223.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:229.55,233.2 3 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:236.33,238.16 2 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:241.2,241.36 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:238.16,240.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:244.44,246.55 2 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:250.2,251.13 2 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:246.55,247.74 1 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:255.44,256.40 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:259.2,260.16 2 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:263.2,263.66 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:266.2,266.78 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:256.40,258.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:260.16,262.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:263.66,265.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:270.37,272.2 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:276.38,277.34 1 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:280.2,280.24 1 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:277.34,279.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:284.33,286.2 1 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:288.49,291.16 3 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:291.16,293.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:305.31,306.22 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:306.22,306.41 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:311.25,314.6 3 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:314.6,315.10 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:316.17,317.20 1 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:318.18,319.10 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:326.29,329.16 3 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:333.2,338.13 2 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:329.16,331.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:338.13,340.26 2 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:350.3,352.28 3 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:340.26,342.27 2 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:345.4,345.24 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:342.27,344.5 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:345.24,348.5 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:352.28,355.52 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:358.4,358.20 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:355.52,357.5 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:365.60,366.31 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:369.2,369.69 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:366.31,368.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:373.82,374.31 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:377.2,377.72 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:374.31,376.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:381.60,382.31 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:386.2,387.69 2 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:382.31,384.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:391.82,392.31 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:395.2,395.72 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:392.31,394.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:399.47,400.31 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:403.2,403.65 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:400.31,402.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:407.66,408.31 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:411.2,411.74 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:408.31,410.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:415.49,416.31 1 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:419.2,419.59 1 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:416.31,418.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:423.68,424.31 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:427.2,427.68 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:424.31,426.3 1 0 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:433.38,434.66 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:437.2,437.26 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:434.66,436.3 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:441.46,443.2 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:447.63,457.57 3 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:481.2,481.14 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:457.57,467.15 6 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:471.3,471.60 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:474.3,474.24 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:479.3,479.27 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:467.15,469.17 2 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:471.60,472.17 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:474.24,475.31 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:475.31,476.18 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:486.43,487.43 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:494.2,494.12 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:487.43,489.37 2 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:492.3,492.43 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:489.37,490.12 1 1 +github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:498.23,501.2 2 1 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:52.34,55.31 3 1 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:59.2,59.25 1 1 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:55.31,58.3 2 1 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:62.54,64.31 2 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:69.2,69.16 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:72.2,73.15 2 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:76.2,76.16 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:64.31,67.3 2 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:69.16,71.3 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:73.15,75.3 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:79.109,81.16 2 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:84.2,88.38 4 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:81.16,83.3 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:88.38,90.3 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:93.50,95.16 2 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:98.2,99.16 2 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:102.2,102.31 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:113.2,113.83 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:95.16,97.3 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:99.16,101.3 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:102.31,104.17 2 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:107.3,107.30 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:104.17,106.4 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:107.30,108.64 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:108.64,110.5 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:116.75,117.38 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:117.38,119.3 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:122.32,124.2 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:126.53,131.25 4 1 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:134.2,136.12 3 1 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:131.25,133.3 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:141.31,144.101 2 1 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:154.2,154.101 1 1 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:165.2,165.34 1 1 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:170.2,170.12 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:144.101,145.33 1 1 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:151.3,151.13 1 1 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:146.47,147.101 1 1 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:148.48,149.103 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:154.101,155.33 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:163.3,163.13 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:156.47,157.101 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:158.47,159.101 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:160.48,161.103 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:165.34,166.29 1 1 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:166.29,168.4 1 1 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:176.90,178.16 2 1 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:182.2,183.43 2 1 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:212.2,212.12 1 1 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:178.16,181.3 2 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:183.43,184.26 1 1 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:187.3,187.67 1 1 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:184.26,185.12 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:187.67,188.13 1 1 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:192.4,200.19 4 1 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:203.4,206.25 2 1 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:188.13,190.5 1 1 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:200.19,202.5 1 1 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:206.25,209.5 2 1 +github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:212.12,214.3 1 1 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:62.44,68.20 2 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:74.2,74.14 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:68.20,70.16 2 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:70.16,72.4 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:75.25,76.18 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:77.27,78.20 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:79.21,80.16 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:83.3,83.24 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:84.14,85.21 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:86.34,87.22 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:88.10,89.59 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:80.16,82.4 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:99.94,102.15 3 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:107.2,107.83 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:112.2,112.6 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:102.15,106.3 3 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:107.83,109.3 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:109.8,111.3 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:112.6,113.10 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:114.21,115.11 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:118.20,120.85 2 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:123.4,123.29 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:115.11,117.5 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:120.85,122.5 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:133.45,133.70 1 1 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:134.45,134.91 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:138.72,138.86 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:139.72,139.86 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:143.22,146.59 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:146.59,148.13 2 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:149.3,149.13 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:150.3,150.35 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:155.3,155.13 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:148.13,148.40 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:149.13,149.39 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:150.35,151.30 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:151.30,153.5 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:161.23,163.2 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:168.36,169.20 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:172.2,172.46 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:169.20,171.3 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:191.66,194.2 1 1 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:196.113,197.33 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:200.2,200.71 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:197.33,199.3 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:203.79,204.33 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:207.2,207.58 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:204.33,206.3 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:210.49,211.33 1 1 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:214.2,214.29 1 1 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:211.33,213.3 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:217.36,220.20 3 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:223.2,223.25 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:220.20,222.3 1 0 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:227.33,228.19 1 1 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:233.2,233.20 1 1 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:236.2,236.12 1 1 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:228.19,232.3 3 1 +github.com/ethereum/go-ethereum/p2p/nat/nat.go:233.20,235.3 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:35.31,37.2 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:39.44,41.16 2 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:44.2,44.43 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:41.16,43.3 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:47.108,48.19 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:53.2,54.12 2 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:48.19,50.3 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:57.80,63.2 2 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:65.30,69.21 3 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:83.2,85.16 3 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:95.2,95.12 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:69.21,71.13 2 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:71.13,73.52 2 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:73.52,75.5 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:75.10,77.5 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:85.16,86.10 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:87.21,88.16 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:91.20,92.14 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:88.16,90.5 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:107.41,109.16 2 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:112.2,112.31 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:129.2,129.12 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:109.16,111.3 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:112.31,114.17 2 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:117.3,117.32 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:114.17,116.4 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:117.32,118.38 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:118.38,119.79 1 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:119.79,121.19 2 0 +github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:121.19,124.7 2 0 +github.com/ethereum/go-ethereum/params/config.go:422.62,423.15 1 0 +github.com/ethereum/go-ethereum/params/config.go:426.2,426.25 1 0 +github.com/ethereum/go-ethereum/params/config.go:423.15,425.3 1 0 +github.com/ethereum/go-ethereum/params/config.go:430.48,443.2 10 0 +github.com/ethereum/go-ethereum/params/config.go:446.42,448.2 1 0 +github.com/ethereum/go-ethereum/params/config.go:502.40,504.2 1 0 +github.com/ethereum/go-ethereum/params/config.go:513.40,515.2 1 0 +github.com/ethereum/go-ethereum/params/config.go:532.37,534.2 1 0 +github.com/ethereum/go-ethereum/params/config.go:536.69,538.2 1 0 +github.com/ethereum/go-ethereum/params/config.go:540.59,542.2 1 0 +github.com/ethereum/go-ethereum/params/config.go:544.50,546.2 1 0 +github.com/ethereum/go-ethereum/params/config.go:548.93,550.23 2 0 +github.com/ethereum/go-ethereum/params/config.go:553.2,554.35 2 0 +github.com/ethereum/go-ethereum/params/config.go:561.2,561.33 1 0 +github.com/ethereum/go-ethereum/params/config.go:550.23,552.3 1 0 +github.com/ethereum/go-ethereum/params/config.go:554.35,557.47 3 0 +github.com/ethereum/go-ethereum/params/config.go:557.47,559.4 1 0 +github.com/ethereum/go-ethereum/params/config.go:564.66,566.33 2 0 +github.com/ethereum/go-ethereum/params/config.go:569.2,570.35 2 0 +github.com/ethereum/go-ethereum/params/config.go:577.2,577.43 1 0 +github.com/ethereum/go-ethereum/params/config.go:566.33,568.3 1 0 +github.com/ethereum/go-ethereum/params/config.go:570.35,573.47 3 0 +github.com/ethereum/go-ethereum/params/config.go:573.47,575.4 1 0 +github.com/ethereum/go-ethereum/params/config.go:581.39,583.9 2 0 +github.com/ethereum/go-ethereum/params/config.go:593.2,612.3 1 0 +github.com/ethereum/go-ethereum/params/config.go:584.23,585.20 1 0 +github.com/ethereum/go-ethereum/params/config.go:586.23,587.20 1 0 +github.com/ethereum/go-ethereum/params/config.go:588.20,589.17 1 0 +github.com/ethereum/go-ethereum/params/config.go:590.10,591.21 1 0 +github.com/ethereum/go-ethereum/params/config.go:616.54,618.2 1 1 +github.com/ethereum/go-ethereum/params/config.go:621.52,623.2 1 1 +github.com/ethereum/go-ethereum/params/config.go:626.51,628.2 1 1 +github.com/ethereum/go-ethereum/params/config.go:631.51,633.2 1 1 +github.com/ethereum/go-ethereum/params/config.go:636.51,638.2 1 1 +github.com/ethereum/go-ethereum/params/config.go:641.54,643.2 1 1 +github.com/ethereum/go-ethereum/params/config.go:646.59,648.2 1 1 +github.com/ethereum/go-ethereum/params/config.go:651.56,653.2 1 0 +github.com/ethereum/go-ethereum/params/config.go:658.55,660.2 1 1 +github.com/ethereum/go-ethereum/params/config.go:663.53,665.2 1 1 +github.com/ethereum/go-ethereum/params/config.go:668.51,670.2 1 1 +github.com/ethereum/go-ethereum/params/config.go:673.51,675.2 1 1 +github.com/ethereum/go-ethereum/params/config.go:678.57,680.2 1 0 +github.com/ethereum/go-ethereum/params/config.go:683.93,684.38 1 0 +github.com/ethereum/go-ethereum/params/config.go:687.2,687.108 1 0 +github.com/ethereum/go-ethereum/params/config.go:684.38,686.3 1 0 +github.com/ethereum/go-ethereum/params/config.go:692.94,697.6 3 1 +github.com/ethereum/go-ethereum/params/config.go:705.2,705.16 1 1 +github.com/ethereum/go-ethereum/params/config.go:697.6,699.73 2 1 +github.com/ethereum/go-ethereum/params/config.go:702.3,703.32 2 1 +github.com/ethereum/go-ethereum/params/config.go:699.73,700.9 1 1 +github.com/ethereum/go-ethereum/params/config.go:710.52,732.4 3 0 +github.com/ethereum/go-ethereum/params/config.go:751.2,751.12 1 0 +github.com/ethereum/go-ethereum/params/config.go:732.4,733.26 1 0 +github.com/ethereum/go-ethereum/params/config.go:747.3,747.40 1 0 +github.com/ethereum/go-ethereum/params/config.go:733.26,735.49 1 0 +github.com/ethereum/go-ethereum/params/config.go:739.4,739.49 1 0 +github.com/ethereum/go-ethereum/params/config.go:735.49,738.5 1 0 +github.com/ethereum/go-ethereum/params/config.go:739.49,740.42 1 0 +github.com/ethereum/go-ethereum/params/config.go:740.42,743.6 1 0 +github.com/ethereum/go-ethereum/params/config.go:747.40,749.4 1 0 +github.com/ethereum/go-ethereum/params/config.go:754.94,755.71 1 1 +github.com/ethereum/go-ethereum/params/config.go:758.2,758.67 1 1 +github.com/ethereum/go-ethereum/params/config.go:761.2,761.68 1 1 +github.com/ethereum/go-ethereum/params/config.go:764.2,764.65 1 1 +github.com/ethereum/go-ethereum/params/config.go:767.2,767.65 1 1 +github.com/ethereum/go-ethereum/params/config.go:770.2,770.65 1 1 +github.com/ethereum/go-ethereum/params/config.go:773.2,773.68 1 1 +github.com/ethereum/go-ethereum/params/config.go:776.2,776.71 1 1 +github.com/ethereum/go-ethereum/params/config.go:779.2,779.81 1 1 +github.com/ethereum/go-ethereum/params/config.go:782.2,782.73 1 1 +github.com/ethereum/go-ethereum/params/config.go:789.2,789.69 1 1 +github.com/ethereum/go-ethereum/params/config.go:792.2,792.75 1 1 +github.com/ethereum/go-ethereum/params/config.go:795.2,795.65 1 1 +github.com/ethereum/go-ethereum/params/config.go:798.2,798.65 1 1 +github.com/ethereum/go-ethereum/params/config.go:801.2,801.77 1 1 +github.com/ethereum/go-ethereum/params/config.go:804.2,804.71 1 1 +github.com/ethereum/go-ethereum/params/config.go:807.2,807.12 1 1 +github.com/ethereum/go-ethereum/params/config.go:755.71,757.3 1 1 +github.com/ethereum/go-ethereum/params/config.go:758.67,760.3 1 0 +github.com/ethereum/go-ethereum/params/config.go:761.68,763.3 1 0 +github.com/ethereum/go-ethereum/params/config.go:764.65,766.3 1 1 +github.com/ethereum/go-ethereum/params/config.go:767.65,769.3 1 0 +github.com/ethereum/go-ethereum/params/config.go:770.65,772.3 1 0 +github.com/ethereum/go-ethereum/params/config.go:773.68,775.3 1 0 +github.com/ethereum/go-ethereum/params/config.go:776.71,778.3 1 0 +github.com/ethereum/go-ethereum/params/config.go:779.81,781.3 1 0 +github.com/ethereum/go-ethereum/params/config.go:782.73,785.78 1 1 +github.com/ethereum/go-ethereum/params/config.go:785.78,787.4 1 1 +github.com/ethereum/go-ethereum/params/config.go:789.69,791.3 1 0 +github.com/ethereum/go-ethereum/params/config.go:792.75,794.3 1 0 +github.com/ethereum/go-ethereum/params/config.go:795.65,797.3 1 0 +github.com/ethereum/go-ethereum/params/config.go:798.65,800.3 1 0 +github.com/ethereum/go-ethereum/params/config.go:801.77,803.3 1 0 +github.com/ethereum/go-ethereum/params/config.go:804.71,806.3 1 0 +github.com/ethereum/go-ethereum/params/config.go:812.53,814.2 1 1 +github.com/ethereum/go-ethereum/params/config.go:817.38,818.29 1 1 +github.com/ethereum/go-ethereum/params/config.go:821.2,821.25 1 1 +github.com/ethereum/go-ethereum/params/config.go:818.29,820.3 1 1 +github.com/ethereum/go-ethereum/params/config.go:824.41,825.14 1 1 +github.com/ethereum/go-ethereum/params/config.go:828.2,828.14 1 1 +github.com/ethereum/go-ethereum/params/config.go:831.2,831.22 1 1 +github.com/ethereum/go-ethereum/params/config.go:825.14,827.3 1 1 +github.com/ethereum/go-ethereum/params/config.go:828.14,830.3 1 1 +github.com/ethereum/go-ethereum/params/config.go:844.85,846.9 2 1 +github.com/ethereum/go-ethereum/params/config.go:854.2,855.34 2 1 +github.com/ethereum/go-ethereum/params/config.go:858.2,858.12 1 1 +github.com/ethereum/go-ethereum/params/config.go:847.26,848.17 1 1 +github.com/ethereum/go-ethereum/params/config.go:849.56,850.20 1 1 +github.com/ethereum/go-ethereum/params/config.go:851.10,852.17 1 1 +github.com/ethereum/go-ethereum/params/config.go:855.34,857.3 1 1 +github.com/ethereum/go-ethereum/params/config.go:861.46,863.2 1 0 +github.com/ethereum/go-ethereum/params/config.go:879.63,881.20 2 1 +github.com/ethereum/go-ethereum/params/config.go:884.2,897.3 1 1 +github.com/ethereum/go-ethereum/params/config.go:881.20,883.3 1 0 +github.com/ethereum/go-ethereum/params/dao.go:39.38,158.2 1 0 +github.com/ethereum/go-ethereum/params/version.go:31.29,33.2 1 1 +github.com/ethereum/go-ethereum/params/version.go:36.37,38.23 2 1 +github.com/ethereum/go-ethereum/params/version.go:41.2,41.10 1 1 +github.com/ethereum/go-ethereum/params/version.go:38.23,40.3 1 1 +github.com/ethereum/go-ethereum/params/version.go:47.46,49.29 2 0 +github.com/ethereum/go-ethereum/params/version.go:52.2,52.25 1 0 +github.com/ethereum/go-ethereum/params/version.go:55.2,55.12 1 0 +github.com/ethereum/go-ethereum/params/version.go:49.29,51.3 1 0 +github.com/ethereum/go-ethereum/params/version.go:52.25,54.3 1 0 +github.com/ethereum/go-ethereum/params/version.go:58.58,60.25 2 0 +github.com/ethereum/go-ethereum/params/version.go:63.2,63.50 1 0 +github.com/ethereum/go-ethereum/params/version.go:66.2,66.12 1 0 +github.com/ethereum/go-ethereum/params/version.go:60.25,62.3 1 0 +github.com/ethereum/go-ethereum/params/version.go:63.50,65.3 1 0 +github.com/ethereum/go-ethereum/params/bootnodes.go:123.67,125.17 2 0 +github.com/ethereum/go-ethereum/params/bootnodes.go:141.2,141.59 1 0 +github.com/ethereum/go-ethereum/params/bootnodes.go:126.26,127.18 1 0 +github.com/ethereum/go-ethereum/params/bootnodes.go:128.26,129.18 1 0 +github.com/ethereum/go-ethereum/params/bootnodes.go:130.26,131.18 1 0 +github.com/ethereum/go-ethereum/params/bootnodes.go:132.25,133.17 1 0 +github.com/ethereum/go-ethereum/params/bootnodes.go:134.25,135.17 1 0 +github.com/ethereum/go-ethereum/params/bootnodes.go:136.29,137.22 1 0 +github.com/ethereum/go-ethereum/params/bootnodes.go:138.10,139.12 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:50.64,56.2 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:59.36,61.2 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:64.64,70.30 4 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:75.2,75.38 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:80.2,80.33 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:83.2,83.44 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:89.2,90.16 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:94.2,105.16 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:109.2,117.21 3 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:70.30,72.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:75.38,77.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:80.33,82.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:83.44,84.50 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:84.50,86.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:90.16,92.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:105.16,107.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:122.93,124.9 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:127.2,128.16 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:132.2,133.16 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:139.2,140.19 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:124.9,126.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:128.16,130.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:133.16,135.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:145.64,147.9 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:150.2,150.27 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:147.9,149.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:154.60,159.2 4 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:177.34,179.2 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:182.34,184.2 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:187.39,189.2 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:193.50,196.22 3 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:199.2,199.23 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:196.22,198.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:204.57,206.16 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:209.2,211.12 3 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:206.16,208.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:216.59,219.40 3 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:222.2,223.24 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:226.2,227.38 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:238.2,238.23 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:219.40,221.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:223.24,225.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:227.38,230.10 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:230.10,232.18 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:235.4,235.26 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:232.18,234.5 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:242.61,246.28 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:268.2,268.19 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:272.2,272.40 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:277.2,278.16 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:281.2,285.12 4 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:246.28,247.45 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:247.45,252.24 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:255.4,257.18 3 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:262.4,262.37 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:265.4,265.30 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:252.24,254.5 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:257.18,259.10 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:262.37,263.13 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:268.19,270.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:272.40,274.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:278.16,280.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:289.33,291.22 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:295.2,296.24 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:291.22,294.3 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:300.56,304.2 3 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:307.48,311.37 4 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:314.2,314.17 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:311.37,313.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:318.59,322.40 4 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:325.2,325.17 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:322.40,324.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:329.41,331.2 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:335.79,337.16 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:340.2,340.32 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:337.16,338.28 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:344.45,346.19 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:352.2,352.26 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:346.19,351.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:152.52,163.25 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:166.2,166.31 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:163.25,165.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:171.55,173.56 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:177.2,177.23 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:183.2,183.31 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:195.2,203.12 8 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:173.56,175.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:177.23,178.65 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:178.65,180.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:183.31,185.17 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:188.3,189.17 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:192.3,192.25 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:185.17,187.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:189.17,191.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:207.41,209.2 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:213.37,215.16 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:219.2,220.16 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:224.2,232.3 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:215.16,216.34 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:220.16,221.37 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:235.38,237.16 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:240.2,242.16 3 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:245.2,246.16 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:249.2,249.23 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:237.16,239.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:242.16,244.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:246.16,248.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:285.59,286.34 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:296.2,296.19 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:286.34,287.59 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:290.3,290.38 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:287.59,288.63 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:296.19,298.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:303.75,312.16 8 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:315.2,316.16 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:319.2,321.12 3 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:312.16,314.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:316.16,318.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:324.45,326.2 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:46.13,50.2 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:64.50,69.2 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:72.37,74.2 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:77.65,78.33 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:81.2,81.44 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:89.2,90.44 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:94.2,95.16 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:100.2,104.26 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:111.2,131.18 12 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:78.33,80.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:81.44,82.63 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:82.63,84.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:90.44,92.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:95.16,97.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:104.26,106.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:106.8,108.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:150.34,151.19 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:154.2,154.29 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:151.19,153.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:159.50,161.2 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:165.67,166.18 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:169.2,169.15 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:176.2,179.40 4 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:182.2,183.16 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:187.2,188.14 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:196.2,196.14 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:200.2,212.36 8 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:215.2,219.22 3 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:222.2,223.16 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:228.2,231.12 4 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:166.18,168.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:169.15,170.17 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:170.17,172.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:179.40,181.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:183.16,185.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:188.14,189.48 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:189.48,190.22 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:190.22,192.10 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:196.14,198.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:212.36,214.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:219.22,221.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:223.16,225.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:235.91,242.16 3 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:246.2,246.39 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:252.2,252.78 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:261.2,262.12 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:267.2,268.16 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:242.16,245.3 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:246.39,247.22 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:247.22,250.4 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:252.78,254.65 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:257.3,257.15 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:254.65,256.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:262.12,265.3 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:274.44,279.2 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:283.33,284.18 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:287.2,287.15 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:291.2,291.21 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:298.2,298.62 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:301.2,302.12 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:305.2,305.9 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:284.18,286.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:287.15,289.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:291.21,296.3 4 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:298.62,300.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:302.12,304.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:306.24,307.13 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:308.37,309.30 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:314.45,318.21 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:321.2,321.13 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:318.21,320.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:326.63,328.16 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:331.2,337.12 7 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:328.16,330.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:340.59,342.6 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:342.6,344.17 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:347.3,348.17 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:351.3,351.41 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:344.17,346.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:348.17,350.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:351.41,353.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:359.59,360.21 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:363.2,364.68 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:360.21,362.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:376.20,383.19 5 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:386.2,387.63 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:390.2,391.29 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:398.2,399.85 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:403.2,405.32 3 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:383.19,385.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:387.63,389.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:391.29,393.17 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:396.3,396.21 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:393.17,395.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:399.85,401.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:411.20,415.21 3 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:420.2,422.21 3 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:430.2,431.97 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:434.2,434.21 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:439.2,439.12 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:447.2,447.14 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:415.21,417.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:422.21,424.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:424.8,427.3 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:431.97,433.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:434.21,436.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:439.12,446.3 6 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:450.47,456.19 3 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:459.2,460.63 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:465.2,466.27 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:469.2,475.16 5 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:481.2,482.36 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:502.2,508.37 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:511.2,511.19 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:456.19,458.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:460.63,462.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:466.27,468.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:475.16,477.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:482.36,484.14 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:487.3,491.28 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:494.3,495.17 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:498.3,498.27 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:484.14,486.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:491.28,493.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:495.17,497.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:508.37,510.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:531.62,533.42 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:544.2,544.23 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:533.42,536.10 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:536.10,538.18 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:541.4,541.26 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:538.18,540.5 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:553.65,555.9 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:558.2,558.74 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:555.9,557.3 1 0 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:19.26,19.51 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:22.32,26.2 3 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:28.31,32.2 3 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:35.34,37.2 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:40.40,44.2 3 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:46.40,49.32 3 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:59.2,59.33 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:49.32,57.3 5 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:63.56,65.34 2 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:80.2,80.27 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:84.2,84.12 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:65.34,67.29 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:75.3,76.40 2 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:67.29,70.18 3 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:70.18,72.5 1 0 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:76.40,78.4 1 0 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:80.27,83.3 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:88.52,91.2 2 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:94.41,95.7 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:95.7,97.3 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:97.8,99.3 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:102.45,103.12 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:103.12,105.3 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:105.8,105.20 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:105.20,108.3 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:108.8,112.3 3 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:115.44,116.33 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:116.33,119.3 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:119.8,122.3 2 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:125.45,127.2 1 0 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:133.45,135.18 2 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:142.2,147.29 6 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:135.18,138.3 2 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:147.29,148.47 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:148.47,152.4 3 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:158.34,161.2 2 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:163.42,166.18 3 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:166.18,168.3 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:168.8,170.3 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:173.53,176.16 3 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:179.2,179.26 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:176.16,178.3 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:182.52,183.15 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:183.15,185.3 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:185.8,189.3 3 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:201.55,202.6 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:202.6,203.41 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:213.3,215.24 3 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:220.3,220.16 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:203.41,207.20 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:211.4,211.20 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:207.20,210.5 2 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:215.24,219.4 2 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:226.35,227.9 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:228.20,229.13 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:231.22,233.17 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:235.35,239.21 3 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:245.3,246.39 2 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:248.33,252.11 3 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:254.10,255.13 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:239.21,244.4 3 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:259.50,260.23 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:261.21,262.15 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:263.22,264.15 1 0 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:265.18,266.11 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:267.10,268.13 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:284.52,288.2 3 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:291.46,292.34 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:298.2,298.16 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:306.2,306.18 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:310.2,311.13 2 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:292.34,293.45 1 0 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:298.16,299.54 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:299.54,302.4 2 0 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:306.18,309.3 2 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:316.39,318.18 2 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:322.2,322.17 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:325.2,326.12 2 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:318.18,320.3 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:322.17,324.3 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:330.42,332.2 1 0 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:335.58,340.2 4 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:343.53,345.2 1 0 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:348.42,350.2 1 0 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:353.46,355.2 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:359.48,361.2 1 0 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:364.45,366.2 1 0 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:369.46,371.2 1 0 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:375.35,377.2 1 1 +github.com/ethereum/go-ethereum/rlp/encbuffer.go:380.43,382.2 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:57.49,59.47 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:63.2,65.40 3 1 +github.com/ethereum/go-ethereum/rlp/encode.go:68.2,68.23 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:59.47,61.3 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:65.40,67.3 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:73.53,77.40 3 1 +github.com/ethereum/go-ethereum/rlp/encode.go:80.2,80.29 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:77.40,79.3 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:88.73,90.40 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:97.2,97.46 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:90.40,93.3 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:107.49,109.2 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:113.32,114.15 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:117.2,117.26 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:114.15,116.3 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:122.68,123.15 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:127.2,129.21 3 1 +github.com/ethereum/go-ethereum/rlp/encode.go:123.15,126.3 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:135.70,137.9 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:138.27,139.28 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:140.47,141.29 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:142.32,143.31 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:144.27,145.32 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:146.55,147.37 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:148.20,149.24 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:150.28,151.24 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:152.30,153.26 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:154.51,155.25 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:156.51,157.39 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:158.54,159.34 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:160.30,161.31 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:162.33,163.29 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:164.10,165.70 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:169.59,172.2 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:174.55,177.2 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:179.55,182.2 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:184.60,186.16 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:190.2,190.22 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:193.2,194.12 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:186.16,189.3 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:190.22,192.3 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:197.62,199.20 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:202.2,203.12 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:199.20,201.3 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:206.56,209.2 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:211.51,212.19 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:213.9,214.34 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:215.9,216.33 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:217.10,219.54 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:219.54,220.22 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:227.4,230.14 4 1 +github.com/ethereum/go-ethereum/rlp/encode.go:220.22,226.5 3 1 +github.com/ethereum/go-ethereum/rlp/encode.go:235.70,238.2 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:240.69,242.15 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:247.2,247.12 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:242.15,244.3 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:244.8,246.3 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:250.57,252.33 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:259.2,259.12 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:252.33,255.3 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:255.8,258.3 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:262.60,263.17 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:270.2,272.16 3 1 +github.com/ethereum/go-ethereum/rlp/encode.go:275.2,275.24 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:263.17,269.3 2 0 +github.com/ethereum/go-ethereum/rlp/encode.go:272.16,274.3 1 0 +github.com/ethereum/go-ethereum/rlp/encode.go:278.75,280.32 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:284.2,285.13 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:315.2,315.17 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:280.32,282.3 1 0 +github.com/ethereum/go-ethereum/rlp/encode.go:285.13,288.53 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:288.53,290.30 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:295.4,295.14 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:290.30,291.61 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:291.61,293.6 1 0 +github.com/ethereum/go-ethereum/rlp/encode.go:297.8,299.53 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:299.53,301.17 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:305.4,306.30 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:311.4,312.14 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:301.17,304.5 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:306.30,307.61 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:307.61,309.6 1 0 +github.com/ethereum/go-ethereum/rlp/encode.go:318.57,320.16 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:323.2,323.27 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:329.2,331.39 3 1 +github.com/ethereum/go-ethereum/rlp/encode.go:363.2,363.20 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:320.16,322.3 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:323.27,324.30 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:324.30,326.4 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:331.39,333.56 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:333.56,335.29 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:340.4,341.14 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:335.29,336.64 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:336.64,338.6 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:343.8,346.56 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:346.56,348.55 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:353.4,354.36 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:359.4,360.14 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:348.55,349.53 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:349.53,350.11 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:354.36,355.80 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:355.80,357.6 1 0 +github.com/ethereum/go-ethereum/rlp/encode.go:366.73,368.43 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:372.2,373.32 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:377.2,377.56 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:384.2,384.20 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:368.43,370.3 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:373.32,375.3 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:377.56,378.37 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:381.3,382.13 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:378.37,380.4 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:387.49,388.38 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:393.2,393.51 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:402.2,402.10 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:388.38,389.54 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:389.54,391.4 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:393.51,394.21 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:400.3,400.55 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:394.21,399.4 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:407.44,408.9 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:409.20,411.11 2 1 +github.com/ethereum/go-ethereum/rlp/encode.go:412.21,415.11 3 1 +github.com/ethereum/go-ethereum/rlp/encode.go:416.21,420.11 4 1 +github.com/ethereum/go-ethereum/rlp/encode.go:421.21,426.11 5 1 +github.com/ethereum/go-ethereum/rlp/encode.go:427.21,433.11 6 1 +github.com/ethereum/go-ethereum/rlp/encode.go:434.21,441.11 7 1 +github.com/ethereum/go-ethereum/rlp/encode.go:442.21,450.11 8 1 +github.com/ethereum/go-ethereum/rlp/encode.go:451.10,460.11 9 1 +github.com/ethereum/go-ethereum/rlp/encode.go:465.35,466.25 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:466.25,467.22 1 1 +github.com/ethereum/go-ethereum/rlp/encode.go:467.22,469.4 1 1 +github.com/ethereum/go-ethereum/rlp/iterator.go:27.60,29.16 2 1 +github.com/ethereum/go-ethereum/rlp/iterator.go:32.2,32.15 1 1 +github.com/ethereum/go-ethereum/rlp/iterator.go:35.2,38.16 2 1 +github.com/ethereum/go-ethereum/rlp/iterator.go:29.16,31.3 1 0 +github.com/ethereum/go-ethereum/rlp/iterator.go:32.15,34.3 1 0 +github.com/ethereum/go-ethereum/rlp/iterator.go:43.37,44.23 1 1 +github.com/ethereum/go-ethereum/rlp/iterator.go:47.2,51.13 5 1 +github.com/ethereum/go-ethereum/rlp/iterator.go:44.23,46.3 1 1 +github.com/ethereum/go-ethereum/rlp/iterator.go:55.40,57.2 1 1 +github.com/ethereum/go-ethereum/rlp/iterator.go:59.37,61.2 1 0 +github.com/ethereum/go-ethereum/rlp/raw.go:33.42,35.2 1 0 +github.com/ethereum/go-ethereum/rlp/raw.go:38.28,39.14 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:42.2,42.23 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:39.14,41.3 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:47.64,49.16 2 1 +github.com/ethereum/go-ethereum/rlp/raw.go:52.2,52.41 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:49.16,51.3 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:57.62,59.16 2 1 +github.com/ethereum/go-ethereum/rlp/raw.go:62.2,62.15 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:65.2,65.27 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:59.16,61.3 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:62.15,64.3 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:70.63,72.16 2 1 +github.com/ethereum/go-ethereum/rlp/raw.go:75.2,75.9 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:72.16,74.3 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:76.25,77.22 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:78.25,79.22 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:82.3,82.39 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:83.24,84.31 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:85.10,87.17 2 1 +github.com/ethereum/go-ethereum/rlp/raw.go:90.3,90.22 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:79.22,81.4 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:87.17,89.4 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:96.60,98.16 2 1 +github.com/ethereum/go-ethereum/rlp/raw.go:101.2,101.15 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:104.2,104.27 1 0 +github.com/ethereum/go-ethereum/rlp/raw.go:98.16,100.3 1 0 +github.com/ethereum/go-ethereum/rlp/raw.go:101.15,103.3 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:108.41,110.24 2 1 +github.com/ethereum/go-ethereum/rlp/raw.go:117.2,117.15 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:110.24,112.17 2 1 +github.com/ethereum/go-ethereum/rlp/raw.go:115.3,115.23 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:112.17,114.4 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:120.76,121.19 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:124.2,125.9 2 1 +github.com/ethereum/go-ethereum/rlp/raw.go:151.2,151.16 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:155.2,155.44 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:158.2,158.37 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:121.19,123.3 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:126.16,129.18 3 1 +github.com/ethereum/go-ethereum/rlp/raw.go:130.16,135.55 4 1 +github.com/ethereum/go-ethereum/rlp/raw.go:138.16,141.47 3 1 +github.com/ethereum/go-ethereum/rlp/raw.go:142.16,145.33 3 1 +github.com/ethereum/go-ethereum/rlp/raw.go:146.10,149.47 3 1 +github.com/ethereum/go-ethereum/rlp/raw.go:135.55,137.4 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:151.16,153.3 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:155.44,157.3 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:161.52,162.24 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:165.2,166.14 2 1 +github.com/ethereum/go-ethereum/rlp/raw.go:186.2,186.25 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:189.2,189.15 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:162.24,164.3 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:167.9,168.19 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:169.9,170.37 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:171.9,172.56 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:173.9,174.75 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:175.9,176.94 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:177.9,178.113 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:179.9,180.132 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:181.9,182.151 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:186.25,188.3 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:193.46,194.12 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:199.2,199.9 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:194.12,196.3 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:196.8,196.20 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:196.20,198.3 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:200.20,201.34 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:202.21,206.4 1 0 +github.com/ethereum/go-ethereum/rlp/raw.go:207.21,212.4 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:213.21,219.4 1 0 +github.com/ethereum/go-ethereum/rlp/raw.go:220.21,227.4 1 0 +github.com/ethereum/go-ethereum/rlp/raw.go:229.21,237.4 1 0 +github.com/ethereum/go-ethereum/rlp/raw.go:238.21,247.4 1 1 +github.com/ethereum/go-ethereum/rlp/raw.go:249.10,259.4 1 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:57.32,61.2 3 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:63.55,66.2 2 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:68.53,71.2 2 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:73.54,75.68 2 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:80.2,80.42 1 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:75.68,77.3 1 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:83.79,88.50 4 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:93.2,94.24 2 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:99.2,104.13 4 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:88.50,90.3 1 0 +github.com/ethereum/go-ethereum/rlp/typecache.go:94.24,96.3 1 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:107.90,109.38 2 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:115.2,118.13 4 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:109.38,111.3 1 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:128.65,131.38 2 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:143.2,144.16 2 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:153.2,153.34 1 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:159.2,159.20 1 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:131.38,140.3 2 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:144.16,145.49 1 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:149.3,149.18 1 0 +github.com/ethereum/go-ethereum/rlp/typecache.go:145.49,148.4 2 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:153.34,158.3 4 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:163.45,164.27 1 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:169.2,169.20 1 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:164.27,165.17 1 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:165.17,167.4 1 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:178.42,180.2 1 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:182.68,185.2 2 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:188.96,190.26 2 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:194.2,194.35 1 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:197.2,197.16 1 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:201.2,208.66 3 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:211.2,211.10 1 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:190.26,191.24 1 0 +github.com/ethereum/go-ethereum/rlp/typecache.go:194.35,196.3 1 0 +github.com/ethereum/go-ethereum/rlp/typecache.go:197.16,199.3 1 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:208.66,210.3 1 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:215.62,219.16 3 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:224.2,224.12 1 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:219.16,221.3 1 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:221.8,223.3 1 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:225.31,226.16 1 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:227.29,228.14 1 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:229.10,230.34 1 0 +github.com/ethereum/go-ethereum/rlp/typecache.go:234.34,236.2 1 1 +github.com/ethereum/go-ethereum/rlp/typecache.go:238.36,240.2 1 1 +github.com/ethereum/go-ethereum/rlp/unsafe.go:28.57,35.2 6 1 +github.com/ethereum/go-ethereum/rlp/decode.go:57.27,57.49 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:80.49,86.2 4 1 +github.com/ethereum/go-ethereum/rlp/decode.go:90.51,97.43 5 1 +github.com/ethereum/go-ethereum/rlp/decode.go:100.2,100.17 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:103.2,103.12 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:97.43,99.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:100.17,102.3 1 0 +github.com/ethereum/go-ethereum/rlp/decode.go:112.40,114.22 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:120.2,120.63 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:114.22,116.42 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:116.42,118.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:123.57,124.13 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:138.2,138.12 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:125.19,126.83 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:127.20,128.71 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:129.23,130.60 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:131.25,132.70 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:133.23,134.62 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:135.19,136.73 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:141.51,142.42 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:145.2,145.12 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:142.42,144.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:153.82,155.9 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:156.27,157.29 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:158.47,159.27 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:160.32,161.32 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:162.27,163.35 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:164.55,165.28 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:166.20,167.25 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:168.28,169.25 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:170.30,171.27 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:172.54,173.36 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:174.30,175.32 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:176.33,177.30 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:178.10,179.70 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:183.57,185.16 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:188.2,189.12 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:185.16,187.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:192.53,195.16 3 1 +github.com/ethereum/go-ethereum/rlp/decode.go:198.2,199.12 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:195.16,197.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:202.53,204.16 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:207.2,208.12 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:204.16,206.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:211.55,213.16 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:216.2,217.12 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:213.16,215.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:220.60,222.2 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:224.55,226.14 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:231.2,232.16 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:235.2,235.12 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:226.14,229.3 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:232.16,234.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:238.77,240.89 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:246.2,247.33 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:250.2,251.9 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:269.2,269.17 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:240.89,241.34 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:244.3,244.30 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:241.34,243.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:247.33,249.3 1 0 +github.com/ethereum/go-ethereum/rlp/decode.go:252.35,253.50 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:256.16,261.50 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:264.10,265.50 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:253.50,255.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:261.50,263.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:265.50,267.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:272.75,274.16 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:277.2,277.15 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:281.2,281.58 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:284.2,284.20 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:274.16,276.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:277.15,280.3 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:281.58,283.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:287.76,289.14 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:310.2,310.19 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:313.2,313.12 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:289.14,291.21 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:300.3,300.21 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:304.3,304.50 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:291.21,293.18 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:296.4,298.17 3 1 +github.com/ethereum/go-ethereum/rlp/decode.go:293.18,295.5 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:300.21,302.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:304.50,305.9 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:306.9,306.24 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:306.24,308.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:310.19,312.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:316.75,317.36 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:320.2,322.22 3 1 +github.com/ethereum/go-ethereum/rlp/decode.go:329.2,329.14 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:332.2,332.49 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:317.36,319.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:322.22,323.50 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:323.50,324.9 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:325.9,325.24 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:325.24,327.4 1 0 +github.com/ethereum/go-ethereum/rlp/decode.go:329.14,331.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:335.58,337.16 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:340.2,341.12 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:337.16,339.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:344.58,346.16 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:349.2,350.14 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:376.2,376.12 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:346.16,348.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:351.12,352.22 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:357.3,358.14 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:359.14,360.32 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:363.3,363.32 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:366.3,366.43 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:370.3,370.34 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:373.12,374.56 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:352.22,354.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:354.9,354.28 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:354.28,356.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:360.32,362.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:363.32,365.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:366.43,368.4 1 0 +github.com/ethereum/go-ethereum/rlp/decode.go:370.34,372.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:379.59,381.16 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:384.2,384.27 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:389.2,389.56 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:410.2,410.17 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:381.16,383.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:384.27,385.31 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:385.31,387.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:389.56,390.37 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:393.3,393.28 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:408.3,408.43 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:390.37,392.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:393.28,395.18 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:395.18,396.19 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:403.5,403.59 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:396.19,401.11 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:404.10,404.25 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:404.25,406.5 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:413.58,414.27 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:414.27,417.3 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:421.76,424.9 3 1 +github.com/ethereum/go-ethereum/rlp/decode.go:425.35,426.35 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:427.18,428.53 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:429.10,430.55 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:434.76,435.56 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:435.56,437.18 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:440.3,440.60 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:443.3,443.13 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:437.18,439.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:440.60,442.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:451.92,458.56 4 1 +github.com/ethereum/go-ethereum/rlp/decode.go:458.56,460.17 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:465.3,465.32 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:479.3,480.18 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:483.3,483.60 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:486.3,486.13 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:460.17,463.4 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:465.32,466.23 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:475.4,477.14 3 1 +github.com/ethereum/go-ethereum/rlp/decode.go:466.23,471.5 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:480.18,482.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:483.60,485.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:492.58,493.33 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:496.2,497.16 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:500.2,500.18 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:513.2,513.12 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:493.33,495.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:497.16,499.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:500.18,502.68 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:505.3,505.17 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:502.68,504.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:506.8,508.17 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:511.3,511.30 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:508.17,510.4 1 0 +github.com/ethereum/go-ethereum/rlp/decode.go:516.56,518.2 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:529.31,530.11 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:531.12,532.16 1 0 +github.com/ethereum/go-ethereum/rlp/decode.go:533.14,534.18 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:535.12,536.16 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:537.10,538.39 1 0 +github.com/ethereum/go-ethereum/rlp/decode.go:591.56,595.2 3 1 +github.com/ethereum/go-ethereum/rlp/decode.go:599.53,605.2 5 1 +github.com/ethereum/go-ethereum/rlp/decode.go:610.42,612.16 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:615.2,615.14 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:612.16,614.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:616.12,618.32 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:619.14,621.38 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:624.3,624.30 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:627.3,627.16 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:628.10,629.32 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:621.38,623.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:624.30,626.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:635.44,637.16 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:640.2,640.14 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:637.16,639.3 1 0 +github.com/ethereum/go-ethereum/rlp/decode.go:641.12,642.18 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:645.3,647.13 3 1 +github.com/ethereum/go-ethereum/rlp/decode.go:648.14,649.29 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:652.3,652.38 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:655.3,655.30 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:658.3,658.13 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:659.10,660.27 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:642.18,644.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:649.29,651.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:652.38,654.4 1 0 +github.com/ethereum/go-ethereum/rlp/decode.go:655.30,657.4 1 0 +github.com/ethereum/go-ethereum/rlp/decode.go:665.40,667.16 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:670.2,670.18 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:676.2,678.48 3 1 +github.com/ethereum/go-ethereum/rlp/decode.go:681.2,681.20 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:686.2,686.17 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:667.16,669.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:670.18,673.3 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:678.48,680.3 1 0 +github.com/ethereum/go-ethereum/rlp/decode.go:681.20,683.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:683.8,685.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:694.41,696.2 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:698.43,700.2 1 0 +github.com/ethereum/go-ethereum/rlp/decode.go:702.43,705.2 2 0 +github.com/ethereum/go-ethereum/rlp/decode.go:707.43,710.2 2 0 +github.com/ethereum/go-ethereum/rlp/decode.go:712.41,715.2 2 0 +github.com/ethereum/go-ethereum/rlp/decode.go:717.52,719.16 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:722.2,722.14 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:719.16,721.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:723.12,724.21 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:727.3,728.32 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:729.14,730.31 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:733.3,734.10 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:745.10,746.30 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:724.21,726.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:730.31,732.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:735.28,737.25 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:738.19,739.17 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:740.28,741.26 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:742.11,743.17 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:753.39,755.16 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:758.2,758.13 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:755.16,757.3 1 0 +github.com/ethereum/go-ethereum/rlp/decode.go:759.9,760.20 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:761.9,762.19 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:763.10,764.66 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:771.50,773.16 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:776.2,776.18 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:783.2,783.44 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:786.2,789.18 4 1 +github.com/ethereum/go-ethereum/rlp/decode.go:773.16,775.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:776.18,778.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:783.44,785.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:794.34,796.49 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:801.2,804.12 4 1 +github.com/ethereum/go-ethereum/rlp/decode.go:796.49,798.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:798.8,798.26 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:798.26,800.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:809.40,812.2 2 0 +github.com/ethereum/go-ethereum/rlp/decode.go:815.45,817.42 2 0 +github.com/ethereum/go-ethereum/rlp/decode.go:820.2,820.15 1 0 +github.com/ethereum/go-ethereum/rlp/decode.go:817.42,819.3 1 0 +github.com/ethereum/go-ethereum/rlp/decode.go:823.51,826.9 3 1 +github.com/ethereum/go-ethereum/rlp/decode.go:858.2,858.39 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:862.2,863.12 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:827.18,828.13 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:829.20,830.27 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:831.20,834.14 3 1 +github.com/ethereum/go-ethereum/rlp/decode.go:835.17,837.14 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:838.38,842.44 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:846.3,846.35 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:849.10,852.44 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:842.44,844.4 1 0 +github.com/ethereum/go-ethereum/rlp/decode.go:846.35,848.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:852.44,854.4 1 0 +github.com/ethereum/go-ethereum/rlp/decode.go:858.39,860.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:869.48,870.16 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:873.2,875.32 3 1 +github.com/ethereum/go-ethereum/rlp/decode.go:878.2,878.18 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:881.2,882.16 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:886.2,887.65 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:891.2,891.12 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:870.16,872.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:875.32,877.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:878.18,880.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:882.16,884.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:887.65,890.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:900.56,901.20 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:922.2,923.9 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:926.2,933.24 7 1 +github.com/ethereum/go-ethereum/rlp/decode.go:901.20,904.3 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:904.8,907.25 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:908.22,910.20 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:911.22,913.20 2 0 +github.com/ethereum/go-ethereum/rlp/decode.go:914.24,916.20 2 0 +github.com/ethereum/go-ethereum/rlp/decode.go:917.11,918.21 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:923.9,925.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:947.61,948.17 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:954.2,955.30 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:959.2,960.22 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:971.2,971.34 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:948.17,950.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:955.30,957.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:960.22,965.35 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:965.35,967.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:967.9,967.47 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:967.47,969.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:974.65,976.16 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:989.2,990.9 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:976.16,977.24 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:987.3,987.19 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:977.24,980.15 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:981.29,982.17 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:983.26,984.17 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:991.16,995.22 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:996.16,1000.39 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1001.16,1009.30 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1012.3,1012.27 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1013.16,1019.37 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1020.10,1027.30 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1030.3,1030.25 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1009.30,1011.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1027.30,1029.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1034.54,1035.14 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1036.9,1038.16 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1039.9,1041.24 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1042.10,1044.25 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1047.3,1048.52 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1051.3,1051.25 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1056.3,1056.49 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1044.25,1046.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1048.52,1050.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1051.25,1055.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1061.51,1062.53 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1065.2,1066.33 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1070.2,1070.19 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1079.2,1079.12 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1062.53,1064.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1066.33,1069.3 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1070.19,1071.19 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1071.19,1073.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1073.9,1077.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1083.43,1084.38 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1087.2,1088.19 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1091.2,1091.15 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1084.38,1086.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1088.19,1090.3 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1096.43,1099.44 2 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1105.2,1105.15 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1111.2,1111.12 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1099.44,1100.16 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1103.3,1103.38 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1100.16,1102.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1105.15,1106.22 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1109.3,1109.19 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1106.22,1108.4 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1115.58,1116.23 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1119.2,1119.38 1 1 +github.com/ethereum/go-ethereum/rlp/decode.go:1116.23,1118.3 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:10.51,11.27 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:12.20,14.47 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:18.3,18.24 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:21.3,21.31 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:24.3,24.49 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:25.20,26.23 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:27.19,28.22 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:29.24,30.27 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:31.18,32.21 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:33.22,34.21 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:35.24,36.22 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:37.20,38.23 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:39.21,40.24 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:41.10,42.46 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:14.47,17.4 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:18.24,20.4 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:21.31,23.4 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:47.78,50.27 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:51.20,53.10 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:63.35,64.73 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:65.58,66.37 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:67.32,68.39 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:69.10,70.46 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:54.24,55.12 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:56.49,57.36 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:58.26,59.37 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:60.11,61.50 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:75.36,77.9 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:80.2,81.64 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:77.9,79.3 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:85.34,88.2 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:90.51,91.6 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:91.6,93.15 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:96.3,96.10 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:93.15,95.4 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:24.63,34.2 4 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:36.58,38.2 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:40.58,42.2 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:45.76,46.54 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:51.2,52.6 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:61.2,70.20 3 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:75.2,75.10 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:46.54,48.3 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:52.6,54.19 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:57.3,57.14 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:54.19,55.9 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:71.50,73.40 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:87.58,92.2 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:94.38,98.2 3 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:100.36,102.2 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:104.47,105.34 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:109.2,109.32 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:105.34,107.3 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:113.47,115.29 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:118.2,119.12 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:115.29,117.3 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:123.59,124.40 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:127.2,129.19 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:124.40,126.3 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:152.64,155.9 3 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:175.2,175.16 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:156.26,160.43 4 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:161.51,166.26 5 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:167.28,171.45 4 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:172.10,173.58 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:178.59,179.25 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:182.2,189.3 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:179.25,180.50 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:192.47,201.2 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:203.47,205.2 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:207.48,209.2 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:211.62,212.31 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:215.2,215.53 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:212.31,214.3 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:218.63,224.22 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:232.2,235.32 4 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:240.2,240.27 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:224.22,229.3 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:235.32,239.3 3 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:249.92,251.17 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:254.2,254.29 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:251.17,253.3 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:257.66,259.2 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:261.67,268.2 5 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:277.63,284.17 6 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:287.2,290.16 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:300.2,300.19 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:284.17,286.3 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:290.16,298.3 7 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:303.64,311.17 6 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:314.2,314.27 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:311.17,313.3 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:325.71,327.2 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:329.72,338.2 6 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:348.90,350.16 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:353.2,356.16 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:363.2,363.16 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:350.16,352.3 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:356.16,359.3 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:359.8,362.3 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:366.60,376.29 4 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:382.2,388.19 7 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:376.29,378.3 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:378.8,380.3 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:391.61,393.15 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:401.2,407.42 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:412.2,420.28 9 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:393.15,396.3 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:407.42,409.3 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:409.8,411.3 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:437.91,440.39 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:452.2,453.16 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:458.2,459.31 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:477.2,477.16 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:440.39,449.3 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:453.16,455.3 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:459.31,462.63 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:465.3,467.17 3 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:470.3,471.19 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:462.63,464.4 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:467.17,469.4 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:471.19,473.4 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:473.9,475.4 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:480.67,481.14 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:484.2,484.12 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:481.14,483.3 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:487.63,491.34 4 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:495.2,497.19 3 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:491.34,494.3 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:500.84,501.33 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:505.2,506.42 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:512.2,512.42 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:501.33,503.3 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:506.42,510.3 3 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:512.42,515.47 3 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:521.3,523.24 3 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:515.47,516.13 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:519.4,519.20 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:516.13,518.5 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:527.64,532.21 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:539.2,546.34 6 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:552.2,555.28 4 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:532.21,534.3 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:534.8,536.3 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:546.34,551.3 4 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:558.91,560.42 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:568.2,568.19 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:560.42,567.3 6 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:577.69,579.16 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:582.2,582.47 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:579.16,581.3 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:585.62,599.2 8 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:601.63,614.2 11 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:616.102,617.27 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:618.20,619.20 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:622.3,622.31 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:625.3,625.26 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:629.3,629.50 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:630.22,631.27 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:635.3,635.26 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:641.3,641.26 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:645.3,645.42 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:646.20,647.31 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:648.21,649.38 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:650.20,652.44 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:655.3,655.31 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:656.20,658.44 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:661.3,661.58 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:662.10,663.52 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:619.20,621.4 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:622.31,624.4 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:625.26,627.4 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:631.27,633.4 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:635.26,636.27 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:639.4,639.85 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:636.27,638.5 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:641.26,643.4 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:652.44,654.4 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:658.44,660.4 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:668.65,680.2 10 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:683.65,695.2 10 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:697.93,702.16 4 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:706.2,711.13 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:714.2,714.13 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:718.2,720.40 3 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:723.2,723.13 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:727.2,727.13 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:732.2,734.30 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:702.16,704.3 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:711.13,713.3 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:714.13,716.3 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:720.40,722.3 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:723.13,726.3 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:727.13,730.3 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:33.13,50.16 5 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:53.2,53.20 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:50.16,52.3 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:53.20,55.3 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:55.8,55.69 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:55.69,57.3 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:60.33,63.2 2 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:74.55,82.16 3 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:85.2,85.18 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:88.2,95.23 3 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:105.2,109.16 3 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:112.2,113.16 2 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:119.2,123.45 5 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:82.16,84.3 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:85.18,87.3 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:95.23,96.24 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:99.3,99.36 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:96.24,98.4 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:99.36,101.4 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:101.9,103.4 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:109.16,111.3 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:113.16,115.3 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:126.78,128.16 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:131.2,132.9 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:135.2,135.17 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:128.16,130.3 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:132.9,134.3 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:138.72,140.16 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:143.2,144.9 2 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:147.2,147.39 1 1 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:140.16,142.3 1 0 +github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:144.9,146.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:57.48,59.2 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:60.48,62.2 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:63.48,65.2 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:68.50,70.33 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:75.2,75.23 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:78.2,78.12 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:70.33,71.41 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:71.41,73.4 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:75.23,77.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:105.40,107.16 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:110.2,110.20 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:107.16,109.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:114.60,117.20 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:122.2,123.23 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:129.2,130.9 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:168.2,168.26 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:117.20,120.3 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:123.23,125.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:125.8,125.29 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:125.29,127.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:131.32,133.29 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:136.3,146.4 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:147.30,157.4 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:158.10,166.4 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:133.29,135.4 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:214.31,216.2 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:220.34,221.37 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:224.2,224.15 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:221.37,223.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:227.39,228.22 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:232.2,233.27 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:228.22,230.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:255.106,257.16 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:260.2,260.43 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:257.16,259.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:264.87,266.50 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:275.2,275.34 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:278.2,278.41 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:281.2,282.53 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:289.2,289.14 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:266.50,267.27 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:272.3,272.15 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:267.27,268.18 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:268.18,270.5 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:275.34,277.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:278.41,280.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:282.53,283.65 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:283.65,284.29 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:284.29,286.5 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:296.74,299.19 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:306.2,307.27 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:319.2,319.23 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:299.19,303.3 3 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:307.27,310.44 3 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:316.3,317.26 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:310.44,315.4 4 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:323.72,325.2 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:331.123,332.45 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:336.2,339.73 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:344.2,347.53 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:397.2,397.28 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:332.45,334.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:339.73,341.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:347.53,350.38 3 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:350.38,352.11 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:356.4,358.36 3 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:378.4,378.55 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:352.11,354.5 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:358.36,359.43 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:359.43,361.13 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:364.6,365.20 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:368.6,368.54 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:361.13,363.7 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:365.20,367.7 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:369.11,371.20 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:374.6,374.35 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:371.20,373.7 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:379.9,379.48 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:379.48,381.11 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:384.4,385.18 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:388.4,388.47 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:381.11,383.5 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:385.18,387.5 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:389.9,391.18 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:394.4,394.27 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:391.18,393.5 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:401.53,402.29 1 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:403.14,404.17 1 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:405.21,406.17 1 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:407.14,409.17 2 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:412.3,412.21 1 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:413.10,414.20 1 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:409.17,411.4 1 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:418.75,424.43 2 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:439.2,439.30 1 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:457.2,457.14 1 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:460.2,460.25 1 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:463.2,463.31 1 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:466.2,466.15 1 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:424.43,426.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:426.8,428.41 2 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:433.3,434.17 2 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:437.3,437.20 1 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:428.41,430.4 1 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:430.9,432.4 1 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:434.17,436.4 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:440.29,441.20 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:442.14,444.62 2 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:447.3,447.31 1 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:448.15,451.29 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:444.62,446.4 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:451.29,453.4 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:453.9,455.4 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:457.14,459.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:460.25,462.3 1 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:463.31,465.3 1 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:471.115,472.17 1 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:503.2,503.41 1 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:521.2,521.77 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:528.2,528.59 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:473.17,475.47 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:478.3,480.21 3 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:481.14,483.10 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:486.3,486.16 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:489.3,489.51 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:490.16,492.10 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:495.3,495.47 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:496.15,498.10 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:501.3,501.43 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:475.47,477.4 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:483.10,485.4 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:486.16,488.4 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:492.10,494.4 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:498.10,500.4 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:503.41,506.17 3 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:509.3,509.32 1 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:512.3,512.77 1 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:506.17,508.4 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:509.32,511.4 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:512.77,514.4 1 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:514.9,519.4 3 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:521.77,523.17 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:526.3,526.32 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:523.17,525.4 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:534.68,536.2 1 1 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:539.46,540.51 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:543.2,543.52 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:546.2,546.12 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:540.51,542.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:543.52,545.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:550.58,558.2 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:562.64,564.16 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:567.2,568.16 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:571.2,582.18 4 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:564.16,566.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:568.16,570.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:585.115,589.53 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:634.2,634.20 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:589.53,596.22 4 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:632.3,632.32 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:596.22,599.33 3 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:599.33,600.43 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:600.43,603.20 3 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:606.6,606.28 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:603.20,605.7 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:607.11,609.20 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:612.6,612.34 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:609.20,611.7 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:615.9,615.48 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:615.48,616.61 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:616.61,618.19 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:621.5,621.27 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:618.19,620.6 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:622.10,624.5 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:625.9,627.18 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:630.4,630.32 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:627.18,629.5 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:637.81,638.17 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:654.2,654.41 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:658.2,658.77 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:665.2,665.53 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:639.17,640.48 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:645.14,646.44 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:651.25,652.42 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:640.48,642.4 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:642.9,644.4 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:646.44,648.4 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:648.9,650.4 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:654.41,657.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:658.77,659.60 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:659.60,661.4 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:661.9,663.4 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:669.33,670.34 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:696.2,696.12 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:670.34,671.24 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:674.3,674.35 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:671.24,673.4 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:674.35,675.30 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:678.4,678.30 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:681.4,681.31 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:684.4,684.33 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:675.30,677.5 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:678.30,680.5 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:681.31,683.5 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:684.33,685.50 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:688.5,688.64 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:685.50,687.6 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:688.64,690.6 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:691.10,691.50 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:691.50,693.5 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:700.54,706.31 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:709.2,774.32 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:777.2,790.31 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:793.2,806.32 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:809.2,809.14 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:706.31,708.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:774.32,776.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:790.31,792.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:806.32,808.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:814.49,815.143 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:819.2,819.12 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:815.143,817.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:823.61,826.27 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:830.2,830.26 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:834.2,834.29 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:838.2,838.39 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:842.2,842.26 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:845.2,845.16 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:826.27,828.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:830.26,832.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:834.29,836.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:838.39,840.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:842.26,844.3 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:857.52,861.50 4 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:874.2,874.24 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:861.50,863.29 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:863.29,866.4 2 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:867.8,868.23 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:868.23,870.4 1 0 +github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:870.9,872.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:34.64,40.11 5 1 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:43.2,44.16 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:47.2,47.42 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:40.11,42.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:44.16,46.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:52.66,57.21 4 1 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:60.2,60.51 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:57.21,59.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:66.66,70.16 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:73.2,73.26 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:80.2,80.12 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:70.16,72.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:73.26,74.33 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:74.33,75.59 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:75.59,77.5 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:85.67,90.2 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:92.67,93.16 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:96.2,97.27 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:102.2,102.12 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:93.16,95.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:97.27,98.67 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:98.67,100.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:107.66,111.16 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:114.2,115.11 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:118.2,118.51 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:121.2,121.50 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:111.16,113.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:115.11,117.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:118.51,120.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:126.83,130.16 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:133.2,133.25 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:141.2,141.12 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:130.16,132.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:133.25,134.19 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:137.3,137.61 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:134.19,135.12 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:137.61,139.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:144.72,146.2 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:148.49,149.70 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:152.2,152.12 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/connect.go:149.70,151.3 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/events.go:71.37,73.23 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/events.go:88.2,88.14 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/events.go:74.13,76.24 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/events.go:77.13,80.21 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/events.go:81.12,84.19 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/events.go:85.10,86.50 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/events.go:92.41,96.2 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/events.go:99.33,100.16 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/events.go:101.21,102.94 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/events.go:103.21,104.129 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/events.go:105.20,106.186 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/events.go:107.10,108.12 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:54.36,59.2 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:62.49,65.2 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:68.39,70.2 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:73.38,75.2 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:78.54,81.2 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:84.53,86.2 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:102.103,105.16 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:108.2,110.16 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:113.2,113.37 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:122.2,122.47 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:167.2,167.45 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:105.16,107.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:110.16,112.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:113.37,117.3 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:122.47,129.13 4 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:143.3,143.7 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:129.13,131.17 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:138.4,138.19 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:131.17,132.12 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:133.28,133.28 0 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:134.17,135.12 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:143.7,144.11 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:145.25,146.42 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:149.5,151.63 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:154.5,154.12 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:159.23,160.15 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:161.16,162.15 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:146.42,147.14 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:151.63,153.6 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:155.26,155.26 0 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:156.17,157.16 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:171.54,174.2 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:177.81,180.2 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:183.64,186.2 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:189.49,191.2 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:194.48,196.2 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:199.59,201.2 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:204.62,206.2 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:209.85,212.2 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:216.58,218.2 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:222.63,224.2 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:227.44,229.2 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:233.71,235.15 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:242.2,243.16 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:246.2,249.16 4 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:252.2,253.77 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:257.2,257.16 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:262.2,262.12 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:235.15,238.17 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:238.17,240.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:243.16,245.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:249.16,251.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:253.77,256.3 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:257.16,258.63 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:258.63,260.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:274.42,301.2 21 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:304.71,306.2 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:309.73,310.45 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:315.2,315.30 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:310.45,313.3 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:319.72,320.44 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:325.2,325.30 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:320.44,323.3 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:329.72,332.25 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:336.2,338.21 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:342.2,343.16 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:347.2,350.30 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:332.25,335.3 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:338.21,341.3 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:343.16,346.3 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:354.71,357.25 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:361.2,364.30 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:357.25,360.3 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:368.71,372.2 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:375.73,379.2 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:382.80,392.36 4 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:399.2,399.41 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:407.2,407.30 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:412.2,413.69 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:422.2,425.36 4 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:430.2,430.46 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:452.2,453.6 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:392.36,395.37 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:395.37,397.4 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:399.41,401.17 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:404.3,405.13 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:401.17,403.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:407.30,409.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:413.69,416.17 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:416.17,419.4 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:425.36,427.3 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:430.46,432.17 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:436.3,436.35 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:443.3,443.35 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:432.17,435.4 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:436.35,438.44 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:438.44,441.5 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:443.35,445.44 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:445.44,448.5 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:453.6,454.10 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:455.26,457.53 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:460.4,460.44 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:464.21,465.10 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:457.53,458.13 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:460.44,463.5 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:478.60,480.57 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:498.2,498.21 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:480.57,482.73 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:485.3,486.58 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:482.73,484.4 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:486.58,487.35 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:491.4,492.18 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:495.4,495.65 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:487.35,489.13 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:492.18,494.5 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:506.42,508.62 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:513.2,513.75 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:517.2,517.14 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:508.62,510.3 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:513.75,515.3 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:531.75,533.16 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:538.2,538.32 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:533.16,536.3 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:542.73,544.63 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:549.2,549.45 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:554.2,554.37 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:544.63,547.3 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:549.45,552.3 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:558.71,562.33 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:567.2,568.16 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:573.2,573.48 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:562.33,565.3 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:568.16,571.3 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:577.69,581.29 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:585.2,585.33 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:581.29,583.3 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:589.68,593.2 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:596.70,599.51 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:604.2,604.43 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:599.51,602.3 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:608.69,611.50 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:616.2,616.43 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:611.50,614.3 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:620.72,624.64 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:629.2,629.43 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:624.64,627.3 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:633.75,637.67 3 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:642.2,642.43 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:637.67,640.3 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:647.68,650.2 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:653.40,653.55 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:658.68,660.16 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:663.2,665.21 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:660.16,662.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:670.70,672.2 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:675.60,677.2 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:680.61,682.2 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:685.63,687.2 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:690.64,692.2 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:695.76,699.2 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:703.74,704.82 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:704.82,710.46 4 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:725.3,725.46 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:740.3,740.35 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:710.46,713.47 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:718.4,718.19 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:722.4,722.46 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:713.47,715.5 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:715.10,717.5 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:718.19,721.5 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:725.46,728.47 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:733.4,733.19 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:737.4,737.46 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:728.47,730.5 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:730.10,732.5 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/http.go:733.19,736.5 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:40.92,42.2 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:46.31,48.28 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:51.2,51.13 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:48.28,50.3 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:55.60,57.16 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:57.16,58.53 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:63.65,65.16 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:68.2,70.6 3 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:65.16,66.53 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:70.6,71.10 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:72.15,74.10 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:75.17,78.39 3 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:83.4,83.11 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:90.4,91.40 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:78.39,81.5 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:84.16,86.11 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:87.39,87.39 0 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:91.40,94.5 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:103.69,105.16 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:114.2,114.6 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:105.16,106.10 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:107.15,109.10 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:110.11,111.54 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:114.6,115.10 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:121.3,126.21 6 1 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:133.3,135.35 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:158.3,158.12 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:116.15,118.10 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:119.11,119.11 0 1 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:126.21,129.4 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:129.9,129.27 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:129.27,132.4 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:135.35,136.11 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:142.4,144.18 3 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:149.4,149.25 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:137.16,139.11 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:140.32,140.32 0 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:144.18,147.13 3 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:149.25,152.19 3 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:155.5,155.14 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:152.19,154.6 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:164.74,166.33 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:176.2,176.25 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:183.2,183.25 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:191.2,191.17 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:166.33,169.17 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:173.3,173.21 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:169.17,172.4 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:176.25,177.39 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:181.3,181.52 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:177.39,180.4 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:183.25,185.49 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:185.49,188.4 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:71.81,80.2 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:83.42,85.2 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:89.81,93.27 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:104.2,104.47 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:107.2,107.55 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:112.2,112.31 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:117.2,118.16 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:121.2,129.43 6 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:134.2,136.18 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:93.27,94.48 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:94.48,96.73 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:99.4,99.15 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:96.73,98.5 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:104.47,106.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:107.55,109.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:112.31,114.3 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:118.16,120.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:129.43,131.3 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:140.45,142.2 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:145.38,146.33 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:154.2,154.12 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:146.33,147.16 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:150.3,150.46 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:147.16,148.12 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:150.46,152.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:158.37,159.33 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:167.2,167.12 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:159.33,160.17 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:163.3,163.45 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:160.17,161.12 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:163.45,165.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:171.46,173.2 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:177.88,182.17 4 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:185.2,185.15 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:188.2,189.46 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:193.2,200.16 6 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:203.2,205.16 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:208.2,209.12 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:182.17,184.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:185.15,187.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:189.46,192.3 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:200.16,202.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:205.16,207.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:214.102,215.15 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:230.2,230.6 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:215.15,223.18 5 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:226.3,228.22 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:223.18,225.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:230.6,231.10 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:232.30,233.11 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:236.4,237.22 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:253.27,254.18 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:257.4,257.10 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:233.11,235.5 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:239.30,240.29 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:242.31,243.32 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:245.34,246.58 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:248.34,249.61 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:254.18,256.5 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:263.45,271.37 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:285.2,285.16 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:289.2,294.16 4 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:298.2,301.12 4 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:271.37,276.18 4 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:279.3,279.17 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:282.3,283.19 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:276.18,278.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:279.17,281.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:285.16,287.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:294.16,297.3 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:306.60,310.2 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:312.60,315.16 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:318.2,319.16 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:322.2,323.69 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:315.16,317.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:319.16,321.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:328.63,330.17 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:333.2,333.14 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:336.2,337.16 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:340.2,341.72 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:330.17,332.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:333.14,335.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:337.16,339.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:345.59,349.16 4 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:352.2,352.13 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:355.2,357.12 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:349.16,351.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:352.13,354.3 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:362.62,366.17 4 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:369.2,369.14 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:372.2,375.12 4 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:366.17,368.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:369.14,371.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:379.89,389.2 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:392.92,402.2 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:406.48,410.2 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:412.48,414.12 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:417.2,417.21 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:414.12,416.3 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:422.54,426.2 3 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:428.54,429.33 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:434.2,434.12 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:429.33,430.31 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:430.31,432.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:439.67,444.2 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:446.66,449.30 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:453.2,453.25 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:457.2,457.16 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:449.30,451.3 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:453.25,456.3 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:462.62,467.2 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:469.61,470.25 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:474.2,474.18 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:470.25,473.3 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:479.62,484.2 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:486.62,488.29 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:495.2,495.14 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:488.29,490.18 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:490.18,492.4 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:499.65,504.2 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:506.65,508.54 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:512.2,512.14 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:508.54,510.3 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:516.70,521.2 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:523.70,525.54 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:530.2,530.16 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:525.54,528.3 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:534.67,538.2 3 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:541.67,543.2 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:545.53,546.33 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:551.2,551.12 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:546.33,547.16 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:547.16,549.4 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:555.69,559.2 3 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:561.55,562.33 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:567.2,567.12 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:562.33,563.17 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:563.17,565.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:571.65,575.2 3 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:577.80,581.12 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:584.2,584.44 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:581.12,583.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:587.66,589.32 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:592.2,593.25 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:598.2,598.17 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:589.32,591.3 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:593.25,594.38 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:594.38,596.4 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:603.60,607.2 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:611.77,615.2 3 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:617.77,618.54 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:622.2,623.16 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:626.2,627.18 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:630.2,639.18 5 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:618.54,620.3 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:623.16,625.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:627.18,629.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:642.60,645.12 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:648.2,648.21 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:645.12,647.3 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:659.70,663.2 3 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:665.70,666.22 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:669.2,670.16 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:673.2,673.13 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:676.2,676.49 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:680.2,681.16 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:685.2,687.18 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:666.22,668.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:670.16,672.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:673.13,675.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:676.49,678.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:681.16,684.3 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:691.32,692.33 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:698.2,698.18 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:692.33,694.37 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:694.37,696.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:703.29,714.2 7 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:729.72,731.2 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:733.29,736.2 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:739.26,743.2 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:746.31,750.2 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:753.30,755.2 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:758.32,760.2 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:763.41,765.19 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:768.2,770.13 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:765.19,767.3 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:775.46,785.2 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:789.48,796.51 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:799.2,800.12 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:796.51,798.3 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:821.32,822.17 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:825.2,825.19 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:828.2,828.12 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:822.17,824.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:825.19,827.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:832.32,834.2 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:846.31,848.2 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:853.48,855.55 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:862.2,862.44 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:855.55,858.3 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:858.8,861.3 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:881.51,883.2 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:885.108,887.2 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:889.96,895.33 4 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:935.2,935.33 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:940.2,940.18 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:895.33,897.17 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:900.3,901.17 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:904.3,905.38 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:917.3,917.30 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:897.17,898.12 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:901.17,903.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:905.38,907.61 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:913.4,913.16 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:907.61,908.22 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:908.22,910.11 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:913.16,915.5 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:917.30,919.61 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:932.4,932.58 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:919.61,921.42 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:927.5,927.17 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:921.42,922.22 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:922.22,924.12 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:927.17,929.6 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:935.33,936.14 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:936.14,938.4 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:947.48,949.31 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:962.2,973.12 7 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1023.2,1023.34 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1035.2,1035.9 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1042.2,1042.12 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:949.31,950.65 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:953.3,953.19 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:956.3,956.79 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:950.65,952.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:953.19,954.12 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:956.79,958.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:973.12,980.7 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:980.7,981.11 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:982.23,985.18 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:989.5,989.32 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:992.5,994.19 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1002.5,1002.37 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1015.16,1017.11 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:985.18,986.14 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:989.32,990.14 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:994.19,999.14 3 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1002.37,1003.62 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1003.62,1006.36 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1012.7,1012.12 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1006.36,1010.8 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1023.34,1025.67 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1030.3,1030.59 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1025.67,1028.12 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1030.59,1032.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1037.22,1037.22 0 1 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1039.41,1040.60 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1046.51,1047.6 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1047.6,1048.10 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1049.30,1050.11 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1053.4,1053.21 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1056.20,1057.10 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1050.11,1052.5 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1053.21,1055.5 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1062.55,1064.20 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1065.21,1066.53 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1069.21,1070.53 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1073.20,1074.41 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1066.53,1068.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1070.53,1072.4 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1078.54,1079.18 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1083.2,1083.64 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1086.2,1086.31 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1079.18,1081.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1083.64,1085.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1089.54,1090.15 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1093.2,1093.49 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/network.go:1090.15,1092.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:33.50,37.2 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:41.80,45.15 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:48.2,52.41 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:58.2,59.39 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:62.2,62.38 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:90.2,90.8 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:45.15,45.49 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:52.41,55.3 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:59.39,61.3 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:62.38,63.10 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:64.29,66.31 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:71.4,71.38 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:76.4,77.18 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:81.4,81.12 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:84.21,86.10 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:66.31,67.13 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:71.38,72.13 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:77.18,80.5 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:81.12,83.5 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:93.62,98.12 5 1 +github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:110.2,110.16 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:98.12,101.7 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:101.7,102.11 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:103.27,104.63 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:105.16,106.11 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:110.16,113.3 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:136.34,140.2 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:34.67,38.2 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:40.50,46.58 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:46.58,47.19 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:51.5,52.15 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:47.19,50.6 2 0 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:54.33,56.5 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:57.44,59.5 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:65.40,67.2 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:69.37,71.2 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:73.36,75.2 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:77.61,80.25 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:80.25,81.30 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:81.30,83.40 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:83.40,84.17 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:84.17,86.6 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:87.10,88.17 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:88.17,90.6 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:96.62,99.25 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:99.25,100.30 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:100.30,102.16 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:102.16,103.17 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:103.17,105.6 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:106.10,107.17 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:107.17,109.6 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:115.61,119.26 4 1 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:127.2,128.25 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:119.26,120.33 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:120.33,121.36 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:121.36,123.5 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:128.25,130.3 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:133.78,136.25 3 1 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:136.25,137.30 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:137.30,139.44 2 1 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:139.44,140.17 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:140.17,142.6 1 0 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:143.10,144.17 1 1 +github.com/ethereum/go-ethereum/p2p/simulations/test.go:144.17,146.6 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:30.41,32.2 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:33.40,35.2 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:36.46,38.2 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:39.47,41.2 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:42.40,44.2 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:45.45,47.2 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146894.40,146896.2 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146898.35,146900.16 2 1 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146904.2,146906.15 3 1 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146900.16,146902.3 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146912.41,146914.42 2 1 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146921.2,146921.52 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146914.42,146916.17 2 1 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146919.3,146919.22 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146916.17,146918.4 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146925.47,146928.2 2 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146932.36,146934.16 2 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146938.2,146938.10 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146934.16,146935.54 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146943.42,146945.2 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146950.50,146952.42 2 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146959.2,146959.56 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146952.42,146954.17 2 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146957.3,146957.21 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146954.17,146956.4 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146964.58,146966.42 2 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146973.2,146973.74 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146966.42,146968.17 2 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146971.3,146971.23 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146968.17,146970.4 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146977.54,146979.29 2 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146986.2,146986.16 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146979.29,146981.17 2 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146984.3,146984.22 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146981.17,146983.4 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146990.28,146992.29 2 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146995.2,146995.14 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146992.29,146994.3 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147016.46,147018.20 2 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147028.2,147028.22 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147031.2,147032.39 2 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147035.2,147035.16 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147018.20,147021.30 3 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147021.30,147023.19 2 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147023.19,147025.5 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147028.22,147030.3 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147032.39,147034.3 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147048.43,147050.16 2 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147053.2,147054.16 2 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147057.2,147058.16 2 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147061.2,147062.16 2 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147065.2,147065.73 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147050.16,147052.3 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147054.16,147056.3 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147058.16,147060.3 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147062.16,147064.3 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147069.44,147072.16 2 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147076.2,147076.33 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147082.2,147082.12 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147072.16,147074.3 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147076.33,147078.17 2 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147078.17,147080.4 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147085.41,147088.2 2 0 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:45.44,47.33 2 0 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:53.2,53.64 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:48.20,49.23 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:50.10,51.33 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:57.43,59.32 2 0 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:62.2,62.64 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:59.32,61.3 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:67.81,70.16 2 1 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:74.2,74.49 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:70.16,72.3 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:79.62,81.16 2 1 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:85.2,85.57 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:81.16,83.3 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:90.88,92.23 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:95.2,98.26 3 1 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:102.2,103.16 2 1 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:106.2,107.16 2 1 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:110.2,111.16 2 1 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:115.2,116.42 2 1 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:126.2,127.16 2 1 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:130.2,130.36 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:135.2,135.22 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:92.23,94.3 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:98.26,100.3 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:103.16,105.3 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:107.16,109.3 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:111.16,113.3 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:116.42,121.3 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:127.16,129.3 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:130.36,134.3 3 1 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:41.27,46.2 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:49.31,51.2 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:59.50,61.16 2 1 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:64.2,67.66 3 1 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:70.2,70.16 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:61.16,63.3 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:67.66,69.3 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:76.50,81.16 4 1 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:84.2,84.59 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:88.2,88.41 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:96.2,96.16 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:81.16,83.3 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:84.59,86.3 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:88.41,89.52 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:92.3,92.58 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:89.52,91.4 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:92.58,94.4 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:100.39,102.2 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:107.57,108.17 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:111.2,112.50 2 1 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:115.2,115.48 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:118.2,118.54 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:108.17,110.3 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:112.50,114.3 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:115.48,117.3 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:126.69,128.19 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:131.2,131.49 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:135.2,136.25 2 1 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:139.2,140.16 2 1 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:143.2,143.52 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:128.19,130.3 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:131.49,133.3 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:136.25,138.3 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:140.16,142.3 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:32.122,36.76 2 1 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:40.2,41.21 2 1 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:45.2,45.20 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:49.2,49.18 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:70.2,70.28 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:73.2,73.68 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:76.2,76.9 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:87.2,88.22 2 1 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:36.76,38.3 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:41.21,44.3 2 1 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:45.20,47.3 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:49.18,53.21 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:64.3,64.22 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:67.3,67.23 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:53.21,55.47 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:59.4,59.71 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:55.47,57.5 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:60.9,60.28 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:60.28,62.4 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:64.22,66.4 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:70.28,72.3 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:73.68,75.3 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:77.52,78.68 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:79.60,80.76 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:81.52,82.65 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:83.60,84.73 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:93.108,95.20 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:99.2,99.19 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:103.2,103.35 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:107.2,107.21 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:117.2,118.16 2 0 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:122.2,122.61 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:95.20,97.3 1 1 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:99.19,102.3 2 1 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:103.35,105.3 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:107.21,108.63 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:114.3,114.9 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:108.63,110.4 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:110.9,113.4 2 0 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:118.16,121.3 2 0 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:122.61,124.3 1 0 +github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:124.8,126.3 1 0 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:48.79,53.2 1 0 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:56.54,57.19 1 1 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:60.2,61.16 2 1 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:65.2,66.16 2 1 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:70.2,72.53 3 1 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:57.19,59.3 1 0 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:61.16,64.3 2 0 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:66.16,69.3 2 0 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:72.53,74.3 1 0 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:79.63,80.19 1 1 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:83.2,84.16 2 1 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:88.2,89.12 2 1 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:93.2,94.16 2 1 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:98.2,98.27 1 1 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:80.19,82.3 1 0 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:84.16,87.3 2 0 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:89.12,92.3 2 0 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:94.16,97.3 2 1 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:102.47,104.16 2 0 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:108.2,109.53 2 0 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:104.16,107.3 2 0 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:109.53,111.3 1 0 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:115.91,119.16 3 1 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:126.2,126.51 1 1 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:130.2,130.19 1 1 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:119.16,120.25 1 1 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:124.3,124.79 1 0 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:120.25,123.4 1 1 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:126.51,129.3 2 0 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:134.94,136.16 2 1 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:139.2,139.63 1 1 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:142.2,142.12 1 1 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:136.16,138.3 1 0 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:139.63,141.3 1 0 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:148.91,150.16 2 1 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:153.2,154.16 2 1 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:157.2,158.59 2 1 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:161.2,162.31 2 1 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:150.16,152.3 1 0 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:154.16,156.3 1 0 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:158.59,160.3 1 0 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:165.98,167.16 2 1 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:170.2,171.16 2 1 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:174.2,175.16 2 1 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:178.2,178.23 1 1 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:167.16,169.3 1 0 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:171.16,173.3 1 0 +github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:175.16,177.3 1 1 +github.com/ethereum/go-ethereum/signer/storage/storage.go:48.51,49.19 1 0 +github.com/ethereum/go-ethereum/signer/storage/storage.go:52.2,52.21 1 0 +github.com/ethereum/go-ethereum/signer/storage/storage.go:49.19,51.3 1 0 +github.com/ethereum/go-ethereum/signer/storage/storage.go:57.60,58.19 1 0 +github.com/ethereum/go-ethereum/signer/storage/storage.go:61.2,61.30 1 0 +github.com/ethereum/go-ethereum/signer/storage/storage.go:64.2,64.24 1 0 +github.com/ethereum/go-ethereum/signer/storage/storage.go:58.19,60.3 1 0 +github.com/ethereum/go-ethereum/signer/storage/storage.go:61.30,63.3 1 0 +github.com/ethereum/go-ethereum/signer/storage/storage.go:68.44,70.2 1 0 +github.com/ethereum/go-ethereum/signer/storage/storage.go:72.36,77.2 2 0 +github.com/ethereum/go-ethereum/signer/storage/storage.go:82.45,82.46 0 0 +github.com/ethereum/go-ethereum/signer/storage/storage.go:83.45,83.46 0 0 +github.com/ethereum/go-ethereum/signer/storage/storage.go:84.53,86.2 1 0 +github.com/ethereum/go-ethereum/signer/rules/rules.go:39.55,41.42 2 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:44.2,45.25 2 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:41.42,43.3 1 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:56.93,64.2 2 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:65.62,67.2 0 0 +github.com/ethereum/go-ethereum/signer/rules/rules.go:69.56,72.2 2 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:73.83,85.64 7 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:94.2,94.64 1 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:99.2,103.16 3 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:107.2,111.16 3 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:121.2,122.16 2 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:127.2,128.24 2 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:133.2,133.27 1 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:85.64,87.16 2 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:92.3,92.21 1 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:87.16,89.4 1 0 +github.com/ethereum/go-ethereum/signer/rules/rules.go:89.9,91.4 1 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:94.64,98.3 3 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:103.16,106.3 2 0 +github.com/ethereum/go-ethereum/signer/rules/rules.go:111.16,114.3 2 0 +github.com/ethereum/go-ethereum/signer/rules/rules.go:122.16,125.3 2 0 +github.com/ethereum/go-ethereum/signer/rules/rules.go:128.24,130.3 1 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:130.8,132.3 1 0 +github.com/ethereum/go-ethereum/signer/rules/rules.go:136.89,137.16 1 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:140.2,141.16 2 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:145.2,146.25 2 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:153.2,153.46 1 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:137.16,139.3 1 0 +github.com/ethereum/go-ethereum/signer/rules/rules.go:141.16,144.3 2 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:146.25,149.3 2 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:149.8,149.31 1 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:149.31,152.3 2 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:156.89,159.16 3 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:164.2,164.14 1 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:170.2,170.50 1 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:159.16,162.3 2 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:164.14,169.3 1 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:173.99,176.16 3 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:180.2,180.14 1 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:183.2,183.52 1 0 +github.com/ethereum/go-ethereum/signer/rules/rules.go:176.16,179.3 2 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:180.14,182.3 1 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:187.97,189.2 1 0 +github.com/ethereum/go-ethereum/signer/rules/rules.go:191.90,194.16 3 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:198.2,198.14 1 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:201.2,201.33 1 0 +github.com/ethereum/go-ethereum/signer/rules/rules.go:194.16,197.3 2 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:198.14,200.3 1 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:204.105,208.2 1 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:210.47,213.2 2 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:215.46,218.2 2 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:220.60,222.16 2 0 +github.com/ethereum/go-ethereum/signer/rules/rules.go:226.2,228.16 3 0 +github.com/ethereum/go-ethereum/signer/rules/rules.go:222.16,225.3 2 0 +github.com/ethereum/go-ethereum/signer/rules/rules.go:228.16,230.3 1 0 +github.com/ethereum/go-ethereum/signer/rules/rules.go:233.67,235.16 2 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:239.2,240.16 2 1 +github.com/ethereum/go-ethereum/signer/rules/rules.go:235.16,238.3 2 0 +github.com/ethereum/go-ethereum/signer/rules/rules.go:240.16,242.3 1 1 +github.com/ethereum/go-ethereum/signer/core/cliui.go:38.40,40.2 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:42.62,44.2 0 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:48.46,49.6 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:49.6,52.17 3 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:55.3,55.49 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:52.17,54.4 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:55.49,57.4 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:61.92,65.21 3 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:73.2,74.37 2 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:65.21,67.17 2 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:71.3,71.38 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:67.17,70.4 2 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:78.41,80.28 2 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:83.2,84.14 2 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:80.28,82.3 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:89.45,90.22 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:93.2,93.31 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:90.22,92.3 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:96.38,100.2 3 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:103.84,108.45 5 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:116.2,119.45 4 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:125.2,126.60 2 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:129.2,129.57 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:138.2,138.37 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:144.2,144.29 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:152.2,155.19 4 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:158.2,158.55 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:108.45,110.26 2 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:110.26,112.4 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:113.8,115.3 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:119.45,122.3 2 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:122.8,124.3 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:126.60,128.3 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:129.57,131.28 2 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:131.28,133.40 2 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:133.40,135.5 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:138.37,140.17 2 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:140.17,142.4 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:144.29,146.38 2 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:149.3,149.16 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:146.38,148.4 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:155.19,157.3 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:162.94,168.32 5 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:175.2,176.39 2 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:179.2,183.19 5 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:186.2,186.36 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:168.32,170.38 2 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:173.3,173.16 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:170.38,172.4 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:176.39,178.3 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:183.19,185.3 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:191.85,198.43 6 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:202.2,204.19 3 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:207.2,207.44 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:198.43,201.3 2 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:204.19,206.3 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:211.100,221.19 8 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:224.2,224.38 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:221.19,223.3 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:228.52,231.2 2 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:234.51,236.2 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:238.72,240.67 2 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:240.67,242.3 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:242.8,244.3 1 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:247.60,250.30 2 0 +github.com/ethereum/go-ethereum/signer/core/cliui.go:250.30,252.3 1 0 +github.com/ethereum/go-ethereum/signer/core/gnosis_safe.go:38.58,40.20 2 1 +github.com/ethereum/go-ethereum/signer/core/gnosis_safe.go:43.2,44.23 2 1 +github.com/ethereum/go-ethereum/signer/core/gnosis_safe.go:48.2,82.24 2 1 +github.com/ethereum/go-ethereum/signer/core/gnosis_safe.go:40.20,42.3 1 1 +github.com/ethereum/go-ethereum/signer/core/gnosis_safe.go:44.23,46.3 1 1 +github.com/ethereum/go-ethereum/signer/core/gnosis_safe.go:87.66,101.2 3 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:39.87,43.16 2 1 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:46.2,46.19 1 1 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:50.2,52.16 3 1 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:55.2,58.16 2 1 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:62.2,63.16 2 1 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:66.2,66.13 1 1 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:69.2,69.23 1 1 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:43.16,45.3 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:46.19,48.3 1 1 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:52.16,54.3 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:58.16,60.3 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:63.16,65.3 1 1 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:66.13,68.3 1 1 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:76.144,78.16 2 1 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:81.2,82.16 2 1 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:86.2,86.23 1 1 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:78.16,80.3 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:82.16,85.3 2 1 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:95.169,101.16 3 1 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:105.2,105.19 1 1 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:194.2,196.31 3 1 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:101.16,103.3 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:106.39,109.17 2 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:112.3,135.106 3 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:136.39,139.10 2 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:142.3,143.17 2 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:146.3,147.61 2 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:151.3,151.29 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:158.3,159.17 2 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:162.3,171.104 3 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:172.10,176.43 1 1 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:109.17,111.4 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:139.10,141.4 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:143.17,145.4 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:147.61,149.4 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:151.29,156.4 3 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:159.17,161.4 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:176.43,178.4 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:178.9,179.63 1 1 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:179.63,181.5 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:181.10,191.5 3 1 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:202.86,205.2 2 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:214.81,215.28 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:219.2,221.23 3 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:215.28,218.3 2 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:229.141,232.2 2 1 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:237.119,239.16 2 1 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:242.2,243.16 2 1 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:246.2,249.16 4 1 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:252.2,258.31 2 1 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:261.2,262.16 2 1 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:266.2,266.32 1 1 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:239.16,241.3 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:243.16,245.3 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:249.16,251.3 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:258.31,260.3 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:262.16,265.3 2 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:271.117,283.20 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:286.2,286.36 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:289.2,292.16 4 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:295.2,295.42 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:283.20,285.3 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:286.36,288.3 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:292.16,294.3 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:299.79,301.9 2 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:304.2,305.9 2 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:308.2,309.16 2 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:312.2,312.32 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:316.2,317.9 2 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:320.2,321.16 2 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:324.2,324.35 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:328.2,331.8 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:301.9,303.3 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:305.9,307.3 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:309.16,311.3 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:312.32,314.3 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:317.9,319.3 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:321.16,323.3 1 0 +github.com/ethereum/go-ethereum/signer/core/signed_data.go:324.35,326.3 1 0 +github.com/ethereum/go-ethereum/signer/core/stdioui.go:31.28,33.16 2 0 +github.com/ethereum/go-ethereum/signer/core/stdioui.go:36.2,37.11 2 0 +github.com/ethereum/go-ethereum/signer/core/stdioui.go:33.16,35.3 1 0 +github.com/ethereum/go-ethereum/signer/core/stdioui.go:40.55,42.2 1 0 +github.com/ethereum/go-ethereum/signer/core/stdioui.go:45.94,47.16 2 0 +github.com/ethereum/go-ethereum/signer/core/stdioui.go:50.2,50.12 1 0 +github.com/ethereum/go-ethereum/signer/core/stdioui.go:47.16,49.3 1 0 +github.com/ethereum/go-ethereum/signer/core/stdioui.go:54.73,57.16 3 0 +github.com/ethereum/go-ethereum/signer/core/stdioui.go:60.2,60.12 1 0 +github.com/ethereum/go-ethereum/signer/core/stdioui.go:57.16,59.3 1 0 +github.com/ethereum/go-ethereum/signer/core/stdioui.go:63.78,67.2 3 0 +github.com/ethereum/go-ethereum/signer/core/stdioui.go:69.88,73.2 3 0 +github.com/ethereum/go-ethereum/signer/core/stdioui.go:75.79,79.2 3 0 +github.com/ethereum/go-ethereum/signer/core/stdioui.go:81.94,85.2 3 0 +github.com/ethereum/go-ethereum/signer/core/stdioui.go:87.46,89.16 2 0 +github.com/ethereum/go-ethereum/signer/core/stdioui.go:89.16,91.3 1 0 +github.com/ethereum/go-ethereum/signer/core/stdioui.go:94.45,96.16 2 0 +github.com/ethereum/go-ethereum/signer/core/stdioui.go:96.16,98.3 1 0 +github.com/ethereum/go-ethereum/signer/core/stdioui.go:100.66,102.16 2 0 +github.com/ethereum/go-ethereum/signer/core/stdioui.go:102.16,104.3 1 0 +github.com/ethereum/go-ethereum/signer/core/stdioui.go:107.54,109.16 2 0 +github.com/ethereum/go-ethereum/signer/core/stdioui.go:109.16,111.3 1 0 +github.com/ethereum/go-ethereum/signer/core/stdioui.go:113.86,116.16 3 0 +github.com/ethereum/go-ethereum/signer/core/stdioui.go:119.2,119.20 1 0 +github.com/ethereum/go-ethereum/signer/core/stdioui.go:116.16,118.3 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:47.53,49.2 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:55.85,57.40 2 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:60.2,60.18 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:57.40,59.3 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:75.49,77.40 2 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:90.2,90.16 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:77.40,85.21 3 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:88.3,88.33 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:85.21,87.4 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:97.99,99.16 2 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:102.2,103.16 2 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:106.2,106.16 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:109.2,109.39 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:99.16,101.3 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:103.16,105.3 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:106.16,108.3 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:113.61,115.2 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:121.95,123.16 2 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:126.2,126.57 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:130.2,130.55 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:123.16,125.3 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:126.57,128.3 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:139.72,141.16 2 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:144.2,145.23 2 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:148.2,148.26 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:141.16,143.3 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:145.23,147.3 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:154.53,156.2 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:161.78,164.2 2 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:169.97,172.16 2 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:175.2,175.52 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:178.2,178.43 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:172.16,174.3 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:175.52,177.3 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:186.141,189.18 2 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:192.2,192.62 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:195.2,195.81 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:189.18,191.3 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:192.62,194.3 1 0 +github.com/ethereum/go-ethereum/signer/core/uiapi.go:204.74,206.2 1 0 +github.com/ethereum/go-ethereum/signer/core/validation.go:28.52,29.24 1 1 +github.com/ethereum/go-ethereum/signer/core/validation.go:32.2,32.47 1 1 +github.com/ethereum/go-ethereum/signer/core/validation.go:35.2,35.12 1 1 +github.com/ethereum/go-ethereum/signer/core/validation.go:29.24,31.3 1 1 +github.com/ethereum/go-ethereum/signer/core/validation.go:32.47,34.3 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:131.104,136.14 2 1 +github.com/ethereum/go-ethereum/signer/core/api.go:140.2,140.25 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:143.2,143.12 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:168.2,168.21 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:187.2,187.89 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:136.14,138.3 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:140.25,142.3 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:143.12,145.61 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:152.3,152.68 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:159.3,159.71 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:145.61,147.4 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:147.9,150.4 2 0 +github.com/ethereum/go-ethereum/signer/core/api.go:152.68,154.4 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:154.9,157.4 2 0 +github.com/ethereum/go-ethereum/signer/core/api.go:159.71,161.4 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:161.9,164.4 2 0 +github.com/ethereum/go-ethereum/signer/core/api.go:168.21,171.17 2 0 +github.com/ethereum/go-ethereum/signer/core/api.go:171.17,173.4 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:173.9,174.46 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:174.46,176.5 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:176.10,177.87 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:177.87,179.6 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:179.11,181.6 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:191.56,196.26 3 1 +github.com/ethereum/go-ethereum/signer/core/api.go:202.2,202.27 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:205.2,205.26 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:208.2,210.10 3 1 +github.com/ethereum/go-ethereum/signer/core/api.go:196.26,197.31 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:200.3,200.28 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:197.31,199.4 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:202.27,204.3 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:205.26,207.3 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:214.35,216.16 2 0 +github.com/ethereum/go-ethereum/signer/core/api.go:219.2,219.20 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:216.16,218.3 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:284.164,285.18 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:288.2,289.12 2 1 +github.com/ethereum/go-ethereum/signer/core/api.go:292.2,292.15 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:285.18,287.3 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:289.12,291.3 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:294.52,306.16 2 0 +github.com/ethereum/go-ethereum/signer/core/api.go:312.2,313.16 2 0 +github.com/ethereum/go-ethereum/signer/core/api.go:317.2,318.16 2 0 +github.com/ethereum/go-ethereum/signer/core/api.go:306.16,309.3 2 0 +github.com/ethereum/go-ethereum/signer/core/api.go:313.16,316.3 2 0 +github.com/ethereum/go-ethereum/signer/core/api.go:318.16,321.3 2 0 +github.com/ethereum/go-ethereum/signer/core/api.go:326.42,331.38 4 0 +github.com/ethereum/go-ethereum/signer/core/api.go:339.2,339.32 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:331.38,332.41 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:332.41,334.43 2 0 +github.com/ethereum/go-ethereum/signer/core/api.go:334.43,336.5 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:343.72,345.28 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:345.28,346.21 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:347.31,348.48 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:354.30,357.70 3 0 +github.com/ethereum/go-ethereum/signer/core/api.go:368.4,370.45 3 0 +github.com/ethereum/go-ethereum/signer/core/api.go:381.31,383.24 2 0 +github.com/ethereum/go-ethereum/signer/core/api.go:348.48,350.44 2 0 +github.com/ethereum/go-ethereum/signer/core/api.go:350.44,352.6 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:357.70,359.32 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:359.32,361.65 2 0 +github.com/ethereum/go-ethereum/signer/core/api.go:361.65,363.7 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:363.12,365.7 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:370.45,380.5 6 0 +github.com/ethereum/go-ethereum/signer/core/api.go:390.75,394.42 2 1 +github.com/ethereum/go-ethereum/signer/core/api.go:397.2,398.16 2 1 +github.com/ethereum/go-ethereum/signer/core/api.go:401.2,401.28 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:404.2,405.38 2 1 +github.com/ethereum/go-ethereum/signer/core/api.go:408.2,408.23 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:394.42,396.3 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:398.16,400.3 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:401.28,403.3 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:405.38,407.3 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:414.72,415.64 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:418.2,418.101 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:423.2,423.25 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:415.64,417.3 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:418.101,420.3 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:420.8,420.27 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:420.27,422.3 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:428.60,430.18 2 1 +github.com/ethereum/go-ethereum/signer/core/api.go:434.2,434.25 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:455.2,455.64 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:430.18,432.3 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:434.25,439.17 2 1 +github.com/ethereum/go-ethereum/signer/core/api.go:443.3,443.63 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:439.17,441.12 2 0 +github.com/ethereum/go-ethereum/signer/core/api.go:443.63,445.4 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:445.9,452.4 5 1 +github.com/ethereum/go-ethereum/signer/core/api.go:461.65,462.52 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:472.2,473.91 2 1 +github.com/ethereum/go-ethereum/signer/core/api.go:477.2,477.87 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:481.2,481.71 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:485.2,485.91 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:489.2,489.115 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:493.2,493.99 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:497.2,497.101 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:501.2,501.73 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:515.2,515.75 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:519.2,519.17 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:462.52,465.33 3 1 +github.com/ethereum/go-ethereum/signer/core/api.go:469.3,469.16 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:465.33,467.4 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:473.91,476.3 2 0 +github.com/ethereum/go-ethereum/signer/core/api.go:477.87,480.3 2 0 +github.com/ethereum/go-ethereum/signer/core/api.go:481.71,484.3 2 0 +github.com/ethereum/go-ethereum/signer/core/api.go:485.91,488.3 2 0 +github.com/ethereum/go-ethereum/signer/core/api.go:489.115,492.3 2 0 +github.com/ethereum/go-ethereum/signer/core/api.go:493.99,496.3 2 0 +github.com/ethereum/go-ethereum/signer/core/api.go:497.101,500.3 2 0 +github.com/ethereum/go-ethereum/signer/core/api.go:501.73,504.16 3 0 +github.com/ethereum/go-ethereum/signer/core/api.go:507.3,507.16 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:510.3,510.17 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:504.16,506.4 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:507.16,509.4 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:510.17,513.4 2 0 +github.com/ethereum/go-ethereum/signer/core/api.go:515.75,518.3 2 0 +github.com/ethereum/go-ethereum/signer/core/api.go:522.78,524.2 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:526.107,528.56 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:532.2,533.16 2 1 +github.com/ethereum/go-ethereum/signer/core/api.go:539.2,539.25 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:528.56,530.3 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:533.16,538.3 2 0 +github.com/ethereum/go-ethereum/signer/core/api.go:543.149,549.16 3 1 +github.com/ethereum/go-ethereum/signer/core/api.go:553.2,553.20 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:558.2,558.25 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:566.2,573.16 3 1 +github.com/ethereum/go-ethereum/signer/core/api.go:576.2,576.22 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:580.2,587.16 5 1 +github.com/ethereum/go-ethereum/signer/core/api.go:591.2,595.16 3 1 +github.com/ethereum/go-ethereum/signer/core/api.go:599.2,600.16 2 1 +github.com/ethereum/go-ethereum/signer/core/api.go:605.2,606.16 2 1 +github.com/ethereum/go-ethereum/signer/core/api.go:609.2,614.23 3 1 +github.com/ethereum/go-ethereum/signer/core/api.go:549.16,551.3 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:553.20,554.44 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:554.44,556.4 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:558.25,560.45 2 0 +github.com/ethereum/go-ethereum/signer/core/api.go:560.45,564.4 2 0 +github.com/ethereum/go-ethereum/signer/core/api.go:573.16,575.3 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:576.22,578.3 1 1 +github.com/ethereum/go-ethereum/signer/core/api.go:587.16,589.3 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:595.16,597.3 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:600.16,603.3 2 1 +github.com/ethereum/go-ethereum/signer/core/api.go:606.16,608.3 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:618.170,622.16 3 0 +github.com/ethereum/go-ethereum/signer/core/api.go:626.2,626.20 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:631.2,633.16 3 0 +github.com/ethereum/go-ethereum/signer/core/api.go:636.2,642.23 5 0 +github.com/ethereum/go-ethereum/signer/core/api.go:622.16,624.3 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:626.20,627.44 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:627.44,629.4 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:633.16,635.3 1 0 +github.com/ethereum/go-ethereum/signer/core/api.go:647.68,649.2 1 0 +github.com/ethereum/go-ethereum/signer/core/auditlog.go:35.75,41.2 4 0 +github.com/ethereum/go-ethereum/signer/core/auditlog.go:43.72,45.2 1 0 +github.com/ethereum/go-ethereum/signer/core/auditlog.go:47.149,49.27 2 0 +github.com/ethereum/go-ethereum/signer/core/auditlog.go:52.2,57.16 3 0 +github.com/ethereum/go-ethereum/signer/core/auditlog.go:62.2,62.15 1 0 +github.com/ethereum/go-ethereum/signer/core/auditlog.go:49.27,51.3 1 0 +github.com/ethereum/go-ethereum/signer/core/auditlog.go:57.16,59.3 1 0 +github.com/ethereum/go-ethereum/signer/core/auditlog.go:59.8,61.3 1 0 +github.com/ethereum/go-ethereum/signer/core/auditlog.go:65.144,72.2 5 0 +github.com/ethereum/go-ethereum/signer/core/auditlog.go:74.161,76.27 2 0 +github.com/ethereum/go-ethereum/signer/core/auditlog.go:79.2,83.16 4 0 +github.com/ethereum/go-ethereum/signer/core/auditlog.go:89.2,89.15 1 0 +github.com/ethereum/go-ethereum/signer/core/auditlog.go:76.27,78.3 1 0 +github.com/ethereum/go-ethereum/signer/core/auditlog.go:83.16,86.3 2 0 +github.com/ethereum/go-ethereum/signer/core/auditlog.go:86.8,88.3 1 0 +github.com/ethereum/go-ethereum/signer/core/auditlog.go:92.136,98.2 4 0 +github.com/ethereum/go-ethereum/signer/core/auditlog.go:100.117,106.2 4 0 +github.com/ethereum/go-ethereum/signer/core/auditlog.go:108.68,114.2 4 0 +github.com/ethereum/go-ethereum/signer/core/auditlog.go:116.73,119.16 3 0 +github.com/ethereum/go-ethereum/signer/core/auditlog.go:122.2,124.34 3 0 +github.com/ethereum/go-ethereum/signer/core/auditlog.go:119.16,121.3 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:48.40,49.54 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:52.2,52.19 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:55.2,55.28 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:49.54,51.3 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:52.19,54.3 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:59.31,61.16 2 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:66.2,66.42 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:71.2,73.16 3 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:76.2,76.27 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:80.2,81.35 2 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:61.16,63.3 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:66.42,68.3 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:73.16,75.3 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:76.27,78.3 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:84.57,86.9 2 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:92.2,92.12 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:87.29,88.48 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:89.30,90.59 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:96.47,97.23 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:98.15,99.19 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:100.14,101.32 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:108.3,108.19 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:109.21,111.20 2 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:114.3,114.13 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:115.10,116.42 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:101.32,103.11 2 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:106.4,106.14 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:103.11,104.54 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:111.20,113.4 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:124.64,125.27 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:165.2,165.12 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:126.14,128.17 2 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:131.3,131.15 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:134.16,136.40 2 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:139.3,139.24 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:142.14,144.17 2 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:147.3,147.27 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:150.21,151.37 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:154.3,154.25 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:159.3,159.37 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:162.10,163.47 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:128.17,130.4 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:131.15,133.4 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:136.40,138.4 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:139.24,141.4 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:144.17,146.4 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:147.27,149.4 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:151.37,153.4 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:154.25,155.52 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:155.52,157.5 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:159.37,161.4 1 0 +github.com/ethereum/go-ethereum/tests/rlp_test_util.go:168.60,172.2 3 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:55.52,57.2 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:129.96,135.43 2 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:138.2,138.34 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:148.2,148.30 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:135.43,137.3 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:138.34,139.51 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:139.51,141.4 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:141.9,142.28 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:145.4,145.31 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:142.28,144.5 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:152.47,154.37 2 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:159.2,159.12 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:154.37,155.22 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:155.22,157.4 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:163.125,165.16 2 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:168.2,171.36 2 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:174.2,174.69 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:177.2,177.28 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:165.16,167.3 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:171.36,173.3 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:174.69,176.3 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:181.146,183.16 2 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:186.2,191.35 5 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:199.2,201.16 3 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:206.2,206.28 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:219.2,223.30 5 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:228.2,233.64 5 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:238.2,247.34 4 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:183.16,185.3 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:191.35,193.21 2 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:193.21,197.4 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:201.16,203.3 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:206.28,209.17 3 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:213.3,213.75 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:209.17,211.4 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:213.75,215.4 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:223.30,227.3 3 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:233.64,235.3 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:250.59,252.2 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:254.117,257.32 3 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:266.2,269.17 3 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:272.2,273.23 2 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:257.32,261.31 4 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:261.31,263.4 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:269.17,271.3 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:276.71,286.30 2 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:291.2,291.16 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:286.30,290.3 2 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:294.92,297.28 2 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:305.2,306.17 2 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:314.2,314.36 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:317.2,317.38 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:320.2,320.39 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:323.2,328.22 5 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:335.2,336.16 2 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:339.2,340.69 2 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:344.2,345.20 2 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:358.2,358.21 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:362.2,364.17 2 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:297.28,299.17 2 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:302.3,302.47 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:299.17,301.4 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:306.17,308.57 2 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:308.57,310.4 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:314.36,316.3 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:317.38,319.3 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:320.39,322.3 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:328.22,330.10 2 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:333.3,333.12 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:330.10,332.4 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:336.16,338.3 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:340.69,342.3 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:345.20,346.29 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:349.3,349.29 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:352.3,352.37 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:355.3,356.20 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:346.29,348.4 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:349.29,351.4 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:352.37,354.4 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:358.21,360.3 1 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:367.45,372.2 4 0 +github.com/ethereum/go-ethereum/tests/state_test_util.go:374.44,376.2 1 0 +github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:16.55,33.2 9 0 +github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:36.60,46.52 3 0 +github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:49.2,49.32 1 0 +github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:52.2,52.33 1 0 +github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:55.2,55.26 1 0 +github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:58.2,58.33 1 0 +github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:61.2,61.35 1 0 +github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:64.2,64.34 1 0 +github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:67.2,67.12 1 0 +github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:46.52,48.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:49.32,51.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:52.33,54.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:55.26,57.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:58.33,60.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:61.35,63.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:64.34,66.3 1 0 +github.com/ethereum/go-ethereum/tests/init.go:203.32,205.23 2 0 +github.com/ethereum/go-ethereum/tests/init.go:208.2,209.23 2 0 +github.com/ethereum/go-ethereum/tests/init.go:205.23,207.3 1 0 +github.com/ethereum/go-ethereum/tests/init.go:217.46,219.2 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:18.49,57.2 20 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:60.54,81.52 3 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:84.2,84.22 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:87.2,87.25 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:90.2,90.24 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:93.2,93.22 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:96.2,96.23 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:99.2,99.21 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:102.2,102.27 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:105.2,105.28 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:108.2,108.26 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:111.2,111.33 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:114.2,114.26 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:117.2,117.26 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:120.2,120.27 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:123.2,123.25 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:126.2,126.24 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:129.2,129.26 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:132.2,132.30 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:135.2,135.12 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:81.52,83.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:84.22,86.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:87.25,89.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:90.24,92.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:93.22,95.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:96.23,98.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:99.21,101.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:102.27,104.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:105.28,107.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:108.26,110.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:111.33,113.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:114.26,116.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:117.26,119.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:120.27,122.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:123.25,125.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:126.24,128.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:129.26,131.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_btheader.go:132.30,134.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_stenv.go:17.46,36.2 10 0 +github.com/ethereum/go-ethereum/tests/gen_stenv.go:39.51,50.52 3 0 +github.com/ethereum/go-ethereum/tests/gen_stenv.go:53.2,53.25 1 0 +github.com/ethereum/go-ethereum/tests/gen_stenv.go:56.2,57.27 2 0 +github.com/ethereum/go-ethereum/tests/gen_stenv.go:60.2,60.23 1 0 +github.com/ethereum/go-ethereum/tests/gen_stenv.go:63.2,63.25 1 0 +github.com/ethereum/go-ethereum/tests/gen_stenv.go:66.2,67.23 2 0 +github.com/ethereum/go-ethereum/tests/gen_stenv.go:70.2,71.26 2 0 +github.com/ethereum/go-ethereum/tests/gen_stenv.go:74.2,75.24 2 0 +github.com/ethereum/go-ethereum/tests/gen_stenv.go:78.2,78.12 1 0 +github.com/ethereum/go-ethereum/tests/gen_stenv.go:50.52,52.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_stenv.go:53.25,55.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_stenv.go:57.27,59.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_stenv.go:60.23,62.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_stenv.go:63.25,65.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_stenv.go:67.23,69.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_stenv.go:71.26,73.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_stenv.go:75.24,77.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:17.54,38.23 10 0 +github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:44.2,46.27 3 0 +github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:38.23,40.32 2 0 +github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:40.32,42.4 1 0 +github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:50.59,64.52 3 0 +github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:67.2,67.25 1 0 +github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:70.2,70.29 1 0 +github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:73.2,73.37 1 0 +github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:76.2,76.22 1 0 +github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:79.2,79.19 1 0 +github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:82.2,82.21 1 0 +github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:85.2,85.28 1 0 +github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:88.2,88.25 1 0 +github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:94.2,94.22 1 0 +github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:97.2,97.27 1 0 +github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:100.2,100.12 1 0 +github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:64.52,66.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:67.25,69.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:70.29,72.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:73.37,75.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:76.22,78.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:79.19,81.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:82.21,84.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:85.28,87.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:88.25,90.34 2 0 +github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:90.34,92.4 1 0 +github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:94.22,96.3 1 0 +github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:97.27,99.3 1 0 +github.com/ethereum/go-ethereum/tests/transaction_test_util.go:47.66,48.139 1 0 +github.com/ethereum/go-ethereum/tests/transaction_test_util.go:69.2,83.4 1 0 +github.com/ethereum/go-ethereum/tests/transaction_test_util.go:109.2,109.12 1 0 +github.com/ethereum/go-ethereum/tests/transaction_test_util.go:48.139,50.54 2 0 +github.com/ethereum/go-ethereum/tests/transaction_test_util.go:53.3,54.17 2 0 +github.com/ethereum/go-ethereum/tests/transaction_test_util.go:58.3,59.17 2 0 +github.com/ethereum/go-ethereum/tests/transaction_test_util.go:62.3,62.29 1 0 +github.com/ethereum/go-ethereum/tests/transaction_test_util.go:65.3,66.26 2 0 +github.com/ethereum/go-ethereum/tests/transaction_test_util.go:50.54,52.4 1 0 +github.com/ethereum/go-ethereum/tests/transaction_test_util.go:54.17,56.4 1 0 +github.com/ethereum/go-ethereum/tests/transaction_test_util.go:59.17,61.4 1 0 +github.com/ethereum/go-ethereum/tests/transaction_test_util.go:62.29,64.4 1 0 +github.com/ethereum/go-ethereum/tests/transaction_test_util.go:83.4,86.59 2 0 +github.com/ethereum/go-ethereum/tests/transaction_test_util.go:93.3,93.17 1 0 +github.com/ethereum/go-ethereum/tests/transaction_test_util.go:96.3,96.20 1 0 +github.com/ethereum/go-ethereum/tests/transaction_test_util.go:99.3,99.54 1 0 +github.com/ethereum/go-ethereum/tests/transaction_test_util.go:102.3,102.20 1 0 +github.com/ethereum/go-ethereum/tests/transaction_test_util.go:105.3,105.49 1 0 +github.com/ethereum/go-ethereum/tests/transaction_test_util.go:86.59,87.18 1 0 +github.com/ethereum/go-ethereum/tests/transaction_test_util.go:90.4,90.12 1 0 +github.com/ethereum/go-ethereum/tests/transaction_test_util.go:87.18,89.5 1 0 +github.com/ethereum/go-ethereum/tests/transaction_test_util.go:93.17,95.4 1 0 +github.com/ethereum/go-ethereum/tests/transaction_test_util.go:96.20,98.4 1 0 +github.com/ethereum/go-ethereum/tests/transaction_test_util.go:99.54,101.4 1 0 +github.com/ethereum/go-ethereum/tests/transaction_test_util.go:102.20,104.4 1 0 +github.com/ethereum/go-ethereum/tests/transaction_test_util.go:105.49,107.4 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:48.52,50.2 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:101.49,103.9 2 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:108.2,110.16 3 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:113.2,113.42 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:116.2,116.47 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:119.2,120.36 2 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:125.2,126.17 2 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:130.2,131.16 2 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:134.2,137.16 3 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:140.2,141.45 2 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:144.2,145.16 2 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:148.2,148.50 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:152.2,152.17 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:157.2,157.54 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:103.9,105.3 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:110.16,112.3 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:113.42,115.3 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:116.47,118.3 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:120.36,122.3 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:122.8,124.3 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:126.17,129.3 2 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:131.16,133.3 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:137.16,139.3 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:141.45,143.3 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:145.16,147.3 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:148.50,150.3 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:152.17,153.79 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:153.79,155.4 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:160.71,175.2 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:189.82,192.35 2 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:226.2,226.25 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:192.35,194.17 2 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:202.3,204.17 3 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:211.3,211.27 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:221.3,221.67 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:224.3,224.39 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:194.17,195.28 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:195.28,196.13 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:197.10,199.5 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:204.17,205.28 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:205.28,206.13 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:207.10,209.5 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:211.27,212.74 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:216.4,217.27 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:212.74,215.5 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:221.67,223.4 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:229.58,230.25 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:233.2,233.31 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:236.2,236.31 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:239.2,239.25 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:242.2,242.34 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:245.2,245.35 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:248.2,248.37 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:251.2,251.37 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:254.2,254.28 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:257.2,257.33 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:260.2,260.41 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:263.2,263.42 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:266.2,266.31 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:269.2,269.29 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:272.2,272.28 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:275.2,275.12 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:230.25,232.3 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:233.31,235.3 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:236.31,238.3 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:239.25,241.3 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:242.34,244.3 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:245.35,247.3 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:248.37,250.3 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:251.37,253.3 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:254.28,256.3 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:257.33,259.3 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:260.41,262.3 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:263.42,265.3 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:266.31,268.3 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:269.29,271.3 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:272.28,274.3 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:278.69,280.38 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:295.2,295.12 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:280.38,285.37 4 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:288.3,288.38 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:291.3,291.27 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:285.37,287.4 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:288.38,290.4 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:291.27,293.4 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:298.95,301.32 2 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:309.2,309.107 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:314.2,314.12 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:301.32,303.3 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:309.107,310.80 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:310.80,312.4 1 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:317.51,319.16 2 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:322.2,324.16 3 0 +github.com/ethereum/go-ethereum/tests/block_test_util.go:319.16,321.3 1 0 +github.com/ethereum/go-ethereum/tests/difficulty_test_util.go:50.67,62.26 5 0 +github.com/ethereum/go-ethereum/tests/difficulty_test_util.go:67.2,67.12 1 0 +github.com/ethereum/go-ethereum/tests/difficulty_test_util.go:62.26,66.3 1 0 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:50.81,51.55 1 0 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:63.2,63.19 1 0 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:51.55,53.17 2 0 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:61.3,61.19 1 0 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:53.17,56.69 1 0 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:59.4,59.14 1 0 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:56.69,58.5 1 0 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:66.72,67.56 1 0 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:79.2,79.14 1 0 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:67.56,70.17 3 0 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:73.3,74.37 2 0 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:77.3,77.14 1 0 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:70.17,71.14 1 0 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:74.37,75.87 1 0 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:87.95,89.28 2 1 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:92.2,92.20 1 1 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:95.2,95.21 1 1 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:113.2,115.41 2 1 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:89.28,91.3 1 1 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:92.20,94.3 1 1 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:95.21,97.30 2 1 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:103.3,105.30 3 1 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:111.3,111.15 1 1 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:97.30,99.25 2 1 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:99.25,101.5 1 1 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:105.30,107.25 2 1 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:107.25,109.5 1 1 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:118.34,126.30 7 1 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:150.2,150.10 1 1 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:153.2,153.10 1 1 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:126.30,128.26 2 1 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:142.3,143.17 2 1 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:146.3,148.24 3 0 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:128.26,131.31 3 1 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:137.4,140.6 1 1 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:131.31,133.5 1 1 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:133.10,133.38 1 1 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:133.38,136.5 2 1 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:143.17,144.12 1 1 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:150.10,152.3 1 0 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:156.29,158.2 1 0 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:160.39,163.11 3 1 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:169.2,169.10 1 1 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:163.11,165.12 2 1 +github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:165.12,167.4 1 1 +github.com/ethereum/go-ethereum/tests/fuzzers/secp256k1/secp_fuzzer.go:29.29,45.52 8 1 +github.com/ethereum/go-ethereum/tests/fuzzers/secp256k1/secp_fuzzer.go:49.2,49.10 1 1 +github.com/ethereum/go-ethereum/tests/fuzzers/secp256k1/secp_fuzzer.go:45.52,47.93 2 0 +github.com/ethereum/go-ethereum/les/client.go:86.78,88.16 2 0 +github.com/ethereum/go-ethereum/les/client.go:91.2,92.16 2 0 +github.com/ethereum/go-ethereum/les/client.go:95.2,96.91 2 0 +github.com/ethereum/go-ethereum/les/client.go:99.2,128.21 6 0 +github.com/ethereum/go-ethereum/les/client.go:131.2,143.23 10 0 +github.com/ethereum/go-ethereum/les/client.go:148.2,148.113 1 0 +github.com/ethereum/go-ethereum/les/client.go:151.2,166.62 8 0 +github.com/ethereum/go-ethereum/les/client.go:172.2,174.30 3 0 +github.com/ethereum/go-ethereum/les/client.go:177.2,180.29 3 0 +github.com/ethereum/go-ethereum/les/client.go:185.2,195.18 6 0 +github.com/ethereum/go-ethereum/les/client.go:88.16,90.3 1 0 +github.com/ethereum/go-ethereum/les/client.go:92.16,94.3 1 0 +github.com/ethereum/go-ethereum/les/client.go:96.91,98.3 1 0 +github.com/ethereum/go-ethereum/les/client.go:128.21,130.3 1 0 +github.com/ethereum/go-ethereum/les/client.go:143.23,145.3 1 0 +github.com/ethereum/go-ethereum/les/client.go:148.113,150.3 1 0 +github.com/ethereum/go-ethereum/les/client.go:166.62,170.3 3 0 +github.com/ethereum/go-ethereum/les/client.go:174.30,176.3 1 0 +github.com/ethereum/go-ethereum/les/client.go:180.29,183.3 2 0 +github.com/ethereum/go-ethereum/les/client.go:199.88,200.19 1 0 +github.com/ethereum/go-ethereum/les/client.go:203.2,206.74 4 0 +github.com/ethereum/go-ethereum/les/client.go:209.2,209.16 1 0 +github.com/ethereum/go-ethereum/les/client.go:200.19,202.3 1 0 +github.com/ethereum/go-ethereum/les/client.go:206.74,208.3 1 0 +github.com/ethereum/go-ethereum/les/client.go:214.56,215.18 1 0 +github.com/ethereum/go-ethereum/les/client.go:227.2,228.75 2 0 +github.com/ethereum/go-ethereum/les/client.go:231.2,233.16 3 0 +github.com/ethereum/go-ethereum/les/client.go:215.18,217.20 2 0 +github.com/ethereum/go-ethereum/les/client.go:220.3,220.88 1 0 +github.com/ethereum/go-ethereum/les/client.go:217.20,219.4 1 0 +github.com/ethereum/go-ethereum/les/client.go:220.88,222.4 1 0 +github.com/ethereum/go-ethereum/les/client.go:222.9,224.4 1 0 +github.com/ethereum/go-ethereum/les/client.go:228.75,230.3 1 0 +github.com/ethereum/go-ethereum/les/client.go:238.56,239.25 1 0 +github.com/ethereum/go-ethereum/les/client.go:244.2,251.50 5 0 +github.com/ethereum/go-ethereum/les/client.go:254.2,254.16 1 0 +github.com/ethereum/go-ethereum/les/client.go:257.2,257.10 1 0 +github.com/ethereum/go-ethereum/les/client.go:239.25,242.3 1 0 +github.com/ethereum/go-ethereum/les/client.go:251.50,253.3 1 0 +github.com/ethereum/go-ethereum/les/client.go:254.16,256.3 1 0 +github.com/ethereum/go-ethereum/les/client.go:263.61,265.2 1 0 +github.com/ethereum/go-ethereum/les/client.go:268.60,270.2 1 0 +github.com/ethereum/go-ethereum/les/client.go:273.49,275.2 1 0 +github.com/ethereum/go-ethereum/les/client.go:278.39,280.2 1 0 +github.com/ethereum/go-ethereum/les/client.go:284.42,320.2 3 0 +github.com/ethereum/go-ethereum/les/client.go:322.64,324.2 1 0 +github.com/ethereum/go-ethereum/les/client.go:326.61,326.84 1 0 +github.com/ethereum/go-ethereum/les/client.go:327.61,327.80 1 0 +github.com/ethereum/go-ethereum/les/client.go:328.61,328.80 1 0 +github.com/ethereum/go-ethereum/les/client.go:329.61,329.102 1 0 +github.com/ethereum/go-ethereum/les/client.go:330.61,330.92 1 0 +github.com/ethereum/go-ethereum/les/client.go:331.61,331.82 1 0 +github.com/ethereum/go-ethereum/les/client.go:332.61,332.80 1 0 +github.com/ethereum/go-ethereum/les/client.go:335.52,336.98 1 0 +github.com/ethereum/go-ethereum/les/client.go:336.98,337.47 1 0 +github.com/ethereum/go-ethereum/les/client.go:340.3,340.13 1 0 +github.com/ethereum/go-ethereum/les/client.go:337.47,339.4 1 0 +github.com/ethereum/go-ethereum/les/client.go:346.39,352.47 3 0 +github.com/ethereum/go-ethereum/les/client.go:356.2,357.16 2 0 +github.com/ethereum/go-ethereum/les/client.go:360.2,367.12 6 0 +github.com/ethereum/go-ethereum/les/client.go:352.47,355.3 2 0 +github.com/ethereum/go-ethereum/les/client.go:357.16,359.3 1 0 +github.com/ethereum/go-ethereum/les/client.go:372.38,395.2 20 0 +github.com/ethereum/go-ethereum/les/metrics.go:122.79,123.22 1 0 +github.com/ethereum/go-ethereum/les/metrics.go:126.2,126.67 1 0 +github.com/ethereum/go-ethereum/les/metrics.go:123.22,125.3 1 0 +github.com/ethereum/go-ethereum/les/metrics.go:129.60,132.16 2 0 +github.com/ethereum/go-ethereum/les/metrics.go:136.2,140.17 4 0 +github.com/ethereum/go-ethereum/les/metrics.go:132.16,134.3 1 0 +github.com/ethereum/go-ethereum/les/metrics.go:143.61,151.2 4 0 +github.com/ethereum/go-ethereum/les/test_helper.go:109.57,114.25 2 1 +github.com/ethereum/go-ethereum/les/test_helper.go:114.25,115.12 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:178.3,178.19 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:116.10,128.36 5 1 +github.com/ethereum/go-ethereum/les/test_helper.go:129.10,152.37 11 1 +github.com/ethereum/go-ethereum/les/test_helper.go:153.10,166.37 6 1 +github.com/ethereum/go-ethereum/les/test_helper.go:167.10,176.36 4 1 +github.com/ethereum/go-ethereum/les/test_helper.go:183.131,191.2 6 1 +github.com/ethereum/go-ethereum/les/test_helper.go:193.211,207.21 4 1 +github.com/ethereum/go-ethereum/les/test_helper.go:225.2,247.26 3 1 +github.com/ethereum/go-ethereum/les/test_helper.go:250.2,251.32 2 1 +github.com/ethereum/go-ethereum/les/test_helper.go:207.21,213.59 2 1 +github.com/ethereum/go-ethereum/les/test_helper.go:223.3,223.60 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:213.59,222.4 3 0 +github.com/ethereum/go-ethereum/les/test_helper.go:247.26,249.3 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:251.32,253.3 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:256.162,275.21 8 1 +github.com/ethereum/go-ethereum/les/test_helper.go:293.2,317.93 7 1 +github.com/ethereum/go-ethereum/les/test_helper.go:318.2,318.26 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:321.2,323.19 3 1 +github.com/ethereum/go-ethereum/les/test_helper.go:324.2,324.43 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:275.21,281.59 2 1 +github.com/ethereum/go-ethereum/les/test_helper.go:291.3,291.60 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:281.59,290.4 3 1 +github.com/ethereum/go-ethereum/les/test_helper.go:317.93,317.108 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:318.26,320.3 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:323.19,323.36 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:327.26,329.2 1 0 +github.com/ethereum/go-ethereum/les/test_helper.go:341.140,343.20 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:346.2,353.29 8 1 +github.com/ethereum/go-ethereum/les/test_helper.go:356.2,356.61 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:359.2,359.62 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:343.20,345.3 1 0 +github.com/ethereum/go-ethereum/les/test_helper.go:353.29,355.3 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:356.61,358.3 1 0 +github.com/ethereum/go-ethereum/les/test_helper.go:359.62,361.3 1 0 +github.com/ethereum/go-ethereum/les/test_helper.go:365.189,367.20 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:370.2,385.29 16 1 +github.com/ethereum/go-ethereum/les/test_helper.go:389.2,389.61 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:392.2,392.62 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:367.20,369.3 1 0 +github.com/ethereum/go-ethereum/les/test_helper.go:385.29,388.3 2 1 +github.com/ethereum/go-ethereum/les/test_helper.go:389.61,391.3 1 0 +github.com/ethereum/go-ethereum/les/test_helper.go:392.62,394.3 1 0 +github.com/ethereum/go-ethereum/les/test_helper.go:399.28,401.2 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:403.145,417.12 8 1 +github.com/ethereum/go-ethereum/les/test_helper.go:424.2,424.12 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:432.2,432.6 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:445.2,445.102 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:417.12,418.10 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:419.25,420.29 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:421.38,421.38 0 1 +github.com/ethereum/go-ethereum/les/test_helper.go:424.12,425.10 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:426.25,427.29 1 0 +github.com/ethereum/go-ethereum/les/test_helper.go:428.54,428.54 0 1 +github.com/ethereum/go-ethereum/les/test_helper.go:432.6,433.10 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:440.3,440.87 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:443.3,443.36 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:434.23,435.82 1 0 +github.com/ethereum/go-ethereum/les/test_helper.go:436.23,437.82 1 0 +github.com/ethereum/go-ethereum/les/test_helper.go:438.11,438.11 0 1 +github.com/ethereum/go-ethereum/les/test_helper.go:440.87,441.9 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:463.135,474.12 6 1 +github.com/ethereum/go-ethereum/les/test_helper.go:481.2,495.6 5 1 +github.com/ethereum/go-ethereum/les/test_helper.go:506.2,506.22 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:510.2,510.29 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:474.12,475.10 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:476.33,477.29 1 0 +github.com/ethereum/go-ethereum/les/test_helper.go:478.52,478.52 0 1 +github.com/ethereum/go-ethereum/les/test_helper.go:495.6,496.10 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:501.3,501.44 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:504.3,504.36 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:497.16,498.24 1 0 +github.com/ethereum/go-ethereum/les/test_helper.go:499.11,499.11 0 1 +github.com/ethereum/go-ethereum/les/test_helper.go:501.44,502.9 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:506.22,509.3 2 1 +github.com/ethereum/go-ethereum/les/test_helper.go:527.112,538.12 6 1 +github.com/ethereum/go-ethereum/les/test_helper.go:545.2,559.6 5 1 +github.com/ethereum/go-ethereum/les/test_helper.go:570.2,570.22 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:574.2,574.29 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:538.12,539.10 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:540.33,541.29 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:542.45,542.45 0 1 +github.com/ethereum/go-ethereum/les/test_helper.go:559.6,560.10 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:565.3,565.44 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:568.3,568.36 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:561.16,562.24 1 0 +github.com/ethereum/go-ethereum/les/test_helper.go:563.11,563.11 0 1 +github.com/ethereum/go-ethereum/les/test_helper.go:565.44,566.9 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:570.22,573.3 2 1 +github.com/ethereum/go-ethereum/les/test_helper.go:589.96,596.21 3 1 +github.com/ethereum/go-ethereum/les/test_helper.go:599.2,600.62 2 1 +github.com/ethereum/go-ethereum/les/test_helper.go:601.2,618.27 13 1 +github.com/ethereum/go-ethereum/les/test_helper.go:621.2,625.20 2 1 +github.com/ethereum/go-ethereum/les/test_helper.go:638.2,657.21 3 1 +github.com/ethereum/go-ethereum/les/test_helper.go:673.2,673.23 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:596.21,598.3 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:600.62,600.95 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:618.27,620.3 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:625.20,627.42 2 1 +github.com/ethereum/go-ethereum/les/test_helper.go:628.3,629.17 2 1 +github.com/ethereum/go-ethereum/les/test_helper.go:632.3,632.10 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:627.42,627.57 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:629.17,631.4 1 0 +github.com/ethereum/go-ethereum/les/test_helper.go:633.15,633.15 0 1 +github.com/ethereum/go-ethereum/les/test_helper.go:634.39,635.59 1 0 +github.com/ethereum/go-ethereum/les/test_helper.go:657.21,658.21 1 1 +github.com/ethereum/go-ethereum/les/test_helper.go:664.3,671.16 8 1 +github.com/ethereum/go-ethereum/les/test_helper.go:658.21,663.4 4 1 +github.com/ethereum/go-ethereum/les/test_helper.go:679.64,681.19 2 0 +github.com/ethereum/go-ethereum/les/test_helper.go:681.19,681.44 1 0 +github.com/ethereum/go-ethereum/les/state_accessor.go:32.121,34.2 1 0 +github.com/ethereum/go-ethereum/les/state_accessor.go:37.171,39.28 1 0 +github.com/ethereum/go-ethereum/les/state_accessor.go:43.2,44.16 2 0 +github.com/ethereum/go-ethereum/les/state_accessor.go:47.2,48.16 2 0 +github.com/ethereum/go-ethereum/les/state_accessor.go:51.2,51.52 1 0 +github.com/ethereum/go-ethereum/les/state_accessor.go:55.2,56.44 2 0 +github.com/ethereum/go-ethereum/les/state_accessor.go:74.2,74.122 1 0 +github.com/ethereum/go-ethereum/les/state_accessor.go:39.28,41.3 1 0 +github.com/ethereum/go-ethereum/les/state_accessor.go:44.16,46.3 1 0 +github.com/ethereum/go-ethereum/les/state_accessor.go:48.16,50.3 1 0 +github.com/ethereum/go-ethereum/les/state_accessor.go:51.52,53.3 1 0 +github.com/ethereum/go-ethereum/les/state_accessor.go:56.44,62.21 5 0 +github.com/ethereum/go-ethereum/les/state_accessor.go:66.3,67.94 2 0 +github.com/ethereum/go-ethereum/les/state_accessor.go:72.3,72.65 1 0 +github.com/ethereum/go-ethereum/les/state_accessor.go:62.21,64.4 1 0 +github.com/ethereum/go-ethereum/les/state_accessor.go:67.94,69.4 1 0 +github.com/ethereum/go-ethereum/les/bor_api_backend.go:12.113,14.2 1 0 +github.com/ethereum/go-ethereum/les/bor_api_backend.go:17.99,19.2 1 0 +github.com/ethereum/go-ethereum/les/bor_api_backend.go:22.101,24.2 1 0 +github.com/ethereum/go-ethereum/les/enr_entry.go:33.33,33.49 1 0 +github.com/ethereum/go-ethereum/les/enr_entry.go:41.33,41.49 1 0 +github.com/ethereum/go-ethereum/les/enr_entry.go:44.68,48.43 2 0 +github.com/ethereum/go-ethereum/les/enr_entry.go:58.2,58.20 1 0 +github.com/ethereum/go-ethereum/les/enr_entry.go:62.2,63.56 2 0 +github.com/ethereum/go-ethereum/les/enr_entry.go:64.2,64.22 1 0 +github.com/ethereum/go-ethereum/les/enr_entry.go:48.43,51.17 3 0 +github.com/ethereum/go-ethereum/les/enr_entry.go:54.3,54.20 1 0 +github.com/ethereum/go-ethereum/les/enr_entry.go:51.17,53.4 1 0 +github.com/ethereum/go-ethereum/les/enr_entry.go:58.20,60.3 1 0 +github.com/ethereum/go-ethereum/les/enr_entry.go:63.56,63.94 1 0 +github.com/ethereum/go-ethereum/les/enr_entry.go:68.65,72.2 3 0 +github.com/ethereum/go-ethereum/les/txrelay.go:40.79,49.2 3 0 +github.com/ethereum/go-ethereum/les/txrelay.go:51.32,53.2 1 0 +github.com/ethereum/go-ethereum/les/txrelay.go:55.53,60.20 3 0 +github.com/ethereum/go-ethereum/les/txrelay.go:63.2,63.42 1 0 +github.com/ethereum/go-ethereum/les/txrelay.go:60.20,62.3 1 0 +github.com/ethereum/go-ethereum/les/txrelay.go:66.55,70.37 3 0 +github.com/ethereum/go-ethereum/les/txrelay.go:70.37,71.16 1 0 +github.com/ethereum/go-ethereum/les/txrelay.go:71.16,75.4 2 0 +github.com/ethereum/go-ethereum/les/txrelay.go:80.65,84.45 3 0 +github.com/ethereum/go-ethereum/les/txrelay.go:88.2,88.25 1 0 +github.com/ethereum/go-ethereum/les/txrelay.go:116.2,116.30 1 0 +github.com/ethereum/go-ethereum/les/txrelay.go:84.45,86.3 1 0 +github.com/ethereum/go-ethereum/les/txrelay.go:88.25,91.10 3 0 +github.com/ethereum/go-ethereum/les/txrelay.go:95.3,95.29 1 0 +github.com/ethereum/go-ethereum/les/txrelay.go:91.10,94.4 2 0 +github.com/ethereum/go-ethereum/les/txrelay.go:95.29,98.8 3 0 +github.com/ethereum/go-ethereum/les/txrelay.go:98.8,102.17 4 0 +github.com/ethereum/go-ethereum/les/txrelay.go:105.5,106.34 2 0 +github.com/ethereum/go-ethereum/les/txrelay.go:109.5,109.33 1 0 +github.com/ethereum/go-ethereum/les/txrelay.go:102.17,103.11 1 0 +github.com/ethereum/go-ethereum/les/txrelay.go:106.34,108.6 1 0 +github.com/ethereum/go-ethereum/les/txrelay.go:109.33,110.11 1 0 +github.com/ethereum/go-ethereum/les/txrelay.go:116.30,123.38 5 0 +github.com/ethereum/go-ethereum/les/txrelay.go:137.3,137.96 1 0 +github.com/ethereum/go-ethereum/les/txrelay.go:123.38,126.5 2 0 +github.com/ethereum/go-ethereum/les/txrelay.go:127.36,129.5 1 0 +github.com/ethereum/go-ethereum/les/txrelay.go:130.38,134.19 4 0 +github.com/ethereum/go-ethereum/les/txrelay.go:134.19,134.56 1 0 +github.com/ethereum/go-ethereum/les/txrelay.go:137.96,137.110 1 0 +github.com/ethereum/go-ethereum/les/txrelay.go:141.54,146.2 3 0 +github.com/ethereum/go-ethereum/les/txrelay.go:148.96,152.29 3 0 +github.com/ethereum/go-ethereum/les/txrelay.go:156.2,156.32 1 0 +github.com/ethereum/go-ethereum/les/txrelay.go:160.2,160.29 1 0 +github.com/ethereum/go-ethereum/les/txrelay.go:152.29,154.3 1 0 +github.com/ethereum/go-ethereum/les/txrelay.go:156.32,158.3 1 0 +github.com/ethereum/go-ethereum/les/txrelay.go:160.29,163.36 3 0 +github.com/ethereum/go-ethereum/les/txrelay.go:167.3,167.20 1 0 +github.com/ethereum/go-ethereum/les/txrelay.go:163.36,166.4 2 0 +github.com/ethereum/go-ethereum/les/txrelay.go:171.55,175.30 3 0 +github.com/ethereum/go-ethereum/les/txrelay.go:175.30,178.3 2 0 +github.com/ethereum/go-ethereum/les/api_backend.go:50.59,52.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:54.53,56.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:58.48,61.2 2 0 +github.com/ethereum/go-ethereum/les/api_backend.go:63.108,67.38 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:70.2,70.37 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:73.2,73.67 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:67.38,69.3 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:70.37,72.3 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:76.127,77.47 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:80.2,80.42 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:93.2,93.79 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:77.47,79.3 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:80.42,82.17 2 0 +github.com/ethereum/go-ethereum/les/api_backend.go:85.3,85.20 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:88.3,88.106 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:91.3,91.21 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:82.17,84.4 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:85.20,87.4 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:88.106,90.4 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:96.100,98.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:100.106,102.33 2 0 +github.com/ethereum/go-ethereum/les/api_backend.go:105.2,105.42 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:102.33,104.3 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:108.98,110.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:112.125,113.47 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:116.2,116.42 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:129.2,129.79 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:113.47,115.3 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:116.42,118.17 2 0 +github.com/ethereum/go-ethereum/les/api_backend.go:121.3,121.19 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:124.3,124.101 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:127.3,127.20 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:118.17,120.4 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:121.19,123.4 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:124.101,126.4 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:132.82,134.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:136.132,138.16 2 0 +github.com/ethereum/go-ethereum/les/api_backend.go:141.2,141.19 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:144.2,144.60 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:138.16,140.3 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:141.19,143.3 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:147.151,148.47 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:151.2,151.42 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:161.2,161.84 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:148.47,150.3 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:151.42,153.20 2 0 +github.com/ethereum/go-ethereum/les/api_backend.go:156.3,156.106 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:159.3,159.61 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:153.20,155.4 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:156.106,158.4 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:164.100,165.74 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:168.2,168.17 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:165.74,167.3 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:171.96,172.74 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:175.2,175.17 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:172.74,174.3 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:178.79,179.74 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:182.2,182.12 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:179.74,181.3 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:185.167,186.21 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:189.2,191.93 3 0 +github.com/ethereum/go-ethereum/les/api_backend.go:186.21,188.3 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:194.88,196.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:198.54,200.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:202.75,204.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:206.83,208.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:210.138,212.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:214.96,216.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:218.59,220.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:222.120,224.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:226.105,228.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:230.93,232.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:234.91,236.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:238.99,240.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:242.99,244.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:246.87,248.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:250.94,251.64 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:251.64,254.3 2 0 +github.com/ethereum/go-ethereum/les/api_backend.go:257.103,259.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:261.62,263.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:265.47,267.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:269.81,271.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:273.227,275.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:277.50,279.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:281.60,283.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:285.46,287.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:289.51,291.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:293.44,295.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:297.55,299.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:301.47,303.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:305.56,306.31 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:309.2,310.47 2 0 +github.com/ethereum/go-ethereum/les/api_backend.go:306.31,308.3 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:313.95,314.42 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:314.42,316.3 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:319.51,321.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:323.55,325.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:327.172,329.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:331.168,333.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:339.107,341.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:343.102,345.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:347.146,349.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:351.182,353.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:355.73,357.2 1 0 +github.com/ethereum/go-ethereum/les/api_backend.go:359.53,360.2 0 0 +github.com/ethereum/go-ethereum/les/benchmark.go:56.73,60.19 4 0 +github.com/ethereum/go-ethereum/les/benchmark.go:63.2,63.15 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:66.2,66.14 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:72.2,72.12 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:60.19,62.3 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:63.15,65.3 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:66.14,68.27 2 0 +github.com/ethereum/go-ethereum/les/benchmark.go:68.27,70.4 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:75.76,76.14 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:79.2,79.109 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:76.14,78.3 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:88.77,91.26 3 0 +github.com/ethereum/go-ethereum/les/benchmark.go:94.2,94.12 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:91.26,93.3 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:97.80,98.16 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:101.2,101.62 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:98.16,100.3 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:110.73,113.2 2 0 +github.com/ethereum/go-ethereum/les/benchmark.go:115.76,118.12 3 0 +github.com/ethereum/go-ethereum/les/benchmark.go:121.2,121.73 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:118.12,120.3 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:131.71,132.13 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:138.2,138.25 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:141.2,141.12 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:132.13,134.3 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:134.8,137.3 2 0 +github.com/ethereum/go-ethereum/les/benchmark.go:138.25,140.3 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:144.74,147.13 2 0 +github.com/ethereum/go-ethereum/les/benchmark.go:163.2,163.46 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:147.13,149.23 2 0 +github.com/ethereum/go-ethereum/les/benchmark.go:149.23,154.4 4 0 +github.com/ethereum/go-ethereum/les/benchmark.go:155.8,156.23 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:156.23,160.4 3 0 +github.com/ethereum/go-ethereum/les/benchmark.go:171.67,177.23 5 0 +github.com/ethereum/go-ethereum/les/benchmark.go:186.2,186.12 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:177.23,181.17 4 0 +github.com/ethereum/go-ethereum/les/benchmark.go:184.3,184.16 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:181.17,182.14 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:189.70,192.2 2 0 +github.com/ethereum/go-ethereum/les/benchmark.go:197.69,199.2 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:201.72,205.2 3 0 +github.com/ethereum/go-ethereum/les/benchmark.go:218.128,220.31 2 0 +github.com/ethereum/go-ethereum/les/benchmark.go:223.2,223.33 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:246.2,248.26 2 0 +github.com/ethereum/go-ethereum/les/benchmark.go:253.2,253.14 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:220.31,222.3 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:223.33,227.21 4 0 +github.com/ethereum/go-ethereum/les/benchmark.go:227.21,234.23 5 0 +github.com/ethereum/go-ethereum/les/benchmark.go:234.23,237.27 2 0 +github.com/ethereum/go-ethereum/les/benchmark.go:240.5,240.50 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:237.27,239.6 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:240.50,242.6 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:248.26,249.19 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:249.19,251.4 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:263.50,265.2 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:267.51,268.26 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:271.2,271.27 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:268.26,270.3 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:276.73,288.29 11 0 +github.com/ethereum/go-ethereum/les/benchmark.go:291.2,295.49 4 0 +github.com/ethereum/go-ethereum/les/benchmark.go:299.2,302.12 3 0 +github.com/ethereum/go-ethereum/les/benchmark.go:310.2,310.12 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:318.2,318.12 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:332.2,332.9 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:343.2,349.12 7 0 +github.com/ethereum/go-ethereum/les/benchmark.go:288.29,290.3 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:295.49,297.3 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:302.12,303.30 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:303.30,304.54 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:304.54,307.5 2 0 +github.com/ethereum/go-ethereum/les/benchmark.go:310.12,311.30 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:311.30,312.64 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:312.64,315.5 2 0 +github.com/ethereum/go-ethereum/les/benchmark.go:318.12,319.30 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:330.3,330.15 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:319.30,321.18 2 0 +github.com/ethereum/go-ethereum/les/benchmark.go:325.4,326.18 2 0 +github.com/ethereum/go-ethereum/les/benchmark.go:321.18,324.5 2 0 +github.com/ethereum/go-ethereum/les/benchmark.go:333.22,334.17 1 0 +github.com/ethereum/go-ethereum/les/benchmark.go:337.19,340.43 3 0 +github.com/ethereum/go-ethereum/les/benchmark.go:334.17,336.4 1 0 +github.com/ethereum/go-ethereum/les/odr.go:41.122,49.2 1 1 +github.com/ethereum/go-ethereum/les/odr.go:52.27,54.2 1 0 +github.com/ethereum/go-ethereum/les/odr.go:57.46,59.2 1 1 +github.com/ethereum/go-ethereum/les/odr.go:62.95,66.2 3 1 +github.com/ethereum/go-ethereum/les/odr.go:69.52,71.2 1 1 +github.com/ethereum/go-ethereum/les/odr.go:74.58,76.2 1 1 +github.com/ethereum/go-ethereum/les/odr.go:79.54,81.2 1 1 +github.com/ethereum/go-ethereum/les/odr.go:84.57,86.2 1 1 +github.com/ethereum/go-ethereum/les/odr.go:109.36,109.53 1 1 +github.com/ethereum/go-ethereum/les/odr.go:110.46,111.40 1 1 +github.com/ethereum/go-ethereum/les/odr.go:114.2,114.40 1 1 +github.com/ethereum/go-ethereum/les/odr.go:117.2,117.40 1 1 +github.com/ethereum/go-ethereum/les/odr.go:111.40,113.3 1 1 +github.com/ethereum/go-ethereum/les/odr.go:114.40,116.3 1 0 +github.com/ethereum/go-ethereum/les/odr.go:119.41,119.68 1 1 +github.com/ethereum/go-ethereum/les/odr.go:132.92,142.44 2 1 +github.com/ethereum/go-ethereum/les/odr.go:148.2,149.63 2 1 +github.com/ethereum/go-ethereum/les/odr.go:153.2,153.6 1 1 +github.com/ethereum/go-ethereum/les/odr.go:193.2,194.12 2 1 +github.com/ethereum/go-ethereum/les/odr.go:142.44,143.40 1 1 +github.com/ethereum/go-ethereum/les/odr.go:146.3,146.30 1 1 +github.com/ethereum/go-ethereum/les/odr.go:143.40,144.12 1 0 +github.com/ethereum/go-ethereum/les/odr.go:149.63,151.3 1 1 +github.com/ethereum/go-ethereum/les/odr.go:153.6,154.55 1 1 +github.com/ethereum/go-ethereum/les/odr.go:157.3,162.39 1 1 +github.com/ethereum/go-ethereum/les/odr.go:172.3,172.87 1 1 +github.com/ethereum/go-ethereum/les/odr.go:178.3,178.41 1 1 +github.com/ethereum/go-ethereum/les/odr.go:188.3,188.19 1 1 +github.com/ethereum/go-ethereum/les/odr.go:191.3,191.15 1 1 +github.com/ethereum/go-ethereum/les/odr.go:154.55,155.9 1 1 +github.com/ethereum/go-ethereum/les/odr.go:162.39,162.79 1 1 +github.com/ethereum/go-ethereum/les/odr.go:163.37,163.76 1 1 +github.com/ethereum/go-ethereum/les/odr.go:164.39,168.20 4 1 +github.com/ethereum/go-ethereum/les/odr.go:168.20,168.42 1 1 +github.com/ethereum/go-ethereum/les/odr.go:172.87,172.123 1 1 +github.com/ethereum/go-ethereum/les/odr.go:172.147,174.4 1 0 +github.com/ethereum/go-ethereum/les/odr.go:178.41,179.52 1 1 +github.com/ethereum/go-ethereum/les/odr.go:182.4,182.45 1 1 +github.com/ethereum/go-ethereum/les/odr.go:185.4,185.46 1 1 +github.com/ethereum/go-ethereum/les/odr.go:179.52,180.13 1 1 +github.com/ethereum/go-ethereum/les/odr.go:182.45,183.13 1 1 +github.com/ethereum/go-ethereum/les/odr.go:188.19,189.9 1 1 +github.com/ethereum/go-ethereum/les/odr.go:201.84,206.37 3 1 +github.com/ethereum/go-ethereum/les/odr.go:224.2,224.34 1 1 +github.com/ethereum/go-ethereum/les/odr.go:231.2,231.84 1 1 +github.com/ethereum/go-ethereum/les/odr.go:234.2,235.12 2 1 +github.com/ethereum/go-ethereum/les/odr.go:206.37,208.4 1 1 +github.com/ethereum/go-ethereum/les/odr.go:209.35,211.23 2 1 +github.com/ethereum/go-ethereum/les/odr.go:214.4,214.16 1 0 +github.com/ethereum/go-ethereum/les/odr.go:211.23,213.5 1 1 +github.com/ethereum/go-ethereum/les/odr.go:216.37,220.18 4 1 +github.com/ethereum/go-ethereum/les/odr.go:220.18,220.44 1 1 +github.com/ethereum/go-ethereum/les/odr.go:224.34,225.17 1 1 +github.com/ethereum/go-ethereum/les/odr.go:228.3,228.56 1 1 +github.com/ethereum/go-ethereum/les/odr.go:225.17,227.4 1 1 +github.com/ethereum/go-ethereum/les/odr.go:231.84,231.121 1 1 +github.com/ethereum/go-ethereum/les/odr.go:231.145,233.3 1 1 +github.com/ethereum/go-ethereum/les/server.go:79.96,81.16 2 0 +github.com/ethereum/go-ethereum/les/server.go:86.2,87.17 2 0 +github.com/ethereum/go-ethereum/les/server.go:90.2,114.29 3 0 +github.com/ethereum/go-ethereum/les/server.go:117.2,136.37 8 0 +github.com/ethereum/go-ethereum/les/server.go:139.2,146.25 7 0 +github.com/ethereum/go-ethereum/les/server.go:150.2,155.17 5 0 +github.com/ethereum/go-ethereum/les/server.go:81.16,83.3 1 0 +github.com/ethereum/go-ethereum/les/server.go:87.17,89.3 1 0 +github.com/ethereum/go-ethereum/les/server.go:114.29,115.24 1 0 +github.com/ethereum/go-ethereum/les/server.go:115.24,115.39 1 0 +github.com/ethereum/go-ethereum/les/server.go:136.37,138.3 1 0 +github.com/ethereum/go-ethereum/les/server.go:146.25,149.3 1 0 +github.com/ethereum/go-ethereum/les/server.go:158.38,179.2 1 0 +github.com/ethereum/go-ethereum/les/server.go:181.48,182.97 1 0 +github.com/ethereum/go-ethereum/les/server.go:189.2,189.20 1 0 +github.com/ethereum/go-ethereum/les/server.go:194.2,194.11 1 0 +github.com/ethereum/go-ethereum/les/server.go:182.97,183.38 1 0 +github.com/ethereum/go-ethereum/les/server.go:186.3,186.13 1 0 +github.com/ethereum/go-ethereum/les/server.go:183.38,185.4 1 0 +github.com/ethereum/go-ethereum/les/server.go:189.20,193.3 1 0 +github.com/ethereum/go-ethereum/les/server.go:198.35,204.28 6 0 +github.com/ethereum/go-ethereum/les/server.go:207.2,207.12 1 0 +github.com/ethereum/go-ethereum/les/server.go:204.28,206.3 1 0 +github.com/ethereum/go-ethereum/les/server.go:211.34,215.24 3 1 +github.com/ethereum/go-ethereum/les/server.go:218.2,223.26 6 1 +github.com/ethereum/go-ethereum/les/server.go:228.2,228.25 1 1 +github.com/ethereum/go-ethereum/les/server.go:231.2,231.20 1 1 +github.com/ethereum/go-ethereum/les/server.go:234.2,237.12 3 1 +github.com/ethereum/go-ethereum/les/server.go:215.24,217.3 1 0 +github.com/ethereum/go-ethereum/les/server.go:223.26,225.3 1 0 +github.com/ethereum/go-ethereum/les/server.go:228.25,230.3 1 0 +github.com/ethereum/go-ethereum/les/server.go:231.20,233.3 1 0 +github.com/ethereum/go-ethereum/les/server.go:243.42,262.27 11 0 +github.com/ethereum/go-ethereum/les/server.go:271.2,273.6 2 0 +github.com/ethereum/go-ethereum/les/server.go:262.27,263.11 1 0 +github.com/ethereum/go-ethereum/les/server.go:263.11,266.4 2 0 +github.com/ethereum/go-ethereum/les/server.go:266.9,269.4 2 0 +github.com/ethereum/go-ethereum/les/server.go:273.6,274.10 1 0 +github.com/ethereum/go-ethereum/les/server.go:275.27,276.12 1 0 +github.com/ethereum/go-ethereum/les/server.go:281.4,281.20 1 0 +github.com/ethereum/go-ethereum/les/server.go:282.42,284.20 2 0 +github.com/ethereum/go-ethereum/les/server.go:285.42,288.78 3 0 +github.com/ethereum/go-ethereum/les/server.go:291.4,292.70 2 0 +github.com/ethereum/go-ethereum/les/server.go:293.20,294.10 1 0 +github.com/ethereum/go-ethereum/les/server.go:276.12,278.5 1 0 +github.com/ethereum/go-ethereum/les/server.go:278.10,280.5 1 0 +github.com/ethereum/go-ethereum/les/server.go:288.78,290.5 1 0 +github.com/ethereum/go-ethereum/les/costtracker.go:140.89,148.29 3 1 +github.com/ethereum/go-ethereum/les/costtracker.go:151.2,151.28 1 1 +github.com/ethereum/go-ethereum/les/costtracker.go:154.2,154.19 1 1 +github.com/ethereum/go-ethereum/les/costtracker.go:160.2,162.29 3 1 +github.com/ethereum/go-ethereum/les/costtracker.go:169.2,170.49 2 1 +github.com/ethereum/go-ethereum/les/costtracker.go:148.29,150.3 1 0 +github.com/ethereum/go-ethereum/les/costtracker.go:151.28,153.3 1 0 +github.com/ethereum/go-ethereum/les/costtracker.go:154.19,156.36 2 0 +github.com/ethereum/go-ethereum/les/costtracker.go:156.36,158.4 1 0 +github.com/ethereum/go-ethereum/les/costtracker.go:162.29,165.28 3 1 +github.com/ethereum/go-ethereum/les/costtracker.go:165.28,167.4 1 1 +github.com/ethereum/go-ethereum/les/costtracker.go:174.31,178.19 4 1 +github.com/ethereum/go-ethereum/les/costtracker.go:178.19,180.3 1 0 +github.com/ethereum/go-ethereum/les/costtracker.go:185.75,186.62 1 1 +github.com/ethereum/go-ethereum/les/costtracker.go:198.2,199.41 2 1 +github.com/ethereum/go-ethereum/les/costtracker.go:218.2,218.13 1 1 +github.com/ethereum/go-ethereum/les/costtracker.go:186.62,189.24 3 1 +github.com/ethereum/go-ethereum/les/costtracker.go:192.3,193.25 2 1 +github.com/ethereum/go-ethereum/les/costtracker.go:196.3,196.14 1 1 +github.com/ethereum/go-ethereum/les/costtracker.go:189.24,191.4 1 0 +github.com/ethereum/go-ethereum/les/costtracker.go:193.25,195.4 1 0 +github.com/ethereum/go-ethereum/les/costtracker.go:199.41,202.26 3 1 +github.com/ethereum/go-ethereum/les/costtracker.go:212.3,216.5 1 1 +github.com/ethereum/go-ethereum/les/costtracker.go:202.26,205.32 2 0 +github.com/ethereum/go-ethereum/les/costtracker.go:205.32,209.5 3 0 +github.com/ethereum/go-ethereum/les/costtracker.go:244.33,254.20 3 1 +github.com/ethereum/go-ethereum/les/costtracker.go:257.2,264.12 4 1 +github.com/ethereum/go-ethereum/les/costtracker.go:254.20,256.3 1 0 +github.com/ethereum/go-ethereum/les/costtracker.go:264.12,265.28 1 1 +github.com/ethereum/go-ethereum/les/costtracker.go:271.3,274.7 3 1 +github.com/ethereum/go-ethereum/les/costtracker.go:265.28,270.4 4 1 +github.com/ethereum/go-ethereum/les/costtracker.go:274.7,275.11 1 1 +github.com/ethereum/go-ethereum/les/costtracker.go:276.29,280.33 2 1 +github.com/ethereum/go-ethereum/les/costtracker.go:306.5,306.64 1 1 +github.com/ethereum/go-ethereum/les/costtracker.go:309.5,323.24 12 1 +github.com/ethereum/go-ethereum/les/costtracker.go:327.5,327.24 1 1 +github.com/ethereum/go-ethereum/les/costtracker.go:344.5,347.20 3 1 +github.com/ethereum/go-ethereum/les/costtracker.go:368.5,369.50 2 1 +github.com/ethereum/go-ethereum/les/costtracker.go:371.24,372.21 1 0 +github.com/ethereum/go-ethereum/les/costtracker.go:374.31,377.11 3 1 +github.com/ethereum/go-ethereum/les/costtracker.go:280.33,281.23 1 0 +github.com/ethereum/go-ethereum/les/costtracker.go:282.30,283.50 1 0 +github.com/ethereum/go-ethereum/les/costtracker.go:284.29,285.48 1 0 +github.com/ethereum/go-ethereum/les/costtracker.go:286.26,287.51 1 0 +github.com/ethereum/go-ethereum/les/costtracker.go:288.22,289.48 1 0 +github.com/ethereum/go-ethereum/les/costtracker.go:290.26,291.49 1 0 +github.com/ethereum/go-ethereum/les/costtracker.go:292.34,293.55 1 0 +github.com/ethereum/go-ethereum/les/costtracker.go:294.23,295.50 1 0 +github.com/ethereum/go-ethereum/les/costtracker.go:296.26,297.52 1 0 +github.com/ethereum/go-ethereum/les/costtracker.go:306.64,307.14 1 1 +github.com/ethereum/go-ethereum/les/costtracker.go:323.24,325.6 1 1 +github.com/ethereum/go-ethereum/les/costtracker.go:327.24,329.30 1 1 +github.com/ethereum/go-ethereum/les/costtracker.go:335.6,335.32 1 1 +github.com/ethereum/go-ethereum/les/costtracker.go:329.30,331.7 1 1 +github.com/ethereum/go-ethereum/les/costtracker.go:331.12,333.7 1 0 +github.com/ethereum/go-ethereum/les/costtracker.go:335.32,338.7 1 0 +github.com/ethereum/go-ethereum/les/costtracker.go:338.12,341.7 1 1 +github.com/ethereum/go-ethereum/les/costtracker.go:347.20,352.53 3 1 +github.com/ethereum/go-ethereum/les/costtracker.go:352.53,358.20 6 1 +github.com/ethereum/go-ethereum/les/costtracker.go:364.7,365.64 2 1 +github.com/ethereum/go-ethereum/les/costtracker.go:358.20,359.15 1 0 +github.com/ethereum/go-ethereum/les/costtracker.go:360.57,360.57 0 0 +github.com/ethereum/go-ethereum/les/costtracker.go:361.16,361.16 0 0 +github.com/ethereum/go-ethereum/les/costtracker.go:384.47,389.2 3 1 +github.com/ethereum/go-ethereum/les/costtracker.go:393.47,398.2 3 0 +github.com/ethereum/go-ethereum/les/costtracker.go:402.70,408.2 4 0 +github.com/ethereum/go-ethereum/les/costtracker.go:412.80,415.9 3 1 +github.com/ethereum/go-ethereum/les/costtracker.go:419.2,419.19 1 1 +github.com/ethereum/go-ethereum/les/costtracker.go:416.81,416.81 0 1 +github.com/ethereum/go-ethereum/les/costtracker.go:417.10,417.10 0 0 +github.com/ethereum/go-ethereum/les/costtracker.go:419.19,422.39 3 0 +github.com/ethereum/go-ethereum/les/costtracker.go:426.3,426.42 1 0 +github.com/ethereum/go-ethereum/les/costtracker.go:422.39,425.4 2 0 +github.com/ethereum/go-ethereum/les/costtracker.go:438.84,441.23 3 1 +github.com/ethereum/go-ethereum/les/costtracker.go:444.2,445.24 2 1 +github.com/ethereum/go-ethereum/les/costtracker.go:448.2,448.41 1 1 +github.com/ethereum/go-ethereum/les/costtracker.go:441.23,443.3 1 0 +github.com/ethereum/go-ethereum/les/costtracker.go:445.24,447.3 1 0 +github.com/ethereum/go-ethereum/les/costtracker.go:452.37,453.21 1 0 +github.com/ethereum/go-ethereum/les/costtracker.go:456.2,456.34 1 0 +github.com/ethereum/go-ethereum/les/costtracker.go:453.21,455.3 1 0 +github.com/ethereum/go-ethereum/les/costtracker.go:456.34,458.3 1 0 +github.com/ethereum/go-ethereum/les/costtracker.go:479.70,482.2 2 1 +github.com/ethereum/go-ethereum/les/costtracker.go:485.76,487.25 2 1 +github.com/ethereum/go-ethereum/les/costtracker.go:495.2,495.14 1 1 +github.com/ethereum/go-ethereum/les/costtracker.go:487.25,488.33 1 1 +github.com/ethereum/go-ethereum/les/costtracker.go:488.33,493.4 1 1 +github.com/ethereum/go-ethereum/les/costtracker.go:499.52,502.35 3 1 +github.com/ethereum/go-ethereum/les/costtracker.go:507.2,508.45 2 1 +github.com/ethereum/go-ethereum/les/costtracker.go:516.2,516.11 1 1 +github.com/ethereum/go-ethereum/les/costtracker.go:502.35,503.17 1 1 +github.com/ethereum/go-ethereum/les/costtracker.go:503.17,505.4 1 1 +github.com/ethereum/go-ethereum/les/costtracker.go:508.45,509.40 1 1 +github.com/ethereum/go-ethereum/les/costtracker.go:509.40,514.4 4 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:55.53,56.25 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:57.27,58.28 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:59.30,60.31 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:61.26,62.27 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:63.26,64.27 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:65.25,66.26 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:67.27,68.28 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:69.30,70.31 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:71.10,72.13 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:81.57,83.2 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:86.55,88.2 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:91.70,94.2 2 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:99.68,103.35 2 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:106.2,107.22 2 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:110.2,113.21 2 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:116.2,116.21 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:119.2,119.103 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:122.2,122.60 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:126.2,127.16 2 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:130.2,131.12 2 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:103.35,105.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:107.22,109.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:113.21,115.3 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:116.21,118.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:119.103,121.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:122.60,124.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:127.16,129.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:139.60,141.2 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:144.58,146.2 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:149.73,152.2 2 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:157.71,161.32 2 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:164.2,165.24 2 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:168.2,171.21 2 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:174.2,174.21 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:177.2,177.78 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:181.2,182.12 2 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:161.32,163.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:165.24,167.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:171.21,173.3 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:174.21,176.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:177.78,179.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:196.56,198.2 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:201.54,203.2 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:206.69,214.2 3 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:219.67,222.32 2 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:225.2,229.69 4 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:233.2,233.44 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:236.2,237.12 2 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:222.32,224.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:229.69,231.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:233.44,235.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:250.56,252.2 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:255.54,257.2 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:260.69,267.2 3 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:272.67,276.28 2 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:279.2,280.21 2 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:283.2,286.56 2 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:289.2,290.12 2 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:276.28,278.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:280.21,282.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:286.56,288.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:320.55,322.2 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:325.53,330.2 3 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:333.68,344.2 5 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:349.66,352.40 2 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:355.2,356.28 2 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:359.2,361.25 3 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:364.2,365.59 2 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:369.2,377.16 5 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:380.2,380.44 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:383.2,383.54 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:386.2,386.32 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:389.2,389.42 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:393.2,396.12 4 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:352.40,354.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:356.28,358.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:361.25,363.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:365.59,367.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:377.16,379.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:380.44,382.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:383.54,385.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:386.32,388.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:389.42,391.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:408.57,410.2 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:413.55,417.25 3 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:420.2,420.153 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:417.25,419.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:424.70,431.48 5 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:439.2,439.50 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:431.48,438.3 2 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:445.68,449.40 2 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:452.2,463.41 8 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:472.2,472.44 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:475.2,476.12 2 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:449.40,451.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:463.41,466.17 3 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:469.3,469.25 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:466.17,468.4 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:472.44,474.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:484.60,486.2 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:489.58,491.2 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:494.73,497.2 2 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:502.71,505.32 2 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:508.2,509.34 2 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:512.2,513.12 2 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:505.32,507.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:509.34,511.3 1 0 +github.com/ethereum/go-ethereum/les/odr_requests.go:524.54,525.21 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:528.2,529.21 2 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:525.21,527.3 1 1 +github.com/ethereum/go-ethereum/les/odr_requests.go:533.54,536.2 2 0 +github.com/ethereum/go-ethereum/les/retrieve.go:93.117,100.2 1 1 +github.com/ethereum/go-ethereum/les/retrieve.go:106.135,108.9 2 1 +github.com/ethereum/go-ethereum/les/retrieve.go:115.2,115.27 1 1 +github.com/ethereum/go-ethereum/les/retrieve.go:109.24,109.24 0 1 +github.com/ethereum/go-ethereum/les/retrieve.go:110.20,111.26 1 0 +github.com/ethereum/go-ethereum/les/retrieve.go:112.18,113.54 1 0 +github.com/ethereum/go-ethereum/les/retrieve.go:120.92,132.38 3 1 +github.com/ethereum/go-ethereum/les/retrieve.go:140.2,141.40 2 1 +github.com/ethereum/go-ethereum/les/retrieve.go:148.2,153.10 5 1 +github.com/ethereum/go-ethereum/les/retrieve.go:132.38,138.3 4 1 +github.com/ethereum/go-ethereum/les/retrieve.go:141.40,147.3 4 1 +github.com/ethereum/go-ethereum/les/retrieve.go:157.57,163.2 4 1 +github.com/ethereum/go-ethereum/les/retrieve.go:166.67,171.8 4 1 +github.com/ethereum/go-ethereum/les/retrieve.go:174.2,174.64 1 0 +github.com/ethereum/go-ethereum/les/retrieve.go:171.8,173.3 1 1 +github.com/ethereum/go-ethereum/les/retrieve.go:179.50,183.34 3 0 +github.com/ethereum/go-ethereum/les/retrieve.go:183.34,185.3 1 0 +github.com/ethereum/go-ethereum/les/retrieve.go:192.34,197.19 4 1 +github.com/ethereum/go-ethereum/les/retrieve.go:201.2,203.20 3 1 +github.com/ethereum/go-ethereum/les/retrieve.go:197.19,199.3 1 1 +github.com/ethereum/go-ethereum/les/retrieve.go:208.48,209.9 1 1 +github.com/ethereum/go-ethereum/les/retrieve.go:210.26,212.19 2 1 +github.com/ethereum/go-ethereum/les/retrieve.go:241.3,241.27 1 1 +github.com/ethereum/go-ethereum/les/retrieve.go:242.18,243.24 1 0 +github.com/ethereum/go-ethereum/les/retrieve.go:213.15,214.22 1 1 +github.com/ethereum/go-ethereum/les/retrieve.go:225.22,229.28 3 0 +github.com/ethereum/go-ethereum/les/retrieve.go:230.43,232.50 1 0 +github.com/ethereum/go-ethereum/les/retrieve.go:236.4,236.28 1 0 +github.com/ethereum/go-ethereum/les/retrieve.go:237.25,239.25 2 1 +github.com/ethereum/go-ethereum/les/retrieve.go:214.22,216.20 1 1 +github.com/ethereum/go-ethereum/les/retrieve.go:221.5,223.15 2 1 +github.com/ethereum/go-ethereum/les/retrieve.go:216.20,219.6 1 0 +github.com/ethereum/go-ethereum/les/retrieve.go:232.50,235.5 2 0 +github.com/ethereum/go-ethereum/les/retrieve.go:250.49,251.9 1 0 +github.com/ethereum/go-ethereum/les/retrieve.go:252.32,255.27 3 0 +github.com/ethereum/go-ethereum/les/retrieve.go:256.26,258.35 2 0 +github.com/ethereum/go-ethereum/les/retrieve.go:262.3,262.18 1 0 +github.com/ethereum/go-ethereum/les/retrieve.go:265.3,266.13 2 0 +github.com/ethereum/go-ethereum/les/retrieve.go:267.18,268.24 1 0 +github.com/ethereum/go-ethereum/les/retrieve.go:258.35,261.4 2 0 +github.com/ethereum/go-ethereum/les/retrieve.go:262.18,264.4 1 0 +github.com/ethereum/go-ethereum/les/retrieve.go:274.45,275.18 1 1 +github.com/ethereum/go-ethereum/les/retrieve.go:278.2,278.12 1 1 +github.com/ethereum/go-ethereum/les/retrieve.go:275.18,277.3 1 0 +github.com/ethereum/go-ethereum/les/retrieve.go:282.43,283.18 1 1 +github.com/ethereum/go-ethereum/les/retrieve.go:284.14,286.28 2 1 +github.com/ethereum/go-ethereum/les/retrieve.go:287.21,289.19 2 0 +github.com/ethereum/go-ethereum/les/retrieve.go:290.21,291.19 1 0 +github.com/ethereum/go-ethereum/les/retrieve.go:292.60,293.33 1 1 +github.com/ethereum/go-ethereum/les/retrieve.go:293.33,295.4 1 1 +github.com/ethereum/go-ethereum/les/retrieve.go:295.9,297.4 1 0 +github.com/ethereum/go-ethereum/les/retrieve.go:303.34,305.2 1 1 +github.com/ethereum/go-ethereum/les/retrieve.go:310.32,313.9 3 1 +github.com/ethereum/go-ethereum/les/retrieve.go:323.2,324.14 2 1 +github.com/ethereum/go-ethereum/les/retrieve.go:328.2,333.9 5 1 +github.com/ethereum/go-ethereum/les/retrieve.go:337.2,337.15 1 1 +github.com/ethereum/go-ethereum/les/retrieve.go:347.2,347.9 1 1 +github.com/ethereum/go-ethereum/les/retrieve.go:360.2,360.9 1 0 +github.com/ethereum/go-ethereum/les/retrieve.go:314.18,314.18 0 1 +github.com/ethereum/go-ethereum/les/retrieve.go:315.18,316.30 1 0 +github.com/ethereum/go-ethereum/les/retrieve.go:316.30,318.4 1 0 +github.com/ethereum/go-ethereum/les/retrieve.go:318.9,320.4 1 0 +github.com/ethereum/go-ethereum/les/retrieve.go:324.14,326.3 1 1 +github.com/ethereum/go-ethereum/les/retrieve.go:333.9,334.13 1 0 +github.com/ethereum/go-ethereum/les/retrieve.go:337.15,339.17 2 1 +github.com/ethereum/go-ethereum/les/retrieve.go:339.17,341.25 2 0 +github.com/ethereum/go-ethereum/les/retrieve.go:341.25,343.5 1 0 +github.com/ethereum/go-ethereum/les/retrieve.go:348.26,349.30 1 1 +github.com/ethereum/go-ethereum/les/retrieve.go:354.3,355.9 2 1 +github.com/ethereum/go-ethereum/les/retrieve.go:356.47,357.47 1 0 +github.com/ethereum/go-ethereum/les/retrieve.go:349.30,353.4 3 0 +github.com/ethereum/go-ethereum/les/retrieve.go:361.26,362.30 1 0 +github.com/ethereum/go-ethereum/les/retrieve.go:367.3,367.39 1 0 +github.com/ethereum/go-ethereum/les/retrieve.go:368.40,370.47 2 0 +github.com/ethereum/go-ethereum/les/retrieve.go:362.30,366.4 3 0 +github.com/ethereum/go-ethereum/les/retrieve.go:375.58,380.24 4 1 +github.com/ethereum/go-ethereum/les/retrieve.go:383.2,383.14 1 1 +github.com/ethereum/go-ethereum/les/retrieve.go:386.2,388.11 3 1 +github.com/ethereum/go-ethereum/les/retrieve.go:393.2,393.12 1 1 +github.com/ethereum/go-ethereum/les/retrieve.go:396.2,396.12 1 1 +github.com/ethereum/go-ethereum/les/retrieve.go:380.24,382.3 1 0 +github.com/ethereum/go-ethereum/les/retrieve.go:383.14,385.3 1 0 +github.com/ethereum/go-ethereum/les/retrieve.go:388.11,390.3 1 1 +github.com/ethereum/go-ethereum/les/retrieve.go:390.8,392.3 1 0 +github.com/ethereum/go-ethereum/les/retrieve.go:393.12,395.3 1 0 +github.com/ethereum/go-ethereum/les/retrieve.go:403.41,408.37 4 0 +github.com/ethereum/go-ethereum/les/retrieve.go:408.37,411.3 2 0 +github.com/ethereum/go-ethereum/les/retrieve.go:416.35,418.16 2 1 +github.com/ethereum/go-ethereum/les/retrieve.go:423.2,423.17 1 1 +github.com/ethereum/go-ethereum/les/retrieve.go:418.16,422.3 3 1 +github.com/ethereum/go-ethereum/les/retrieve.go:428.36,430.2 1 1 +github.com/ethereum/go-ethereum/les/protocol.go:176.13,178.34 2 1 +github.com/ethereum/go-ethereum/les/protocol.go:178.34,186.29 4 1 +github.com/ethereum/go-ethereum/les/protocol.go:194.3,194.36 1 1 +github.com/ethereum/go-ethereum/les/protocol.go:186.29,193.4 2 1 +github.com/ethereum/go-ethereum/les/protocol.go:219.34,221.2 1 1 +github.com/ethereum/go-ethereum/les/protocol.go:252.44,253.41 1 1 +github.com/ethereum/go-ethereum/les/protocol.go:256.2,256.12 1 1 +github.com/ethereum/go-ethereum/les/protocol.go:253.41,255.3 1 0 +github.com/ethereum/go-ethereum/les/protocol.go:260.56,264.2 3 1 +github.com/ethereum/go-ethereum/les/protocol.go:267.78,269.49 2 1 +github.com/ethereum/go-ethereum/les/protocol.go:272.2,274.16 3 1 +github.com/ethereum/go-ethereum/les/protocol.go:277.2,277.41 1 1 +github.com/ethereum/go-ethereum/les/protocol.go:280.2,280.38 1 0 +github.com/ethereum/go-ethereum/les/protocol.go:269.49,271.3 1 0 +github.com/ethereum/go-ethereum/les/protocol.go:274.16,276.3 1 0 +github.com/ethereum/go-ethereum/les/protocol.go:277.41,279.3 1 1 +github.com/ethereum/go-ethereum/les/protocol.go:297.54,298.32 1 1 +github.com/ethereum/go-ethereum/les/protocol.go:301.2,301.20 1 1 +github.com/ethereum/go-ethereum/les/protocol.go:304.2,304.31 1 1 +github.com/ethereum/go-ethereum/les/protocol.go:298.32,300.3 1 1 +github.com/ethereum/go-ethereum/les/protocol.go:301.20,303.3 1 0 +github.com/ethereum/go-ethereum/les/protocol.go:309.56,311.9 2 1 +github.com/ethereum/go-ethereum/les/protocol.go:312.18,313.13 1 0 +github.com/ethereum/go-ethereum/les/protocol.go:314.18,316.28 2 1 +github.com/ethereum/go-ethereum/les/protocol.go:317.17,319.30 2 1 +github.com/ethereum/go-ethereum/les/protocol.go:320.10,321.62 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:72.36,73.23 1 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:76.2,77.9 2 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:82.2,82.9 1 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:87.2,87.20 1 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:90.2,91.13 2 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:73.23,75.3 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:78.28,78.28 0 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:79.19,80.15 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:83.29,83.29 0 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:84.19,85.15 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:87.20,89.3 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:96.37,101.22 5 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:107.2,107.22 1 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:101.22,104.3 2 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:104.8,106.3 1 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:114.41,116.18 2 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:120.2,120.18 1 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:116.18,119.3 2 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:124.75,142.2 5 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:145.96,153.2 1 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:161.44,163.6 2 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:163.6,165.10 2 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:173.3,173.10 1 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:166.33,167.25 1 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:168.26,169.10 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:170.18,171.10 1 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:174.26,175.10 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:176.18,177.10 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:178.16,178.16 0 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:195.29,197.2 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:199.39,201.2 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:203.34,205.2 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:209.39,212.20 3 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:215.2,216.26 2 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:234.2,236.33 3 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:253.2,253.25 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:212.20,214.3 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:216.26,219.19 3 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:231.3,232.32 2 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:219.19,221.20 2 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:224.4,229.38 3 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:221.20,223.5 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:236.33,237.11 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:237.11,244.36 7 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:244.36,246.5 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:247.9,248.36 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:248.36,250.5 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:253.25,255.3 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:259.44,264.12 5 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:267.2,267.29 1 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:264.12,266.3 1 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:267.29,269.3 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:269.8,271.3 1 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:275.52,276.20 1 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:284.2,288.49 5 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:276.20,278.3 1 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:278.8,278.47 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:278.47,281.3 2 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:281.8,283.3 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:288.49,290.3 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:296.37,298.6 2 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:298.6,299.21 1 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:299.21,301.11 2 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:302.33,303.21 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:304.35,310.29 6 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:315.19,316.11 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:310.29,312.6 1 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:312.11,314.6 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:318.9,319.11 1 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:320.33,321.21 1 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:322.19,323.11 1 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:331.43,334.6 3 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:334.6,335.42 1 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:340.3,340.41 1 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:335.42,339.4 3 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:340.41,341.11 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:342.47,342.47 0 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:343.39,344.21 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:345.19,346.11 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:348.9,349.11 1 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:350.47,350.47 0 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:351.19,352.11 1 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:360.53,361.9 1 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:362.38,362.38 0 1 +github.com/ethereum/go-ethereum/les/servingqueue.go:363.17,364.9 1 0 +github.com/ethereum/go-ethereum/les/servingqueue.go:369.32,372.2 2 1 +github.com/ethereum/go-ethereum/les/sync.go:55.68,62.16 5 1 +github.com/ethereum/go-ethereum/les/sync.go:66.2,67.16 2 1 +github.com/ethereum/go-ethereum/les/sync.go:70.2,71.22 2 1 +github.com/ethereum/go-ethereum/les/sync.go:74.2,79.31 2 1 +github.com/ethereum/go-ethereum/les/sync.go:82.2,83.12 2 1 +github.com/ethereum/go-ethereum/les/sync.go:86.2,87.12 2 1 +github.com/ethereum/go-ethereum/les/sync.go:62.16,64.3 1 0 +github.com/ethereum/go-ethereum/les/sync.go:67.16,69.3 1 0 +github.com/ethereum/go-ethereum/les/sync.go:71.22,73.3 1 0 +github.com/ethereum/go-ethereum/les/sync.go:79.31,81.3 1 1 +github.com/ethereum/go-ethereum/les/sync.go:83.12,85.3 1 0 +github.com/ethereum/go-ethereum/les/sync.go:91.55,93.17 1 1 +github.com/ethereum/go-ethereum/les/sync.go:97.2,99.54 3 1 +github.com/ethereum/go-ethereum/les/sync.go:115.2,119.86 2 1 +github.com/ethereum/go-ethereum/les/sync.go:124.2,124.41 1 1 +github.com/ethereum/go-ethereum/les/sync.go:138.2,139.9 2 1 +github.com/ethereum/go-ethereum/les/sync.go:160.2,160.15 1 1 +github.com/ethereum/go-ethereum/les/sync.go:166.2,167.60 2 1 +github.com/ethereum/go-ethereum/les/sync.go:195.2,195.24 1 1 +github.com/ethereum/go-ethereum/les/sync.go:199.2,199.104 1 1 +github.com/ethereum/go-ethereum/les/sync.go:203.2,203.88 1 1 +github.com/ethereum/go-ethereum/les/sync.go:93.17,95.3 1 0 +github.com/ethereum/go-ethereum/les/sync.go:99.54,101.3 1 0 +github.com/ethereum/go-ethereum/les/sync.go:119.86,121.3 1 1 +github.com/ethereum/go-ethereum/les/sync.go:124.41,126.41 2 1 +github.com/ethereum/go-ethereum/les/sync.go:126.41,128.4 1 1 +github.com/ethereum/go-ethereum/les/sync.go:140.26,142.72 2 1 +github.com/ethereum/go-ethereum/les/sync.go:143.89,145.89 2 0 +github.com/ethereum/go-ethereum/les/sync.go:146.13,148.79 2 1 +github.com/ethereum/go-ethereum/les/sync.go:149.64,150.26 1 1 +github.com/ethereum/go-ethereum/les/sync.go:156.3,156.91 1 1 +github.com/ethereum/go-ethereum/les/sync.go:150.26,152.4 1 1 +github.com/ethereum/go-ethereum/les/sync.go:152.9,155.4 2 0 +github.com/ethereum/go-ethereum/les/sync.go:160.15,161.23 1 1 +github.com/ethereum/go-ethereum/les/sync.go:161.23,163.4 1 1 +github.com/ethereum/go-ethereum/les/sync.go:167.60,169.29 1 1 +github.com/ethereum/go-ethereum/les/sync.go:177.3,188.83 4 1 +github.com/ethereum/go-ethereum/les/sync.go:169.29,170.53 1 1 +github.com/ethereum/go-ethereum/les/sync.go:175.4,175.57 1 1 +github.com/ethereum/go-ethereum/les/sync.go:170.53,174.5 3 0 +github.com/ethereum/go-ethereum/les/sync.go:188.83,192.4 3 0 +github.com/ethereum/go-ethereum/les/sync.go:195.24,197.3 1 1 +github.com/ethereum/go-ethereum/les/sync.go:199.104,202.3 2 1 +github.com/ethereum/go-ethereum/les/api.go:43.73,49.2 1 0 +github.com/ethereum/go-ethereum/les/api.go:52.47,53.48 1 0 +github.com/ethereum/go-ethereum/les/api.go:56.2,56.68 1 0 +github.com/ethereum/go-ethereum/les/api.go:53.48,55.3 1 0 +github.com/ethereum/go-ethereum/les/api.go:56.68,58.3 1 0 +github.com/ethereum/go-ethereum/les/api.go:58.8,60.3 1 0 +github.com/ethereum/go-ethereum/les/api.go:64.71,72.2 7 0 +github.com/ethereum/go-ethereum/les/api.go:75.98,77.29 2 0 +github.com/ethereum/go-ethereum/les/api.go:83.2,84.19 2 0 +github.com/ethereum/go-ethereum/les/api.go:87.2,87.25 1 0 +github.com/ethereum/go-ethereum/les/api.go:96.2,96.12 1 0 +github.com/ethereum/go-ethereum/les/api.go:77.29,78.45 1 0 +github.com/ethereum/go-ethereum/les/api.go:78.45,80.4 1 0 +github.com/ethereum/go-ethereum/les/api.go:84.19,86.3 1 0 +github.com/ethereum/go-ethereum/les/api.go:87.25,88.53 1 0 +github.com/ethereum/go-ethereum/les/api.go:88.53,90.4 1 0 +github.com/ethereum/go-ethereum/les/api.go:90.9,91.91 1 0 +github.com/ethereum/go-ethereum/les/api.go:91.91,93.5 1 0 +github.com/ethereum/go-ethereum/les/api.go:105.126,108.25 3 0 +github.com/ethereum/go-ethereum/les/api.go:112.2,112.25 1 0 +github.com/ethereum/go-ethereum/les/api.go:121.2,121.12 1 0 +github.com/ethereum/go-ethereum/les/api.go:108.25,111.3 2 0 +github.com/ethereum/go-ethereum/les/api.go:112.25,113.53 1 0 +github.com/ethereum/go-ethereum/les/api.go:113.53,115.4 1 0 +github.com/ethereum/go-ethereum/les/api.go:115.9,116.91 1 0 +github.com/ethereum/go-ethereum/les/api.go:116.91,118.5 1 0 +github.com/ethereum/go-ethereum/les/api.go:125.116,133.17 6 0 +github.com/ethereum/go-ethereum/les/api.go:138.2,138.13 1 0 +github.com/ethereum/go-ethereum/les/api.go:133.17,137.3 3 0 +github.com/ethereum/go-ethereum/les/api.go:143.170,145.34 2 0 +github.com/ethereum/go-ethereum/les/api.go:189.2,189.8 1 0 +github.com/ethereum/go-ethereum/les/api.go:145.34,146.28 1 0 +github.com/ethereum/go-ethereum/les/api.go:149.3,149.33 1 0 +github.com/ethereum/go-ethereum/les/api.go:158.3,158.10 1 0 +github.com/ethereum/go-ethereum/les/api.go:185.3,185.17 1 0 +github.com/ethereum/go-ethereum/les/api.go:146.28,148.4 1 0 +github.com/ethereum/go-ethereum/les/api.go:149.33,150.50 1 0 +github.com/ethereum/go-ethereum/les/api.go:150.50,153.5 2 0 +github.com/ethereum/go-ethereum/les/api.go:153.10,155.5 1 0 +github.com/ethereum/go-ethereum/les/api.go:159.37,160.37 1 0 +github.com/ethereum/go-ethereum/les/api.go:161.41,162.41 1 0 +github.com/ethereum/go-ethereum/les/api.go:163.44,164.40 1 0 +github.com/ethereum/go-ethereum/les/api.go:165.46,166.37 1 0 +github.com/ethereum/go-ethereum/les/api.go:167.50,168.41 1 0 +github.com/ethereum/go-ethereum/les/api.go:169.53,170.40 1 0 +github.com/ethereum/go-ethereum/les/api.go:171.41,172.89 1 0 +github.com/ethereum/go-ethereum/les/api.go:178.11,179.17 1 0 +github.com/ethereum/go-ethereum/les/api.go:172.89,175.5 1 0 +github.com/ethereum/go-ethereum/les/api.go:175.10,177.5 1 0 +github.com/ethereum/go-ethereum/les/api.go:179.17,181.5 1 0 +github.com/ethereum/go-ethereum/les/api.go:181.10,183.5 1 0 +github.com/ethereum/go-ethereum/les/api.go:185.17,187.4 1 0 +github.com/ethereum/go-ethereum/les/api.go:194.104,196.29 2 0 +github.com/ethereum/go-ethereum/les/api.go:214.2,214.12 1 0 +github.com/ethereum/go-ethereum/les/api.go:196.29,198.44 2 0 +github.com/ethereum/go-ethereum/les/api.go:201.3,201.53 1 0 +github.com/ethereum/go-ethereum/les/api.go:198.44,200.4 1 0 +github.com/ethereum/go-ethereum/les/api.go:201.53,204.14 3 0 +github.com/ethereum/go-ethereum/les/api.go:207.4,207.16 1 0 +github.com/ethereum/go-ethereum/les/api.go:204.14,206.5 1 0 +github.com/ethereum/go-ethereum/les/api.go:207.16,209.5 1 0 +github.com/ethereum/go-ethereum/les/api.go:210.9,212.4 1 0 +github.com/ethereum/go-ethereum/les/api.go:218.89,220.12 2 0 +github.com/ethereum/go-ethereum/les/api.go:223.2,223.12 1 0 +github.com/ethereum/go-ethereum/les/api.go:220.12,222.3 1 0 +github.com/ethereum/go-ethereum/les/api.go:230.78,231.29 1 0 +github.com/ethereum/go-ethereum/les/api.go:234.2,235.12 2 0 +github.com/ethereum/go-ethereum/les/api.go:231.29,233.3 1 0 +github.com/ethereum/go-ethereum/les/api.go:240.104,242.43 2 0 +github.com/ethereum/go-ethereum/les/api.go:245.2,245.84 1 0 +github.com/ethereum/go-ethereum/les/api.go:248.2,248.8 1 0 +github.com/ethereum/go-ethereum/les/api.go:242.43,244.3 1 0 +github.com/ethereum/go-ethereum/les/api.go:245.84,247.3 1 0 +github.com/ethereum/go-ethereum/les/api.go:257.135,259.31 2 0 +github.com/ethereum/go-ethereum/les/api.go:310.2,312.23 3 0 +github.com/ethereum/go-ethereum/les/api.go:324.2,324.20 1 0 +github.com/ethereum/go-ethereum/les/api.go:259.31,260.42 1 0 +github.com/ethereum/go-ethereum/les/api.go:260.42,261.46 1 0 +github.com/ethereum/go-ethereum/les/api.go:267.4,267.49 1 0 +github.com/ethereum/go-ethereum/les/api.go:273.4,273.13 1 0 +github.com/ethereum/go-ethereum/les/api.go:261.46,262.48 1 0 +github.com/ethereum/go-ethereum/les/api.go:265.5,265.15 1 0 +github.com/ethereum/go-ethereum/les/api.go:262.48,264.6 1 0 +github.com/ethereum/go-ethereum/les/api.go:267.49,268.45 1 0 +github.com/ethereum/go-ethereum/les/api.go:271.5,271.15 1 0 +github.com/ethereum/go-ethereum/les/api.go:268.45,270.6 1 0 +github.com/ethereum/go-ethereum/les/api.go:274.18,280.6 1 0 +github.com/ethereum/go-ethereum/les/api.go:281.16,282.64 1 0 +github.com/ethereum/go-ethereum/les/api.go:283.20,284.63 1 0 +github.com/ethereum/go-ethereum/les/api.go:285.17,286.56 1 0 +github.com/ethereum/go-ethereum/les/api.go:287.16,288.55 1 0 +github.com/ethereum/go-ethereum/les/api.go:289.15,293.6 1 0 +github.com/ethereum/go-ethereum/les/api.go:294.17,298.6 1 0 +github.com/ethereum/go-ethereum/les/api.go:299.18,300.39 1 0 +github.com/ethereum/go-ethereum/les/api.go:301.20,302.41 1 0 +github.com/ethereum/go-ethereum/les/api.go:303.12,304.40 1 0 +github.com/ethereum/go-ethereum/les/api.go:306.9,308.4 1 0 +github.com/ethereum/go-ethereum/les/api.go:312.23,314.19 2 0 +github.com/ethereum/go-ethereum/les/api.go:322.3,322.18 1 0 +github.com/ethereum/go-ethereum/les/api.go:314.19,319.4 4 0 +github.com/ethereum/go-ethereum/les/api.go:319.9,321.4 1 0 +github.com/ethereum/go-ethereum/les/api.go:333.61,337.2 1 0 +github.com/ethereum/go-ethereum/les/api.go:340.61,345.43 2 0 +github.com/ethereum/go-ethereum/les/api.go:348.2,348.52 1 0 +github.com/ethereum/go-ethereum/les/api.go:345.43,347.3 1 0 +github.com/ethereum/go-ethereum/les/api.go:348.52,351.3 2 0 +github.com/ethereum/go-ethereum/les/api.go:351.8,353.3 1 0 +github.com/ethereum/go-ethereum/les/api.go:362.63,364.2 1 0 +github.com/ethereum/go-ethereum/les/api.go:373.67,376.16 3 0 +github.com/ethereum/go-ethereum/les/api.go:379.2,381.17 3 0 +github.com/ethereum/go-ethereum/les/api.go:376.16,378.3 1 0 +github.com/ethereum/go-ethereum/les/api.go:390.76,393.16 3 0 +github.com/ethereum/go-ethereum/les/api.go:396.2,397.17 2 0 +github.com/ethereum/go-ethereum/les/api.go:393.16,395.3 1 0 +github.com/ethereum/go-ethereum/les/api.go:401.76,402.31 1 0 +github.com/ethereum/go-ethereum/les/api.go:405.2,405.64 1 0 +github.com/ethereum/go-ethereum/les/api.go:402.31,404.3 1 0 +github.com/ethereum/go-ethereum/les/client_handler.go:57.138,64.23 2 1 +github.com/ethereum/go-ethereum/les/client_handler.go:72.2,73.23 2 1 +github.com/ethereum/go-ethereum/les/client_handler.go:76.2,79.16 4 1 +github.com/ethereum/go-ethereum/les/client_handler.go:64.23,66.17 2 1 +github.com/ethereum/go-ethereum/les/client_handler.go:69.3,70.45 2 1 +github.com/ethereum/go-ethereum/les/client_handler.go:66.17,68.4 1 0 +github.com/ethereum/go-ethereum/les/client_handler.go:73.23,75.3 1 0 +github.com/ethereum/go-ethereum/les/client_handler.go:82.33,84.2 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:86.32,91.2 4 1 +github.com/ethereum/go-ethereum/les/client_handler.go:94.88,96.18 2 0 +github.com/ethereum/go-ethereum/les/client_handler.go:99.2,104.12 6 0 +github.com/ethereum/go-ethereum/les/client_handler.go:96.18,98.3 1 0 +github.com/ethereum/go-ethereum/les/client_handler.go:107.74,108.92 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:111.2,115.97 3 1 +github.com/ethereum/go-ethereum/les/client_handler.go:120.2,120.33 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:133.2,133.52 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:138.2,141.15 3 1 +github.com/ethereum/go-ethereum/les/client_handler.go:149.2,149.56 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:154.2,158.6 3 1 +github.com/ethereum/go-ethereum/les/client_handler.go:108.92,110.3 1 0 +github.com/ethereum/go-ethereum/les/client_handler.go:115.97,118.3 2 0 +github.com/ethereum/go-ethereum/les/client_handler.go:120.33,121.74 1 0 +github.com/ethereum/go-ethereum/les/client_handler.go:121.74,124.17 3 0 +github.com/ethereum/go-ethereum/les/client_handler.go:124.17,127.5 2 0 +github.com/ethereum/go-ethereum/les/client_handler.go:128.9,130.4 1 0 +github.com/ethereum/go-ethereum/les/client_handler.go:133.52,136.3 2 0 +github.com/ethereum/go-ethereum/les/client_handler.go:141.15,145.3 3 1 +github.com/ethereum/go-ethereum/les/client_handler.go:149.56,151.3 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:158.6,159.40 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:159.40,163.4 3 1 +github.com/ethereum/go-ethereum/les/client_handler.go:169.56,172.16 2 1 +github.com/ethereum/go-ethereum/les/client_handler.go:175.2,177.35 2 1 +github.com/ethereum/go-ethereum/les/client_handler.go:180.2,185.9 3 1 +github.com/ethereum/go-ethereum/les/client_handler.go:368.2,368.23 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:375.2,375.12 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:172.16,174.3 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:177.35,179.3 1 0 +github.com/ethereum/go-ethereum/les/client_handler.go:186.31,189.42 3 1 +github.com/ethereum/go-ethereum/les/client_handler.go:192.3,192.43 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:195.3,196.27 2 1 +github.com/ethereum/go-ethereum/les/client_handler.go:199.3,202.34 3 1 +github.com/ethereum/go-ethereum/les/client_handler.go:223.35,229.43 3 1 +github.com/ethereum/go-ethereum/les/client_handler.go:232.3,237.48 4 1 +github.com/ethereum/go-ethereum/les/client_handler.go:255.34,261.43 3 1 +github.com/ethereum/go-ethereum/les/client_handler.go:264.3,270.4 3 1 +github.com/ethereum/go-ethereum/les/client_handler.go:271.27,277.43 3 1 +github.com/ethereum/go-ethereum/les/client_handler.go:280.3,286.4 3 1 +github.com/ethereum/go-ethereum/les/client_handler.go:287.31,293.43 3 1 +github.com/ethereum/go-ethereum/les/client_handler.go:296.3,302.4 3 1 +github.com/ethereum/go-ethereum/les/client_handler.go:303.31,309.43 3 1 +github.com/ethereum/go-ethereum/les/client_handler.go:312.3,318.4 3 1 +github.com/ethereum/go-ethereum/les/client_handler.go:319.39,325.43 3 1 +github.com/ethereum/go-ethereum/les/client_handler.go:328.3,334.4 3 1 +github.com/ethereum/go-ethereum/les/client_handler.go:335.31,341.43 3 1 +github.com/ethereum/go-ethereum/les/client_handler.go:344.3,350.4 3 1 +github.com/ethereum/go-ethereum/les/client_handler.go:351.48,354.35 3 0 +github.com/ethereum/go-ethereum/les/client_handler.go:355.50,357.41 2 0 +github.com/ethereum/go-ethereum/les/client_handler.go:360.3,362.35 3 0 +github.com/ethereum/go-ethereum/les/client_handler.go:363.10,365.52 2 0 +github.com/ethereum/go-ethereum/les/client_handler.go:189.42,191.4 1 0 +github.com/ethereum/go-ethereum/les/client_handler.go:192.43,194.4 1 0 +github.com/ethereum/go-ethereum/les/client_handler.go:196.27,198.4 1 0 +github.com/ethereum/go-ethereum/les/client_handler.go:202.34,203.42 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:206.4,206.44 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:213.4,219.38 3 1 +github.com/ethereum/go-ethereum/les/client_handler.go:203.42,205.5 1 0 +github.com/ethereum/go-ethereum/les/client_handler.go:206.44,207.62 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:211.5,211.50 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:207.62,210.6 2 0 +github.com/ethereum/go-ethereum/les/client_handler.go:219.38,221.5 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:229.43,231.4 1 0 +github.com/ethereum/go-ethereum/les/client_handler.go:237.48,243.4 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:243.9,246.14 2 1 +github.com/ethereum/go-ethereum/les/client_handler.go:249.4,249.36 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:246.14,248.5 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:249.36,250.70 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:250.70,252.6 1 0 +github.com/ethereum/go-ethereum/les/client_handler.go:261.43,263.4 1 0 +github.com/ethereum/go-ethereum/les/client_handler.go:277.43,279.4 1 0 +github.com/ethereum/go-ethereum/les/client_handler.go:293.43,295.4 1 0 +github.com/ethereum/go-ethereum/les/client_handler.go:309.43,311.4 1 0 +github.com/ethereum/go-ethereum/les/client_handler.go:325.43,327.4 1 0 +github.com/ethereum/go-ethereum/les/client_handler.go:341.43,343.4 1 0 +github.com/ethereum/go-ethereum/les/client_handler.go:357.41,359.4 1 0 +github.com/ethereum/go-ethereum/les/client_handler.go:368.23,369.68 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:369.68,370.71 1 0 +github.com/ethereum/go-ethereum/les/client_handler.go:370.71,372.5 1 0 +github.com/ethereum/go-ethereum/les/client_handler.go:378.47,380.2 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:387.58,389.2 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:391.110,393.37 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:408.2,409.9 2 1 +github.com/ethereum/go-ethereum/les/client_handler.go:412.2,412.12 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:393.37,396.4 2 1 +github.com/ethereum/go-ethereum/les/client_handler.go:397.35,399.4 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:400.37,405.18 5 1 +github.com/ethereum/go-ethereum/les/client_handler.go:405.18,405.85 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:409.9,411.3 1 0 +github.com/ethereum/go-ethereum/les/client_handler.go:415.107,417.37 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:432.2,433.9 2 1 +github.com/ethereum/go-ethereum/les/client_handler.go:436.2,436.12 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:417.37,420.4 2 1 +github.com/ethereum/go-ethereum/les/client_handler.go:421.35,423.4 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:424.37,429.18 5 1 +github.com/ethereum/go-ethereum/les/client_handler.go:429.18,429.87 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:433.9,435.3 1 0 +github.com/ethereum/go-ethereum/les/client_handler.go:441.119,444.37 2 1 +github.com/ethereum/go-ethereum/les/client_handler.go:458.2,459.106 2 1 +github.com/ethereum/go-ethereum/les/client_handler.go:472.2,472.20 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:444.37,447.4 2 1 +github.com/ethereum/go-ethereum/les/client_handler.go:448.35,450.4 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:451.37,455.18 4 1 +github.com/ethereum/go-ethereum/les/client_handler.go:455.18,455.77 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:459.106,460.37 1 1 +github.com/ethereum/go-ethereum/les/client_handler.go:463.3,464.24 2 1 +github.com/ethereum/go-ethereum/les/client_handler.go:467.3,468.13 2 1 +github.com/ethereum/go-ethereum/les/client_handler.go:460.37,462.4 1 0 +github.com/ethereum/go-ethereum/les/client_handler.go:464.24,466.4 1 0 +github.com/ethereum/go-ethereum/les/client_handler.go:469.22,471.3 1 0 +github.com/ethereum/go-ethereum/les/client_handler.go:478.60,485.2 3 1 +github.com/ethereum/go-ethereum/les/client_handler.go:487.62,490.2 2 1 +github.com/ethereum/go-ethereum/les/distributor.go:77.90,85.18 2 1 +github.com/ethereum/go-ethereum/les/distributor.go:88.2,90.10 3 1 +github.com/ethereum/go-ethereum/les/distributor.go:85.18,87.3 1 1 +github.com/ethereum/go-ethereum/les/distributor.go:94.58,98.2 3 1 +github.com/ethereum/go-ethereum/les/distributor.go:101.60,105.2 3 1 +github.com/ethereum/go-ethereum/les/distributor.go:108.59,112.2 3 1 +github.com/ethereum/go-ethereum/les/distributor.go:125.37,127.6 2 1 +github.com/ethereum/go-ethereum/les/distributor.go:127.6,128.10 1 1 +github.com/ethereum/go-ethereum/les/distributor.go:129.20,132.20 3 1 +github.com/ethereum/go-ethereum/les/distributor.go:138.4,139.10 2 1 +github.com/ethereum/go-ethereum/les/distributor.go:140.20,144.8 3 1 +github.com/ethereum/go-ethereum/les/distributor.go:174.4,174.19 1 1 +github.com/ethereum/go-ethereum/les/distributor.go:132.20,137.5 4 0 +github.com/ethereum/go-ethereum/les/distributor.go:144.8,146.32 2 1 +github.com/ethereum/go-ethereum/les/distributor.go:146.32,150.21 4 1 +github.com/ethereum/go-ethereum/les/distributor.go:154.6,155.16 2 1 +github.com/ethereum/go-ethereum/les/distributor.go:150.21,153.7 2 1 +github.com/ethereum/go-ethereum/les/distributor.go:156.11,157.19 1 1 +github.com/ethereum/go-ethereum/les/distributor.go:162.6,163.28 2 0 +github.com/ethereum/go-ethereum/les/distributor.go:167.6,167.16 1 0 +github.com/ethereum/go-ethereum/les/distributor.go:171.6,171.16 1 0 +github.com/ethereum/go-ethereum/les/distributor.go:157.19,160.17 1 1 +github.com/ethereum/go-ethereum/les/distributor.go:163.28,166.7 1 0 +github.com/ethereum/go-ethereum/les/distributor.go:167.16,170.7 2 0 +github.com/ethereum/go-ethereum/les/distributor.go:186.45,188.2 1 1 +github.com/ethereum/go-ethereum/les/distributor.go:192.80,204.83 7 1 +github.com/ethereum/go-ethereum/les/distributor.go:241.2,241.16 1 1 +github.com/ethereum/go-ethereum/les/distributor.go:245.2,245.27 1 1 +github.com/ethereum/go-ethereum/les/distributor.go:204.83,208.29 4 1 +github.com/ethereum/go-ethereum/les/distributor.go:215.3,215.29 1 1 +github.com/ethereum/go-ethereum/les/distributor.go:233.3,234.45 2 1 +github.com/ethereum/go-ethereum/les/distributor.go:238.3,238.14 1 1 +github.com/ethereum/go-ethereum/les/distributor.go:208.29,211.40 3 0 +github.com/ethereum/go-ethereum/les/distributor.go:211.40,213.5 1 0 +github.com/ethereum/go-ethereum/les/distributor.go:215.29,216.80 1 1 +github.com/ethereum/go-ethereum/les/distributor.go:216.80,220.18 4 1 +github.com/ethereum/go-ethereum/les/distributor.go:230.5,230.36 1 1 +github.com/ethereum/go-ethereum/les/distributor.go:220.18,221.20 1 1 +github.com/ethereum/go-ethereum/les/distributor.go:224.6,224.93 1 1 +github.com/ethereum/go-ethereum/les/distributor.go:221.20,223.7 1 1 +github.com/ethereum/go-ethereum/les/distributor.go:225.11,226.42 1 0 +github.com/ethereum/go-ethereum/les/distributor.go:226.42,228.7 1 0 +github.com/ethereum/go-ethereum/les/distributor.go:234.45,237.4 2 1 +github.com/ethereum/go-ethereum/les/distributor.go:241.16,244.3 2 1 +github.com/ethereum/go-ethereum/les/distributor.go:252.62,256.21 3 1 +github.com/ethereum/go-ethereum/les/distributor.go:263.2,266.64 3 1 +github.com/ethereum/go-ethereum/les/distributor.go:276.2,276.21 1 1 +github.com/ethereum/go-ethereum/les/distributor.go:281.2,282.18 2 1 +github.com/ethereum/go-ethereum/les/distributor.go:256.21,260.3 3 1 +github.com/ethereum/go-ethereum/les/distributor.go:266.64,268.3 1 1 +github.com/ethereum/go-ethereum/les/distributor.go:268.8,270.53 2 1 +github.com/ethereum/go-ethereum/les/distributor.go:273.3,273.49 1 1 +github.com/ethereum/go-ethereum/les/distributor.go:270.53,272.4 1 1 +github.com/ethereum/go-ethereum/les/distributor.go:276.21,279.3 2 1 +github.com/ethereum/go-ethereum/les/distributor.go:288.54,292.22 3 0 +github.com/ethereum/go-ethereum/les/distributor.go:296.2,298.13 3 0 +github.com/ethereum/go-ethereum/les/distributor.go:292.22,294.3 1 0 +github.com/ethereum/go-ethereum/les/distributor.go:302.49,304.22 2 1 +github.com/ethereum/go-ethereum/les/distributor.go:304.22,307.3 2 1 +github.com/ethereum/go-ethereum/les/distributor.go:310.38,313.2 2 1 +github.com/ethereum/go-ethereum/les/pruner.go:38.75,47.2 4 1 +github.com/ethereum/go-ethereum/les/pruner.go:50.26,53.2 2 0 +github.com/ethereum/go-ethereum/les/pruner.go:60.25,71.20 4 1 +github.com/ethereum/go-ethereum/les/pruner.go:91.2,91.6 1 1 +github.com/ethereum/go-ethereum/les/pruner.go:71.20,73.38 2 1 +github.com/ethereum/go-ethereum/les/pruner.go:80.3,80.38 1 1 +github.com/ethereum/go-ethereum/les/pruner.go:83.3,83.38 1 1 +github.com/ethereum/go-ethereum/les/pruner.go:89.3,89.25 1 1 +github.com/ethereum/go-ethereum/les/pruner.go:73.38,75.22 2 1 +github.com/ethereum/go-ethereum/les/pruner.go:75.22,77.5 1 1 +github.com/ethereum/go-ethereum/les/pruner.go:80.38,82.4 1 0 +github.com/ethereum/go-ethereum/les/pruner.go:83.38,84.49 1 1 +github.com/ethereum/go-ethereum/les/pruner.go:84.49,87.5 2 0 +github.com/ethereum/go-ethereum/les/pruner.go:91.6,93.10 2 1 +github.com/ethereum/go-ethereum/les/pruner.go:94.24,94.24 0 0 +github.com/ethereum/go-ethereum/les/pruner.go:95.20,96.10 1 0 +github.com/ethereum/go-ethereum/les/ulc.go:32.59,34.29 2 1 +github.com/ethereum/go-ethereum/les/ulc.go:42.2,42.20 1 1 +github.com/ethereum/go-ethereum/les/ulc.go:45.2,48.8 1 1 +github.com/ethereum/go-ethereum/les/ulc.go:34.29,36.17 2 1 +github.com/ethereum/go-ethereum/les/ulc.go:40.3,40.34 1 1 +github.com/ethereum/go-ethereum/les/ulc.go:36.17,38.12 2 0 +github.com/ethereum/go-ethereum/les/ulc.go:42.20,44.3 1 0 +github.com/ethereum/go-ethereum/les/ulc.go:52.40,54.2 1 0 +github.com/ethereum/go-ethereum/les/server_handler.go:76.151,87.2 2 1 +github.com/ethereum/go-ethereum/les/server_handler.go:90.33,93.2 2 1 +github.com/ethereum/go-ethereum/les/server_handler.go:96.32,99.2 2 1 +github.com/ethereum/go-ethereum/les/server_handler.go:102.88,108.2 5 0 +github.com/ethereum/go-ethereum/les/server_handler.go:110.53,121.117 3 1 +github.com/ethereum/go-ethereum/les/server_handler.go:126.2,126.14 1 1 +github.com/ethereum/go-ethereum/les/server_handler.go:135.2,140.17 3 1 +github.com/ethereum/go-ethereum/les/server_handler.go:146.2,146.51 1 1 +github.com/ethereum/go-ethereum/les/server_handler.go:149.2,149.67 1 1 +github.com/ethereum/go-ethereum/les/server_handler.go:154.2,157.15 3 1 +github.com/ethereum/go-ethereum/les/server_handler.go:166.2,170.6 3 1 +github.com/ethereum/go-ethereum/les/server_handler.go:121.117,124.3 2 0 +github.com/ethereum/go-ethereum/les/server_handler.go:126.14,127.56 1 0 +github.com/ethereum/go-ethereum/les/server_handler.go:130.3,132.13 3 0 +github.com/ethereum/go-ethereum/les/server_handler.go:127.56,129.4 1 0 +github.com/ethereum/go-ethereum/les/server_handler.go:140.17,143.3 2 0 +github.com/ethereum/go-ethereum/les/server_handler.go:146.51,148.3 1 0 +github.com/ethereum/go-ethereum/les/server_handler.go:149.67,153.3 3 0 +github.com/ethereum/go-ethereum/les/server_handler.go:157.15,163.3 5 1 +github.com/ethereum/go-ethereum/les/server_handler.go:170.6,171.10 1 1 +github.com/ethereum/go-ethereum/les/server_handler.go:177.3,177.45 1 1 +github.com/ethereum/go-ethereum/les/server_handler.go:172.25,174.14 2 0 +github.com/ethereum/go-ethereum/les/server_handler.go:175.11,175.11 0 1 +github.com/ethereum/go-ethereum/les/server_handler.go:177.45,180.4 2 1 +github.com/ethereum/go-ethereum/les/server_handler.go:185.150,188.38 2 1 +github.com/ethereum/go-ethereum/les/server_handler.go:194.2,194.18 1 1 +github.com/ethereum/go-ethereum/les/server_handler.go:198.2,200.15 3 1 +github.com/ethereum/go-ethereum/les/server_handler.go:208.2,209.20 2 1 +github.com/ethereum/go-ethereum/les/server_handler.go:213.2,215.19 3 1 +github.com/ethereum/go-ethereum/les/server_handler.go:219.2,219.22 1 1 +github.com/ethereum/go-ethereum/les/server_handler.go:188.38,191.3 2 0 +github.com/ethereum/go-ethereum/les/server_handler.go:194.18,197.3 2 1 +github.com/ethereum/go-ethereum/les/server_handler.go:200.15,205.3 4 1 +github.com/ethereum/go-ethereum/les/server_handler.go:209.20,212.3 2 0 +github.com/ethereum/go-ethereum/les/server_handler.go:215.19,218.3 2 0 +github.com/ethereum/go-ethereum/les/server_handler.go:224.158,225.18 1 1 +github.com/ethereum/go-ethereum/les/server_handler.go:228.2,232.18 3 1 +github.com/ethereum/go-ethereum/les/server_handler.go:238.2,239.18 2 1 +github.com/ethereum/go-ethereum/les/server_handler.go:242.2,243.34 2 1 +github.com/ethereum/go-ethereum/les/server_handler.go:251.2,252.18 2 1 +github.com/ethereum/go-ethereum/les/server_handler.go:225.18,227.3 1 1 +github.com/ethereum/go-ethereum/les/server_handler.go:232.18,236.3 3 0 +github.com/ethereum/go-ethereum/les/server_handler.go:239.18,241.3 1 1 +github.com/ethereum/go-ethereum/les/server_handler.go:243.34,245.3 1 1 +github.com/ethereum/go-ethereum/les/server_handler.go:245.8,247.25 2 1 +github.com/ethereum/go-ethereum/les/server_handler.go:247.25,249.4 1 1 +github.com/ethereum/go-ethereum/les/server_handler.go:252.18,257.22 3 1 +github.com/ethereum/go-ethereum/les/server_handler.go:257.22,258.41 1 1 +github.com/ethereum/go-ethereum/les/server_handler.go:258.41,259.12 1 0 +github.com/ethereum/go-ethereum/les/server_handler.go:260.25,260.25 0 0 +github.com/ethereum/go-ethereum/les/server_handler.go:261.13,261.13 0 0 +github.com/ethereum/go-ethereum/les/server_handler.go:270.76,273.16 2 1 +github.com/ethereum/go-ethereum/les/server_handler.go:276.2,279.35 2 1 +github.com/ethereum/go-ethereum/les/server_handler.go:283.2,288.9 3 1 +github.com/ethereum/go-ethereum/les/server_handler.go:293.2,297.16 3 1 +github.com/ethereum/go-ethereum/les/server_handler.go:301.2,301.30 1 1 +github.com/ethereum/go-ethereum/les/server_handler.go:305.2,311.17 4 1 +github.com/ethereum/go-ethereum/les/server_handler.go:314.2,315.12 2 1 +github.com/ethereum/go-ethereum/les/server_handler.go:333.2,333.39 1 1 +github.com/ethereum/go-ethereum/les/server_handler.go:337.2,337.12 1 1 +github.com/ethereum/go-ethereum/les/server_handler.go:273.16,275.3 1 1 +github.com/ethereum/go-ethereum/les/server_handler.go:279.35,282.3 2 0 +github.com/ethereum/go-ethereum/les/server_handler.go:288.9,292.3 3 0 +github.com/ethereum/go-ethereum/les/server_handler.go:297.16,300.3 2 0 +github.com/ethereum/go-ethereum/les/server_handler.go:301.30,304.3 2 0 +github.com/ethereum/go-ethereum/les/server_handler.go:311.17,313.3 1 1 +github.com/ethereum/go-ethereum/les/server_handler.go:315.12,321.31 4 1 +github.com/ethereum/go-ethereum/les/server_handler.go:321.31,323.20 2 0 +github.com/ethereum/go-ethereum/les/server_handler.go:326.4,328.64 3 0 +github.com/ethereum/go-ethereum/les/server_handler.go:323.20,325.5 1 0 +github.com/ethereum/go-ethereum/les/server_handler.go:333.39,336.3 2 0 +github.com/ethereum/go-ethereum/les/server_handler.go:341.55,343.2 1 1 +github.com/ethereum/go-ethereum/les/server_handler.go:346.47,348.2 1 1 +github.com/ethereum/go-ethereum/les/server_handler.go:351.44,353.2 1 1 +github.com/ethereum/go-ethereum/les/server_handler.go:356.43,358.2 1 1 +github.com/ethereum/go-ethereum/les/server_handler.go:361.92,363.16 2 1 +github.com/ethereum/go-ethereum/les/server_handler.go:366.2,367.16 2 1 +github.com/ethereum/go-ethereum/les/server_handler.go:370.2,371.51 2 1 +github.com/ethereum/go-ethereum/les/server_handler.go:374.2,374.17 1 1 +github.com/ethereum/go-ethereum/les/server_handler.go:363.16,365.3 1 0 +github.com/ethereum/go-ethereum/les/server_handler.go:367.16,369.3 1 0 +github.com/ethereum/go-ethereum/les/server_handler.go:371.51,373.3 1 1 +github.com/ethereum/go-ethereum/les/server_handler.go:378.74,383.13 2 1 +github.com/ethereum/go-ethereum/les/server_handler.go:391.2,391.29 1 1 +github.com/ethereum/go-ethereum/les/server_handler.go:394.2,395.13 2 1 +github.com/ethereum/go-ethereum/les/server_handler.go:384.19,386.87 2 1 +github.com/ethereum/go-ethereum/les/server_handler.go:387.19,389.99 2 1 +github.com/ethereum/go-ethereum/les/server_handler.go:391.29,393.3 1 0 +github.com/ethereum/go-ethereum/les/server_handler.go:402.41,413.6 6 1 +github.com/ethereum/go-ethereum/les/server_handler.go:413.6,414.10 1 1 +github.com/ethereum/go-ethereum/les/server_handler.go:415.23,419.40 4 1 +github.com/ethereum/go-ethereum/les/server_handler.go:422.4,423.23 2 1 +github.com/ethereum/go-ethereum/les/server_handler.go:429.4,431.97 3 1 +github.com/ethereum/go-ethereum/les/server_handler.go:432.20,433.10 1 1 +github.com/ethereum/go-ethereum/les/server_handler.go:419.40,420.13 1 0 +github.com/ethereum/go-ethereum/les/server_handler.go:423.23,425.91 1 1 +github.com/ethereum/go-ethereum/les/server_handler.go:425.91,427.6 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:151.81,153.39 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:156.2,156.83 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:153.39,155.3 1 0 +github.com/ethereum/go-ethereum/les/server_requests.go:156.83,167.83 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:239.3,239.47 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:167.83,168.31 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:172.4,173.16 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:185.4,185.21 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:188.4,192.11 3 1 +github.com/ethereum/go-ethereum/les/server_requests.go:237.4,237.17 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:168.31,170.5 1 0 +github.com/ethereum/go-ethereum/les/server_requests.go:173.16,174.14 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:174.14,176.23 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:176.23,178.7 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:179.11,181.6 1 0 +github.com/ethereum/go-ethereum/les/server_requests.go:182.10,184.5 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:185.21,186.10 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:193.37,196.22 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:202.38,208.24 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:225.25,227.48 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:233.26,235.46 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:196.22,198.6 1 0 +github.com/ethereum/go-ethereum/les/server_requests.go:198.11,201.6 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:208.24,212.6 3 0 +github.com/ethereum/go-ethereum/les/server_requests.go:212.11,213.61 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:213.61,216.44 3 1 +github.com/ethereum/go-ethereum/les/server_requests.go:216.44,218.8 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:218.13,220.8 1 0 +github.com/ethereum/go-ethereum/les/server_requests.go:221.12,223.7 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:227.48,229.6 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:229.11,231.6 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:244.80,246.39 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:249.2,249.83 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:246.39,248.3 1 0 +github.com/ethereum/go-ethereum/les/server_requests.go:249.83,255.33 3 1 +github.com/ethereum/go-ethereum/les/server_requests.go:270.3,270.48 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:255.33,256.31 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:259.4,259.34 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:262.4,263.19 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:267.4,268.22 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:256.31,258.5 1 0 +github.com/ethereum/go-ethereum/les/server_requests.go:259.34,260.10 1 0 +github.com/ethereum/go-ethereum/les/server_requests.go:263.19,265.13 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:275.73,277.39 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:280.2,280.83 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:277.39,279.3 1 0 +github.com/ethereum/go-ethereum/les/server_requests.go:280.83,286.34 3 1 +github.com/ethereum/go-ethereum/les/server_requests.go:324.3,324.36 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:286.34,287.31 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:291.4,292.21 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:299.4,300.84 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:305.4,308.18 3 1 +github.com/ethereum/go-ethereum/les/server_requests.go:313.4,314.18 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:319.4,320.54 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:287.31,289.5 1 0 +github.com/ethereum/go-ethereum/les/server_requests.go:292.21,295.13 3 0 +github.com/ethereum/go-ethereum/les/server_requests.go:300.84,303.13 3 1 +github.com/ethereum/go-ethereum/les/server_requests.go:308.18,311.13 3 1 +github.com/ethereum/go-ethereum/les/server_requests.go:314.18,316.13 2 0 +github.com/ethereum/go-ethereum/les/server_requests.go:320.54,321.10 1 0 +github.com/ethereum/go-ethereum/les/server_requests.go:329.77,331.39 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:334.2,334.83 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:331.39,333.3 1 0 +github.com/ethereum/go-ethereum/les/server_requests.go:334.83,340.33 3 1 +github.com/ethereum/go-ethereum/les/server_requests.go:363.3,363.47 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:340.33,341.31 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:344.4,344.34 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:348.4,349.22 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:356.4,356.62 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:341.31,343.5 1 0 +github.com/ethereum/go-ethereum/les/server_requests.go:344.34,345.10 1 0 +github.com/ethereum/go-ethereum/les/server_requests.go:349.22,350.103 1 0 +github.com/ethereum/go-ethereum/les/server_requests.go:350.103,352.14 2 0 +github.com/ethereum/go-ethereum/les/server_requests.go:356.62,358.5 1 0 +github.com/ethereum/go-ethereum/les/server_requests.go:358.10,361.5 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:368.75,370.39 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:373.2,373.83 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:370.39,372.3 1 0 +github.com/ethereum/go-ethereum/les/server_requests.go:373.83,383.34 4 1 +github.com/ethereum/go-ethereum/les/server_requests.go:446.3,446.52 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:383.34,384.31 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:388.4,388.34 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:407.4,407.31 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:412.4,415.31 3 1 +github.com/ethereum/go-ethereum/les/server_requests.go:438.4,438.76 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:442.4,442.45 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:384.31,386.5 1 0 +github.com/ethereum/go-ethereum/les/server_requests.go:388.34,391.66 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:398.5,399.85 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:404.5,404.23 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:391.66,394.14 3 0 +github.com/ethereum/go-ethereum/les/server_requests.go:399.85,402.14 3 1 +github.com/ethereum/go-ethereum/les/server_requests.go:407.31,409.13 2 0 +github.com/ethereum/go-ethereum/les/server_requests.go:416.11,419.34 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:423.12,426.19 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:431.5,432.34 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:419.34,421.14 2 0 +github.com/ethereum/go-ethereum/les/server_requests.go:426.19,429.14 3 0 +github.com/ethereum/go-ethereum/les/server_requests.go:432.34,434.14 2 0 +github.com/ethereum/go-ethereum/les/server_requests.go:438.76,440.13 2 0 +github.com/ethereum/go-ethereum/les/server_requests.go:442.45,443.10 1 0 +github.com/ethereum/go-ethereum/les/server_requests.go:451.85,453.39 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:456.2,456.83 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:453.39,455.3 1 0 +github.com/ethereum/go-ethereum/les/server_requests.go:456.83,466.34 4 1 +github.com/ethereum/go-ethereum/les/server_requests.go:500.3,500.103 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:466.34,467.31 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:470.4,470.80 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:474.4,474.22 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:482.4,483.39 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:486.4,486.93 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:496.4,496.54 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:467.31,469.5 1 0 +github.com/ethereum/go-ethereum/les/server_requests.go:470.80,473.5 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:474.22,476.5 1 0 +github.com/ethereum/go-ethereum/les/server_requests.go:483.39,485.5 1 0 +github.com/ethereum/go-ethereum/les/server_requests.go:486.93,489.19 3 1 +github.com/ethereum/go-ethereum/les/server_requests.go:493.5,494.26 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:489.19,492.6 2 0 +github.com/ethereum/go-ethereum/les/server_requests.go:496.54,497.10 1 0 +github.com/ethereum/go-ethereum/les/server_requests.go:505.72,507.39 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:510.2,511.83 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:507.39,509.3 1 0 +github.com/ethereum/go-ethereum/les/server_requests.go:511.83,513.28 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:532.3,532.41 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:513.28,514.31 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:517.4,519.47 3 1 +github.com/ethereum/go-ethereum/les/server_requests.go:514.31,516.5 1 0 +github.com/ethereum/go-ethereum/les/server_requests.go:519.47,522.29 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:525.5,525.64 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:529.5,529.39 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:522.29,524.6 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:525.64,527.14 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:537.77,539.39 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:542.2,542.83 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:539.39,541.3 1 0 +github.com/ethereum/go-ethereum/les/server_requests.go:542.83,544.33 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:550.3,550.41 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:544.33,545.31 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:548.4,548.38 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:545.31,547.5 1 0 +github.com/ethereum/go-ethereum/les/server_requests.go:555.65,561.41 3 1 +github.com/ethereum/go-ethereum/les/server_requests.go:568.2,568.13 1 1 +github.com/ethereum/go-ethereum/les/server_requests.go:561.41,563.20 2 1 +github.com/ethereum/go-ethereum/les/server_requests.go:563.20,566.4 2 1 +github.com/ethereum/go-ethereum/les/bloombits.go:46.66,47.43 1 0 +github.com/ethereum/go-ethereum/les/bloombits.go:47.43,48.13 1 0 +github.com/ethereum/go-ethereum/les/bloombits.go:48.13,50.8 2 0 +github.com/ethereum/go-ethereum/les/bloombits.go:50.8,51.12 1 0 +github.com/ethereum/go-ethereum/les/bloombits.go:52.24,53.12 1 0 +github.com/ethereum/go-ethereum/les/bloombits.go:55.41,59.20 4 0 +github.com/ethereum/go-ethereum/les/bloombits.go:70.6,70.21 1 0 +github.com/ethereum/go-ethereum/les/bloombits.go:59.20,60.36 1 0 +github.com/ethereum/go-ethereum/les/bloombits.go:60.36,61.96 1 0 +github.com/ethereum/go-ethereum/les/bloombits.go:61.96,63.9 1 0 +github.com/ethereum/go-ethereum/les/bloombits.go:63.14,65.9 1 0 +github.com/ethereum/go-ethereum/les/bloombits.go:67.12,69.7 1 0 +github.com/ethereum/go-ethereum/les/commons.go:40.67,42.2 1 1 +github.com/ethereum/go-ethereum/les/commons.go:75.208,77.35 2 0 +github.com/ethereum/go-ethereum/les/commons.go:91.2,91.15 1 0 +github.com/ethereum/go-ethereum/les/commons.go:77.35,84.58 2 0 +github.com/ethereum/go-ethereum/les/commons.go:84.58,86.5 1 0 +github.com/ethereum/go-ethereum/les/commons.go:95.45,106.2 3 0 +github.com/ethereum/go-ethereum/les/commons.go:111.71,115.26 3 0 +github.com/ethereum/go-ethereum/les/commons.go:118.2,118.19 1 0 +github.com/ethereum/go-ethereum/les/commons.go:122.2,122.40 1 0 +github.com/ethereum/go-ethereum/les/commons.go:115.26,117.3 1 0 +github.com/ethereum/go-ethereum/les/commons.go:118.19,121.3 1 0 +github.com/ethereum/go-ethereum/les/commons.go:130.77,138.2 2 0 +github.com/ethereum/go-ethereum/les/commons.go:141.136,143.19 2 0 +github.com/ethereum/go-ethereum/les/commons.go:147.2,147.19 1 0 +github.com/ethereum/go-ethereum/les/commons.go:151.2,151.92 1 0 +github.com/ethereum/go-ethereum/les/commons.go:155.2,160.15 6 0 +github.com/ethereum/go-ethereum/les/commons.go:143.19,146.3 1 0 +github.com/ethereum/go-ethereum/les/commons.go:147.19,150.3 2 0 +github.com/ethereum/go-ethereum/les/commons.go:151.92,154.3 2 0 +github.com/ethereum/go-ethereum/les/fetcher.go:80.48,86.43 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:89.2,93.43 3 1 +github.com/ethereum/go-ethereum/les/fetcher.go:86.43,88.3 1 0 +github.com/ethereum/go-ethereum/les/fetcher.go:93.43,94.58 1 0 +github.com/ethereum/go-ethereum/les/fetcher.go:97.3,98.43 2 0 +github.com/ethereum/go-ethereum/les/fetcher.go:94.58,96.4 1 0 +github.com/ethereum/go-ethereum/les/fetcher.go:104.61,109.40 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:120.2,120.16 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:124.2,124.16 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:109.40,111.18 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:114.3,114.31 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:117.3,118.39 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:111.18,112.12 1 0 +github.com/ethereum/go-ethereum/les/fetcher.go:114.31,115.9 1 0 +github.com/ethereum/go-ethereum/les/fetcher.go:120.16,123.3 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:160.199,162.48 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:166.2,166.28 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:167.2,167.29 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:168.2,168.57 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:176.2,192.10 3 1 +github.com/ethereum/go-ethereum/les/fetcher.go:162.48,165.3 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:166.28,166.76 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:167.29,167.53 1 0 +github.com/ethereum/go-ethereum/les/fetcher.go:168.57,171.17 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:174.3,174.53 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:171.17,173.4 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:195.32,199.2 3 1 +github.com/ethereum/go-ethereum/les/fetcher.go:201.31,205.2 3 1 +github.com/ethereum/go-ethereum/les/fetcher.go:208.52,213.2 3 1 +github.com/ethereum/go-ethereum/les/fetcher.go:216.54,221.2 3 1 +github.com/ethereum/go-ethereum/les/fetcher.go:224.55,229.2 3 1 +github.com/ethereum/go-ethereum/les/fetcher.go:233.82,237.32 3 1 +github.com/ethereum/go-ethereum/les/fetcher.go:237.32,238.23 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:238.23,240.4 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:257.35,277.38 5 1 +github.com/ethereum/go-ethereum/les/fetcher.go:284.2,284.76 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:301.2,301.6 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:277.38,280.3 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:284.76,289.56 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:299.3,299.25 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:289.56,290.90 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:297.4,297.15 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:290.90,292.58 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:292.58,295.6 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:301.6,302.10 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:303.31,308.19 4 1 +github.com/ethereum/go-ethereum/les/fetcher.go:314.4,314.62 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:319.4,322.51 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:325.4,328.24 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:344.4,344.25 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:361.29,363.26 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:367.25,368.41 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:375.4,375.45 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:377.30,378.47 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:402.23,404.15 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:407.4,411.57 3 1 +github.com/ethereum/go-ethereum/les/fetcher.go:429.4,429.32 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:433.4,433.28 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:437.31,441.11 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:461.4,462.28 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:465.4,465.90 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:467.20,468.10 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:308.19,310.13 2 0 +github.com/ethereum/go-ethereum/les/fetcher.go:314.62,317.13 3 0 +github.com/ethereum/go-ethereum/les/fetcher.go:322.51,323.13 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:328.24,334.84 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:340.5,341.100 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:334.84,338.14 4 1 +github.com/ethereum/go-ethereum/les/fetcher.go:344.25,348.28 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:348.28,349.85 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:355.6,357.93 3 1 +github.com/ethereum/go-ethereum/les/fetcher.go:349.85,353.15 4 1 +github.com/ethereum/go-ethereum/les/fetcher.go:363.26,365.5 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:368.41,369.67 1 0 +github.com/ethereum/go-ethereum/les/fetcher.go:369.67,373.6 3 0 +github.com/ethereum/go-ethereum/les/fetcher.go:378.47,386.31 3 1 +github.com/ethereum/go-ethereum/les/fetcher.go:391.5,391.43 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:396.5,396.91 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:386.31,389.14 3 0 +github.com/ethereum/go-ethereum/les/fetcher.go:391.43,394.14 3 0 +github.com/ethereum/go-ethereum/les/fetcher.go:397.10,400.5 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:404.15,405.13 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:411.57,413.34 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:427.5,427.16 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:413.34,414.74 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:414.74,415.53 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:420.7,421.49 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:415.53,417.13 2 0 +github.com/ethereum/go-ethereum/les/fetcher.go:421.49,423.13 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:429.32,432.5 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:433.28,435.5 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:441.11,445.46 4 1 +github.com/ethereum/go-ethereum/les/fetcher.go:453.5,453.27 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:445.46,447.60 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:450.6,451.57 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:447.60,448.12 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:453.27,454.62 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:457.6,457.33 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:454.62,456.7 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:462.28,464.5 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:474.68,475.9 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:476.79,476.79 0 1 +github.com/ethereum/go-ethereum/les/fetcher.go:477.19,478.9 1 0 +github.com/ethereum/go-ethereum/les/fetcher.go:483.86,484.9 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:485.93,485.93 0 1 +github.com/ethereum/go-ethereum/les/fetcher.go:486.19,486.19 0 0 +github.com/ethereum/go-ethereum/les/fetcher.go:496.85,497.38 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:497.38,499.38 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:512.3,513.13 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:499.38,499.103 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:500.36,500.78 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:501.38,506.19 4 1 +github.com/ethereum/go-ethereum/les/fetcher.go:506.19,509.6 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:518.47,519.35 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:523.2,524.38 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:527.2,527.21 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:519.35,521.3 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:524.38,526.3 1 0 +github.com/ethereum/go-ethereum/les/fetcher.go:531.112,533.9 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:538.2,538.17 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:534.99,534.99 0 1 +github.com/ethereum/go-ethereum/les/fetcher.go:535.19,536.13 1 0 +github.com/ethereum/go-ethereum/les/fetcher.go:542.89,544.24 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:549.2,550.31 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:555.2,555.55 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:544.24,547.3 2 1 +github.com/ethereum/go-ethereum/les/fetcher.go:550.31,551.33 1 1 +github.com/ethereum/go-ethereum/les/fetcher.go:551.33,553.4 1 1 +github.com/ethereum/go-ethereum/les/peer.go:86.69,89.16 3 1 +github.com/ethereum/go-ethereum/les/peer.go:92.2,93.16 2 1 +github.com/ethereum/go-ethereum/les/peer.go:96.2,96.25 1 1 +github.com/ethereum/go-ethereum/les/peer.go:89.16,91.3 1 1 +github.com/ethereum/go-ethereum/les/peer.go:93.16,95.3 1 1 +github.com/ethereum/go-ethereum/les/peer.go:99.54,102.26 3 1 +github.com/ethereum/go-ethereum/les/peer.go:106.2,106.16 1 1 +github.com/ethereum/go-ethereum/les/peer.go:102.26,105.3 2 1 +github.com/ethereum/go-ethereum/les/peer.go:109.61,111.9 2 1 +github.com/ethereum/go-ethereum/les/peer.go:114.2,114.16 1 1 +github.com/ethereum/go-ethereum/les/peer.go:117.2,117.34 1 1 +github.com/ethereum/go-ethereum/les/peer.go:111.9,113.3 1 1 +github.com/ethereum/go-ethereum/les/peer.go:114.16,116.3 1 1 +github.com/ethereum/go-ethereum/les/peer.go:146.39,148.2 1 1 +github.com/ethereum/go-ethereum/les/peer.go:151.39,153.2 1 1 +github.com/ethereum/go-ethereum/les/peer.go:157.48,159.2 1 1 +github.com/ethereum/go-ethereum/les/peer.go:162.39,164.2 1 0 +github.com/ethereum/go-ethereum/les/peer.go:175.40,181.2 1 0 +github.com/ethereum/go-ethereum/les/peer.go:184.49,189.2 3 1 +github.com/ethereum/go-ethereum/les/peer.go:192.37,197.2 3 1 +github.com/ethereum/go-ethereum/les/peer.go:200.67,205.2 3 1 +github.com/ethereum/go-ethereum/les/peer.go:209.89,215.12 2 1 +github.com/ethereum/go-ethereum/les/peer.go:218.2,218.12 1 1 +github.com/ethereum/go-ethereum/les/peer.go:240.2,242.25 3 1 +github.com/ethereum/go-ethereum/les/peer.go:252.2,252.22 1 1 +github.com/ethereum/go-ethereum/les/peer.go:215.12,217.3 1 1 +github.com/ethereum/go-ethereum/les/peer.go:218.12,221.17 2 1 +github.com/ethereum/go-ethereum/les/peer.go:225.3,225.28 1 1 +github.com/ethereum/go-ethereum/les/peer.go:229.3,229.36 1 1 +github.com/ethereum/go-ethereum/les/peer.go:234.3,234.47 1 1 +github.com/ethereum/go-ethereum/les/peer.go:238.3,238.14 1 1 +github.com/ethereum/go-ethereum/les/peer.go:221.17,224.4 2 0 +github.com/ethereum/go-ethereum/les/peer.go:225.28,228.4 2 0 +github.com/ethereum/go-ethereum/les/peer.go:229.36,232.4 2 0 +github.com/ethereum/go-ethereum/les/peer.go:234.47,237.4 2 0 +github.com/ethereum/go-ethereum/les/peer.go:242.25,243.10 1 1 +github.com/ethereum/go-ethereum/les/peer.go:244.22,245.18 1 1 +github.com/ethereum/go-ethereum/les/peer.go:248.20,249.35 1 0 +github.com/ethereum/go-ethereum/les/peer.go:245.18,247.5 1 0 +github.com/ethereum/go-ethereum/les/peer.go:259.223,278.23 10 1 +github.com/ethereum/go-ethereum/les/peer.go:282.2,282.25 1 1 +github.com/ethereum/go-ethereum/les/peer.go:286.2,287.16 2 1 +github.com/ethereum/go-ethereum/les/peer.go:290.2,291.31 2 1 +github.com/ethereum/go-ethereum/les/peer.go:294.2,296.63 3 1 +github.com/ethereum/go-ethereum/les/peer.go:299.2,299.57 1 1 +github.com/ethereum/go-ethereum/les/peer.go:302.2,302.59 1 1 +github.com/ethereum/go-ethereum/les/peer.go:305.2,305.25 1 1 +github.com/ethereum/go-ethereum/les/peer.go:308.2,308.27 1 1 +github.com/ethereum/go-ethereum/les/peer.go:311.2,311.32 1 1 +github.com/ethereum/go-ethereum/les/peer.go:315.2,315.23 1 1 +github.com/ethereum/go-ethereum/les/peer.go:324.2,324.25 1 1 +github.com/ethereum/go-ethereum/les/peer.go:327.2,327.12 1 1 +github.com/ethereum/go-ethereum/les/peer.go:278.23,280.3 1 1 +github.com/ethereum/go-ethereum/les/peer.go:282.25,284.3 1 1 +github.com/ethereum/go-ethereum/les/peer.go:287.16,289.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:291.31,293.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:296.63,298.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:299.57,301.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:302.59,304.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:305.25,307.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:308.27,310.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:311.32,313.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:315.23,317.53 2 1 +github.com/ethereum/go-ethereum/les/peer.go:320.3,320.44 1 1 +github.com/ethereum/go-ethereum/les/peer.go:317.53,319.4 1 0 +github.com/ethereum/go-ethereum/les/peer.go:320.44,322.4 1 0 +github.com/ethereum/go-ethereum/les/peer.go:324.25,326.3 1 1 +github.com/ethereum/go-ethereum/les/peer.go:331.31,334.2 2 1 +github.com/ethereum/go-ethereum/les/peer.go:366.110,380.2 1 1 +github.com/ethereum/go-ethereum/les/peer.go:384.53,386.24 2 1 +github.com/ethereum/go-ethereum/les/peer.go:399.2,400.43 2 1 +github.com/ethereum/go-ethereum/les/peer.go:386.24,388.3 1 1 +github.com/ethereum/go-ethereum/les/peer.go:388.8,393.24 4 1 +github.com/ethereum/go-ethereum/les/peer.go:393.24,395.4 1 1 +github.com/ethereum/go-ethereum/les/peer.go:395.9,397.4 1 0 +github.com/ethereum/go-ethereum/les/peer.go:405.31,406.50 1 0 +github.com/ethereum/go-ethereum/les/peer.go:406.50,408.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:413.33,415.2 1 0 +github.com/ethereum/go-ethereum/les/peer.go:419.82,425.2 2 1 +github.com/ethereum/go-ethereum/les/peer.go:427.93,430.2 2 1 +github.com/ethereum/go-ethereum/les/peer.go:434.119,437.2 2 1 +github.com/ethereum/go-ethereum/les/peer.go:441.109,444.2 2 1 +github.com/ethereum/go-ethereum/les/peer.go:448.78,451.2 2 1 +github.com/ethereum/go-ethereum/les/peer.go:455.70,458.2 2 1 +github.com/ethereum/go-ethereum/les/peer.go:461.80,464.2 2 1 +github.com/ethereum/go-ethereum/les/peer.go:467.73,470.2 2 1 +github.com/ethereum/go-ethereum/les/peer.go:473.88,476.2 2 1 +github.com/ethereum/go-ethereum/les/peer.go:479.82,482.2 2 1 +github.com/ethereum/go-ethereum/les/peer.go:485.80,488.25 3 0 +github.com/ethereum/go-ethereum/les/peer.go:491.2,491.55 1 0 +github.com/ethereum/go-ethereum/les/peer.go:488.25,490.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:495.74,497.2 1 1 +github.com/ethereum/go-ethereum/les/peer.go:501.72,506.18 4 1 +github.com/ethereum/go-ethereum/les/peer.go:509.2,510.32 2 1 +github.com/ethereum/go-ethereum/les/peer.go:513.2,513.13 1 1 +github.com/ethereum/go-ethereum/les/peer.go:506.18,508.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:510.32,512.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:518.62,523.18 4 0 +github.com/ethereum/go-ethereum/les/peer.go:526.2,528.21 3 0 +github.com/ethereum/go-ethereum/les/peer.go:531.2,531.32 1 0 +github.com/ethereum/go-ethereum/les/peer.go:534.2,534.13 1 0 +github.com/ethereum/go-ethereum/les/peer.go:523.18,525.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:528.21,530.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:531.32,533.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:538.84,542.27 3 1 +github.com/ethereum/go-ethereum/les/peer.go:545.2,547.14 3 1 +github.com/ethereum/go-ethereum/les/peer.go:554.2,554.85 1 1 +github.com/ethereum/go-ethereum/les/peer.go:542.27,544.3 1 1 +github.com/ethereum/go-ethereum/les/peer.go:547.14,550.3 2 1 +github.com/ethereum/go-ethereum/les/peer.go:550.8,553.3 2 1 +github.com/ethereum/go-ethereum/les/peer.go:559.60,565.120 4 1 +github.com/ethereum/go-ethereum/les/peer.go:570.2,571.48 2 1 +github.com/ethereum/go-ethereum/les/peer.go:565.120,569.3 2 1 +github.com/ethereum/go-ethereum/les/peer.go:571.48,573.38 2 0 +github.com/ethereum/go-ethereum/les/peer.go:573.38,575.4 1 0 +github.com/ethereum/go-ethereum/les/peer.go:581.79,586.2 3 1 +github.com/ethereum/go-ethereum/les/peer.go:590.103,593.107 1 1 +github.com/ethereum/go-ethereum/les/peer.go:593.107,598.16 2 1 +github.com/ethereum/go-ethereum/les/peer.go:601.3,601.56 1 1 +github.com/ethereum/go-ethereum/les/peer.go:598.16,600.4 1 1 +github.com/ethereum/go-ethereum/les/peer.go:602.34,608.50 2 1 +github.com/ethereum/go-ethereum/les/peer.go:611.3,611.54 1 1 +github.com/ethereum/go-ethereum/les/peer.go:614.3,614.52 1 1 +github.com/ethereum/go-ethereum/les/peer.go:617.3,618.56 2 1 +github.com/ethereum/go-ethereum/les/peer.go:621.3,621.58 1 1 +github.com/ethereum/go-ethereum/les/peer.go:624.3,624.56 1 1 +github.com/ethereum/go-ethereum/les/peer.go:627.3,627.58 1 1 +github.com/ethereum/go-ethereum/les/peer.go:630.3,630.38 1 1 +github.com/ethereum/go-ethereum/les/peer.go:633.3,633.24 1 1 +github.com/ethereum/go-ethereum/les/peer.go:645.3,645.35 1 1 +github.com/ethereum/go-ethereum/les/peer.go:649.3,650.71 2 1 +github.com/ethereum/go-ethereum/les/peer.go:653.3,653.75 1 1 +github.com/ethereum/go-ethereum/les/peer.go:656.3,657.59 2 1 +github.com/ethereum/go-ethereum/les/peer.go:660.3,667.22 6 1 +github.com/ethereum/go-ethereum/les/peer.go:674.3,674.13 1 1 +github.com/ethereum/go-ethereum/les/peer.go:608.50,610.4 1 0 +github.com/ethereum/go-ethereum/les/peer.go:611.54,613.4 1 0 +github.com/ethereum/go-ethereum/les/peer.go:614.52,616.4 1 0 +github.com/ethereum/go-ethereum/les/peer.go:618.56,620.4 1 0 +github.com/ethereum/go-ethereum/les/peer.go:621.58,623.4 1 1 +github.com/ethereum/go-ethereum/les/peer.go:624.56,626.4 1 0 +github.com/ethereum/go-ethereum/les/peer.go:627.58,629.4 1 0 +github.com/ethereum/go-ethereum/les/peer.go:630.38,632.4 1 0 +github.com/ethereum/go-ethereum/les/peer.go:633.24,635.64 2 1 +github.com/ethereum/go-ethereum/les/peer.go:638.4,638.34 1 1 +github.com/ethereum/go-ethereum/les/peer.go:635.64,637.5 1 0 +github.com/ethereum/go-ethereum/les/peer.go:639.9,644.4 1 1 +github.com/ethereum/go-ethereum/les/peer.go:645.35,647.4 1 0 +github.com/ethereum/go-ethereum/les/peer.go:650.71,652.4 1 0 +github.com/ethereum/go-ethereum/les/peer.go:653.75,655.4 1 0 +github.com/ethereum/go-ethereum/les/peer.go:657.59,659.4 1 0 +github.com/ethereum/go-ethereum/les/peer.go:667.22,668.40 1 1 +github.com/ethereum/go-ethereum/les/peer.go:668.40,669.34 1 1 +github.com/ethereum/go-ethereum/les/peer.go:669.34,671.6 1 0 +github.com/ethereum/go-ethereum/les/peer.go:680.65,683.16 3 0 +github.com/ethereum/go-ethereum/les/peer.go:688.2,688.19 1 0 +github.com/ethereum/go-ethereum/les/peer.go:683.16,685.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:685.8,687.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:692.39,696.31 3 1 +github.com/ethereum/go-ethereum/les/peer.go:699.2,700.37 2 0 +github.com/ethereum/go-ethereum/les/peer.go:708.2,708.42 1 0 +github.com/ethereum/go-ethereum/les/peer.go:696.31,698.3 1 1 +github.com/ethereum/go-ethereum/les/peer.go:700.37,701.48 1 0 +github.com/ethereum/go-ethereum/les/peer.go:701.48,703.20 2 0 +github.com/ethereum/go-ethereum/les/peer.go:703.20,705.5 1 0 +github.com/ethereum/go-ethereum/les/peer.go:718.69,720.23 2 1 +github.com/ethereum/go-ethereum/les/peer.go:723.2,723.19 1 1 +github.com/ethereum/go-ethereum/les/peer.go:720.23,722.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:727.49,729.23 2 1 +github.com/ethereum/go-ethereum/les/peer.go:733.2,737.9 5 0 +github.com/ethereum/go-ethereum/les/peer.go:740.2,745.35 3 0 +github.com/ethereum/go-ethereum/les/peer.go:753.2,754.35 2 0 +github.com/ethereum/go-ethereum/les/peer.go:729.23,732.3 2 1 +github.com/ethereum/go-ethereum/les/peer.go:737.9,739.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:745.35,748.3 2 0 +github.com/ethereum/go-ethereum/les/peer.go:748.8,752.3 3 0 +github.com/ethereum/go-ethereum/les/peer.go:785.96,799.2 1 1 +github.com/ethereum/go-ethereum/les/peer.go:803.44,804.51 1 1 +github.com/ethereum/go-ethereum/les/peer.go:813.2,813.13 1 1 +github.com/ethereum/go-ethereum/les/peer.go:804.51,805.27 1 0 +github.com/ethereum/go-ethereum/les/peer.go:805.27,809.4 1 0 +github.com/ethereum/go-ethereum/les/peer.go:809.9,811.4 1 0 +github.com/ethereum/go-ethereum/les/peer.go:817.39,819.2 1 1 +github.com/ethereum/go-ethereum/les/peer.go:822.50,824.2 1 1 +github.com/ethereum/go-ethereum/les/peer.go:830.31,831.22 1 1 +github.com/ethereum/go-ethereum/les/peer.go:838.2,838.42 1 1 +github.com/ethereum/go-ethereum/les/peer.go:831.22,837.3 3 0 +github.com/ethereum/go-ethereum/les/peer.go:838.42,839.13 1 1 +github.com/ethereum/go-ethereum/les/peer.go:839.13,842.8 3 1 +github.com/ethereum/go-ethereum/les/peer.go:842.8,844.22 2 1 +github.com/ethereum/go-ethereum/les/peer.go:847.5,847.31 1 1 +github.com/ethereum/go-ethereum/les/peer.go:851.5,853.11 3 1 +github.com/ethereum/go-ethereum/les/peer.go:844.22,846.6 1 0 +github.com/ethereum/go-ethereum/les/peer.go:847.31,849.14 2 0 +github.com/ethereum/go-ethereum/les/peer.go:869.39,875.2 2 1 +github.com/ethereum/go-ethereum/les/peer.go:878.31,880.2 1 1 +github.com/ethereum/go-ethereum/les/peer.go:883.86,886.2 2 1 +github.com/ethereum/go-ethereum/les/peer.go:890.86,893.2 2 1 +github.com/ethereum/go-ethereum/les/peer.go:897.69,900.2 2 1 +github.com/ethereum/go-ethereum/les/peer.go:904.85,907.2 2 1 +github.com/ethereum/go-ethereum/les/peer.go:910.80,913.2 2 1 +github.com/ethereum/go-ethereum/les/peer.go:916.87,919.2 2 1 +github.com/ethereum/go-ethereum/les/peer.go:922.81,925.2 2 1 +github.com/ethereum/go-ethereum/les/peer.go:929.63,931.2 1 1 +github.com/ethereum/go-ethereum/les/peer.go:934.56,936.2 1 1 +github.com/ethereum/go-ethereum/les/peer.go:939.43,944.2 3 0 +github.com/ethereum/go-ethereum/les/peer.go:950.68,954.38 3 1 +github.com/ethereum/go-ethereum/les/peer.go:963.2,963.36 1 1 +github.com/ethereum/go-ethereum/les/peer.go:966.2,966.21 1 1 +github.com/ethereum/go-ethereum/les/peer.go:954.38,960.22 6 1 +github.com/ethereum/go-ethereum/les/peer.go:960.22,960.70 1 1 +github.com/ethereum/go-ethereum/les/peer.go:963.36,965.3 1 1 +github.com/ethereum/go-ethereum/les/peer.go:973.61,978.21 4 1 +github.com/ethereum/go-ethereum/les/peer.go:978.21,980.3 1 1 +github.com/ethereum/go-ethereum/les/peer.go:984.41,985.30 1 1 +github.com/ethereum/go-ethereum/les/peer.go:988.2,988.70 1 1 +github.com/ethereum/go-ethereum/les/peer.go:985.30,987.3 1 1 +github.com/ethereum/go-ethereum/les/peer.go:988.70,989.26 1 1 +github.com/ethereum/go-ethereum/les/peer.go:994.3,994.106 1 1 +github.com/ethereum/go-ethereum/les/peer.go:989.26,989.60 1 1 +github.com/ethereum/go-ethereum/les/peer.go:989.62,991.4 1 0 +github.com/ethereum/go-ethereum/les/peer.go:991.9,993.4 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1003.37,1004.22 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1011.2,1011.42 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1004.22,1010.3 3 0 +github.com/ethereum/go-ethereum/les/peer.go:1011.42,1012.13 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1012.13,1015.8 3 0 +github.com/ethereum/go-ethereum/les/peer.go:1015.8,1017.22 2 0 +github.com/ethereum/go-ethereum/les/peer.go:1020.5,1020.31 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1017.22,1019.6 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1020.31,1022.6 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1022.11,1025.11 3 0 +github.com/ethereum/go-ethereum/les/peer.go:1034.169,1036.34 2 1 +github.com/ethereum/go-ethereum/les/peer.go:1043.2,1043.42 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1046.2,1046.54 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1051.2,1052.95 2 1 +github.com/ethereum/go-ethereum/les/peer.go:1036.34,1037.35 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1037.35,1039.4 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1039.9,1041.4 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1043.42,1045.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1046.54,1048.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1052.95,1054.44 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1068.3,1068.24 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1071.3,1075.45 4 1 +github.com/ethereum/go-ethereum/les/peer.go:1080.3,1086.56 4 1 +github.com/ethereum/go-ethereum/les/peer.go:1054.44,1062.26 5 1 +github.com/ethereum/go-ethereum/les/peer.go:1065.4,1066.41 2 1 +github.com/ethereum/go-ethereum/les/peer.go:1062.26,1064.5 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1068.24,1070.4 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1075.45,1077.4 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1077.9,1079.4 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1086.56,1088.17 2 1 +github.com/ethereum/go-ethereum/les/peer.go:1088.17,1091.5 2 1 +github.com/ethereum/go-ethereum/les/peer.go:1093.34,1095.15 2 1 +github.com/ethereum/go-ethereum/les/peer.go:1103.3,1103.13 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1095.15,1097.4 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1097.9,1098.56 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1098.56,1101.5 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1107.36,1111.2 3 1 +github.com/ethereum/go-ethereum/les/peer.go:1113.42,1117.2 3 1 +github.com/ethereum/go-ethereum/les/peer.go:1120.35,1122.2 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1144.40,1146.2 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1150.62,1155.29 4 1 +github.com/ethereum/go-ethereum/les/peer.go:1155.29,1157.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1161.64,1165.35 3 0 +github.com/ethereum/go-ethereum/les/peer.go:1165.35,1166.15 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1166.15,1169.4 2 0 +github.com/ethereum/go-ethereum/les/peer.go:1175.59,1179.15 3 1 +github.com/ethereum/go-ethereum/les/peer.go:1182.2,1182.42 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1185.2,1186.37 2 1 +github.com/ethereum/go-ethereum/les/peer.go:1189.2,1189.12 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1179.15,1181.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1182.42,1184.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1186.37,1188.3 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1195.54,1200.9 4 1 +github.com/ethereum/go-ethereum/les/peer.go:1203.2,1204.37 2 1 +github.com/ethereum/go-ethereum/les/peer.go:1207.2,1208.12 2 1 +github.com/ethereum/go-ethereum/les/peer.go:1200.9,1202.3 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1204.37,1206.3 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1212.41,1217.27 4 1 +github.com/ethereum/go-ethereum/les/peer.go:1220.2,1220.12 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1217.27,1219.3 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1224.54,1229.2 3 1 +github.com/ethereum/go-ethereum/les/peer.go:1232.36,1237.2 3 1 +github.com/ethereum/go-ethereum/les/peer.go:1242.49,1250.29 4 0 +github.com/ethereum/go-ethereum/les/peer.go:1255.2,1255.17 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1250.29,1251.56 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1251.56,1253.4 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1259.51,1264.29 4 1 +github.com/ethereum/go-ethereum/les/peer.go:1267.2,1267.13 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1264.29,1266.3 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1272.34,1276.29 3 1 +github.com/ethereum/go-ethereum/les/peer.go:1279.2,1279.18 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1276.29,1278.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1294.40,1296.2 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1300.59,1304.15 3 1 +github.com/ethereum/go-ethereum/les/peer.go:1307.2,1307.44 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1310.2,1312.12 3 1 +github.com/ethereum/go-ethereum/les/peer.go:1304.15,1306.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1307.44,1309.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1318.56,1323.9 4 1 +github.com/ethereum/go-ethereum/les/peer.go:1326.2,1328.12 3 1 +github.com/ethereum/go-ethereum/les/peer.go:1323.9,1325.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1332.43,1337.27 4 0 +github.com/ethereum/go-ethereum/les/peer.go:1340.2,1340.12 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1337.27,1339.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1344.56,1349.2 3 0 +github.com/ethereum/go-ethereum/les/peer.go:1352.36,1357.2 3 0 +github.com/ethereum/go-ethereum/les/peer.go:1361.69,1363.2 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1366.59,1371.32 4 1 +github.com/ethereum/go-ethereum/les/peer.go:1371.32,1373.3 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1378.57,1379.31 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1382.2,1382.24 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1379.31,1381.3 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1383.26,1384.37 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1385.26,1386.53 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1390.3,1390.39 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1386.53,1389.4 2 0 +github.com/ethereum/go-ethereum/les/peer.go:1396.34,1400.29 3 1 +github.com/ethereum/go-ethereum/les/peer.go:1403.2,1403.18 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1400.29,1402.3 1 1 +github.com/ethereum/go-ethereum/les/peer.go:1417.32,1419.2 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1421.54,1425.14 3 0 +github.com/ethereum/go-ethereum/les/peer.go:1428.2,1428.39 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1431.2,1432.12 2 0 +github.com/ethereum/go-ethereum/les/peer.go:1425.14,1427.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1428.39,1430.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1435.56,1439.14 3 0 +github.com/ethereum/go-ethereum/les/peer.go:1442.2,1442.40 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1445.2,1447.12 3 0 +github.com/ethereum/go-ethereum/les/peer.go:1439.14,1441.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1442.40,1444.3 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1450.29,1454.26 3 0 +github.com/ethereum/go-ethereum/les/peer.go:1457.2,1457.17 1 0 +github.com/ethereum/go-ethereum/les/peer.go:1454.26,1456.3 1 0 +github.com/ethereum/go-ethereum/tests/bor/helper.go:48.77,50.16 2 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:53.2,54.57 2 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:57.2,63.16 4 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:67.2,71.3 2 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:50.16,52.3 1 0 +github.com/ethereum/go-ethereum/tests/bor/helper.go:54.57,56.3 1 0 +github.com/ethereum/go-ethereum/tests/bor/helper.go:63.16,65.3 1 0 +github.com/ethereum/go-ethereum/tests/bor/helper.go:74.79,75.68 1 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:75.68,77.3 1 0 +github.com/ethereum/go-ethereum/tests/bor/helper.go:80.151,85.19 4 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:89.2,98.15 8 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:105.2,105.17 1 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:115.2,115.44 1 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:123.2,124.16 2 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:127.2,128.16 2 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:131.2,132.41 2 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:85.19,87.3 1 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:98.15,102.3 2 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:102.8,102.24 1 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:102.24,104.3 1 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:105.17,109.41 4 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:112.3,112.42 1 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:109.41,111.4 1 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:115.44,117.47 2 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:117.47,120.4 2 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:124.16,126.3 1 0 +github.com/ethereum/go-ethereum/tests/bor/helper.go:128.16,130.3 1 0 +github.com/ethereum/go-ethereum/tests/bor/helper.go:135.83,137.16 2 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:140.2,140.55 1 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:137.16,139.3 1 0 +github.com/ethereum/go-ethereum/tests/bor/helper.go:143.67,145.16 2 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:148.2,149.55 2 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:152.2,152.12 1 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:145.16,147.3 1 0 +github.com/ethereum/go-ethereum/tests/bor/helper.go:149.55,151.3 1 0 +github.com/ethereum/go-ethereum/tests/bor/helper.go:155.82,157.16 2 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:160.2,161.54 2 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:165.2,166.65 2 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:169.2,169.26 1 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:157.16,159.3 1 0 +github.com/ethereum/go-ethereum/tests/bor/helper.go:161.54,163.3 1 0 +github.com/ethereum/go-ethereum/tests/bor/helper.go:166.65,168.3 1 0 +github.com/ethereum/go-ethereum/tests/bor/helper.go:172.41,175.17 3 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:179.2,180.13 2 1 +github.com/ethereum/go-ethereum/tests/bor/helper.go:175.17,178.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers.go:30.154,36.16 4 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers.go:39.2,47.9 5 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers.go:36.16,38.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers.go:48.20,49.31 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers.go:51.24,56.30 3 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers.go:58.22,68.75 4 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers.go:75.153,81.16 4 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers.go:84.2,92.9 5 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers.go:81.16,83.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers.go:93.20,94.31 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers.go:96.24,101.30 3 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers.go:103.22,113.75 4 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:72.71,76.25 2 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:79.2,79.41 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:82.2,82.13 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:76.25,78.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:79.41,81.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:86.37,87.67 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:87.67,89.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:93.38,95.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:98.41,99.70 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:99.70,101.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:105.44,108.2 2 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:148.69,161.2 4 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:164.70,184.2 14 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:188.25,193.2 4 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:196.38,201.2 3 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:204.37,209.2 3 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:212.39,217.2 3 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:221.39,226.2 3 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:230.41,235.2 3 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:238.29,246.2 5 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:250.73,255.28 3 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:259.2,268.34 9 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:255.28,256.49 1 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:268.34,273.3 3 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:278.73,286.2 5 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:290.102,296.33 4 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:329.2,329.16 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:296.33,299.61 2 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:303.3,303.75 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:310.3,310.41 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:317.3,317.52 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:325.3,327.9 3 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:299.61,301.9 2 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:303.75,305.9 2 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:310.41,312.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:312.9,315.4 2 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:317.52,318.44 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:318.44,320.5 1 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:320.10,323.5 2 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:336.52,338.50 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:341.2,342.52 2 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:361.2,362.33 2 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:379.2,383.65 3 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:390.2,390.48 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:396.2,396.16 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:338.50,340.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:342.52,351.52 2 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:356.3,358.18 3 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:351.52,353.9 2 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:362.33,365.39 2 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:368.3,368.43 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:371.3,371.42 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:374.3,375.61 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:365.39,367.4 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:368.43,370.4 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:371.42,373.4 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:383.65,384.10 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:385.19,385.19 0 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:386.11,386.11 0 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:390.48,395.3 4 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:399.39,404.2 3 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:406.39,412.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:416.76,422.41 3 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:426.2,427.46 2 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:438.2,438.28 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:442.2,442.15 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:445.2,451.16 3 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:422.41,424.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:427.46,429.36 2 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:435.3,435.23 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:429.36,430.58 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:430.58,432.13 2 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:438.28,440.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:442.15,444.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:457.89,462.2 3 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:467.91,472.2 3 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:487.76,490.23 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:493.2,493.33 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:497.2,501.65 5 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:552.2,552.30 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:555.2,555.39 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:560.2,560.20 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:563.2,569.37 3 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:490.23,492.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:493.33,495.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:501.65,510.12 4 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:520.3,520.15 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:528.3,528.17 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:534.3,534.22 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:543.3,545.29 2 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:510.12,518.12 6 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:520.15,526.9 2 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:528.17,532.9 2 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:534.22,540.12 5 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:545.29,547.4 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:547.9,549.4 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:552.30,554.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:555.39,558.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:560.20,562.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:575.39,579.49 3 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:583.2,583.48 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:589.2,589.50 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:579.49,582.3 2 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:583.48,584.42 1 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:587.3,587.34 1 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:584.42,586.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:589.50,590.42 1 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:593.3,593.36 1 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:590.42,592.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:599.48,605.2 4 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:609.47,615.2 4 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:619.49,625.2 4 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:633.100,637.16 2 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:641.2,644.18 2 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:647.2,647.37 1 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:650.2,650.25 1 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:637.16,640.3 2 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:644.18,646.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:647.37,649.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:660.134,665.18 4 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:672.2,673.20 2 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:677.2,686.14 6 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:695.2,695.14 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:714.2,714.15 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:729.2,735.98 5 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:738.2,738.15 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:757.2,757.32 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:760.2,760.26 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:665.18,668.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:668.8,670.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:673.20,676.3 2 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:686.14,687.49 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:687.49,690.4 2 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:690.9,690.46 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:690.46,693.4 2 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:695.14,697.38 2 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:697.38,699.76 2 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:704.4,704.39 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:710.4,710.21 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:699.76,702.10 3 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:704.39,707.10 3 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:714.15,719.18 4 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:723.3,726.48 3 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:719.18,722.4 2 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:735.98,737.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:738.15,746.10 5 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:750.5,752.41 2 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:753.11,753.11 0 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:757.32,759.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:766.176,770.58 3 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:780.2,780.54 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:785.2,786.81 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:770.58,771.43 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:774.3,774.49 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:777.3,777.13 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:771.43,773.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:774.49,776.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:780.54,784.3 3 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:792.122,796.58 3 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:802.2,802.54 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:806.2,807.94 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:796.58,797.53 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:800.3,800.13 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:797.53,799.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:802.54,805.3 2 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:819.65,823.20 2 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:827.2,833.18 4 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:839.2,845.41 2 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:859.2,859.45 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:873.2,876.52 2 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:880.2,880.18 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:883.2,883.20 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:887.2,887.18 1 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:890.2,890.66 1 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:823.20,826.3 2 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:833.18,834.42 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:834.42,836.4 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:845.41,847.19 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:851.3,851.45 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:855.3,856.6 2 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:847.19,848.9 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:851.45,853.9 2 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:859.45,860.91 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:870.3,871.13 2 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:860.91,862.4 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:862.9,868.4 2 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:876.52,878.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:880.18,882.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:883.20,885.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:887.18,889.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/queue.go:895.55,902.2 4 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:33.41,35.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:39.37,41.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:45.77,47.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:51.91,53.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:57.92,59.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:64.50,66.15 2 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:71.2,71.14 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:66.15,68.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:68.8,70.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:76.120,79.2 2 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:83.88,88.9 4 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:96.2,96.22 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:89.39,90.48 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:91.18,92.96 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:93.10,94.68 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:33.42,35.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:39.38,41.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:45.78,47.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:51.92,53.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:57.93,59.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:64.51,66.15 2 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:71.2,71.14 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:66.15,68.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:68.8,70.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:76.121,78.31 2 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:81.2,82.37 2 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:85.2,85.49 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:78.31,80.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:82.37,84.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:90.89,95.9 4 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:103.2,103.22 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:96.40,97.49 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:98.18,99.98 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:100.10,101.69 1 0 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:77.59,77.83 1 0 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:78.147,80.2 1 0 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:81.144,83.2 1 0 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:84.99,85.64 1 0 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:87.101,88.66 1 0 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:92.95,100.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:103.34,108.2 3 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:112.81,114.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:118.79,120.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:124.82,126.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:130.70,132.26 2 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:135.2,135.12 1 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:132.26,134.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:140.68,142.25 2 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:145.2,145.12 1 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:142.25,144.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:150.71,152.27 2 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:155.2,155.12 1 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:152.27,154.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:161.56,165.41 3 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:171.2,171.30 1 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:165.41,166.31 1 0 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:166.31,168.9 2 0 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:176.55,182.2 4 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:202.28,207.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:210.80,212.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:216.28,220.32 3 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:220.32,222.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:231.54,234.33 2 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:238.2,239.54 2 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:242.2,246.12 4 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:234.33,237.3 2 0 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:239.54,241.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:251.48,254.9 3 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:258.2,263.12 5 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:254.9,257.3 2 0 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:267.52,272.2 3 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:275.30,280.2 3 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:283.49,288.29 4 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:291.2,291.13 1 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:288.29,290.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:301.39,303.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:305.49,307.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/peer.go:309.44,312.2 2 1 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:44.69,49.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:52.38,59.14 5 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:67.2,71.23 2 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:59.14,61.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:75.37,77.15 2 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:83.2,90.12 5 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:77.15,82.3 2 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:90.12,92.16 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:99.3,99.102 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:105.3,105.23 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:92.16,96.4 3 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:99.102,102.4 2 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:105.23,107.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:113.51,123.26 6 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:126.2,128.12 3 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:123.26,125.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:137.74,139.2 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:147.76,149.2 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:157.86,167.53 2 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:170.2,170.12 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:167.53,169.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:178.59,182.21 2 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:190.2,194.16 3 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:201.2,202.21 2 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:210.2,210.13 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:221.2,222.56 2 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:229.2,229.20 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:251.2,251.19 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:183.16,184.51 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:185.16,186.55 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:187.10,188.43 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:194.16,200.3 2 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:203.16,204.86 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:205.16,206.90 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:207.10,208.87 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:210.13,219.3 2 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:222.56,228.3 2 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:229.20,237.22 5 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:245.3,245.13 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:249.3,249.16 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:238.17,239.46 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:240.17,241.50 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:242.11,243.47 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:245.13,247.12 2 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:256.60,258.16 2 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:261.2,261.6 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:258.16,260.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:261.6,267.74 2 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:272.3,272.23 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:284.3,284.35 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:288.3,288.42 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:297.3,298.10 2 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:303.3,304.17 2 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:267.74,271.4 3 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:272.23,274.11 2 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:278.6,278.6 0 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:279.22,280.23 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:284.35,285.12 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:288.42,289.11 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:290.31,291.15 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:292.22,293.23 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:299.40,299.40 0 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:300.21,301.22 1 0 +github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:304.17,306.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:33.39,35.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:39.35,41.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:45.75,47.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:51.89,53.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:57.90,59.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:64.48,66.15 2 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:71.2,71.14 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:66.15,68.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:68.8,70.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:76.118,78.28 2 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:82.2,83.37 2 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:86.2,86.47 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:78.28,80.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:83.37,85.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:91.86,96.9 4 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:104.2,104.22 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:97.35,98.47 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:99.18,100.91 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:101.10,102.67 1 0 +github.com/ethereum/go-ethereum/eth/downloader/modes.go:31.37,33.2 1 0 +github.com/ethereum/go-ethereum/eth/downloader/modes.go:36.38,37.14 1 0 +github.com/ethereum/go-ethereum/eth/downloader/modes.go:38.16,39.16 1 0 +github.com/ethereum/go-ethereum/eth/downloader/modes.go:40.16,41.16 1 0 +github.com/ethereum/go-ethereum/eth/downloader/modes.go:42.17,43.17 1 0 +github.com/ethereum/go-ethereum/eth/downloader/modes.go:44.10,45.19 1 0 +github.com/ethereum/go-ethereum/eth/downloader/modes.go:49.52,50.14 1 0 +github.com/ethereum/go-ethereum/eth/downloader/modes.go:51.16,52.29 1 0 +github.com/ethereum/go-ethereum/eth/downloader/modes.go:53.16,54.29 1 0 +github.com/ethereum/go-ethereum/eth/downloader/modes.go:55.17,56.30 1 0 +github.com/ethereum/go-ethereum/eth/downloader/modes.go:57.10,58.55 1 0 +github.com/ethereum/go-ethereum/eth/downloader/modes.go:62.56,63.22 1 0 +github.com/ethereum/go-ethereum/eth/downloader/modes.go:73.2,73.12 1 0 +github.com/ethereum/go-ethereum/eth/downloader/modes.go:64.14,65.19 1 0 +github.com/ethereum/go-ethereum/eth/downloader/modes.go:66.14,67.19 1 0 +github.com/ethereum/go-ethereum/eth/downloader/modes.go:68.15,69.20 1 0 +github.com/ethereum/go-ethereum/eth/downloader/modes.go:70.10,71.82 1 0 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:48.44,54.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:58.69,63.24 4 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:66.2,67.28 2 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:63.24,65.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:78.123,84.38 5 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:87.2,87.17 1 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:91.2,91.36 1 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:84.38,86.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:87.17,90.3 2 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:98.88,104.2 4 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:108.123,113.27 4 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:119.2,119.11 1 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:122.2,123.42 2 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:113.27,118.3 2 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:119.11,121.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:128.48,132.23 3 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:135.2,135.55 1 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:138.2,138.14 1 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:132.23,134.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:135.55,137.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:145.44,149.18 2 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:158.2,159.19 2 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:149.18,150.35 1 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:153.3,154.41 2 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:150.35,151.9 1 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:154.41,155.9 1 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:163.62,168.23 4 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:171.2,176.55 4 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:180.2,183.16 3 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:168.23,170.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:176.55,178.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:187.46,191.29 3 1 +github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:191.29,193.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/api.go:41.83,52.2 3 0 +github.com/ethereum/go-ethereum/eth/downloader/api.go:56.45,62.6 2 0 +github.com/ethereum/go-ethereum/eth/downloader/api.go:62.6,63.10 1 0 +github.com/ethereum/go-ethereum/eth/downloader/api.go:64.43,65.37 1 0 +github.com/ethereum/go-ethereum/eth/downloader/api.go:66.45,68.24 2 0 +github.com/ethereum/go-ethereum/eth/downloader/api.go:69.30,70.20 1 0 +github.com/ethereum/go-ethereum/eth/downloader/api.go:74.4,75.29 2 0 +github.com/ethereum/go-ethereum/eth/downloader/api.go:85.4,85.37 1 0 +github.com/ethereum/go-ethereum/eth/downloader/api.go:70.20,72.5 1 0 +github.com/ethereum/go-ethereum/eth/downloader/api.go:76.20,80.6 1 0 +github.com/ethereum/go-ethereum/eth/downloader/api.go:81.32,82.25 1 0 +github.com/ethereum/go-ethereum/eth/downloader/api.go:85.37,87.5 1 0 +github.com/ethereum/go-ethereum/eth/downloader/api.go:93.89,95.16 2 0 +github.com/ethereum/go-ethereum/eth/downloader/api.go:99.2,101.12 2 0 +github.com/ethereum/go-ethereum/eth/downloader/api.go:119.2,119.20 1 0 +github.com/ethereum/go-ethereum/eth/downloader/api.go:95.16,97.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/api.go:101.12,105.7 3 0 +github.com/ethereum/go-ethereum/eth/downloader/api.go:105.7,106.11 1 0 +github.com/ethereum/go-ethereum/eth/downloader/api.go:107.30,108.39 1 0 +github.com/ethereum/go-ethereum/eth/downloader/api.go:109.24,111.11 2 0 +github.com/ethereum/go-ethereum/eth/downloader/api.go:112.29,114.11 2 0 +github.com/ethereum/go-ethereum/eth/downloader/api.go:144.48,145.24 1 0 +github.com/ethereum/go-ethereum/eth/downloader/api.go:145.24,149.7 3 0 +github.com/ethereum/go-ethereum/eth/downloader/api.go:149.7,150.11 1 0 +github.com/ethereum/go-ethereum/eth/downloader/api.go:151.15,153.13 1 0 +github.com/ethereum/go-ethereum/eth/downloader/api.go:154.27,155.11 1 0 +github.com/ethereum/go-ethereum/eth/downloader/api.go:163.102,166.2 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:218.196,219.23 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:222.2,240.11 4 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:219.23,221.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:250.55,257.9 5 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:267.2,285.3 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:258.47,259.52 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:260.47,261.56 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:262.27,263.57 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:264.10,265.124 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:289.43,291.2 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:295.77,297.18 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:303.2,304.87 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:308.2,308.12 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:297.18,300.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:300.8,302.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:304.87,307.3 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:312.87,314.2 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:319.54,322.18 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:328.2,329.47 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:333.2,335.12 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:322.18,325.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:325.8,327.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:329.47,332.3 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:340.101,343.13 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:348.2,351.51 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:363.2,363.40 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:367.2,367.52 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:371.2,373.12 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:344.33,345.13 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:351.51,353.24 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:360.3,360.13 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:353.24,357.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:357.9,359.4 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:363.40,365.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:367.52,369.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:379.145,385.23 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:395.2,395.30 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:399.2,399.57 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:402.2,405.51 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:408.2,408.22 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:417.2,420.77 3 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:426.2,426.30 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:434.2,446.17 8 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:452.2,452.23 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:455.2,455.53 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:385.23,386.16 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:386.16,387.11 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:388.22,388.22 0 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:389.12,390.22 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:395.30,397.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:399.57,401.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:405.51,407.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:408.22,412.62 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:412.62,414.4 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:420.77,421.10 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:422.13,422.13 0 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:423.11,423.11 0 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:426.30,427.10 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:428.25,428.25 0 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:429.11,430.16 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:446.17,448.15 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:448.15,450.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:452.23,454.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:458.41,460.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:464.119,466.15 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:475.2,477.17 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:482.2,482.30 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:487.2,488.17 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:508.2,508.38 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:511.2,514.17 3 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:527.2,528.73 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:531.2,535.22 3 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:548.2,549.52 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:552.2,552.22 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:592.2,593.27 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:596.2,597.17 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:604.2,606.16 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:610.2,610.22 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:619.2,619.30 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:466.15,468.17 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:468.17,470.4 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:470.9,473.4 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:477.17,479.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:479.8,481.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:482.30,484.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:488.17,491.17 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:491.17,493.4 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:494.8,497.17 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:500.3,500.55 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:497.17,499.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:500.55,502.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:508.38,510.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:514.17,517.17 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:517.17,519.4 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:520.8,523.17 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:523.17,525.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:528.73,530.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:535.22,536.40 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:536.40,538.4 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:538.9,540.29 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:545.4,545.54 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:540.29,542.5 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:549.52,551.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:552.22,567.64 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:574.3,578.38 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:585.3,585.24 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:567.64,569.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:569.9,569.44 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:569.44,571.4 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:571.9,573.4 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:578.38,581.4 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:581.9,581.32 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:581.32,583.4 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:585.24,586.55 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:586.55,588.5 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:593.27,595.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:597.17,599.32 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:599.32,599.94 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:600.8,602.32 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:602.32,602.75 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:606.16,606.62 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:607.16,607.64 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:608.16,608.74 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:610.22,615.44 4 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:615.44,615.81 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:616.8,616.29 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:616.29,617.44 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:617.44,617.96 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:624.63,627.30 3 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:632.2,633.37 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:644.2,646.12 3 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:627.30,629.13 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:629.13,629.54 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:633.37,634.27 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:640.3,640.53 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:634.27,639.4 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:640.53,641.9 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:652.31,657.23 3 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:657.23,658.10 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:659.21,659.21 0 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:661.11,662.21 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:669.31,672.2 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:676.34,679.9 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:687.2,690.12 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:680.18,680.18 0 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:681.10,685.25 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:695.104,702.22 5 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:705.2,706.16 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:710.2,710.47 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:716.2,717.84 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:720.2,720.23 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:729.2,730.75 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:733.2,733.25 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:702.22,704.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:706.16,708.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:710.47,712.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:717.84,719.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:720.23,721.73 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:724.3,725.24 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:721.73,723.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:730.75,732.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:744.87,755.21 3 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:760.2,761.23 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:764.2,766.14 3 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:769.2,769.15 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:773.2,774.22 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:777.2,777.15 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:780.2,781.14 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:784.2,785.50 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:755.21,757.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:761.23,763.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:766.14,768.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:769.15,771.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:774.22,776.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:777.15,779.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:781.14,783.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:789.161,790.105 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:790.105,792.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:800.98,802.86 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:807.2,813.14 3 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:821.2,825.30 3 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:828.2,828.36 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:834.2,834.23 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:852.2,853.16 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:860.2,860.41 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:864.2,865.16 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:868.2,868.22 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:802.86,804.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:814.16,815.56 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:816.16,817.60 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:818.10,819.61 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:825.30,827.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:828.36,831.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:834.23,836.21 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:847.3,847.33 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:836.21,838.22 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:838.22,840.36 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:843.5,843.61 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:840.36,841.11 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:847.33,849.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:853.16,855.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:860.41,862.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:865.16,867.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:871.142,876.16 4 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:880.2,883.23 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:888.2,888.33 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:896.2,896.41 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:920.2,920.29 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:928.2,928.30 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:876.16,878.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:883.23,886.3 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:888.33,890.62 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:890.62,893.4 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:896.41,898.75 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:902.3,906.15 4 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:914.3,914.12 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:898.75,899.12 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:907.17,908.39 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:909.17,910.43 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:911.11,912.40 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:914.12,916.9 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:920.29,921.29 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:925.3,926.21 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:921.29,924.4 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:931.131,936.15 3 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:939.2,941.20 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:980.2,980.27 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:984.2,985.19 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:936.15,938.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:941.20,946.17 3 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:950.3,950.24 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:955.3,959.15 4 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:967.3,967.13 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:971.3,972.38 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:976.3,977.11 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:946.17,948.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:950.24,953.4 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:960.17,961.39 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:962.17,963.43 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:964.11,965.40 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:967.13,969.12 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:972.38,975.4 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:980.27,983.3 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:996.86,1007.6 4 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1007.6,1017.10 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1034.3,1034.14 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1061.3,1064.27 3 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1067.3,1069.15 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1096.3,1096.36 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1107.3,1107.24 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1128.3,1129.15 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1180.3,1180.39 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1190.3,1190.23 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1204.3,1204.28 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1018.17,1024.112 5 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1026.17,1028.125 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1030.11,1032.84 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1035.12,1035.12 0 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1038.20,1040.14 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1042.11,1048.79 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1054.4,1054.11 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1058.4,1058.71 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1048.79,1049.12 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1050.22,1050.22 0 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1051.23,1051.23 0 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1055.31,1055.31 0 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1056.22,1056.22 0 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1064.27,1066.4 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1069.15,1070.25 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1092.4,1093.12 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1070.25,1071.94 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1075.5,1075.98 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1079.5,1089.49 6 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1071.94,1074.6 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1075.98,1078.6 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1096.36,1098.45 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1102.4,1104.12 3 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1098.45,1101.5 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1107.24,1109.60 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1119.4,1120.11 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1109.60,1111.12 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1112.42,1113.14 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1114.23,1115.24 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1121.31,1122.15 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1123.22,1124.23 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1129.15,1131.18 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1135.4,1139.26 4 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1131.18,1134.5 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1140.9,1142.84 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1149.4,1149.32 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1142.84,1145.5 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1149.32,1152.26 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1163.5,1163.24 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1167.5,1167.71 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1152.26,1154.6 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1154.11,1156.70 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1156.70,1158.7 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1163.24,1165.6 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1167.71,1169.19 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1172.6,1173.31 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1169.19,1171.7 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1180.39,1182.11 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1183.41,1184.13 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1185.22,1186.23 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1190.23,1192.11 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1200.4,1200.32 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1196.6,1196.6 0 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1197.22,1198.23 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1204.28,1206.4 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1219.125,1224.16 4 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1227.2,1228.16 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1231.2,1231.36 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1224.16,1226.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1228.16,1230.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1237.70,1243.2 4 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1248.72,1254.2 4 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1259.93,1266.15 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1289.2,1291.6 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1266.15,1267.19 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1267.19,1269.25 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1273.4,1273.61 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1277.4,1278.25 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1282.4,1285.80 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1269.25,1272.5 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1273.61,1276.5 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1278.25,1281.5 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1291.6,1292.10 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1293.21,1295.22 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1297.33,1299.45 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1348.4,1351.25 3 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1472.4,1473.39 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1476.4,1479.79 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1299.45,1301.80 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1310.5,1310.20 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1344.5,1345.15 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1301.80,1302.13 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1303.23,1303.23 0 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1304.24,1304.24 0 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1310.20,1323.27 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1336.6,1336.47 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1323.27,1325.87 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1325.87,1327.8 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1336.47,1338.76 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1338.76,1340.8 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1351.25,1353.12 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1360.5,1361.29 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1364.5,1368.46 3 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1450.5,1450.45 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1467.5,1469.28 3 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1354.23,1356.24 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1357.13,1357.13 0 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1361.29,1363.6 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1368.46,1373.30 3 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1376.6,1379.95 3 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1385.6,1389.35 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1413.6,1413.31 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1434.6,1434.28 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1441.6,1441.28 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1373.30,1375.7 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1379.95,1381.7 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1389.35,1391.20 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1396.7,1396.43 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1391.20,1395.8 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1396.43,1398.28 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1398.28,1400.65 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1409.9,1409.14 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1400.65,1402.31 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1402.31,1405.11 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1406.15,1408.10 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1413.31,1414.88 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1425.7,1425.27 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1414.88,1418.73 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1421.8,1422.57 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1418.73,1420.9 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1425.27,1427.53 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1427.53,1429.9 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1429.14,1431.9 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1434.28,1440.7 3 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1441.28,1447.7 3 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1450.45,1452.103 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1461.6,1462.43 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1452.103,1453.14 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1454.25,1456.26 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1457.38,1457.38 0 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1462.43,1465.7 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1473.39,1475.5 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1479.79,1480.12 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1481.21,1481.21 0 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1482.13,1482.13 0 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1490.82,1491.6 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1491.6,1493.24 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1496.3,1496.31 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1502.3,1506.32 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1530.3,1530.55 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1533.3,1533.25 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1493.24,1495.4 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1496.31,1498.4 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1506.32,1508.17 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1513.4,1513.35 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1508.17,1512.5 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1513.35,1515.25 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1515.25,1517.69 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1526.6,1526.11 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1517.69,1519.28 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1519.28,1522.8 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1523.12,1525.7 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1530.55,1532.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1533.25,1536.4 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1540.71,1542.23 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1545.2,1545.9 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1551.2,1557.33 4 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1563.2,1563.64 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1575.2,1575.12 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1542.23,1544.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1546.18,1547.36 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1548.10,1548.10 0 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1557.33,1559.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1563.64,1564.27 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1573.3,1573.52 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1564.27,1566.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1566.9,1572.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1580.53,1587.15 4 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1594.2,1594.35 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1599.2,1607.6 3 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1587.15,1592.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1594.35,1595.114 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1595.114,1597.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1607.6,1611.24 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1624.3,1624.31 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1629.3,1633.22 4 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1644.3,1644.42 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1666.3,1667.61 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1670.3,1670.15 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1696.3,1696.54 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1611.24,1613.23 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1617.4,1617.11 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1613.23,1615.5 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1618.22,1620.23 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1621.12,1621.12 0 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1624.31,1626.4 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1633.22,1634.31 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1634.31,1639.5 3 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1640.9,1642.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1644.42,1653.128 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1653.128,1664.5 6 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1667.61,1669.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1670.15,1672.21 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1680.4,1680.11 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1672.21,1678.5 4 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1681.21,1682.24 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1685.5,1685.49 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1688.5,1688.19 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1690.35,1692.13 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1682.24,1684.6 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1685.49,1687.6 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1696.54,1698.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1702.108,1703.23 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1706.2,1706.80 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1711.2,1711.33 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1722.2,1722.25 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1703.23,1705.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1706.80,1709.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1711.33,1713.10 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1714.20,1715.35 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1716.21,1717.14 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1718.11,1719.33 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1725.93,1727.23 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1730.2,1730.9 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1740.2,1747.33 5 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1751.2,1751.97 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1755.2,1755.12 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1727.23,1729.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1731.18,1732.36 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1733.24,1734.42 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1737.10,1737.10 0 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1734.42,1736.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1747.33,1750.3 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1751.97,1754.3 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1758.66,1763.133 3 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1766.2,1766.70 1 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1769.2,1770.12 2 1 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1763.133,1765.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1766.70,1768.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1775.83,1776.33 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1777.32,1779.17 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1782.3,1782.82 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1784.33,1786.81 2 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1788.29,1789.65 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1791.29,1792.65 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1794.10,1795.63 1 0 +github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1779.17,1781.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:79.79,85.15 3 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:93.2,94.58 2 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:98.2,99.21 2 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:102.2,110.15 3 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:121.2,128.6 5 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:85.15,89.31 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:89.31,91.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:94.58,96.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:99.21,101.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:110.15,114.30 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:114.30,116.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:128.6,130.40 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:134.3,134.27 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:217.3,217.10 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:130.40,132.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:134.27,135.37 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:135.37,137.5 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:138.9,144.44 2 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:159.4,166.31 3 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:212.4,212.114 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:144.44,146.39 2 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:146.39,149.6 2 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:149.11,149.28 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:149.28,150.71 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:150.71,156.7 2 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:166.31,169.18 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:172.5,172.46 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:178.5,179.17 2 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:182.5,182.17 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:186.5,186.23 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:190.5,191.19 2 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:200.5,206.29 5 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:169.18,170.11 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:172.46,173.11 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:179.17,181.6 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:182.17,185.6 2 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:186.23,187.14 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:191.19,198.14 2 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:206.29,208.6 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:212.114,214.5 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:218.21,222.22 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:224.27,229.18 2 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:242.4,242.38 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:261.4,261.37 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:266.20,272.65 2 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:277.4,288.27 6 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:294.4,308.19 3 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:315.4,315.17 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:331.27,336.12 2 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:350.4,360.55 5 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:374.32,376.13 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:229.18,231.37 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:234.5,234.36 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:238.5,238.13 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:231.37,233.6 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:234.36,236.6 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:242.38,247.43 4 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:247.43,249.20 2 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:258.6,258.27 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:249.20,250.26 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:253.7,253.30 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:250.26,252.8 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:253.30,256.8 2 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:261.37,264.5 2 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:272.65,275.13 3 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:288.27,291.5 2 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:308.19,313.13 2 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:315.17,317.5 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:317.10,325.15 5 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:325.15,328.6 2 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:336.12,338.19 2 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:347.5,347.30 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:338.19,339.25 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:342.6,342.29 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:339.25,341.7 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:342.29,345.7 2 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:360.55,363.40 2 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:369.5,369.42 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:363.40,365.6 1 0 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:369.42,371.6 1 1 +github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:376.13,378.5 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:75.13,78.40 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:78.40,79.66 1 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:215.99,228.2 3 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:234.30,242.6 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:242.6,243.10 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:244.30,247.10 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:249.32,252.20 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:256.4,260.8 4 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:252.20,254.13 2 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:260.8,265.12 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:266.31,270.16 1 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:272.31,276.16 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:278.32,282.20 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:284.31,287.12 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:289.13,294.12 3 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:302.38,311.2 5 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:319.63,323.9 3 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:324.75,325.16 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:326.22,327.23 1 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:334.68,337.17 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:345.2,346.15 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:348.2,349.15 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:351.2,358.12 3 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:361.2,376.15 6 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:382.2,388.42 5 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:392.2,392.27 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:395.2,395.6 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:337.17,339.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:339.8,343.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:346.15,346.39 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:349.15,349.40 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:358.12,360.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:376.15,379.3 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:388.42,390.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:392.27,394.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:395.6,397.14 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:401.3,401.10 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:397.14,399.4 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:402.27,406.18 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:415.30,417.29 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:419.32,425.71 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:436.4,441.14 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:445.30,446.24 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:448.27,456.14 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:460.4,460.14 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:406.18,409.5 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:409.10,413.5 3 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:425.71,429.20 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:433.5,434.13 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:429.20,432.6 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:441.14,443.5 1 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:456.14,459.5 2 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:460.14,463.5 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:472.49,477.67 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:545.2,559.38 5 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:562.2,562.80 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:477.67,479.60 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:479.60,481.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:481.9,483.50 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:488.4,493.38 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:510.4,511.45 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:522.4,522.17 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:531.4,536.40 4 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:539.4,539.10 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:483.50,485.5 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:493.38,496.41 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:502.5,502.41 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:506.5,506.10 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:496.41,499.14 3 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:502.41,505.6 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:511.45,513.43 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:513.43,515.44 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:515.44,519.7 3 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:522.17,525.5 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:536.40,538.5 1 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:559.38,561.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:566.60,568.16 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:571.2,571.43 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:568.16,569.13 1 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:578.72,584.30 3 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:590.2,590.31 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:596.2,596.90 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:607.2,613.38 5 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:616.2,616.14 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:584.30,585.12 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:588.3,588.14 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:585.12,587.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:590.31,591.12 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:594.3,594.14 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:591.12,593.4 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:596.90,597.12 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:600.3,600.14 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:597.12,599.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:613.38,615.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:620.110,627.31 3 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:631.2,631.28 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:634.2,637.43 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:627.31,630.3 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:631.28,633.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:637.43,639.29 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:643.3,643.18 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:647.3,647.51 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:651.3,658.7 5 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:669.3,685.34 5 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:639.29,641.4 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:643.18,644.12 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:647.51,649.4 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:658.7,660.18 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:663.4,663.38 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:666.4,666.9 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:660.18,661.13 1 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:663.38,664.13 1 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:692.74,701.31 4 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:704.2,706.16 3 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:711.2,719.9 5 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:701.31,703.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:706.16,710.3 3 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:720.20,722.31 2 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:724.24,740.18 5 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:742.22,750.10 4 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:751.26,755.32 3 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:757.47,761.32 3 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:763.69,767.32 3 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:769.70,773.32 3 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:775.11,778.40 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:790.4,792.11 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:778.40,779.53 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:779.53,784.6 4 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:797.6,797.6 0 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:798.22,798.22 0 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:806.48,809.33 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:815.2,815.31 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:809.33,810.23 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:810.23,812.4 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:815.31,817.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:822.62,823.9 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:824.25,824.25 0 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:826.20,826.20 0 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:828.19,828.19 0 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:838.54,840.9 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:846.2,853.63 3 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:841.19,843.9 2 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:844.10,844.10 0 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:856.84,865.41 3 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:872.2,880.30 4 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:884.2,885.31 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1004.2,1005.38 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1009.2,1010.12 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1013.2,1013.55 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1023.2,1023.23 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:865.41,871.3 2 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:880.30,882.3 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:885.31,888.63 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:908.3,909.58 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:937.3,945.13 5 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:956.3,957.39 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:960.3,968.101 4 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1000.3,1000.13 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:888.63,899.40 5 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:902.4,904.9 3 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:899.40,901.5 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:909.58,910.21 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:910.21,931.30 7 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:931.30,933.11 2 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:945.13,949.37 1 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:953.4,953.9 1 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:949.37,952.5 2 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:957.39,959.4 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:968.101,976.68 4 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:988.4,988.107 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:976.68,980.13 3 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:981.10,985.5 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:988.107,995.5 5 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1000.13,1001.9 1 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1005.38,1007.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1010.12,1012.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1013.55,1016.20 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1016.20,1018.4 1 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1018.9,1021.4 2 1 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1036.81,1042.22 2 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1045.2,1046.57 2 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1049.2,1052.24 3 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1042.22,1044.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1046.57,1048.3 1 0 +github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1061.56,1063.2 1 0 +github.com/ethereum/go-ethereum/eth/downloader/statesync.go:27.61,30.9 2 1 +github.com/ethereum/go-ethereum/eth/downloader/statesync.go:40.2,40.10 1 1 +github.com/ethereum/go-ethereum/eth/downloader/statesync.go:31.29,35.14 1 1 +github.com/ethereum/go-ethereum/eth/downloader/statesync.go:36.18,38.16 2 0 +github.com/ethereum/go-ethereum/eth/downloader/statesync.go:45.37,46.6 1 1 +github.com/ethereum/go-ethereum/eth/downloader/statesync.go:46.6,47.10 1 1 +github.com/ethereum/go-ethereum/eth/downloader/statesync.go:48.32,49.32 1 1 +github.com/ethereum/go-ethereum/eth/downloader/statesync.go:52.19,53.10 1 1 +github.com/ethereum/go-ethereum/eth/downloader/statesync.go:49.32,51.5 1 1 +github.com/ethereum/go-ethereum/eth/downloader/statesync.go:60.60,66.6 4 1 +github.com/ethereum/go-ethereum/eth/downloader/statesync.go:66.6,67.10 1 1 +github.com/ethereum/go-ethereum/eth/downloader/statesync.go:68.35,69.15 1 0 +github.com/ethereum/go-ethereum/eth/downloader/statesync.go:71.17,72.14 1 1 +github.com/ethereum/go-ethereum/eth/downloader/statesync.go:92.63,100.2 1 1 +github.com/ethereum/go-ethereum/eth/downloader/statesync.go:105.27,109.2 3 1 +github.com/ethereum/go-ethereum/eth/downloader/statesync.go:112.34,115.2 2 1 +github.com/ethereum/go-ethereum/eth/downloader/statesync.go:118.36,119.25 1 1 +github.com/ethereum/go-ethereum/eth/downloader/statesync.go:122.2,122.17 1 1 +github.com/ethereum/go-ethereum/eth/downloader/statesync.go:119.25,121.3 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:72.35,74.2 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:82.57,83.15 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:86.2,89.50 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:96.2,96.18 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:83.15,84.46 1 0 +github.com/ethereum/go-ethereum/trie/trie.go:89.50,91.17 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:94.3,94.23 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:91.17,93.4 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:101.56,103.2 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:107.39,109.16 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:112.2,112.12 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:109.16,111.3 1 0 +github.com/ethereum/go-ethereum/trie/trie.go:118.51,120.30 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:123.2,123.19 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:120.30,122.3 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:126.116,127.32 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:128.11,129.30 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:130.17,131.26 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:132.18,133.80 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:137.3,138.31 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:142.3,142.35 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:143.17,145.31 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:149.3,149.35 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:150.16,152.17 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:155.3,156.35 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:157.10,158.65 1 0 +github.com/ethereum/go-ethereum/trie/trie.go:133.80,136.4 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:138.31,141.4 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:145.31,148.4 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:152.17,154.4 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:164.61,166.16 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:169.2,169.18 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:172.2,172.17 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:175.2,175.28 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:166.16,168.3 1 0 +github.com/ethereum/go-ethereum/trie/trie.go:169.18,171.3 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:172.17,174.3 1 0 +github.com/ethereum/go-ethereum/trie/trie.go:178.117,180.21 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:184.2,184.22 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:201.2,201.32 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:180.21,182.3 1 0 +github.com/ethereum/go-ethereum/trie/trie.go:184.22,189.42 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:194.3,194.18 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:197.3,198.32 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:189.42,191.4 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:191.9,193.4 1 0 +github.com/ethereum/go-ethereum/trie/trie.go:194.18,196.4 1 0 +github.com/ethereum/go-ethereum/trie/trie.go:202.17,204.26 1 0 +github.com/ethereum/go-ethereum/trie/trie.go:206.18,207.82 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:211.3,212.33 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:216.3,216.32 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:218.17,220.33 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:224.3,224.32 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:226.16,228.17 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:231.3,232.42 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:234.10,235.65 1 0 +github.com/ethereum/go-ethereum/trie/trie.go:207.82,210.4 1 0 +github.com/ethereum/go-ethereum/trie/trie.go:212.33,215.4 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:220.33,223.4 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:228.17,230.4 1 0 +github.com/ethereum/go-ethereum/trie/trie.go:245.42,246.48 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:246.48,248.3 1 0 +github.com/ethereum/go-ethereum/trie/trie.go:251.76,253.16 2 0 +github.com/ethereum/go-ethereum/trie/trie.go:256.2,256.31 1 0 +github.com/ethereum/go-ethereum/trie/trie.go:253.16,255.3 1 0 +github.com/ethereum/go-ethereum/trie/trie.go:267.51,270.21 3 1 +github.com/ethereum/go-ethereum/trie/trie.go:283.2,283.12 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:270.21,272.17 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:275.3,275.13 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:272.17,274.4 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:276.8,278.17 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:281.3,281.13 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:278.17,280.4 1 0 +github.com/ethereum/go-ethereum/trie/trie.go:286.83,287.19 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:293.2,293.23 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:287.19,288.33 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:291.3,291.26 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:288.33,290.4 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:294.18,298.29 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:306.3,309.17 4 1 +github.com/ethereum/go-ethereum/trie/trie.go:312.3,313.17 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:317.3,317.20 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:321.3,321.68 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:323.17,325.27 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:328.3,331.22 4 1 +github.com/ethereum/go-ethereum/trie/trie.go:333.11,334.56 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:336.16,341.17 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:344.3,345.27 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:348.3,348.23 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:350.10,351.51 1 0 +github.com/ethereum/go-ethereum/trie/trie.go:298.29,300.28 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:303.4,303.56 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:300.28,302.5 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:309.17,311.4 1 0 +github.com/ethereum/go-ethereum/trie/trie.go:313.17,315.4 1 0 +github.com/ethereum/go-ethereum/trie/trie.go:317.20,319.4 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:325.27,327.4 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:341.17,343.4 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:345.27,347.4 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:356.35,357.41 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:357.41,359.3 1 0 +github.com/ethereum/go-ethereum/trie/trie.go:364.44,368.16 4 1 +github.com/ethereum/go-ethereum/trie/trie.go:371.2,372.12 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:368.16,370.3 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:378.71,379.23 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:380.18,382.28 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:385.3,385.27 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:392.3,393.27 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:396.3,396.32 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:409.17,411.27 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:414.3,422.16 4 1 +github.com/ethereum/go-ethereum/trie/trie.go:435.3,436.35 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:446.3,446.15 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:468.3,468.22 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:470.17,471.24 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:473.11,474.25 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:476.16,481.17 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:484.3,485.27 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:488.3,488.23 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:490.10,491.61 1 0 +github.com/ethereum/go-ethereum/trie/trie.go:382.28,384.4 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:385.27,387.4 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:393.27,395.4 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:397.19,404.85 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:405.11,406.59 1 0 +github.com/ethereum/go-ethereum/trie/trie.go:411.27,413.4 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:422.16,424.4 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:436.35,437.18 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:437.18,438.18 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:438.18,440.6 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:440.11,442.11 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:446.15,447.17 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:465.4,465.81 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:447.17,455.19 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:458.5,458.44 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:455.19,457.6 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:458.44,461.6 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:481.17,483.4 1 0 +github.com/ethereum/go-ethereum/trie/trie.go:485.27,487.4 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:495.43,500.2 4 1 +github.com/ethereum/go-ethereum/trie/trie.go:502.61,503.31 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:506.2,506.15 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:503.31,505.3 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:509.69,511.42 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:514.2,514.61 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:511.42,513.3 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:517.71,520.20 3 1 +github.com/ethereum/go-ethereum/trie/trie.go:523.2,523.61 1 0 +github.com/ethereum/go-ethereum/trie/trie.go:520.20,522.3 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:528.35,532.2 3 1 +github.com/ethereum/go-ethereum/trie/trie.go:536.70,537.17 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:540.2,540.19 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:545.2,552.40 4 1 +github.com/ethereum/go-ethereum/trie/trie.go:555.2,556.19 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:565.2,566.19 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:574.2,574.16 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:577.2,578.33 2 1 +github.com/ethereum/go-ethereum/trie/trie.go:537.17,538.51 1 0 +github.com/ethereum/go-ethereum/trie/trie.go:540.19,542.3 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:552.40,554.3 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:556.19,560.13 4 0 +github.com/ethereum/go-ethereum/trie/trie.go:560.13,563.4 2 0 +github.com/ethereum/go-ethereum/trie/trie.go:566.19,573.3 2 0 +github.com/ethereum/go-ethereum/trie/trie.go:574.16,576.3 1 0 +github.com/ethereum/go-ethereum/trie/trie.go:582.47,583.19 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:587.2,591.28 5 1 +github.com/ethereum/go-ethereum/trie/trie.go:583.19,585.3 1 1 +github.com/ethereum/go-ethereum/trie/trie.go:595.24,598.2 2 0 +github.com/ethereum/go-ethereum/trie/committer.go:55.26,59.3 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:63.32,65.2 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:67.42,71.2 3 1 +github.com/ethereum/go-ethereum/trie/committer.go:74.73,75.15 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:78.2,79.16 2 1 +github.com/ethereum/go-ethereum/trie/committer.go:82.2,82.37 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:75.15,77.3 1 0 +github.com/ethereum/go-ethereum/trie/committer.go:79.16,81.3 1 0 +github.com/ethereum/go-ethereum/trie/committer.go:86.69,89.27 2 1 +github.com/ethereum/go-ethereum/trie/committer.go:93.2,93.24 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:89.27,91.3 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:94.18,101.38 3 1 +github.com/ethereum/go-ethereum/trie/committer.go:109.3,111.42 3 1 +github.com/ethereum/go-ethereum/trie/committer.go:114.3,114.40 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:115.17,117.17 2 1 +github.com/ethereum/go-ethereum/trie/committer.go:120.3,124.42 4 1 +github.com/ethereum/go-ethereum/trie/committer.go:127.3,127.40 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:128.16,129.20 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:130.10,132.51 1 0 +github.com/ethereum/go-ethereum/trie/committer.go:101.38,103.18 2 1 +github.com/ethereum/go-ethereum/trie/committer.go:106.4,106.53 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:103.18,105.5 1 0 +github.com/ethereum/go-ethereum/trie/committer.go:111.42,113.4 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:117.17,119.4 1 0 +github.com/ethereum/go-ethereum/trie/committer.go:124.42,126.4 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:137.86,142.26 2 1 +github.com/ethereum/go-ethereum/trie/committer.go:165.2,165.27 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:168.2,168.33 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:142.26,144.19 2 1 +github.com/ethereum/go-ethereum/trie/committer.go:150.3,150.37 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:157.3,158.17 2 1 +github.com/ethereum/go-ethereum/trie/committer.go:161.3,162.30 2 1 +github.com/ethereum/go-ethereum/trie/committer.go:144.19,145.12 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:150.37,152.12 2 1 +github.com/ethereum/go-ethereum/trie/committer.go:158.17,160.4 1 0 +github.com/ethereum/go-ethereum/trie/committer.go:165.27,167.3 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:174.54,180.17 2 1 +github.com/ethereum/go-ethereum/trie/committer.go:193.2,193.21 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:206.2,206.13 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:180.17,186.3 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:186.8,190.3 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:193.21,199.3 1 0 +github.com/ethereum/go-ethereum/trie/committer.go:199.8,199.22 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:199.22,205.3 3 1 +github.com/ethereum/go-ethereum/trie/committer.go:210.46,211.29 1 0 +github.com/ethereum/go-ethereum/trie/committer.go:211.29,222.22 5 0 +github.com/ethereum/go-ethereum/trie/committer.go:222.22,223.25 1 0 +github.com/ethereum/go-ethereum/trie/committer.go:224.20,225.43 1 0 +github.com/ethereum/go-ethereum/trie/committer.go:228.19,231.30 1 0 +github.com/ethereum/go-ethereum/trie/committer.go:225.43,227.6 1 0 +github.com/ethereum/go-ethereum/trie/committer.go:231.30,233.6 1 0 +github.com/ethereum/go-ethereum/trie/committer.go:239.56,245.2 5 0 +github.com/ethereum/go-ethereum/trie/committer.go:251.31,252.23 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:253.18,255.46 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:256.17,259.27 2 1 +github.com/ethereum/go-ethereum/trie/committer.go:266.3,266.11 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:267.17,268.20 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:269.16,270.20 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:271.10,272.40 1 0 +github.com/ethereum/go-ethereum/trie/committer.go:259.27,260.44 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:260.44,262.5 1 1 +github.com/ethereum/go-ethereum/trie/committer.go:262.10,264.5 1 1 +github.com/ethereum/go-ethereum/trie/errors.go:33.45,35.2 1 0 +github.com/ethereum/go-ethereum/trie/node_enc.go:23.33,29.2 5 1 +github.com/ethereum/go-ethereum/trie/node_enc.go:31.48,33.31 2 1 +github.com/ethereum/go-ethereum/trie/node_enc.go:40.2,40.19 1 1 +github.com/ethereum/go-ethereum/trie/node_enc.go:33.31,34.15 1 1 +github.com/ethereum/go-ethereum/trie/node_enc.go:34.15,36.4 1 1 +github.com/ethereum/go-ethereum/trie/node_enc.go:36.9,38.4 1 1 +github.com/ethereum/go-ethereum/trie/node_enc.go:43.49,46.18 3 1 +github.com/ethereum/go-ethereum/trie/node_enc.go:51.2,51.19 1 1 +github.com/ethereum/go-ethereum/trie/node_enc.go:46.18,48.3 1 1 +github.com/ethereum/go-ethereum/trie/node_enc.go:48.8,50.3 1 0 +github.com/ethereum/go-ethereum/trie/node_enc.go:54.47,56.2 1 1 +github.com/ethereum/go-ethereum/trie/node_enc.go:58.48,60.2 1 1 +github.com/ethereum/go-ethereum/trie/node_enc.go:62.50,64.22 2 1 +github.com/ethereum/go-ethereum/trie/node_enc.go:71.2,71.19 1 1 +github.com/ethereum/go-ethereum/trie/node_enc.go:64.22,65.15 1 1 +github.com/ethereum/go-ethereum/trie/node_enc.go:65.15,67.4 1 1 +github.com/ethereum/go-ethereum/trie/node_enc.go:67.9,69.4 1 1 +github.com/ethereum/go-ethereum/trie/node_enc.go:74.52,77.18 3 1 +github.com/ethereum/go-ethereum/trie/node_enc.go:82.2,82.19 1 1 +github.com/ethereum/go-ethereum/trie/node_enc.go:77.18,79.3 1 1 +github.com/ethereum/go-ethereum/trie/node_enc.go:79.8,81.3 1 0 +github.com/ethereum/go-ethereum/trie/node_enc.go:85.46,87.2 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:37.86,42.32 4 1 +github.com/ethereum/go-ethereum/trie/proof.go:68.2,71.26 3 1 +github.com/ethereum/go-ethereum/trie/proof.go:88.2,88.12 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:42.32,43.25 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:44.19,45.70 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:52.4,52.28 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:53.18,56.28 3 1 +github.com/ethereum/go-ethereum/trie/proof.go:57.17,60.18 3 0 +github.com/ethereum/go-ethereum/trie/proof.go:64.11,65.54 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:45.70,48.5 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:48.10,51.5 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:60.18,63.5 2 0 +github.com/ethereum/go-ethereum/trie/proof.go:71.26,72.20 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:76.3,78.46 3 1 +github.com/ethereum/go-ethereum/trie/proof.go:72.20,74.12 2 0 +github.com/ethereum/go-ethereum/trie/proof.go:78.46,82.11 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:85.4,85.26 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:82.11,84.5 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:98.92,100.2 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:105.108,108.20 3 1 +github.com/ethereum/go-ethereum/trie/proof.go:108.20,110.17 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:113.3,114.17 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:117.3,118.28 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:110.17,112.4 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:114.17,116.4 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:119.12,121.19 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:122.17,124.26 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:125.18,126.19 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:136.138,138.54 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:151.2,151.17 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:158.2,165.6 3 1 +github.com/ethereum/go-ethereum/trie/proof.go:138.54,140.17 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:143.3,144.17 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:147.3,147.16 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:140.17,142.4 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:144.17,146.4 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:151.17,153.17 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:156.3,156.11 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:153.17,155.4 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:165.6,167.30 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:192.3,192.33 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:200.3,200.23 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:203.3,203.31 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:168.12,173.24 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:176.4,176.68 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:177.19,179.12 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:180.18,182.12 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:183.17,185.18 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:188.18,189.17 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:173.24,175.5 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:185.18,187.5 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:193.19,194.21 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:195.18,196.34 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:197.11,198.60 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:200.23,202.4 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:218.69,234.6 3 1 +github.com/ethereum/go-ethereum/trie/proof.go:271.2,271.24 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:234.6,235.27 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:236.19,241.35 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:246.4,246.36 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:251.4,251.49 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:254.4,255.36 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:256.18,262.68 3 1 +github.com/ethereum/go-ethereum/trie/proof.go:265.4,266.42 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:267.11,268.52 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:241.35,243.5 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:243.10,245.5 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:246.36,248.5 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:248.10,250.5 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:251.49,252.19 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:262.68,263.19 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:272.18,279.50 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:282.3,282.48 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:285.3,285.48 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:294.3,294.26 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:305.3,305.25 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:316.3,316.20 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:317.17,319.47 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:322.3,322.81 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:325.3,325.82 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:328.3,328.20 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:329.10,330.51 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:279.50,281.4 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:282.48,284.4 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:285.48,287.21 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:290.4,291.21 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:287.21,289.5 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:294.26,295.39 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:303.4,303.67 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:295.39,297.22 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:300.5,301.22 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:297.22,299.6 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:305.25,306.39 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:314.4,314.67 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:306.39,308.22 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:311.5,312.22 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:308.22,310.6 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:319.47,321.4 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:322.81,324.4 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:325.82,327.4 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:346.81,347.29 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:348.17,349.17 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:360.3,360.68 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:361.18,362.88 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:391.3,391.39 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:396.3,397.64 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:398.11,401.13 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:402.10,403.31 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:349.17,350.39 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:353.4,353.37 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:350.39,352.5 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:354.9,355.39 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:358.4,358.37 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:355.39,357.5 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:362.88,364.18 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:389.4,389.14 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:364.18,365.46 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:365.46,371.6 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:371.12,375.6 0 0 +github.com/ethereum/go-ethereum/trie/proof.go:376.10,377.46 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:377.46,383.6 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:383.12,387.6 0 0 +github.com/ethereum/go-ethereum/trie/proof.go:391.39,395.4 3 1 +github.com/ethereum/go-ethereum/trie/proof.go:411.50,413.18 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:433.2,433.14 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:413.18,414.28 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:415.18,416.39 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:421.4,421.44 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:422.19,423.84 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:426.4,426.39 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:427.18,428.16 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:429.11,430.58 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:416.39,417.30 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:417.30,419.6 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:423.84,425.5 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:470.152,471.30 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:475.2,475.35 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:480.2,480.31 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:487.2,487.18 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:499.2,499.20 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:511.2,511.54 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:526.2,526.43 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:530.2,530.35 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:536.2,537.16 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:543.2,544.16 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:549.2,550.16 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:555.2,556.11 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:559.2,559.31 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:562.2,562.27 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:565.2,565.57 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:471.30,473.3 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:475.35,476.45 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:476.45,478.4 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:480.31,481.22 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:481.22,483.4 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:487.18,489.32 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:492.3,492.54 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:495.3,495.20 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:489.32,491.4 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:492.54,494.4 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:499.20,501.17 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:504.3,504.52 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:507.3,507.20 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:501.17,503.4 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:504.52,506.4 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:511.54,513.17 2 1 +github.com/ethereum/go-ethereum/trie/proof.go:516.3,516.38 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:519.3,519.35 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:522.3,522.46 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:513.17,515.4 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:516.38,518.4 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:519.35,521.4 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:526.43,528.3 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:530.35,532.3 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:537.16,539.3 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:544.16,546.3 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:550.16,552.3 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:556.11,558.3 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:559.31,561.3 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:562.27,564.3 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:573.65,574.6 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:574.6,575.25 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:576.19,577.70 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:580.4,582.21 3 1 +github.com/ethereum/go-ethereum/trie/proof.go:585.18,588.21 3 1 +github.com/ethereum/go-ethereum/trie/proof.go:591.17,592.17 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:593.12,594.19 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:595.18,596.17 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:597.11,598.54 1 0 +github.com/ethereum/go-ethereum/trie/proof.go:577.70,579.5 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:582.21,584.5 1 1 +github.com/ethereum/go-ethereum/trie/proof.go:588.21,590.5 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:36.26,38.3 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:41.60,45.2 3 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:47.34,50.2 2 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:64.55,69.2 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:72.78,74.49 2 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:78.2,78.15 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:81.2,81.17 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:74.49,76.3 1 0 +github.com/ethereum/go-ethereum/trie/stacktrie.go:78.15,80.3 1 0 +github.com/ethereum/go-ethereum/trie/stacktrie.go:85.63,98.17 2 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:101.2,101.36 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:113.2,114.23 2 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:98.17,100.3 1 0 +github.com/ethereum/go-ethereum/trie/stacktrie.go:101.36,102.19 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:106.3,107.58 2 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:102.19,104.12 2 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:107.58,109.4 1 0 +github.com/ethereum/go-ethereum/trie/stacktrie.go:109.9,111.4 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:118.57,121.2 2 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:123.57,135.29 7 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:145.2,145.12 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:135.29,136.45 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:141.3,143.26 3 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:136.45,138.4 1 0 +github.com/ethereum/go-ethereum/trie/stacktrie.go:138.9,138.30 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:138.30,139.12 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:148.53,150.36 2 0 +github.com/ethereum/go-ethereum/trie/stacktrie.go:150.36,151.19 1 0 +github.com/ethereum/go-ethereum/trie/stacktrie.go:151.19,153.4 1 0 +github.com/ethereum/go-ethereum/trie/stacktrie.go:157.67,163.2 5 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:165.79,171.2 5 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:183.57,185.21 2 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:188.2,189.12 2 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:185.21,186.34 1 0 +github.com/ethereum/go-ethereum/trie/stacktrie.go:192.48,193.49 1 0 +github.com/ethereum/go-ethereum/trie/stacktrie.go:193.49,195.3 1 0 +github.com/ethereum/go-ethereum/trie/stacktrie.go:198.30,202.29 4 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:205.2,205.25 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:202.29,204.3 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:211.51,212.34 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:217.2,217.20 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:212.34,213.25 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:213.25,215.4 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:222.48,223.21 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:224.18,227.33 2 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:237.3,237.30 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:242.15,251.29 2 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:261.3,262.30 2 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:270.3,272.19 3 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:288.3,295.28 6 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:297.16,307.29 2 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:314.3,315.19 2 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:332.3,342.15 7 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:344.17,347.17 3 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:349.18,350.38 1 0 +github.com/ethereum/go-ethereum/trie/stacktrie.go:352.10,353.24 1 0 +github.com/ethereum/go-ethereum/trie/stacktrie.go:227.33,228.29 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:228.29,229.46 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:232.5,232.10 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:229.46,231.6 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:237.30,239.4 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:239.9,241.4 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:251.29,256.4 2 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:262.30,264.4 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:264.9,268.4 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:272.19,279.4 3 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:279.9,286.4 3 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:307.29,308.47 1 0 +github.com/ethereum/go-ethereum/trie/stacktrie.go:315.19,320.4 3 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:320.9,327.4 4 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:367.29,372.2 3 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:374.46,378.21 2 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:441.2,443.27 3 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:450.2,451.18 2 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:379.18,380.9 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:382.17,386.9 4 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:388.18,390.37 2 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:408.3,409.38 2 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:411.15,416.35 4 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:422.3,427.23 4 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:429.16,435.38 5 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:437.10,438.29 1 0 +github.com/ethereum/go-ethereum/trie/stacktrie.go:390.37,391.20 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:396.4,397.27 2 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:404.4,405.23 2 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:391.20,393.13 2 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:397.27,399.5 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:399.10,401.5 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:416.35,418.4 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:418.9,420.4 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:443.27,446.3 2 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:451.18,455.3 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:459.45,464.23 4 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:472.2,475.10 4 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:464.23,467.3 2 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:485.58,486.18 1 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:490.2,494.23 4 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:502.2,506.15 5 1 +github.com/ethereum/go-ethereum/trie/stacktrie.go:486.18,488.3 1 0 +github.com/ethereum/go-ethereum/trie/stacktrie.go:494.23,497.3 2 1 +github.com/ethereum/go-ethereum/trie/sync.go:76.40,82.20 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:85.2,85.68 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:82.20,84.3 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:102.38,107.2 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:110.59,113.2 2 1 +github.com/ethereum/go-ethereum/trie/sync.go:116.59,119.2 2 0 +github.com/ethereum/go-ethereum/trie/sync.go:134.92,145.2 3 1 +github.com/ethereum/go-ethereum/trie/sync.go:148.101,150.23 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:153.2,153.30 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:158.2,158.41 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:162.2,168.31 2 1 +github.com/ethereum/go-ethereum/trie/sync.go:176.2,176.17 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:150.23,152.3 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:153.30,155.3 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:158.41,160.3 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:168.31,170.22 2 0 +github.com/ethereum/go-ethereum/trie/sync.go:173.3,174.46 2 0 +github.com/ethereum/go-ethereum/trie/sync.go:170.22,171.65 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:182.80,184.24 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:187.2,187.30 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:195.2,195.47 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:199.2,205.31 2 0 +github.com/ethereum/go-ethereum/trie/sync.go:213.2,213.17 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:184.24,186.3 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:187.30,189.3 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:195.47,197.3 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:205.31,207.22 2 0 +github.com/ethereum/go-ethereum/trie/sync.go:210.3,211.46 2 0 +github.com/ethereum/go-ethereum/trie/sync.go:207.22,208.66 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:219.94,225.78 2 1 +github.com/ethereum/go-ethereum/trie/sync.go:246.2,246.42 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:225.78,231.44 3 1 +github.com/ethereum/go-ethereum/trie/sync.go:235.3,239.38 4 1 +github.com/ethereum/go-ethereum/trie/sync.go:231.44,232.9 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:239.38,242.4 2 1 +github.com/ethereum/go-ethereum/trie/sync.go:242.9,244.4 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:255.49,257.70 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:261.2,262.67 2 1 +github.com/ethereum/go-ethereum/trie/sync.go:268.2,268.67 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:291.2,291.13 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:294.2,294.12 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:257.70,259.3 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:262.67,266.3 3 0 +github.com/ethereum/go-ethereum/trie/sync.go:268.67,272.17 3 1 +github.com/ethereum/go-ethereum/trie/sync.go:275.3,279.17 3 1 +github.com/ethereum/go-ethereum/trie/sync.go:282.3,282.42 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:272.17,274.4 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:279.17,281.4 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:282.42,284.4 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:284.9,286.35 2 1 +github.com/ethereum/go-ethereum/trie/sync.go:286.35,288.5 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:291.13,293.3 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:299.46,301.43 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:304.2,304.43 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:308.2,309.12 2 1 +github.com/ethereum/go-ethereum/trie/sync.go:301.43,303.3 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:304.43,306.3 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:313.30,315.2 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:320.39,322.14 2 1 +github.com/ethereum/go-ethereum/trie/sync.go:326.2,326.37 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:330.2,338.47 3 1 +github.com/ethereum/go-ethereum/trie/sync.go:341.2,341.30 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:322.14,324.3 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:326.37,329.3 2 0 +github.com/ethereum/go-ethereum/trie/sync.go:338.47,340.3 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:346.72,354.33 3 1 +github.com/ethereum/go-ethereum/trie/sync.go:377.2,378.33 2 1 +github.com/ethereum/go-ethereum/trie/sync.go:415.2,415.22 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:355.18,357.19 2 1 +github.com/ethereum/go-ethereum/trie/sync.go:360.3,363.5 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:364.17,365.27 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:373.10,374.48 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:357.19,359.4 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:365.27,366.31 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:366.31,371.5 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:378.33,380.26 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:395.3,395.46 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:380.26,381.48 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:381.48,383.47 2 0 +github.com/ethereum/go-ethereum/trie/sync.go:389.5,389.75 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:383.47,385.6 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:385.11,385.54 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:385.54,388.6 2 0 +github.com/ethereum/go-ethereum/trie/sync.go:389.75,391.6 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:395.46,398.32 2 1 +github.com/ethereum/go-ethereum/trie/sync.go:403.4,403.43 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:407.4,412.6 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:398.32,399.13 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:403.43,404.13 1 0 +github.com/ethereum/go-ethereum/trie/sync.go:421.49,423.14 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:433.2,433.37 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:441.2,441.12 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:423.14,427.3 3 0 +github.com/ethereum/go-ethereum/trie/sync.go:427.8,431.3 3 1 +github.com/ethereum/go-ethereum/trie/sync.go:433.37,435.23 2 1 +github.com/ethereum/go-ethereum/trie/sync.go:435.23,436.43 1 1 +github.com/ethereum/go-ethereum/trie/sync.go:436.43,438.5 1 0 +github.com/ethereum/go-ethereum/trie/database.go:99.45,99.95 1 0 +github.com/ethereum/go-ethereum/trie/database.go:100.45,100.95 1 0 +github.com/ethereum/go-ethereum/trie/database.go:102.47,105.2 2 0 +github.com/ethereum/go-ethereum/trie/database.go:112.49,112.99 1 0 +github.com/ethereum/go-ethereum/trie/database.go:113.49,113.99 1 0 +github.com/ethereum/go-ethereum/trie/database.go:115.51,119.2 3 0 +github.com/ethereum/go-ethereum/trie/database.go:129.50,129.100 1 0 +github.com/ethereum/go-ethereum/trie/database.go:130.50,130.100 1 0 +github.com/ethereum/go-ethereum/trie/database.go:156.35,157.38 1 1 +github.com/ethereum/go-ethereum/trie/database.go:160.2,160.28 1 1 +github.com/ethereum/go-ethereum/trie/database.go:157.38,159.3 1 0 +github.com/ethereum/go-ethereum/trie/database.go:165.49,166.38 1 1 +github.com/ethereum/go-ethereum/trie/database.go:169.2,169.36 1 1 +github.com/ethereum/go-ethereum/trie/database.go:166.38,168.3 1 0 +github.com/ethereum/go-ethereum/trie/database.go:175.64,176.32 1 1 +github.com/ethereum/go-ethereum/trie/database.go:179.2,179.36 1 1 +github.com/ethereum/go-ethereum/trie/database.go:176.32,178.3 1 0 +github.com/ethereum/go-ethereum/trie/database.go:179.36,181.3 1 1 +github.com/ethereum/go-ethereum/trie/database.go:186.64,187.23 1 1 +github.com/ethereum/go-ethereum/trie/database.go:188.21,189.36 1 1 +github.com/ethereum/go-ethereum/trie/database.go:190.19,191.27 1 1 +github.com/ethereum/go-ethereum/trie/database.go:194.16,195.33 1 1 +github.com/ethereum/go-ethereum/trie/database.go:196.31,196.31 0 1 +github.com/ethereum/go-ethereum/trie/database.go:197.10,198.49 1 0 +github.com/ethereum/go-ethereum/trie/database.go:191.27,193.4 1 1 +github.com/ethereum/go-ethereum/trie/database.go:204.32,205.23 1 1 +github.com/ethereum/go-ethereum/trie/database.go:206.18,208.61 1 1 +github.com/ethereum/go-ethereum/trie/database.go:210.17,213.34 2 1 +github.com/ethereum/go-ethereum/trie/database.go:218.3,218.14 1 1 +github.com/ethereum/go-ethereum/trie/database.go:220.36,221.11 1 1 +github.com/ethereum/go-ethereum/trie/database.go:223.10,224.49 1 0 +github.com/ethereum/go-ethereum/trie/database.go:213.34,214.22 1 1 +github.com/ethereum/go-ethereum/trie/database.go:214.22,216.5 1 1 +github.com/ethereum/go-ethereum/trie/database.go:230.45,231.23 1 1 +github.com/ethereum/go-ethereum/trie/database.go:232.21,240.4 1 1 +github.com/ethereum/go-ethereum/trie/database.go:242.19,249.43 2 1 +github.com/ethereum/go-ethereum/trie/database.go:254.3,254.14 1 1 +github.com/ethereum/go-ethereum/trie/database.go:256.27,257.11 1 1 +github.com/ethereum/go-ethereum/trie/database.go:259.10,260.49 1 0 +github.com/ethereum/go-ethereum/trie/database.go:249.43,250.19 1 1 +github.com/ethereum/go-ethereum/trie/database.go:250.19,252.5 1 1 +github.com/ethereum/go-ethereum/trie/database.go:274.56,276.2 1 1 +github.com/ethereum/go-ethereum/trie/database.go:281.82,283.39 2 1 +github.com/ethereum/go-ethereum/trie/database.go:290.2,297.39 2 1 +github.com/ethereum/go-ethereum/trie/database.go:300.2,300.11 1 1 +github.com/ethereum/go-ethereum/trie/database.go:283.39,284.27 1 0 +github.com/ethereum/go-ethereum/trie/database.go:284.27,286.4 1 0 +github.com/ethereum/go-ethereum/trie/database.go:286.9,288.4 1 0 +github.com/ethereum/go-ethereum/trie/database.go:297.39,299.3 1 1 +github.com/ethereum/go-ethereum/trie/database.go:304.50,306.2 1 0 +github.com/ethereum/go-ethereum/trie/database.go:312.67,314.35 1 1 +github.com/ethereum/go-ethereum/trie/database.go:317.2,325.42 3 1 +github.com/ethereum/go-ethereum/trie/database.go:330.2,333.34 2 1 +github.com/ethereum/go-ethereum/trie/database.go:338.2,338.70 1 1 +github.com/ethereum/go-ethereum/trie/database.go:314.35,316.3 1 1 +github.com/ethereum/go-ethereum/trie/database.go:325.42,326.39 1 1 +github.com/ethereum/go-ethereum/trie/database.go:326.39,328.4 1 1 +github.com/ethereum/go-ethereum/trie/database.go:333.34,335.3 1 1 +github.com/ethereum/go-ethereum/trie/database.go:335.8,337.3 1 1 +github.com/ethereum/go-ethereum/trie/database.go:346.71,348.25 1 1 +github.com/ethereum/go-ethereum/trie/database.go:352.2,352.37 1 1 +github.com/ethereum/go-ethereum/trie/database.go:355.2,356.75 2 1 +github.com/ethereum/go-ethereum/trie/database.go:348.25,350.3 1 0 +github.com/ethereum/go-ethereum/trie/database.go:352.37,354.3 1 1 +github.com/ethereum/go-ethereum/trie/database.go:361.49,363.22 1 1 +github.com/ethereum/go-ethereum/trie/database.go:371.2,375.18 4 1 +github.com/ethereum/go-ethereum/trie/database.go:380.2,384.30 3 1 +github.com/ethereum/go-ethereum/trie/database.go:387.2,387.22 1 1 +github.com/ethereum/go-ethereum/trie/database.go:392.2,392.37 1 1 +github.com/ethereum/go-ethereum/trie/database.go:363.22,364.53 1 0 +github.com/ethereum/go-ethereum/trie/database.go:364.53,368.4 3 0 +github.com/ethereum/go-ethereum/trie/database.go:375.18,379.3 3 1 +github.com/ethereum/go-ethereum/trie/database.go:384.30,386.3 1 1 +github.com/ethereum/go-ethereum/trie/database.go:387.22,391.3 3 0 +github.com/ethereum/go-ethereum/trie/database.go:397.60,399.29 1 1 +github.com/ethereum/go-ethereum/trie/database.go:403.2,403.22 1 1 +github.com/ethereum/go-ethereum/trie/database.go:411.2,415.18 4 1 +github.com/ethereum/go-ethereum/trie/database.go:420.2,424.19 3 1 +github.com/ethereum/go-ethereum/trie/database.go:432.2,432.37 1 0 +github.com/ethereum/go-ethereum/trie/database.go:399.29,401.3 1 1 +github.com/ethereum/go-ethereum/trie/database.go:403.22,404.53 1 0 +github.com/ethereum/go-ethereum/trie/database.go:404.53,408.4 3 0 +github.com/ethereum/go-ethereum/trie/database.go:415.18,419.3 3 1 +github.com/ethereum/go-ethereum/trie/database.go:424.19,425.23 1 1 +github.com/ethereum/go-ethereum/trie/database.go:430.3,430.18 1 1 +github.com/ethereum/go-ethereum/trie/database.go:425.23,429.4 3 0 +github.com/ethereum/go-ethereum/trie/database.go:437.55,439.25 1 0 +github.com/ethereum/go-ethereum/trie/database.go:443.2,447.21 4 0 +github.com/ethereum/go-ethereum/trie/database.go:450.2,450.44 1 0 +github.com/ethereum/go-ethereum/trie/database.go:439.25,441.3 1 0 +github.com/ethereum/go-ethereum/trie/database.go:447.21,449.3 1 0 +github.com/ethereum/go-ethereum/trie/database.go:456.43,461.31 4 1 +github.com/ethereum/go-ethereum/trie/database.go:466.2,466.15 1 1 +github.com/ethereum/go-ethereum/trie/database.go:461.31,462.30 1 1 +github.com/ethereum/go-ethereum/trie/database.go:462.30,464.4 1 1 +github.com/ethereum/go-ethereum/trie/database.go:473.70,478.2 3 0 +github.com/ethereum/go-ethereum/trie/database.go:481.70,484.9 2 0 +github.com/ethereum/go-ethereum/trie/database.go:488.2,488.40 1 0 +github.com/ethereum/go-ethereum/trie/database.go:494.2,496.45 3 0 +github.com/ethereum/go-ethereum/trie/database.go:484.9,486.3 1 0 +github.com/ethereum/go-ethereum/trie/database.go:488.40,491.3 2 0 +github.com/ethereum/go-ethereum/trie/database.go:491.8,491.88 1 0 +github.com/ethereum/go-ethereum/trie/database.go:491.88,493.3 1 0 +github.com/ethereum/go-ethereum/trie/database.go:496.45,498.3 1 0 +github.com/ethereum/go-ethereum/trie/database.go:502.51,504.29 1 0 +github.com/ethereum/go-ethereum/trie/database.go:508.2,523.125 11 0 +github.com/ethereum/go-ethereum/trie/database.go:504.29,507.3 2 0 +github.com/ethereum/go-ethereum/trie/database.go:527.72,531.54 2 0 +github.com/ethereum/go-ethereum/trie/database.go:539.2,540.9 2 0 +github.com/ethereum/go-ethereum/trie/database.go:544.2,544.22 1 0 +github.com/ethereum/go-ethereum/trie/database.go:551.2,551.23 1 0 +github.com/ethereum/go-ethereum/trie/database.go:531.54,533.32 2 0 +github.com/ethereum/go-ethereum/trie/database.go:533.32,536.4 2 0 +github.com/ethereum/go-ethereum/trie/database.go:540.9,542.3 1 0 +github.com/ethereum/go-ethereum/trie/database.go:544.22,550.3 1 0 +github.com/ethereum/go-ethereum/trie/database.go:551.23,553.16 1 0 +github.com/ethereum/go-ethereum/trie/database.go:565.3,565.41 1 0 +github.com/ethereum/go-ethereum/trie/database.go:568.3,570.27 3 0 +github.com/ethereum/go-ethereum/trie/database.go:554.18,556.56 2 0 +github.com/ethereum/go-ethereum/trie/database.go:557.18,559.56 2 0 +github.com/ethereum/go-ethereum/trie/database.go:560.11,562.57 2 0 +github.com/ethereum/go-ethereum/trie/database.go:565.41,567.4 1 0 +github.com/ethereum/go-ethereum/trie/database.go:570.27,572.4 1 0 +github.com/ethereum/go-ethereum/trie/database.go:581.57,598.20 6 1 +github.com/ethereum/go-ethereum/trie/database.go:612.2,613.48 2 1 +github.com/ethereum/go-ethereum/trie/database.go:636.2,636.38 1 1 +github.com/ethereum/go-ethereum/trie/database.go:641.2,644.20 3 1 +github.com/ethereum/go-ethereum/trie/database.go:651.2,651.26 1 1 +github.com/ethereum/go-ethereum/trie/database.go:661.2,661.34 1 1 +github.com/ethereum/go-ethereum/trie/database.go:664.2,675.12 8 1 +github.com/ethereum/go-ethereum/trie/database.go:598.20,599.26 1 0 +github.com/ethereum/go-ethereum/trie/database.go:599.26,601.4 1 0 +github.com/ethereum/go-ethereum/trie/database.go:601.9,603.48 2 0 +github.com/ethereum/go-ethereum/trie/database.go:603.48,604.41 1 0 +github.com/ethereum/go-ethereum/trie/database.go:607.5,607.18 1 0 +github.com/ethereum/go-ethereum/trie/database.go:604.41,606.6 1 0 +github.com/ethereum/go-ethereum/trie/database.go:613.48,619.48 3 1 +github.com/ethereum/go-ethereum/trie/database.go:629.3,630.27 2 1 +github.com/ethereum/go-ethereum/trie/database.go:633.3,633.26 1 1 +github.com/ethereum/go-ethereum/trie/database.go:619.48,620.40 1 1 +github.com/ethereum/go-ethereum/trie/database.go:624.4,624.17 1 1 +github.com/ethereum/go-ethereum/trie/database.go:620.40,623.5 2 0 +github.com/ethereum/go-ethereum/trie/database.go:630.27,632.4 1 0 +github.com/ethereum/go-ethereum/trie/database.go:636.38,639.3 2 0 +github.com/ethereum/go-ethereum/trie/database.go:644.20,645.26 1 0 +github.com/ethereum/go-ethereum/trie/database.go:645.26,647.4 1 0 +github.com/ethereum/go-ethereum/trie/database.go:647.9,649.4 1 0 +github.com/ethereum/go-ethereum/trie/database.go:651.26,657.27 5 1 +github.com/ethereum/go-ethereum/trie/database.go:657.27,659.4 1 0 +github.com/ethereum/go-ethereum/trie/database.go:661.34,663.3 1 0 +github.com/ethereum/go-ethereum/trie/database.go:684.93,693.25 3 1 +github.com/ethereum/go-ethereum/trie/database.go:703.2,706.67 3 1 +github.com/ethereum/go-ethereum/trie/database.go:711.2,711.38 1 1 +github.com/ethereum/go-ethereum/trie/database.go:716.2,723.25 5 1 +github.com/ethereum/go-ethereum/trie/database.go:726.2,731.13 5 1 +github.com/ethereum/go-ethereum/trie/database.go:734.2,741.12 4 1 +github.com/ethereum/go-ethereum/trie/database.go:693.25,697.39 2 1 +github.com/ethereum/go-ethereum/trie/database.go:700.3,700.16 1 1 +github.com/ethereum/go-ethereum/trie/database.go:697.39,699.4 1 0 +github.com/ethereum/go-ethereum/trie/database.go:706.67,709.3 2 0 +github.com/ethereum/go-ethereum/trie/database.go:711.38,714.3 2 0 +github.com/ethereum/go-ethereum/trie/database.go:723.25,725.3 1 1 +github.com/ethereum/go-ethereum/trie/database.go:731.13,733.3 1 1 +github.com/ethereum/go-ethereum/trie/database.go:745.118,748.9 2 1 +github.com/ethereum/go-ethereum/trie/database.go:751.2,752.41 2 1 +github.com/ethereum/go-ethereum/trie/database.go:757.2,757.16 1 1 +github.com/ethereum/go-ethereum/trie/database.go:761.2,762.21 2 1 +github.com/ethereum/go-ethereum/trie/database.go:765.2,765.47 1 1 +github.com/ethereum/go-ethereum/trie/database.go:774.2,774.12 1 1 +github.com/ethereum/go-ethereum/trie/database.go:748.9,750.3 1 1 +github.com/ethereum/go-ethereum/trie/database.go:752.41,753.17 1 1 +github.com/ethereum/go-ethereum/trie/database.go:753.17,755.4 1 1 +github.com/ethereum/go-ethereum/trie/database.go:757.16,759.3 1 0 +github.com/ethereum/go-ethereum/trie/database.go:762.21,764.3 1 1 +github.com/ethereum/go-ethereum/trie/database.go:765.47,766.39 1 0 +github.com/ethereum/go-ethereum/trie/database.go:769.3,772.19 4 0 +github.com/ethereum/go-ethereum/trie/database.go:766.39,768.4 1 0 +github.com/ethereum/go-ethereum/trie/database.go:788.53,793.9 3 1 +github.com/ethereum/go-ethereum/trie/database.go:797.2,797.14 1 1 +github.com/ethereum/go-ethereum/trie/database.go:809.2,811.26 3 1 +github.com/ethereum/go-ethereum/trie/database.go:815.2,815.24 1 1 +github.com/ethereum/go-ethereum/trie/database.go:819.2,819.12 1 1 +github.com/ethereum/go-ethereum/trie/database.go:793.9,795.3 1 0 +github.com/ethereum/go-ethereum/trie/database.go:798.19,800.57 2 1 +github.com/ethereum/go-ethereum/trie/database.go:801.19,803.57 2 0 +github.com/ethereum/go-ethereum/trie/database.go:804.10,806.58 2 0 +github.com/ethereum/go-ethereum/trie/database.go:811.26,813.3 1 0 +github.com/ethereum/go-ethereum/trie/database.go:815.24,818.3 2 0 +github.com/ethereum/go-ethereum/trie/database.go:822.44,823.26 1 0 +github.com/ethereum/go-ethereum/trie/database.go:828.69,838.2 5 0 +github.com/ethereum/go-ethereum/trie/database.go:842.62,843.22 1 0 +github.com/ethereum/go-ethereum/trie/database.go:846.2,850.16 4 0 +github.com/ethereum/go-ethereum/trie/database.go:854.2,855.12 2 0 +github.com/ethereum/go-ethereum/trie/database.go:843.22,845.3 1 0 +github.com/ethereum/go-ethereum/trie/database.go:850.16,853.3 2 0 +github.com/ethereum/go-ethereum/trie/database.go:860.49,862.2 1 0 +github.com/ethereum/go-ethereum/trie/database.go:866.103,870.6 3 0 +github.com/ethereum/go-ethereum/trie/database.go:870.6,871.10 1 0 +github.com/ethereum/go-ethereum/trie/database.go:872.19,873.24 1 0 +github.com/ethereum/go-ethereum/trie/database.go:874.17,875.10 1 0 +github.com/ethereum/go-ethereum/trie/encoding.go:37.38,39.18 2 1 +github.com/ethereum/go-ethereum/trie/encoding.go:43.2,45.21 3 1 +github.com/ethereum/go-ethereum/trie/encoding.go:50.2,51.12 2 1 +github.com/ethereum/go-ethereum/trie/encoding.go:39.18,42.3 2 1 +github.com/ethereum/go-ethereum/trie/encoding.go:45.21,49.3 3 1 +github.com/ethereum/go-ethereum/trie/encoding.go:56.42,62.39 2 1 +github.com/ethereum/go-ethereum/trie/encoding.go:66.2,71.19 2 1 +github.com/ethereum/go-ethereum/trie/encoding.go:76.2,76.41 1 1 +github.com/ethereum/go-ethereum/trie/encoding.go:79.2,80.15 2 1 +github.com/ethereum/go-ethereum/trie/encoding.go:62.39,65.3 2 1 +github.com/ethereum/go-ethereum/trie/encoding.go:71.19,75.3 3 1 +github.com/ethereum/go-ethereum/trie/encoding.go:76.41,78.3 1 1 +github.com/ethereum/go-ethereum/trie/encoding.go:83.42,84.23 1 1 +github.com/ethereum/go-ethereum/trie/encoding.go:87.2,89.17 2 1 +github.com/ethereum/go-ethereum/trie/encoding.go:93.2,94.20 2 1 +github.com/ethereum/go-ethereum/trie/encoding.go:84.23,86.3 1 1 +github.com/ethereum/go-ethereum/trie/encoding.go:89.17,91.3 1 1 +github.com/ethereum/go-ethereum/trie/encoding.go:97.39,100.24 3 1 +github.com/ethereum/go-ethereum/trie/encoding.go:104.2,105.16 2 1 +github.com/ethereum/go-ethereum/trie/encoding.go:100.24,103.3 2 1 +github.com/ethereum/go-ethereum/trie/encoding.go:110.39,111.18 1 1 +github.com/ethereum/go-ethereum/trie/encoding.go:114.2,114.21 1 1 +github.com/ethereum/go-ethereum/trie/encoding.go:117.2,119.12 3 1 +github.com/ethereum/go-ethereum/trie/encoding.go:111.18,113.3 1 1 +github.com/ethereum/go-ethereum/trie/encoding.go:114.21,115.47 1 0 +github.com/ethereum/go-ethereum/trie/encoding.go:122.50,123.61 1 1 +github.com/ethereum/go-ethereum/trie/encoding.go:123.61,125.3 1 1 +github.com/ethereum/go-ethereum/trie/encoding.go:129.33,131.21 2 1 +github.com/ethereum/go-ethereum/trie/encoding.go:134.2,134.24 1 1 +github.com/ethereum/go-ethereum/trie/encoding.go:139.2,139.10 1 1 +github.com/ethereum/go-ethereum/trie/encoding.go:131.21,133.3 1 1 +github.com/ethereum/go-ethereum/trie/encoding.go:134.24,135.19 1 1 +github.com/ethereum/go-ethereum/trie/encoding.go:135.19,136.9 1 1 +github.com/ethereum/go-ethereum/trie/encoding.go:143.29,145.2 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:38.26,44.3 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:47.39,51.2 3 1 +github.com/ethereum/go-ethereum/trie/hasher.go:53.36,55.2 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:59.70,61.39 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:65.2,65.23 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:61.39,63.3 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:66.18,71.38 3 1 +github.com/ethereum/go-ethereum/trie/hasher.go:76.3,76.24 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:77.17,80.38 3 1 +github.com/ethereum/go-ethereum/trie/hasher.go:85.3,85.24 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:86.10,88.14 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:71.38,73.4 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:73.9,75.4 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:80.38,82.4 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:82.9,84.4 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:95.85,103.22 3 1 +github.com/ethereum/go-ethereum/trie/hasher.go:107.2,107.26 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:104.29,105.51 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:110.92,114.16 3 1 +github.com/ethereum/go-ethereum/trie/hasher.go:139.2,139.26 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:114.16,117.27 3 1 +github.com/ethereum/go-ethereum/trie/hasher.go:129.3,129.12 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:117.27,118.19 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:118.19,120.45 2 1 +github.com/ethereum/go-ethereum/trie/hasher.go:125.5,126.14 2 1 +github.com/ethereum/go-ethereum/trie/hasher.go:120.45,122.6 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:122.11,124.6 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:130.8,131.27 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:131.27,132.44 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:132.44,134.5 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:134.10,136.5 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:146.65,150.29 3 1 +github.com/ethereum/go-ethereum/trie/hasher.go:153.2,153.24 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:150.29,152.3 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:158.63,162.29 3 1 +github.com/ethereum/go-ethereum/trie/hasher.go:165.2,165.24 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:162.29,164.3 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:178.40,182.2 3 1 +github.com/ethereum/go-ethereum/trie/hasher.go:185.49,191.2 5 1 +github.com/ethereum/go-ethereum/trie/hasher.go:197.68,198.30 1 1 +github.com/ethereum/go-ethereum/trie/hasher.go:199.18,201.42 2 1 +github.com/ethereum/go-ethereum/trie/hasher.go:202.17,204.41 2 1 +github.com/ethereum/go-ethereum/trie/hasher.go:205.10,207.14 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:40.45,44.2 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:47.33,48.27 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:55.2,58.14 4 1 +github.com/ethereum/go-ethereum/trie/iterator.go:48.27,49.23 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:49.23,53.4 3 1 +github.com/ethereum/go-ethereum/trie/iterator.go:63.38,65.2 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:152.35,154.2 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:156.61,157.30 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:163.2,165.11 3 1 +github.com/ethereum/go-ethereum/trie/iterator.go:157.30,162.3 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:168.68,170.2 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:172.44,173.24 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:176.2,176.39 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:173.24,175.3 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:179.46,180.24 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:183.2,183.41 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:180.24,182.3 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:186.37,188.2 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:190.42,191.23 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:196.2,196.22 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:191.23,192.62 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:192.62,194.4 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:199.43,200.23 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:205.2,205.22 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:200.23,201.65 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:201.65,203.4 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:208.46,209.23 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:225.2,225.22 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:209.23,210.62 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:210.62,215.52 4 1 +github.com/ethereum/go-ethereum/trie/iterator.go:222.4,222.17 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:215.52,218.49 2 1 +github.com/ethereum/go-ethereum/trie/iterator.go:218.49,220.6 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:228.39,230.2 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:232.43,233.34 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:236.2,237.16 2 1 +github.com/ethereum/go-ethereum/trie/iterator.go:241.2,241.13 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:233.34,235.3 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:237.16,240.3 2 0 +github.com/ethereum/go-ethereum/trie/iterator.go:244.39,245.30 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:248.2,248.40 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:251.2,251.15 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:245.30,247.3 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:248.40,250.3 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:258.49,259.30 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:262.2,262.40 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:268.2,270.19 3 1 +github.com/ethereum/go-ethereum/trie/iterator.go:273.2,274.13 2 1 +github.com/ethereum/go-ethereum/trie/iterator.go:259.30,261.3 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:262.40,263.48 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:263.48,265.4 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:270.19,272.3 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:277.51,282.6 3 1 +github.com/ethereum/go-ethereum/trie/iterator.go:282.6,284.28 2 1 +github.com/ethereum/go-ethereum/trie/iterator.go:291.3,291.36 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:284.28,286.4 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:286.9,286.24 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:286.24,288.4 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:288.9,288.43 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:288.43,290.4 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:296.60,299.23 3 1 +github.com/ethereum/go-ethereum/trie/iterator.go:302.2,302.38 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:299.23,301.3 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:306.86,308.24 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:312.2,312.14 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:318.2,318.24 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:334.2,334.38 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:308.24,311.3 2 1 +github.com/ethereum/go-ethereum/trie/iterator.go:312.14,315.3 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:318.24,321.34 3 1 +github.com/ethereum/go-ethereum/trie/iterator.go:324.3,325.9 2 1 +github.com/ethereum/go-ethereum/trie/iterator.go:332.3,332.11 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:321.34,323.4 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:325.9,326.50 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:329.4,329.42 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:326.50,328.5 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:339.92,341.24 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:345.2,345.40 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:351.2,351.24 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:367.2,367.38 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:341.24,344.3 2 1 +github.com/ethereum/go-ethereum/trie/iterator.go:345.40,348.3 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:351.24,354.34 3 1 +github.com/ethereum/go-ethereum/trie/iterator.go:357.3,358.9 2 1 +github.com/ethereum/go-ethereum/trie/iterator.go:365.3,365.11 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:354.34,356.4 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:358.9,359.50 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:362.4,362.42 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:359.50,361.5 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:370.79,371.24 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:378.2,379.22 2 1 +github.com/ethereum/go-ethereum/trie/iterator.go:371.24,372.70 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:372.70,373.59 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:373.59,375.5 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:382.81,383.24 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:388.2,388.40 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:383.24,384.70 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:384.70,386.4 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:391.75,392.40 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:400.2,400.12 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:392.40,394.17 2 1 +github.com/ethereum/go-ethereum/trie/iterator.go:397.3,398.37 2 1 +github.com/ethereum/go-ethereum/trie/iterator.go:394.17,396.4 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:403.115,409.41 2 1 +github.com/ethereum/go-ethereum/trie/iterator.go:425.2,425.25 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:409.41,410.31 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:410.31,423.4 6 1 +github.com/ethereum/go-ethereum/trie/iterator.go:428.119,429.36 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:451.2,451.31 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:430.17,432.100 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:436.18,438.23 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:432.100,435.4 2 1 +github.com/ethereum/go-ethereum/trie/iterator.go:438.23,449.4 4 1 +github.com/ethereum/go-ethereum/trie/iterator.go:456.133,457.33 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:497.2,497.31 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:458.17,461.19 2 1 +github.com/ethereum/go-ethereum/trie/iterator.go:466.3,466.36 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:471.3,471.7 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:482.18,484.23 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:461.19,464.4 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:466.36,469.4 2 1 +github.com/ethereum/go-ethereum/trie/iterator.go:471.7,475.61 2 1 +github.com/ethereum/go-ethereum/trie/iterator.go:480.4,480.55 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:475.61,478.5 2 1 +github.com/ethereum/go-ethereum/trie/iterator.go:484.23,495.4 4 1 +github.com/ethereum/go-ethereum/trie/iterator.go:500.87,503.24 3 1 +github.com/ethereum/go-ethereum/trie/iterator.go:503.24,505.3 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:508.31,513.2 4 1 +github.com/ethereum/go-ethereum/trie/iterator.go:515.42,516.56 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:519.2,519.27 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:524.2,524.72 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:527.2,527.26 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:530.2,530.10 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:516.56,518.3 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:519.27,521.3 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:521.8,521.34 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:521.34,523.3 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:524.72,526.3 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:527.26,529.3 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:542.68,549.2 3 1 +github.com/ethereum/go-ethereum/trie/iterator.go:551.50,553.2 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:555.52,557.2 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:559.43,561.2 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:563.48,565.2 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:567.49,569.2 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:571.52,573.2 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:575.45,577.2 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:579.49,581.2 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:583.74,584.26 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:587.47,591.22 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:594.2,596.12 2 1 +github.com/ethereum/go-ethereum/trie/iterator.go:601.2,601.6 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:591.22,593.3 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:596.12,599.3 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:601.6,602.35 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:603.11,605.24 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:609.4,609.14 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:610.10,612.15 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:613.10,616.27 2 1 +github.com/ethereum/go-ethereum/trie/iterator.go:619.4,620.27 2 1 +github.com/ethereum/go-ethereum/trie/iterator.go:624.4,624.14 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:605.24,608.5 2 0 +github.com/ethereum/go-ethereum/trie/iterator.go:616.27,618.5 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:620.27,623.5 2 1 +github.com/ethereum/go-ethereum/trie/iterator.go:629.45,630.37 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:633.2,633.21 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:630.37,632.3 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:638.48,638.65 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:639.48,639.87 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:640.48,640.75 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:641.48,641.85 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:642.46,647.2 4 1 +github.com/ethereum/go-ethereum/trie/iterator.go:657.66,664.2 5 1 +github.com/ethereum/go-ethereum/trie/iterator.go:666.45,668.2 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:670.47,672.2 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:674.38,676.2 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:678.43,680.2 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:682.44,684.2 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:686.47,688.2 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:690.40,692.2 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:694.44,696.2 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:698.69,699.26 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:716.50,717.25 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:722.2,726.141 2 1 +github.com/ethereum/go-ethereum/trie/iterator.go:735.2,735.25 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:739.2,739.27 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:717.25,719.3 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:726.141,729.52 2 1 +github.com/ethereum/go-ethereum/trie/iterator.go:729.52,733.4 2 1 +github.com/ethereum/go-ethereum/trie/iterator.go:735.25,738.3 2 1 +github.com/ethereum/go-ethereum/trie/iterator.go:742.40,743.38 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:748.2,748.12 1 1 +github.com/ethereum/go-ethereum/trie/iterator.go:743.38,744.48 1 0 +github.com/ethereum/go-ethereum/trie/iterator.go:744.48,746.4 1 0 +github.com/ethereum/go-ethereum/trie/node.go:55.49,59.2 3 0 +github.com/ethereum/go-ethereum/trie/node.go:61.39,61.67 2 1 +github.com/ethereum/go-ethereum/trie/node.go:62.39,62.67 2 1 +github.com/ethereum/go-ethereum/trie/node.go:70.46,70.84 1 1 +github.com/ethereum/go-ethereum/trie/node.go:71.46,71.84 1 1 +github.com/ethereum/go-ethereum/trie/node.go:72.46,72.66 1 1 +github.com/ethereum/go-ethereum/trie/node.go:73.46,73.66 1 1 +github.com/ethereum/go-ethereum/trie/node.go:76.37,76.61 1 0 +github.com/ethereum/go-ethereum/trie/node.go:77.37,77.61 1 0 +github.com/ethereum/go-ethereum/trie/node.go:78.37,78.61 1 0 +github.com/ethereum/go-ethereum/trie/node.go:79.37,79.61 1 0 +github.com/ethereum/go-ethereum/trie/node.go:81.47,83.35 2 0 +github.com/ethereum/go-ethereum/trie/node.go:90.2,90.42 1 0 +github.com/ethereum/go-ethereum/trie/node.go:83.35,84.18 1 0 +github.com/ethereum/go-ethereum/trie/node.go:84.18,86.4 1 0 +github.com/ethereum/go-ethereum/trie/node.go:86.9,88.4 1 0 +github.com/ethereum/go-ethereum/trie/node.go:92.48,94.2 1 0 +github.com/ethereum/go-ethereum/trie/node.go:95.46,97.2 1 0 +github.com/ethereum/go-ethereum/trie/node.go:98.47,100.2 1 0 +github.com/ethereum/go-ethereum/trie/node.go:102.44,104.16 2 1 +github.com/ethereum/go-ethereum/trie/node.go:107.2,107.10 1 1 +github.com/ethereum/go-ethereum/trie/node.go:104.16,105.47 1 0 +github.com/ethereum/go-ethereum/trie/node.go:111.49,112.19 1 1 +github.com/ethereum/go-ethereum/trie/node.go:115.2,116.16 2 1 +github.com/ethereum/go-ethereum/trie/node.go:119.2,119.43 1 1 +github.com/ethereum/go-ethereum/trie/node.go:112.19,114.3 1 0 +github.com/ethereum/go-ethereum/trie/node.go:116.16,118.3 1 1 +github.com/ethereum/go-ethereum/trie/node.go:120.9,122.36 2 1 +github.com/ethereum/go-ethereum/trie/node.go:123.10,125.35 2 1 +github.com/ethereum/go-ethereum/trie/node.go:126.10,127.67 1 1 +github.com/ethereum/go-ethereum/trie/node.go:131.52,133.16 2 1 +github.com/ethereum/go-ethereum/trie/node.go:136.2,138.18 3 1 +github.com/ethereum/go-ethereum/trie/node.go:146.2,147.16 2 1 +github.com/ethereum/go-ethereum/trie/node.go:150.2,150.38 1 1 +github.com/ethereum/go-ethereum/trie/node.go:133.16,135.3 1 1 +github.com/ethereum/go-ethereum/trie/node.go:138.18,141.17 2 1 +github.com/ethereum/go-ethereum/trie/node.go:144.3,144.65 1 1 +github.com/ethereum/go-ethereum/trie/node.go:141.17,143.4 1 1 +github.com/ethereum/go-ethereum/trie/node.go:147.16,149.3 1 1 +github.com/ethereum/go-ethereum/trie/node.go:153.56,155.26 2 1 +github.com/ethereum/go-ethereum/trie/node.go:162.2,163.16 2 1 +github.com/ethereum/go-ethereum/trie/node.go:166.2,166.18 1 1 +github.com/ethereum/go-ethereum/trie/node.go:169.2,169.15 1 1 +github.com/ethereum/go-ethereum/trie/node.go:155.26,157.17 2 1 +github.com/ethereum/go-ethereum/trie/node.go:160.3,160.35 1 1 +github.com/ethereum/go-ethereum/trie/node.go:157.17,159.4 1 1 +github.com/ethereum/go-ethereum/trie/node.go:163.16,165.3 1 0 +github.com/ethereum/go-ethereum/trie/node.go:166.18,168.3 1 1 +github.com/ethereum/go-ethereum/trie/node.go:174.50,176.16 2 1 +github.com/ethereum/go-ethereum/trie/node.go:179.2,179.9 1 1 +github.com/ethereum/go-ethereum/trie/node.go:176.16,178.3 1 0 +github.com/ethereum/go-ethereum/trie/node.go:180.24,183.51 1 1 +github.com/ethereum/go-ethereum/trie/node.go:187.3,188.22 2 1 +github.com/ethereum/go-ethereum/trie/node.go:189.43,191.24 1 1 +github.com/ethereum/go-ethereum/trie/node.go:192.44,193.47 1 1 +github.com/ethereum/go-ethereum/trie/node.go:194.10,195.85 1 1 +github.com/ethereum/go-ethereum/trie/node.go:183.51,186.4 2 1 +github.com/ethereum/go-ethereum/trie/node.go:206.45,207.16 1 1 +github.com/ethereum/go-ethereum/trie/node.go:210.2,210.42 1 1 +github.com/ethereum/go-ethereum/trie/node.go:214.2,214.41 1 1 +github.com/ethereum/go-ethereum/trie/node.go:207.16,209.3 1 1 +github.com/ethereum/go-ethereum/trie/node.go:210.42,213.3 2 1 +github.com/ethereum/go-ethereum/trie/node.go:217.40,219.2 1 0 +github.com/ethereum/go-ethereum/trie/secure_trie.go:56.69,57.15 1 1 +github.com/ethereum/go-ethereum/trie/secure_trie.go:60.2,61.16 2 1 +github.com/ethereum/go-ethereum/trie/secure_trie.go:64.2,64.38 1 1 +github.com/ethereum/go-ethereum/trie/secure_trie.go:57.15,58.52 1 0 +github.com/ethereum/go-ethereum/trie/secure_trie.go:61.16,63.3 1 1 +github.com/ethereum/go-ethereum/trie/secure_trie.go:69.45,71.16 2 1 +github.com/ethereum/go-ethereum/trie/secure_trie.go:74.2,74.12 1 1 +github.com/ethereum/go-ethereum/trie/secure_trie.go:71.16,73.3 1 0 +github.com/ethereum/go-ethereum/trie/secure_trie.go:80.57,82.2 1 1 +github.com/ethereum/go-ethereum/trie/secure_trie.go:86.67,88.2 1 1 +github.com/ethereum/go-ethereum/trie/secure_trie.go:92.82,95.16 3 0 +github.com/ethereum/go-ethereum/trie/secure_trie.go:98.2,98.51 1 0 +github.com/ethereum/go-ethereum/trie/secure_trie.go:101.2,102.12 2 0 +github.com/ethereum/go-ethereum/trie/secure_trie.go:95.16,97.3 1 0 +github.com/ethereum/go-ethereum/trie/secure_trie.go:98.51,100.3 1 0 +github.com/ethereum/go-ethereum/trie/secure_trie.go:111.48,112.48 1 1 +github.com/ethereum/go-ethereum/trie/secure_trie.go:112.48,114.3 1 0 +github.com/ethereum/go-ethereum/trie/secure_trie.go:125.57,128.16 3 1 +github.com/ethereum/go-ethereum/trie/secure_trie.go:131.2,132.12 2 1 +github.com/ethereum/go-ethereum/trie/secure_trie.go:128.16,130.3 1 0 +github.com/ethereum/go-ethereum/trie/secure_trie.go:136.41,137.41 1 1 +github.com/ethereum/go-ethereum/trie/secure_trie.go:137.41,139.3 1 0 +github.com/ethereum/go-ethereum/trie/secure_trie.go:144.50,148.2 3 1 +github.com/ethereum/go-ethereum/trie/secure_trie.go:152.51,153.55 1 1 +github.com/ethereum/go-ethereum/trie/secure_trie.go:156.2,156.55 1 0 +github.com/ethereum/go-ethereum/trie/secure_trie.go:153.55,155.3 1 1 +github.com/ethereum/go-ethereum/trie/secure_trie.go:164.76,166.33 1 1 +github.com/ethereum/go-ethereum/trie/secure_trie.go:177.2,177.30 1 1 +github.com/ethereum/go-ethereum/trie/secure_trie.go:166.33,167.33 1 1 +github.com/ethereum/go-ethereum/trie/secure_trie.go:174.3,174.42 1 1 +github.com/ethereum/go-ethereum/trie/secure_trie.go:167.33,169.39 2 1 +github.com/ethereum/go-ethereum/trie/secure_trie.go:172.4,172.27 1 1 +github.com/ethereum/go-ethereum/trie/secure_trie.go:169.39,171.5 1 1 +github.com/ethereum/go-ethereum/trie/secure_trie.go:182.41,184.2 1 1 +github.com/ethereum/go-ethereum/trie/secure_trie.go:187.41,190.2 2 0 +github.com/ethereum/go-ethereum/trie/secure_trie.go:194.62,196.2 1 1 +github.com/ethereum/go-ethereum/trie/secure_trie.go:201.49,208.2 6 1 +github.com/ethereum/go-ethereum/trie/secure_trie.go:213.57,214.29 1 1 +github.com/ethereum/go-ethereum/trie/secure_trie.go:218.2,218.22 1 1 +github.com/ethereum/go-ethereum/trie/secure_trie.go:214.29,217.3 2 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:42.87,57.2 3 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:60.39,61.19 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:63.2,63.39 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:61.20,62.3 0 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:68.34,69.24 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:88.2,88.14 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:69.24,70.10 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:71.30,73.28 2 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:80.4,81.31 2 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:84.22,85.17 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:73.28,74.37 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:74.37,78.6 3 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:81.31,83.5 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:91.30,92.21 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:96.2,97.22 2 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:92.21,95.3 2 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:100.39,101.25 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:106.2,106.22 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:120.2,120.68 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:129.2,129.23 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:101.25,103.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:106.22,111.32 2 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:114.3,116.14 3 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:111.32,113.4 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:120.68,122.24 2 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:122.24,126.4 3 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:132.30,135.9 3 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:136.17,136.17 0 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:137.25,137.25 0 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:141.56,144.22 3 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:166.2,166.22 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:169.2,169.12 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:144.22,148.3 2 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:148.8,148.24 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:148.24,154.79 4 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:158.3,158.104 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:154.79,157.4 2 0 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:159.8,159.22 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:159.22,162.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:166.22,168.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:184.78,187.2 2 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:190.46,191.25 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:194.2,194.33 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:191.25,193.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:198.39,200.24 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:204.2,204.26 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:220.2,220.13 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:200.24,202.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:204.26,205.26 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:210.3,210.23 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:214.3,214.27 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:218.3,218.36 1 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:205.26,209.4 3 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:210.23,212.12 2 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:214.27,216.12 2 1 +github.com/ethereum/go-ethereum/p2p/discover/lookup.go:224.35,226.2 1 1 +github.com/ethereum/go-ethereum/p2p/discover/node.go:42.51,47.2 4 1 +github.com/ethereum/go-ethereum/p2p/discover/node.go:49.77,50.32 1 1 +github.com/ethereum/go-ethereum/p2p/discover/node.go:53.2,57.34 5 1 +github.com/ethereum/go-ethereum/p2p/discover/node.go:60.2,60.15 1 1 +github.com/ethereum/go-ethereum/p2p/discover/node.go:50.32,52.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/node.go:57.34,59.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/node.go:63.34,65.2 1 1 +github.com/ethereum/go-ethereum/p2p/discover/node.go:67.36,69.2 1 1 +github.com/ethereum/go-ethereum/p2p/discover/node.go:71.42,73.23 2 1 +github.com/ethereum/go-ethereum/p2p/discover/node.go:76.2,76.15 1 1 +github.com/ethereum/go-ethereum/p2p/discover/node.go:73.23,75.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/node.go:79.38,81.2 1 1 +github.com/ethereum/go-ethereum/p2p/discover/node.go:83.44,85.23 2 1 +github.com/ethereum/go-ethereum/p2p/discover/node.go:88.2,88.15 1 1 +github.com/ethereum/go-ethereum/p2p/discover/node.go:85.23,87.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/node.go:91.36,93.2 1 1 +github.com/ethereum/go-ethereum/p2p/discover/node.go:95.32,97.2 1 0 +github.com/ethereum/go-ethereum/p2p/discover/ntp.go:40.44,40.61 1 0 +github.com/ethereum/go-ethereum/p2p/discover/ntp.go:41.44,41.66 1 0 +github.com/ethereum/go-ethereum/p2p/discover/ntp.go:42.44,42.71 1 0 +github.com/ethereum/go-ethereum/p2p/discover/ntp.go:46.24,48.16 2 0 +github.com/ethereum/go-ethereum/p2p/discover/ntp.go:51.2,51.55 1 0 +github.com/ethereum/go-ethereum/p2p/discover/ntp.go:48.16,50.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/ntp.go:51.55,54.3 2 0 +github.com/ethereum/go-ethereum/p2p/discover/ntp.go:54.8,56.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/ntp.go:65.57,68.16 2 0 +github.com/ethereum/go-ethereum/p2p/discover/ntp.go:74.2,79.38 4 0 +github.com/ethereum/go-ethereum/p2p/discover/ntp.go:112.2,115.37 3 0 +github.com/ethereum/go-ethereum/p2p/discover/ntp.go:118.2,118.49 1 0 +github.com/ethereum/go-ethereum/p2p/discover/ntp.go:68.16,70.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/ntp.go:79.38,82.17 2 0 +github.com/ethereum/go-ethereum/p2p/discover/ntp.go:85.3,88.47 3 0 +github.com/ethereum/go-ethereum/p2p/discover/ntp.go:92.3,95.44 3 0 +github.com/ethereum/go-ethereum/p2p/discover/ntp.go:98.3,109.49 6 0 +github.com/ethereum/go-ethereum/p2p/discover/ntp.go:82.17,84.4 1 0 +github.com/ethereum/go-ethereum/p2p/discover/ntp.go:88.47,90.4 1 0 +github.com/ethereum/go-ethereum/p2p/discover/ntp.go:95.44,97.4 1 0 +github.com/ethereum/go-ethereum/p2p/discover/ntp.go:115.37,117.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/table.go:102.99,114.56 2 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:117.2,117.29 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:122.2,125.17 3 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:114.56,116.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/table.go:117.29,121.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:128.38,130.2 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:132.30,139.2 5 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:143.62,144.23 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:147.2,151.33 4 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:157.2,157.34 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:161.2,161.25 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:144.23,146.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/table.go:151.33,152.31 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:152.31,154.4 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:157.34,160.3 2 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:165.52,170.30 4 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:175.2,175.12 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:170.30,171.19 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:171.19,173.4 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:179.27,182.2 2 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:187.63,188.26 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:193.2,194.12 2 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:188.26,189.46 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:189.46,191.4 1 0 +github.com/ethereum/go-ethereum/p2p/discover/table.go:198.37,199.9 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:200.22,201.14 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:202.10,203.15 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:207.45,209.9 2 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:214.2,214.13 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:210.30,210.30 0 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:211.22,212.14 1 0 +github.com/ethereum/go-ethereum/p2p/discover/table.go:218.26,235.6 6 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:267.2,267.24 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:270.2,270.29 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:273.2,273.27 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:276.2,276.19 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:235.6,236.10 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:237.20,239.26 2 0 +github.com/ethereum/go-ethereum/p2p/discover/table.go:243.32,245.26 2 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:249.22,250.31 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:253.4,253.35 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:254.23,256.39 2 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:257.25,259.24 2 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:260.22,261.26 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:262.23,263.14 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:239.26,242.5 2 0 +github.com/ethereum/go-ethereum/p2p/discover/table.go:245.26,248.5 2 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:250.31,252.5 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:267.24,269.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:270.29,272.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:273.27,275.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:281.49,298.25 4 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:298.25,300.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:303.35,306.23 3 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:306.23,308.42 2 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:309.3,310.24 2 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:308.42,308.110 1 0 +github.com/ethereum/go-ethereum/p2p/discover/table.go:316.54,317.15 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:319.2,320.17 2 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:326.2,329.28 2 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:338.2,341.16 4 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:350.2,350.41 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:317.15,317.37 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:320.17,323.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:329.28,331.17 2 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:331.17,333.4 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:333.9,335.4 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:341.16,347.3 4 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:350.41,352.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:352.8,354.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:358.56,362.52 3 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:369.2,369.15 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:362.52,364.25 2 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:364.25,367.4 2 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:372.54,377.2 3 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:381.35,386.33 4 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:386.33,387.31 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:387.31,388.70 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:388.70,390.5 1 0 +github.com/ethereum/go-ethereum/p2p/discover/table.go:402.97,411.33 5 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:420.2,420.46 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:423.2,423.14 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:411.33,412.31 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:412.31,414.42 2 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:414.42,416.5 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:420.46,422.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:427.33,431.33 3 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:434.2,434.10 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:431.33,433.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:438.46,443.2 3 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:446.47,449.2 2 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:451.51,452.28 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:455.2,455.43 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:452.28,454.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:463.40,464.31 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:468.2,471.33 4 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:475.2,475.34 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:480.2,480.27 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:485.2,488.30 4 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:464.31,466.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:471.33,474.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:475.34,479.3 2 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:480.27,483.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:488.30,490.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/table.go:502.44,503.23 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:506.2,506.31 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:510.2,513.28 4 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:517.2,517.34 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:522.2,522.27 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:527.2,530.30 4 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:503.23,505.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:506.31,508.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/table.go:513.28,516.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:517.34,521.3 2 0 +github.com/ethereum/go-ethereum/p2p/discover/table.go:522.27,525.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/table.go:530.30,532.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:536.38,541.2 3 0 +github.com/ethereum/go-ethereum/p2p/discover/table.go:543.52,544.18 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:547.2,547.23 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:550.2,550.22 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:554.2,554.20 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:559.2,559.13 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:544.18,546.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/table.go:547.23,549.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:550.22,553.3 2 0 +github.com/ethereum/go-ethereum/p2p/discover/table.go:554.20,558.3 3 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:562.50,563.23 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:566.2,567.18 2 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:563.23,565.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:570.54,571.35 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:576.2,576.27 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:579.2,581.20 3 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:571.35,572.23 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:572.23,574.4 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:576.27,578.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:581.20,583.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:589.56,590.74 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:595.2,595.30 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:599.2,603.10 5 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:590.74,593.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/table.go:595.30,598.3 2 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:608.57,609.27 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:626.2,626.14 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:609.27,610.34 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:610.34,611.40 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:621.4,623.15 3 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:611.40,614.30 2 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:614.30,618.6 2 0 +github.com/ethereum/go-ethereum/p2p/discover/table.go:629.54,632.2 2 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:634.45,635.23 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:640.2,640.14 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:635.23,636.19 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:636.19,638.4 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:644.64,645.21 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:648.2,651.22 4 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:645.21,647.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:655.48,656.22 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:661.2,661.13 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:656.22,657.29 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:657.29,659.4 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:671.55,672.53 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:675.2,675.31 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:678.2,678.26 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:672.53,674.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:675.31,677.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:678.27,681.3 0 1 +github.com/ethereum/go-ethereum/p2p/discover/table.go:681.8,686.3 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:129.75,146.16 5 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:149.2,155.15 6 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:146.16,148.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:159.36,161.2 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:164.25,165.24 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:165.24,170.3 4 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:175.52,177.44 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:181.2,181.81 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:188.2,189.25 2 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:192.2,193.28 2 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:200.2,200.10 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:177.44,179.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:181.81,183.45 2 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:183.45,185.4 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:189.25,191.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:193.28,194.24 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:194.24,195.47 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:195.47,197.5 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:203.47,207.2 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:210.43,213.2 2 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:216.61,218.33 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:221.2,221.17 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:218.33,220.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:226.93,229.16 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:236.2,236.109 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:244.2,246.11 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:229.16,233.3 3 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:236.109,238.33 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:241.3,241.26 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:238.33,240.4 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:249.60,257.2 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:260.66,261.22 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:266.2,266.57 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:261.22,265.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:270.46,272.2 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:275.46,277.2 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:280.44,282.2 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:284.62,288.2 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:290.77,293.69 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:296.2,296.11 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:293.69,295.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:301.101,308.114 4 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:321.2,331.42 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:334.2,334.19 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:308.114,310.34 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:319.3,319.39 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:310.34,313.18 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:317.4,317.28 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:313.18,315.13 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:331.42,333.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:338.64,346.16 5 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:352.2,352.116 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:357.2,358.34 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:362.2,363.16 2 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:366.2,366.26 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:369.2,369.27 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:372.2,372.66 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:375.2,375.19 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:346.16,348.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:352.116,355.3 2 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:358.34,360.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:363.16,365.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:366.26,368.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:369.27,371.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:372.66,374.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:380.100,383.9 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:389.2,389.10 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:384.30,384.30 0 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:386.27,387.18 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:394.83,396.9 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:397.55,399.19 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:400.27,401.15 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:407.24,420.25 5 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:442.2,442.6 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:420.25,421.65 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:425.3,426.54 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:438.3,439.17 2 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:421.65,423.4 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:426.54,428.67 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:435.4,436.20 2 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:428.67,431.5 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:442.6,445.10 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:446.28,447.55 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:450.4,450.10 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:452.33,454.21 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:456.26,458.55 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:473.4,473.24 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:475.27,479.55 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:488.4,488.42 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:447.55,449.5 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:458.55,460.73 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:460.73,465.21 4 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:470.6,470.22 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:465.21,468.7 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:479.55,481.55 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:481.55,485.6 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:488.42,489.54 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:493.5,493.21 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:489.54,492.6 2 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:499.93,501.16 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:504.2,504.56 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:501.16,503.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:507.93,511.2 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:514.55,516.22 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:520.2,521.6 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:516.22,518.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:521.6,523.36 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:534.3,534.68 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:523.36,526.12 2 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:527.9,527.24 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:527.24,529.21 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:532.4,532.10 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:529.21,531.5 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:534.68,535.11 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:536.53,536.53 0 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:537.12,537.12 0 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:543.67,545.16 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:549.2,551.43 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:554.2,555.40 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:558.2,558.12 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:545.16,548.3 2 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:551.43,553.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:555.40,557.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:562.56,564.2 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:568.64,570.69 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:570.69,575.3 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:578.81,579.20 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:582.2,582.63 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:585.2,585.60 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:588.2,589.16 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:592.2,594.15 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:579.20,581.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:582.63,584.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:585.60,587.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:589.16,591.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:597.37,600.57 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:603.2,603.86 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:600.57,602.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:607.62,610.18 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:627.2,627.11 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:611.20,613.26 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:614.20,615.29 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:616.24,618.30 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:619.25,620.34 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:621.26,623.32 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:624.27,625.36 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:643.113,647.16 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:650.2,650.36 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:653.2,654.12 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:647.16,649.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:650.36,652.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:657.96,670.73 4 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:679.2,680.92 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:670.73,671.35 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:671.35,673.4 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:674.8,676.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:685.113,688.36 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:691.2,691.42 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:694.2,696.12 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:688.36,690.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:691.42,693.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:701.117,704.36 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:707.2,707.35 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:716.2,716.12 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:704.36,706.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:707.35,715.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:719.100,730.28 6 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:740.2,740.31 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:730.28,731.51 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:734.3,734.42 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:731.51,733.4 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:734.42,738.4 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:740.31,742.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:747.118,750.36 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:753.2,753.47 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:756.2,756.12 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:750.36,752.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:753.47,755.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:761.119,764.36 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:767.2,767.35 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:770.2,770.12 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:764.36,766.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:767.35,769.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:773.102,778.2 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:782.120,783.47 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:786.2,786.12 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:783.47,785.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:125.78,127.16 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:130.2,134.15 5 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:127.16,129.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:138.78,168.16 5 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:171.2,172.15 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:168.16,170.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:176.36,178.2 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:181.25,182.24 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:182.24,187.3 4 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:191.43,194.2 2 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:198.52,199.81 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:203.2,203.46 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:207.2,208.28 2 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:213.2,213.10 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:199.81,201.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:203.46,205.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:208.28,209.46 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:209.46,211.4 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:217.42,222.35 4 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:227.2,227.14 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:222.35,223.31 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:223.31,225.4 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:232.46,234.2 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:239.82,243.2 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:246.93,250.9 4 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:251.28,252.53 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:253.25,254.18 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:259.46,260.22 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:266.2,266.57 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:260.22,264.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:271.55,273.2 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:277.46,279.2 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:283.44,285.2 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:287.62,291.2 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:293.73,294.70 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:294.70,296.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:300.80,308.22 4 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:311.2,311.22 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:316.2,316.27 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:308.22,310.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:311.22,312.30 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:312.30,314.4 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:322.60,325.51 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:333.2,333.14 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:325.51,326.17 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:329.3,329.15 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:326.17,328.4 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:329.15,331.4 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:337.53,342.9 4 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:343.25,344.41 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:345.25,346.16 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:351.64,353.16 2 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:356.2,356.21 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:359.2,359.22 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:353.16,355.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:356.21,358.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:363.82,366.2 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:369.82,377.6 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:377.6,378.10 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:379.28,381.42 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:389.4,389.19 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:392.4,392.37 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:395.23,396.21 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:381.42,383.19 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:387.5,387.32 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:383.19,385.14 2 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:389.19,391.5 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:392.37,394.5 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:402.129,404.16 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:407.2,407.69 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:410.2,410.26 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:413.2,413.22 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:419.2,419.34 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:422.2,423.18 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:404.16,406.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:407.69,409.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:410.26,412.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:413.22,415.41 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:415.41,417.4 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:419.34,421.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:426.43,427.23 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:432.2,432.14 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:427.23,428.13 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:428.13,430.4 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:437.89,450.9 4 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:455.2,455.10 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:451.21,451.21 0 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:452.27,453.21 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:459.37,463.6 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:463.6,464.10 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:465.15,465.15 0 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:467.16,467.16 0 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:469.26,470.10 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:471.28,472.10 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:488.28,494.6 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:494.6,495.10 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:496.24,499.22 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:501.32,503.52 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:507.28,510.19 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:513.4,516.22 4 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:518.28,521.30 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:523.28,525.39 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:531.4,531.42 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:536.4,536.10 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:503.52,505.5 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:510.19,511.45 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:525.39,526.29 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:529.5,529.28 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:526.29,528.6 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:531.42,535.5 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:542.49,543.22 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:546.2,550.50 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:557.2,558.13 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:543.22,545.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:550.50,552.10 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:553.50,553.50 0 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:554.28,554.28 0 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:562.43,564.54 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:567.2,569.21 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:564.54,566.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:569.21,571.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:571.8,574.3 2 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:579.37,582.33 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:586.2,590.27 5 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:582.33,584.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:595.94,598.2 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:601.123,604.16 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:608.2,610.19 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:604.16,607.3 2 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:614.28,618.25 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:618.25,620.36 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:631.3,631.43 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:620.36,623.12 2 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:624.9,624.24 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:624.24,626.21 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:629.4,629.10 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:626.21,628.5 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:636.76,637.9 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:638.49,639.14 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:640.27,641.15 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:646.77,649.16 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:653.2,653.21 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:657.2,657.45 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:661.2,662.12 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:649.16,652.3 2 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:653.21,656.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:657.45,660.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:666.98,668.56 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:672.2,672.72 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:676.2,676.33 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:680.2,682.13 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:668.56,671.3 2 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:672.72,675.3 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:676.33,679.3 2 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:686.50,687.38 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:690.2,690.52 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:693.2,693.12 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:687.38,689.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:690.52,692.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:697.81,698.23 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:699.23,700.39 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:701.25,702.41 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:703.20,704.36 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:705.20,706.48 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:709.24,710.40 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:711.21,712.44 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:713.27,714.43 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:715.28,716.44 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:706.48,708.4 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:721.90,724.38 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:728.2,728.45 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:724.38,727.3 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:737.94,739.16 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:745.2,749.15 5 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:739.16,742.3 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:753.85,755.14 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:758.2,758.26 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:761.2,761.15 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:755.14,757.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:758.26,760.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:765.84,770.27 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:773.2,778.4 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:770.27,772.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:782.92,784.49 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:784.49,786.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:790.90,793.33 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:823.2,823.14 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:793.33,796.25 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:801.3,802.16 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:809.3,812.24 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:796.25,797.12 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:802.16,804.4 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:804.9,804.25 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:804.25,808.4 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:812.24,814.48 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:817.4,818.27 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:814.48,815.13 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:818.27,820.5 1 0 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:827.67,828.21 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:832.2,834.21 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:843.2,843.13 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:828.21,830.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:834.21,837.30 3 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:840.3,841.25 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:837.30,839.4 1 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:847.98,853.20 5 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:856.2,857.40 2 1 +github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:853.20,855.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/common.go:52.41,53.20 1 1 +github.com/ethereum/go-ethereum/p2p/discover/common.go:56.2,56.29 1 1 +github.com/ethereum/go-ethereum/p2p/discover/common.go:59.2,59.22 1 1 +github.com/ethereum/go-ethereum/p2p/discover/common.go:62.2,62.12 1 1 +github.com/ethereum/go-ethereum/p2p/discover/common.go:53.20,55.3 1 0 +github.com/ethereum/go-ethereum/p2p/discover/common.go:56.29,58.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/common.go:59.22,61.3 1 1 +github.com/ethereum/go-ethereum/p2p/discover/common.go:66.76,68.2 1 0 +github.com/ethereum/go-ethereum/p2p/discover/common.go:77.24,78.11 1 1 +github.com/ethereum/go-ethereum/p2p/discover/common.go:81.2,81.10 1 1 +github.com/ethereum/go-ethereum/p2p/discover/common.go:78.11,80.3 1 1 +github.com/ethereum/go-ethereum/rpc/ipc_unix.go:33.55,34.40 1 1 +github.com/ethereum/go-ethereum/rpc/ipc_unix.go:40.2,40.66 1 1 +github.com/ethereum/go-ethereum/rpc/ipc_unix.go:43.2,45.16 3 1 +github.com/ethereum/go-ethereum/rpc/ipc_unix.go:48.2,49.15 2 1 +github.com/ethereum/go-ethereum/rpc/ipc_unix.go:34.40,37.3 1 0 +github.com/ethereum/go-ethereum/rpc/ipc_unix.go:40.66,42.3 1 0 +github.com/ethereum/go-ethereum/rpc/ipc_unix.go:45.16,47.3 1 0 +github.com/ethereum/go-ethereum/rpc/ipc_unix.go:53.79,55.2 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:50.73,57.71 2 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:57.71,59.17 2 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:63.3,64.25 2 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:59.17,62.4 2 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:71.77,75.40 3 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:84.2,84.33 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:90.2,92.36 2 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:109.2,109.10 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:75.40,76.20 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:79.3,79.19 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:76.20,78.4 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:79.19,81.4 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:84.33,86.49 2 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:86.49,88.4 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:92.36,97.41 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:101.3,102.58 2 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:105.3,106.15 2 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:97.41,99.4 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:102.58,104.4 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:117.42,119.20 2 0 +github.com/ethereum/go-ethereum/rpc/websocket.go:122.2,122.10 1 0 +github.com/ethereum/go-ethereum/rpc/websocket.go:119.20,121.3 1 0 +github.com/ethereum/go-ethereum/rpc/websocket.go:125.76,127.27 2 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:132.2,132.14 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:127.27,128.55 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:128.55,130.4 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:135.72,142.16 3 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:146.2,147.16 2 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:151.2,151.59 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:154.2,154.65 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:157.2,157.53 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:160.2,160.13 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:142.16,145.3 2 0 +github.com/ethereum/go-ethereum/rpc/websocket.go:147.16,150.3 2 0 +github.com/ethereum/go-ethereum/rpc/websocket.go:151.59,153.3 1 0 +github.com/ethereum/go-ethereum/rpc/websocket.go:154.65,156.3 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:157.53,159.3 1 0 +github.com/ethereum/go-ethereum/rpc/websocket.go:163.68,165.16 2 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:168.2,169.37 2 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:181.2,181.36 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:165.16,167.3 1 0 +github.com/ethereum/go-ethereum/rpc/websocket.go:169.37,173.3 3 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:173.8,177.21 4 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:177.21,179.4 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:186.118,188.16 2 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:191.2,191.71 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:188.16,190.3 1 0 +github.com/ethereum/go-ethereum/rpc/websocket.go:191.71,193.17 2 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:200.3,200.56 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:193.17,195.19 2 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:198.4,198.20 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:195.19,197.5 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:209.83,216.2 2 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:218.76,220.16 2 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:223.2,224.18 2 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:227.2,227.29 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:232.2,232.42 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:220.16,222.3 1 0 +github.com/ethereum/go-ethereum/rpc/websocket.go:224.18,226.3 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:227.29,231.3 3 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:244.88,246.49 2 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:250.2,266.11 7 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:246.49,249.3 2 0 +github.com/ethereum/go-ethereum/rpc/websocket.go:269.35,272.2 2 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:274.47,276.2 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:278.79,280.16 2 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:287.2,287.12 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:280.16,282.10 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:283.35,283.35 0 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:284.11,284.11 0 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:291.38,296.6 4 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:296.6,297.10 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:298.22,299.10 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:300.23,301.21 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:304.4,304.31 1 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:305.18,311.31 6 1 +github.com/ethereum/go-ethereum/rpc/websocket.go:301.21,303.5 1 0 +github.com/ethereum/go-ethereum/rpc/client.go:111.62,117.2 5 1 +github.com/ethereum/go-ethereum/rpc/client.go:119.64,122.2 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:136.84,137.9 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:138.20,140.16 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:146.3,146.24 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:147.25,148.22 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:140.16,141.11 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:142.28,142.28 0 1 +github.com/ethereum/go-ethereum/rpc/client.go:143.21,143.21 0 0 +github.com/ethereum/go-ethereum/rpc/client.go:162.43,164.2 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:170.71,172.16 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:175.2,175.18 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:172.16,174.3 1 0 +github.com/ethereum/go-ethereum/rpc/client.go:176.23,177.26 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:178.19,179.40 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:180.15,181.24 1 0 +github.com/ethereum/go-ethereum/rpc/client.go:182.10,183.30 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:184.10,185.75 1 0 +github.com/ethereum/go-ethereum/rpc/client.go:191.61,194.2 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:196.81,198.16 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:201.2,203.15 3 1 +github.com/ethereum/go-ethereum/rpc/client.go:198.16,200.3 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:206.87,223.13 3 1 +github.com/ethereum/go-ethereum/rpc/client.go:226.2,226.10 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:223.13,225.3 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:233.72,235.2 1 0 +github.com/ethereum/go-ethereum/rpc/client.go:237.43,240.2 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:244.64,250.2 5 1 +github.com/ethereum/go-ethereum/rpc/client.go:253.26,254.14 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:257.2,257.9 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:254.14,256.3 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:258.29,259.15 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:260.20,260.20 0 1 +github.com/ethereum/go-ethereum/rpc/client.go:267.47,268.15 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:271.2,274.18 4 1 +github.com/ethereum/go-ethereum/rpc/client.go:268.15,270.3 1 0 +github.com/ethereum/go-ethereum/rpc/client.go:282.85,285.2 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:292.113,293.67 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:296.2,297.16 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:300.2,302.14 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:307.2,307.16 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:312.2,312.39 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:293.67,295.3 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:297.16,299.3 1 0 +github.com/ethereum/go-ethereum/rpc/client.go:302.14,304.3 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:304.8,306.3 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:307.16,309.3 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:313.18,314.13 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:315.25,316.20 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:317.29,318.21 1 0 +github.com/ethereum/go-ethereum/rpc/client.go:319.10,320.46 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:331.49,334.2 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:345.77,354.25 3 1 +github.com/ethereum/go-ethereum/rpc/client.go:364.2,365.14 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:372.2,372.44 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:392.2,392.12 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:354.25,356.17 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:359.3,361.27 3 1 +github.com/ethereum/go-ethereum/rpc/client.go:356.17,358.4 1 0 +github.com/ethereum/go-ethereum/rpc/client.go:365.14,367.3 1 0 +github.com/ethereum/go-ethereum/rpc/client.go:367.8,369.3 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:372.44,375.17 3 1 +github.com/ethereum/go-ethereum/rpc/client.go:381.3,382.24 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:386.3,386.28 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:390.3,390.56 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:375.17,376.9 1 0 +github.com/ethereum/go-ethereum/rpc/client.go:382.24,384.12 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:386.28,388.12 2 0 +github.com/ethereum/go-ethereum/rpc/client.go:396.88,399.16 3 1 +github.com/ethereum/go-ethereum/rpc/client.go:402.2,404.14 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:407.2,407.29 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:399.16,401.3 1 0 +github.com/ethereum/go-ethereum/rpc/client.go:404.14,406.3 1 0 +github.com/ethereum/go-ethereum/rpc/client.go:411.123,413.2 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:417.123,419.2 1 0 +github.com/ethereum/go-ethereum/rpc/client.go:433.138,436.85 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:439.2,439.21 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:442.2,442.14 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:446.2,447.16 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:450.2,458.45 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:461.2,461.43 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:464.2,464.20 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:436.85,437.98 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:439.21,440.54 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:442.14,444.3 1 0 +github.com/ethereum/go-ethereum/rpc/client.go:447.16,449.3 1 0 +github.com/ethereum/go-ethereum/rpc/client.go:458.45,460.3 1 0 +github.com/ethereum/go-ethereum/rpc/client.go:461.43,463.3 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:467.94,469.21 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:475.2,475.17 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:469.21,471.59 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:471.59,473.4 1 0 +github.com/ethereum/go-ethereum/rpc/client.go:480.82,481.9 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:482.23,485.13 3 1 +github.com/ethereum/go-ethereum/rpc/client.go:486.20,489.19 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:490.19,491.23 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:495.80,496.24 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:502.2,503.16 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:509.2,509.12 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:496.24,498.42 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:498.42,500.4 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:503.16,505.13 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:505.13,507.4 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:512.55,513.28 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:517.2,517.34 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:522.2,523.16 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:527.2,527.9 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:513.28,515.3 1 0 +github.com/ethereum/go-ethereum/rpc/client.go:517.34,521.3 3 1 +github.com/ethereum/go-ethereum/rpc/client.go:523.16,526.3 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:528.32,530.13 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:531.20,533.23 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:540.46,547.15 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:557.2,559.6 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:547.15,549.14 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:553.3,553.20 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:549.14,552.4 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:559.6,560.10 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:561.18,562.10 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:565.25,566.16 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:572.27,575.19 3 1 +github.com/ethereum/go-ethereum/rpc/client.go:578.36,580.15 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:589.4,594.37 4 1 +github.com/ethereum/go-ethereum/rpc/client.go:597.28,601.33 3 1 +github.com/ethereum/go-ethereum/rpc/client.go:603.27,604.18 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:610.4,611.16 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:613.29,614.36 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:566.16,568.5 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:568.10,570.5 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:580.15,588.5 2 0 +github.com/ethereum/go-ethereum/rpc/client.go:604.18,608.5 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:620.30,621.6 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:621.6,622.10 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:623.19,623.19 0 1 +github.com/ethereum/go-ethereum/rpc/client.go:624.20,625.10 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:631.42,632.6 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:632.6,634.43 2 1 +github.com/ethereum/go-ethereum/rpc/client.go:637.3,637.17 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:641.3,641.34 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:634.43,636.4 1 1 +github.com/ethereum/go-ethereum/rpc/client.go:637.17,640.4 2 1 +github.com/ethereum/go-ethereum/rpc/handler.go:74.107,88.29 3 1 +github.com/ethereum/go-ethereum/rpc/handler.go:91.2,92.10 2 1 +github.com/ethereum/go-ethereum/rpc/handler.go:88.29,90.3 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:96.55,98.20 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:106.2,107.27 2 1 +github.com/ethereum/go-ethereum/rpc/handler.go:112.2,112.21 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:116.2,116.37 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:98.20,99.38 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:102.3,102.9 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:99.38,101.4 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:107.27,108.50 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:108.50,110.4 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:112.21,114.3 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:116.37,118.29 2 1 +github.com/ethereum/go-ethereum/rpc/handler.go:123.3,124.23 2 1 +github.com/ethereum/go-ethereum/rpc/handler.go:127.3,127.34 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:118.29,119.57 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:119.57,121.5 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:124.23,126.4 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:127.34,129.4 1 0 +github.com/ethereum/go-ethereum/rpc/handler.go:134.50,135.38 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:138.2,138.37 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:135.38,137.3 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:138.37,141.20 3 1 +github.com/ethereum/go-ethereum/rpc/handler.go:144.3,144.34 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:141.20,143.4 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:144.34,146.4 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:152.60,157.2 4 1 +github.com/ethereum/go-ethereum/rpc/handler.go:160.47,161.28 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:161.28,163.3 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:167.50,168.28 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:168.28,170.3 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:174.72,176.24 2 1 +github.com/ethereum/go-ethereum/rpc/handler.go:180.2,180.33 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:190.2,190.36 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:176.24,178.3 1 0 +github.com/ethereum/go-ethereum/rpc/handler.go:180.33,184.20 2 1 +github.com/ethereum/go-ethereum/rpc/handler.go:184.20,188.4 3 1 +github.com/ethereum/go-ethereum/rpc/handler.go:190.36,193.3 2 1 +github.com/ethereum/go-ethereum/rpc/handler.go:196.52,200.23 3 1 +github.com/ethereum/go-ethereum/rpc/handler.go:200.23,201.46 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:201.46,203.4 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:208.56,212.34 3 1 +github.com/ethereum/go-ethereum/rpc/handler.go:212.34,216.3 3 1 +github.com/ethereum/go-ethereum/rpc/handler.go:220.53,222.12 2 1 +github.com/ethereum/go-ethereum/rpc/handler.go:222.12,227.3 4 1 +github.com/ethereum/go-ethereum/rpc/handler.go:232.61,234.9 2 1 +github.com/ethereum/go-ethereum/rpc/handler.go:235.28,236.62 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:240.3,240.15 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:241.24,244.14 3 1 +github.com/ethereum/go-ethereum/rpc/handler.go:245.10,246.15 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:236.62,239.4 2 1 +github.com/ethereum/go-ethereum/rpc/handler.go:251.65,253.60 2 1 +github.com/ethereum/go-ethereum/rpc/handler.go:257.2,257.36 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:253.60,256.3 2 0 +github.com/ethereum/go-ethereum/rpc/handler.go:257.36,259.3 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:263.55,265.15 2 1 +github.com/ethereum/go-ethereum/rpc/handler.go:269.2,271.19 2 1 +github.com/ethereum/go-ethereum/rpc/handler.go:278.2,279.22 2 1 +github.com/ethereum/go-ethereum/rpc/handler.go:283.2,283.71 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:265.15,268.3 2 0 +github.com/ethereum/go-ethereum/rpc/handler.go:271.19,274.3 2 1 +github.com/ethereum/go-ethereum/rpc/handler.go:279.22,282.3 2 1 +github.com/ethereum/go-ethereum/rpc/handler.go:283.71,286.3 2 1 +github.com/ethereum/go-ethereum/rpc/handler.go:290.85,292.9 2 1 +github.com/ethereum/go-ethereum/rpc/handler.go:293.28,296.13 3 1 +github.com/ethereum/go-ethereum/rpc/handler.go:297.20,301.24 4 1 +github.com/ethereum/go-ethereum/rpc/handler.go:310.3,310.14 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:311.24,312.68 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:313.10,314.63 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:301.24,303.30 2 1 +github.com/ethereum/go-ethereum/rpc/handler.go:306.4,306.44 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:303.30,305.5 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:307.9,309.4 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:319.81,320.23 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:323.2,324.25 2 1 +github.com/ethereum/go-ethereum/rpc/handler.go:329.2,329.18 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:332.2,333.16 2 1 +github.com/ethereum/go-ethereum/rpc/handler.go:336.2,341.30 3 1 +github.com/ethereum/go-ethereum/rpc/handler.go:351.2,351.15 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:320.23,322.3 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:324.25,326.3 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:326.8,328.3 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:329.18,331.3 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:333.16,335.3 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:341.30,343.26 2 1 +github.com/ethereum/go-ethereum/rpc/handler.go:348.3,349.73 2 1 +github.com/ethereum/go-ethereum/rpc/handler.go:343.26,345.4 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:345.9,347.4 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:355.86,356.23 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:361.2,362.16 2 1 +github.com/ethereum/go-ethereum/rpc/handler.go:365.2,367.18 3 1 +github.com/ethereum/go-ethereum/rpc/handler.go:372.2,374.16 3 1 +github.com/ethereum/go-ethereum/rpc/handler.go:377.2,384.43 5 1 +github.com/ethereum/go-ethereum/rpc/handler.go:356.23,358.3 1 0 +github.com/ethereum/go-ethereum/rpc/handler.go:362.16,364.3 1 0 +github.com/ethereum/go-ethereum/rpc/handler.go:367.18,369.3 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:374.16,376.3 1 0 +github.com/ethereum/go-ethereum/rpc/handler.go:388.126,390.16 2 1 +github.com/ethereum/go-ethereum/rpc/handler.go:393.2,393.29 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:390.16,392.3 1 1 +github.com/ethereum/go-ethereum/rpc/handler.go:397.73,402.14 4 1 +github.com/ethereum/go-ethereum/rpc/handler.go:405.2,407.18 3 1 +github.com/ethereum/go-ethereum/rpc/handler.go:402.14,404.3 1 0 +github.com/ethereum/go-ethereum/rpc/handler.go:412.36,413.66 1 0 +github.com/ethereum/go-ethereum/rpc/handler.go:416.2,416.30 1 0 +github.com/ethereum/go-ethereum/rpc/handler.go:413.66,415.3 1 0 +github.com/ethereum/go-ethereum/rpc/ipc.go:28.54,29.6 1 1 +github.com/ethereum/go-ethereum/rpc/ipc.go:29.6,31.36 2 1 +github.com/ethereum/go-ethereum/rpc/ipc.go:37.3,38.37 2 1 +github.com/ethereum/go-ethereum/rpc/ipc.go:31.36,33.12 2 0 +github.com/ethereum/go-ethereum/rpc/ipc.go:34.9,34.24 1 1 +github.com/ethereum/go-ethereum/rpc/ipc.go:34.24,36.4 1 1 +github.com/ethereum/go-ethereum/rpc/ipc.go:48.69,49.71 1 1 +github.com/ethereum/go-ethereum/rpc/ipc.go:49.71,51.17 2 1 +github.com/ethereum/go-ethereum/rpc/ipc.go:54.3,54.29 1 1 +github.com/ethereum/go-ethereum/rpc/ipc.go:51.17,53.4 1 0 +github.com/ethereum/go-ethereum/rpc/service.go:61.77,63.16 2 1 +github.com/ethereum/go-ethereum/rpc/service.go:66.2,67.25 2 1 +github.com/ethereum/go-ethereum/rpc/service.go:71.2,73.23 3 1 +github.com/ethereum/go-ethereum/rpc/service.go:76.2,77.9 2 1 +github.com/ethereum/go-ethereum/rpc/service.go:85.2,85.34 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:92.2,92.12 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:63.16,65.3 1 0 +github.com/ethereum/go-ethereum/rpc/service.go:67.25,69.3 1 0 +github.com/ethereum/go-ethereum/rpc/service.go:73.23,75.3 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:77.9,84.3 2 1 +github.com/ethereum/go-ethereum/rpc/service.go:85.34,86.21 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:86.21,88.4 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:88.9,90.4 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:96.61,98.20 2 1 +github.com/ethereum/go-ethereum/rpc/service.go:101.2,103.47 3 1 +github.com/ethereum/go-ethereum/rpc/service.go:98.20,100.3 1 0 +github.com/ethereum/go-ethereum/rpc/service.go:107.72,111.2 3 1 +github.com/ethereum/go-ethereum/rpc/service.go:116.69,119.39 3 1 +github.com/ethereum/go-ethereum/rpc/service.go:131.2,131.18 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:119.39,121.27 2 1 +github.com/ethereum/go-ethereum/rpc/service.go:124.3,125.16 2 1 +github.com/ethereum/go-ethereum/rpc/service.go:128.3,129.23 2 1 +github.com/ethereum/go-ethereum/rpc/service.go:121.27,122.12 1 0 +github.com/ethereum/go-ethereum/rpc/service.go:125.16,126.12 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:136.56,145.39 5 1 +github.com/ethereum/go-ethereum/rpc/service.go:148.2,148.19 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:152.2,152.9 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:161.2,161.10 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:145.39,147.3 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:148.19,150.3 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:153.46,154.15 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:155.22,156.52 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:159.3,159.15 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:156.52,158.4 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:165.35,169.22 3 1 +github.com/ethereum/go-ethereum/rpc/service.go:172.2,172.69 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:177.2,178.45 2 1 +github.com/ethereum/go-ethereum/rpc/service.go:169.22,171.3 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:172.69,175.3 2 1 +github.com/ethereum/go-ethereum/rpc/service.go:178.45,180.3 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:184.115,187.22 2 1 +github.com/ethereum/go-ethereum/rpc/service.go:190.2,190.14 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:193.2,196.15 2 1 +github.com/ethereum/go-ethereum/rpc/service.go:206.2,207.23 2 1 +github.com/ethereum/go-ethereum/rpc/service.go:210.2,210.49 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:215.2,215.36 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:187.22,189.3 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:190.14,192.3 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:196.15,197.35 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:197.35,203.4 5 0 +github.com/ethereum/go-ethereum/rpc/service.go:207.23,209.3 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:210.49,214.3 2 1 +github.com/ethereum/go-ethereum/rpc/service.go:219.41,220.30 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:223.2,223.25 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:220.30,222.3 1 0 +github.com/ethereum/go-ethereum/rpc/service.go:227.39,228.30 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:231.2,231.32 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:228.30,230.3 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:235.46,236.30 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:239.2,239.30 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:236.30,238.3 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:244.45,246.56 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:249.2,251.33 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:246.56,248.3 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:255.37,257.18 2 1 +github.com/ethereum/go-ethereum/rpc/service.go:260.2,260.20 1 1 +github.com/ethereum/go-ethereum/rpc/service.go:257.18,259.3 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:47.17,49.2 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:52.36,55.43 3 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:61.2,65.19 2 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:55.43,57.3 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:57.8,59.3 1 0 +github.com/ethereum/go-ethereum/rpc/subscription.go:65.19,71.3 5 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:74.28,77.14 3 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:80.2,80.22 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:77.14,79.3 1 0 +github.com/ethereum/go-ethereum/rpc/subscription.go:86.65,89.2 2 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:108.55,112.18 3 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:117.2,118.14 2 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:112.18,113.61 1 0 +github.com/ethereum/go-ethereum/rpc/subscription.go:114.8,114.27 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:114.27,115.71 1 0 +github.com/ethereum/go-ethereum/rpc/subscription.go:123.58,125.16 2 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:129.2,132.18 3 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:137.2,137.17 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:140.2,141.12 2 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:125.16,127.3 1 0 +github.com/ethereum/go-ethereum/rpc/subscription.go:132.18,133.55 1 0 +github.com/ethereum/go-ethereum/rpc/subscription.go:134.8,134.27 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:134.27,135.32 1 0 +github.com/ethereum/go-ethereum/rpc/subscription.go:137.17,139.3 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:146.48,148.2 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:152.53,157.2 4 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:162.37,166.32 3 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:171.2,172.12 2 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:166.32,167.45 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:167.45,169.4 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:175.72,183.2 3 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:194.43,196.2 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:199.54,201.2 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:231.100,244.2 2 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:254.51,256.2 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:260.46,261.24 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:261.24,262.10 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:267.3,267.17 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:263.36,264.19 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:265.24,265.24 0 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:272.74,273.9 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:274.24,275.14 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:276.25,277.15 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:282.49,283.9 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:284.23,284.23 0 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:285.25,285.25 0 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:291.38,301.17 4 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:306.2,306.16 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:301.17,303.3 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:306.16,307.27 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:312.3,312.17 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:307.27,311.4 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:318.78,326.6 3 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:326.6,329.24 3 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:338.3,338.17 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:329.24,332.4 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:332.9,336.4 2 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:339.10,340.21 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:343.4,343.30 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:347.4,347.21 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:349.10,351.18 2 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:354.4,354.51 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:357.4,357.24 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:359.10,361.33 2 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:340.21,342.5 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:343.30,346.5 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:351.18,353.5 1 0 +github.com/ethereum/go-ethereum/rpc/subscription.go:354.51,356.5 1 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:366.87,370.2 3 1 +github.com/ethereum/go-ethereum/rpc/subscription.go:372.59,375.2 2 1 +github.com/ethereum/go-ethereum/rpc/json.go:60.50,62.2 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:64.42,66.2 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:68.46,70.2 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:72.46,74.2 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:76.47,78.2 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:80.49,82.2 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:84.47,87.2 2 1 +github.com/ethereum/go-ethereum/rpc/json.go:89.44,92.2 2 0 +github.com/ethereum/go-ethereum/rpc/json.go:94.69,98.2 3 1 +github.com/ethereum/go-ethereum/rpc/json.go:100.73,102.16 2 1 +github.com/ethereum/go-ethereum/rpc/json.go:106.2,106.63 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:102.16,105.3 1 0 +github.com/ethereum/go-ethereum/rpc/json.go:109.46,115.8 3 1 +github.com/ethereum/go-ethereum/rpc/json.go:118.2,119.8 2 1 +github.com/ethereum/go-ethereum/rpc/json.go:122.2,122.12 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:115.8,117.3 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:119.8,121.3 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:131.38,132.23 1 0 +github.com/ethereum/go-ethereum/rpc/json.go:135.2,135.20 1 0 +github.com/ethereum/go-ethereum/rpc/json.go:132.23,134.3 1 0 +github.com/ethereum/go-ethereum/rpc/json.go:138.39,140.2 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:142.47,144.2 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:179.94,186.41 2 1 +github.com/ethereum/go-ethereum/rpc/json.go:189.2,189.14 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:186.41,188.3 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:194.38,199.2 4 1 +github.com/ethereum/go-ethereum/rpc/json.go:201.41,204.2 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:206.41,208.2 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:210.85,214.42 2 1 +github.com/ethereum/go-ethereum/rpc/json.go:217.2,218.31 2 1 +github.com/ethereum/go-ethereum/rpc/json.go:225.2,225.29 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:214.42,216.3 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:218.31,219.17 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:219.17,223.4 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:228.73,233.9 4 1 +github.com/ethereum/go-ethereum/rpc/json.go:236.2,237.20 2 1 +github.com/ethereum/go-ethereum/rpc/json.go:233.9,235.3 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:240.29,241.21 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:241.21,244.3 2 1 +github.com/ethereum/go-ethereum/rpc/json.go:248.49,250.2 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:256.66,257.19 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:262.2,265.17 4 1 +github.com/ethereum/go-ethereum/rpc/json.go:269.2,269.19 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:257.19,261.3 3 1 +github.com/ethereum/go-ethereum/rpc/json.go:265.17,268.3 2 1 +github.com/ethereum/go-ethereum/rpc/json.go:273.40,274.24 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:281.2,281.14 1 0 +github.com/ethereum/go-ethereum/rpc/json.go:274.24,276.55 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:279.3,279.18 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:276.55,277.12 1 0 +github.com/ethereum/go-ethereum/rpc/json.go:287.103,291.9 4 1 +github.com/ethereum/go-ethereum/rpc/json.go:306.2,306.42 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:312.2,312.18 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:292.49,292.49 0 1 +github.com/ethereum/go-ethereum/rpc/json.go:295.18,296.18 1 0 +github.com/ethereum/go-ethereum/rpc/json.go:297.30,299.61 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:302.10,303.43 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:299.61,301.4 1 0 +github.com/ethereum/go-ethereum/rpc/json.go:306.42,307.37 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:310.3,310.46 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:307.37,309.4 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:315.91,317.30 2 1 +github.com/ethereum/go-ethereum/rpc/json.go:331.2,332.18 2 1 +github.com/ethereum/go-ethereum/rpc/json.go:317.30,318.22 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:321.3,322.56 2 1 +github.com/ethereum/go-ethereum/rpc/json.go:325.3,325.55 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:328.3,328.37 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:318.22,320.4 1 0 +github.com/ethereum/go-ethereum/rpc/json.go:322.56,324.4 1 0 +github.com/ethereum/go-ethereum/rpc/json.go:325.55,327.4 1 0 +github.com/ethereum/go-ethereum/rpc/json.go:336.69,338.51 2 1 +github.com/ethereum/go-ethereum/rpc/json.go:341.2,343.9 3 1 +github.com/ethereum/go-ethereum/rpc/json.go:346.2,346.20 1 1 +github.com/ethereum/go-ethereum/rpc/json.go:338.51,340.3 1 0 +github.com/ethereum/go-ethereum/rpc/json.go:343.9,345.3 1 0 +github.com/ethereum/go-ethereum/rpc/errors.go:29.37,30.24 1 1 +github.com/ethereum/go-ethereum/rpc/errors.go:33.2,33.52 1 1 +github.com/ethereum/go-ethereum/rpc/errors.go:30.24,32.3 1 0 +github.com/ethereum/go-ethereum/rpc/errors.go:64.47,64.64 1 1 +github.com/ethereum/go-ethereum/rpc/errors.go:66.46,68.2 1 1 +github.com/ethereum/go-ethereum/rpc/errors.go:72.53,72.70 1 1 +github.com/ethereum/go-ethereum/rpc/errors.go:74.52,76.2 1 1 +github.com/ethereum/go-ethereum/rpc/errors.go:81.38,81.55 1 1 +github.com/ethereum/go-ethereum/rpc/errors.go:83.37,83.57 1 1 +github.com/ethereum/go-ethereum/rpc/errors.go:88.47,88.64 1 1 +github.com/ethereum/go-ethereum/rpc/errors.go:90.46,90.66 1 1 +github.com/ethereum/go-ethereum/rpc/errors.go:95.47,95.64 1 0 +github.com/ethereum/go-ethereum/rpc/errors.go:97.46,97.66 1 0 +github.com/ethereum/go-ethereum/rpc/errors.go:102.46,102.63 1 1 +github.com/ethereum/go-ethereum/rpc/errors.go:104.45,104.65 1 1 +github.com/ethereum/go-ethereum/rpc/errors.go:111.39,111.56 1 0 +github.com/ethereum/go-ethereum/rpc/errors.go:113.38,113.66 1 0 +github.com/ethereum/go-ethereum/rpc/http.go:55.67,56.39 1 0 +github.com/ethereum/go-ethereum/rpc/http.go:59.41,60.38 1 0 +github.com/ethereum/go-ethereum/rpc/http.go:63.41,65.2 1 0 +github.com/ethereum/go-ethereum/rpc/http.go:67.66,70.2 2 0 +github.com/ethereum/go-ethereum/rpc/http.go:72.29,73.25 1 0 +github.com/ethereum/go-ethereum/rpc/http.go:73.25,73.46 1 0 +github.com/ethereum/go-ethereum/rpc/http.go:76.49,78.2 1 0 +github.com/ethereum/go-ethereum/rpc/http.go:114.80,117.16 2 1 +github.com/ethereum/go-ethereum/rpc/http.go:121.2,125.71 5 1 +github.com/ethereum/go-ethereum/rpc/http.go:117.16,119.3 1 0 +github.com/ethereum/go-ethereum/rpc/http.go:125.71,133.3 2 1 +github.com/ethereum/go-ethereum/rpc/http.go:137.49,139.2 1 1 +github.com/ethereum/go-ethereum/rpc/http.go:141.86,144.16 3 1 +github.com/ethereum/go-ethereum/rpc/http.go:147.2,150.67 3 1 +github.com/ethereum/go-ethereum/rpc/http.go:153.2,154.12 2 1 +github.com/ethereum/go-ethereum/rpc/http.go:144.16,146.3 1 1 +github.com/ethereum/go-ethereum/rpc/http.go:150.67,152.3 1 0 +github.com/ethereum/go-ethereum/rpc/http.go:157.98,160.16 3 0 +github.com/ethereum/go-ethereum/rpc/http.go:163.2,165.68 3 0 +github.com/ethereum/go-ethereum/rpc/http.go:168.2,168.37 1 0 +github.com/ethereum/go-ethereum/rpc/http.go:171.2,171.12 1 0 +github.com/ethereum/go-ethereum/rpc/http.go:160.16,162.3 1 0 +github.com/ethereum/go-ethereum/rpc/http.go:165.68,167.3 1 0 +github.com/ethereum/go-ethereum/rpc/http.go:168.37,170.3 1 0 +github.com/ethereum/go-ethereum/rpc/http.go:174.92,176.16 2 1 +github.com/ethereum/go-ethereum/rpc/http.go:179.2,180.16 2 1 +github.com/ethereum/go-ethereum/rpc/http.go:183.2,184.46 2 1 +github.com/ethereum/go-ethereum/rpc/http.go:187.2,193.16 5 1 +github.com/ethereum/go-ethereum/rpc/http.go:196.2,196.53 1 1 +github.com/ethereum/go-ethereum/rpc/http.go:209.2,209.23 1 1 +github.com/ethereum/go-ethereum/rpc/http.go:176.16,178.3 1 0 +github.com/ethereum/go-ethereum/rpc/http.go:180.16,182.3 1 0 +github.com/ethereum/go-ethereum/rpc/http.go:184.46,184.101 1 0 +github.com/ethereum/go-ethereum/rpc/http.go:193.16,195.3 1 1 +github.com/ethereum/go-ethereum/rpc/http.go:196.53,199.52 3 1 +github.com/ethereum/go-ethereum/rpc/http.go:203.3,207.4 1 1 +github.com/ethereum/go-ethereum/rpc/http.go:199.52,201.4 1 1 +github.com/ethereum/go-ethereum/rpc/http.go:219.76,223.2 3 1 +github.com/ethereum/go-ethereum/rpc/http.go:226.40,226.54 1 1 +github.com/ethereum/go-ethereum/rpc/http.go:229.46,231.2 1 1 +github.com/ethereum/go-ethereum/rpc/http.go:234.60,234.74 1 1 +github.com/ethereum/go-ethereum/rpc/http.go:237.68,239.80 1 1 +github.com/ethereum/go-ethereum/rpc/http.go:243.2,243.49 1 1 +github.com/ethereum/go-ethereum/rpc/http.go:249.2,263.34 11 1 +github.com/ethereum/go-ethereum/rpc/http.go:239.80,242.3 2 1 +github.com/ethereum/go-ethereum/rpc/http.go:243.49,246.3 2 1 +github.com/ethereum/go-ethereum/rpc/http.go:268.52,269.65 1 1 +github.com/ethereum/go-ethereum/rpc/http.go:272.2,272.47 1 1 +github.com/ethereum/go-ethereum/rpc/http.go:277.2,277.36 1 1 +github.com/ethereum/go-ethereum/rpc/http.go:281.2,281.81 1 1 +github.com/ethereum/go-ethereum/rpc/http.go:289.2,290.45 2 1 +github.com/ethereum/go-ethereum/rpc/http.go:269.65,271.3 1 1 +github.com/ethereum/go-ethereum/rpc/http.go:272.47,275.3 2 1 +github.com/ethereum/go-ethereum/rpc/http.go:277.36,279.3 1 0 +github.com/ethereum/go-ethereum/rpc/http.go:281.81,282.49 1 1 +github.com/ethereum/go-ethereum/rpc/http.go:282.49,283.22 1 1 +github.com/ethereum/go-ethereum/rpc/http.go:283.22,285.5 1 1 +github.com/ethereum/go-ethereum/rpc/metrics.go:32.66,34.12 2 1 +github.com/ethereum/go-ethereum/rpc/metrics.go:37.2,38.43 2 1 +github.com/ethereum/go-ethereum/rpc/metrics.go:34.12,36.3 1 1 +github.com/ethereum/go-ethereum/rpc/stdio.go:29.54,31.2 1 0 +github.com/ethereum/go-ethereum/rpc/stdio.go:34.80,35.69 1 0 +github.com/ethereum/go-ethereum/rpc/stdio.go:35.69,40.3 1 0 +github.com/ethereum/go-ethereum/rpc/stdio.go:48.55,50.2 1 0 +github.com/ethereum/go-ethereum/rpc/stdio.go:52.56,54.2 1 0 +github.com/ethereum/go-ethereum/rpc/stdio.go:56.35,58.2 1 0 +github.com/ethereum/go-ethereum/rpc/stdio.go:60.41,62.2 1 0 +github.com/ethereum/go-ethereum/rpc/stdio.go:64.57,66.2 1 0 +github.com/ethereum/go-ethereum/rpc/types.go:75.57,77.70 2 1 +github.com/ethereum/go-ethereum/rpc/types.go:81.2,81.15 1 1 +github.com/ethereum/go-ethereum/rpc/types.go:93.2,94.16 2 1 +github.com/ethereum/go-ethereum/rpc/types.go:97.2,97.29 1 1 +github.com/ethereum/go-ethereum/rpc/types.go:100.2,101.12 2 1 +github.com/ethereum/go-ethereum/rpc/types.go:77.70,79.3 1 1 +github.com/ethereum/go-ethereum/rpc/types.go:82.18,84.13 2 1 +github.com/ethereum/go-ethereum/rpc/types.go:85.16,87.13 2 1 +github.com/ethereum/go-ethereum/rpc/types.go:88.17,90.13 2 1 +github.com/ethereum/go-ethereum/rpc/types.go:94.16,96.3 1 1 +github.com/ethereum/go-ethereum/rpc/types.go:97.29,99.3 1 1 +github.com/ethereum/go-ethereum/rpc/types.go:107.53,108.12 1 1 +github.com/ethereum/go-ethereum/rpc/types.go:109.27,110.33 1 1 +github.com/ethereum/go-ethereum/rpc/types.go:111.25,112.31 1 1 +github.com/ethereum/go-ethereum/rpc/types.go:113.26,114.32 1 1 +github.com/ethereum/go-ethereum/rpc/types.go:115.10,116.42 1 1 +github.com/ethereum/go-ethereum/rpc/types.go:120.37,122.2 1 0 +github.com/ethereum/go-ethereum/rpc/types.go:130.64,134.16 4 1 +github.com/ethereum/go-ethereum/rpc/types.go:143.2,145.16 3 1 +github.com/ethereum/go-ethereum/rpc/types.go:148.2,148.15 1 1 +github.com/ethereum/go-ethereum/rpc/types.go:134.16,135.49 1 1 +github.com/ethereum/go-ethereum/rpc/types.go:138.3,141.13 4 1 +github.com/ethereum/go-ethereum/rpc/types.go:135.49,137.4 1 1 +github.com/ethereum/go-ethereum/rpc/types.go:145.16,147.3 1 1 +github.com/ethereum/go-ethereum/rpc/types.go:149.18,152.13 3 1 +github.com/ethereum/go-ethereum/rpc/types.go:153.16,156.13 3 1 +github.com/ethereum/go-ethereum/rpc/types.go:157.17,160.13 3 1 +github.com/ethereum/go-ethereum/rpc/types.go:161.10,162.23 1 1 +github.com/ethereum/go-ethereum/rpc/types.go:162.23,165.18 3 1 +github.com/ethereum/go-ethereum/rpc/types.go:168.4,169.14 2 1 +github.com/ethereum/go-ethereum/rpc/types.go:165.18,167.5 1 0 +github.com/ethereum/go-ethereum/rpc/types.go:170.9,172.18 2 1 +github.com/ethereum/go-ethereum/rpc/types.go:175.4,175.31 1 1 +github.com/ethereum/go-ethereum/rpc/types.go:178.4,180.14 3 1 +github.com/ethereum/go-ethereum/rpc/types.go:172.18,174.5 1 1 +github.com/ethereum/go-ethereum/rpc/types.go:175.31,177.5 1 1 +github.com/ethereum/go-ethereum/rpc/types.go:185.60,186.28 1 1 +github.com/ethereum/go-ethereum/rpc/types.go:189.2,189.30 1 1 +github.com/ethereum/go-ethereum/rpc/types.go:186.28,188.3 1 1 +github.com/ethereum/go-ethereum/rpc/types.go:192.47,193.28 1 0 +github.com/ethereum/go-ethereum/rpc/types.go:196.2,196.26 1 0 +github.com/ethereum/go-ethereum/rpc/types.go:199.2,199.14 1 0 +github.com/ethereum/go-ethereum/rpc/types.go:193.28,195.3 1 0 +github.com/ethereum/go-ethereum/rpc/types.go:196.26,198.3 1 0 +github.com/ethereum/go-ethereum/rpc/types.go:202.58,203.26 1 1 +github.com/ethereum/go-ethereum/rpc/types.go:206.2,206.29 1 1 +github.com/ethereum/go-ethereum/rpc/types.go:203.26,205.3 1 1 +github.com/ethereum/go-ethereum/rpc/types.go:209.73,215.2 1 1 +github.com/ethereum/go-ethereum/rpc/types.go:217.84,223.2 1 1 +github.com/ethereum/go-ethereum/rpc/types.go:229.58,231.70 2 0 +github.com/ethereum/go-ethereum/rpc/types.go:235.2,236.16 2 0 +github.com/ethereum/go-ethereum/rpc/types.go:239.2,239.16 1 0 +github.com/ethereum/go-ethereum/rpc/types.go:242.2,243.12 2 0 +github.com/ethereum/go-ethereum/rpc/types.go:231.70,233.3 1 0 +github.com/ethereum/go-ethereum/rpc/types.go:236.16,238.3 1 0 +github.com/ethereum/go-ethereum/rpc/types.go:239.16,241.3 1 0 +github.com/ethereum/go-ethereum/rpc/endpoints.go:27.86,34.27 2 0 +github.com/ethereum/go-ethereum/rpc/endpoints.go:44.2,47.16 3 0 +github.com/ethereum/go-ethereum/rpc/endpoints.go:50.2,51.31 2 0 +github.com/ethereum/go-ethereum/rpc/endpoints.go:34.27,35.74 1 0 +github.com/ethereum/go-ethereum/rpc/endpoints.go:39.3,39.42 1 0 +github.com/ethereum/go-ethereum/rpc/endpoints.go:35.74,38.4 2 0 +github.com/ethereum/go-ethereum/rpc/endpoints.go:39.42,42.4 2 0 +github.com/ethereum/go-ethereum/rpc/endpoints.go:47.16,49.3 1 0 +github.com/ethereum/go-ethereum/rpc/inproc.go:25.42,27.72 2 1 +github.com/ethereum/go-ethereum/rpc/inproc.go:32.2,32.10 1 1 +github.com/ethereum/go-ethereum/rpc/inproc.go:27.72,31.3 3 1 +github.com/ethereum/go-ethereum/rpc/server.go:53.26,60.2 4 1 +github.com/ethereum/go-ethereum/rpc/server.go:66.72,68.2 1 1 +github.com/ethereum/go-ethereum/rpc/server.go:75.69,79.35 2 1 +github.com/ethereum/go-ethereum/rpc/server.go:84.2,89.11 5 1 +github.com/ethereum/go-ethereum/rpc/server.go:79.35,81.3 1 0 +github.com/ethereum/go-ethereum/rpc/server.go:95.77,97.35 1 1 +github.com/ethereum/go-ethereum/rpc/server.go:101.2,106.16 5 1 +github.com/ethereum/go-ethereum/rpc/server.go:112.2,112.11 1 1 +github.com/ethereum/go-ethereum/rpc/server.go:97.35,99.3 1 0 +github.com/ethereum/go-ethereum/rpc/server.go:106.16,107.20 1 0 +github.com/ethereum/go-ethereum/rpc/server.go:110.3,110.9 1 0 +github.com/ethereum/go-ethereum/rpc/server.go:107.20,109.4 1 0 +github.com/ethereum/go-ethereum/rpc/server.go:112.11,114.3 1 0 +github.com/ethereum/go-ethereum/rpc/server.go:114.8,116.3 1 1 +github.com/ethereum/go-ethereum/rpc/server.go:122.25,123.46 1 1 +github.com/ethereum/go-ethereum/rpc/server.go:123.46,125.42 2 1 +github.com/ethereum/go-ethereum/rpc/server.go:125.42,128.4 2 1 +github.com/ethereum/go-ethereum/rpc/server.go:139.50,144.47 4 1 +github.com/ethereum/go-ethereum/rpc/server.go:147.2,147.16 1 1 +github.com/ethereum/go-ethereum/rpc/server.go:144.47,146.3 1 1 +github.com/ethereum/go-ethereum/rpc/server.go:180.56,183.2 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:37.48,39.36 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:42.2,42.14 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:39.36,41.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:46.84,48.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:51.82,53.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:56.36,57.34 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:57.34,59.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:64.79,67.37 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:75.2,75.34 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:81.2,81.29 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:67.37,68.50 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:71.3,71.20 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:68.50,70.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:75.34,76.37 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:79.3,79.29 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:76.37,78.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:97.54,99.22 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:102.2,103.14 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:99.22,101.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:107.41,112.2 4 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:117.77,118.27 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:123.2,124.59 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:127.2,128.21 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:131.2,131.34 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:118.27,120.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:124.59,126.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:128.21,130.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:137.75,138.27 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:142.2,143.21 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:146.2,146.34 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:138.27,140.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:143.21,145.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:149.63,153.54 3 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:165.2,173.28 6 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:153.54,155.40 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:158.3,158.47 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:161.3,161.17 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:155.40,157.4 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:158.47,160.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:177.53,178.53 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:181.2,181.12 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:178.53,180.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:185.48,188.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:191.2,196.16 4 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:199.2,209.12 7 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:188.16,190.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:196.16,198.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:219.53,225.58 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:232.2,233.14 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:225.58,226.21 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:229.3,229.20 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:226.21,228.4 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:241.56,244.2 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:246.32,248.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/table.go:31.64,36.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/table.go:39.31,41.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:44.47,46.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:49.49,51.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/table.go:55.70,57.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:61.69,63.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:67.92,69.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:73.44,75.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:79.40,81.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:85.58,87.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:90.84,92.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:94.85,96.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:100.50,102.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:106.50,108.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:112.30,114.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:118.74,120.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:124.53,126.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/table.go:129.42,131.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:136.73,143.2 3 1 +github.com/ethereum/go-ethereum/core/rawdb/table.go:146.55,148.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:157.59,159.18 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:166.2,166.18 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:183.2,183.35 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:159.18,161.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:161.8,163.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:166.18,168.40 2 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:168.40,171.20 2 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:175.4,175.14 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:171.20,172.10 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:175.14,177.5 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:179.8,181.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:189.40,191.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/table.go:194.56,196.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:201.55,203.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:213.51,215.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/table.go:218.47,220.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:223.38,225.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:228.36,230.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/table.go:233.30,235.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:245.61,248.2 2 1 +github.com/ethereum/go-ethereum/core/rawdb/table.go:251.50,254.2 2 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:257.59,259.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/table.go:270.40,272.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/table.go:276.42,278.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:283.41,285.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/table.go:288.2,288.31 1 1 +github.com/ethereum/go-ethereum/core/rawdb/table.go:285.16,287.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/table.go:294.43,296.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/table.go:300.38,302.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:33.67,35.20 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:39.2,39.35 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:44.2,44.36 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:48.2,49.54 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:53.2,53.26 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:35.20,37.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:39.35,42.3 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:44.36,46.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:49.54,52.3 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:58.88,59.63 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:59.63,61.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:66.89,68.30 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:68.30,70.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:75.79,77.42 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:77.42,79.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:83.69,84.53 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:84.53,86.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:90.75,91.30 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:91.30,93.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:98.107,100.24 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:103.2,104.34 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:107.2,108.17 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:112.2,112.45 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:117.2,118.33 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:100.24,102.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:104.34,106.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:108.17,111.3 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:112.45,113.24 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:113.24,115.4 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:123.127,126.24 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:129.2,130.34 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:134.2,135.46 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:140.2,141.33 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:126.24,128.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:130.34,132.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:135.46,136.29 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:136.29,138.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:146.105,148.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:152.103,153.71 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:153.71,155.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:160.75,165.16 4 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:174.2,174.23 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:165.16,166.40 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:169.3,169.51 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:172.3,172.22 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:166.40,167.9 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:169.51,170.12 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:174.23,176.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:28.46,30.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:34.75,35.101 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:39.2,39.73 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:43.2,43.13 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:35.101,37.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:39.73,41.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:47.87,52.19 2 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:59.2,60.19 2 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:67.2,68.19 2 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:74.2,74.12 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:52.19,54.36 2 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:54.36,56.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:60.19,62.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:68.19,70.36 2 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:70.36,72.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:80.89,83.35 2 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:88.2,89.63 2 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:94.2,94.42 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:83.35,85.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:89.63,92.3 2 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:100.86,103.23 2 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:108.2,109.21 2 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:113.2,114.17 2 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:119.2,119.92 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:123.2,123.19 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:103.23,105.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:109.21,111.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:114.17,117.3 2 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:119.92,122.3 2 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:127.117,130.16 2 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:135.2,135.67 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:130.16,132.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:135.67,137.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:141.81,144.39 2 1 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:144.39,146.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:151.148,153.24 2 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:157.2,158.17 2 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:164.2,164.91 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:153.24,155.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:158.17,161.3 2 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:169.110,171.24 2 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:175.2,176.34 2 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:180.2,181.17 2 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:187.2,187.91 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:171.24,173.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:176.34,178.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:181.17,184.3 2 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:196.72,198.20 2 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:202.2,203.16 2 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:198.20,200.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:207.86,209.96 2 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:209.96,211.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:215.87,218.2 2 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:221.82,222.58 1 0 +github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:222.58,224.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:28.57,31.2 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:34.53,35.66 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:35.66,37.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:41.54,42.55 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:42.55,44.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:49.60,51.36 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:54.2,54.33 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:51.36,53.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:59.67,60.57 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:60.57,62.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:69.50,70.51 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:70.51,72.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:76.76,79.2 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:82.84,83.64 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:83.64,85.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:89.71,90.60 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:90.60,92.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:96.96,99.2 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:102.104,103.84 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:103.84,105.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:109.91,110.80 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:110.80,112.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:117.89,119.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:123.58,126.2 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:130.68,131.60 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:131.60,133.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:138.53,139.54 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:139.54,141.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:146.60,149.2 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:153.72,154.64 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:154.64,156.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:161.55,162.56 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:162.56,164.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:169.66,171.20 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:174.2,174.20 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:177.2,178.16 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:171.20,173.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:174.20,176.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:183.74,186.60 3 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:186.60,188.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:193.60,194.55 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:194.55,196.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:200.61,203.2 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:206.70,207.62 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:207.62,209.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:106.129,114.57 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:122.2,123.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:127.2,137.42 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:157.2,157.57 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:162.2,162.22 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:170.2,170.16 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:179.2,182.21 3 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:114.57,115.38 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:115.38,118.4 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:123.16,125.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:137.42,139.17 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:146.3,146.31 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:139.17,140.41 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:143.4,144.19 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:140.41,142.5 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:157.57,158.111 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:158.111,160.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:162.22,166.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:166.8,169.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:170.16,171.40 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:174.3,175.18 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:171.40,173.4 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:186.33,191.24 4 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:204.2,204.17 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:207.2,207.12 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:191.24,195.34 3 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:200.3,200.50 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:195.34,196.40 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:196.40,198.5 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:200.50,202.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:204.17,206.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:212.72,213.43 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:216.2,216.19 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:213.43,215.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:220.71,221.43 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:224.2,224.29 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:221.43,223.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:232.94,233.43 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:236.2,236.29 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:233.43,235.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:240.46,242.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:245.42,247.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:250.60,256.43 3 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:259.2,259.27 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:256.43,258.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:264.80,268.2 3 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:271.100,272.16 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:275.2,280.15 4 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:292.2,293.41 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:296.2,297.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:300.2,301.23 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:272.16,274.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:280.15,281.17 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:281.17,283.38 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:283.38,285.19 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:285.19,287.6 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:293.41,295.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:297.16,299.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:305.52,306.16 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:309.2,312.43 3 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:315.2,315.33 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:320.2,321.12 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:306.16,308.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:312.43,314.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:315.33,316.51 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:316.51,318.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:325.51,326.16 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:329.2,332.40 3 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:335.2,335.33 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:340.2,341.12 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:326.16,328.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:332.40,334.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:335.33,336.50 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:336.50,338.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:345.32,347.33 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:352.2,352.17 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:355.2,355.12 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:347.33,348.38 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:348.38,350.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:352.17,354.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:360.36,361.24 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:364.2,369.36 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:375.2,375.36 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:381.2,382.12 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:361.24,363.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:369.36,372.8 3 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:375.36,377.22 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:377.22,379.4 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:386.34,391.33 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:401.2,401.33 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:409.2,411.12 3 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:391.33,393.19 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:396.3,397.20 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:393.19,395.4 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:397.20,399.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:401.33,402.50 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:405.3,405.50 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:402.50,404.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:405.50,407.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:419.50,426.6 3 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:426.6,427.10 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:433.3,433.14 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:449.3,450.30 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:455.3,458.10 3 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:474.3,475.18 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:482.3,487.38 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:490.3,491.17 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:498.3,498.34 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:503.3,504.38 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:511.3,511.39 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:514.3,518.52 3 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:528.3,528.39 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:531.3,534.19 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:568.3,571.32 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:574.3,577.41 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:428.17,430.10 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:431.11,431.11 0 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:433.14,435.24 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:439.4,439.11 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:435.24,438.5 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:440.51,441.20 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:442.33,443.20 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:444.18,445.11 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:450.30,453.12 3 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:459.22,462.12 3 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:464.28,467.12 3 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:469.38,472.12 3 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:475.18,478.12 3 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:487.38,489.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:491.17,494.12 3 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:498.34,500.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:504.38,506.28 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:506.28,509.5 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:511.39,513.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:518.52,520.19 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:520.19,522.35 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:522.35,525.6 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:528.39,530.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:534.19,536.26 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:562.4,562.40 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:536.26,538.35 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:542.5,543.40 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:559.5,560.10 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:538.35,541.6 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:543.40,546.22 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:550.6,550.46 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:556.6,557.42 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:546.22,548.15 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:550.46,553.15 3 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:562.40,564.5 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:571.32,573.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:577.41,579.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:583.105,586.64 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:638.2,638.20 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:586.64,587.35 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:635.3,635.13 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:587.35,590.31 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:593.4,594.24 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:597.4,598.22 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:601.4,602.26 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:605.4,606.20 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:611.4,611.74 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:614.4,614.75 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:617.4,617.73 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:620.4,620.78 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:623.4,623.75 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:628.4,629.88 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:633.4,633.33 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:590.31,592.5 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:594.24,596.5 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:598.22,600.5 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:602.26,604.5 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:606.20,608.5 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:611.74,613.5 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:614.75,616.5 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:617.73,619.5 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:620.78,622.5 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:623.75,625.5 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:629.88,631.5 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:647.76,648.16 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:651.2,655.9 4 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:661.2,661.87 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:686.2,686.50 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:689.2,694.16 4 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:697.2,704.16 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:708.2,708.69 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:724.2,724.39 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:727.2,732.41 3 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:735.2,736.16 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:740.2,740.26 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:747.2,747.49 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:751.2,751.12 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:648.16,650.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:655.9,657.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:661.87,667.31 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:682.3,682.13 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:667.31,668.27 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:671.4,672.18 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:675.4,675.30 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:680.4,680.26 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:668.27,670.5 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:672.18,674.5 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:675.30,676.49 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:676.49,678.6 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:686.50,688.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:694.16,696.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:704.16,706.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:708.69,709.58 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:713.3,714.17 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:717.3,717.49 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:720.3,720.13 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:709.58,712.4 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:714.17,716.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:717.49,719.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:721.17,723.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:724.39,726.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:732.41,734.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:736.16,738.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:740.26,742.114 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:742.114,744.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer.go:747.49,749.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:60.48,63.2 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:66.46,72.2 5 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:77.86,78.30 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:84.2,84.42 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:78.30,83.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:127.94,129.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:134.190,136.48 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:139.2,140.19 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:145.2,150.14 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:179.2,193.37 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:198.2,199.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:203.2,205.17 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:136.48,138.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:140.19,142.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:142.8,144.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:150.14,153.17 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:164.3,165.17 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:153.17,155.4 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:165.17,167.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:168.8,170.17 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:173.3,174.17 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:170.17,172.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:174.17,176.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:193.37,196.3 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:199.16,202.3 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:210.39,216.16 3 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:219.2,219.22 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:225.2,225.61 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:229.2,229.44 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:232.2,255.16 8 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:258.2,261.35 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:267.2,267.16 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:272.2,272.16 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:275.2,275.43 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:278.2,282.32 3 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:327.2,327.17 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:340.2,351.36 6 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:354.2,355.12 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:216.16,218.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:219.22,220.50 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:220.50,222.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:225.61,227.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:229.44,231.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:255.16,257.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:261.35,263.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:263.8,266.3 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:267.16,269.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:269.8,271.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:272.16,274.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:275.43,277.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:282.32,284.31 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:292.3,292.31 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:284.31,286.66 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:289.4,289.28 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:286.66,288.5 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:292.31,294.83 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:297.4,302.37 3 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:309.4,309.49 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:322.4,323.40 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:294.83,296.5 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:302.37,304.5 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:304.10,307.5 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:309.49,312.93 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:315.5,315.46 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:320.5,320.30 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:312.93,314.6 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:315.46,319.6 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:327.17,329.40 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:332.3,332.39 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:335.3,335.39 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:329.40,331.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:332.39,334.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:335.39,337.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:351.36,353.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:362.46,367.39 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:372.2,372.16 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:378.2,378.12 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:367.39,368.69 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:368.69,370.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:372.16,374.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:374.8,377.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:382.57,388.23 4 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:391.2,391.46 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:395.2,396.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:400.2,401.24 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:404.2,409.85 3 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:413.2,414.17 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:424.2,424.34 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:438.2,438.76 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:442.2,447.16 4 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:450.2,451.12 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:388.23,390.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:391.46,393.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:396.16,398.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:401.24,403.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:409.85,411.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:414.17,416.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:416.8,418.81 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:421.3,421.35 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:418.81,420.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:424.34,428.17 3 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:433.3,436.30 3 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:428.17,430.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:438.76,440.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:447.16,449.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:455.57,460.47 3 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:463.2,463.41 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:467.2,471.42 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:483.2,484.66 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:489.2,489.27 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:493.2,493.26 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:499.2,500.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:504.2,508.61 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:521.2,521.38 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:525.2,525.111 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:533.2,533.16 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:537.2,537.40 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:540.2,541.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:545.2,551.16 5 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:554.2,555.12 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:460.47,462.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:463.41,465.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:471.42,473.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:473.8,475.85 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:478.3,480.30 3 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:475.85,477.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:484.66,486.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:489.27,491.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:493.26,495.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:500.16,502.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:508.61,509.94 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:512.3,514.31 3 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:517.3,517.23 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:509.94,511.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:514.31,515.9 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:521.38,523.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:525.111,532.3 3 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:533.16,535.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:537.40,539.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:541.16,543.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:551.16,553.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:559.38,564.40 4 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:567.2,569.39 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:572.2,574.28 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:579.2,581.17 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:584.2,584.12 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:564.40,566.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:569.39,571.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:574.28,575.35 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:575.35,577.4 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:581.17,583.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:588.108,590.37 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:603.2,603.15 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:590.37,592.22 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:597.3,598.17 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:601.3,601.19 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:592.22,594.4 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:594.9,596.4 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:598.17,600.4 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:608.48,609.37 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:609.37,612.3 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:616.67,617.31 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:617.31,618.17 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:618.17,621.14 3 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:621.14,623.5 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:629.68,630.31 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:630.31,631.17 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:631.17,634.14 3 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:634.14,636.5 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:647.78,652.78 3 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:655.2,659.38 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:665.2,665.15 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:674.2,674.21 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:652.78,654.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:659.38,664.3 4 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:665.15,673.3 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:679.62,681.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:684.2,684.22 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:681.16,683.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:691.87,694.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:697.2,703.33 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:724.2,724.20 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:694.16,696.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:703.33,707.23 4 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:710.3,710.62 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:713.3,713.23 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:722.3,722.33 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:707.23,709.4 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:710.62,711.9 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:713.23,715.18 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:718.4,718.33 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:715.18,717.5 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:719.9,721.4 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:730.92,735.37 3 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:738.2,744.52 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:747.2,747.25 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:750.2,755.59 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:772.2,773.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:776.2,783.54 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:821.2,821.40 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:735.37,737.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:744.52,746.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:747.25,749.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:755.59,758.27 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:761.3,762.13 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:765.3,765.96 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:768.3,769.13 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:758.27,760.4 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:762.13,764.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:765.96,767.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:773.16,775.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:783.54,789.48 4 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:799.3,799.49 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:810.3,813.58 4 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:789.48,791.22 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:797.4,797.17 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:791.22,792.79 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:795.5,795.19 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:792.79,794.6 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:799.49,802.22 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:807.4,807.9 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:802.22,803.80 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:803.80,805.6 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:813.58,815.79 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:818.4,818.9 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:815.79,817.5 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:826.48,828.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:831.47,836.2 3 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:840.53,842.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:845.2,846.19 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:842.16,844.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:852.44,860.16 5 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:865.2,872.12 6 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:860.16,862.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:877.37,878.39 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:881.2,881.38 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:884.2,884.22 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:878.39,880.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:881.38,883.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:889.53,891.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:893.66,898.2 4 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:900.66,902.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:906.2,913.32 5 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:924.2,924.50 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:902.16,905.3 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:913.32,914.77 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:917.3,920.36 4 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:914.77,915.9 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:920.36,921.9 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:932.50,933.22 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:944.2,944.12 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:933.22,936.24 3 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:942.3,942.13 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:936.24,937.49 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:937.49,940.5 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:31.93,34.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:37.2,40.15 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:48.2,48.19 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:54.2,55.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:58.2,58.53 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:63.2,64.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:71.2,73.34 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:76.2,78.51 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:81.2,81.12 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:34.16,36.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:40.15,41.15 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:44.3,44.19 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:41.15,43.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:48.19,49.35 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:49.35,51.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:55.16,57.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:58.53,61.3 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:64.16,67.3 2 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:73.34,75.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:78.51,80.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:85.66,90.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:94.2,94.51 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:97.2,97.18 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:90.16,92.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:94.51,96.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:101.68,103.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:106.66,108.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:111.59,112.44 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:116.2,116.52 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:119.2,119.12 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:112.44,114.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:116.52,118.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:37.68,39.57 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:47.2,47.33 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:39.57,41.21 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:45.3,45.13 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:41.21,44.4 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:51.83,52.68 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:52.68,54.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:58.66,59.57 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:59.57,61.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:66.68,73.16 5 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:78.2,78.15 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:73.16,74.50 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:74.50,76.4 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:89.80,97.16 3 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:109.2,109.15 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:97.16,99.28 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:102.3,103.17 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:106.3,107.50 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:99.28,100.12 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:103.17,104.9 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:115.109,117.16 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:120.2,129.16 5 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:142.2,142.24 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:117.16,119.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:129.16,130.40 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:133.3,133.108 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:130.40,131.9 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:133.108,137.29 3 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:137.29,138.10 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:146.74,148.20 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:151.2,152.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:148.20,150.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:156.82,159.41 3 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:159.41,161.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:165.68,166.57 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:166.57,168.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:172.62,174.20 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:177.2,177.33 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:174.20,176.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:181.69,182.60 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:182.60,184.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:188.61,190.20 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:193.2,193.33 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:190.20,192.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:197.68,198.59 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:198.59,200.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:204.65,206.20 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:209.2,209.33 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:206.20,208.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:213.72,214.63 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:214.63,216.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:221.59,223.20 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:226.2,227.54 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:231.2,231.15 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:223.20,225.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:227.54,230.3 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:235.66,237.16 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:240.2,240.50 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:237.16,239.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:240.50,242.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:248.55,250.20 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:253.2,254.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:250.20,252.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:259.63,260.74 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:260.74,262.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:266.61,268.20 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:271.2,272.16 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:268.20,270.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:276.69,277.80 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:277.80,279.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:291.83,293.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:296.2,297.22 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:301.2,303.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:317.2,317.16 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:321.2,323.46 3 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:329.2,329.19 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:293.16,295.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:297.22,300.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:303.16,306.38 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:306.38,307.60 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:314.4,314.11 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:307.60,311.5 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:311.10,312.10 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:317.16,319.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:323.46,325.23 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:325.23,327.4 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:333.83,335.57 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:347.2,347.13 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:335.57,340.58 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:344.3,345.13 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:340.58,342.4 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:351.71,352.31 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:355.2,355.69 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:358.2,358.13 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:352.31,354.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:355.69,357.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:362.81,364.20 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:367.2,368.66 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:372.2,372.15 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:364.20,366.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:368.66,371.3 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:377.65,387.16 4 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:390.2,391.42 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:387.16,389.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:391.42,393.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:397.77,399.57 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:399.57,401.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:406.90,407.59 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:407.59,409.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:414.80,416.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:419.2,419.32 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:416.16,418.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:423.81,428.57 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:438.2,438.13 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:428.57,430.36 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:435.3,436.13 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:430.36,433.4 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:443.72,445.57 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:457.2,457.13 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:445.57,447.20 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:453.3,455.13 3 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:447.20,449.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:461.95,462.64 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:462.64,464.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:468.69,469.31 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:472.2,472.72 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:475.2,475.13 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:469.31,471.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:472.72,474.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:479.77,481.20 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:484.2,485.64 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:489.2,489.13 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:481.20,483.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:485.64,488.3 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:493.92,495.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:498.2,498.38 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:495.16,497.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:502.75,503.62 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:503.62,505.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:509.79,511.57 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:521.2,521.13 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:511.57,513.36 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:518.3,519.13 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:513.36,516.4 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:525.72,527.20 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:530.2,531.62 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:535.2,535.11 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:527.20,529.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:531.62,534.3 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:539.85,541.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:544.2,544.64 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:541.16,543.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:544.64,546.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:550.73,551.61 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:551.61,553.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:558.73,559.31 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:562.2,562.76 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:565.2,565.13 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:559.31,561.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:562.76,564.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:569.85,571.57 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:581.2,581.13 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:571.57,573.36 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:578.3,579.13 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:573.36,576.4 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:587.87,590.20 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:594.2,595.64 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:599.2,600.49 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:603.2,603.17 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:590.20,592.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:595.64,598.3 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:600.49,602.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:613.112,616.21 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:619.2,620.17 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:624.2,624.87 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:628.2,628.17 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:616.21,618.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:620.17,623.3 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:624.87,627.3 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:632.103,635.35 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:638.2,639.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:643.2,643.70 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:635.35,637.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:639.16,641.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:643.70,645.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:649.79,650.66 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:650.66,652.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:671.54,673.42 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:676.2,677.34 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:680.2,680.12 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:673.42,675.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:677.34,679.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:684.110,686.31 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:689.2,689.37 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:701.2,701.12 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:686.31,688.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:689.37,692.46 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:692.46,699.4 6 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:707.108,710.20 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:713.2,714.57 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:724.2,725.17 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:729.2,729.83 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:733.2,734.35 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:737.2,737.13 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:710.20,712.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:714.57,717.68 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:720.3,721.13 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:717.68,719.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:725.17,728.3 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:729.83,732.3 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:734.35,736.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:743.114,745.21 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:748.2,749.35 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:752.2,752.13 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:745.21,747.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:749.35,751.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:761.79,763.19 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:766.2,767.17 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:770.2,770.82 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:763.19,765.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:767.17,769.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:774.62,777.2 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:780.157,786.63 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:786.63,787.32 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:808.3,808.13 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:787.32,790.40 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:795.4,796.46 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:800.4,801.13 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:804.4,804.97 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:790.40,792.5 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:796.46,798.5 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:801.13,803.5 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:804.97,806.5 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:812.187,814.82 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:817.2,817.67 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:820.2,820.73 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:823.2,823.70 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:826.2,826.67 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:829.2,829.76 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:832.2,832.12 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:814.82,816.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:817.67,819.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:820.73,822.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:823.70,825.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:826.67,828.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:829.76,831.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:836.76,844.2 5 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:848.89,856.2 5 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:869.33,869.50 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:870.43,872.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:873.38,873.65 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:876.67,878.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:881.2,882.58 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:885.2,885.32 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:890.2,890.12 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:878.16,880.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:882.58,884.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:885.32,886.32 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:886.32,888.4 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:895.55,897.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:900.2,901.58 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:904.2,905.32 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:908.2,908.15 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:897.16,899.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:901.58,903.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:905.32,907.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:913.64,915.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:918.2,919.19 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:924.2,924.30 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:930.2,935.37 3 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:938.2,939.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:942.2,942.50 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:915.16,917.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:919.19,920.59 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:920.59,922.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:924.30,925.87 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:925.87,928.4 2 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:935.37,937.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:939.16,941.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:942.50,944.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:948.47,949.47 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:949.47,951.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:955.76,956.55 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:962.2,962.55 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:968.2,968.27 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:978.2,978.10 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:956.55,958.15 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:958.15,960.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:962.55,964.15 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:964.15,966.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:968.27,970.15 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:973.3,974.15 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:970.15,972.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:974.15,976.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:982.52,984.39 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:987.2,988.29 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:991.2,991.58 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:984.39,986.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:988.29,990.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:995.50,997.38 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:1000.2,1001.28 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:1004.2,1004.55 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:997.38,999.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:1001.28,1003.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:31.59,35.19 3 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:38.2,38.55 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:42.2,42.17 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:35.19,37.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:38.55,40.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:46.68,48.16 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:51.2,51.55 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:48.16,50.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:51.55,53.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:57.85,59.20 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:62.2,63.54 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:67.2,67.16 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:59.20,61.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:63.54,66.3 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:71.91,72.16 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:75.2,76.16 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:79.2,79.54 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:72.16,74.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:76.16,78.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:79.54,81.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:85.73,88.2 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:91.80,92.55 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:92.55,94.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:110.82,113.57 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:118.2,123.68 5 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:129.2,130.57 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:134.2,134.33 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:113.57,115.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:115.8,115.72 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:115.72,117.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:123.68,127.3 3 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:130.57,133.3 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:138.55,141.57 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:146.2,146.46 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:149.2,150.57 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:141.57,143.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:143.8,143.72 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:143.72,145.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:146.46,148.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:150.57,152.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:156.58,159.57 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:165.2,166.16 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:170.2,172.57 3 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:159.57,161.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:161.8,161.72 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:161.72,163.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:166.16,169.3 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:172.57,174.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:178.59,181.2 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:184.66,185.58 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:185.58,187.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:43.38,45.50 2 1 +github.com/ethereum/go-ethereum/core/rawdb/database.go:48.2,48.51 1 1 +github.com/ethereum/go-ethereum/core/rawdb/database.go:51.2,51.20 1 1 +github.com/ethereum/go-ethereum/core/rawdb/database.go:54.2,54.12 1 1 +github.com/ethereum/go-ethereum/core/rawdb/database.go:45.50,47.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:48.51,50.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:51.20,53.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:60.55,61.43 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:65.2,65.25 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:68.2,74.12 5 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:61.43,63.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:65.25,67.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:83.76,85.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:88.75,90.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/database.go:93.99,95.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:98.50,100.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:103.46,105.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:108.64,110.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:113.87,115.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:118.56,120.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:123.56,125.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:128.36,130.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:132.91,146.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/database.go:150.80,152.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:156.57,158.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/database.go:163.126,166.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/database.go:191.2,191.66 1 1 +github.com/ethereum/go-ethereum/core/rawdb/database.go:234.2,234.20 1 1 +github.com/ethereum/go-ethereum/core/rawdb/database.go:241.2,244.8 1 1 +github.com/ethereum/go-ethereum/core/rawdb/database.go:166.16,168.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:191.66,192.47 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:192.47,197.18 2 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:204.4,204.68 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:197.18,199.5 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:199.10,199.49 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:199.49,201.5 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:204.68,207.65 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:207.65,209.6 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:216.9,221.63 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:221.63,224.64 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:224.64,226.6 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:234.20,236.13 2 1 +github.com/ethereum/go-ethereum/core/rawdb/database.go:236.13,239.4 2 1 +github.com/ethereum/go-ethereum/core/rawdb/database.go:249.41,251.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/database.go:256.56,258.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:262.119,264.16 2 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:267.2,267.29 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:264.16,266.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:272.146,274.16 2 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:277.2,278.16 2 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:282.2,282.18 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:274.16,276.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:278.16,281.3 2 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:287.34,289.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:291.52,293.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:302.45,305.2 2 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:307.30,309.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:311.31,313.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:317.75,362.16 4 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:438.2,439.139 2 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:446.2,447.45 2 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:451.2,482.26 7 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:486.2,486.12 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:362.16,368.10 3 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:431.3,432.60 2 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:369.98,370.21 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:371.104,372.20 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:373.112,374.22 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:375.83,376.17 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:377.85,378.29 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:379.108,380.29 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:381.38,382.19 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:383.90,384.19 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:385.100,386.23 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:387.114,388.26 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:389.116,390.26 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:391.100,392.23 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:393.96,394.22 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:395.98,396.22 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:397.105,398.23 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:399.51,400.23 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:401.96,402.27 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:403.83,404.25 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:407.47,408.26 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:411.45,412.28 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:413.11,420.6 2 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:427.4,427.18 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:420.6,421.31 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:421.31,424.11 3 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:427.18,429.5 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:432.60,435.4 2 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:439.139,440.56 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:440.56,443.4 2 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:447.45,449.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/database.go:482.26,484.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/key_length_iterator.go:30.73,35.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/key_length_iterator.go:37.42,39.25 1 1 +github.com/ethereum/go-ethereum/core/rawdb/key_length_iterator.go:46.2,46.14 1 1 +github.com/ethereum/go-ethereum/core/rawdb/key_length_iterator.go:39.25,40.53 1 1 +github.com/ethereum/go-ethereum/core/rawdb/key_length_iterator.go:40.53,42.4 1 1 +github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:26.69,29.2 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:32.65,36.20 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:39.2,40.13 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:36.20,38.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:46.75,49.2 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:52.69,55.2 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:59.62,62.43 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:65.2,66.11 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:62.43,64.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:72.72,75.2 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:78.66,81.2 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:84.80,85.40 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:90.2,91.47 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:85.40,86.61 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:86.61,88.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:95.72,96.52 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:96.52,98.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:102.76,103.51 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:103.51,105.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:109.60,110.49 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:110.49,112.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:116.64,117.48 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:117.48,119.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:29.61,32.2 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:35.70,36.62 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:36.62,38.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:43.56,44.57 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:44.57,46.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:50.79,52.20 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:55.2,56.66 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:60.2,60.15 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:52.20,54.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:56.66,59.3 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:64.73,66.16 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:69.2,70.42 2 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:66.16,68.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:70.42,72.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:76.67,77.61 1 0 +github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:77.61,79.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/schema.go:148.46,152.2 3 1 +github.com/ethereum/go-ethereum/core/rawdb/schema.go:155.44,157.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/schema.go:160.56,162.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/schema.go:165.58,167.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/schema.go:170.42,172.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/schema.go:175.47,177.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/schema.go:180.59,182.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/schema.go:185.63,187.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/schema.go:190.43,192.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/schema.go:195.50,197.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/schema.go:200.70,202.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/schema.go:205.58,207.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/schema.go:210.70,217.2 4 1 +github.com/ethereum/go-ethereum/core/rawdb/schema.go:220.46,222.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/schema.go:225.43,227.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/schema.go:230.39,232.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/schema.go:236.43,237.87 1 0 +github.com/ethereum/go-ethereum/core/rawdb/schema.go:240.2,240.19 1 0 +github.com/ethereum/go-ethereum/core/rawdb/schema.go:237.87,239.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/schema.go:244.41,246.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/schema.go:249.42,251.2 1 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:35.49,38.31 2 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:41.2,47.34 2 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:76.2,76.38 1 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:79.2,83.118 4 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:38.31,40.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:47.34,50.23 2 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:53.3,54.17 2 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:57.3,57.26 1 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:69.3,71.41 2 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:50.23,52.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:54.17,56.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:57.26,62.48 4 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:62.48,63.41 1 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:66.5,66.18 1 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:63.41,65.6 1 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:71.41,74.4 2 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:76.38,78.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:95.128,101.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:104.2,105.54 2 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:108.2,113.19 2 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:135.2,136.20 2 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:165.2,166.36 2 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:169.2,169.17 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:101.16,103.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:105.54,107.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:113.19,115.14 2 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:118.3,119.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:115.14,117.4 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:119.16,122.11 2 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:127.4,127.15 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:123.38,123.38 0 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:124.21,125.11 1 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:127.15,129.5 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:129.10,131.5 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:136.20,137.16 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:143.3,143.27 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:137.16,139.48 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:139.48,141.5 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:143.27,145.59 2 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:149.4,150.41 2 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:153.4,158.11 2 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:145.59,148.5 2 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:150.41,152.5 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:159.28,159.28 0 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:160.21,161.11 1 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:166.36,168.3 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:180.116,182.16 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:185.2,198.37 2 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:237.2,238.38 2 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:242.2,242.9 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:182.16,184.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:198.37,203.22 2 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:203.22,205.65 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:209.4,209.39 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:213.4,219.48 6 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:228.4,228.42 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:205.65,206.10 1 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:209.39,210.10 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:219.48,221.41 2 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:225.5,225.18 1 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:221.41,224.6 2 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:228.42,231.5 2 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:238.38,241.3 2 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:243.19,244.148 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:245.10,246.135 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:259.92,261.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:264.126,266.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:272.118,274.16 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:277.2,290.33 2 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:329.2,330.38 2 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:334.2,334.9 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:274.16,276.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:290.33,293.22 2 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:293.22,295.64 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:299.4,299.37 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:302.4,311.24 6 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:320.4,320.42 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:295.64,296.10 1 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:299.37,300.10 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:311.24,313.41 2 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:317.5,317.18 1 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:313.41,316.6 2 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:320.42,323.5 2 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:330.38,333.3 2 0 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:335.19,336.145 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:337.10,338.132 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:347.94,349.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:352.128,354.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:42.49,47.2 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:51.61,53.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:56.2,57.48 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:60.2,60.19 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:53.16,55.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:57.48,59.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:65.65,67.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:70.2,70.31 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:67.16,69.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:76.74,78.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:87.2,87.22 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:94.2,95.16 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:101.2,101.26 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:108.2,108.15 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:78.16,80.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:87.22,89.48 2 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:92.3,92.16 1 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:89.48,91.4 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:95.16,97.3 1 0 +github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:101.26,104.48 3 1 +github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:104.48,106.4 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:79.147,86.16 5 1 +github.com/ethereum/go-ethereum/core/headerchain.go:89.2,100.29 3 1 +github.com/ethereum/go-ethereum/core/headerchain.go:103.2,104.71 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:109.2,111.16 3 1 +github.com/ethereum/go-ethereum/core/headerchain.go:86.16,88.3 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:100.29,102.3 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:104.71,105.54 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:105.54,107.4 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:116.65,117.48 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:121.2,122.19 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:125.2,125.15 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:117.48,120.3 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:122.19,124.3 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:139.61,141.23 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:148.2,153.46 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:183.2,183.38 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:190.2,195.38 5 1 +github.com/ethereum/go-ethereum/core/headerchain.go:199.2,202.12 4 1 +github.com/ethereum/go-ethereum/core/headerchain.go:141.23,143.3 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:153.46,155.44 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:165.3,170.67 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:155.44,157.31 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:160.4,160.39 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:157.31,158.10 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:170.67,172.23 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:175.4,177.21 3 1 +github.com/ethereum/go-ethereum/core/headerchain.go:172.23,173.10 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:177.21,179.5 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:183.38,188.3 4 1 +github.com/ethereum/go-ethereum/core/headerchain.go:195.38,197.3 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:209.75,210.23 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:213.2,214.16 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:217.2,223.33 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:252.2,252.24 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:257.2,257.38 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:260.2,260.27 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:210.23,212.3 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:214.16,216.3 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:223.33,228.25 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:233.3,239.20 4 1 +github.com/ethereum/go-ethereum/core/headerchain.go:249.3,249.29 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:228.25,230.4 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:230.9,232.4 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:239.20,248.4 6 1 +github.com/ethereum/go-ethereum/core/headerchain.go:252.24,255.3 2 0 +github.com/ethereum/go-ethereum/core/headerchain.go:257.38,259.3 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:270.120,272.16 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:275.2,287.82 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:297.2,297.133 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:301.2,301.42 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:304.2,305.20 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:272.16,274.3 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:287.82,289.3 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:289.8,289.19 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:289.19,290.20 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:293.3,293.21 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:290.20,292.4 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:297.133,299.3 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:301.42,303.3 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:308.95,310.34 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:332.2,333.20 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:346.2,350.23 3 1 +github.com/ethereum/go-ethereum/core/headerchain.go:362.2,362.15 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:310.34,311.63 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:322.3,322.37 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:326.3,326.54 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:311.63,320.4 4 0 +github.com/ethereum/go-ethereum/core/headerchain.go:322.37,324.4 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:326.54,328.4 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:333.20,335.46 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:343.3,343.29 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:335.46,337.27 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:340.4,340.23 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:337.27,339.5 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:350.23,352.25 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:357.3,357.35 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:352.25,355.4 2 0 +github.com/ethereum/go-ethereum/core/headerchain.go:357.35,359.4 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:375.123,376.24 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:379.2,380.16 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:384.2,388.41 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:394.2,394.21 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:397.2,398.24 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:376.24,378.3 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:380.16,382.3 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:388.41,390.87 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:390.87,392.4 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:394.21,396.3 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:406.126,407.23 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:410.2,410.19 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:417.2,417.20 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:437.2,437.21 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:407.23,409.3 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:410.19,412.58 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:415.3,415.26 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:412.58,414.4 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:417.20,418.58 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:425.3,425.28 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:428.3,431.20 4 0 +github.com/ethereum/go-ethereum/core/headerchain.go:434.3,435.11 2 0 +github.com/ethereum/go-ethereum/core/headerchain.go:418.58,420.59 2 0 +github.com/ethereum/go-ethereum/core/headerchain.go:420.59,423.5 2 0 +github.com/ethereum/go-ethereum/core/headerchain.go:425.28,427.4 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:431.20,433.4 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:442.72,444.44 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:447.2,448.15 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:452.2,453.11 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:444.44,446.3 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:448.15,450.3 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:458.81,460.48 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:463.2,464.19 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:468.2,469.15 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:460.48,462.3 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:464.19,466.3 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:474.72,476.19 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:479.2,479.36 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:476.19,478.3 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:485.72,486.68 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:489.2,489.50 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:486.68,488.3 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:494.71,496.29 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:499.2,499.35 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:496.29,498.3 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:506.76,509.69 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:517.2,520.29 3 0 +github.com/ethereum/go-ethereum/core/headerchain.go:523.2,523.16 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:536.2,536.15 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:539.2,539.16 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:509.69,510.29 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:510.29,513.4 2 0 +github.com/ethereum/go-ethereum/core/headerchain.go:513.9,515.4 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:520.29,522.3 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:523.16,525.10 2 0 +github.com/ethereum/go-ethereum/core/headerchain.go:528.3,533.11 6 0 +github.com/ethereum/go-ethereum/core/headerchain.go:525.10,526.9 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:536.15,538.3 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:542.68,544.2 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:548.54,550.2 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:554.61,558.2 3 1 +github.com/ethereum/go-ethereum/core/headerchain.go:574.114,580.100 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:644.2,644.38 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:648.2,650.24 3 1 +github.com/ethereum/go-ethereum/core/headerchain.go:580.100,585.20 3 1 +github.com/ethereum/go-ethereum/core/headerchain.go:588.3,598.22 3 1 +github.com/ethereum/go-ethereum/core/headerchain.go:606.3,607.45 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:610.3,617.13 5 1 +github.com/ethereum/go-ethereum/core/headerchain.go:623.3,626.28 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:585.20,587.4 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:598.22,600.31 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:600.31,603.5 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:607.45,609.4 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:617.13,618.71 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:621.4,621.18 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:618.71,620.5 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:626.28,629.24 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:633.4,633.32 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:640.4,640.41 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:629.24,632.5 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:633.32,634.21 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:637.5,638.37 2 1 +github.com/ethereum/go-ethereum/core/headerchain.go:634.21,636.6 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:644.38,646.3 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:654.55,656.2 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:659.53,659.73 1 1 +github.com/ethereum/go-ethereum/core/headerchain.go:662.50,662.70 1 0 +github.com/ethereum/go-ethereum/core/headerchain.go:666.79,668.2 1 0 +github.com/ethereum/go-ethereum/core/gaspool.go:29.51,30.41 1 1 +github.com/ethereum/go-ethereum/core/gaspool.go:33.2,34.11 2 1 +github.com/ethereum/go-ethereum/core/gaspool.go:30.41,31.40 1 0 +github.com/ethereum/go-ethereum/core/gaspool.go:39.48,40.26 1 1 +github.com/ethereum/go-ethereum/core/gaspool.go:43.2,44.12 2 1 +github.com/ethereum/go-ethereum/core/gaspool.go:40.26,42.3 1 1 +github.com/ethereum/go-ethereum/core/gaspool.go:48.33,50.2 1 0 +github.com/ethereum/go-ethereum/core/gaspool.go:52.36,54.2 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:189.53,191.34 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:195.2,195.25 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:199.2,199.24 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:203.2,203.27 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:207.2,207.26 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:211.2,211.27 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:215.2,215.26 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:219.2,219.23 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:223.2,223.13 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:191.34,194.3 2 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:195.25,198.3 2 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:199.24,202.3 2 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:203.27,206.3 2 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:207.26,210.3 2 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:211.27,214.3 2 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:215.26,218.3 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:219.23,222.3 2 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:279.96,303.37 4 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:307.2,315.46 5 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:327.2,331.13 4 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:303.37,306.3 2 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:315.46,318.59 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:321.3,321.59 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:318.59,320.4 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:321.59,323.4 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:337.28,355.6 7 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:355.6,356.10 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:358.33,359.23 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:365.34,367.10 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:370.19,376.78 5 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:382.18,384.33 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:398.4,398.20 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:401.20,402.27 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:359.23,362.5 2 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:376.78,379.5 2 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:384.33,386.35 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:390.5,390.60 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:386.35,387.14 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:390.60,392.30 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:395.6,395.48 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:392.30,394.7 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:402.27,404.61 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:407.5,407.21 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:404.61,406.6 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:414.28,422.25 4 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:425.2,425.38 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:422.25,424.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:430.84,432.2 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:435.41,440.2 3 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:444.49,451.24 5 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:460.2,460.70 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:451.24,454.27 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:457.3,457.33 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:454.27,456.4 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:465.55,470.2 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:474.40,479.2 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:483.40,485.36 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:488.2,489.34 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:492.2,492.24 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:485.36,487.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:489.34,491.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:497.110,502.39 4 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:505.2,506.37 2 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:509.2,509.24 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:502.39,504.3 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:506.37,508.3 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:514.95,519.40 4 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:522.2,523.38 2 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:526.2,526.24 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:519.40,521.3 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:523.38,525.3 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:536.85,541.39 4 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:557.2,557.16 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:541.39,545.49 2 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:553.3,553.19 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:545.49,546.27 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:546.27,547.80 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:547.80,549.11 2 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:553.19,555.4 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:561.47,566.2 3 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:571.67,573.41 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:581.2,581.12 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:573.41,574.52 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:577.3,577.48 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:574.52,576.4 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:577.48,579.4 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:586.73,588.54 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:592.2,592.58 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:596.2,596.35 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:601.2,601.27 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:605.2,605.35 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:609.2,609.35 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:612.2,612.35 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:616.2,616.44 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:620.2,621.16 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:625.2,625.53 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:629.2,629.51 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:634.2,634.59 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:638.2,639.16 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:642.2,642.24 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:645.2,645.12 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:588.54,590.3 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:592.58,594.3 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:596.35,598.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:601.27,603.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:605.35,607.3 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:609.35,611.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:612.35,614.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:616.44,618.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:621.16,623.3 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:625.53,627.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:629.51,631.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:634.59,636.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:639.16,641.3 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:642.24,644.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:655.87,658.31 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:665.2,668.53 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:674.2,674.93 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:711.2,712.66 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:736.2,737.16 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:741.2,741.42 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:746.2,746.13 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:749.2,752.22 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:658.31,662.3 3 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:668.53,672.3 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:674.93,676.46 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:685.3,685.62 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:693.3,696.27 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:702.3,704.27 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:676.46,680.4 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:685.62,688.4 2 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:696.27,700.4 3 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:704.27,708.4 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:712.66,715.16 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:720.3,720.17 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:725.3,733.25 7 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:715.16,718.4 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:720.17,724.4 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:737.16,739.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:741.42,745.3 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:746.13,748.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:758.111,761.29 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:764.2,765.15 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:771.2,771.16 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:781.2,781.42 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:784.2,784.12 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:789.2,789.42 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:792.2,792.24 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:761.29,763.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:765.15,769.3 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:771.16,775.3 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:775.8,778.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:781.42,783.3 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:784.12,787.3 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:789.42,791.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:797.75,799.56 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:802.2,802.48 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:799.56,801.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:802.48,804.3 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:811.98,813.31 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:816.2,819.15 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:827.2,827.16 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:836.2,840.13 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:813.31,815.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:819.15,825.3 4 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:827.16,831.3 3 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:831.8,834.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:848.65,850.2 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:854.59,857.2 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:864.66,866.2 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:869.70,871.2 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:874.64,877.2 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:883.60,886.2 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:889.80,895.25 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:914.2,914.20 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:919.2,924.30 5 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:932.2,933.10 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:936.2,936.13 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:895.25,897.37 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:905.3,906.17 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:912.3,912.26 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:897.37,900.12 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:906.17,909.12 3 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:914.20,916.3 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:924.30,925.28 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:928.3,929.12 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:925.28,927.4 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:933.10,935.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:941.95,944.25 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:951.2,952.20 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:944.25,947.30 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:947.30,949.4 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:957.61,959.30 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:975.2,975.15 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:959.30,961.16 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:964.3,966.89 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:973.3,973.20 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:961.16,962.12 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:966.89,968.4 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:968.9,968.94 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:968.94,970.4 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:979.62,981.2 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:985.48,987.2 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:991.65,994.15 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:997.2,1001.16 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1004.2,1004.32 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1008.2,1008.51 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1027.2,1027.47 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:994.15,996.3 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1001.16,1003.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1004.32,1006.3 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1008.51,1009.55 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1009.55,1011.23 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1015.4,1015.32 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1020.4,1023.10 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1011.23,1013.5 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1015.32,1018.5 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1027.47,1028.47 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1032.3,1032.21 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1028.47,1031.4 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1032.21,1035.4 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1041.94,1042.9 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1043.64,1044.28 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1045.30,1046.30 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1052.78,1053.9 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1054.32,1055.28 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1056.30,1057.30 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1062.57,1063.9 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1064.33,1064.33 0 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1065.30,1065.30 0 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1072.41,1083.6 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1083.6,1085.38 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1097.3,1097.10 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1085.38,1095.4 5 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1098.33,1100.20 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1105.4,1106.32 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1108.35,1110.28 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1115.4,1116.32 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1118.36,1122.40 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1125.4,1125.30 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1127.18,1128.17 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1130.31,1132.22 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1135.4,1136.10 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1100.20,1102.5 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1102.10,1104.5 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1110.28,1112.5 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1112.10,1114.5 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1122.40,1124.5 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1132.22,1134.5 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1142.144,1143.27 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1146.2,1149.42 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1155.2,1156.18 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1174.2,1179.18 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1200.2,1208.30 6 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1215.2,1215.21 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1143.27,1145.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1149.42,1154.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1156.18,1161.28 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1168.3,1169.32 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1161.28,1163.31 2 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1163.31,1165.5 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1169.32,1171.4 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1179.18,1181.27 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1192.3,1193.40 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1197.3,1197.36 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1181.27,1182.88 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1182.88,1186.5 2 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1186.10,1189.5 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1193.40,1196.4 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1208.30,1210.33 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1213.3,1213.23 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1210.33,1212.4 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1215.21,1217.30 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1220.3,1220.37 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1217.30,1219.4 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1226.59,1230.60 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1291.2,1291.20 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1294.2,1295.16 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1299.2,1312.48 10 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1230.60,1235.79 3 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1235.79,1237.4 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1237.9,1244.18 3 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1244.18,1249.25 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1256.5,1257.87 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1249.25,1254.6 2 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1259.10,1260.43 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1267.5,1267.43 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1274.5,1274.34 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1286.5,1286.55 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1260.43,1262.84 2 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1262.84,1265.7 2 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1267.43,1269.84 2 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1269.84,1272.7 2 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1274.34,1276.84 2 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1280.6,1281.84 2 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1276.84,1279.7 2 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1281.84,1284.7 2 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1291.20,1293.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1295.16,1298.3 2 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1318.88,1323.32 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1378.2,1378.17 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1323.32,1325.18 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1329.3,1330.31 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1334.3,1337.28 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1341.3,1346.30 4 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1352.3,1357.34 4 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1367.3,1369.33 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1373.3,1373.19 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1325.18,1326.12 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1330.31,1333.4 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1337.28,1340.4 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1346.30,1348.38 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1348.38,1350.5 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1357.34,1359.28 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1364.4,1364.47 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1359.28,1363.5 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1369.33,1371.4 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1373.19,1376.4 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1384.39,1386.36 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1389.2,1389.40 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1393.2,1396.39 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1403.2,1404.61 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1441.2,1441.61 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1465.2,1465.63 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1386.36,1388.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1389.40,1391.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1396.39,1398.83 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1398.83,1400.4 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1404.61,1410.25 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1410.25,1415.105 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1415.105,1416.43 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1416.43,1420.30 3 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1429.6,1431.44 3 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1434.6,1434.15 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1420.30,1428.7 4 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1431.44,1433.7 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1441.61,1442.127 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1442.127,1443.35 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1443.35,1447.29 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1456.5,1458.35 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1461.5,1461.14 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1447.29,1455.6 4 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1458.35,1460.6 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1469.37,1471.34 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1474.2,1474.39 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1479.2,1480.31 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1485.2,1488.80 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1471.34,1473.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1474.39,1476.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1480.31,1481.34 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1481.34,1483.4 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1488.80,1495.47 4 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1504.3,1505.50 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1495.47,1496.38 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1499.4,1501.12 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1496.38,1498.5 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1505.50,1509.4 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1520.43,1522.39 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1522.39,1527.27 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1533.3,1534.28 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1539.3,1541.31 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1548.3,1549.33 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1553.3,1553.51 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1567.3,1567.19 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1527.27,1531.4 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1534.28,1538.4 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1541.31,1547.4 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1549.33,1551.4 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1553.51,1555.30 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1562.4,1564.52 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1555.30,1561.5 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1567.19,1569.4 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1581.51,1581.68 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1582.51,1582.99 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1583.51,1583.78 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1595.78,1600.29 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1603.2,1603.11 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1600.29,1602.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1607.58,1610.2 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1612.36,1614.2 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1618.62,1619.58 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1622.2,1622.14 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1619.58,1621.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1626.48,1629.2 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1632.52,1633.58 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1633.58,1635.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1640.50,1641.21 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1648.2,1648.18 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1641.21,1643.36 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1646.3,1646.23 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1643.36,1645.4 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1652.48,1653.35 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1656.2,1656.16 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1653.35,1655.3 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1679.30,1684.2 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1689.117,1693.11 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1700.2,1700.12 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1693.11,1694.36 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1694.36,1695.28 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1695.28,1697.5 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1700.12,1701.37 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1701.37,1702.29 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1702.29,1704.5 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1710.61,1714.37 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1717.2,1717.24 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1714.37,1716.3 1 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1721.66,1726.2 3 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1729.67,1734.2 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1737.32,1742.2 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1745.37,1750.2 3 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1753.38,1758.2 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1761.32,1766.2 3 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1769.59,1776.11 5 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1776.11,1778.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1778.8,1780.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1784.45,1789.9 4 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1792.2,1792.9 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1796.2,1800.25 4 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1789.9,1791.3 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1792.9,1795.3 2 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1805.59,1810.34 4 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1817.2,1817.17 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1810.34,1811.28 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1811.28,1815.4 3 0 +github.com/ethereum/go-ethereum/core/tx_pool.go:1821.75,1823.73 2 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1829.2,1829.14 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1823.73,1824.40 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1827.3,1827.14 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1824.40,1826.4 1 1 +github.com/ethereum/go-ethereum/core/tx_pool.go:1833.42,1835.2 1 1 +github.com/ethereum/go-ethereum/core/evm.go:39.107,47.19 2 1 +github.com/ethereum/go-ethereum/core/evm.go:52.2,52.27 1 1 +github.com/ethereum/go-ethereum/core/evm.go:55.2,55.45 1 1 +github.com/ethereum/go-ethereum/core/evm.go:58.2,69.3 1 1 +github.com/ethereum/go-ethereum/core/evm.go:47.19,49.3 1 1 +github.com/ethereum/go-ethereum/core/evm.go:49.8,51.3 1 1 +github.com/ethereum/go-ethereum/core/evm.go:52.27,54.3 1 1 +github.com/ethereum/go-ethereum/core/evm.go:55.45,57.3 1 1 +github.com/ethereum/go-ethereum/core/evm.go:73.48,78.2 1 1 +github.com/ethereum/go-ethereum/core/evm.go:81.82,86.36 2 1 +github.com/ethereum/go-ethereum/core/evm.go:86.36,88.22 1 0 +github.com/ethereum/go-ethereum/core/evm.go:91.3,91.67 1 0 +github.com/ethereum/go-ethereum/core/evm.go:95.3,98.7 3 0 +github.com/ethereum/go-ethereum/core/evm.go:110.3,110.23 1 0 +github.com/ethereum/go-ethereum/core/evm.go:88.22,90.4 1 0 +github.com/ethereum/go-ethereum/core/evm.go:91.67,93.4 1 0 +github.com/ethereum/go-ethereum/core/evm.go:98.7,100.21 2 0 +github.com/ethereum/go-ethereum/core/evm.go:103.4,106.28 4 0 +github.com/ethereum/go-ethereum/core/evm.go:100.21,101.10 1 0 +github.com/ethereum/go-ethereum/core/evm.go:106.28,108.5 1 0 +github.com/ethereum/go-ethereum/core/evm.go:116.76,118.2 1 1 +github.com/ethereum/go-ethereum/core/evm.go:121.81,135.2 7 1 +github.com/ethereum/go-ethereum/core/state_processor.go:44.109,50.2 1 1 +github.com/ethereum/go-ethereum/core/state_processor.go:59.139,70.111 2 1 +github.com/ethereum/go-ethereum/core/state_processor.go:73.2,76.42 3 1 +github.com/ethereum/go-ethereum/core/state_processor.go:90.2,92.41 2 1 +github.com/ethereum/go-ethereum/core/state_processor.go:70.111,72.3 1 1 +github.com/ethereum/go-ethereum/core/state_processor.go:76.42,78.17 2 1 +github.com/ethereum/go-ethereum/core/state_processor.go:81.3,83.17 3 1 +github.com/ethereum/go-ethereum/core/state_processor.go:86.3,87.45 2 1 +github.com/ethereum/go-ethereum/core/state_processor.go:78.17,80.4 1 1 +github.com/ethereum/go-ethereum/core/state_processor.go:83.17,85.4 1 1 +github.com/ethereum/go-ethereum/core/state_processor.go:95.270,102.16 4 1 +github.com/ethereum/go-ethereum/core/state_processor.go:107.2,108.37 2 1 +github.com/ethereum/go-ethereum/core/state_processor.go:113.2,118.21 3 1 +github.com/ethereum/go-ethereum/core/state_processor.go:123.2,127.21 3 1 +github.com/ethereum/go-ethereum/core/state_processor.go:132.2,137.21 6 1 +github.com/ethereum/go-ethereum/core/state_processor.go:102.16,104.3 1 1 +github.com/ethereum/go-ethereum/core/state_processor.go:108.37,110.3 1 1 +github.com/ethereum/go-ethereum/core/state_processor.go:110.8,112.3 1 1 +github.com/ethereum/go-ethereum/core/state_processor.go:118.21,120.3 1 1 +github.com/ethereum/go-ethereum/core/state_processor.go:120.8,122.3 1 1 +github.com/ethereum/go-ethereum/core/state_processor.go:127.21,129.3 1 1 +github.com/ethereum/go-ethereum/core/state_processor.go:144.230,146.16 2 1 +github.com/ethereum/go-ethereum/core/state_processor.go:150.2,152.113 3 1 +github.com/ethereum/go-ethereum/core/state_processor.go:146.16,148.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:42.104,49.58 2 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:49.58,52.55 2 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:55.3,63.88 3 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:66.3,68.20 2 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:71.3,71.21 1 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:74.3,74.14 1 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:80.3,80.58 1 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:52.55,54.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:63.88,65.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:68.20,70.4 1 0 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:71.21,73.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:74.14,76.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:76.9,78.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:97.103,105.2 1 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:109.56,111.33 1 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:116.2,117.32 2 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:120.2,120.32 1 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:124.2,124.74 1 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:111.33,114.3 2 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:117.32,119.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:120.32,122.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:132.56,134.33 1 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:138.2,138.34 1 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:141.2,141.34 1 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:145.2,145.34 1 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:134.33,136.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:138.34,140.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:141.34,143.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:149.52,150.18 1 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:153.2,153.38 1 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:150.18,152.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:157.51,158.49 1 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:161.2,161.36 1 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:158.49,160.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:165.48,167.2 1 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:170.43,172.2 1 1 +github.com/ethereum/go-ethereum/core/blockchain_insert.go:175.43,177.2 1 0 +github.com/ethereum/go-ethereum/core/bor_fee_log.go:28.3,42.2 1 1 +github.com/ethereum/go-ethereum/core/bor_fee_log.go:57.3,71.2 1 1 +github.com/ethereum/go-ethereum/core/bor_fee_log.go:86.3,88.30 1 1 +github.com/ethereum/go-ethereum/core/bor_fee_log.go:92.2,101.31 3 1 +github.com/ethereum/go-ethereum/core/bor_fee_log.go:106.2,115.4 1 1 +github.com/ethereum/go-ethereum/core/bor_fee_log.go:88.30,90.3 1 1 +github.com/ethereum/go-ethereum/core/bor_fee_log.go:101.31,103.3 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:36.40,36.57 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:37.40,37.62 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:38.40,38.67 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:40.41,42.2 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:44.39,50.2 5 1 +github.com/ethereum/go-ethereum/core/tx_list.go:61.36,66.2 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:69.60,71.2 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:75.50,77.27 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:80.2,80.35 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:77.27,79.3 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:86.68,90.53 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:96.2,96.20 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:99.2,99.16 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:90.53,94.3 3 1 +github.com/ethereum/go-ethereum/core/tx_list.go:96.20,98.3 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:107.87,110.22 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:113.2,113.16 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:110.22,112.3 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:116.32,118.29 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:121.2,122.15 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:118.29,120.3 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:127.87,131.33 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:137.2,137.22 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:140.2,140.16 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:131.33,132.17 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:132.17,135.4 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:137.22,139.3 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:145.61,147.31 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:151.2,154.53 3 1 +github.com/ethereum/go-ethereum/core/tx_list.go:158.2,162.20 3 1 +github.com/ethereum/go-ethereum/core/tx_list.go:165.2,165.14 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:147.31,149.3 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:154.53,157.3 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:162.20,164.3 1 0 +github.com/ethereum/go-ethereum/core/tx_list.go:170.49,173.9 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:177.2,177.37 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:183.2,186.13 3 1 +github.com/ethereum/go-ethereum/core/tx_list.go:173.9,175.3 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:177.37,178.29 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:178.29,180.9 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:196.62,198.49 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:202.2,203.80 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:208.2,210.14 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:198.49,200.3 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:203.80,207.3 3 1 +github.com/ethereum/go-ethereum/core/tx_list.go:214.33,216.2 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:218.52,220.20 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:227.2,227.16 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:220.20,222.30 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:225.3,225.38 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:222.30,224.4 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:233.52,239.2 4 1 +github.com/ethereum/go-ethereum/core/tx_list.go:243.56,246.2 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:262.37,268.2 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:272.55,274.2 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:281.90,284.16 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:306.2,307.48 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:310.2,310.37 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:313.2,313.18 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:284.16,285.61 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:289.3,301.86 7 1 +github.com/ethereum/go-ethereum/core/tx_list.go:285.61,287.4 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:301.86,303.4 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:307.48,309.3 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:310.37,312.3 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:319.63,321.2 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:332.103,334.59 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:337.2,341.59 3 1 +github.com/ethereum/go-ethereum/core/tx_list.go:345.2,345.23 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:348.2,350.14 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:359.2,360.26 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:334.59,336.3 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:341.59,343.3 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:345.23,347.3 1 0 +github.com/ethereum/go-ethereum/core/tx_list.go:350.14,352.30 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:357.3,357.60 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:352.30,353.43 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:353.43,355.5 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:357.60,357.90 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:365.56,367.2 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:372.75,375.46 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:379.2,379.14 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:382.2,382.18 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:375.46,377.3 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:379.14,380.62 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:380.62,380.91 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:392.57,394.2 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:397.28,399.2 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:402.31,404.2 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:409.47,411.2 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:415.51,417.2 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:428.36,428.58 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:429.36,429.83 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:431.41,432.37 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:433.10,434.14 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:435.9,436.15 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:437.10,438.47 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:442.54,443.22 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:450.2,450.36 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:454.2,454.26 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:443.22,445.54 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:445.54,447.4 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:450.36,452.3 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:457.41,460.2 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:462.39,469.2 6 1 +github.com/ethereum/go-ethereum/core/tx_list.go:501.51,505.2 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:508.63,509.11 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:513.2,513.26 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:509.11,511.3 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:519.43,522.64 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:526.2,526.12 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:522.64,524.3 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:531.64,537.2 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:541.81,543.22 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:553.2,553.22 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:558.2,558.34 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:543.22,545.42 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:550.3,550.8 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:545.42,548.12 3 0 +github.com/ethereum/go-ethereum/core/tx_list.go:553.22,555.3 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:565.82,567.16 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:594.2,594.25 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:600.2,600.19 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:567.16,568.96 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:568.96,571.41 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:576.4,576.30 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:571.41,573.13 2 0 +github.com/ethereum/go-ethereum/core/tx_list.go:577.9,578.33 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:583.4,584.41 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:589.4,590.25 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:578.33,580.10 1 0 +github.com/ethereum/go-ethereum/core/tx_list.go:584.41,586.13 2 0 +github.com/ethereum/go-ethereum/core/tx_list.go:594.25,595.27 1 0 +github.com/ethereum/go-ethereum/core/tx_list.go:598.3,598.20 1 0 +github.com/ethereum/go-ethereum/core/tx_list.go:595.27,597.4 1 0 +github.com/ethereum/go-ethereum/core/tx_list.go:604.33,610.77 6 1 +github.com/ethereum/go-ethereum/core/tx_list.go:614.2,623.37 4 1 +github.com/ethereum/go-ethereum/core/tx_list.go:626.2,627.39 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:610.77,613.3 2 1 +github.com/ethereum/go-ethereum/core/tx_list.go:623.37,625.3 1 1 +github.com/ethereum/go-ethereum/core/tx_list.go:632.53,635.2 2 1 +github.com/ethereum/go-ethereum/core/bor_blockchain.go:10.76,11.54 1 1 +github.com/ethereum/go-ethereum/core/bor_blockchain.go:16.2,17.19 2 1 +github.com/ethereum/go-ethereum/core/bor_blockchain.go:22.2,23.20 2 1 +github.com/ethereum/go-ethereum/core/bor_blockchain.go:28.2,29.16 2 0 +github.com/ethereum/go-ethereum/core/bor_blockchain.go:11.54,13.3 1 0 +github.com/ethereum/go-ethereum/core/bor_blockchain.go:17.19,19.3 1 0 +github.com/ethereum/go-ethereum/core/bor_blockchain.go:23.20,25.3 1 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:40.52,40.74 1 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:41.52,41.66 1 0 +github.com/ethereum/go-ethereum/core/tx_journal.go:51.43,55.2 1 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:59.78,61.57 1 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:65.2,66.16 2 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:69.2,73.15 3 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:76.2,82.44 3 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:90.2,94.6 2 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:114.2,116.16 2 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:61.57,63.3 1 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:66.16,68.3 1 0 +github.com/ethereum/go-ethereum/core/tx_journal.go:73.15,73.39 1 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:82.44,83.32 1 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:83.32,84.18 1 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:84.18,87.5 2 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:94.6,97.42 2 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:107.3,109.52 2 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:97.42,98.21 1 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:101.4,101.23 1 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:104.4,104.9 1 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:98.21,100.5 1 0 +github.com/ethereum/go-ethereum/core/tx_journal.go:101.23,103.5 1 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:109.52,112.4 2 0 +github.com/ethereum/go-ethereum/core/tx_journal.go:120.63,121.27 1 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:124.2,124.55 1 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:127.2,127.12 1 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:121.27,123.3 1 0 +github.com/ethereum/go-ethereum/core/tx_journal.go:124.55,126.3 1 0 +github.com/ethereum/go-ethereum/core/tx_journal.go:132.83,134.27 1 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:141.2,142.16 2 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:145.2,146.26 2 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:155.2,158.68 2 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:161.2,162.16 2 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:165.2,168.12 3 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:134.27,135.48 1 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:138.3,138.23 1 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:135.48,137.4 1 0 +github.com/ethereum/go-ethereum/core/tx_journal.go:142.16,144.3 1 0 +github.com/ethereum/go-ethereum/core/tx_journal.go:146.26,147.26 1 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:153.3,153.24 1 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:147.26,148.53 1 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:148.53,151.5 2 0 +github.com/ethereum/go-ethereum/core/tx_journal.go:158.68,160.3 1 0 +github.com/ethereum/go-ethereum/core/tx_journal.go:162.16,164.3 1 0 +github.com/ethereum/go-ethereum/core/tx_journal.go:172.41,175.27 2 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:179.2,179.12 1 1 +github.com/ethereum/go-ethereum/core/tx_journal.go:175.27,178.3 2 1 +github.com/ethereum/go-ethereum/core/tx_noncer.go:36.52,41.2 1 1 +github.com/ethereum/go-ethereum/core/tx_noncer.go:45.54,51.36 3 1 +github.com/ethereum/go-ethereum/core/tx_noncer.go:54.2,54.25 1 1 +github.com/ethereum/go-ethereum/core/tx_noncer.go:51.36,53.3 1 1 +github.com/ethereum/go-ethereum/core/tx_noncer.go:59.61,64.2 3 1 +github.com/ethereum/go-ethereum/core/tx_noncer.go:68.68,72.36 3 1 +github.com/ethereum/go-ethereum/core/tx_noncer.go:75.2,75.31 1 1 +github.com/ethereum/go-ethereum/core/tx_noncer.go:78.2,78.26 1 1 +github.com/ethereum/go-ethereum/core/tx_noncer.go:72.36,74.3 1 0 +github.com/ethereum/go-ethereum/core/tx_noncer.go:75.31,77.3 1 0 +github.com/ethereum/go-ethereum/core/tx_noncer.go:82.60,87.2 3 1 +github.com/ethereum/go-ethereum/core/bloom_indexer.go:49.78,57.2 3 0 +github.com/ethereum/go-ethereum/core/bloom_indexer.go:61.102,65.2 3 0 +github.com/ethereum/go-ethereum/core/bloom_indexer.go:69.81,73.2 3 0 +github.com/ethereum/go-ethereum/core/bloom_indexer.go:77.39,79.44 2 0 +github.com/ethereum/go-ethereum/core/bloom_indexer.go:86.2,86.22 1 0 +github.com/ethereum/go-ethereum/core/bloom_indexer.go:79.44,81.17 2 0 +github.com/ethereum/go-ethereum/core/bloom_indexer.go:84.3,84.87 1 0 +github.com/ethereum/go-ethereum/core/bloom_indexer.go:81.17,83.4 1 0 +github.com/ethereum/go-ethereum/core/bloom_indexer.go:90.54,92.2 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis_account.go:18.55,28.22 4 1 +github.com/ethereum/go-ethereum/core/gen_genesis_account.go:34.2,37.27 4 1 +github.com/ethereum/go-ethereum/core/gen_genesis_account.go:28.22,30.31 2 1 +github.com/ethereum/go-ethereum/core/gen_genesis_account.go:30.31,32.4 1 1 +github.com/ethereum/go-ethereum/core/gen_genesis_account.go:41.60,50.52 3 1 +github.com/ethereum/go-ethereum/core/gen_genesis_account.go:53.2,53.21 1 1 +github.com/ethereum/go-ethereum/core/gen_genesis_account.go:56.2,56.24 1 1 +github.com/ethereum/go-ethereum/core/gen_genesis_account.go:62.2,62.24 1 1 +github.com/ethereum/go-ethereum/core/gen_genesis_account.go:65.2,66.22 2 1 +github.com/ethereum/go-ethereum/core/gen_genesis_account.go:69.2,69.27 1 1 +github.com/ethereum/go-ethereum/core/gen_genesis_account.go:72.2,72.12 1 1 +github.com/ethereum/go-ethereum/core/gen_genesis_account.go:50.52,52.3 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis_account.go:53.21,55.3 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis_account.go:56.24,58.33 2 1 +github.com/ethereum/go-ethereum/core/gen_genesis_account.go:58.33,60.4 1 1 +github.com/ethereum/go-ethereum/core/gen_genesis_account.go:62.24,64.3 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis_account.go:66.22,68.3 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis_account.go:69.27,71.3 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:75.58,77.49 2 1 +github.com/ethereum/go-ethereum/core/genesis.go:80.2,81.25 2 1 +github.com/ethereum/go-ethereum/core/genesis.go:84.2,84.12 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:77.49,79.3 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:81.25,83.3 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:89.71,91.16 2 1 +github.com/ethereum/go-ethereum/core/genesis.go:94.2,94.33 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:102.2,103.16 2 1 +github.com/ethereum/go-ethereum/core/genesis.go:106.2,107.16 2 1 +github.com/ethereum/go-ethereum/core/genesis.go:110.2,110.18 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:91.16,93.3 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:94.33,98.43 4 1 +github.com/ethereum/go-ethereum/core/genesis.go:98.43,100.4 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:103.16,105.3 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:107.16,109.3 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:115.80,117.16 2 1 +github.com/ethereum/go-ethereum/core/genesis.go:120.2,121.12 2 1 +github.com/ethereum/go-ethereum/core/genesis.go:117.16,119.3 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:126.68,129.20 3 0 +github.com/ethereum/go-ethereum/core/genesis.go:158.2,159.12 2 0 +github.com/ethereum/go-ethereum/core/genesis.go:129.20,130.51 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:130.51,132.4 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:133.8,140.15 2 0 +github.com/ethereum/go-ethereum/core/genesis.go:152.3,152.21 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:141.34,142.35 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:143.34,144.42 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:145.34,146.42 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:147.33,148.41 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:149.34,150.42 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:152.21,154.4 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:154.9,156.4 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:196.56,198.20 2 1 +github.com/ethereum/go-ethereum/core/genesis.go:201.2,202.56 2 1 +github.com/ethereum/go-ethereum/core/genesis.go:206.2,206.12 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:198.20,200.3 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:202.56,205.3 2 0 +github.com/ethereum/go-ethereum/core/genesis.go:209.52,211.2 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:219.47,221.2 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:236.103,238.2 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:240.179,241.45 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:245.2,246.31 2 1 +github.com/ethereum/go-ethereum/core/genesis.go:261.2,262.93 2 1 +github.com/ethereum/go-ethereum/core/genesis.go:278.2,278.20 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:285.2,286.33 2 1 +github.com/ethereum/go-ethereum/core/genesis.go:289.2,289.44 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:292.2,292.54 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:296.2,297.22 2 1 +github.com/ethereum/go-ethereum/core/genesis.go:307.2,307.59 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:318.2,319.19 2 1 +github.com/ethereum/go-ethereum/core/genesis.go:322.2,323.65 2 1 +github.com/ethereum/go-ethereum/core/genesis.go:327.2,328.28 2 1 +github.com/ethereum/go-ethereum/core/genesis.go:241.45,243.3 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:246.31,247.21 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:253.3,254.17 2 1 +github.com/ethereum/go-ethereum/core/genesis.go:257.3,257.43 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:247.21,250.4 2 1 +github.com/ethereum/go-ethereum/core/genesis.go:250.9,252.4 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:254.17,256.4 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:262.93,263.21 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:267.3,268.21 2 0 +github.com/ethereum/go-ethereum/core/genesis.go:271.3,272.17 2 0 +github.com/ethereum/go-ethereum/core/genesis.go:275.3,275.43 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:263.21,265.4 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:268.21,270.4 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:272.17,274.4 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:278.20,280.21 2 1 +github.com/ethereum/go-ethereum/core/genesis.go:280.21,282.4 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:286.33,288.3 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:289.44,291.3 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:292.54,294.3 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:297.22,301.3 3 0 +github.com/ethereum/go-ethereum/core/genesis.go:307.59,309.34 2 1 +github.com/ethereum/go-ethereum/core/genesis.go:312.3,312.45 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:309.34,311.4 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:312.45,314.4 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:319.19,321.3 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:323.65,325.3 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:331.74,332.9 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:333.16,334.18 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:335.42,336.35 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:337.42,338.35 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:339.42,340.35 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:341.42,342.35 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:343.41,344.34 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:345.41,346.34 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:347.45,348.38 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:349.39,350.42 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:351.10,352.41 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:358.59,359.15 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:362.2,363.16 2 1 +github.com/ethereum/go-ethereum/core/genesis.go:366.2,380.21 2 1 +github.com/ethereum/go-ethereum/core/genesis.go:383.2,383.57 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:386.2,386.55 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:393.2,393.68 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:359.15,361.3 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:363.16,364.13 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:380.21,382.3 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:383.57,385.3 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:386.55,387.23 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:387.23,389.4 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:389.9,391.4 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:398.67,400.32 2 1 +github.com/ethereum/go-ethereum/core/genesis.go:403.2,404.19 2 1 +github.com/ethereum/go-ethereum/core/genesis.go:407.2,407.54 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:410.2,410.53 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:413.2,413.56 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:416.2,424.19 9 1 +github.com/ethereum/go-ethereum/core/genesis.go:400.32,402.3 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:404.19,406.3 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:407.54,409.3 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:410.53,412.3 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:413.56,415.3 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:429.62,431.16 2 1 +github.com/ethereum/go-ethereum/core/genesis.go:434.2,434.14 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:431.16,432.13 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:438.100,444.2 2 0 +github.com/ethereum/go-ethereum/core/genesis.go:447.37,456.2 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:459.44,468.2 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:471.44,480.2 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:483.43,492.2 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:495.43,506.2 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:509.47,520.2 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:523.44,533.2 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:535.41,538.58 3 0 +github.com/ethereum/go-ethereum/core/genesis.go:541.2,541.10 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:538.58,539.13 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:545.92,573.2 3 0 +github.com/ethereum/go-ethereum/core/genesis.go:575.47,577.77 2 1 +github.com/ethereum/go-ethereum/core/genesis.go:580.2,581.28 2 1 +github.com/ethereum/go-ethereum/core/genesis.go:584.2,584.11 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:577.77,578.13 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:581.28,583.3 1 1 +github.com/ethereum/go-ethereum/core/genesis.go:587.49,589.16 2 0 +github.com/ethereum/go-ethereum/core/genesis.go:592.2,596.16 5 0 +github.com/ethereum/go-ethereum/core/genesis.go:599.2,599.11 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:589.16,590.87 1 0 +github.com/ethereum/go-ethereum/core/genesis.go:596.16,597.88 1 0 +github.com/ethereum/go-ethereum/core/forkchoice.go:59.99,62.16 2 1 +github.com/ethereum/go-ethereum/core/forkchoice.go:65.2,69.3 1 1 +github.com/ethereum/go-ethereum/core/forkchoice.go:62.16,64.3 1 0 +github.com/ethereum/go-ethereum/core/forkchoice.go:77.93,82.39 2 1 +github.com/ethereum/go-ethereum/core/forkchoice.go:88.2,88.91 1 1 +github.com/ethereum/go-ethereum/core/forkchoice.go:94.2,95.42 2 1 +github.com/ethereum/go-ethereum/core/forkchoice.go:107.2,107.19 1 1 +github.com/ethereum/go-ethereum/core/forkchoice.go:82.39,84.3 1 0 +github.com/ethereum/go-ethereum/core/forkchoice.go:88.91,90.3 1 1 +github.com/ethereum/go-ethereum/core/forkchoice.go:95.42,97.26 2 1 +github.com/ethereum/go-ethereum/core/forkchoice.go:97.26,99.4 1 0 +github.com/ethereum/go-ethereum/core/forkchoice.go:99.9,99.34 1 1 +github.com/ethereum/go-ethereum/core/forkchoice.go:99.34,101.25 2 1 +github.com/ethereum/go-ethereum/core/forkchoice.go:104.4,104.74 1 1 +github.com/ethereum/go-ethereum/core/forkchoice.go:101.25,103.5 1 0 +github.com/ethereum/go-ethereum/core/state_prefetcher.go:39.111,45.2 1 1 +github.com/ethereum/go-ethereum/core/state_prefetcher.go:50.114,60.42 3 1 +github.com/ethereum/go-ethereum/core/state_prefetcher.go:80.2,80.15 1 1 +github.com/ethereum/go-ethereum/core/state_prefetcher.go:60.42,62.60 1 1 +github.com/ethereum/go-ethereum/core/state_prefetcher.go:66.3,67.17 2 1 +github.com/ethereum/go-ethereum/core/state_prefetcher.go:70.3,71.91 2 1 +github.com/ethereum/go-ethereum/core/state_prefetcher.go:75.3,75.17 1 1 +github.com/ethereum/go-ethereum/core/state_prefetcher.go:62.60,64.4 1 1 +github.com/ethereum/go-ethereum/core/state_prefetcher.go:67.17,69.4 1 0 +github.com/ethereum/go-ethereum/core/state_prefetcher.go:71.91,73.4 1 1 +github.com/ethereum/go-ethereum/core/state_prefetcher.go:75.17,77.4 1 1 +github.com/ethereum/go-ethereum/core/state_prefetcher.go:80.15,82.3 1 1 +github.com/ethereum/go-ethereum/core/state_prefetcher.go:88.156,94.2 3 1 +github.com/ethereum/go-ethereum/core/state_transition.go:92.47,94.2 1 0 +github.com/ethereum/go-ethereum/core/state_transition.go:97.46,97.74 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:101.48,102.23 1 0 +github.com/ethereum/go-ethereum/core/state_transition.go:105.2,105.44 1 0 +github.com/ethereum/go-ethereum/core/state_transition.go:102.23,104.3 1 0 +github.com/ethereum/go-ethereum/core/state_transition.go:110.48,111.43 1 0 +github.com/ethereum/go-ethereum/core/state_transition.go:114.2,114.44 1 0 +github.com/ethereum/go-ethereum/core/state_transition.go:111.43,113.3 1 0 +github.com/ethereum/go-ethereum/core/state_transition.go:118.131,121.39 2 1 +github.com/ethereum/go-ethereum/core/state_transition.go:127.2,127.19 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:151.2,151.23 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:155.2,155.17 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:121.39,123.3 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:123.8,125.3 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:127.19,130.28 2 1 +github.com/ethereum/go-ethereum/core/state_transition.go:136.3,137.16 2 1 +github.com/ethereum/go-ethereum/core/state_transition.go:140.3,140.43 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:143.3,146.52 3 1 +github.com/ethereum/go-ethereum/core/state_transition.go:149.3,149.34 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:130.28,131.16 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:131.16,133.5 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:137.16,139.4 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:140.43,142.4 1 0 +github.com/ethereum/go-ethereum/core/state_transition.go:146.52,148.4 1 0 +github.com/ethereum/go-ethereum/core/state_transition.go:151.23,154.3 2 1 +github.com/ethereum/go-ethereum/core/state_transition.go:159.81,171.2 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:180.84,182.2 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:185.48,186.65 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:189.2,189.21 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:186.65,188.3 1 0 +github.com/ethereum/go-ethereum/core/state_transition.go:192.43,196.25 4 1 +github.com/ethereum/go-ethereum/core/state_transition.go:201.2,201.88 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:204.2,204.51 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:207.2,211.12 4 1 +github.com/ethereum/go-ethereum/core/state_transition.go:196.25,200.3 3 1 +github.com/ethereum/go-ethereum/core/state_transition.go:201.88,203.3 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:204.51,206.3 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:214.45,216.22 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:236.2,236.63 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:259.2,259.20 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:216.22,219.53 2 1 +github.com/ethereum/go-ethereum/core/state_transition.go:230.3,230.112 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:219.53,222.4 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:222.9,222.32 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:222.32,225.4 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:225.9,225.33 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:225.33,228.4 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:230.112,233.4 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:236.63,238.89 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:238.89,239.43 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:243.4,243.43 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:247.4,247.42 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:253.4,253.52 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:239.43,242.5 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:243.43,246.5 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:247.42,250.5 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:253.52,256.5 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:275.69,290.38 3 1 +github.com/ethereum/go-ethereum/core/state_transition.go:293.2,302.16 8 1 +github.com/ethereum/go-ethereum/core/state_transition.go:305.2,305.18 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:308.2,311.94 2 1 +github.com/ethereum/go-ethereum/core/state_transition.go:316.2,316.115 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:319.2,323.22 2 1 +github.com/ethereum/go-ethereum/core/state_transition.go:331.2,331.13 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:338.2,339.12 2 1 +github.com/ethereum/go-ethereum/core/state_transition.go:342.2,343.12 2 1 +github.com/ethereum/go-ethereum/core/state_transition.go:348.2,371.8 5 1 +github.com/ethereum/go-ethereum/core/state_transition.go:290.38,292.3 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:302.16,304.3 1 0 +github.com/ethereum/go-ethereum/core/state_transition.go:305.18,307.3 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:311.94,313.3 1 0 +github.com/ethereum/go-ethereum/core/state_transition.go:316.115,318.3 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:323.22,325.3 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:325.8,329.3 2 1 +github.com/ethereum/go-ethereum/core/state_transition.go:331.13,334.3 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:334.8,337.3 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:339.12,341.3 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:343.12,347.3 3 1 +github.com/ethereum/go-ethereum/core/state_transition.go:374.61,377.35 2 1 +github.com/ethereum/go-ethereum/core/state_transition.go:380.2,388.22 4 1 +github.com/ethereum/go-ethereum/core/state_transition.go:377.35,379.3 1 1 +github.com/ethereum/go-ethereum/core/state_transition.go:392.45,394.2 1 1 +github.com/ethereum/go-ethereum/core/tx_cacher.go:49.53,54.31 2 1 +github.com/ethereum/go-ethereum/core/tx_cacher.go:57.2,57.15 1 1 +github.com/ethereum/go-ethereum/core/tx_cacher.go:54.31,56.3 1 1 +github.com/ethereum/go-ethereum/core/tx_cacher.go:62.39,63.33 1 1 +github.com/ethereum/go-ethereum/core/tx_cacher.go:63.33,64.48 1 1 +github.com/ethereum/go-ethereum/core/tx_cacher.go:64.48,66.4 1 1 +github.com/ethereum/go-ethereum/core/tx_cacher.go:73.86,75.19 1 1 +github.com/ethereum/go-ethereum/core/tx_cacher.go:79.2,80.24 2 1 +github.com/ethereum/go-ethereum/core/tx_cacher.go:83.2,83.29 1 1 +github.com/ethereum/go-ethereum/core/tx_cacher.go:75.19,77.3 1 1 +github.com/ethereum/go-ethereum/core/tx_cacher.go:80.24,82.3 1 1 +github.com/ethereum/go-ethereum/core/tx_cacher.go:83.29,89.3 1 1 +github.com/ethereum/go-ethereum/core/tx_cacher.go:95.93,97.31 2 1 +github.com/ethereum/go-ethereum/core/tx_cacher.go:100.2,101.31 2 1 +github.com/ethereum/go-ethereum/core/tx_cacher.go:104.2,104.29 1 1 +github.com/ethereum/go-ethereum/core/tx_cacher.go:97.31,99.3 1 1 +github.com/ethereum/go-ethereum/core/tx_cacher.go:101.31,103.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:223.235,224.24 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:227.2,266.16 15 1 +github.com/ethereum/go-ethereum/core/blockchain.go:269.2,270.28 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:274.2,281.16 5 1 +github.com/ethereum/go-ethereum/core/blockchain.go:290.2,290.43 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:295.2,296.75 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:324.2,324.63 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:360.2,360.30 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:376.2,376.38 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:392.2,396.26 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:404.2,404.43 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:416.2,416.16 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:224.24,226.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:266.16,268.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:270.28,272.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:281.16,286.17 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:286.17,288.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:290.43,292.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:296.75,301.39 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:304.3,304.34 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:301.39,303.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:304.34,308.18 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:312.4,312.21 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:308.18,310.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:312.21,314.5 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:315.9,317.89 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:317.89,319.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:324.63,333.105 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:340.3,341.59 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:347.3,347.17 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:333.105,336.4 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:341.59,343.47 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:343.47,345.5 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:347.17,349.42 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:349.42,351.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:360.30,361.56 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:361.56,365.71 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:365.71,367.66 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:370.5,370.72 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:367.66,369.6 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:376.38,384.98 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:388.3,388.148 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:384.98,387.4 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:396.26,401.3 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:404.43,405.54 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:409.3,411.13 3 0 +github.com/ethereum/go-ethereum/core/blockchain.go:405.54,408.4 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:411.13,414.4 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:423.36,425.138 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:430.2,430.13 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:425.138,426.22 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:426.22,428.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:435.45,438.29 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:444.2,445.25 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:451.2,456.70 4 1 +github.com/ethereum/go-ethereum/core/blockchain.go:461.2,467.73 4 1 +github.com/ethereum/go-ethereum/core/blockchain.go:474.2,483.61 8 1 +github.com/ethereum/go-ethereum/core/blockchain.go:486.2,486.12 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:438.29,442.3 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:445.25,449.3 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:456.70,457.56 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:457.56,459.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:467.73,468.53 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:468.53,471.4 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:483.61,485.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:492.50,495.2 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:505.101,506.27 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:509.2,519.81 5 1 +github.com/ethereum/go-ethereum/core/blockchain.go:612.2,612.71 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:636.2,636.12 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:647.2,655.39 8 1 +github.com/ethereum/go-ethereum/core/blockchain.go:506.27,508.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:519.81,523.115 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:585.3,585.130 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:600.3,606.22 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:609.3,609.20 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:523.115,525.27 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:575.4,582.58 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:525.27,528.5 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:528.10,534.9 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:534.9,536.79 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:539.6,539.87 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:554.6,554.53 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:571.6,572.87 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:536.79,538.7 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:539.87,541.60 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:541.60,543.25 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:547.8,548.38 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:543.25,545.17 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:549.13,552.8 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:554.53,555.40 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:568.7,569.12 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:555.40,561.48 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:561.48,562.81 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:565.9,565.55 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:562.81,564.10 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:585.130,588.31 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:591.4,598.66 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:588.31,590.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:606.22,608.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:612.71,615.22 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:615.22,618.50 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:622.4,622.38 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:618.50,620.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:623.9,631.4 4 1 +github.com/ethereum/go-ethereum/core/blockchain.go:636.12,637.74 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:637.74,639.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:640.8,645.3 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:660.66,663.18 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:666.2,666.80 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:671.2,671.27 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:674.2,680.21 4 0 +github.com/ethereum/go-ethereum/core/blockchain.go:683.2,684.12 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:663.18,665.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:666.80,668.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:671.27,673.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:680.21,682.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:688.37,690.2 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:694.73,696.38 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:699.2,699.27 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:702.2,708.38 5 0 +github.com/ethereum/go-ethereum/core/blockchain.go:711.2,721.12 9 0 +github.com/ethereum/go-ethereum/core/blockchain.go:696.38,698.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:699.27,701.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:708.38,710.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:725.49,727.2 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:730.77,731.27 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:734.2,736.18 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:739.2,742.36 3 0 +github.com/ethereum/go-ethereum/core/blockchain.go:755.2,755.12 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:731.27,733.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:736.18,738.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:742.36,744.19 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:747.3,747.44 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:750.3,750.47 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:744.19,746.4 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:747.44,749.4 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:750.47,753.4 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:764.58,774.38 7 1 +github.com/ethereum/go-ethereum/core/blockchain.go:778.2,784.49 5 1 +github.com/ethereum/go-ethereum/core/blockchain.go:774.38,776.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:789.30,790.52 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:795.2,812.21 7 1 +github.com/ethereum/go-ethereum/core/blockchain.go:824.2,824.39 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:852.2,852.43 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:856.2,856.32 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:790.52,792.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:812.21,814.77 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:814.77,816.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:824.39,827.60 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:837.3,837.34 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:843.3,843.26 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:846.3,846.42 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:827.60,828.64 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:828.64,832.67 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:832.67,834.6 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:837.34,839.61 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:839.61,841.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:843.26,845.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:846.42,848.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:852.43,855.3 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:862.36,864.2 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:867.44,869.2 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:871.42,873.46 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:878.2,878.21 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:873.46,874.56 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:874.56,876.4 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:878.21,879.42 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:883.3,883.25 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:879.42,881.4 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:883.25,885.4 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:900.132,911.39 4 1 +github.com/ethereum/go-ethereum/core/blockchain.go:927.2,935.45 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:962.2,962.92 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1074.2,1074.89 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1129.2,1129.28 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1138.2,1138.72 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1150.2,1150.25 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1159.2,1165.23 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1168.2,1170.15 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:911.39,912.13 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:920.3,920.48 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:912.13,913.122 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:913.122,918.5 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:920.48,922.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:922.9,924.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:935.45,936.28 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:939.3,942.56 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:955.3,955.15 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:936.28,938.4 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:942.56,944.18 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:950.4,953.15 4 1 +github.com/ethereum/go-ethereum/core/blockchain.go:944.18,947.5 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:947.10,947.21 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:947.21,949.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:962.92,967.29 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:983.3,983.51 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:988.3,989.36 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:994.3,997.17 4 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1013.3,1014.36 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1036.3,1036.38 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1040.3,1041.49 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1051.3,1053.36 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1062.3,1062.93 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1067.3,1067.39 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1070.3,1070.16 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:967.29,968.50 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:968.50,973.19 5 1 +github.com/ethereum/go-ethereum/core/blockchain.go:977.5,977.42 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:973.19,976.6 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:983.51,985.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:989.36,991.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:997.17,1000.4 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1014.36,1015.119 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1020.4,1022.74 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1015.119,1017.5 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1017.10,1017.50 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1017.50,1019.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1022.74,1024.40 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1031.5,1031.18 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1024.40,1026.62 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1029.6,1029.19 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1026.62,1028.7 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1036.38,1038.4 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1041.49,1044.68 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1047.4,1047.34 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1044.68,1046.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1053.36,1055.30 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1058.4,1059.74 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1055.30,1056.13 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1062.93,1063.48 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1063.48,1065.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1067.39,1069.4 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1074.89,1077.36 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1118.3,1118.28 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1124.3,1125.16 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1077.36,1079.26 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1083.4,1083.54 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1086.4,1086.26 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1099.4,1106.49 4 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1113.4,1113.21 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1079.26,1081.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1083.54,1085.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1086.26,1088.53 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1088.53,1090.14 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1091.11,1096.6 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1106.49,1107.41 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1110.5,1111.18 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1107.41,1109.6 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1118.28,1120.40 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1120.40,1122.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1129.28,1130.73 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1130.73,1131.38 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1134.4,1134.17 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1131.38,1133.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1138.72,1142.56 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1142.56,1143.65 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1143.65,1145.5 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1145.10,1147.5 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1150.25,1151.64 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1151.64,1152.38 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1155.4,1155.17 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1152.38,1154.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1165.23,1167.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1178.91,1179.24 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1183.2,1186.38 4 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1189.2,1189.12 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1179.24,1181.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1186.38,1188.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1194.65,1196.42 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1201.2,1202.12 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1196.42,1197.50 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1197.50,1199.4 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1207.153,1210.16 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1214.2,1235.24 8 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1258.2,1259.43 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1263.2,1264.16 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1267.2,1270.38 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1319.2,1319.27 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1210.16,1212.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1235.24,1236.51 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1240.3,1240.33 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1236.51,1238.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1240.33,1255.4 4 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1259.43,1261.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1264.16,1266.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1270.38,1272.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1272.8,1277.60 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1277.60,1283.43 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1287.4,1290.48 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1309.4,1309.27 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1283.43,1285.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1290.48,1294.22 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1294.22,1296.6 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1296.11,1299.89 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1303.6,1305.19 3 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1299.89,1301.7 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1309.27,1311.33 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1315.5,1315.43 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1311.33,1313.11 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1323.184,1324.27 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1327.2,1329.77 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1324.27,1326.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1335.184,1337.91 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1340.2,1342.16 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1345.2,1345.11 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1357.2,1357.27 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1360.2,1362.27 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1394.2,1394.20 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1337.91,1339.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1342.16,1344.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1345.11,1347.48 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1352.3,1352.23 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1347.48,1348.56 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1348.56,1350.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1353.8,1355.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1357.27,1359.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1362.27,1364.20 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1369.3,1369.29 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1378.3,1378.20 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1364.20,1366.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1369.29,1371.4 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1378.20,1381.42 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1381.42,1383.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1386.8,1393.3 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1403.64,1405.24 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1408.2,1408.46 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1412.2,1413.12 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1405.24,1407.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1408.46,1411.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1420.68,1422.21 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1425.2,1429.34 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1444.2,1444.27 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1447.2,1448.42 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1422.21,1424.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1429.34,1431.83 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1431.83,1441.4 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1444.27,1446.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1459.95,1461.24 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1466.2,1473.15 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1479.2,1482.30 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1486.2,1494.27 5 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1543.2,1543.9 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1580.2,1581.15 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1592.2,1594.22 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1607.2,1607.92 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1801.2,1805.62 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1818.2,1820.22 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1461.24,1463.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1473.15,1474.71 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1474.71,1476.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1482.30,1485.3 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1494.27,1504.45 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1532.3,1532.45 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1504.45,1506.18 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1509.4,1509.13 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1519.4,1522.26 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1506.18,1508.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1509.13,1515.106 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1515.106,1516.11 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1532.45,1534.52 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1537.4,1539.26 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1534.52,1536.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1545.51,1546.14 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1556.151,1557.87 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1564.3,1568.23 3 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1573.52,1577.23 4 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1546.14,1550.4 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1550.9,1554.4 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1557.87,1559.51 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1562.4,1562.26 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1559.51,1561.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1581.15,1586.25 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1586.25,1588.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1594.22,1596.28 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1600.3,1604.30 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1596.28,1599.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1607.92,1609.25 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1614.3,1614.30 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1624.3,1624.28 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1659.3,1661.20 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1664.3,1665.17 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1670.3,1676.42 4 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1692.3,1694.17 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1700.3,1700.41 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1706.3,1720.87 12 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1725.3,1735.15 7 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1741.3,1742.17 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1746.3,1760.15 10 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1765.3,1765.28 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1772.3,1772.17 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1609.25,1611.9 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1614.30,1617.4 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1624.28,1626.36 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1629.4,1641.38 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1647.4,1647.52 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1650.4,1655.12 3 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1626.36,1628.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1641.38,1643.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1643.10,1646.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1647.52,1649.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1661.20,1663.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1665.17,1667.4 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1676.42,1677.65 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1677.65,1680.98 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1680.98,1684.43 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1684.43,1686.7 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1694.17,1698.4 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1700.41,1702.4 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1720.87,1724.4 3 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1735.15,1738.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1738.9,1740.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1742.17,1744.4 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1760.15,1762.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1765.28,1767.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1767.9,1769.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1773.20,1782.25 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1784.19,1788.26 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1790.11,1796.26 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1805.62,1806.50 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1809.3,1811.94 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1806.50,1808.4 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1811.94,1812.51 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1815.4,1815.18 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1812.51,1814.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1830.92,1841.92 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1893.2,1894.16 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1897.2,1897.12 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1903.2,1908.49 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1914.2,1914.19 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1918.2,1922.40 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1946.2,1946.21 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1950.2,1950.15 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1841.92,1843.65 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1870.3,1870.22 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1873.3,1875.52 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1885.3,1885.20 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1843.65,1845.60 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1854.4,1854.60 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1845.60,1852.13 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1854.60,1868.5 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1870.22,1872.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1875.52,1877.69 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1880.4,1883.26 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1877.69,1879.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1894.16,1896.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1897.12,1901.3 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1908.49,1913.3 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1914.19,1916.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1922.40,1932.51 4 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1932.51,1934.65 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1937.4,1940.26 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1934.65,1936.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1940.26,1943.5 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1946.21,1949.3 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:1956.66,1963.51 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1974.2,1974.19 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1978.2,1978.40 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1994.2,1994.12 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1963.51,1969.25 4 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1969.25,1972.4 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1974.19,1976.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1978.40,1980.25 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1984.3,1985.13 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1990.3,1990.74 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1980.25,1983.4 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1985.13,1987.4 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1987.9,1989.4 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:1990.74,1992.4 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2000.80,2002.19 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2005.2,2009.23 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2013.2,2014.35 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2023.2,2023.13 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2002.19,2004.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2009.23,2011.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2014.35,2015.36 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2015.36,2017.15 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2020.4,2020.27 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2017.15,2019.5 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2027.64,2029.13 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2038.2,2038.12 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2029.13,2030.39 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2030.39,2032.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2033.8,2034.34 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2034.34,2036.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2046.68,2059.49 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2077.2,2077.21 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2080.2,2080.21 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2085.2,2085.6 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2113.2,2113.44 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2144.2,2144.42 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2158.2,2159.62 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2163.2,2164.29 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2171.2,2171.45 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2178.2,2178.26 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2181.2,2181.26 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2184.2,2184.23 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2189.2,2189.12 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2059.49,2061.144 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2061.144,2067.21 4 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2067.21,2069.5 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2071.8,2073.144 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2073.144,2075.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2077.21,2079.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2080.21,2082.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2085.6,2087.41 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2092.3,2097.20 4 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2100.3,2104.22 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2107.3,2108.22 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2087.41,2089.9 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2097.20,2099.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2104.22,2106.4 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2108.22,2110.4 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2113.44,2123.25 4 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2127.3,2131.26 4 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2123.25,2126.4 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2132.8,2132.30 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2132.30,2137.3 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2137.8,2141.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2144.42,2150.20 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2154.3,2154.61 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2150.20,2152.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2159.62,2161.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2164.29,2166.30 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2169.3,2169.45 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2166.30,2167.9 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2171.45,2173.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2178.26,2180.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2181.26,2183.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2184.23,2185.43 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2185.43,2187.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2197.75,2198.27 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2201.2,2204.12 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2198.27,2200.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2211.61,2212.27 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2215.2,2219.51 3 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2224.2,2229.19 4 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2232.2,2240.88 3 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2243.2,2244.12 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2212.27,2214.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2219.51,2220.59 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2220.59,2222.4 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2229.19,2231.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2240.88,2242.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2247.44,2251.6 4 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2251.6,2252.10 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2253.24,2254.25 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2255.18,2256.10 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2263.69,2267.36 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2272.2,2272.21 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2275.2,2280.43 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2287.2,2287.44 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2292.2,2292.35 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2296.2,2296.42 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2299.2,2299.14 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2267.36,2269.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2272.21,2274.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2280.43,2282.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2287.44,2289.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2289.8,2289.74 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2289.74,2291.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2292.35,2294.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2296.42,2298.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2312.56,2319.18 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2328.2,2328.69 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2368.2,2373.16 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2376.2,2378.6 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2319.18,2321.59 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2324.3,2324.58 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2321.59,2323.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2328.69,2329.16 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2333.3,2333.18 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2344.3,2344.55 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2358.3,2358.38 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2329.16,2329.38 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2333.18,2334.56 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2341.4,2341.10 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2334.56,2337.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2337.10,2340.5 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2344.55,2345.17 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2355.4,2355.10 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2345.17,2350.21 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2353.5,2353.52 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2350.21,2352.6 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2358.38,2361.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2361.9,2364.4 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2373.16,2375.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2378.6,2379.10 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2380.25,2381.19 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2385.15,2386.14 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2387.18,2388.19 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2392.4,2392.10 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2381.19,2384.5 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2388.19,2391.5 2 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2398.91,2402.35 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2407.2,2417.70 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2402.35,2406.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2428.92,2429.21 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2432.2,2433.71 2 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2437.2,2437.27 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2440.2,2442.15 3 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2429.21,2431.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain.go:2433.71,2435.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain.go:2437.27,2439.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:36.53,38.2 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:42.51,44.2 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:48.55,50.2 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:54.71,56.2 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:60.80,62.2 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:66.71,68.2 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:72.70,74.2 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:78.75,80.2 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:84.61,86.46 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:90.2,91.19 2 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:94.2,95.17 2 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:99.2,100.13 2 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:86.46,89.3 2 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:91.19,93.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:95.17,97.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:105.65,107.49 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:110.2,111.19 2 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:114.2,115.20 2 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:119.2,120.13 2 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:107.49,109.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:111.19,113.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:115.20,117.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:124.70,125.34 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:128.2,128.43 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:125.34,127.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:132.74,133.32 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:136.2,136.37 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:139.2,139.47 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:133.32,135.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:136.37,138.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:144.78,146.46 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:149.2,150.18 2 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:154.2,155.14 2 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:146.46,148.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:150.18,152.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:159.69,161.19 2 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:164.2,164.35 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:161.19,163.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:169.68,171.29 2 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:174.2,174.34 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:171.29,173.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:179.90,181.19 2 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:184.2,184.25 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:193.2,193.8 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:181.19,183.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:184.25,186.19 2 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:189.3,191.12 3 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:186.19,187.9 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:197.74,198.52 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:201.2,202.19 2 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:205.2,206.21 2 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:209.2,210.17 2 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:198.52,200.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:202.19,204.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:206.21,208.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:215.88,217.46 2 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:221.2,221.15 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:217.46,220.3 2 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:225.67,227.2 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:234.125,236.2 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:240.89,242.56 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:245.2,246.15 2 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:249.2,251.15 3 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:242.56,244.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:246.15,248.3 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:256.71,258.2 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:261.55,264.2 2 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:268.78,271.18 2 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:274.2,274.34 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:271.18,273.3 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:279.66,281.2 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:285.70,287.2 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:294.80,299.2 2 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:302.55,304.2 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:307.73,309.2 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:312.52,312.77 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:315.49,315.69 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:318.50,320.2 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:323.45,325.2 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:328.45,330.2 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:333.51,335.2 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:338.41,340.2 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:343.46,345.2 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:348.48,350.2 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:354.54,356.2 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:360.46,362.2 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:365.96,367.2 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:370.84,372.2 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:375.92,377.2 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:380.94,382.2 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:385.92,387.2 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:390.85,392.2 1 1 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:396.88,398.2 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:405.70,407.2 1 0 +github.com/ethereum/go-ethereum/core/blockchain_reader.go:410.92,412.2 1 0 +github.com/ethereum/go-ethereum/core/chain_makers.go:53.53,54.22 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:60.2,61.52 2 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:54.22,55.21 1 0 +github.com/ethereum/go-ethereum/core/chain_makers.go:58.3,58.41 1 0 +github.com/ethereum/go-ethereum/core/chain_makers.go:55.21,56.60 1 0 +github.com/ethereum/go-ethereum/core/chain_makers.go:65.42,67.2 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:70.53,72.2 1 0 +github.com/ethereum/go-ethereum/core/chain_makers.go:77.49,79.2 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:89.49,91.2 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:101.74,102.22 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:105.2,107.16 3 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:110.2,111.42 2 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:102.22,104.3 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:107.16,108.13 1 0 +github.com/ethereum/go-ethereum/core/chain_makers.go:115.61,117.2 1 0 +github.com/ethereum/go-ethereum/core/chain_makers.go:124.58,126.2 1 0 +github.com/ethereum/go-ethereum/core/chain_makers.go:129.38,131.2 1 0 +github.com/ethereum/go-ethereum/core/chain_makers.go:134.39,136.2 1 0 +github.com/ethereum/go-ethereum/core/chain_makers.go:143.64,145.2 1 0 +github.com/ethereum/go-ethereum/core/chain_makers.go:149.56,150.28 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:153.2,153.33 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:150.28,151.34 1 0 +github.com/ethereum/go-ethereum/core/chain_makers.go:157.46,162.32 3 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:168.2,173.33 4 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:180.2,180.32 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:162.32,163.40 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:163.40,165.9 2 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:173.33,175.40 2 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:175.40,178.4 2 0 +github.com/ethereum/go-ethereum/core/chain_makers.go:186.54,187.18 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:190.2,190.17 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:193.2,193.23 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:187.18,188.75 1 0 +github.com/ethereum/go-ethereum/core/chain_makers.go:190.17,192.3 1 0 +github.com/ethereum/go-ethereum/core/chain_makers.go:199.46,201.45 2 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:204.2,205.94 2 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:201.45,202.35 1 0 +github.com/ethereum/go-ethereum/core/chain_makers.go:220.181,221.19 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:224.2,226.102 3 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:274.2,274.25 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:284.2,284.25 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:221.19,223.3 1 0 +github.com/ethereum/go-ethereum/core/chain_makers.go:226.102,233.33 3 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:243.3,243.55 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:251.3,251.107 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:255.3,255.17 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:258.3,258.22 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:272.3,272.18 1 0 +github.com/ethereum/go-ethereum/core/chain_makers.go:233.33,234.45 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:234.45,237.5 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:237.10,240.5 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:243.55,245.76 2 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:245.76,246.30 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:246.30,248.6 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:251.107,253.4 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:255.17,257.4 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:258.22,264.18 3 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:267.4,267.79 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:270.4,270.28 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:264.18,265.53 1 0 +github.com/ethereum/go-ethereum/core/chain_makers.go:267.79,268.52 1 0 +github.com/ethereum/go-ethereum/core/chain_makers.go:274.25,276.17 2 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:279.3,282.17 4 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:276.17,277.14 1 0 +github.com/ethereum/go-ethereum/core/chain_makers.go:287.128,289.24 2 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:294.2,308.44 2 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:315.2,315.15 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:289.24,291.3 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:291.8,293.3 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:308.44,310.48 2 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:310.48,313.4 2 0 +github.com/ethereum/go-ethereum/core/chain_makers.go:319.121,322.31 3 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:325.2,325.16 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:322.31,324.3 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:329.118,330.101 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:333.2,333.15 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:330.101,332.3 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:341.57,343.2 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:345.85,345.99 1 0 +github.com/ethereum/go-ethereum/core/chain_makers.go:346.85,346.99 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:347.85,347.99 1 0 +github.com/ethereum/go-ethereum/core/chain_makers.go:348.85,348.99 1 1 +github.com/ethereum/go-ethereum/core/chain_makers.go:349.85,349.99 1 0 +github.com/ethereum/go-ethereum/core/chain_makers.go:350.85,350.99 1 1 +github.com/ethereum/go-ethereum/core/gen_genesis.go:19.48,44.20 11 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:50.2,54.27 5 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:44.20,46.29 2 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:46.29,48.4 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:58.53,75.52 3 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:78.2,78.23 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:81.2,81.22 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:84.2,84.26 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:87.2,87.26 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:90.2,90.25 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:93.2,94.27 2 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:97.2,98.24 2 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:101.2,101.25 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:104.2,104.22 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:107.2,108.30 2 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:111.2,111.23 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:114.2,114.24 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:117.2,117.27 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:120.2,120.24 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:123.2,123.12 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:75.52,77.3 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:78.23,80.3 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:81.22,83.3 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:84.26,86.3 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:87.26,89.3 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:90.25,92.3 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:94.27,96.3 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:98.24,100.3 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:101.25,103.3 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:104.22,106.3 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:108.30,110.3 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:111.23,113.3 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:114.24,116.3 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:117.27,119.3 1 0 +github.com/ethereum/go-ethereum/core/gen_genesis.go:120.24,122.3 1 0 +github.com/ethereum/go-ethereum/core/block_validator.go:40.117,47.2 2 1 +github.com/ethereum/go-ethereum/core/block_validator.go:52.65,54.60 1 1 +github.com/ethereum/go-ethereum/core/block_validator.go:58.2,59.59 2 1 +github.com/ethereum/go-ethereum/core/block_validator.go:62.2,62.75 1 1 +github.com/ethereum/go-ethereum/core/block_validator.go:65.2,65.98 1 1 +github.com/ethereum/go-ethereum/core/block_validator.go:68.2,68.69 1 1 +github.com/ethereum/go-ethereum/core/block_validator.go:74.2,74.12 1 1 +github.com/ethereum/go-ethereum/core/block_validator.go:54.60,56.3 1 1 +github.com/ethereum/go-ethereum/core/block_validator.go:59.59,61.3 1 0 +github.com/ethereum/go-ethereum/core/block_validator.go:62.75,64.3 1 0 +github.com/ethereum/go-ethereum/core/block_validator.go:65.98,67.3 1 0 +github.com/ethereum/go-ethereum/core/block_validator.go:68.69,69.62 1 1 +github.com/ethereum/go-ethereum/core/block_validator.go:72.3,72.37 1 1 +github.com/ethereum/go-ethereum/core/block_validator.go:69.62,71.4 1 0 +github.com/ethereum/go-ethereum/core/block_validator.go:81.131,83.32 2 1 +github.com/ethereum/go-ethereum/core/block_validator.go:88.2,89.28 2 1 +github.com/ethereum/go-ethereum/core/block_validator.go:93.2,94.38 2 1 +github.com/ethereum/go-ethereum/core/block_validator.go:99.2,99.93 1 1 +github.com/ethereum/go-ethereum/core/block_validator.go:102.2,102.12 1 1 +github.com/ethereum/go-ethereum/core/block_validator.go:83.32,85.3 1 0 +github.com/ethereum/go-ethereum/core/block_validator.go:89.28,91.3 1 0 +github.com/ethereum/go-ethereum/core/block_validator.go:94.38,96.3 1 0 +github.com/ethereum/go-ethereum/core/block_validator.go:99.93,101.3 1 0 +github.com/ethereum/go-ethereum/core/block_validator.go:108.63,111.39 3 1 +github.com/ethereum/go-ethereum/core/block_validator.go:115.2,115.26 1 1 +github.com/ethereum/go-ethereum/core/block_validator.go:122.2,122.26 1 1 +github.com/ethereum/go-ethereum/core/block_validator.go:128.2,128.14 1 1 +github.com/ethereum/go-ethereum/core/block_validator.go:111.39,113.3 1 1 +github.com/ethereum/go-ethereum/core/block_validator.go:115.26,117.27 2 1 +github.com/ethereum/go-ethereum/core/block_validator.go:120.3,120.15 1 1 +github.com/ethereum/go-ethereum/core/block_validator.go:117.27,119.4 1 1 +github.com/ethereum/go-ethereum/core/block_validator.go:122.26,124.27 2 1 +github.com/ethereum/go-ethereum/core/block_validator.go:124.27,126.4 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:103.177,122.2 5 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:130.73,135.69 3 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:138.2,142.33 4 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:135.69,137.3 1 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:148.55,153.2 3 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:157.38,165.31 5 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:169.2,169.39 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:176.2,176.35 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:182.2,182.9 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:165.31,167.3 1 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:169.39,171.32 2 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:171.32,173.4 1 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:176.35,177.39 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:177.39,179.4 1 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:183.22,184.13 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:186.22,187.17 1 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:189.10,190.32 1 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:197.115,210.6 5 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:210.6,211.10 1 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:212.25,215.10 2 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:217.27,219.11 1 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:224.4,225.37 2 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:235.4,237.48 2 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:219.11,223.5 3 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:225.37,229.83 1 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:229.83,230.80 1 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:230.80,232.7 1 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:243.57,248.11 3 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:277.2,278.27 2 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:248.11,252.35 3 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:255.3,255.36 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:258.3,258.30 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:262.3,262.32 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:266.3,268.28 2 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:274.3,274.9 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:252.35,254.4 1 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:255.36,257.4 1 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:258.30,260.4 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:262.32,264.4 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:268.28,270.37 2 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:270.37,272.5 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:278.27,280.38 2 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:283.3,283.33 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:280.38,282.4 1 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:283.33,284.46 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:292.4,294.11 2 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:284.46,287.39 2 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:287.39,290.6 2 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:295.32,295.32 0 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:296.12,296.12 0 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:304.37,310.6 2 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:310.6,311.10 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:312.25,315.10 2 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:317.19,320.42 2 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:371.4,371.42 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:379.4,379.19 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:320.42,322.44 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:330.5,333.20 4 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:337.5,339.19 3 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:348.5,351.76 2 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:322.44,323.46 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:327.6,327.26 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:323.46,326.7 2 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:333.20,335.6 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:339.19,340.13 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:346.6,346.60 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:341.26,343.13 2 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:344.14,344.14 0 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:351.76,354.57 3 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:358.6,359.39 2 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:354.57,357.7 2 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:359.39,362.7 2 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:363.11,368.6 3 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:371.42,372.41 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:372.41,373.13 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:374.34,374.34 0 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:375.14,375.14 0 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:388.98,392.66 2 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:397.2,397.86 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:413.2,413.43 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:416.2,416.22 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:392.66,395.3 2 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:397.86,399.30 2 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:402.3,403.20 2 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:408.3,408.58 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:411.3,411.27 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:399.30,401.4 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:403.20,405.4 1 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:405.9,405.43 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:405.43,407.4 1 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:408.58,410.4 1 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:413.43,415.3 1 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:422.41,423.70 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:423.70,424.112 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:427.3,427.43 1 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:424.112,426.4 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:434.65,440.2 4 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:443.63,444.18 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:447.2,454.32 5 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:459.2,459.18 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:444.18,445.50 1 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:454.32,458.3 1 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:459.18,461.3 1 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:465.54,467.2 1 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:471.44,473.20 2 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:473.20,475.3 1 0 +github.com/ethereum/go-ethereum/core/chain_indexer.go:479.58,486.34 4 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:490.2,490.29 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:486.34,489.3 2 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:495.64,500.37 4 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:503.2,503.22 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:500.37,502.3 1 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:508.73,513.2 3 1 +github.com/ethereum/go-ethereum/core/chain_indexer.go:517.58,522.2 3 1 diff --git a/tests/bor/bor_test.go b/tests/bor/bor_test.go index b922ff9c41..7768b0fc9c 100644 --- a/tests/bor/bor_test.go +++ b/tests/bor/bor_test.go @@ -40,6 +40,8 @@ func TestInsertingSpanSizeBlocks(t *testing.T) { h, heimdallSpan, ctrl := getMockedHeimdallClient(t) defer ctrl.Finish() + h.EXPECT().FetchLatestCheckpoint().Return(&bor.Checkpoint{}, nil).AnyTimes() + _bor.SetHeimdallClient(h) db := init.ethereum.ChainDb() From 01b6d6cb72160a6ade8260861df4065cbb1669c3 Mon Sep 17 00:00:00 2001 From: Evgeny Danienko <6655321@bk.ru> Date: Fri, 3 Jun 2022 13:48:08 +0300 Subject: [PATCH 38/41] fix --- cover.out | 36702 ---------------------------------------------------- 1 file changed, 36702 deletions(-) delete mode 100644 cover.out diff --git a/cover.out b/cover.out deleted file mode 100644 index 0a5f97fd58..0000000000 --- a/cover.out +++ /dev/null @@ -1,36702 +0,0 @@ -mode: set -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:20.37,21.23 1 1 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:24.2,24.32 1 1 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:21.23,23.3 1 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:29.41,31.16 2 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:34.2,35.11 2 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:43.2,43.38 1 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:46.2,46.10 1 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:31.16,33.3 1 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:35.11,39.26 4 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:39.26,41.4 1 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:43.38,45.3 1 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:51.41,53.16 2 1 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:56.2,56.25 1 1 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:59.2,59.10 1 1 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:53.16,55.3 1 1 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:56.25,58.3 1 1 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:64.37,65.23 1 1 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:68.2,68.32 1 1 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:65.23,67.3 1 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:73.41,75.16 2 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:78.2,79.11 2 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:87.2,87.38 1 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:90.2,90.10 1 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:75.16,77.3 1 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:79.11,83.26 4 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:83.26,85.4 1 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:87.38,89.3 1 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:95.41,97.16 2 1 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:100.2,100.25 1 1 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:103.2,103.10 1 1 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:97.16,99.3 1 1 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:100.25,102.3 1 1 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:108.36,109.23 1 1 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:112.2,112.31 1 1 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:109.23,111.3 1 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:117.40,119.16 2 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:122.2,123.11 2 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:131.2,131.38 1 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:134.2,134.10 1 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:119.16,121.3 1 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:123.11,127.26 4 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:127.26,129.4 1 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:131.38,133.3 1 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:139.40,141.16 2 1 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:144.2,144.25 1 1 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:147.2,147.10 1 1 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:141.16,143.3 1 1 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:144.25,146.3 1 1 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:151.31,152.23 1 1 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:155.2,155.25 1 1 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:152.23,154.3 1 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:160.35,163.11 3 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:171.2,171.38 1 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:176.2,176.14 1 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:163.11,165.26 2 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:165.26,166.18 1 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:166.18,168.5 1 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:171.38,172.16 1 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:172.16,174.4 1 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:181.35,182.30 1 1 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:187.2,187.14 1 0 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:182.30,183.16 1 1 -github.com/ethereum/go-ethereum/common/bitutil/bitutil.go:183.16,185.4 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:60.40,61.58 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:64.2,66.12 3 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:61.58,63.3 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:71.44,73.20 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:77.2,77.20 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:84.2,87.25 3 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:93.2,93.28 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:96.2,96.66 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:73.20,75.3 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:77.20,78.19 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:81.3,81.14 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:78.19,80.4 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:87.25,88.13 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:88.13,91.4 2 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:93.28,95.3 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:102.63,103.24 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:106.2,106.25 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:111.2,111.40 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:103.24,105.3 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:106.25,110.3 3 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:115.65,117.16 2 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:120.2,120.23 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:123.2,123.17 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:117.16,119.3 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:120.23,122.3 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:130.77,132.17 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:136.2,137.20 2 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:140.2,140.17 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:148.2,149.16 2 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:152.2,152.44 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:169.2,169.25 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:132.17,134.3 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:137.20,139.3 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:140.17,142.19 2 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:145.3,145.24 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:142.19,144.4 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:149.16,151.3 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:152.44,153.47 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:153.47,155.24 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:158.4,158.24 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:162.4,162.22 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:165.4,166.9 2 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:155.24,157.5 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:158.24,160.5 1 1 -github.com/ethereum/go-ethereum/common/bitutil/compress.go:162.22,164.5 1 1 -github.com/ethereum/go-ethereum/accounts/accounts.go:184.35,187.2 2 1 -github.com/ethereum/go-ethereum/accounts/accounts.go:196.48,201.2 4 1 -github.com/ethereum/go-ethereum/accounts/errors.go:59.46,63.2 1 0 -github.com/ethereum/go-ethereum/accounts/errors.go:66.44,68.2 1 0 -github.com/ethereum/go-ethereum/accounts/hd.go:68.63,73.9 3 1 -github.com/ethereum/go-ethereum/accounts/hd.go:87.2,87.26 1 1 -github.com/ethereum/go-ethereum/accounts/hd.go:90.2,90.39 1 1 -github.com/ethereum/go-ethereum/accounts/hd.go:117.2,117.20 1 1 -github.com/ethereum/go-ethereum/accounts/hd.go:74.28,75.50 1 0 -github.com/ethereum/go-ethereum/accounts/hd.go:77.46,78.116 1 1 -github.com/ethereum/go-ethereum/accounts/hd.go:80.47,81.30 1 1 -github.com/ethereum/go-ethereum/accounts/hd.go:83.10,84.56 1 1 -github.com/ethereum/go-ethereum/accounts/hd.go:87.26,89.3 1 1 -github.com/ethereum/go-ethereum/accounts/hd.go:90.39,96.40 3 1 -github.com/ethereum/go-ethereum/accounts/hd.go:101.3,102.10 2 1 -github.com/ethereum/go-ethereum/accounts/hd.go:105.3,106.66 2 1 -github.com/ethereum/go-ethereum/accounts/hd.go:112.3,115.33 2 1 -github.com/ethereum/go-ethereum/accounts/hd.go:96.40,99.4 2 1 -github.com/ethereum/go-ethereum/accounts/hd.go:102.10,104.4 1 1 -github.com/ethereum/go-ethereum/accounts/hd.go:106.66,107.18 1 1 -github.com/ethereum/go-ethereum/accounts/hd.go:110.4,110.93 1 1 -github.com/ethereum/go-ethereum/accounts/hd.go:107.18,109.5 1 0 -github.com/ethereum/go-ethereum/accounts/hd.go:122.44,124.33 2 1 -github.com/ethereum/go-ethereum/accounts/hd.go:135.2,135.15 1 1 -github.com/ethereum/go-ethereum/accounts/hd.go:124.33,126.30 2 1 -github.com/ethereum/go-ethereum/accounts/hd.go:130.3,131.15 2 1 -github.com/ethereum/go-ethereum/accounts/hd.go:126.30,129.4 2 1 -github.com/ethereum/go-ethereum/accounts/hd.go:131.15,133.4 1 1 -github.com/ethereum/go-ethereum/accounts/hd.go:139.58,141.2 1 0 -github.com/ethereum/go-ethereum/accounts/hd.go:144.59,147.46 3 0 -github.com/ethereum/go-ethereum/accounts/hd.go:150.2,151.12 2 0 -github.com/ethereum/go-ethereum/accounts/hd.go:147.46,149.3 1 0 -github.com/ethereum/go-ethereum/accounts/hd.go:156.65,161.31 4 1 -github.com/ethereum/go-ethereum/accounts/hd.go:161.31,164.3 2 1 -github.com/ethereum/go-ethereum/accounts/hd.go:170.68,175.31 4 1 -github.com/ethereum/go-ethereum/accounts/hd.go:175.31,179.3 2 1 -github.com/ethereum/go-ethereum/accounts/manager.go:66.63,69.35 2 0 -github.com/ethereum/go-ethereum/accounts/manager.go:73.2,76.35 3 0 -github.com/ethereum/go-ethereum/accounts/manager.go:80.2,90.35 2 0 -github.com/ethereum/go-ethereum/accounts/manager.go:94.2,96.11 2 0 -github.com/ethereum/go-ethereum/accounts/manager.go:69.35,71.3 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:76.35,78.3 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:90.35,93.3 2 0 -github.com/ethereum/go-ethereum/accounts/manager.go:100.34,104.2 3 0 -github.com/ethereum/go-ethereum/accounts/manager.go:107.37,109.2 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:113.48,117.2 3 0 -github.com/ethereum/go-ethereum/accounts/manager.go:121.29,123.15 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:133.2,133.6 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:123.15,125.35 2 0 -github.com/ethereum/go-ethereum/accounts/manager.go:128.3,129.19 2 0 -github.com/ethereum/go-ethereum/accounts/manager.go:125.35,127.4 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:133.6,134.10 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:135.30,138.22 2 0 -github.com/ethereum/go-ethereum/accounts/manager.go:144.4,147.23 2 0 -github.com/ethereum/go-ethereum/accounts/manager.go:148.34,157.26 8 0 -github.com/ethereum/go-ethereum/accounts/manager.go:158.26,164.10 3 0 -github.com/ethereum/go-ethereum/accounts/manager.go:139.23,140.49 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:141.23,142.48 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:170.58,175.2 3 0 -github.com/ethereum/go-ethereum/accounts/manager.go:178.39,183.2 3 0 -github.com/ethereum/go-ethereum/accounts/manager.go:186.45,190.2 3 0 -github.com/ethereum/go-ethereum/accounts/manager.go:193.55,198.16 4 0 -github.com/ethereum/go-ethereum/accounts/manager.go:201.2,201.44 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:206.2,206.30 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:198.16,200.3 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:201.44,202.29 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:202.29,204.4 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:210.48,215.36 4 0 -github.com/ethereum/go-ethereum/accounts/manager.go:220.2,220.18 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:215.36,216.45 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:216.45,218.4 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:226.58,230.36 3 0 -github.com/ethereum/go-ethereum/accounts/manager.go:235.2,235.31 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:230.36,231.31 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:231.31,233.4 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:240.74,242.2 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:248.56,249.33 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:257.2,257.14 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:249.33,250.49 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:251.3,251.22 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:255.3,255.71 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:250.49,250.97 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:251.22,253.12 2 0 -github.com/ethereum/go-ethereum/accounts/manager.go:262.55,263.33 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:271.2,271.14 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:263.33,264.49 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:265.3,265.22 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:269.3,269.44 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:264.49,264.97 1 0 -github.com/ethereum/go-ethereum/accounts/manager.go:265.22,267.12 1 0 -github.com/ethereum/go-ethereum/accounts/sort.go:22.44,22.61 1 0 -github.com/ethereum/go-ethereum/accounts/sort.go:23.44,23.71 1 0 -github.com/ethereum/go-ethereum/accounts/sort.go:24.44,24.81 1 0 -github.com/ethereum/go-ethereum/accounts/sort.go:29.43,29.60 1 0 -github.com/ethereum/go-ethereum/accounts/sort.go:30.43,30.70 1 0 -github.com/ethereum/go-ethereum/accounts/sort.go:31.43,31.84 1 0 -github.com/ethereum/go-ethereum/accounts/url.go:44.40,46.39 2 1 -github.com/ethereum/go-ethereum/accounts/url.go:49.2,52.8 1 1 -github.com/ethereum/go-ethereum/accounts/url.go:46.39,48.3 1 1 -github.com/ethereum/go-ethereum/accounts/url.go:56.30,57.20 1 1 -github.com/ethereum/go-ethereum/accounts/url.go:60.2,60.15 1 1 -github.com/ethereum/go-ethereum/accounts/url.go:57.20,59.3 1 1 -github.com/ethereum/go-ethereum/accounts/url.go:64.38,66.19 2 0 -github.com/ethereum/go-ethereum/accounts/url.go:69.2,69.12 1 0 -github.com/ethereum/go-ethereum/accounts/url.go:66.19,68.3 1 0 -github.com/ethereum/go-ethereum/accounts/url.go:73.44,75.2 1 1 -github.com/ethereum/go-ethereum/accounts/url.go:78.49,81.16 3 1 -github.com/ethereum/go-ethereum/accounts/url.go:84.2,85.16 2 1 -github.com/ethereum/go-ethereum/accounts/url.go:88.2,90.12 3 1 -github.com/ethereum/go-ethereum/accounts/url.go:81.16,83.3 1 0 -github.com/ethereum/go-ethereum/accounts/url.go:85.16,87.3 1 0 -github.com/ethereum/go-ethereum/accounts/url.go:99.31,100.28 1 1 -github.com/ethereum/go-ethereum/accounts/url.go:103.2,103.46 1 1 -github.com/ethereum/go-ethereum/accounts/url.go:100.28,102.3 1 1 -github.com/ethereum/go-ethereum/common/size.go:28.38,29.23 1 1 -github.com/ethereum/go-ethereum/common/size.go:29.23,31.3 1 0 -github.com/ethereum/go-ethereum/common/size.go:31.8,31.27 1 1 -github.com/ethereum/go-ethereum/common/size.go:31.27,33.3 1 0 -github.com/ethereum/go-ethereum/common/size.go:33.8,33.24 1 1 -github.com/ethereum/go-ethereum/common/size.go:33.24,35.3 1 1 -github.com/ethereum/go-ethereum/common/size.go:35.8,35.21 1 1 -github.com/ethereum/go-ethereum/common/size.go:35.21,37.3 1 1 -github.com/ethereum/go-ethereum/common/size.go:37.8,39.3 1 1 -github.com/ethereum/go-ethereum/common/size.go:44.46,45.23 1 0 -github.com/ethereum/go-ethereum/common/size.go:45.23,47.3 1 0 -github.com/ethereum/go-ethereum/common/size.go:47.8,47.27 1 0 -github.com/ethereum/go-ethereum/common/size.go:47.27,49.3 1 0 -github.com/ethereum/go-ethereum/common/size.go:49.8,49.24 1 0 -github.com/ethereum/go-ethereum/common/size.go:49.24,51.3 1 0 -github.com/ethereum/go-ethereum/common/size.go:51.8,51.21 1 0 -github.com/ethereum/go-ethereum/common/size.go:51.21,53.3 1 0 -github.com/ethereum/go-ethereum/common/size.go:53.8,55.3 1 0 -github.com/ethereum/go-ethereum/common/test_utils.go:26.51,28.16 2 0 -github.com/ethereum/go-ethereum/common/test_utils.go:31.2,31.53 1 0 -github.com/ethereum/go-ethereum/common/test_utils.go:38.2,38.12 1 0 -github.com/ethereum/go-ethereum/common/test_utils.go:28.16,30.3 1 0 -github.com/ethereum/go-ethereum/common/test_utils.go:31.53,32.51 1 0 -github.com/ethereum/go-ethereum/common/test_utils.go:36.3,36.65 1 0 -github.com/ethereum/go-ethereum/common/test_utils.go:32.51,35.4 2 0 -github.com/ethereum/go-ethereum/common/test_utils.go:42.53,44.33 2 0 -github.com/ethereum/go-ethereum/common/test_utils.go:52.2,52.8 1 0 -github.com/ethereum/go-ethereum/common/test_utils.go:44.33,45.25 1 0 -github.com/ethereum/go-ethereum/common/test_utils.go:48.3,48.16 1 0 -github.com/ethereum/go-ethereum/common/test_utils.go:45.25,47.4 1 0 -github.com/ethereum/go-ethereum/common/test_utils.go:48.16,50.4 1 0 -github.com/ethereum/go-ethereum/common/types.go:53.33,57.2 3 1 -github.com/ethereum/go-ethereum/common/types.go:61.33,61.66 1 0 -github.com/ethereum/go-ethereum/common/types.go:65.31,65.65 1 0 -github.com/ethereum/go-ethereum/common/types.go:68.30,68.45 1 0 -github.com/ethereum/go-ethereum/common/types.go:71.30,71.68 1 0 -github.com/ethereum/go-ethereum/common/types.go:74.28,74.59 1 0 -github.com/ethereum/go-ethereum/common/types.go:78.39,80.2 1 0 -github.com/ethereum/go-ethereum/common/types.go:84.31,86.2 1 0 -github.com/ethereum/go-ethereum/common/types.go:90.43,95.11 4 1 -github.com/ethereum/go-ethereum/common/types.go:96.16,97.19 1 1 -github.com/ethereum/go-ethereum/common/types.go:100.3,100.15 1 1 -github.com/ethereum/go-ethereum/common/types.go:103.3,103.14 1 1 -github.com/ethereum/go-ethereum/common/types.go:104.16,105.16 1 1 -github.com/ethereum/go-ethereum/common/types.go:106.11,110.13 4 1 -github.com/ethereum/go-ethereum/common/types.go:111.11,112.35 1 1 -github.com/ethereum/go-ethereum/common/types.go:113.10,114.41 1 1 -github.com/ethereum/go-ethereum/common/types.go:97.19,99.4 1 1 -github.com/ethereum/go-ethereum/common/types.go:100.15,102.4 1 1 -github.com/ethereum/go-ethereum/common/types.go:119.50,121.2 1 0 -github.com/ethereum/go-ethereum/common/types.go:124.50,126.2 1 1 -github.com/ethereum/go-ethereum/common/types.go:129.45,131.2 1 0 -github.com/ethereum/go-ethereum/common/types.go:135.35,136.21 1 1 -github.com/ethereum/go-ethereum/common/types.go:140.2,140.32 1 1 -github.com/ethereum/go-ethereum/common/types.go:136.21,138.3 1 0 -github.com/ethereum/go-ethereum/common/types.go:144.65,146.34 2 0 -github.com/ethereum/go-ethereum/common/types.go:149.2,149.27 1 0 -github.com/ethereum/go-ethereum/common/types.go:146.34,148.3 1 0 -github.com/ethereum/go-ethereum/common/types.go:153.44,155.9 2 1 -github.com/ethereum/go-ethereum/common/types.go:158.2,158.29 1 1 -github.com/ethereum/go-ethereum/common/types.go:161.2,162.12 2 1 -github.com/ethereum/go-ethereum/common/types.go:155.9,157.3 1 1 -github.com/ethereum/go-ethereum/common/types.go:158.29,160.3 1 1 -github.com/ethereum/go-ethereum/common/types.go:166.45,168.2 1 1 -github.com/ethereum/go-ethereum/common/types.go:171.53,171.81 1 0 -github.com/ethereum/go-ethereum/common/types.go:174.58,176.31 2 0 -github.com/ethereum/go-ethereum/common/types.go:182.2,182.12 1 0 -github.com/ethereum/go-ethereum/common/types.go:177.14,178.39 1 0 -github.com/ethereum/go-ethereum/common/types.go:179.10,180.57 1 0 -github.com/ethereum/go-ethereum/common/types.go:189.60,191.2 1 0 -github.com/ethereum/go-ethereum/common/types.go:194.55,196.2 1 0 -github.com/ethereum/go-ethereum/common/types.go:205.39,209.2 3 1 -github.com/ethereum/go-ethereum/common/types.go:213.39,213.75 1 0 -github.com/ethereum/go-ethereum/common/types.go:217.37,217.74 1 1 -github.com/ethereum/go-ethereum/common/types.go:221.34,222.20 1 1 -github.com/ethereum/go-ethereum/common/types.go:225.2,225.46 1 1 -github.com/ethereum/go-ethereum/common/types.go:222.20,224.3 1 1 -github.com/ethereum/go-ethereum/common/types.go:229.33,229.48 1 1 -github.com/ethereum/go-ethereum/common/types.go:232.30,232.58 1 0 -github.com/ethereum/go-ethereum/common/types.go:235.31,237.2 1 1 -github.com/ethereum/go-ethereum/common/types.go:240.34,242.2 1 0 -github.com/ethereum/go-ethereum/common/types.go:244.40,251.32 5 1 -github.com/ethereum/go-ethereum/common/types.go:262.2,262.15 1 1 -github.com/ethereum/go-ethereum/common/types.go:251.32,253.15 2 1 -github.com/ethereum/go-ethereum/common/types.go:258.3,258.35 1 1 -github.com/ethereum/go-ethereum/common/types.go:253.15,255.4 1 1 -github.com/ethereum/go-ethereum/common/types.go:255.9,257.4 1 1 -github.com/ethereum/go-ethereum/common/types.go:258.35,260.4 1 1 -github.com/ethereum/go-ethereum/common/types.go:265.31,270.2 4 1 -github.com/ethereum/go-ethereum/common/types.go:274.46,275.11 1 1 -github.com/ethereum/go-ethereum/common/types.go:276.16,277.27 1 1 -github.com/ethereum/go-ethereum/common/types.go:278.11,282.13 4 1 -github.com/ethereum/go-ethereum/common/types.go:283.16,286.19 2 1 -github.com/ethereum/go-ethereum/common/types.go:289.3,289.15 1 1 -github.com/ethereum/go-ethereum/common/types.go:292.3,292.15 1 1 -github.com/ethereum/go-ethereum/common/types.go:293.11,294.35 1 1 -github.com/ethereum/go-ethereum/common/types.go:295.10,296.44 1 1 -github.com/ethereum/go-ethereum/common/types.go:286.19,288.4 1 1 -github.com/ethereum/go-ethereum/common/types.go:289.15,291.4 1 1 -github.com/ethereum/go-ethereum/common/types.go:302.38,303.21 1 1 -github.com/ethereum/go-ethereum/common/types.go:306.2,306.35 1 1 -github.com/ethereum/go-ethereum/common/types.go:303.21,305.3 1 0 -github.com/ethereum/go-ethereum/common/types.go:310.48,312.2 1 0 -github.com/ethereum/go-ethereum/common/types.go:315.53,317.2 1 0 -github.com/ethereum/go-ethereum/common/types.go:320.53,322.2 1 1 -github.com/ethereum/go-ethereum/common/types.go:325.47,327.9 2 1 -github.com/ethereum/go-ethereum/common/types.go:330.2,330.32 1 1 -github.com/ethereum/go-ethereum/common/types.go:333.2,334.12 2 1 -github.com/ethereum/go-ethereum/common/types.go:327.9,329.3 1 1 -github.com/ethereum/go-ethereum/common/types.go:330.32,332.3 1 1 -github.com/ethereum/go-ethereum/common/types.go:338.48,340.2 1 1 -github.com/ethereum/go-ethereum/common/types.go:343.58,343.86 1 0 -github.com/ethereum/go-ethereum/common/types.go:346.61,348.31 2 0 -github.com/ethereum/go-ethereum/common/types.go:354.2,354.12 1 0 -github.com/ethereum/go-ethereum/common/types.go:349.14,350.39 1 0 -github.com/ethereum/go-ethereum/common/types.go:351.10,352.60 1 0 -github.com/ethereum/go-ethereum/common/types.go:361.63,363.2 1 0 -github.com/ethereum/go-ethereum/common/types.go:366.58,368.2 1 0 -github.com/ethereum/go-ethereum/common/types.go:378.57,380.2 1 0 -github.com/ethereum/go-ethereum/common/types.go:383.79,384.28 1 0 -github.com/ethereum/go-ethereum/common/types.go:387.2,388.75 2 0 -github.com/ethereum/go-ethereum/common/types.go:384.28,386.3 1 0 -github.com/ethereum/go-ethereum/common/types.go:392.63,393.80 1 1 -github.com/ethereum/go-ethereum/common/types.go:396.2,396.44 1 1 -github.com/ethereum/go-ethereum/common/types.go:393.80,395.3 1 1 -github.com/ethereum/go-ethereum/common/types.go:400.59,401.82 1 0 -github.com/ethereum/go-ethereum/common/types.go:404.2,404.55 1 0 -github.com/ethereum/go-ethereum/common/types.go:401.82,403.3 1 0 -github.com/ethereum/go-ethereum/common/types.go:408.47,410.2 1 0 -github.com/ethereum/go-ethereum/common/types.go:413.45,414.24 1 0 -github.com/ethereum/go-ethereum/common/types.go:417.2,417.56 1 0 -github.com/ethereum/go-ethereum/common/types.go:414.24,416.3 1 0 -github.com/ethereum/go-ethereum/common/types.go:421.50,423.2 1 1 -github.com/ethereum/go-ethereum/common/types.go:426.47,428.2 1 0 -github.com/ethereum/go-ethereum/common/bytes.go:26.31,27.20 1 1 -github.com/ethereum/go-ethereum/common/bytes.go:30.2,30.19 1 1 -github.com/ethereum/go-ethereum/common/bytes.go:33.2,33.21 1 1 -github.com/ethereum/go-ethereum/common/bytes.go:27.20,29.3 1 1 -github.com/ethereum/go-ethereum/common/bytes.go:30.19,32.3 1 1 -github.com/ethereum/go-ethereum/common/bytes.go:37.47,38.14 1 1 -github.com/ethereum/go-ethereum/common/bytes.go:41.2,44.8 3 1 -github.com/ethereum/go-ethereum/common/bytes.go:38.14,40.3 1 0 -github.com/ethereum/go-ethereum/common/bytes.go:48.35,50.2 1 1 -github.com/ethereum/go-ethereum/common/bytes.go:53.34,55.2 1 1 -github.com/ethereum/go-ethereum/common/bytes.go:58.29,59.21 1 1 -github.com/ethereum/go-ethereum/common/bytes.go:62.2,62.32 1 1 -github.com/ethereum/go-ethereum/common/bytes.go:67.2,67.13 1 1 -github.com/ethereum/go-ethereum/common/bytes.go:59.21,61.3 1 1 -github.com/ethereum/go-ethereum/common/bytes.go:62.32,63.25 1 1 -github.com/ethereum/go-ethereum/common/bytes.go:63.25,65.4 1 1 -github.com/ethereum/go-ethereum/common/bytes.go:71.33,73.2 1 0 -github.com/ethereum/go-ethereum/common/bytes.go:76.35,79.2 2 1 -github.com/ethereum/go-ethereum/common/bytes.go:82.50,84.20 2 0 -github.com/ethereum/go-ethereum/common/bytes.go:87.2,87.19 1 0 -github.com/ethereum/go-ethereum/common/bytes.go:90.2,92.11 3 0 -github.com/ethereum/go-ethereum/common/bytes.go:84.20,86.3 1 0 -github.com/ethereum/go-ethereum/common/bytes.go:87.19,89.3 1 0 -github.com/ethereum/go-ethereum/common/bytes.go:96.48,97.21 1 1 -github.com/ethereum/go-ethereum/common/bytes.go:101.2,104.15 3 1 -github.com/ethereum/go-ethereum/common/bytes.go:97.21,99.3 1 1 -github.com/ethereum/go-ethereum/common/bytes.go:108.47,109.21 1 1 -github.com/ethereum/go-ethereum/common/bytes.go:113.2,116.15 3 1 -github.com/ethereum/go-ethereum/common/bytes.go:109.21,111.3 1 1 -github.com/ethereum/go-ethereum/common/bytes.go:120.38,122.28 2 0 -github.com/ethereum/go-ethereum/common/bytes.go:127.2,127.16 1 0 -github.com/ethereum/go-ethereum/common/bytes.go:122.28,123.18 1 0 -github.com/ethereum/go-ethereum/common/bytes.go:123.18,124.9 1 0 -github.com/ethereum/go-ethereum/common/bytes.go:131.39,133.23 2 1 -github.com/ethereum/go-ethereum/common/bytes.go:138.2,138.16 1 1 -github.com/ethereum/go-ethereum/common/bytes.go:133.23,134.20 1 1 -github.com/ethereum/go-ethereum/common/bytes.go:134.20,135.9 1 1 -github.com/ethereum/go-ethereum/common/debug.go:28.35,38.2 6 0 -github.com/ethereum/go-ethereum/common/debug.go:41.42,52.2 3 0 -github.com/ethereum/go-ethereum/common/format.go:34.41,36.65 2 0 -github.com/ethereum/go-ethereum/common/format.go:39.2,39.14 1 0 -github.com/ethereum/go-ethereum/common/format.go:36.65,38.3 1 0 -github.com/ethereum/go-ethereum/common/format.go:62.36,65.24 2 0 -github.com/ethereum/go-ethereum/common/format.go:69.2,71.32 2 0 -github.com/ethereum/go-ethereum/common/format.go:81.2,81.15 1 0 -github.com/ethereum/go-ethereum/common/format.go:65.24,67.3 1 0 -github.com/ethereum/go-ethereum/common/format.go:71.32,72.23 1 0 -github.com/ethereum/go-ethereum/common/format.go:72.23,76.28 3 0 -github.com/ethereum/go-ethereum/common/format.go:76.28,77.10 1 0 -github.com/ethereum/go-ethereum/common/path.go:29.44,31.2 1 0 -github.com/ethereum/go-ethereum/common/path.go:34.38,36.38 2 0 -github.com/ethereum/go-ethereum/common/path.go:40.2,40.13 1 0 -github.com/ethereum/go-ethereum/common/path.go:36.38,38.3 1 0 -github.com/ethereum/go-ethereum/common/path.go:44.59,45.30 1 0 -github.com/ethereum/go-ethereum/common/path.go:48.2,48.41 1 0 -github.com/ethereum/go-ethereum/common/path.go:45.30,47.3 1 0 -github.com/ethereum/go-ethereum/common/compiler/helpers.go:55.49,57.29 2 0 -github.com/ethereum/go-ethereum/common/compiler/helpers.go:64.2,64.29 1 0 -github.com/ethereum/go-ethereum/common/compiler/helpers.go:57.29,59.17 2 0 -github.com/ethereum/go-ethereum/common/compiler/helpers.go:62.3,62.24 1 0 -github.com/ethereum/go-ethereum/common/compiler/helpers.go:59.17,61.4 1 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:61.40,67.47 2 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:70.2,70.10 1 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:67.47,69.3 1 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:74.54,75.16 1 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:78.2,82.16 5 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:85.2,86.23 2 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:89.2,90.57 2 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:93.2,93.57 1 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:96.2,96.57 1 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:99.2,99.15 1 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:75.16,77.3 1 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:82.16,84.3 1 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:86.23,88.3 1 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:90.57,92.3 1 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:93.57,95.3 1 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:96.57,98.3 1 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:103.79,104.22 1 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:107.2,108.16 2 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:111.2,114.27 4 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:104.22,106.3 1 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:108.16,110.3 1 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:118.88,119.27 1 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:122.2,123.16 2 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:126.2,127.16 2 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:130.2,132.27 3 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:119.27,121.3 1 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:123.16,125.3 1 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:127.16,129.3 1 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:135.84,139.34 4 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:142.2,142.105 1 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:139.34,141.3 1 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:154.162,156.62 2 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:161.2,162.43 2 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:191.2,191.23 1 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:156.62,159.3 1 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:162.43,165.64 2 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:168.3,189.4 4 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:165.64,167.4 1 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:196.164,198.62 2 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:202.2,203.43 2 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:223.2,223.23 1 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:198.62,200.3 1 0 -github.com/ethereum/go-ethereum/common/compiler/solidity.go:203.43,222.3 1 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:36.37,41.2 2 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:44.49,45.17 1 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:48.2,52.16 5 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:55.2,56.23 2 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:59.2,60.57 2 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:63.2,63.57 1 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:66.2,66.57 1 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:69.2,69.15 1 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:45.17,47.3 1 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:52.16,54.3 1 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:56.23,58.3 1 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:60.57,62.3 1 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:63.57,65.3 1 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:66.57,68.3 1 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:73.86,74.27 1 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:77.2,78.16 2 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:81.2,82.16 2 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:85.2,87.27 3 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:74.27,76.3 1 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:78.16,80.3 1 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:82.16,84.3 1 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:90.81,94.34 4 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:98.2,98.102 1 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:94.34,96.3 1 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:110.159,112.62 2 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:117.2,118.33 2 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:143.2,143.23 1 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:112.62,114.3 1 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:118.33,120.24 1 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:123.3,141.4 2 0 -github.com/ethereum/go-ethereum/common/compiler/vyper.go:120.24,121.12 1 0 -github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:27.40,30.73 2 1 -github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:34.2,35.21 2 1 -github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:38.2,38.73 1 1 -github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:42.2,42.73 1 1 -github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:45.2,45.23 1 1 -github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:30.73,32.3 1 0 -github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:35.21,37.3 1 1 -github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:38.73,40.3 1 0 -github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:42.73,44.3 1 0 -github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:50.29,52.73 2 1 -github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:55.2,55.28 1 1 -github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:52.73,54.3 1 0 -github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:60.29,63.73 2 1 -github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:67.2,67.27 1 1 -github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:70.2,70.28 1 1 -github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:63.73,65.3 1 0 -github.com/ethereum/go-ethereum/common/fdlimit/fdlimit_darwin.go:67.27,69.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:78.123,91.2 6 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:96.86,98.2 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:101.42,104.2 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:108.37,112.84 3 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:117.2,117.28 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:112.84,113.13 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:121.39,126.2 3 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:128.58,129.112 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:131.2,132.86 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:129.113,129.114 0 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:147.80,151.45 3 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:154.2,155.16 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:158.2,159.12 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:151.45,153.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:155.16,157.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:163.114,164.86 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:167.2,168.16 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:171.2,171.43 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:164.86,166.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:168.16,170.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:175.119,180.16 4 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:184.2,184.39 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:180.16,182.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:188.124,193.16 4 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:197.2,197.42 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:193.16,195.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:201.120,206.16 4 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:210.2,210.40 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:206.16,208.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:214.139,219.16 4 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:223.2,224.20 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:219.16,221.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:228.112,233.20 4 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:236.2,236.21 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:233.20,235.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:243.121,248.15 4 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:251.2,252.15 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:255.2,255.38 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:248.15,250.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:252.15,254.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:259.101,264.2 3 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:267.101,268.35 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:272.2,273.18 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:277.2,277.34 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:268.35,270.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:273.18,275.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:282.102,287.2 3 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:291.102,292.63 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:296.2,297.18 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:301.2,301.19 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:292.63,294.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:297.18,299.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:305.103,309.35 3 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:313.2,314.19 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:318.2,318.20 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:309.35,311.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:314.19,316.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:323.103,327.61 3 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:331.2,331.67 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:327.61,329.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:335.103,339.40 3 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:343.2,344.18 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:348.2,348.46 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:339.40,341.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:344.18,346.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:352.131,356.40 3 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:365.2,366.18 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:370.2,371.39 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:375.2,375.33 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:356.40,358.40 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:362.3,362.34 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:358.40,360.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:366.18,368.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:371.39,373.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:379.104,384.2 3 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:386.64,389.22 3 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:392.2,395.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:389.22,391.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:407.39,409.2 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:412.47,414.2 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:417.123,421.86 3 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:424.2,425.16 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:428.2,429.16 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:433.2,433.27 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:436.2,436.30 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:421.86,423.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:425.16,427.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:429.16,431.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:433.27,435.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:440.108,446.16 5 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:450.2,450.27 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:453.2,453.30 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:446.16,448.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:450.27,452.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:458.104,463.2 3 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:467.83,471.44 3 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:474.2,474.27 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:471.44,473.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:479.84,481.2 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:485.100,495.30 4 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:501.2,502.78 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:512.2,512.26 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:532.2,535.70 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:551.2,551.16 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:568.2,568.15 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:584.2,584.16 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:495.30,497.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:497.8,499.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:502.78,504.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:504.8,504.33 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:504.33,506.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:506.8,506.34 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:506.34,508.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:508.8,510.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:512.26,515.24 3 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:521.3,522.54 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:515.24,516.38 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:519.4,519.40 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:516.38,518.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:522.54,524.23 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:527.4,529.27 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:524.23,526.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:535.70,542.17 5 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:548.3,548.32 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:542.17,543.44 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:546.4,546.25 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:543.44,545.5 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:551.16,558.17 3 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:561.3,561.13 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:558.17,560.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:561.13,563.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:563.9,565.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:568.15,570.17 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:573.3,573.13 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:570.17,572.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:573.13,574.53 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:581.4,581.68 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:574.53,575.33 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:578.5,578.25 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:575.33,577.6 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:589.160,591.78 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:594.2,595.50 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:622.2,622.19 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:625.2,625.23 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:629.2,641.68 8 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:591.78,593.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:595.50,597.27 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:600.3,600.64 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:597.27,599.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:601.8,603.27 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:603.27,606.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:606.9,608.29 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:611.4,611.29 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:615.4,616.66 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:608.29,610.5 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:611.29,613.5 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:616.66,618.5 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:622.19,624.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:625.23,627.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:645.94,651.16 4 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:655.2,657.16 3 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:660.2,661.25 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:665.2,665.124 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:671.2,675.12 4 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:651.16,653.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:657.16,659.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:661.25,663.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:665.124,666.52 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:669.3,669.41 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:666.52,668.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:682.109,684.28 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:701.2,702.16 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:705.2,706.28 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:709.2,709.17 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:684.28,687.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:687.8,690.29 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:693.3,694.27 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:698.3,698.117 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:690.29,692.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:694.27,696.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:702.16,704.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:706.28,708.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:714.149,719.16 3 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:723.2,723.64 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:719.16,721.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:723.64,725.7 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:725.7,726.11 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:727.24,728.31 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:737.28,738.15 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:739.16,740.15 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:728.31,729.13 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:730.23,730.23 0 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:731.30,732.17 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:733.18,734.17 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:747.122,752.64 3 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:752.64,754.7 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:754.7,755.11 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:756.24,757.12 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:764.28,765.15 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:766.16,767.15 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:758.21,758.21 0 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:759.29,760.16 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:761.17,762.16 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:775.71,779.45 3 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:783.2,783.146 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:786.2,791.12 4 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:779.45,781.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:783.146,785.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:795.58,797.2 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:804.48,804.73 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:805.48,805.60 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:806.48,806.63 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:807.48,807.71 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:808.48,808.77 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:809.48,809.78 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:810.48,810.78 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:811.48,811.72 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:812.48,812.74 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:813.48,813.73 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:814.48,814.79 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:823.52,823.68 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:824.52,824.76 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:826.108,827.36 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:830.2,830.60 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:827.36,829.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:833.101,835.2 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:837.101,839.19 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:842.2,842.70 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:839.19,841.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:845.97,847.19 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:850.2,851.21 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:854.2,855.35 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:858.2,858.18 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:847.19,849.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:851.21,853.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:855.35,857.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:861.94,863.2 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:865.92,867.2 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:869.104,871.2 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:873.88,875.2 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:877.95,879.2 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:881.57,881.75 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:883.91,884.24 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:887.44,888.64 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/simulated.go:888.64,891.3 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/bor_simulated.go:13.108,15.19 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/bor_simulated.go:18.2,19.20 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/bor_simulated.go:23.2,23.21 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/bor_simulated.go:15.19,17.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/bor_simulated.go:19.20,21.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/bor_simulated.go:26.103,28.34 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/bor_simulated.go:32.2,32.26 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/bor_simulated.go:28.34,30.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/backends/bor_simulated.go:36.100,38.2 1 1 -github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:31.65,32.21 1 1 -github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:35.2,35.47 1 1 -github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:32.21,34.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:40.54,41.64 1 1 -github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:45.2,45.43 1 1 -github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:49.2,49.48 1 1 -github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:55.2,55.57 1 1 -github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:58.2,58.12 1 1 -github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:41.64,43.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:45.43,47.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:49.48,50.20 1 1 -github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:50.20,52.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:55.57,57.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:63.51,64.38 1 1 -github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:69.2,69.40 1 1 -github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:64.38,66.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:69.40,71.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:71.8,71.57 1 1 -github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:71.57,73.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:73.8,75.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/error_handling.go:80.47,82.2 1 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:13.27,15.2 1 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:17.27,19.2 1 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:21.38,23.2 1 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:25.81,26.33 1 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:29.2,31.73 3 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:34.2,34.40 1 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:41.2,41.72 1 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:26.33,28.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:31.73,33.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:34.40,36.81 2 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:39.3,39.13 1 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:36.81,37.9 1 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:44.72,46.2 1 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:48.76,50.16 2 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:54.2,54.38 1 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:67.2,67.30 1 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:50.16,52.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:54.38,57.41 3 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:61.3,61.39 1 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:64.3,65.18 2 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:57.41,60.4 2 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:61.39,63.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:70.82,71.64 1 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:74.2,75.16 2 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:78.2,79.38 2 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:86.2,86.38 1 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:89.2,89.30 1 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:71.64,73.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:75.16,77.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:79.38,81.17 2 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:84.3,84.38 1 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:81.17,83.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:86.38,88.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:92.71,93.33 1 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:96.2,96.33 1 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:93.33,95.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:96.33,98.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:98.8,100.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:103.69,105.27 2 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:120.2,120.23 1 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:105.27,108.32 2 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:108.32,110.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:110.9,110.55 1 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:110.55,112.18 2 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:115.4,115.93 1 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:112.18,114.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:116.9,118.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:127.74,129.16 2 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:132.2,133.56 2 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:141.2,141.19 1 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:146.2,147.16 2 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:151.2,151.60 1 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:129.16,131.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:133.56,135.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:135.8,137.17 2 1 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:137.17,139.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:141.19,143.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/selector_parser.go:147.16,149.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:36.50,37.21 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:52.2,52.18 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:37.21,38.19 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:39.10,40.22 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:41.11,42.48 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:43.11,44.48 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:45.11,46.48 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:47.11,49.35 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:53.9,54.27 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:55.10,56.54 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:57.10,58.54 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:59.10,60.54 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:61.10,67.24 2 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:72.3,72.13 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:67.24,71.4 3 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:77.42,78.30 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:83.2,83.18 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:78.30,79.13 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:79.13,81.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:84.9,85.20 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:86.9,87.19 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:88.10,89.27 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:96.73,97.23 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:100.2,100.67 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:105.2,105.8 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:97.23,99.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:100.67,102.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:102.8,104.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:109.63,110.25 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:114.2,117.31 3 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:110.25,112.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:122.81,123.14 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:126.2,126.33 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:131.2,133.20 2 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:145.2,147.57 2 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:158.2,158.34 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:123.14,125.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:126.33,128.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:133.20,136.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:136.8,136.27 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:136.27,139.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:139.8,141.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:147.57,149.17 2 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:154.3,154.48 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:149.17,151.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:161.65,164.40 3 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:188.2,188.32 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:164.40,166.49 2 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:183.3,183.17 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:186.3,186.60 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:166.49,178.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:178.9,178.56 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:178.56,182.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:183.17,185.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:193.70,194.28 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:198.2,205.30 2 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:214.2,214.13 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:194.28,196.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:205.30,207.17 2 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:207.17,209.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:210.8,212.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:215.15,216.23 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:223.3,223.43 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:224.15,225.53 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:226.15,227.29 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:234.3,234.53 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:235.16,236.51 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:237.21,238.43 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:239.14,240.32 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:241.17,242.50 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:243.14,244.47 1 0 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:245.15,246.43 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:247.20,248.41 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:249.18,250.43 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:251.10,252.54 1 0 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:216.23,218.18 2 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:221.4,221.44 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:218.18,220.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:227.29,229.36 2 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:232.4,232.55 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:229.36,231.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:257.88,262.40 4 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:266.2,266.32 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:270.2,276.29 6 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:280.2,280.37 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:283.2,285.8 3 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:262.40,264.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:266.32,268.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:276.29,278.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:280.37,282.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:289.69,293.31 3 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:296.2,296.26 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:299.2,299.34 1 1 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:293.31,295.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/unpack.go:296.26,298.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/error.go:42.52,47.31 3 1 -github.com/ethereum/go-ethereum/accounts/abi/error.go:66.2,76.3 4 1 -github.com/ethereum/go-ethereum/accounts/abi/error.go:47.31,48.23 1 1 -github.com/ethereum/go-ethereum/accounts/abi/error.go:58.3,59.20 2 1 -github.com/ethereum/go-ethereum/accounts/abi/error.go:63.3,63.33 1 1 -github.com/ethereum/go-ethereum/accounts/abi/error.go:48.23,54.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/error.go:54.9,56.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/error.go:59.20,61.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/error.go:79.33,81.2 1 0 -github.com/ethereum/go-ethereum/accounts/abi/error.go:83.58,84.19 1 0 -github.com/ethereum/go-ethereum/accounts/abi/error.go:87.2,87.38 1 0 -github.com/ethereum/go-ethereum/accounts/abi/error.go:90.2,90.34 1 0 -github.com/ethereum/go-ethereum/accounts/abi/error.go:84.19,86.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/error.go:87.38,89.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/event.go:59.77,64.31 3 1 -github.com/ethereum/go-ethereum/accounts/abi/event.go:83.2,95.3 4 1 -github.com/ethereum/go-ethereum/accounts/abi/event.go:64.31,65.23 1 1 -github.com/ethereum/go-ethereum/accounts/abi/event.go:75.3,76.20 2 1 -github.com/ethereum/go-ethereum/accounts/abi/event.go:80.3,80.33 1 1 -github.com/ethereum/go-ethereum/accounts/abi/event.go:65.23,71.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/event.go:71.9,73.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/event.go:76.20,78.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/event.go:98.32,100.2 1 1 -github.com/ethereum/go-ethereum/accounts/abi/method.go:94.155,100.31 2 1 -github.com/ethereum/go-ethereum/accounts/abi/method.go:104.2,104.33 1 1 -github.com/ethereum/go-ethereum/accounts/abi/method.go:112.2,116.25 2 1 -github.com/ethereum/go-ethereum/accounts/abi/method.go:122.2,123.27 2 1 -github.com/ethereum/go-ethereum/accounts/abi/method.go:126.2,126.17 1 1 -github.com/ethereum/go-ethereum/accounts/abi/method.go:129.2,130.25 2 1 -github.com/ethereum/go-ethereum/accounts/abi/method.go:137.2,151.3 2 1 -github.com/ethereum/go-ethereum/accounts/abi/method.go:100.31,103.3 2 1 -github.com/ethereum/go-ethereum/accounts/abi/method.go:104.33,106.27 2 1 -github.com/ethereum/go-ethereum/accounts/abi/method.go:106.27,108.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/method.go:116.25,119.3 2 1 -github.com/ethereum/go-ethereum/accounts/abi/method.go:123.27,125.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/method.go:126.17,128.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/method.go:130.25,132.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/method.go:132.8,132.31 1 1 -github.com/ethereum/go-ethereum/accounts/abi/method.go:132.31,134.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/method.go:134.8,134.35 1 1 -github.com/ethereum/go-ethereum/accounts/abi/method.go:134.35,136.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/method.go:154.38,156.2 1 1 -github.com/ethereum/go-ethereum/accounts/abi/method.go:159.40,161.2 1 0 -github.com/ethereum/go-ethereum/accounts/abi/method.go:165.39,167.2 1 0 -github.com/ethereum/go-ethereum/accounts/abi/pack.go:31.49,34.2 2 1 -github.com/ethereum/go-ethereum/accounts/abi/pack.go:38.70,39.13 1 1 -github.com/ethereum/go-ethereum/accounts/abi/pack.go:40.21,41.36 1 1 -github.com/ethereum/go-ethereum/accounts/abi/pack.go:42.16,43.80 1 1 -github.com/ethereum/go-ethereum/accounts/abi/pack.go:44.17,45.43 1 1 -github.com/ethereum/go-ethereum/accounts/abi/pack.go:49.3,49.60 1 1 -github.com/ethereum/go-ethereum/accounts/abi/pack.go:50.14,51.26 1 1 -github.com/ethereum/go-ethereum/accounts/abi/pack.go:54.3,54.51 1 1 -github.com/ethereum/go-ethereum/accounts/abi/pack.go:55.15,56.43 1 1 -github.com/ethereum/go-ethereum/accounts/abi/pack.go:59.3,59.54 1 1 -github.com/ethereum/go-ethereum/accounts/abi/pack.go:62.3,62.71 1 1 -github.com/ethereum/go-ethereum/accounts/abi/pack.go:63.32,64.43 1 1 -github.com/ethereum/go-ethereum/accounts/abi/pack.go:67.3,67.61 1 1 -github.com/ethereum/go-ethereum/accounts/abi/pack.go:68.10,69.79 1 0 -github.com/ethereum/go-ethereum/accounts/abi/pack.go:45.43,47.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/pack.go:51.26,53.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/pack.go:56.43,58.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/pack.go:59.54,61.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/pack.go:64.43,66.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/pack.go:74.42,75.36 1 1 -github.com/ethereum/go-ethereum/accounts/abi/pack.go:76.83,77.62 1 1 -github.com/ethereum/go-ethereum/accounts/abi/pack.go:78.78,79.49 1 1 -github.com/ethereum/go-ethereum/accounts/abi/pack.go:80.19,81.72 1 1 -github.com/ethereum/go-ethereum/accounts/abi/pack.go:82.10,83.28 1 0 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:38.65,40.49 2 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:44.2,44.73 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:47.2,47.14 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:40.49,42.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:44.73,45.13 1 0 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:52.46,53.77 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:56.2,56.10 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:53.77,55.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:61.59,62.14 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:74.2,74.14 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:84.2,84.35 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:62.14,63.15 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:64.10,65.35 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:66.11,67.36 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:68.11,69.36 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:70.11,71.36 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:75.9,76.33 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:77.10,78.34 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:79.10,80.34 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:81.10,82.34 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:89.62,93.2 3 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:99.40,101.9 2 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:117.2,117.12 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:102.67,103.30 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:104.84,105.30 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:106.53,107.15 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:108.90,109.28 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:110.39,111.28 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:112.40,113.29 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:114.10,115.81 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:123.45,125.33 2 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:130.2,130.18 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:134.2,134.65 1 0 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:125.33,126.59 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:126.59,128.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:130.18,133.3 2 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:137.45,138.31 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:141.2,143.27 3 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:146.2,146.27 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:151.2,151.18 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:155.2,155.65 1 0 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:138.31,140.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:143.27,145.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:146.27,147.59 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:147.59,149.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:151.18,154.3 2 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:158.46,159.38 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:169.2,169.12 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:159.38,162.49 3 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:165.3,165.49 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:162.49,164.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:165.49,167.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:179.99,186.38 4 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:222.2,222.35 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:259.2,259.24 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:186.38,190.66 2 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:194.3,195.10 2 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:199.3,199.20 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:203.3,204.32 2 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:216.3,216.13 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:190.66,191.12 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:195.10,196.12 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:199.20,201.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:204.32,205.22 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:205.22,206.30 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:210.5,212.17 3 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:206.30,208.6 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:216.13,218.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:222.35,226.28 2 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:234.3,234.32 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:244.3,244.40 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:248.3,248.51 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:226.28,228.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:234.32,237.50 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:240.4,240.12 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:237.50,239.5 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:244.40,246.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:248.51,252.4 2 1 -github.com/ethereum/go-ethereum/accounts/abi/reflect.go:252.9,257.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:47.42,51.41 3 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:54.2,54.17 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:51.41,53.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:62.71,64.16 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:72.2,73.12 2 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:76.2,77.16 2 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:81.2,81.45 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:64.16,67.17 2 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:70.3,70.24 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:67.17,69.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:73.12,75.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:77.16,79.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:84.74,88.41 2 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:94.2,94.39 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:97.2,97.17 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:100.2,100.18 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:88.41,89.24 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:92.3,92.24 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:89.24,91.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:94.39,96.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:97.17,99.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:104.72,106.16 2 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:109.2,109.26 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:106.16,108.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:115.83,117.16 2 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:120.2,121.16 2 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:124.2,124.31 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:117.16,119.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:121.16,123.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:128.94,130.16 2 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:133.2,133.36 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:130.16,132.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:137.50,156.54 2 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:159.2,162.31 4 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:195.2,195.12 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:156.54,158.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:162.31,163.21 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:164.22,165.125 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:166.19,167.59 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:168.4,168.144 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:169.19,172.25 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:175.4,175.110 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:176.18,179.24 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:182.4,182.42 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:185.4,185.108 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:186.16,187.59 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:188.4,188.80 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:189.16,190.63 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:191.11,192.93 1 0 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:167.59,167.97 2 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:172.25,174.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:179.24,181.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:182.42,184.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:187.59,187.96 2 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:200.61,201.22 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:204.2,204.37 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:209.2,209.63 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:201.22,203.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:204.37,205.42 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:205.42,207.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:214.62,215.35 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:220.2,220.62 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:215.35,216.51 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:216.51,218.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:224.36,226.2 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:229.35,231.2 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:240.48,241.19 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:244.2,244.44 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:247.2,249.16 3 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:252.2,252.34 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:241.19,243.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:244.44,246.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:249.16,251.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:262.71,265.26 3 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:269.2,269.13 1 1 -github.com/ethereum/go-ethereum/accounts/abi/abi.go:265.26,268.3 2 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:45.60,48.16 3 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:52.2,53.16 2 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:56.2,59.12 3 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:48.16,50.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:53.16,55.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:63.51,65.32 2 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:70.2,70.12 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:65.32,66.19 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:66.19,68.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:74.43,76.2 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:79.71,80.20 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:86.2,86.37 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:80.20,81.26 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:84.3,84.37 1 0 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:81.26,83.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:90.87,92.14 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:95.2,95.20 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:101.2,102.16 2 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:105.2,105.45 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:108.2,108.12 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:92.14,94.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:95.20,96.26 1 0 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:99.3,99.13 1 0 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:96.26,98.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:102.16,104.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:105.45,107.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:112.76,114.46 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:117.2,117.22 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:123.2,123.25 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:126.2,126.43 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:114.46,116.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:117.22,118.26 1 0 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:121.3,121.13 1 0 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:118.26,120.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:123.25,125.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:130.90,134.34 3 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:137.2,137.22 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:134.34,136.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:141.91,145.22 3 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:177.2,177.12 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:146.22,148.38 2 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:151.3,153.17 3 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:156.3,156.38 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:165.36,166.42 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:169.3,169.33 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:174.10,175.77 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:148.38,150.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:153.17,155.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:156.38,158.24 2 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:161.4,161.75 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:158.24,160.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:161.75,163.5 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:166.42,168.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:169.33,170.84 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:170.84,172.5 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:183.77,187.41 4 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:211.2,211.20 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:187.41,189.56 2 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:206.3,206.17 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:209.3,209.43 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:189.56,201.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:201.9,201.63 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:201.63,205.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:206.17,208.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:216.75,218.2 1 0 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:221.70,224.31 2 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:229.2,233.33 3 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:236.2,237.25 2 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:258.2,260.17 2 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:224.31,226.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:233.33,235.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:237.25,241.17 3 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:245.3,245.32 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:241.17,243.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:245.32,252.4 3 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:252.9,255.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:264.39,266.26 2 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:271.2,271.32 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:266.26,267.17 1 1 -github.com/ethereum/go-ethereum/accounts/abi/argument.go:267.17,269.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:31.66,33.31 2 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:98.2,98.20 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:33.31,34.31 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:34.31,38.31 2 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:95.4,95.40 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:39.21,40.28 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:41.24,42.66 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:43.18,45.52 2 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:46.14,47.13 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:50.14,51.47 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:52.15,53.47 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:54.15,55.47 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:56.15,57.40 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:58.15,60.52 2 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:61.16,63.52 2 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:64.16,66.52 2 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:67.16,69.52 2 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:70.16,72.28 2 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:73.16,75.28 2 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:77.12,87.12 2 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:47.13,49.6 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:89.93,90.59 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:91.13,92.66 1 0 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:101.47,103.14 2 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:108.2,108.34 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:111.2,111.17 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:103.14,107.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:108.34,110.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:115.81,117.44 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:117.44,120.4 2 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:124.99,126.44 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:126.44,128.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:136.109,138.32 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:142.2,142.29 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:172.2,172.12 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:138.32,140.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:142.29,143.19 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:146.3,147.21 2 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:169.3,169.24 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:143.19,145.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:148.16,149.59 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:150.44,153.24 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:154.19,155.72 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:158.4,160.18 3 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:161.11,164.18 3 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:155.72,157.5 1 1 -github.com/ethereum/go-ethereum/accounts/abi/topics.go:164.18,166.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/type.go:68.100,70.52 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:73.2,77.32 2 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:115.2,116.23 2 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:119.2,123.28 3 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:137.2,137.43 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:214.2,214.8 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:70.52,72.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:77.32,80.57 2 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:84.3,86.17 3 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:90.3,95.21 4 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:112.3,112.18 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:80.57,82.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/type.go:86.17,88.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:95.21,100.4 3 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:100.9,100.28 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:100.28,105.18 4 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:108.4,108.53 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:105.18,107.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/type.go:109.9,111.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/type.go:116.23,118.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:123.28,126.17 3 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:126.17,128.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/type.go:129.8,130.56 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:130.56,134.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:138.13,140.16 2 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:141.14,143.17 2 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:144.14,145.17 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:146.17,148.20 2 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:149.16,150.19 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:151.15,152.19 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:158.15,167.34 4 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:189.3,201.74 8 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:207.18,209.16 2 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:210.10,211.59 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:152.19,154.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:154.9,157.4 2 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:167.34,169.18 2 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:172.4,173.18 2 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:176.4,185.32 6 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:169.18,171.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/type.go:173.18,175.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/type.go:185.32,187.5 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:201.74,205.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:218.38,219.13 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:220.13,221.39 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:222.14,223.38 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:224.14,225.31 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:226.16,227.28 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:228.15,229.43 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:230.15,231.51 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:232.15,233.21 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:234.17,235.42 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:236.20,237.58 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:238.15,239.50 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:240.14,242.54 1 0 -github.com/ethereum/go-ethereum/accounts/abi/type.go:243.20,245.54 1 0 -github.com/ethereum/go-ethereum/accounts/abi/type.go:246.18,247.54 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:248.10,249.24 1 0 -github.com/ethereum/go-ethereum/accounts/abi/type.go:253.81,255.21 2 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:259.2,260.26 2 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:264.2,264.23 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:255.21,257.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/type.go:260.26,263.3 2 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:268.37,270.2 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:272.53,275.40 2 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:279.2,279.13 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:275.40,277.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:280.24,283.31 2 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:289.3,291.16 3 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:294.3,295.32 2 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:308.3,308.35 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:309.15,320.17 2 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:324.3,325.37 2 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:328.3,329.37 2 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:346.3,346.35 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:348.10,349.27 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:283.31,286.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:291.16,293.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:295.32,297.18 2 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:300.4,300.18 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:304.4,306.31 3 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:297.18,299.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/type.go:300.18,302.13 2 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:320.17,322.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/type.go:325.37,327.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:329.37,331.24 2 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:334.4,335.18 2 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:338.4,338.28 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:331.24,333.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/type.go:335.18,337.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/type.go:338.28,342.5 3 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:342.10,344.5 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:355.43,357.2 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:366.33,367.20 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:375.2,375.106 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:367.20,368.37 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:373.3,373.15 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:368.37,369.28 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:369.28,371.5 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:386.30,387.47 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:400.2,400.11 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:387.47,389.49 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:392.3,392.21 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:389.49,391.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:393.8,393.48 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:393.48,395.37 2 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:398.3,398.15 1 1 -github.com/ethereum/go-ethereum/accounts/abi/type.go:395.37,397.4 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:57.36,57.54 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:60.43,61.21 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:64.2,64.25 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:67.2,68.16 2 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:71.2,71.15 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:61.21,63.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:64.25,66.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:68.16,70.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:75.38,77.16 2 0 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:80.2,80.12 1 0 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:77.16,78.13 1 0 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:84.30,89.2 4 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:92.49,94.16 2 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:97.2,98.16 2 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:101.2,101.17 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:94.16,96.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:98.16,100.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:106.44,108.16 2 0 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:111.2,111.12 1 0 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:108.16,109.13 1 0 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:115.36,119.2 3 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:123.13,127.23 2 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:128.9,129.22 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:130.9,131.21 1 0 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:132.10,133.31 1 0 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:139.48,141.16 2 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:144.2,144.19 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:147.2,149.23 3 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:164.2,165.17 2 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:141.16,143.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:144.19,146.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:149.23,151.16 2 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:154.3,154.35 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:162.3,162.14 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:151.16,153.4 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:154.35,156.24 2 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:159.4,160.29 2 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:156.24,158.5 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:170.43,172.16 2 0 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:175.2,175.12 1 0 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:172.16,173.13 1 0 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:179.40,180.38 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:180.38,182.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:182.8,182.21 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:182.21,184.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:184.8,186.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:189.37,191.2 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:193.56,194.21 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:197.2,197.25 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:200.2,201.21 2 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:204.2,204.39 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:207.2,207.19 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:194.21,196.3 1 0 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:197.25,199.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:201.21,203.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:204.39,206.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:212.35,213.9 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:214.30,215.26 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:216.30,217.31 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:218.30,219.31 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:220.10,221.19 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:225.32,226.44 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:234.2,234.45 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:237.2,237.26 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:240.2,240.12 1 0 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:226.44,227.18 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:228.25,229.25 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:230.26,231.20 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:234.45,236.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/hexutil.go:237.26,239.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:40.46,45.2 4 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:48.51,49.22 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:52.2,52.70 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:49.22,51.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:56.51,58.16 2 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:61.2,62.47 2 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:67.2,67.12 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:58.16,60.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:62.47,64.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:64.8,66.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:71.32,73.2 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:76.56,76.82 1 0 -github.com/ethereum/go-ethereum/common/hexutil/json.go:79.59,81.31 2 0 -github.com/ethereum/go-ethereum/common/hexutil/json.go:91.2,91.12 1 0 -github.com/ethereum/go-ethereum/common/hexutil/json.go:82.14,84.17 2 0 -github.com/ethereum/go-ethereum/common/hexutil/json.go:87.3,87.12 1 0 -github.com/ethereum/go-ethereum/common/hexutil/json.go:88.10,89.58 1 0 -github.com/ethereum/go-ethereum/common/hexutil/json.go:84.17,86.4 1 0 -github.com/ethereum/go-ethereum/common/hexutil/json.go:97.68,98.22 1 0 -github.com/ethereum/go-ethereum/common/hexutil/json.go:101.2,101.89 1 0 -github.com/ethereum/go-ethereum/common/hexutil/json.go:98.22,100.3 1 0 -github.com/ethereum/go-ethereum/common/hexutil/json.go:107.66,109.16 2 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:112.2,112.28 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:116.2,116.24 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:121.2,122.12 2 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:109.16,111.3 1 0 -github.com/ethereum/go-ethereum/common/hexutil/json.go:112.28,114.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:116.24,117.35 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:117.35,119.4 1 0 -github.com/ethereum/go-ethereum/common/hexutil/json.go:128.76,130.16 2 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:133.2,133.28 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:137.2,137.24 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:142.2,143.12 2 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:130.16,132.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:133.28,135.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:137.24,138.35 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:138.35,140.4 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:155.44,157.2 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:160.49,161.22 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:164.2,164.68 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:161.22,163.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:168.49,170.16 2 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:173.2,173.19 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:176.2,178.23 3 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:193.2,196.12 4 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:170.16,172.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:173.19,175.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:178.23,180.16 2 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:183.3,183.35 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:191.3,191.14 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:180.16,182.4 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:183.35,185.24 2 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:188.4,189.29 2 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:185.24,187.5 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:200.32,202.2 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:205.31,207.2 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:210.54,210.81 1 0 -github.com/ethereum/go-ethereum/common/hexutil/json.go:213.57,215.31 2 0 -github.com/ethereum/go-ethereum/common/hexutil/json.go:225.2,225.12 1 0 -github.com/ethereum/go-ethereum/common/hexutil/json.go:216.14,217.40 1 0 -github.com/ethereum/go-ethereum/common/hexutil/json.go:218.13,221.16 3 0 -github.com/ethereum/go-ethereum/common/hexutil/json.go:222.10,223.59 1 0 -github.com/ethereum/go-ethereum/common/hexutil/json.go:233.47,238.2 4 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:241.52,242.22 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:245.2,245.71 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:242.22,244.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:249.52,251.16 2 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:254.2,254.19 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:257.2,258.27 2 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:266.2,267.12 2 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:251.16,253.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:254.19,256.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:258.27,260.23 2 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:263.3,264.13 2 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:260.23,262.4 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:271.33,273.2 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:276.57,276.82 1 0 -github.com/ethereum/go-ethereum/common/hexutil/json.go:279.60,281.31 2 0 -github.com/ethereum/go-ethereum/common/hexutil/json.go:289.2,289.12 1 0 -github.com/ethereum/go-ethereum/common/hexutil/json.go:282.14,283.40 1 0 -github.com/ethereum/go-ethereum/common/hexutil/json.go:284.13,285.21 1 0 -github.com/ethereum/go-ethereum/common/hexutil/json.go:286.10,287.57 1 0 -github.com/ethereum/go-ethereum/common/hexutil/json.go:297.45,299.2 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:302.50,303.22 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:306.2,306.69 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:303.22,305.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:310.50,313.53 3 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:318.2,319.12 2 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:313.53,315.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:315.8,315.23 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:315.23,317.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:323.31,325.2 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:327.34,329.2 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:331.43,333.2 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:335.63,336.21 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:339.2,339.30 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:344.2,344.23 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:347.2,347.19 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:336.21,338.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:339.30,341.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:341.8,341.23 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:341.23,343.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:344.23,346.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:350.60,351.21 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:354.2,354.31 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:357.2,358.21 2 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:361.2,361.39 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:364.2,364.19 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:351.21,353.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:354.31,356.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:358.21,360.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:361.39,363.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:367.55,368.34 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:371.2,371.12 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:368.34,370.3 1 1 -github.com/ethereum/go-ethereum/common/hexutil/json.go:374.43,376.2 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:46.51,50.2 3 0 -github.com/ethereum/go-ethereum/common/math/big.go:53.61,55.9 2 1 -github.com/ethereum/go-ethereum/common/math/big.go:58.2,59.12 2 1 -github.com/ethereum/go-ethereum/common/math/big.go:55.9,57.3 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:63.57,64.14 1 0 -github.com/ethereum/go-ethereum/common/math/big.go:67.2,67.55 1 0 -github.com/ethereum/go-ethereum/common/math/big.go:64.14,66.3 1 0 -github.com/ethereum/go-ethereum/common/math/big.go:75.41,79.2 3 0 -github.com/ethereum/go-ethereum/common/math/big.go:82.56,84.9 2 0 -github.com/ethereum/go-ethereum/common/math/big.go:87.2,88.12 2 0 -github.com/ethereum/go-ethereum/common/math/big.go:84.9,86.3 1 0 -github.com/ethereum/go-ethereum/common/math/big.go:92.52,94.2 1 0 -github.com/ethereum/go-ethereum/common/math/big.go:97.38,98.14 1 0 -github.com/ethereum/go-ethereum/common/math/big.go:101.2,101.42 1 0 -github.com/ethereum/go-ethereum/common/math/big.go:98.14,100.3 1 0 -github.com/ethereum/go-ethereum/common/math/big.go:106.45,107.13 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:110.2,112.53 3 1 -github.com/ethereum/go-ethereum/common/math/big.go:117.2,117.33 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:120.2,120.19 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:107.13,109.3 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:112.53,114.3 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:114.8,116.3 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:117.33,119.3 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:124.41,126.9 2 1 -github.com/ethereum/go-ethereum/common/math/big.go:129.2,129.10 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:126.9,127.41 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:133.34,136.2 2 1 -github.com/ethereum/go-ethereum/common/math/big.go:139.37,140.18 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:143.2,143.10 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:140.18,142.3 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:147.37,148.18 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:151.2,151.10 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:148.18,150.3 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:155.34,156.34 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:161.2,161.19 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:156.34,157.19 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:157.19,159.4 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:166.52,167.28 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:170.2,172.12 3 1 -github.com/ethereum/go-ethereum/common/math/big.go:167.28,169.3 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:178.51,182.21 3 1 -github.com/ethereum/go-ethereum/common/math/big.go:185.2,189.28 3 1 -github.com/ethereum/go-ethereum/common/math/big.go:182.21,184.3 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:196.51,197.20 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:200.2,200.47 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:197.20,199.3 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:205.44,207.34 2 1 -github.com/ethereum/go-ethereum/common/math/big.go:207.34,208.43 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:208.43,212.4 3 1 -github.com/ethereum/go-ethereum/common/math/big.go:217.32,219.2 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:223.35,225.2 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:234.32,235.22 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:238.2,238.35 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:235.22,237.3 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:246.44,249.39 2 1 -github.com/ethereum/go-ethereum/common/math/big.go:258.2,258.15 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:249.39,250.33 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:250.33,251.19 1 1 -github.com/ethereum/go-ethereum/common/math/big.go:254.4,255.14 2 1 -github.com/ethereum/go-ethereum/common/math/big.go:251.19,253.5 1 1 -github.com/ethereum/go-ethereum/common/math/integer.go:45.60,47.9 2 1 -github.com/ethereum/go-ethereum/common/math/integer.go:50.2,51.12 2 1 -github.com/ethereum/go-ethereum/common/math/integer.go:47.9,49.3 1 1 -github.com/ethereum/go-ethereum/common/math/integer.go:55.55,57.2 1 0 -github.com/ethereum/go-ethereum/common/math/integer.go:61.43,62.13 1 1 -github.com/ethereum/go-ethereum/common/math/integer.go:65.2,65.53 1 1 -github.com/ethereum/go-ethereum/common/math/integer.go:69.2,70.22 2 1 -github.com/ethereum/go-ethereum/common/math/integer.go:62.13,64.3 1 1 -github.com/ethereum/go-ethereum/common/math/integer.go:65.53,68.3 2 1 -github.com/ethereum/go-ethereum/common/math/integer.go:74.39,76.9 2 1 -github.com/ethereum/go-ethereum/common/math/integer.go:79.2,79.10 1 1 -github.com/ethereum/go-ethereum/common/math/integer.go:76.9,77.49 1 1 -github.com/ethereum/go-ethereum/common/math/integer.go:83.42,86.2 2 1 -github.com/ethereum/go-ethereum/common/math/integer.go:89.42,92.2 2 1 -github.com/ethereum/go-ethereum/common/math/integer.go:95.42,98.2 2 1 -github.com/ethereum/go-ethereum/common/mclock/mclock.go:34.20,36.2 1 0 -github.com/ethereum/go-ethereum/common/mclock/mclock.go:39.47,41.2 1 1 -github.com/ethereum/go-ethereum/common/mclock/mclock.go:44.48,46.2 1 0 -github.com/ethereum/go-ethereum/common/mclock/mclock.go:80.31,82.2 1 0 -github.com/ethereum/go-ethereum/common/mclock/mclock.go:85.40,87.2 1 0 -github.com/ethereum/go-ethereum/common/mclock/mclock.go:90.53,92.32 2 0 -github.com/ethereum/go-ethereum/common/mclock/mclock.go:101.2,101.28 1 0 -github.com/ethereum/go-ethereum/common/mclock/mclock.go:92.32,96.10 1 0 -github.com/ethereum/go-ethereum/common/mclock/mclock.go:97.22,97.22 0 0 -github.com/ethereum/go-ethereum/common/mclock/mclock.go:98.11,98.11 0 0 -github.com/ethereum/go-ethereum/common/mclock/mclock.go:105.55,107.27 2 0 -github.com/ethereum/go-ethereum/common/mclock/mclock.go:108.2,108.11 1 0 -github.com/ethereum/go-ethereum/common/mclock/mclock.go:107.27,107.44 1 0 -github.com/ethereum/go-ethereum/common/mclock/mclock.go:112.60,114.2 1 0 -github.com/ethereum/go-ethereum/common/mclock/mclock.go:121.47,123.2 1 0 -github.com/ethereum/go-ethereum/common/mclock/mclock.go:125.43,127.2 1 0 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:50.28,51.19 1 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:51.19,53.3 1 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:57.42,63.55 5 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:67.2,70.24 3 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:63.55,66.3 2 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:70.24,72.3 1 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:76.40,81.2 3 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:84.42,89.27 4 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:89.27,91.3 1 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:95.35,100.2 3 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:103.44,105.2 1 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:108.57,114.31 5 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:115.2,116.14 2 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:114.31,114.49 1 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:121.59,123.2 1 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:127.65,132.2 3 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:134.68,142.2 6 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:144.33,148.18 3 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:151.2,154.13 4 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:148.18,150.3 1 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:157.44,158.18 1 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:162.2,165.18 4 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:170.2,170.23 1 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:158.18,159.57 1 0 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:165.18,167.3 1 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:167.8,169.3 1 0 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:173.40,174.18 1 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:177.2,177.14 1 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:174.18,175.53 1 0 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:182.34,184.2 1 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:186.44,188.2 1 0 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:190.39,194.2 3 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:196.44,200.2 3 1 -github.com/ethereum/go-ethereum/common/mclock/simclock.go:202.42,209.2 6 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:56.55,59.16 3 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:62.2,62.19 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:65.2,65.13 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:59.16,60.61 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:62.19,64.3 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:69.47,71.2 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:74.82,78.2 3 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:83.64,84.25 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:87.2,87.16 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:94.2,100.29 5 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:104.2,104.26 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:84.25,85.31 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:87.16,88.73 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:100.29,102.3 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:107.60,108.25 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:114.2,114.18 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:121.2,123.20 3 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:108.25,109.31 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:114.18,116.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:123.20,124.39 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:124.39,126.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:130.66,131.38 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:137.2,141.16 3 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:131.38,135.3 2 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:145.62,148.38 3 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:151.2,152.19 2 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:157.2,157.81 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:148.38,150.3 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:152.19,154.3 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:161.58,162.25 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:165.2,167.36 3 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:175.2,176.14 2 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:162.25,163.31 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:167.36,168.31 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:171.3,171.31 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:168.31,170.4 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:171.31,173.4 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:176.14,178.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:178.8,180.3 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:183.63,185.38 2 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:188.2,188.12 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:185.38,187.3 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:191.56,192.25 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:195.2,196.38 2 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:192.25,193.31 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:196.38,198.3 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:202.60,203.21 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:206.2,207.31 2 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:210.2,210.17 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:203.21,205.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:207.31,209.3 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:214.48,220.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:224.59,225.60 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:228.2,228.97 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:225.60,227.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:233.92,234.60 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:237.2,237.102 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:240.2,240.16 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:234.60,236.3 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:237.102,239.3 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:246.82,247.48 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:250.2,251.40 2 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:247.48,249.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:255.38,257.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:260.58,263.38 2 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:270.2,271.12 2 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:263.38,266.32 2 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:266.32,268.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:276.52,277.32 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:284.2,284.30 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:277.32,279.55 2 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:279.55,281.14 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:289.63,290.31 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:293.2,293.26 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:296.2,296.29 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:290.31,292.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:293.26,295.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:299.53,301.38 2 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:306.2,306.17 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:301.38,302.85 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:302.85,304.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:323.76,324.38 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:324.38,326.11 2 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:326.11,327.9 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:339.91,349.36 6 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:370.2,370.31 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:349.36,350.63 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:354.3,354.32 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:358.3,358.50 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:363.3,363.33 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:368.3,368.31 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:350.63,353.4 2 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:354.32,357.4 2 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:358.50,362.4 2 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:363.33,365.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:365.9,367.4 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:384.127,388.36 2 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:408.2,408.55 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:388.36,391.17 3 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:399.3,400.15 2 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:391.17,395.4 2 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:395.9,398.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:400.15,405.4 2 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:416.100,418.36 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:418.36,421.17 3 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:421.17,431.4 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:431.9,433.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:442.62,448.44 4 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:465.2,465.37 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:470.2,470.36 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:475.2,475.30 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:448.44,449.81 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:461.3,461.6 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:449.81,452.4 2 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:452.9,455.76 2 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:459.4,459.25 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:455.76,458.5 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:465.37,468.3 2 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:470.36,473.3 2 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:480.69,482.36 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:489.2,489.41 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:492.2,492.12 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:482.36,485.17 3 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:485.17,487.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:489.41,490.40 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:497.63,505.23 4 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:516.2,516.37 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:521.2,521.30 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:505.23,506.75 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:512.3,512.26 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:506.75,508.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:508.9,511.4 2 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:516.37,519.3 2 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:528.94,530.23 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:535.2,536.16 2 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:540.2,540.40 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:545.2,545.54 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:550.2,551.16 2 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:556.2,556.67 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:561.2,567.54 4 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:572.2,575.12 3 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:530.23,532.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:536.16,538.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:540.40,542.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:545.54,547.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:551.16,553.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:556.67,558.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:567.54,569.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:590.75,592.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:597.41,598.20 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:599.24,600.14 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:601.10,602.15 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:611.42,613.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:617.43,619.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:621.64,622.17 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:625.2,626.52 2 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:630.2,638.10 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:622.17,624.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:626.52,629.3 2 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:648.43,650.2 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:652.53,654.2 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:656.48,660.2 3 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:665.40,666.34 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:671.2,671.21 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:666.34,668.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:668.8,668.41 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:668.41,670.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:674.40,675.34 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:680.2,680.21 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:675.34,677.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:677.8,677.41 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:677.41,679.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:683.36,685.14 2 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:691.2,691.10 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:685.14,686.12 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:689.3,689.23 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:686.12,688.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:694.36,696.14 2 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:702.2,702.10 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:696.14,697.12 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:700.3,700.23 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator_set.go:697.12,699.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:129.107,132.49 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:136.2,136.35 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:139.2,143.16 3 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:146.2,150.20 4 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:132.49,134.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:136.35,138.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:143.16,145.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:154.77,159.2 4 1 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:161.78,179.40 2 1 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:184.2,184.43 1 1 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:179.40,180.28 1 1 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:180.28,182.4 1 1 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:184.43,185.40 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:190.83,194.26 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:197.2,197.20 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:200.2,200.14 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:194.26,196.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:197.20,199.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:210.63,214.2 3 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:248.8,253.47 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:258.2,279.53 8 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:285.2,285.10 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:253.47,255.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:279.53,280.61 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:280.61,281.87 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:290.68,292.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:295.102,297.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:302.135,306.12 3 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:317.2,317.23 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:306.12,307.34 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:307.34,310.11 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:311.17,312.11 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:313.24,313.24 0 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:324.116,325.26 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:328.2,331.45 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:335.2,335.63 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:340.2,344.39 3 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:347.2,347.65 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:351.2,351.41 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:355.2,355.35 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:359.2,359.16 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:365.2,366.27 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:370.2,370.77 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:374.2,374.56 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:325.26,327.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:331.45,333.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:335.63,337.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:344.39,346.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:347.65,349.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:351.41,353.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:355.35,357.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:359.16,360.31 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:360.31,362.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:366.27,368.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:370.77,372.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:379.56,380.35 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:383.2,383.45 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:386.2,386.12 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:380.35,382.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:383.45,385.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:393.125,396.17 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:401.2,402.22 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:408.2,408.95 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:413.2,413.38 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:416.2,416.45 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:429.2,429.64 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:434.2,435.16 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:440.2,440.44 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:457.2,457.45 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:396.17,398.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:402.22,404.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:404.8,406.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:408.95,410.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:413.38,415.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:416.45,418.28 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:421.3,421.79 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:418.28,420.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:421.79,423.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:424.8,424.88 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:424.88,427.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:429.64,431.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:435.16,437.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:440.44,447.47 5 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:451.3,451.58 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:447.47,449.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:451.58,453.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:461.136,468.18 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:532.2,532.17 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:537.2,537.38 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:541.2,542.16 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:545.2,548.61 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:554.2,554.18 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:468.18,470.39 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:476.3,476.37 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:489.3,489.18 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:512.3,513.23 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:527.3,528.45 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:470.39,472.9 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:476.37,477.88 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:477.88,480.10 3 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:489.18,491.25 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:491.25,497.19 3 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:502.5,503.44 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:506.5,507.10 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:497.19,499.6 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:503.44,505.6 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:513.23,516.65 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:519.4,519.38 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:516.65,518.5 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:520.9,523.21 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:523.21,525.5 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:532.17,534.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:537.38,539.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:542.16,544.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:548.61,549.41 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:552.3,552.81 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:549.41,551.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:559.83,560.29 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:563.2,563.12 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:560.29,562.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:568.89,570.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:576.114,579.17 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:583.2,584.16 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:589.2,590.16 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:593.2,593.51 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:598.2,599.16 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:603.2,604.22 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:610.2,610.96 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:615.2,615.17 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:622.2,622.12 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:579.17,581.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:584.16,586.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:590.16,592.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:593.51,596.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:599.16,601.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:604.22,606.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:606.8,606.23 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:606.23,608.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:610.96,612.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:615.17,617.47 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:617.47,619.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:627.86,635.16 5 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:640.2,643.37 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:646.2,649.37 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:663.2,670.19 4 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:674.2,676.68 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:683.2,684.45 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:687.2,687.12 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:635.16,637.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:643.37,645.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:649.37,651.17 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:656.3,657.43 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:651.17,653.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:657.43,659.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:670.19,672.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:676.68,678.17 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:678.17,680.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:684.45,686.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:692.153,697.39 4 1 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:715.2,715.73 1 1 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:721.2,726.32 4 1 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:697.39,700.65 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:705.3,705.25 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:700.65,703.4 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:705.25,708.18 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:708.18,711.5 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:715.73,718.3 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:729.67,732.16 3 1 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:735.2,735.50 1 1 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:738.2,738.19 1 1 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:732.16,734.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:735.50,737.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:741.91,742.61 1 1 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:754.2,754.12 1 1 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:742.61,743.58 1 1 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:743.58,745.18 2 1 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:748.4,748.38 1 1 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:745.18,747.5 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:748.38,751.5 2 1 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:759.213,764.39 3 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:784.2,784.74 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:790.2,801.19 6 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:764.39,769.17 3 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:774.3,774.25 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:769.17,772.4 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:774.25,777.18 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:777.18,780.5 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:784.74,787.3 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:806.65,812.2 4 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:816.132,820.17 3 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:824.2,824.77 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:829.2,834.16 5 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:839.2,839.51 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:844.2,845.16 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:850.2,856.16 4 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:859.2,863.12 3 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:890.2,890.12 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:820.17,822.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:824.77,827.3 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:834.16,836.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:839.51,842.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:845.16,847.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:856.16,858.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:863.12,864.10 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:884.3,884.10 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:865.15,867.10 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:868.28,869.18 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:877.4,882.5 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:869.18,876.5 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:885.42,885.42 0 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:886.11,887.110 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:896.109,898.16 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:901.2,901.58 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:898.16,900.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:905.58,907.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:911.65,918.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:921.29,924.2 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:927.69,938.16 6 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:943.2,951.16 5 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:956.2,961.83 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:966.2,972.19 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:938.16,941.3 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:951.16,953.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:961.83,963.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:976.102,987.16 6 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:993.2,1001.16 5 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1006.2,1015.83 3 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1019.2,1020.26 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1027.2,1027.18 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:987.16,990.3 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1001.16,1002.13 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1015.83,1017.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1020.26,1025.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1034.9,1037.16 3 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1040.2,1040.44 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1044.2,1044.12 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1037.16,1039.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1040.44,1043.3 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1047.70,1049.17 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1054.2,1054.24 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1059.2,1059.88 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1063.2,1063.14 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1049.17,1051.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1054.24,1056.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1059.88,1061.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1071.9,1074.23 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1092.2,1092.60 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1101.2,1102.59 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1105.2,1106.16 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1111.2,1112.53 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1115.2,1116.16 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1121.2,1138.16 4 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1144.2,1148.12 3 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1074.23,1076.17 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1079.3,1079.20 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1076.17,1078.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1080.8,1082.17 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1086.3,1086.72 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1082.17,1084.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1086.72,1088.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1092.60,1098.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1102.59,1104.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1106.16,1108.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1112.53,1114.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1116.16,1118.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1138.16,1141.3 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1156.35,1160.16 4 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1164.2,1171.46 5 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1177.2,1180.43 3 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1205.2,1206.24 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1160.16,1162.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1171.46,1172.87 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1172.87,1174.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1180.43,1181.36 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1184.3,1184.92 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1189.3,1198.17 4 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1201.3,1203.16 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1181.36,1182.12 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1184.92,1186.9 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1198.17,1200.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1209.131,1211.103 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1214.2,1214.12 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1211.103,1213.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1217.52,1219.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1230.26,1233.16 3 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1238.2,1241.16 3 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1246.2,1247.24 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1252.2,1255.49 3 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1258.2,1265.26 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1233.16,1235.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1241.16,1243.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1247.24,1249.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1249.8,1251.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1255.49,1257.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1278.49,1280.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1282.80,1284.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1291.40,1291.65 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1292.40,1292.52 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1293.40,1293.56 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1294.40,1294.63 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1295.40,1295.69 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1296.40,1296.64 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1297.40,1297.66 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1298.40,1298.65 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1301.70,1312.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1321.19,1338.16 5 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1342.2,1343.21 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1338.16,1340.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1346.73,1347.22 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1352.2,1352.19 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1347.22,1348.63 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1348.63,1350.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1355.96,1360.29 4 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1370.2,1370.29 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1376.2,1377.10 2 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1360.29,1361.50 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1367.3,1367.32 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1361.50,1363.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1363.9,1365.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1370.29,1371.51 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1371.51,1373.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/bor.go:1380.48,1382.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/errors.go:14.56,21.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/errors.go:29.52,35.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/errors.go:42.59,49.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/errors.go:59.53,66.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/errors.go:73.44,79.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/errors.go:87.52,93.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/errors.go:101.50,107.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/errors.go:118.47,126.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/errors.go:135.52,143.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:31.47,31.64 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:32.47,32.93 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:33.47,33.74 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:45.13,56.2 2 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:59.161,61.16 2 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:64.2,65.51 2 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:68.2,73.67 4 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:77.2,77.18 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:61.16,63.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:65.51,67.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:73.67,75.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:81.51,83.16 2 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:86.2,86.59 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:83.16,85.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:90.37,100.39 2 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:104.2,104.12 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:100.39,102.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:107.70,109.23 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:113.2,113.38 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:118.2,118.46 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:122.2,124.33 2 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:165.2,168.18 3 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:109.23,111.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:113.38,114.67 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:114.67,116.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:118.46,120.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:124.33,129.63 2 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:134.3,135.17 2 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:140.3,140.52 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:144.3,144.66 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:149.3,152.52 2 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:129.63,131.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:135.17,137.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:140.52,142.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:144.66,146.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:152.52,153.65 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:156.4,162.25 5 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:153.65,155.5 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:172.82,176.25 4 1 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:179.2,180.23 2 1 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:184.2,185.32 2 1 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:190.2,190.39 1 1 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:176.25,178.3 1 1 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:180.23,182.3 1 1 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:185.32,186.32 1 1 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:186.32,188.4 1 1 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:194.47,196.48 2 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:199.2,199.13 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:196.48,198.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:203.61,205.66 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:209.2,218.31 7 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:222.2,222.62 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:205.66,207.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/snapshot.go:218.31,220.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:53.67,62.2 2 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:64.104,66.6 2 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:87.2,87.53 1 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:90.2,90.26 1 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:66.6,70.17 4 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:73.3,74.29 2 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:77.3,77.73 1 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:80.3,81.43 2 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:84.3,84.36 1 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:70.17,72.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:74.29,75.9 1 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:77.73,79.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:81.43,82.9 1 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:87.53,89.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:94.71,98.16 3 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:101.2,101.67 1 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:105.2,105.24 1 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:98.16,100.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:101.67,103.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:109.94,111.16 2 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:115.2,118.27 3 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:111.16,113.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:122.103,124.16 2 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:128.2,136.30 5 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:141.2,144.6 3 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:124.16,126.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:136.30,138.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:144.6,147.10 3 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:148.20,150.35 2 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:151.19,153.32 2 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:153.32,155.5 1 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:161.81,163.16 2 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:166.2,169.52 2 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:174.2,175.27 2 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:180.2,181.16 2 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:185.2,185.56 1 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:189.2,189.23 1 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:163.16,165.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:169.52,171.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:175.27,177.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:181.16,183.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:185.56,187.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/rest.go:193.34,196.2 2 0 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:24.73,30.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:34.39,37.2 2 1 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:41.54,43.14 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:46.2,46.18 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:49.2,49.49 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:43.14,45.3 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:46.18,48.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:49.49,51.3 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:51.8,51.56 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:51.56,53.3 1 1 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:53.8,55.17 2 0 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:55.17,57.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:57.9,57.24 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:57.24,59.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:59.9,60.48 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:65.37,66.14 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:69.2,72.22 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:66.14,68.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:76.52,78.27 2 0 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:82.2,82.34 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:78.27,80.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:86.42,91.2 4 0 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:94.41,99.2 4 0 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:102.45,108.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:111.68,112.34 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:116.2,117.48 2 0 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:127.2,127.20 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:112.34,114.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:117.48,125.3 5 0 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:141.59,142.36 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:145.2,145.10 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:142.36,144.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:149.77,150.27 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:153.2,153.8 1 0 -github.com/ethereum/go-ethereum/consensus/bor/validator.go:150.27,152.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:34.73,37.55 2 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:43.2,43.19 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:46.2,46.80 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:37.55,39.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:39.8,41.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:43.19,45.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:50.77,53.55 2 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:59.2,59.19 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:62.2,63.21 2 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:53.55,55.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:55.8,57.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:59.19,61.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:67.72,69.19 2 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:72.2,72.80 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:69.19,71.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:76.79,79.55 2 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:85.2,85.19 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:88.2,89.16 2 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:92.2,92.28 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:79.55,81.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:81.8,83.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:85.19,87.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:89.16,91.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:96.78,98.19 2 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:101.2,102.16 2 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:105.2,105.28 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:98.19,100.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:102.16,104.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:109.62,111.16 2 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:114.2,114.53 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:111.16,113.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:118.62,120.16 2 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:123.2,123.42 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:120.16,122.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:127.71,128.54 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:131.2,132.54 2 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:135.2,136.34 2 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:139.2,140.46 2 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:143.2,146.32 4 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:155.2,159.41 4 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:173.2,174.83 2 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:177.2,179.18 3 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:128.54,130.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:132.54,134.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:136.34,138.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:140.46,142.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:146.32,149.26 3 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:149.26,153.4 3 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:159.41,171.3 5 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:174.83,176.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:182.49,184.30 2 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:187.2,187.12 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:184.30,186.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/api.go:190.54,192.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/clerk.go:27.61,39.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/clerk.go:41.63,50.2 1 0 -github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:38.27,49.2 3 0 -github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:56.19,59.16 3 0 -github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:62.2,65.16 4 0 -github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:69.2,73.16 4 0 -github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:76.2,76.21 1 0 -github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:59.16,61.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:65.16,68.3 2 0 -github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:73.16,75.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:79.88,83.16 4 0 -github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:88.2,96.16 5 0 -github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:100.2,101.85 2 0 -github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:104.2,104.18 1 0 -github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:83.16,86.3 2 0 -github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:96.16,98.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/genesis_contracts_client.go:101.85,103.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/merkle.go:3.43,5.25 2 0 -github.com/ethereum/go-ethereum/consensus/bor/merkle.go:11.2,11.15 1 0 -github.com/ethereum/go-ethereum/consensus/bor/merkle.go:5.25,7.17 2 0 -github.com/ethereum/go-ethereum/consensus/bor/merkle.go:7.17,9.4 1 0 -github.com/ethereum/go-ethereum/consensus/bor/merkle.go:14.38,15.12 1 0 -github.com/ethereum/go-ethereum/consensus/bor/merkle.go:19.2,27.10 9 0 -github.com/ethereum/go-ethereum/consensus/bor/merkle.go:15.12,17.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/merkle.go:30.61,32.22 2 0 -github.com/ethereum/go-ethereum/consensus/bor/merkle.go:35.2,36.8 2 0 -github.com/ethereum/go-ethereum/consensus/bor/merkle.go:32.22,34.3 1 0 -github.com/ethereum/go-ethereum/consensus/bor/merkle.go:39.43,41.27 2 0 -github.com/ethereum/go-ethereum/consensus/bor/merkle.go:47.2,47.15 1 0 -github.com/ethereum/go-ethereum/consensus/bor/merkle.go:41.27,46.3 3 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:39.73,42.55 2 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:48.2,48.19 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:51.2,51.83 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:42.55,44.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:44.8,46.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:48.19,50.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:55.72,57.19 2 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:60.2,60.83 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:57.19,59.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:64.79,67.55 2 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:73.2,73.19 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:76.2,77.16 2 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:80.2,80.28 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:67.55,69.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:69.8,71.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:73.19,75.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:77.16,79.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:84.78,86.19 2 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:89.2,90.16 2 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:93.2,93.28 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:86.19,88.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:90.16,92.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:97.53,102.50 4 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:105.2,105.18 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:102.50,104.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:110.60,115.2 3 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:119.49,124.2 3 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:136.43,144.16 3 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:147.2,152.21 2 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:156.2,157.28 2 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:160.2,160.31 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:175.2,179.8 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:144.16,146.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:152.21,155.3 2 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:157.28,159.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:160.31,162.15 2 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:165.3,165.40 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:168.3,170.17 3 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:173.3,173.23 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:162.15,164.4 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:165.40,167.4 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:170.17,172.4 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:187.68,190.53 2 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:195.2,196.53 2 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:199.2,200.16 2 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:203.2,204.12 2 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:190.53,193.3 2 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:196.53,198.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:200.16,202.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:210.89,211.32 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:226.2,227.65 2 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:230.2,231.66 2 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:234.2,234.34 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:211.32,214.27 3 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:221.3,221.20 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:224.3,224.35 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:214.27,216.4 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:216.9,216.50 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:216.50,218.4 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:218.9,218.54 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:218.54,220.4 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:221.20,223.4 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:227.65,229.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/api.go:231.66,233.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:146.86,149.49 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:153.2,153.35 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:156.2,160.16 3 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:163.2,167.20 4 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:149.49,151.3 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:153.35,155.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:160.16,162.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:191.66,194.21 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:198.2,207.3 3 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:194.21,196.3 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:212.71,214.2 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:217.105,219.2 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:224.138,228.12 3 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:239.2,239.23 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:228.12,229.34 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:229.34,232.11 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:233.17,234.11 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:235.24,235.24 0 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:246.119,247.26 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:250.2,253.45 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:257.2,258.57 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:262.2,262.98 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:265.2,265.64 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:269.2,269.37 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:272.2,272.47 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:276.2,277.38 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:280.2,280.58 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:284.2,284.41 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:288.2,288.35 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:292.2,292.16 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:298.2,298.42 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:302.2,302.77 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:306.2,306.56 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:247.26,249.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:253.45,255.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:258.57,260.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:262.98,264.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:265.64,267.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:269.37,271.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:272.47,274.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:277.38,279.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:280.58,282.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:284.41,286.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:288.35,290.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:292.16,293.117 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:293.117,295.4 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:298.42,300.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:302.77,304.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:313.128,316.17 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:320.2,321.22 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:326.2,326.95 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:329.2,329.47 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:333.2,333.38 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:336.2,336.45 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:349.2,350.16 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:354.2,354.32 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:365.2,365.44 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:316.17,318.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:321.22,323.3 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:323.8,325.3 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:326.95,328.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:329.47,331.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:333.38,335.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:336.45,338.28 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:341.3,341.79 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:338.28,340.4 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:341.79,343.4 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:344.8,344.88 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:344.88,347.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:350.16,352.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:354.32,356.41 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:359.3,360.67 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:356.41,358.4 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:360.67,362.4 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:369.139,375.18 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:430.2,430.38 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:433.2,434.16 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:437.2,440.61 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:446.2,446.18 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:375.18,377.39 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:382.3,382.37 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:393.3,393.147 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:411.3,412.23 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:426.3,427.45 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:377.39,379.9 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:382.37,383.78 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:383.78,386.10 3 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:393.147,395.25 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:395.25,399.39 3 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:402.5,403.44 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:406.5,407.10 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:399.39,401.6 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:403.44,405.6 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:412.23,415.65 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:418.4,418.38 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:415.65,417.5 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:419.9,422.21 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:422.21,424.5 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:430.38,432.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:434.16,436.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:440.61,441.41 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:444.3,444.88 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:441.41,443.4 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:451.86,452.29 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:455.2,455.12 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:452.29,454.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:462.98,465.17 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:469.2,470.16 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:473.2,473.40 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:476.2,476.41 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:485.2,485.17 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:494.2,494.12 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:465.17,467.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:470.16,472.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:473.40,475.3 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:476.41,477.23 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:477.23,479.69 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:479.69,481.5 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:485.17,487.55 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:490.3,490.56 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:487.55,489.4 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:490.56,492.4 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:499.89,507.16 5 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:510.2,510.32 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:532.2,535.37 2 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:538.2,540.32 2 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:545.2,552.19 4 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:555.2,556.45 2 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:559.2,559.12 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:507.16,509.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:510.32,515.47 3 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:521.3,521.25 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:529.3,529.19 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:515.47,516.42 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:516.42,518.5 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:521.25,523.36 2 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:523.36,525.5 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:525.10,527.5 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:535.37,537.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:540.32,541.41 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:541.41,543.4 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:552.19,554.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:556.45,558.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:564.156,568.2 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:572.216,578.2 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:582.68,588.2 4 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:592.135,597.17 3 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:601.2,601.60 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:605.2,611.16 5 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:614.2,614.56 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:618.2,618.41 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:627.2,628.44 2 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:636.2,637.16 2 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:640.2,643.12 3 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:657.2,657.12 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:597.17,599.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:601.60,603.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:611.16,613.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:614.56,616.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:618.41,619.23 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:619.23,621.87 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:621.87,623.5 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:628.44,634.3 3 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:637.16,639.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:643.12,644.10 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:650.3,650.10 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:645.15,646.10 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:647.28,647.28 0 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:651.42,651.42 0 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:652.11,653.81 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:664.112,666.16 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:669.2,669.39 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:666.16,668.3 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:672.69,673.40 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:676.2,676.37 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:673.40,675.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:680.61,682.2 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:685.32,687.2 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:691.68,698.2 1 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:701.56,706.2 4 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:715.45,719.2 3 0 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:721.57,739.27 2 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:742.2,742.43 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:739.27,741.3 1 1 -github.com/ethereum/go-ethereum/consensus/clique/clique.go:742.43,743.40 1 0 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:65.47,65.64 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:66.47,66.93 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:67.47,67.74 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:72.140,82.33 2 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:85.2,85.13 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:82.33,84.3 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:89.128,91.16 2 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:94.2,95.51 2 0 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:98.2,101.18 3 0 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:91.16,93.3 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:95.51,97.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:105.51,107.16 2 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:110.2,110.62 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:107.16,109.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:114.37,125.32 2 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:128.2,128.39 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:131.2,131.38 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:134.2,136.12 2 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:125.32,127.3 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:128.39,130.3 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:131.38,133.3 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:141.75,144.2 2 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:147.70,149.38 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:153.2,153.37 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:159.2,159.13 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:149.38,151.3 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:153.37,156.3 2 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:156.8,158.3 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:163.72,166.9 2 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:170.2,170.34 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:174.2,174.21 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:180.2,180.13 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:166.9,168.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:170.34,172.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:174.21,177.3 2 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:177.8,179.3 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:185.70,187.23 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:191.2,191.38 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:196.2,196.46 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:200.2,206.33 3 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:300.2,300.39 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:303.2,306.18 3 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:187.23,189.3 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:191.38,192.67 1 0 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:192.67,194.4 1 0 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:196.46,198.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:206.33,209.33 2 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:214.3,214.64 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:218.3,219.17 2 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:222.3,222.41 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:225.3,225.39 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:230.3,233.35 2 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:244.3,245.10 2 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:253.3,253.44 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:262.3,262.78 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:295.3,295.41 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:209.33,212.4 2 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:214.64,216.4 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:219.17,221.4 1 0 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:222.41,224.4 1 0 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:225.39,226.24 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:226.24,228.5 1 0 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:233.35,234.64 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:234.64,240.10 3 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:246.52,247.20 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:248.52,249.21 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:250.11,251.30 1 0 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:253.44,260.4 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:262.78,263.23 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:286.4,286.41 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:292.4,292.39 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:263.23,265.5 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:265.10,269.66 2 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:273.5,273.42 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:269.66,271.6 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:273.42,274.49 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:274.49,282.7 3 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:286.41,287.49 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:287.49,290.6 2 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:295.41,298.4 2 0 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:300.39,302.3 1 0 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:310.47,312.29 2 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:315.2,316.13 2 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:312.29,314.3 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:320.70,322.57 2 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:325.2,325.58 1 1 -github.com/ethereum/go-ethereum/consensus/clique/snapshot.go:322.57,324.3 1 0 -github.com/ethereum/go-ethereum/common/prque/prque.go:30.44,32.2 1 1 -github.com/ethereum/go-ethereum/common/prque/prque.go:35.54,37.2 1 0 -github.com/ethereum/go-ethereum/common/prque/prque.go:40.56,42.2 1 1 -github.com/ethereum/go-ethereum/common/prque/prque.go:45.45,48.2 2 0 -github.com/ethereum/go-ethereum/common/prque/prque.go:52.44,55.2 2 1 -github.com/ethereum/go-ethereum/common/prque/prque.go:58.39,60.2 1 0 -github.com/ethereum/go-ethereum/common/prque/prque.go:63.43,64.11 1 0 -github.com/ethereum/go-ethereum/common/prque/prque.go:67.2,67.31 1 0 -github.com/ethereum/go-ethereum/common/prque/prque.go:64.11,66.3 1 0 -github.com/ethereum/go-ethereum/common/prque/prque.go:71.30,73.2 1 1 -github.com/ethereum/go-ethereum/common/prque/prque.go:76.28,78.2 1 1 -github.com/ethereum/go-ethereum/common/prque/prque.go:81.25,83.2 1 1 -github.com/ethereum/go-ethereum/common/prque/sstack.go:45.68,53.2 7 1 -github.com/ethereum/go-ethereum/common/prque/sstack.go:57.41,58.26 1 1 -github.com/ethereum/go-ethereum/common/prque/sstack.go:67.2,67.23 1 1 -github.com/ethereum/go-ethereum/common/prque/sstack.go:70.2,72.10 3 1 -github.com/ethereum/go-ethereum/common/prque/sstack.go:58.26,63.3 4 1 -github.com/ethereum/go-ethereum/common/prque/sstack.go:63.8,63.34 1 1 -github.com/ethereum/go-ethereum/common/prque/sstack.go:63.34,66.3 2 1 -github.com/ethereum/go-ethereum/common/prque/sstack.go:67.23,69.3 1 1 -github.com/ethereum/go-ethereum/common/prque/sstack.go:77.42,80.18 3 1 -github.com/ethereum/go-ethereum/common/prque/sstack.go:84.2,85.23 2 1 -github.com/ethereum/go-ethereum/common/prque/sstack.go:88.2,88.8 1 1 -github.com/ethereum/go-ethereum/common/prque/sstack.go:80.18,83.3 2 1 -github.com/ethereum/go-ethereum/common/prque/sstack.go:85.23,87.3 1 1 -github.com/ethereum/go-ethereum/common/prque/sstack.go:92.28,94.2 1 1 -github.com/ethereum/go-ethereum/common/prque/sstack.go:98.38,100.18 2 1 -github.com/ethereum/go-ethereum/common/prque/sstack.go:103.2,103.14 1 1 -github.com/ethereum/go-ethereum/common/prque/sstack.go:100.18,102.3 1 0 -github.com/ethereum/go-ethereum/common/prque/sstack.go:107.33,110.23 3 1 -github.com/ethereum/go-ethereum/common/prque/sstack.go:114.2,114.43 1 1 -github.com/ethereum/go-ethereum/common/prque/sstack.go:110.23,113.3 2 1 -github.com/ethereum/go-ethereum/common/prque/sstack.go:118.26,120.2 1 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:56.166,70.2 4 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:73.29,76.2 2 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:79.31,81.54 2 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:81.54,85.3 3 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:89.49,91.28 2 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:94.2,96.40 3 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:91.28,93.3 1 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:100.44,102.2 1 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:105.39,107.2 1 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:110.48,115.57 2 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:120.2,120.24 1 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:115.57,119.3 3 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:125.37,126.27 1 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:132.2,132.27 1 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:135.2,135.11 1 0 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:126.27,127.99 1 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:130.3,130.11 1 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:127.99,129.4 1 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:132.27,134.3 1 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:141.84,143.22 2 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:143.22,147.129 4 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:147.129,149.38 2 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:155.4,155.29 1 0 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:149.38,150.31 1 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:153.5,153.11 1 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:150.31,152.6 1 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:161.43,164.2 2 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:167.51,168.15 1 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:171.2,171.76 1 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:168.15,170.3 1 0 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:175.34,177.2 1 0 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:180.32,182.2 1 0 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:185.60,186.17 1 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:186.17,188.3 1 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:188.8,190.3 1 1 -github.com/ethereum/go-ethereum/common/prque/lazyqueue.go:194.60,196.2 1 1 -github.com/ethereum/go-ethereum/consensus/misc/dao.go:47.87,49.32 1 0 -github.com/ethereum/go-ethereum/consensus/misc/dao.go:53.2,54.81 2 0 -github.com/ethereum/go-ethereum/consensus/misc/dao.go:58.2,58.27 1 0 -github.com/ethereum/go-ethereum/consensus/misc/dao.go:68.2,68.12 1 0 -github.com/ethereum/go-ethereum/consensus/misc/dao.go:49.32,51.3 1 0 -github.com/ethereum/go-ethereum/consensus/misc/dao.go:54.81,56.3 1 0 -github.com/ethereum/go-ethereum/consensus/misc/dao.go:58.27,59.59 1 0 -github.com/ethereum/go-ethereum/consensus/misc/dao.go:59.59,61.4 1 0 -github.com/ethereum/go-ethereum/consensus/misc/dao.go:62.8,63.58 1 0 -github.com/ethereum/go-ethereum/consensus/misc/dao.go:63.58,65.4 1 0 -github.com/ethereum/go-ethereum/consensus/misc/dao.go:74.47,76.46 1 0 -github.com/ethereum/go-ethereum/consensus/misc/dao.go:81.2,81.45 1 0 -github.com/ethereum/go-ethereum/consensus/misc/dao.go:76.46,78.3 1 0 -github.com/ethereum/go-ethereum/consensus/misc/dao.go:81.45,84.3 2 0 -github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:32.90,35.37 2 1 -github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:38.2,38.72 1 1 -github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:42.2,42.27 1 1 -github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:46.2,47.46 2 1 -github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:51.2,51.12 1 1 -github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:35.37,37.3 1 1 -github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:38.72,40.3 1 1 -github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:42.27,44.3 1 0 -github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:47.46,50.3 1 0 -github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:55.77,57.37 1 1 -github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:61.2,67.39 2 1 -github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:70.2,70.38 1 1 -github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:57.37,59.3 1 1 -github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:67.39,69.3 1 1 -github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:70.38,81.3 5 1 -github.com/ethereum/go-ethereum/consensus/misc/eip1559.go:81.8,92.3 5 1 -github.com/ethereum/go-ethereum/consensus/misc/forks.go:30.91,32.11 1 0 -github.com/ethereum/go-ethereum/consensus/misc/forks.go:36.2,36.77 1 0 -github.com/ethereum/go-ethereum/consensus/misc/forks.go:42.2,42.12 1 0 -github.com/ethereum/go-ethereum/consensus/misc/forks.go:32.11,34.3 1 0 -github.com/ethereum/go-ethereum/consensus/misc/forks.go:36.77,37.81 1 0 -github.com/ethereum/go-ethereum/consensus/misc/forks.go:37.81,39.4 1 0 -github.com/ethereum/go-ethereum/consensus/misc/gaslimit.go:28.66,31.14 2 1 -github.com/ethereum/go-ethereum/consensus/misc/gaslimit.go:34.2,35.27 2 1 -github.com/ethereum/go-ethereum/consensus/misc/gaslimit.go:38.2,38.41 1 1 -github.com/ethereum/go-ethereum/consensus/misc/gaslimit.go:41.2,41.12 1 1 -github.com/ethereum/go-ethereum/consensus/misc/gaslimit.go:31.14,33.3 1 1 -github.com/ethereum/go-ethereum/consensus/misc/gaslimit.go:35.27,37.3 1 1 -github.com/ethereum/go-ethereum/consensus/misc/gaslimit.go:38.41,40.3 1 0 -github.com/ethereum/go-ethereum/core/asm/asm.go:38.63,42.2 3 1 -github.com/ethereum/go-ethereum/core/asm/asm.go:45.44,46.54 1 1 -github.com/ethereum/go-ethereum/core/asm/asm.go:51.2,51.16 1 1 -github.com/ethereum/go-ethereum/core/asm/asm.go:62.2,62.35 1 1 -github.com/ethereum/go-ethereum/core/asm/asm.go:67.2,68.20 2 1 -github.com/ethereum/go-ethereum/core/asm/asm.go:79.2,79.13 1 1 -github.com/ethereum/go-ethereum/core/asm/asm.go:46.54,49.3 1 1 -github.com/ethereum/go-ethereum/core/asm/asm.go:51.16,53.20 1 1 -github.com/ethereum/go-ethereum/core/asm/asm.go:56.3,56.10 1 1 -github.com/ethereum/go-ethereum/core/asm/asm.go:53.20,55.4 1 1 -github.com/ethereum/go-ethereum/core/asm/asm.go:57.8,60.3 1 1 -github.com/ethereum/go-ethereum/core/asm/asm.go:62.35,65.3 1 1 -github.com/ethereum/go-ethereum/core/asm/asm.go:68.20,71.64 3 1 -github.com/ethereum/go-ethereum/core/asm/asm.go:75.3,75.32 1 1 -github.com/ethereum/go-ethereum/core/asm/asm.go:71.64,74.4 2 1 -github.com/ethereum/go-ethereum/core/asm/asm.go:76.8,78.3 1 1 -github.com/ethereum/go-ethereum/core/asm/asm.go:83.46,85.2 1 1 -github.com/ethereum/go-ethereum/core/asm/asm.go:88.44,90.2 1 0 -github.com/ethereum/go-ethereum/core/asm/asm.go:93.47,95.2 1 0 -github.com/ethereum/go-ethereum/core/asm/asm.go:98.45,100.2 1 0 -github.com/ethereum/go-ethereum/core/asm/asm.go:103.43,105.16 2 0 -github.com/ethereum/go-ethereum/core/asm/asm.go:109.2,110.16 2 0 -github.com/ethereum/go-ethereum/core/asm/asm.go:117.2,117.19 1 0 -github.com/ethereum/go-ethereum/core/asm/asm.go:105.16,107.3 1 0 -github.com/ethereum/go-ethereum/core/asm/asm.go:110.16,111.43 1 0 -github.com/ethereum/go-ethereum/core/asm/asm.go:111.43,113.4 1 0 -github.com/ethereum/go-ethereum/core/asm/asm.go:113.9,115.4 1 0 -github.com/ethereum/go-ethereum/core/asm/asm.go:121.51,125.16 3 0 -github.com/ethereum/go-ethereum/core/asm/asm.go:132.2,132.35 1 0 -github.com/ethereum/go-ethereum/core/asm/asm.go:135.2,135.20 1 0 -github.com/ethereum/go-ethereum/core/asm/asm.go:125.16,126.43 1 0 -github.com/ethereum/go-ethereum/core/asm/asm.go:126.43,128.4 1 0 -github.com/ethereum/go-ethereum/core/asm/asm.go:128.9,130.4 1 0 -github.com/ethereum/go-ethereum/core/asm/asm.go:132.35,134.3 1 0 -github.com/ethereum/go-ethereum/core/asm/compiler.go:43.40,48.2 1 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:59.42,61.20 2 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:86.2,86.13 1 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:61.20,62.16 1 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:83.3,84.11 2 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:63.15,65.21 2 0 -github.com/ethereum/go-ethereum/core/asm/compiler.go:68.4,68.20 1 0 -github.com/ethereum/go-ethereum/core/asm/compiler.go:69.20,70.27 1 0 -github.com/ethereum/go-ethereum/core/asm/compiler.go:71.16,72.10 1 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:73.17,75.10 2 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:76.14,78.48 2 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:65.21,67.5 1 0 -github.com/ethereum/go-ethereum/core/asm/compiler.go:78.48,80.5 1 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:86.13,88.3 1 0 -github.com/ethereum/go-ethereum/core/asm/compiler.go:97.48,101.28 2 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:108.2,109.29 2 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:117.2,117.20 1 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:101.28,102.41 1 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:102.41,104.4 1 0 -github.com/ethereum/go-ethereum/core/asm/compiler.go:109.29,110.24 1 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:111.18,112.45 1 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:113.15,114.31 1 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:122.33,126.2 3 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:130.40,132.24 2 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:136.2,137.20 2 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:152.2,152.37 1 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:156.2,156.12 1 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:132.24,134.3 1 0 -github.com/ethereum/go-ethereum/core/asm/compiler.go:138.11,139.13 1 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:140.15,141.50 1 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:144.16,145.19 1 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:146.15,147.13 1 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:148.10,149.85 1 0 -github.com/ethereum/go-ethereum/core/asm/compiler.go:141.50,143.4 1 0 -github.com/ethereum/go-ethereum/core/asm/compiler.go:152.37,154.3 1 0 -github.com/ethereum/go-ethereum/core/asm/compiler.go:160.62,162.19 2 0 -github.com/ethereum/go-ethereum/core/asm/compiler.go:165.2,166.22 2 0 -github.com/ethereum/go-ethereum/core/asm/compiler.go:162.19,164.3 1 0 -github.com/ethereum/go-ethereum/core/asm/compiler.go:172.56,175.26 1 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:227.2,227.12 1 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:175.26,177.21 2 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:195.3,196.13 2 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:178.15,180.27 1 0 -github.com/ethereum/go-ethereum/core/asm/compiler.go:181.20,183.50 1 0 -github.com/ethereum/go-ethereum/core/asm/compiler.go:184.14,188.18 4 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:189.16,190.11 1 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:191.11,192.69 1 0 -github.com/ethereum/go-ethereum/core/asm/compiler.go:197.8,197.33 1 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:197.33,202.21 3 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:217.3,217.22 1 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:221.3,222.19 2 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:203.15,205.23 2 0 -github.com/ethereum/go-ethereum/core/asm/compiler.go:208.20,209.55 1 0 -github.com/ethereum/go-ethereum/core/asm/compiler.go:210.14,212.56 2 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:213.11,214.69 1 0 -github.com/ethereum/go-ethereum/core/asm/compiler.go:205.23,207.5 1 0 -github.com/ethereum/go-ethereum/core/asm/compiler.go:217.22,219.4 1 0 -github.com/ethereum/go-ethereum/core/asm/compiler.go:223.8,225.3 1 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:231.35,233.2 1 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:236.43,237.13 1 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:240.2,240.32 1 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:237.13,239.3 1 0 -github.com/ethereum/go-ethereum/core/asm/compiler.go:245.29,247.2 1 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:250.29,252.2 1 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:255.38,257.2 1 1 -github.com/ethereum/go-ethereum/core/asm/compiler.go:266.40,268.2 1 0 -github.com/ethereum/go-ethereum/core/asm/compiler.go:270.50,276.2 1 0 -github.com/ethereum/go-ethereum/core/asm/lexer.go:62.37,63.37 1 0 -github.com/ethereum/go-ethereum/core/asm/lexer.go:66.2,66.29 1 0 -github.com/ethereum/go-ethereum/core/asm/lexer.go:63.37,65.3 1 0 -github.com/ethereum/go-ethereum/core/asm/lexer.go:98.50,106.12 3 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:115.2,115.11 1 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:106.12,108.22 2 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:111.3,112.18 2 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:108.22,110.4 1 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:119.36,120.27 1 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:124.2,126.13 3 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:120.27,123.3 2 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:130.26,132.2 1 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:135.29,139.2 3 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:142.26,144.2 1 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:147.43,148.43 1 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:152.2,154.14 2 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:148.43,150.3 1 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:159.41,160.44 1 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:162.2,162.12 1 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:160.45,161.3 0 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:167.49,169.75 1 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:175.2,175.13 1 0 -github.com/ethereum/go-ethereum/core/asm/lexer.go:169.75,170.13 1 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:170.13,172.4 1 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:179.31,181.2 1 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:184.35,187.13 2 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:191.2,192.17 2 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:187.13,189.3 1 0 -github.com/ethereum/go-ethereum/core/asm/lexer.go:196.32,197.6 1 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:197.6,198.25 1 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:199.18,204.21 4 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:205.36,206.21 1 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:207.19,208.14 1 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:209.32,210.21 1 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:211.20,212.20 1 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:213.17,215.19 2 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:216.17,217.26 1 0 -github.com/ethereum/go-ethereum/core/asm/lexer.go:218.11,219.14 1 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:226.35,231.2 3 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:236.33,242.2 3 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:247.40,248.27 1 0 -github.com/ethereum/go-ethereum/core/asm/lexer.go:252.2,252.16 1 0 -github.com/ethereum/go-ethereum/core/asm/lexer.go:248.27,250.3 1 0 -github.com/ethereum/go-ethereum/core/asm/lexer.go:255.34,257.20 2 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:260.2,264.16 3 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:257.20,259.3 1 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:267.35,270.21 2 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:278.2,278.16 1 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:270.21,275.3 3 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:275.8,277.3 1 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:281.28,283.2 1 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:285.27,287.2 1 1 -github.com/ethereum/go-ethereum/core/asm/lexer.go:289.28,291.2 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:90.47,93.17 3 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:96.2,96.67 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:101.2,101.18 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:93.17,95.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:96.67,98.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:98.8,100.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:117.156,125.2 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:129.179,134.16 3 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:137.2,138.16 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:141.2,142.30 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:134.16,136.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:138.16,140.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:149.114,151.17 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:154.2,154.20 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:158.2,159.16 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:162.2,168.18 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:197.2,197.24 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:202.2,203.58 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:151.17,153.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:154.20,156.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:159.16,161.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:168.18,170.10 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:173.3,174.37 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:170.10,172.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:174.37,176.64 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:176.64,178.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:178.10,178.29 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:178.29,180.5 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:182.8,184.17 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:187.3,187.23 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:184.17,186.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:187.23,189.81 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:189.81,191.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:191.10,191.29 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:191.29,193.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:197.24,201.3 3 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:207.120,210.16 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:215.2,215.44 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:210.16,212.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:220.102,224.2 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:228.82,232.2 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:234.149,237.18 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:241.2,242.22 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:250.2,251.22 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:257.2,257.34 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:261.2,262.24 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:270.2,271.16 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:274.2,283.33 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:237.18,239.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:242.22,244.17 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:247.3,247.18 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:244.17,246.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:251.22,256.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:257.34,259.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:262.24,265.17 3 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:265.17,267.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:271.16,273.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:286.128,287.52 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:291.2,292.18 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:296.2,297.21 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:305.2,306.24 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:314.2,315.16 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:318.2,326.33 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:287.52,289.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:292.18,294.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:297.21,299.17 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:302.3,302.19 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:299.17,301.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:306.24,309.17 3 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:309.17,311.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:315.16,317.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:329.166,330.21 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:338.2,347.67 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:330.21,332.98 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:332.98,334.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:334.9,334.28 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:334.28,336.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:350.70,351.23 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:351.23,353.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:353.8,355.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:360.122,361.78 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:365.2,369.26 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:382.2,382.16 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:386.2,386.24 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:389.2,390.16 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:393.2,393.17 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:396.2,396.92 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:399.2,399.22 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:361.78,363.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:369.26,371.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:371.8,373.101 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:373.101,375.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:375.9,375.33 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:375.33,377.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:377.9,380.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:382.16,384.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:386.24,388.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:390.16,392.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:393.17,395.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:396.92,398.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:404.135,406.17 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:410.2,413.16 3 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:417.2,424.21 3 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:430.2,431.16 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:434.2,434.69 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:445.2,445.16 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:448.2,448.23 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:406.17,408.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:413.16,415.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:424.21,426.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:431.16,433.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:434.69,435.28 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:442.3,442.13 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:435.28,436.11 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:437.21,437.21 0 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:438.16,439.15 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:445.16,447.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:453.133,455.17 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:459.2,462.16 3 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:466.2,472.23 3 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:475.2,476.16 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:479.2,479.23 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:455.17,457.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:462.16,464.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:472.23,474.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:476.16,478.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:483.87,484.45 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:487.2,487.23 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:492.2,493.49 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:498.2,498.54 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:484.45,486.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:487.23,488.73 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:488.73,490.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:493.49,494.18 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:494.18,496.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:502.105,503.45 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:506.2,506.23 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:511.2,512.49 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:517.2,517.61 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:503.45,505.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:506.23,507.67 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:507.67,509.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:512.49,513.18 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:513.18,515.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:522.57,523.16 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:526.2,526.12 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/base.go:523.16,525.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:50.179,61.34 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:213.2,213.34 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:218.2,234.51 5 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:238.2,238.20 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:246.2,246.29 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:61.34,64.17 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:68.3,68.48 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:76.3,92.51 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:98.3,98.43 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:139.3,139.42 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:169.3,169.27 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:172.3,172.26 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:176.3,176.43 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:180.3,194.21 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:198.3,198.35 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:64.17,66.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:68.48,69.26 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:72.4,72.12 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:69.26,71.5 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:92.51,93.29 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:93.29,95.5 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:98.43,104.30 4 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:107.4,107.35 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:110.4,114.44 5 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:122.4,124.46 3 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:133.4,133.29 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:104.30,106.5 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:107.35,109.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:114.44,115.25 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:118.5,118.30 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:115.25,117.6 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:118.30,120.6 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:124.46,125.26 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:128.5,128.31 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:125.26,127.6 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:128.31,130.6 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:133.29,135.5 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:135.10,137.5 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:139.42,141.26 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:145.4,149.40 3 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:152.4,157.44 5 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:166.4,166.82 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:141.26,142.13 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:149.40,151.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:157.44,158.25 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:161.5,161.30 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:158.25,160.6 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:161.30,163.6 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:169.27,171.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:172.26,174.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:176.43,178.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:194.21,196.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:198.35,200.18 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:203.4,203.15 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:200.18,202.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:203.15,206.34 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:206.34,208.6 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:213.34,216.3 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:234.51,236.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:238.20,240.17 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:243.3,243.27 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:240.17,242.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:257.44,258.16 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:259.21,260.26 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:261.29,263.19 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:267.3,267.20 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:268.24,269.44 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:270.19,271.18 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:272.22,273.20 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:274.10,276.23 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:264.30,265.53 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:283.71,284.16 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:285.19,286.55 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:287.19,288.74 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:289.19,290.48 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:291.10,292.31 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:297.46,298.16 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:299.21,300.19 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:301.29,305.22 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:310.3,310.22 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:314.3,322.22 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:325.3,325.19 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:326.37,327.18 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:328.18,329.19 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:330.20,331.18 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:332.22,333.20 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:334.10,335.23 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:305.22,307.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:310.22,312.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:322.22,324.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:341.43,342.13 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:354.2,354.19 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:343.17,344.17 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:345.16,346.19 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:347.17,348.21 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:349.16,350.20 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:351.16,352.19 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:360.73,361.16 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:362.19,363.55 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:364.32,365.62 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:366.10,367.33 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:380.76,389.44 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:392.2,392.14 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:389.44,391.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:397.78,406.44 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:409.2,409.14 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:406.44,408.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:422.77,423.16 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:424.19,432.37 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:435.3,436.40 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:440.3,441.17 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:444.3,448.14 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:449.19,450.80 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:451.19,452.54 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:453.10,454.31 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:432.37,434.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:436.40,439.4 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:441.17,443.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:461.79,462.16 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:463.19,471.37 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:474.3,475.40 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:479.3,480.17 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:483.3,487.14 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:488.32,489.68 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:490.10,491.33 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:471.37,473.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:475.40,478.4 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:480.17,482.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:498.42,498.77 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:504.62,505.18 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:506.16,507.18 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:508.17,509.16 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:510.10,512.22 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:515.3,515.19 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:512.22,514.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:516.30,517.22 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:520.4,520.66 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:522.11,523.19 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:517.22,519.5 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:530.56,531.39 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:534.2,534.10 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:531.39,533.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:548.40,549.21 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:553.2,554.49 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:549.21,551.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:559.42,560.19 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:563.2,564.27 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:577.2,577.13 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:560.19,562.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:564.27,566.21 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:571.3,572.35 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:575.3,575.23 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:566.21,568.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:572.35,574.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:582.33,583.13 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:584.19,585.28 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:586.19,587.28 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:588.19,589.14 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/bind.go:590.10,591.15 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:32.101,37.6 4 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:37.6,39.17 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:43.3,43.40 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:50.3,50.10 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:39.17,41.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:43.40,45.4 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:45.9,47.4 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:51.21,52.25 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:53.24,53.24 0 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:60.104,61.20 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:64.2,65.16 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:68.2,68.51 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:74.2,75.34 2 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:78.2,78.37 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:61.20,63.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:65.16,67.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:68.51,70.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/util.go:75.34,77.3 1 1 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:46.79,49.16 3 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:52.2,53.16 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:56.2,56.48 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:49.16,51.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:53.16,55.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:63.106,68.91 3 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:68.91,69.34 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:72.4,73.18 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:76.4,76.46 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:69.34,71.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:73.18,75.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:86.62,92.91 4 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:92.91,93.26 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:96.4,97.18 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:100.4,100.46 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:93.26,95.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:97.18,99.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:108.108,110.16 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:113.2,114.16 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:117.2,117.63 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:110.16,112.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:114.16,116.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:122.135,123.20 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:126.2,129.91 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:123.20,125.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:129.91,130.34 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:133.4,134.18 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:137.4,137.46 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:130.34,132.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:134.18,136.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:145.100,147.20 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:150.2,153.91 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:147.20,149.3 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:153.91,154.26 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:157.4,158.18 2 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:161.4,161.46 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:154.26,156.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:158.18,160.5 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:169.95,172.100 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:172.100,173.34 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:176.4,176.49 1 0 -github.com/ethereum/go-ethereum/accounts/abi/bind/auth.go:173.34,175.5 1 0 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:69.77,75.43 3 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:84.2,84.52 1 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:75.43,76.19 1 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:81.3,82.8 2 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:76.19,79.12 2 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:88.42,94.2 1 0 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:98.41,102.17 1 0 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:102.17,104.4 1 0 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:109.78,110.24 1 0 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:111.2,111.41 1 0 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:110.24,110.36 1 0 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:117.94,125.29 4 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:131.2,134.27 2 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:125.29,128.3 2 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:134.27,155.30 2 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:194.3,195.13 2 0 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:155.30,158.20 1 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:163.4,163.26 1 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:174.4,174.27 1 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:185.4,185.39 1 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:192.4,192.38 1 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:158.20,159.13 1 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:163.26,166.39 1 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:170.5,170.15 1 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:166.39,168.6 1 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:174.27,175.27 1 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:175.27,177.29 1 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:180.6,180.16 1 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:177.29,179.7 1 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:185.39,186.27 1 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:186.27,189.6 1 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:201.54,205.2 3 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:208.43,212.2 3 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:215.55,221.39 4 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:237.2,237.34 1 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:245.2,245.34 1 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:252.2,252.37 1 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:255.2,255.14 1 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:221.39,224.46 2 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:227.3,227.49 1 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:231.3,232.18 2 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:224.46,225.12 1 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:227.49,228.12 1 0 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:232.18,234.4 1 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:237.34,238.39 1 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:238.39,239.27 1 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:239.27,241.5 1 0 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:245.34,246.29 1 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:246.29,249.4 2 1 -github.com/ethereum/go-ethereum/core/forkid/forkid.go:252.37,254.3 1 1 -github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:39.112,41.16 2 0 -github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:44.2,44.67 1 0 -github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:41.16,43.3 1 0 -github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:48.63,50.2 1 0 -github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:53.71,55.2 1 0 -github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:59.162,62.33 2 0 -github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:73.2,73.14 1 0 -github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:62.33,63.28 1 0 -github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:63.28,65.18 2 0 -github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:68.4,68.62 1 0 -github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:65.18,66.13 1 0 -github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:68.62,70.5 1 0 -github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:81.178,87.33 2 0 -github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:95.2,95.99 1 0 -github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:87.33,88.25 1 0 -github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:91.3,93.29 3 0 -github.com/ethereum/go-ethereum/contracts/checkpointoracle/oracle.go:88.25,90.4 1 0 -github.com/ethereum/go-ethereum/core/bloombits/generator.go:45.54,46.21 1 1 -github.com/ethereum/go-ethereum/core/bloombits/generator.go:49.2,50.44 2 1 -github.com/ethereum/go-ethereum/core/bloombits/generator.go:53.2,53.15 1 1 -github.com/ethereum/go-ethereum/core/bloombits/generator.go:46.21,48.3 1 0 -github.com/ethereum/go-ethereum/core/bloombits/generator.go:50.44,52.3 1 1 -github.com/ethereum/go-ethereum/core/bloombits/generator.go:58.67,60.29 1 1 -github.com/ethereum/go-ethereum/core/bloombits/generator.go:63.2,63.24 1 1 -github.com/ethereum/go-ethereum/core/bloombits/generator.go:67.2,69.51 3 1 -github.com/ethereum/go-ethereum/core/bloombits/generator.go:84.2,85.12 2 1 -github.com/ethereum/go-ethereum/core/bloombits/generator.go:60.29,62.3 1 0 -github.com/ethereum/go-ethereum/core/bloombits/generator.go:63.24,65.3 1 0 -github.com/ethereum/go-ethereum/core/bloombits/generator.go:69.51,71.21 2 1 -github.com/ethereum/go-ethereum/core/bloombits/generator.go:74.3,82.59 9 1 -github.com/ethereum/go-ethereum/core/bloombits/generator.go:71.21,72.12 1 1 -github.com/ethereum/go-ethereum/core/bloombits/generator.go:90.54,91.29 1 1 -github.com/ethereum/go-ethereum/core/bloombits/generator.go:94.2,94.33 1 1 -github.com/ethereum/go-ethereum/core/bloombits/generator.go:97.2,97.27 1 1 -github.com/ethereum/go-ethereum/core/bloombits/generator.go:91.29,93.3 1 0 -github.com/ethereum/go-ethereum/core/bloombits/generator.go:94.33,96.3 1 0 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:38.46,42.33 3 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:45.2,45.13 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:42.33,44.3 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:92.66,105.33 3 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:124.2,124.44 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:131.2,131.10 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:105.33,107.23 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:110.3,111.33 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:119.3,119.23 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:107.23,108.12 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:111.33,112.21 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:116.4,116.43 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:112.21,114.10 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:119.23,121.4 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:124.44,125.50 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:125.50,126.46 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:126.46,128.5 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:137.42,138.36 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:141.2,141.39 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:138.36,140.3 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:147.111,149.43 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:152.2,160.41 3 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:163.2,167.12 3 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:214.2,214.21 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:149.43,151.3 1 0 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:160.41,162.3 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:167.12,171.7 3 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:171.7,172.11 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:173.24,174.11 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:176.27,178.12 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:182.5,185.22 3 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:188.5,189.19 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:193.5,193.36 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:178.12,180.6 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:185.22,187.6 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:189.19,191.6 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:193.36,196.19 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:203.6,203.44 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:196.19,197.19 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:200.7,200.15 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:197.19,199.8 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:203.44,204.14 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:205.27,206.14 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:207.25,207.25 0 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:224.100,229.12 3 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:242.2,245.34 3 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:249.2,252.13 3 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:229.12,233.63 3 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:233.63,234.11 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:235.24,236.11 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:237.88,237.88 0 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:245.34,247.3 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:259.145,263.29 3 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:272.2,276.12 4 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:319.2,319.12 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:376.2,376.16 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:263.29,264.28 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:264.28,269.4 3 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:276.12,281.16 3 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:289.3,289.7 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:281.16,282.48 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:282.48,283.44 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:283.44,285.6 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:289.7,290.11 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:291.24,292.11 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:294.32,296.12 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:300.5,300.49 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:310.5,310.12 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:296.12,298.6 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:300.49,301.45 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:301.45,302.14 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:303.27,304.14 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:305.40,305.40 0 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:311.25,312.12 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:313.28,313.28 0 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:319.12,325.7 3 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:325.7,326.11 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:327.24,328.11 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:330.33,332.12 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:336.5,337.45 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:360.5,360.24 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:363.5,363.29 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:366.5,366.36 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:332.12,334.6 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:337.45,339.41 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:353.6,353.25 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:339.41,341.14 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:346.7,346.27 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:342.27,343.14 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:344.29,344.29 0 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:346.27,349.8 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:349.13,351.8 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:353.25,355.7 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:355.12,357.7 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:360.24,362.6 1 0 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:363.29,365.6 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:366.36,367.13 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:368.26,369.13 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:370.64,370.64 0 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:381.76,394.27 3 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:406.2,406.6 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:394.27,395.10 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:396.34,398.18 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:399.11,402.30 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:406.6,407.10 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:408.19,412.19 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:416.22,419.54 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:420.4,423.23 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:427.32,430.30 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:436.4,437.26 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:440.4,441.18 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:443.32,445.45 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:447.34,450.67 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:457.4,460.35 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:464.33,472.42 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:480.4,484.24 3 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:498.4,498.38 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:412.19,414.5 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:419.54,419.88 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:423.23,425.5 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:430.30,431.32 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:431.32,433.6 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:437.26,439.5 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:450.67,453.5 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:453.10,456.5 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:460.35,462.5 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:472.42,473.25 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:477.5,478.38 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:473.25,475.14 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:484.24,486.37 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:490.5,492.35 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:486.37,487.56 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:488.6,488.83 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:487.56,487.86 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:492.35,494.6 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:498.38,500.5 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:523.34,524.21 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:524.21,528.3 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:532.40,537.2 3 0 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:542.59,545.9 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:546.16,547.18 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:548.39,550.17 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:556.56,559.9 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:560.16,561.11 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:562.37,564.24 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:570.73,573.9 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:574.16,575.13 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:576.39,582.30 3 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:588.89,590.2 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:598.93,599.6 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:599.6,602.10 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:606.3,606.37 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:619.3,622.10 3 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:602.10,604.4 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:606.37,607.11 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:608.18,612.11 3 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:614.28,614.28 0 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:623.17,626.10 2 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:628.23,633.27 3 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:639.4,639.66 1 1 -github.com/ethereum/go-ethereum/core/bloombits/matcher.go:633.27,638.5 4 0 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:49.40,54.2 1 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:59.125,68.2 4 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:73.29,77.40 3 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:77.40,78.24 1 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:78.24,80.4 1 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:87.134,93.6 3 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:93.6,94.10 1 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:95.15,96.10 1 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:98.30,100.11 1 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:104.4,107.35 3 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:113.4,116.14 2 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:123.4,123.11 1 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:100.11,102.5 1 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:107.35,112.5 2 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:116.14,117.12 1 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:118.17,119.12 1 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:120.57,120.57 0 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:124.16,125.11 1 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:126.25,126.25 0 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:134.116,140.6 3 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:140.6,141.10 1 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:142.15,143.10 1 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:145.26,147.11 1 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:151.4,155.11 4 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:161.4,161.11 1 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:147.11,149.5 1 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:156.16,157.11 1 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:158.20,158.20 0 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:162.16,163.11 1 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:164.28,164.28 0 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:171.63,175.35 3 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:175.35,176.67 1 1 -github.com/ethereum/go-ethereum/core/bloombits/scheduler.go:176.67,179.4 2 1 -github.com/ethereum/go-ethereum/core/vm/memory.go:32.26,34.2 1 1 -github.com/ethereum/go-ethereum/core/vm/memory.go:37.57,40.14 1 0 -github.com/ethereum/go-ethereum/core/vm/memory.go:40.14,43.41 1 0 -github.com/ethereum/go-ethereum/core/vm/memory.go:46.3,46.43 1 0 -github.com/ethereum/go-ethereum/core/vm/memory.go:43.41,44.40 1 0 -github.com/ethereum/go-ethereum/core/vm/memory.go:52.57,55.38 1 1 -github.com/ethereum/go-ethereum/core/vm/memory.go:59.2,61.36 2 1 -github.com/ethereum/go-ethereum/core/vm/memory.go:55.38,56.39 1 0 -github.com/ethereum/go-ethereum/core/vm/memory.go:65.38,66.28 1 1 -github.com/ethereum/go-ethereum/core/vm/memory.go:66.28,68.3 1 1 -github.com/ethereum/go-ethereum/core/vm/memory.go:72.59,73.15 1 1 -github.com/ethereum/go-ethereum/core/vm/memory.go:77.2,77.32 1 1 -github.com/ethereum/go-ethereum/core/vm/memory.go:84.2,84.8 1 0 -github.com/ethereum/go-ethereum/core/vm/memory.go:73.15,75.3 1 0 -github.com/ethereum/go-ethereum/core/vm/memory.go:77.32,82.3 3 1 -github.com/ethereum/go-ethereum/core/vm/memory.go:88.52,89.15 1 0 -github.com/ethereum/go-ethereum/core/vm/memory.go:93.2,93.32 1 0 -github.com/ethereum/go-ethereum/core/vm/memory.go:97.2,97.12 1 0 -github.com/ethereum/go-ethereum/core/vm/memory.go:89.15,91.3 1 0 -github.com/ethereum/go-ethereum/core/vm/memory.go:93.32,95.3 1 0 -github.com/ethereum/go-ethereum/core/vm/memory.go:101.28,103.2 1 1 -github.com/ethereum/go-ethereum/core/vm/memory.go:106.32,108.2 1 0 -github.com/ethereum/go-ethereum/core/vm/memory.go:111.26,113.22 2 0 -github.com/ethereum/go-ethereum/core/vm/memory.go:122.2,122.37 1 0 -github.com/ethereum/go-ethereum/core/vm/memory.go:113.22,115.45 2 0 -github.com/ethereum/go-ethereum/core/vm/memory.go:115.45,118.4 2 0 -github.com/ethereum/go-ethereum/core/vm/memory.go:119.8,121.3 1 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:19.51,21.2 1 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:23.54,25.2 1 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:27.56,29.2 1 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:31.50,33.2 1 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:35.53,37.2 1 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:39.47,41.2 1 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:43.49,45.2 1 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:47.48,49.2 1 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:51.48,53.2 1 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:55.49,57.2 1 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:59.46,61.14 2 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:64.2,65.14 2 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:68.2,68.11 1 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:71.2,71.17 1 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:61.14,63.3 1 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:65.14,67.3 1 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:68.11,70.3 1 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:73.54,75.14 2 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:78.2,79.14 2 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:82.2,82.11 1 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:85.2,85.17 1 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:75.14,77.3 1 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:79.14,81.3 1 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:82.11,84.3 1 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:88.52,90.14 2 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:93.2,94.14 2 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:97.2,97.11 1 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:100.2,100.17 1 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:90.14,92.3 1 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:94.14,96.3 1 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:97.11,99.3 1 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:103.48,105.2 1 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:107.48,109.2 1 0 -github.com/ethereum/go-ethereum/core/vm/memory_table.go:111.45,113.2 1 0 -github.com/ethereum/go-ethereum/core/vm/opcodes.go:27.32,28.12 1 0 -github.com/ethereum/go-ethereum/core/vm/opcodes.go:32.2,32.14 1 0 -github.com/ethereum/go-ethereum/core/vm/opcodes.go:29.253,30.14 1 0 -github.com/ethereum/go-ethereum/core/vm/opcodes.go:387.34,389.19 2 0 -github.com/ethereum/go-ethereum/core/vm/opcodes.go:393.2,393.12 1 0 -github.com/ethereum/go-ethereum/core/vm/opcodes.go:389.19,391.3 1 0 -github.com/ethereum/go-ethereum/core/vm/opcodes.go:543.36,545.2 1 0 -github.com/ethereum/go-ethereum/core/vm/stack.go:27.26,29.3 1 1 -github.com/ethereum/go-ethereum/core/vm/stack.go:39.24,41.2 1 1 -github.com/ethereum/go-ethereum/core/vm/stack.go:43.28,46.2 2 1 -github.com/ethereum/go-ethereum/core/vm/stack.go:49.39,51.2 1 0 -github.com/ethereum/go-ethereum/core/vm/stack.go:53.39,56.2 1 1 -github.com/ethereum/go-ethereum/core/vm/stack.go:58.42,62.2 3 1 -github.com/ethereum/go-ethereum/core/vm/stack.go:64.28,66.2 1 1 -github.com/ethereum/go-ethereum/core/vm/stack.go:68.30,70.2 1 0 -github.com/ethereum/go-ethereum/core/vm/stack.go:72.29,74.2 1 1 -github.com/ethereum/go-ethereum/core/vm/stack.go:76.38,78.2 1 1 -github.com/ethereum/go-ethereum/core/vm/stack.go:81.43,83.2 1 1 -github.com/ethereum/go-ethereum/core/vm/stack.go:86.26,88.22 2 0 -github.com/ethereum/go-ethereum/core/vm/stack.go:95.2,95.30 1 0 -github.com/ethereum/go-ethereum/core/vm/stack.go:88.22,89.31 1 0 -github.com/ethereum/go-ethereum/core/vm/stack.go:89.31,91.4 1 0 -github.com/ethereum/go-ethereum/core/vm/stack.go:92.8,94.3 1 0 -github.com/ethereum/go-ethereum/core/vm/common.go:27.56,28.19 1 0 -github.com/ethereum/go-ethereum/core/vm/common.go:31.2,31.47 1 0 -github.com/ethereum/go-ethereum/core/vm/common.go:28.19,30.3 1 0 -github.com/ethereum/go-ethereum/core/vm/common.go:37.78,39.19 1 0 -github.com/ethereum/go-ethereum/core/vm/common.go:43.2,44.14 2 0 -github.com/ethereum/go-ethereum/core/vm/common.go:47.2,49.28 2 0 -github.com/ethereum/go-ethereum/core/vm/common.go:39.19,41.3 1 0 -github.com/ethereum/go-ethereum/core/vm/common.go:44.14,46.3 1 0 -github.com/ethereum/go-ethereum/core/vm/common.go:54.61,56.20 2 1 -github.com/ethereum/go-ethereum/core/vm/common.go:59.2,60.18 2 1 -github.com/ethereum/go-ethereum/core/vm/common.go:63.2,63.57 1 1 -github.com/ethereum/go-ethereum/core/vm/common.go:56.20,58.3 1 1 -github.com/ethereum/go-ethereum/core/vm/common.go:60.18,62.3 1 1 -github.com/ethereum/go-ethereum/core/vm/common.go:67.37,68.30 1 1 -github.com/ethereum/go-ethereum/core/vm/common.go:72.2,72.25 1 1 -github.com/ethereum/go-ethereum/core/vm/common.go:68.30,70.3 1 0 -github.com/ethereum/go-ethereum/core/vm/common.go:75.29,76.25 1 1 -github.com/ethereum/go-ethereum/core/vm/common.go:81.2,81.13 1 1 -github.com/ethereum/go-ethereum/core/vm/common.go:76.25,77.16 1 1 -github.com/ethereum/go-ethereum/core/vm/common.go:77.16,79.4 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:29.90,33.2 3 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:35.90,39.2 3 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:41.90,45.2 3 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:47.90,51.2 3 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:53.91,57.2 3 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:59.90,63.2 3 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:65.91,69.2 3 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:71.90,75.2 3 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:77.97,81.2 3 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:83.90,87.2 3 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:89.89,91.13 2 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:96.2,96.17 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:91.13,93.3 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:93.8,95.3 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:99.89,101.13 2 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:106.2,106.17 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:101.13,103.3 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:103.8,105.3 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:109.90,111.14 2 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:116.2,116.17 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:111.14,113.3 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:113.8,115.3 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:119.90,121.14 2 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:126.2,126.17 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:121.14,123.3 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:123.8,125.3 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:129.89,131.13 2 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:136.2,136.17 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:131.13,133.3 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:133.8,135.3 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:139.93,141.16 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:146.2,146.17 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:141.16,143.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:143.8,145.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:149.90,153.2 3 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:155.89,159.2 3 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:161.90,165.2 3 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:167.91,171.2 3 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:173.93,175.16 2 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:180.2,180.17 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:175.16,177.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:177.8,179.3 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:183.93,187.2 3 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:192.90,195.25 2 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:200.2,200.17 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:195.25,197.3 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:197.8,199.3 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:206.90,209.25 2 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:214.2,214.17 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:209.25,211.3 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:211.8,213.3 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:220.90,222.25 2 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:231.2,233.17 3 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:222.25,223.24 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:229.3,229.18 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:223.24,225.4 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:225.9,228.4 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:236.96,240.31 3 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:245.2,249.40 4 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:253.2,254.17 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:240.31,242.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:242.8,244.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:249.40,251.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:256.94,259.2 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:261.94,266.2 4 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:268.93,271.2 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:272.93,275.2 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:277.96,281.2 3 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:283.99,285.59 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:291.2,291.17 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:285.59,288.3 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:288.8,290.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:294.99,297.2 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:299.99,306.14 3 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:310.2,314.17 4 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:306.14,308.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:317.101,320.2 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:322.101,330.14 3 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:334.2,337.61 4 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:340.2,341.17 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:330.14,332.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:337.61,339.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:344.98,348.2 3 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:350.95,355.2 4 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:357.95,364.14 3 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:367.2,370.17 3 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:364.14,366.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:373.98,382.14 3 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:385.2,389.17 4 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:382.14,384.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:418.98,421.44 3 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:426.2,426.17 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:421.44,423.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:423.8,425.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:429.95,433.2 3 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:435.96,438.14 3 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:442.2,444.17 3 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:449.2,449.37 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:454.2,454.17 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:438.14,441.3 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:444.17,446.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:446.8,448.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:449.37,451.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:451.8,453.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:457.95,460.2 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:462.96,466.2 3 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:468.93,472.2 3 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:474.97,478.2 3 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:480.93,484.2 3 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:486.95,489.2 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:491.90,494.2 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:496.92,501.2 4 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:503.93,508.2 3 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:510.94,514.2 3 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:516.92,522.2 5 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:524.93,525.26 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:528.2,532.17 4 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:525.26,527.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:535.91,536.51 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:539.2,540.41 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:543.2,544.17 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:536.51,538.3 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:540.41,542.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:547.92,548.51 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:551.2,552.20 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:558.2,558.17 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:548.51,550.3 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:552.20,553.42 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:556.3,556.25 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:553.42,555.4 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:561.95,563.2 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:565.89,568.2 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:570.92,573.2 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:575.90,578.2 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:580.93,581.26 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:584.2,590.41 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:594.2,599.21 4 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:603.2,608.78 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:615.2,618.36 3 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:622.2,623.17 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:581.26,583.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:590.41,592.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:599.21,601.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:608.78,610.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:610.8,610.60 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:610.60,612.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:612.8,614.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:618.36,621.3 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:626.94,627.26 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:630.2,645.25 6 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:648.2,651.19 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:656.2,659.36 3 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:663.2,664.17 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:627.26,629.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:645.25,647.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:651.19,653.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:653.8,655.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:659.36,662.3 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:667.91,679.45 7 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:682.2,686.21 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:691.2,693.16 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:698.2,699.47 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:703.2,706.17 3 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:679.45,681.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:686.21,689.3 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:693.16,695.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:695.8,697.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:699.47,702.3 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:709.95,723.21 8 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:728.2,729.16 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:734.2,735.47 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:739.2,742.17 3 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:723.21,726.3 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:729.16,731.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:731.8,733.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:735.47,738.3 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:745.99,758.16 8 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:763.2,764.47 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:768.2,771.17 3 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:758.16,760.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:760.8,762.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:764.47,767.3 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:774.97,787.16 8 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:792.2,793.47 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:797.2,800.17 3 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:787.16,789.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:789.8,791.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:793.47,796.3 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:803.93,808.2 3 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:810.93,816.2 4 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:818.96,820.2 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:822.91,824.2 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:826.99,827.26 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:830.2,834.27 5 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:838.2,838.26 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:827.26,829.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:834.27,837.3 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:844.38,845.92 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:845.92,846.27 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:849.3,852.29 4 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:857.3,867.18 3 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:846.27,848.4 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:852.29,855.4 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:872.92,878.19 3 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:883.2,883.17 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:878.19,880.3 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:880.8,882.3 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:887.60,888.92 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:888.92,892.28 3 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:896.3,897.37 2 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:901.3,906.18 4 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:892.28,894.4 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:897.37,899.4 1 0 -github.com/ethereum/go-ethereum/core/vm/instructions.go:911.40,912.92 1 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:912.92,915.3 2 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:919.41,922.92 2 1 -github.com/ethereum/go-ethereum/core/vm/instructions.go:922.92,925.3 2 0 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:68.62,70.26 1 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:104.2,107.3 1 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:70.26,71.10 1 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:93.3,93.37 1 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:72.31,73.40 1 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:74.32,75.41 1 0 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:76.32,77.41 1 0 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:78.34,79.43 1 0 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:80.40,81.49 1 0 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:82.35,83.44 1 0 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:84.32,85.49 1 0 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:86.32,87.51 1 0 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:88.35,89.44 1 0 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:90.11,91.43 1 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:93.37,95.48 2 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:100.4,100.25 1 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:95.48,99.5 2 0 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:116.104,120.15 2 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:124.2,124.30 1 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:131.2,134.29 2 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:138.2,161.15 2 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:164.2,166.18 2 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:181.2,181.6 1 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:242.2,242.25 1 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:246.2,246.17 1 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:120.15,120.33 1 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:124.30,126.16 2 0 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:126.16,126.39 1 0 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:134.29,136.3 1 0 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:161.15,163.3 1 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:166.18,167.16 1 0 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:167.16,168.18 1 0 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:168.18,169.16 1 0 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:169.16,171.6 1 0 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:171.11,173.6 1 0 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:181.6,182.19 1 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:188.3,192.53 4 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:197.3,197.29 1 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:200.3,200.34 1 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:230.3,230.19 1 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:235.3,236.17 2 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:239.3,239.7 1 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:182.19,185.4 1 0 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:192.53,194.4 1 0 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:194.9,194.39 1 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:194.39,196.4 1 0 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:197.29,199.4 1 0 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:200.34,207.35 2 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:220.4,223.51 4 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:226.4,226.22 1 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:207.35,209.17 2 0 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:214.5,214.79 1 0 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:209.17,211.6 1 0 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:214.79,216.6 1 0 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:223.51,225.5 1 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:226.22,228.5 1 0 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:230.19,233.4 2 0 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:236.17,237.9 1 1 -github.com/ethereum/go-ethereum/core/vm/interpreter.go:242.25,244.3 1 1 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:27.55,28.106 1 1 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:28.106,30.52 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:34.3,41.103 2 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:52.3,54.23 2 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:59.3,60.26 2 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:71.3,71.34 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:78.3,78.24 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:94.3,94.55 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:30.52,32.4 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:41.103,45.20 3 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:45.20,49.86 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:54.23,58.4 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:60.26,61.35 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:64.4,64.32 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:69.4,69.83 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:61.35,63.5 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:64.32,66.5 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:71.34,72.34 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:72.34,74.5 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:74.10,74.39 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:74.39,76.5 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:78.24,79.35 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:79.35,83.5 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:83.10,90.5 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:103.114,107.92 3 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:113.2,113.47 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:107.92,112.3 2 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:121.120,124.16 2 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:127.2,129.44 2 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:138.2,138.17 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:124.16,126.3 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:129.44,133.121 3 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:136.3,136.18 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:133.121,135.4 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:148.121,151.44 2 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:157.2,157.15 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:151.44,156.3 2 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:160.67,161.106 1 1 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:161.106,168.18 4 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:181.3,182.31 2 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:189.3,190.29 2 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:168.18,172.34 2 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:172.34,174.5 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:182.31,184.4 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:223.57,224.110 1 1 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:243.2,243.16 1 1 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:224.110,229.48 2 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:235.3,235.91 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:238.3,238.69 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:241.3,241.18 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:229.48,233.4 2 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:235.91,237.4 1 0 -github.com/ethereum/go-ethereum/core/vm/operations_acl.go:238.69,240.4 1 0 -github.com/ethereum/go-ethereum/core/vm/gas.go:37.95,38.14 1 0 -github.com/ethereum/go-ethereum/core/vm/gas.go:48.2,48.26 1 0 -github.com/ethereum/go-ethereum/core/vm/gas.go:52.2,52.31 1 0 -github.com/ethereum/go-ethereum/core/vm/gas.go:38.14,44.54 3 0 -github.com/ethereum/go-ethereum/core/vm/gas.go:44.54,46.4 1 0 -github.com/ethereum/go-ethereum/core/vm/gas.go:48.26,50.3 1 0 -github.com/ethereum/go-ethereum/core/vm/eips.go:39.49,41.9 2 1 -github.com/ethereum/go-ethereum/core/vm/eips.go:44.2,45.12 2 1 -github.com/ethereum/go-ethereum/core/vm/eips.go:41.9,43.3 1 0 -github.com/ethereum/go-ethereum/core/vm/eips.go:48.32,51.2 2 0 -github.com/ethereum/go-ethereum/core/vm/eips.go:52.34,54.28 2 0 -github.com/ethereum/go-ethereum/core/vm/eips.go:57.2,58.13 2 0 -github.com/ethereum/go-ethereum/core/vm/eips.go:54.28,56.3 1 0 -github.com/ethereum/go-ethereum/core/vm/eips.go:66.32,79.2 4 1 -github.com/ethereum/go-ethereum/core/vm/eips.go:81.98,85.2 3 0 -github.com/ethereum/go-ethereum/core/vm/eips.go:89.32,97.2 1 1 -github.com/ethereum/go-ethereum/core/vm/eips.go:100.94,104.2 3 0 -github.com/ethereum/go-ethereum/core/vm/eips.go:107.32,110.2 2 1 -github.com/ethereum/go-ethereum/core/vm/eips.go:114.32,148.2 21 1 -github.com/ethereum/go-ethereum/core/vm/eips.go:154.32,157.2 2 1 -github.com/ethereum/go-ethereum/core/vm/eips.go:161.32,169.2 1 1 -github.com/ethereum/go-ethereum/core/vm/eips.go:172.94,176.2 3 0 -github.com/ethereum/go-ethereum/core/vm/errors.go:52.44,54.2 1 0 -github.com/ethereum/go-ethereum/core/vm/errors.go:63.43,65.2 1 0 -github.com/ethereum/go-ethereum/core/vm/errors.go:72.43,72.97 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:44.77,46.9 2 1 -github.com/ethereum/go-ethereum/core/vm/evm.go:56.2,57.14 2 1 -github.com/ethereum/go-ethereum/core/vm/evm.go:47.31,48.43 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:49.33,50.45 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:51.34,52.46 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:53.10,54.46 1 1 -github.com/ethereum/go-ethereum/core/vm/evm.go:128.123,139.2 3 1 -github.com/ethereum/go-ethereum/core/vm/evm.go:143.57,146.2 2 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:150.26,152.2 1 1 -github.com/ethereum/go-ethereum/core/vm/evm.go:155.34,157.2 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:160.47,162.2 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:168.149,170.45 1 1 -github.com/ethereum/go-ethereum/core/vm/evm.go:174.2,174.89 1 1 -github.com/ethereum/go-ethereum/core/vm/evm.go:177.2,180.30 3 1 -github.com/ethereum/go-ethereum/core/vm/evm.go:196.2,199.22 2 1 -github.com/ethereum/go-ethereum/core/vm/evm.go:214.2,214.18 1 1 -github.com/ethereum/go-ethereum/core/vm/evm.go:235.2,235.16 1 1 -github.com/ethereum/go-ethereum/core/vm/evm.go:244.2,244.22 1 1 -github.com/ethereum/go-ethereum/core/vm/evm.go:170.45,172.3 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:174.89,176.3 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:180.30,181.68 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:194.3,194.34 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:181.68,183.24 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:192.4,192.24 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:183.24,184.23 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:184.23,187.6 2 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:187.11,190.6 2 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:199.22,200.21 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:200.21,202.53 2 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:202.53,204.5 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:205.9,208.32 2 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:208.32,210.5 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:214.18,216.3 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:216.8,220.21 2 1 -github.com/ethereum/go-ethereum/core/vm/evm.go:220.21,222.4 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:222.9,230.4 5 1 -github.com/ethereum/go-ethereum/core/vm/evm.go:235.16,237.34 2 1 -github.com/ethereum/go-ethereum/core/vm/evm.go:237.34,239.4 1 1 -github.com/ethereum/go-ethereum/core/vm/evm.go:254.153,256.45 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:263.2,263.68 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:266.2,269.22 2 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:277.2,277.59 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:288.2,288.16 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:294.2,294.22 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:256.45,258.3 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:263.68,265.3 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:269.22,271.31 2 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:271.31,273.4 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:277.59,279.3 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:279.8,287.3 5 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:288.16,290.34 2 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:290.34,292.4 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:302.141,304.45 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:307.2,310.22 2 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:318.2,318.59 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:328.2,328.16 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:334.2,334.22 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:304.45,306.3 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:310.22,312.31 2 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:312.31,314.4 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:318.59,320.3 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:320.8,327.3 5 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:328.16,330.34 2 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:330.34,332.4 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:341.139,343.45 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:351.2,360.22 3 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:367.2,367.59 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:384.2,384.16 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:390.2,390.22 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:343.45,345.3 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:360.22,362.31 2 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:362.31,364.4 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:367.59,369.3 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:369.8,383.3 5 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:384.16,386.34 2 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:386.34,388.4 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:398.42,399.31 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:402.2,402.15 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:399.31,401.3 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:406.174,409.45 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:412.2,412.68 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:415.2,416.21 2 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:419.2,422.29 2 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:426.2,427.110 2 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:431.2,433.29 3 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:436.2,443.22 4 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:451.2,456.76 3 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:461.2,461.78 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:469.2,469.16 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:481.2,481.79 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:488.2,488.22 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:495.2,495.40 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:409.45,411.3 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:412.68,414.3 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:416.21,418.3 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:422.29,424.3 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:427.110,429.3 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:433.29,435.3 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:443.22,444.21 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:444.21,446.4 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:446.9,448.4 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:456.76,458.3 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:461.78,463.3 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:469.16,471.37 2 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:471.37,473.4 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:473.9,475.4 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:481.79,483.34 2 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:483.34,485.4 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:488.22,489.21 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:489.21,491.4 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:491.9,493.4 1 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:499.158,502.2 2 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:508.182,512.2 3 0 -github.com/ethereum/go-ethereum/core/vm/evm.go:515.51,515.77 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:29.68,30.21 1 1 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:38.2,38.31 1 1 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:41.2,44.36 3 1 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:55.2,55.15 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:30.21,32.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:38.31,40.3 1 1 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:44.36,54.3 7 1 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:65.44,66.106 1 1 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:66.106,69.17 2 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:73.3,74.15 2 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:78.3,78.82 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:82.3,82.57 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:85.3,85.18 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:69.17,71.4 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:74.15,76.4 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:78.82,80.4 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:82.57,84.4 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:96.108,104.69 2 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:134.2,135.22 2 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:138.2,139.25 2 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:148.2,148.33 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:155.2,155.23 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:162.2,162.38 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:104.69,110.10 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:111.52,112.35 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:113.52,115.37 2 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:116.11,117.37 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:135.22,137.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:139.25,140.34 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:143.3,143.31 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:146.3,146.39 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:140.34,142.4 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:143.31,145.4 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:148.33,149.33 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:149.33,151.4 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:151.9,151.38 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:151.38,153.4 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:155.23,156.34 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:156.34,158.4 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:158.9,160.4 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:178.115,180.51 1 1 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:184.2,190.22 3 1 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:193.2,194.25 2 1 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:203.2,203.33 1 1 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:210.2,210.23 1 1 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:217.2,217.36 1 1 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:180.51,182.3 1 1 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:190.22,192.3 1 1 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:194.25,195.34 1 1 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:198.3,198.31 1 1 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:201.3,201.43 1 1 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:195.34,197.4 1 1 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:198.31,200.4 1 1 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:203.33,204.33 1 1 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:204.33,206.4 1 1 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:206.9,206.38 1 1 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:206.38,208.4 1 1 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:210.23,211.34 1 1 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:211.34,213.4 1 1 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:213.9,215.4 1 1 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:220.35,221.106 1 1 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:221.106,223.15 2 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:227.3,228.17 2 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:232.3,232.65 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:235.3,235.72 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:239.3,240.89 2 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:243.3,243.65 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:246.3,246.18 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:223.15,225.4 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:228.17,230.4 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:232.65,234.4 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:235.72,237.4 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:240.89,242.4 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:243.65,245.4 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:250.111,252.16 2 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:255.2,256.14 2 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:259.2,259.94 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:262.2,262.58 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:265.2,265.17 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:252.16,254.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:256.14,258.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:259.94,261.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:262.58,264.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:271.116,273.2 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:284.109,286.16 2 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:289.2,290.14 2 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:293.2,293.94 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:296.2,296.58 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:299.2,299.17 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:286.16,288.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:290.14,292.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:293.94,295.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:296.58,298.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:302.113,309.64 3 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:312.2,312.17 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:309.64,311.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:315.111,322.64 3 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:325.2,325.17 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:322.64,324.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:328.106,334.29 2 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:341.2,341.20 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:344.2,345.16 2 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:348.2,349.60 2 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:353.2,354.16 2 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:357.2,357.66 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:360.2,360.17 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:334.29,335.51 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:335.51,337.4 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:338.8,338.40 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:338.40,340.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:341.20,343.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:345.16,347.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:349.60,351.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:354.16,356.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:357.66,359.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:363.110,365.16 2 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:368.2,372.31 2 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:375.2,375.60 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:378.2,379.16 2 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:382.2,382.66 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:385.2,385.17 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:365.16,367.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:372.31,374.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:375.60,377.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:379.16,381.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:382.66,384.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:388.114,390.16 2 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:393.2,394.16 2 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:397.2,398.66 2 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:401.2,401.17 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:390.16,392.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:394.16,396.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:398.66,400.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:404.112,406.16 2 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:409.2,410.16 2 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:413.2,414.66 2 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:417.2,417.17 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:406.16,408.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:410.16,412.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:414.66,416.3 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:420.114,423.29 2 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:437.2,437.50 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:440.2,440.17 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:423.29,427.30 3 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:427.30,429.92 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:429.92,431.5 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:432.9,432.41 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:432.41,434.4 1 0 -github.com/ethereum/go-ethereum/core/vm/gas_table.go:437.50,439.3 1 0 -github.com/ethereum/go-ethereum/core/vm/jump_table.go:63.39,64.24 1 1 -github.com/ethereum/go-ethereum/core/vm/jump_table.go:78.2,78.11 1 1 -github.com/ethereum/go-ethereum/core/vm/jump_table.go:64.24,65.16 1 1 -github.com/ethereum/go-ethereum/core/vm/jump_table.go:74.3,74.51 1 1 -github.com/ethereum/go-ethereum/core/vm/jump_table.go:65.16,66.47 1 0 -github.com/ethereum/go-ethereum/core/vm/jump_table.go:74.51,75.90 1 0 -github.com/ethereum/go-ethereum/core/vm/jump_table.go:81.41,90.2 3 1 -github.com/ethereum/go-ethereum/core/vm/jump_table.go:94.42,99.2 4 1 -github.com/ethereum/go-ethereum/core/vm/jump_table.go:103.42,107.2 3 1 -github.com/ethereum/go-ethereum/core/vm/jump_table.go:111.44,119.2 5 1 -github.com/ethereum/go-ethereum/core/vm/jump_table.go:123.50,158.2 7 1 -github.com/ethereum/go-ethereum/core/vm/jump_table.go:162.45,194.2 6 1 -github.com/ethereum/go-ethereum/core/vm/jump_table.go:197.50,202.2 3 1 -github.com/ethereum/go-ethereum/core/vm/jump_table.go:205.52,215.2 9 1 -github.com/ethereum/go-ethereum/core/vm/jump_table.go:219.45,230.2 3 1 -github.com/ethereum/go-ethereum/core/vm/jump_table.go:234.44,1039.28 2 1 -github.com/ethereum/go-ethereum/core/vm/jump_table.go:1045.2,1045.22 1 1 -github.com/ethereum/go-ethereum/core/vm/jump_table.go:1039.28,1040.19 1 1 -github.com/ethereum/go-ethereum/core/vm/jump_table.go:1040.19,1042.4 1 1 -github.com/ethereum/go-ethereum/core/vm/contract.go:41.47,41.78 1 1 -github.com/ethereum/go-ethereum/core/vm/contract.go:66.96,69.42 2 1 -github.com/ethereum/go-ethereum/core/vm/contract.go:78.2,82.10 3 1 -github.com/ethereum/go-ethereum/core/vm/contract.go:69.42,72.3 1 0 -github.com/ethereum/go-ethereum/core/vm/contract.go:72.8,74.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contract.go:85.58,89.46 2 0 -github.com/ethereum/go-ethereum/core/vm/contract.go:93.2,93.39 1 0 -github.com/ethereum/go-ethereum/core/vm/contract.go:96.2,96.24 1 0 -github.com/ethereum/go-ethereum/core/vm/contract.go:89.46,91.3 1 0 -github.com/ethereum/go-ethereum/core/vm/contract.go:93.39,95.3 1 0 -github.com/ethereum/go-ethereum/core/vm/contract.go:101.46,103.23 1 0 -github.com/ethereum/go-ethereum/core/vm/contract.go:109.2,109.35 1 0 -github.com/ethereum/go-ethereum/core/vm/contract.go:126.2,126.23 1 0 -github.com/ethereum/go-ethereum/core/vm/contract.go:129.2,129.38 1 0 -github.com/ethereum/go-ethereum/core/vm/contract.go:103.23,105.3 1 0 -github.com/ethereum/go-ethereum/core/vm/contract.go:109.35,112.13 2 0 -github.com/ethereum/go-ethereum/core/vm/contract.go:119.3,120.37 2 0 -github.com/ethereum/go-ethereum/core/vm/contract.go:112.13,117.4 2 0 -github.com/ethereum/go-ethereum/core/vm/contract.go:126.23,128.3 1 0 -github.com/ethereum/go-ethereum/core/vm/contract.go:134.43,142.2 4 0 -github.com/ethereum/go-ethereum/core/vm/contract.go:145.43,146.29 1 1 -github.com/ethereum/go-ethereum/core/vm/contract.go:150.2,150.13 1 1 -github.com/ethereum/go-ethereum/core/vm/contract.go:146.29,148.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contract.go:157.44,159.2 1 0 -github.com/ethereum/go-ethereum/core/vm/contract.go:162.49,163.17 1 1 -github.com/ethereum/go-ethereum/core/vm/contract.go:166.2,167.13 2 1 -github.com/ethereum/go-ethereum/core/vm/contract.go:163.17,165.3 1 0 -github.com/ethereum/go-ethereum/core/vm/contract.go:171.45,173.2 1 1 -github.com/ethereum/go-ethereum/core/vm/contract.go:176.37,178.2 1 0 -github.com/ethereum/go-ethereum/core/vm/contract.go:182.85,186.2 3 1 -github.com/ethereum/go-ethereum/core/vm/contract.go:190.88,194.2 3 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:116.13,117.47 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:120.2,120.47 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:123.2,123.46 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:126.2,126.44 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:117.47,119.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:120.47,122.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:123.46,125.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:126.44,128.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:132.61,133.9 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:134.22,135.36 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:136.24,137.38 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:138.25,139.39 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:140.10,141.39 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:150.131,152.27 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:155.2,157.33 3 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:152.27,154.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:163.54,165.2 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:167.55,179.79 6 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:184.2,190.16 5 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:195.2,195.72 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:179.79,181.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:190.16,192.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:205.55,207.2 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:208.56,211.2 2 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:220.58,222.2 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:223.59,227.2 3 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:236.53,238.2 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:239.51,241.2 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:274.48,275.9 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:291.2,291.10 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:276.25,277.14 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:278.27,283.4 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:284.10,289.4 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:295.54,301.21 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:307.2,308.53 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:318.2,319.44 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:322.2,323.27 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:327.2,330.15 3 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:355.2,359.23 4 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:362.2,362.21 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:301.21,303.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:303.8,305.3 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:308.53,310.3 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:310.8,311.28 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:311.28,313.4 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:313.9,315.4 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:319.44,321.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:323.27,326.3 2 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:330.15,346.24 6 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:350.3,350.25 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:353.3,353.22 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:346.24,348.4 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:350.25,352.4 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:359.23,361.3 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:365.55,371.21 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:377.2,377.33 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:381.2,386.23 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:390.2,390.80 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:371.21,373.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:373.8,375.3 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:377.33,379.3 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:386.23,389.3 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:395.52,397.45 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:400.2,400.15 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:397.45,399.3 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:405.52,407.45 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:410.2,410.15 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:407.45,409.3 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:415.48,417.16 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:420.2,421.16 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:424.2,426.27 3 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:417.16,419.3 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:421.16,423.3 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:434.61,436.2 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:438.62,440.2 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:447.62,449.2 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:451.63,453.2 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:457.54,459.16 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:462.2,464.27 3 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:459.16,461.3 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:472.67,474.2 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:476.68,478.2 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:485.68,487.2 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:489.69,491.2 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:506.52,508.24 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:512.2,516.39 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:529.2,529.32 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:532.2,532.25 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:508.24,510.3 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:516.39,518.17 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:521.3,522.17 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:525.3,526.21 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:518.17,520.4 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:522.17,524.4 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:529.32,531.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:540.65,542.2 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:544.66,546.2 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:553.66,555.2 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:557.67,559.2 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:563.52,566.38 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:569.2,569.52 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:566.38,568.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:583.53,585.38 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:588.2,588.85 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:592.2,600.25 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:604.2,604.26 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:608.2,615.25 5 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:619.2,619.20 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:585.38,587.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:588.85,590.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:600.25,603.3 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:604.26,607.3 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:615.25,618.3 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:633.58,635.2 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:637.59,641.23 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:644.2,651.54 4 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:655.2,655.54 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:660.2,664.30 3 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:641.23,643.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:651.54,653.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:655.54,657.3 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:671.58,673.2 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:675.59,679.23 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:682.2,689.54 4 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:693.2,700.30 4 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:679.23,681.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:689.54,691.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:707.63,710.12 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:715.2,716.65 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:722.2,722.64 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:710.12,713.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:716.65,718.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:718.8,720.3 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:725.64,730.44 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:733.2,741.25 5 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:753.2,757.30 3 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:730.44,732.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:741.25,745.63 3 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:749.3,749.51 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:745.63,747.4 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:764.58,766.2 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:768.59,772.23 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:775.2,783.54 5 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:787.2,787.54 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:792.2,795.30 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:772.23,774.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:783.54,785.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:787.54,789.3 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:802.58,804.2 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:806.59,810.23 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:813.2,820.54 4 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:824.2,831.30 4 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:810.23,812.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:820.54,822.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:838.63,841.12 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:846.2,847.65 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:853.2,853.64 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:841.12,844.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:847.65,849.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:849.8,851.3 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:856.64,861.44 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:864.2,872.25 5 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:884.2,888.30 3 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:861.44,863.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:872.25,876.63 3 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:880.3,880.51 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:876.63,878.4 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:895.60,897.2 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:899.61,907.44 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:912.2,916.25 3 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:944.2,947.15 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:950.2,950.17 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:907.44,909.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:916.25,922.17 4 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:926.3,927.17 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:933.3,933.32 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:936.3,936.32 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:941.3,941.20 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:922.17,924.4 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:927.17,929.4 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:933.32,935.4 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:936.32,938.4 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:947.15,949.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:955.60,956.19 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:960.2,960.26 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:965.2,967.17 3 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:956.19,958.3 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:960.26,961.26 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:961.26,963.4 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:974.58,976.2 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:978.59,982.22 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:987.2,988.16 2 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:993.2,997.16 3 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:1002.2,1002.30 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:982.22,984.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:988.16,990.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:997.16,999.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:1009.58,1011.2 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:1013.59,1017.23 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:1022.2,1024.16 3 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:1027.2,1029.16 3 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:1032.2,1039.16 4 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:1044.2,1044.30 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:1017.23,1019.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:1024.16,1026.3 1 0 -github.com/ethereum/go-ethereum/core/vm/contracts.go:1029.16,1031.3 1 1 -github.com/ethereum/go-ethereum/core/vm/contracts.go:1039.16,1041.3 1 1 -github.com/ethereum/go-ethereum/core/vm/stack_table.go:23.30,25.2 1 1 -github.com/ethereum/go-ethereum/core/vm/stack_table.go:26.30,28.2 1 1 -github.com/ethereum/go-ethereum/core/vm/stack_table.go:30.29,32.2 1 1 -github.com/ethereum/go-ethereum/core/vm/stack_table.go:33.29,35.2 1 1 -github.com/ethereum/go-ethereum/core/vm/stack_table.go:37.34,39.2 1 1 -github.com/ethereum/go-ethereum/core/vm/stack_table.go:40.35,42.2 1 1 -github.com/ethereum/go-ethereum/core/vm/analysis.go:33.37,35.2 1 1 -github.com/ethereum/go-ethereum/core/vm/analysis.go:37.50,40.31 3 1 -github.com/ethereum/go-ethereum/core/vm/analysis.go:40.31,42.3 1 0 -github.com/ethereum/go-ethereum/core/vm/analysis.go:45.37,49.2 3 1 -github.com/ethereum/go-ethereum/core/vm/analysis.go:51.38,56.2 4 1 -github.com/ethereum/go-ethereum/core/vm/analysis.go:59.50,61.2 1 0 -github.com/ethereum/go-ethereum/core/vm/analysis.go:64.37,70.2 2 1 -github.com/ethereum/go-ethereum/core/vm/analysis.go:75.51,76.47 1 1 -github.com/ethereum/go-ethereum/core/vm/analysis.go:117.2,117.13 1 1 -github.com/ethereum/go-ethereum/core/vm/analysis.go:76.47,79.32 3 1 -github.com/ethereum/go-ethereum/core/vm/analysis.go:82.3,83.19 2 1 -github.com/ethereum/go-ethereum/core/vm/analysis.go:93.3,93.18 1 1 -github.com/ethereum/go-ethereum/core/vm/analysis.go:79.32,80.12 1 1 -github.com/ethereum/go-ethereum/core/vm/analysis.go:83.19,84.39 1 1 -github.com/ethereum/go-ethereum/core/vm/analysis.go:88.4,88.37 1 1 -github.com/ethereum/go-ethereum/core/vm/analysis.go:84.39,87.5 2 1 -github.com/ethereum/go-ethereum/core/vm/analysis.go:88.37,91.5 2 1 -github.com/ethereum/go-ethereum/core/vm/analysis.go:94.10,96.11 2 1 -github.com/ethereum/go-ethereum/core/vm/analysis.go:97.10,99.11 2 1 -github.com/ethereum/go-ethereum/core/vm/analysis.go:100.10,102.11 2 1 -github.com/ethereum/go-ethereum/core/vm/analysis.go:103.10,105.11 2 0 -github.com/ethereum/go-ethereum/core/vm/analysis.go:106.10,108.11 2 0 -github.com/ethereum/go-ethereum/core/vm/analysis.go:109.10,111.11 2 0 -github.com/ethereum/go-ethereum/core/vm/analysis.go:112.10,114.11 2 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:122.78,128.12 2 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:133.2,133.10 1 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:128.12,130.3 1 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:130.8,132.3 1 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:138.48,140.28 2 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:143.2,146.49 4 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:149.2,149.35 1 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:140.28,142.3 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:146.49,148.3 1 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:153.72,156.2 2 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:159.51,160.28 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:163.2,166.25 4 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:160.28,162.3 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:171.50,173.9 2 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:174.18,175.13 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:176.24,179.40 2 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:182.3,183.27 2 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:184.10,187.17 2 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:190.3,190.26 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:179.40,181.4 1 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:187.17,189.4 1 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:196.51,197.31 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:208.2,208.25 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:197.31,201.17 3 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:204.3,205.28 2 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:201.17,203.4 1 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:212.47,213.17 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:216.2,216.14 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:213.17,215.3 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:217.42,220.17 3 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:223.3,224.28 2 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:225.10,226.31 1 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:220.17,222.4 1 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:230.53,233.2 2 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:235.61,236.9 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:246.2,246.12 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:237.66,238.37 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:239.62,240.33 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:241.52,242.34 1 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:243.10,244.68 1 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:249.43,250.27 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:256.2,256.20 1 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:250.27,251.38 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:254.3,254.36 1 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:251.38,253.4 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:261.45,264.29 3 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:267.2,267.13 1 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:264.29,266.3 1 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:276.59,282.29 6 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:287.2,289.18 3 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:282.29,283.44 1 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:283.44,285.4 1 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:294.60,297.16 2 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:303.2,303.56 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:306.2,306.58 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:309.2,309.42 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:297.16,299.3 1 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:303.56,305.3 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:306.58,308.3 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:312.70,314.55 2 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:317.2,317.74 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:320.2,322.34 3 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:325.2,327.12 2 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:314.55,316.3 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:317.74,319.3 1 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:322.34,324.3 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:330.72,332.55 2 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:335.2,335.74 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:338.2,343.34 6 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:346.2,348.12 2 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:332.55,334.3 1 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:335.74,337.3 1 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:343.34,345.3 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:351.72,353.55 2 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:356.2,356.74 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:359.2,365.34 7 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:368.2,368.12 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:353.55,355.3 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:356.74,358.3 1 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:365.34,367.3 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:375.30,375.48 1 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:378.56,381.16 3 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:382.20,383.22 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:384.24,386.22 2 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:387.24,389.22 2 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:390.10,390.10 0 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:399.118,403.25 3 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:406.2,406.31 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:438.2,438.12 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:403.25,405.3 1 0 -github.com/ethereum/go-ethereum/core/types/receipt.go:406.31,417.25 6 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:423.3,423.13 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:429.3,429.40 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:417.25,421.4 2 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:423.13,425.4 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:425.9,427.4 1 1 -github.com/ethereum/go-ethereum/core/types/receipt.go:429.40,436.4 6 1 -github.com/ethereum/go-ethereum/core/types/bor_receipt.go:25.60,29.2 3 0 -github.com/ethereum/go-ethereum/core/types/bor_receipt.go:32.57,34.2 1 0 -github.com/ethereum/go-ethereum/core/types/bor_receipt.go:37.39,39.2 1 0 -github.com/ethereum/go-ethereum/core/types/bor_receipt.go:43.108,55.37 8 0 -github.com/ethereum/go-ethereum/core/types/bor_receipt.go:60.2,60.41 1 0 -github.com/ethereum/go-ethereum/core/types/bor_receipt.go:68.2,68.12 1 0 -github.com/ethereum/go-ethereum/core/types/bor_receipt.go:55.37,57.3 1 0 -github.com/ethereum/go-ethereum/core/types/bor_receipt.go:60.41,67.3 6 0 -github.com/ethereum/go-ethereum/core/types/bor_receipt.go:73.104,78.33 2 0 -github.com/ethereum/go-ethereum/core/types/bor_receipt.go:78.33,85.3 6 0 -github.com/ethereum/go-ethereum/core/types/bor_receipt.go:89.55,92.51 2 0 -github.com/ethereum/go-ethereum/core/types/bor_receipt.go:96.2,96.15 1 0 -github.com/ethereum/go-ethereum/core/types/bor_receipt.go:92.51,94.3 1 0 -github.com/ethereum/go-ethereum/core/types/log.go:86.44,89.2 2 1 -github.com/ethereum/go-ethereum/core/types/log.go:92.46,95.16 3 1 -github.com/ethereum/go-ethereum/core/types/log.go:98.2,98.12 1 1 -github.com/ethereum/go-ethereum/core/types/log.go:95.16,97.3 1 1 -github.com/ethereum/go-ethereum/core/types/log.go:106.54,109.2 2 1 -github.com/ethereum/go-ethereum/core/types/log.go:114.56,116.16 2 1 -github.com/ethereum/go-ethereum/core/types/log.go:119.2,121.16 3 1 -github.com/ethereum/go-ethereum/core/types/log.go:139.2,139.12 1 1 -github.com/ethereum/go-ethereum/core/types/log.go:116.16,118.3 1 1 -github.com/ethereum/go-ethereum/core/types/log.go:121.16,127.3 1 1 -github.com/ethereum/go-ethereum/core/types/log.go:127.8,131.17 3 0 -github.com/ethereum/go-ethereum/core/types/log.go:131.17,137.4 1 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:17.47,56.2 20 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:59.52,79.52 3 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:82.2,82.27 1 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:85.2,86.26 2 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:89.2,90.25 2 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:93.2,94.21 2 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:97.2,98.23 2 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:101.2,102.28 2 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:105.2,106.22 2 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:109.2,110.27 2 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:113.2,114.23 2 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:117.2,118.25 2 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:121.2,122.24 2 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:125.2,126.21 2 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:129.2,130.22 2 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:133.2,134.26 2 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:137.2,137.22 1 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:140.2,140.24 1 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:143.2,143.12 1 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:79.52,81.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:82.27,84.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:86.26,88.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:90.25,92.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:94.21,96.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:98.23,100.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:102.28,104.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:106.22,108.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:110.27,112.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:114.23,116.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:118.25,120.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:122.24,124.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:126.21,128.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:130.22,132.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:134.26,136.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:137.22,139.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_header_json.go:140.24,142.3 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:54.53,61.30 4 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:98.2,98.27 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:62.17,71.31 9 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:72.21,83.31 11 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:84.21,96.31 12 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:102.57,104.52 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:109.2,110.18 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:271.2,274.12 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:104.52,106.3 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:111.20,114.20 3 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:117.3,117.23 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:120.3,121.26 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:124.3,125.21 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:128.3,129.23 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:132.3,133.22 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:136.3,137.19 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:140.3,141.19 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:144.3,145.19 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:148.3,150.20 3 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:156.24,160.28 3 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:163.3,163.25 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:166.3,167.20 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:170.3,170.23 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:173.3,174.26 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:177.3,178.21 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:181.3,182.23 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:185.3,186.22 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:189.3,190.19 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:193.3,194.19 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:197.3,198.19 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:201.3,203.20 3 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:209.24,213.28 3 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:216.3,216.25 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:219.3,220.20 2 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:223.3,223.23 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:226.3,227.38 2 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:230.3,231.30 2 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:234.3,235.21 2 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:238.3,239.23 2 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:242.3,243.22 2 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:246.3,247.19 2 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:250.3,251.19 2 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:254.3,255.19 2 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:258.3,260.20 3 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:266.10,267.31 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:114.20,116.4 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:117.23,119.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:121.26,123.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:125.21,127.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:129.23,131.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:133.22,135.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:137.19,139.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:141.19,143.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:145.19,147.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:150.20,151.74 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:151.74,153.5 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:160.28,162.4 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:163.25,165.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:167.20,169.4 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:170.23,172.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:174.26,176.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:178.21,180.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:182.23,184.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:186.22,188.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:190.19,192.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:194.19,196.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:198.19,200.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:203.20,204.75 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:204.75,206.5 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:213.28,215.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:216.25,218.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:220.20,222.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:223.23,225.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:227.38,229.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:231.30,233.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:235.21,237.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:239.23,241.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:243.22,245.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:247.19,249.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:251.19,253.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:255.19,257.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:260.20,261.75 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_marshalling.go:261.75,263.5 1 0 -github.com/ethereum/go-ethereum/core/types/bloom9.go:45.35,49.2 3 0 -github.com/ethereum/go-ethereum/core/types/bloom9.go:53.36,54.21 1 1 -github.com/ethereum/go-ethereum/core/types/bloom9.go:57.2,57.37 1 1 -github.com/ethereum/go-ethereum/core/types/bloom9.go:54.21,55.66 1 0 -github.com/ethereum/go-ethereum/core/types/bloom9.go:61.31,63.2 1 1 -github.com/ethereum/go-ethereum/core/types/bloom9.go:66.43,71.2 4 1 -github.com/ethereum/go-ethereum/core/types/bloom9.go:76.31,78.2 1 0 -github.com/ethereum/go-ethereum/core/types/bloom9.go:81.31,83.2 1 1 -github.com/ethereum/go-ethereum/core/types/bloom9.go:86.40,91.2 2 1 -github.com/ethereum/go-ethereum/core/types/bloom9.go:94.46,96.2 1 0 -github.com/ethereum/go-ethereum/core/types/bloom9.go:99.51,101.2 1 0 -github.com/ethereum/go-ethereum/core/types/bloom9.go:104.43,107.35 3 1 -github.com/ethereum/go-ethereum/core/types/bloom9.go:115.2,115.12 1 1 -github.com/ethereum/go-ethereum/core/types/bloom9.go:107.35,108.36 1 1 -github.com/ethereum/go-ethereum/core/types/bloom9.go:108.36,110.33 2 1 -github.com/ethereum/go-ethereum/core/types/bloom9.go:110.33,112.5 1 1 -github.com/ethereum/go-ethereum/core/types/bloom9.go:119.36,122.27 3 0 -github.com/ethereum/go-ethereum/core/types/bloom9.go:128.2,128.15 1 0 -github.com/ethereum/go-ethereum/core/types/bloom9.go:122.27,124.32 2 0 -github.com/ethereum/go-ethereum/core/types/bloom9.go:124.32,126.4 1 0 -github.com/ethereum/go-ethereum/core/types/bloom9.go:132.33,136.2 3 0 -github.com/ethereum/go-ethereum/core/types/bloom9.go:139.84,155.2 12 1 -github.com/ethereum/go-ethereum/core/types/bloom9.go:158.53,160.2 1 0 -github.com/ethereum/go-ethereum/core/types/gen_account_rlp.go:11.56,15.24 4 0 -github.com/ethereum/go-ethereum/core/types/gen_account_rlp.go:23.2,26.18 4 0 -github.com/ethereum/go-ethereum/core/types/gen_account_rlp.go:15.24,17.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_account_rlp.go:17.8,18.31 1 0 -github.com/ethereum/go-ethereum/core/types/gen_account_rlp.go:21.3,21.29 1 0 -github.com/ethereum/go-ethereum/core/types/gen_account_rlp.go:18.31,20.4 1 0 -github.com/ethereum/go-ethereum/core/types/gen_access_tuple.go:13.52,22.2 5 1 -github.com/ethereum/go-ethereum/core/types/gen_access_tuple.go:25.57,31.52 3 1 -github.com/ethereum/go-ethereum/core/types/gen_access_tuple.go:34.2,34.24 1 1 -github.com/ethereum/go-ethereum/core/types/gen_access_tuple.go:37.2,38.28 2 1 -github.com/ethereum/go-ethereum/core/types/gen_access_tuple.go:41.2,42.12 2 1 -github.com/ethereum/go-ethereum/core/types/gen_access_tuple.go:31.52,33.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_access_tuple.go:34.24,36.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_access_tuple.go:38.28,40.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:11.50,21.27 10 1 -github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:29.2,29.23 1 1 -github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:37.2,44.11 8 1 -github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:54.2,55.18 2 1 -github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:21.27,23.3 1 1 -github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:23.8,24.34 1 1 -github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:27.3,27.32 1 1 -github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:24.34,26.4 1 0 -github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:29.23,31.3 1 1 -github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:31.8,32.30 1 1 -github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:35.3,35.28 1 1 -github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:32.30,34.4 1 0 -github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:44.11,45.25 1 1 -github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:45.25,47.4 1 0 -github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:47.9,48.32 1 1 -github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:51.4,51.30 1 1 -github.com/ethereum/go-ethereum/core/types/gen_header_rlp.go:48.32,50.5 1 0 -github.com/ethereum/go-ethereum/core/types/gen_log_json.go:16.44,39.2 12 0 -github.com/ethereum/go-ethereum/core/types/gen_log_json.go:42.49,55.52 3 1 -github.com/ethereum/go-ethereum/core/types/gen_log_json.go:58.2,58.24 1 1 -github.com/ethereum/go-ethereum/core/types/gen_log_json.go:61.2,62.23 2 1 -github.com/ethereum/go-ethereum/core/types/gen_log_json.go:65.2,66.21 2 1 -github.com/ethereum/go-ethereum/core/types/gen_log_json.go:69.2,70.28 2 1 -github.com/ethereum/go-ethereum/core/types/gen_log_json.go:73.2,73.23 1 1 -github.com/ethereum/go-ethereum/core/types/gen_log_json.go:76.2,77.24 2 1 -github.com/ethereum/go-ethereum/core/types/gen_log_json.go:80.2,80.26 1 1 -github.com/ethereum/go-ethereum/core/types/gen_log_json.go:83.2,83.22 1 1 -github.com/ethereum/go-ethereum/core/types/gen_log_json.go:86.2,86.24 1 1 -github.com/ethereum/go-ethereum/core/types/gen_log_json.go:89.2,89.12 1 1 -github.com/ethereum/go-ethereum/core/types/gen_log_json.go:55.52,57.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_log_json.go:58.24,60.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_log_json.go:62.23,64.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_log_json.go:66.21,68.3 1 1 -github.com/ethereum/go-ethereum/core/types/gen_log_json.go:70.28,72.3 1 1 -github.com/ethereum/go-ethereum/core/types/gen_log_json.go:73.23,75.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_log_json.go:77.24,79.3 1 1 -github.com/ethereum/go-ethereum/core/types/gen_log_json.go:80.26,82.3 1 1 -github.com/ethereum/go-ethereum/core/types/gen_log_json.go:83.22,85.3 1 1 -github.com/ethereum/go-ethereum/core/types/gen_log_json.go:86.24,88.3 1 1 -github.com/ethereum/go-ethereum/core/types/gen_log_rlp.go:11.50,16.35 5 1 -github.com/ethereum/go-ethereum/core/types/gen_log_rlp.go:19.2,22.18 4 1 -github.com/ethereum/go-ethereum/core/types/gen_log_rlp.go:16.35,18.3 1 1 -github.com/ethereum/go-ethereum/core/types/hashing.go:31.26,31.62 1 1 -github.com/ethereum/go-ethereum/core/types/hashing.go:36.26,36.54 1 1 -github.com/ethereum/go-ethereum/core/types/hashing.go:40.45,47.2 6 1 -github.com/ethereum/go-ethereum/core/types/hashing.go:51.66,59.2 7 1 -github.com/ethereum/go-ethereum/core/types/hashing.go:77.75,84.2 3 1 -github.com/ethereum/go-ethereum/core/types/hashing.go:87.67,97.47 5 1 -github.com/ethereum/go-ethereum/core/types/hashing.go:102.2,102.20 1 1 -github.com/ethereum/go-ethereum/core/types/hashing.go:107.2,107.37 1 1 -github.com/ethereum/go-ethereum/core/types/hashing.go:112.2,112.22 1 1 -github.com/ethereum/go-ethereum/core/types/hashing.go:97.47,101.3 3 1 -github.com/ethereum/go-ethereum/core/types/hashing.go:102.20,106.3 3 1 -github.com/ethereum/go-ethereum/core/types/hashing.go:107.37,111.3 3 1 -github.com/ethereum/go-ethereum/core/types/legacy.go:28.55,30.50 2 0 -github.com/ethereum/go-ethereum/core/types/legacy.go:33.2,34.50 2 0 -github.com/ethereum/go-ethereum/core/types/legacy.go:37.2,39.50 2 0 -github.com/ethereum/go-ethereum/core/types/legacy.go:42.2,42.67 1 0 -github.com/ethereum/go-ethereum/core/types/legacy.go:30.50,32.3 1 0 -github.com/ethereum/go-ethereum/core/types/legacy.go:34.50,36.3 1 0 -github.com/ethereum/go-ethereum/core/types/legacy.go:39.50,41.3 1 0 -github.com/ethereum/go-ethereum/core/types/legacy.go:47.62,49.56 2 0 -github.com/ethereum/go-ethereum/core/types/legacy.go:52.2,52.37 1 0 -github.com/ethereum/go-ethereum/core/types/legacy.go:49.56,51.3 1 0 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:37.40,39.27 2 0 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:42.2,42.12 1 0 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:39.27,41.3 1 0 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:59.39,75.21 3 1 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:78.2,78.23 1 1 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:81.2,81.24 1 1 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:84.2,84.17 1 1 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:87.2,87.17 1 1 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:90.2,90.17 1 1 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:93.2,93.12 1 1 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:75.21,77.3 1 1 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:78.23,80.3 1 1 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:81.24,83.3 1 1 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:84.17,86.3 1 1 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:87.17,89.3 1 1 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:90.17,92.3 1 1 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:97.49,97.76 1 1 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:98.49,98.70 1 1 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:99.49,99.73 1 1 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:100.49,100.67 1 1 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:101.49,101.66 1 1 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:102.49,102.71 1 1 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:103.49,103.71 1 0 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:104.49,104.71 1 0 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:105.49,105.68 1 1 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:106.49,106.68 1 1 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:107.49,107.65 1 1 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:109.65,111.2 1 1 -github.com/ethereum/go-ethereum/core/types/access_list_tx.go:113.71,115.2 1 1 -github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:43.39,60.21 3 1 -github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:63.2,63.23 1 1 -github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:66.2,66.25 1 1 -github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:69.2,69.25 1 1 -github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:72.2,72.17 1 1 -github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:75.2,75.17 1 1 -github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:78.2,78.17 1 1 -github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:81.2,81.12 1 1 -github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:60.21,62.3 1 1 -github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:63.23,65.3 1 1 -github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:66.25,68.3 1 1 -github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:69.25,71.3 1 1 -github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:72.17,74.3 1 1 -github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:75.17,77.3 1 1 -github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:78.17,80.3 1 1 -github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:85.49,85.76 1 1 -github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:86.49,86.70 1 1 -github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:87.49,87.73 1 1 -github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:88.49,88.67 1 1 -github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:89.49,89.66 1 1 -github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:90.49,90.72 1 1 -github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:91.49,91.72 1 1 -github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:92.49,92.72 1 0 -github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:93.49,93.68 1 1 -github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:94.49,94.68 1 1 -github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:95.49,95.65 1 1 -github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:97.65,99.2 1 1 -github.com/ethereum/go-ethereum/core/types/dynamic_fee_tx.go:101.71,103.2 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:40.74,42.9 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:54.2,54.15 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:43.36,44.43 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:45.36,46.44 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:47.36,48.43 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:49.39,50.29 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:51.10,52.28 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:64.54,65.27 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:76.2,76.26 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:65.27,66.32 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:69.3,69.32 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:72.3,72.32 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:66.32,68.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:69.32,71.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:72.32,74.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:86.54,87.20 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:90.2,90.33 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:87.20,89.3 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:94.85,97.16 3 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:100.2,100.33 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:97.16,99.3 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:104.86,108.16 4 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:111.2,111.33 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:108.16,110.3 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:116.81,118.16 2 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:121.2,121.11 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:118.16,119.13 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:131.69,132.37 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:142.2,143.16 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:146.2,147.18 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:132.37,137.36 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:137.36,139.4 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:143.16,145.3 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:180.47,182.2 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:184.71,185.35 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:188.2,192.38 3 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:195.2,195.48 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:185.35,187.3 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:192.38,194.3 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:198.45,201.2 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:203.98,205.9 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:210.2,210.70 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:213.2,215.21 3 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:205.9,207.3 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:210.70,212.3 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:220.57,221.35 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:224.2,236.5 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:221.35,223.3 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:243.48,245.2 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:247.43,249.2 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:251.46,254.2 2 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:256.72,258.19 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:272.2,272.38 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:275.2,275.48 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:259.20,260.22 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:263.3,264.17 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:265.24,268.42 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:269.10,270.49 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:260.22,262.4 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:272.38,274.3 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:278.99,279.35 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:293.2,293.21 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:280.17,281.49 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:282.21,285.71 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:288.3,289.33 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:290.10,291.46 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:285.71,287.4 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:298.58,299.19 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:300.20,309.5 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:310.24,322.6 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:323.10,328.23 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:338.53,339.20 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:342.2,345.3 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:339.20,341.3 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:348.42,350.2 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:352.45,355.2 2 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:359.71,360.31 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:363.2,363.21 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:366.2,366.38 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:369.2,372.48 4 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:360.31,362.3 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:363.21,365.3 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:366.38,368.3 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:377.98,378.31 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:381.2,382.27 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:386.2,386.21 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:378.31,380.3 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:382.27,385.3 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:391.57,401.2 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:407.45,409.2 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:411.48,414.2 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:418.102,420.2 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:422.75,423.31 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:426.2,427.49 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:423.31,425.3 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:432.44,434.2 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:436.47,439.2 2 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:441.74,442.31 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:445.2,446.50 2 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:442.31,444.3 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:451.101,452.31 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:455.2,456.21 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:452.31,454.3 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:461.60,470.2 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:472.53,473.40 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:476.2,479.16 4 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:473.40,474.100 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:482.99,483.21 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:486.2,487.57 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:491.2,498.16 7 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:501.2,501.34 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:504.2,506.18 3 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:483.21,485.3 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:487.57,489.3 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:498.16,500.3 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:501.34,503.3 1 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:510.41,511.22 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:518.2,519.32 2 0 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:511.22,513.25 2 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:516.3,516.46 1 1 -github.com/ethereum/go-ethereum/core/types/transaction_signing.go:513.25,515.4 1 1 -github.com/ethereum/go-ethereum/core/types/legacy_tx.go:38.133,47.2 1 1 -github.com/ethereum/go-ethereum/core/types/legacy_tx.go:51.119,59.2 1 0 -github.com/ethereum/go-ethereum/core/types/legacy_tx.go:62.35,75.21 2 1 -github.com/ethereum/go-ethereum/core/types/legacy_tx.go:78.2,78.24 1 1 -github.com/ethereum/go-ethereum/core/types/legacy_tx.go:81.2,81.17 1 1 -github.com/ethereum/go-ethereum/core/types/legacy_tx.go:84.2,84.17 1 1 -github.com/ethereum/go-ethereum/core/types/legacy_tx.go:87.2,87.17 1 1 -github.com/ethereum/go-ethereum/core/types/legacy_tx.go:90.2,90.12 1 1 -github.com/ethereum/go-ethereum/core/types/legacy_tx.go:75.21,77.3 1 1 -github.com/ethereum/go-ethereum/core/types/legacy_tx.go:78.24,80.3 1 1 -github.com/ethereum/go-ethereum/core/types/legacy_tx.go:81.17,83.3 1 1 -github.com/ethereum/go-ethereum/core/types/legacy_tx.go:84.17,86.3 1 1 -github.com/ethereum/go-ethereum/core/types/legacy_tx.go:87.17,89.3 1 1 -github.com/ethereum/go-ethereum/core/types/legacy_tx.go:94.45,94.68 1 1 -github.com/ethereum/go-ethereum/core/types/legacy_tx.go:95.45,95.75 1 1 -github.com/ethereum/go-ethereum/core/types/legacy_tx.go:96.45,96.59 1 1 -github.com/ethereum/go-ethereum/core/types/legacy_tx.go:97.45,97.63 1 1 -github.com/ethereum/go-ethereum/core/types/legacy_tx.go:98.45,98.62 1 1 -github.com/ethereum/go-ethereum/core/types/legacy_tx.go:99.45,99.67 1 1 -github.com/ethereum/go-ethereum/core/types/legacy_tx.go:100.45,100.67 1 1 -github.com/ethereum/go-ethereum/core/types/legacy_tx.go:101.45,101.67 1 0 -github.com/ethereum/go-ethereum/core/types/legacy_tx.go:102.45,102.64 1 1 -github.com/ethereum/go-ethereum/core/types/legacy_tx.go:103.45,103.64 1 1 -github.com/ethereum/go-ethereum/core/types/legacy_tx.go:104.45,104.61 1 1 -github.com/ethereum/go-ethereum/core/types/legacy_tx.go:106.61,108.2 1 1 -github.com/ethereum/go-ethereum/core/types/legacy_tx.go:110.67,112.2 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:62.39,66.2 3 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:91.53,92.31 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:96.2,99.44 4 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:102.2,102.35 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:92.31,94.3 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:99.44,101.3 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:106.59,109.2 2 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:114.56,115.31 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:118.2,120.25 3 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:115.31,117.3 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:124.55,126.9 2 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:127.18,128.13 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:129.24,133.17 3 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:136.3,136.13 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:137.10,140.37 2 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:143.3,144.17 2 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:147.3,147.13 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:133.17,135.4 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:140.37,142.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:144.17,146.4 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:153.56,154.31 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:165.2,166.16 2 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:169.2,170.12 2 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:154.31,158.17 3 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:161.3,162.13 2 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:158.17,160.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:166.16,168.3 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:174.62,175.17 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:178.2,178.14 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:175.17,177.3 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:179.24,182.21 3 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:183.24,186.21 3 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:187.10,188.36 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:193.59,196.14 3 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:196.14,198.3 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:201.90,202.40 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:206.2,207.21 2 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:220.2,220.58 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:224.2,224.12 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:202.40,204.3 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:207.21,210.3 2 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:210.8,210.27 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:210.27,215.3 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:215.8,219.3 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:220.58,222.3 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:227.36,228.21 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:233.2,233.13 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:228.21,231.3 2 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:237.41,238.31 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:239.17,240.43 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:241.10,242.14 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:247.37,249.2 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:254.43,256.2 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:259.38,259.64 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:262.48,262.80 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:265.37,265.62 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:268.44,268.92 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:271.45,271.94 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:274.45,274.94 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:277.41,277.86 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:280.39,280.66 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:284.45,286.2 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:289.40,293.2 3 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:297.64,299.2 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:302.61,304.2 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:307.60,309.2 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:312.61,314.2 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:317.60,319.2 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:324.76,325.20 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:328.2,330.34 3 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:333.2,333.76 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:325.20,327.3 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:330.34,332.3 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:338.72,341.2 2 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:344.85,345.20 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:348.2,348.82 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:345.20,347.3 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:352.84,353.20 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:356.2,356.52 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:353.20,355.3 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:360.43,361.41 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:365.2,366.31 2 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:371.2,372.10 2 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:361.41,363.3 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:366.31,368.3 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:368.8,370.3 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:377.50,378.41 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:381.2,384.30 4 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:378.41,380.3 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:389.87,391.16 2 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:394.2,396.53 3 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:391.16,393.3 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:403.33,403.50 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:408.59,410.31 2 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:410.31,412.3 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:412.8,414.3 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:418.51,422.23 3 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:426.2,426.23 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:432.2,432.13 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:422.23,424.3 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:426.23,427.38 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:427.38,429.4 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:440.40,440.57 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:441.40,441.78 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:442.40,442.67 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:453.84,455.16 2 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:458.2,461.8 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:455.16,457.3 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:468.37,468.54 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:469.47,473.14 2 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:476.2,476.16 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:473.14,475.3 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:478.42,478.69 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:480.48,482.2 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:484.46,490.2 5 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:507.136,510.32 2 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:521.2,529.3 2 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:510.32,514.32 3 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:518.3,519.25 2 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:514.32,516.12 2 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:533.59,534.23 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:537.2,537.22 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:534.23,536.3 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:541.47,543.47 2 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:550.2,550.20 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:543.47,544.71 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:544.71,548.4 3 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:556.45,558.2 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:577.204,591.2 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:594.79,608.20 2 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:611.2,613.17 3 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:608.20,610.3 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:616.42,616.59 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:617.42,617.57 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:618.42,618.63 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:619.42,619.64 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:620.42,620.64 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:621.42,621.61 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:622.42,622.63 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:623.42,623.60 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:624.42,624.59 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:625.42,625.65 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:626.42,626.61 1 0 -github.com/ethereum/go-ethereum/core/types/transaction.go:629.56,630.14 1 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:633.2,634.13 2 1 -github.com/ethereum/go-ethereum/core/types/transaction.go:630.14,632.3 1 1 -github.com/ethereum/go-ethereum/core/types/block.go:45.39,49.2 3 0 -github.com/ethereum/go-ethereum/core/types/block.go:52.37,54.2 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:57.51,59.2 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:62.56,64.2 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:111.37,113.2 1 1 -github.com/ethereum/go-ethereum/core/types/block.go:119.44,121.2 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:127.38,128.45 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:131.2,131.25 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:136.2,136.43 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:139.2,139.22 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:144.2,144.12 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:128.45,130.3 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:131.25,132.53 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:132.53,134.4 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:136.43,138.3 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:139.22,140.47 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:140.47,142.4 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:149.35,151.2 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:154.39,156.2 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:199.116,203.19 2 0 -github.com/ethereum/go-ethereum/core/types/block.go:211.2,211.24 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:218.2,218.22 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:228.2,228.10 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:203.19,205.3 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:205.8,209.3 3 0 -github.com/ethereum/go-ethereum/core/types/block.go:211.24,213.3 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:213.8,216.3 2 0 -github.com/ethereum/go-ethereum/core/types/block.go:218.22,220.3 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:220.8,223.25 3 0 -github.com/ethereum/go-ethereum/core/types/block.go:223.25,225.4 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:234.48,236.2 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:240.36,242.56 2 0 -github.com/ethereum/go-ethereum/core/types/block.go:245.2,245.48 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:248.2,248.22 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:251.2,251.22 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:255.2,255.13 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:242.56,244.3 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:245.48,247.3 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:248.22,250.3 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:251.22,254.3 2 0 -github.com/ethereum/go-ethereum/core/types/block.go:259.48,262.38 3 1 -github.com/ethereum/go-ethereum/core/types/block.go:265.2,267.12 3 1 -github.com/ethereum/go-ethereum/core/types/block.go:262.38,264.3 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:271.46,277.2 1 1 -github.com/ethereum/go-ethereum/core/types/block.go:281.45,281.64 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:282.45,282.70 1 1 -github.com/ethereum/go-ethereum/core/types/block.go:284.60,285.45 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:290.2,290.12 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:285.45,286.33 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:286.33,288.4 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:293.39,293.83 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:294.39,294.67 1 1 -github.com/ethereum/go-ethereum/core/types/block.go:295.39,295.66 1 1 -github.com/ethereum/go-ethereum/core/types/block.go:296.39,296.87 1 1 -github.com/ethereum/go-ethereum/core/types/block.go:297.39,297.63 1 1 -github.com/ethereum/go-ethereum/core/types/block.go:299.43,299.78 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:300.43,300.72 1 1 -github.com/ethereum/go-ethereum/core/types/block.go:301.43,301.96 1 1 -github.com/ethereum/go-ethereum/core/types/block.go:302.43,302.68 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:303.43,303.71 1 1 -github.com/ethereum/go-ethereum/core/types/block.go:304.43,304.67 1 1 -github.com/ethereum/go-ethereum/core/types/block.go:305.43,305.73 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:306.43,306.69 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:307.43,307.74 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:308.43,308.72 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:309.43,309.86 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:311.36,312.29 1 1 -github.com/ethereum/go-ethereum/core/types/block.go:315.2,315.43 1 1 -github.com/ethereum/go-ethereum/core/types/block.go:312.29,314.3 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:318.34,318.65 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:321.30,321.72 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:325.43,326.40 1 1 -github.com/ethereum/go-ethereum/core/types/block.go:329.2,332.30 4 0 -github.com/ethereum/go-ethereum/core/types/block.go:326.40,328.3 1 1 -github.com/ethereum/go-ethereum/core/types/block.go:337.37,339.2 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:343.53,346.2 2 0 -github.com/ethereum/go-ethereum/core/types/block.go:348.50,349.22 1 1 -github.com/ethereum/go-ethereum/core/types/block.go:352.2,352.24 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:349.22,351.3 1 1 -github.com/ethereum/go-ethereum/core/types/block.go:357.49,365.2 2 0 -github.com/ethereum/go-ethereum/core/types/block.go:368.80,375.24 3 0 -github.com/ethereum/go-ethereum/core/types/block.go:378.2,378.14 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:375.24,377.3 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:383.36,384.40 1 1 -github.com/ethereum/go-ethereum/core/types/block.go:387.2,389.10 3 1 -github.com/ethereum/go-ethereum/core/types/block.go:384.40,386.3 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:396.57,399.16 2 1 -github.com/ethereum/go-ethereum/core/types/block.go:402.2,403.16 2 1 -github.com/ethereum/go-ethereum/core/types/block.go:406.2,406.27 1 1 -github.com/ethereum/go-ethereum/core/types/block.go:409.2,409.39 1 1 -github.com/ethereum/go-ethereum/core/types/block.go:399.16,401.3 1 1 -github.com/ethereum/go-ethereum/core/types/block.go:403.16,405.3 1 0 -github.com/ethereum/go-ethereum/core/types/block.go:406.27,408.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:17.48,46.2 15 0 -github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:49.53,65.52 3 0 -github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:68.2,68.21 1 0 -github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:71.2,71.26 1 0 -github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:74.2,74.23 1 0 -github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:77.2,77.34 1 0 -github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:80.2,81.22 2 0 -github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:84.2,85.21 2 0 -github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:88.2,89.23 2 0 -github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:92.2,93.32 2 0 -github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:96.2,96.24 1 0 -github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:99.2,100.26 2 0 -github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:103.2,103.28 1 0 -github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:106.2,106.33 1 0 -github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:109.2,109.12 1 0 -github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:65.52,67.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:68.21,70.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:71.26,73.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:74.23,76.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:77.34,79.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:81.22,83.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:85.21,87.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:89.23,91.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:93.32,95.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:96.24,98.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:100.26,102.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:103.28,105.3 1 0 -github.com/ethereum/go-ethereum/core/types/gen_receipt_json.go:106.33,108.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:42.59,44.9 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:54.2,61.10 4 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:44.9,53.3 4 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:67.78,69.9 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:96.2,97.16 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:106.2,113.10 4 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:69.9,73.17 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:84.3,92.11 5 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:73.17,81.4 4 0 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:97.16,105.3 4 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:119.39,120.26 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:124.2,124.14 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:129.2,129.14 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:134.2,135.57 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:144.2,146.13 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:120.26,122.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:124.14,128.3 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:129.14,133.3 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:135.57,139.3 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:139.8,139.22 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:139.22,142.13 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:151.41,153.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:156.46,158.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:165.44,166.25 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:170.2,171.16 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:175.2,175.13 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:166.25,168.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:171.16,174.3 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:183.41,184.24 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:187.2,188.16 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:192.2,192.13 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:184.24,186.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:188.16,191.3 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:196.37,199.2 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:203.65,206.2 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_binary.go:210.84,213.2 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:39.40,39.59 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:43.50,48.43 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:55.2,55.42 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:49.10,50.14 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:51.9,52.15 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:59.45,61.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:81.136,83.17 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:86.2,92.42 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:114.2,115.16 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:83.17,85.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:92.42,93.22 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:112.3,112.29 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:93.22,98.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:98.9,108.18 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:108.18,109.10 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:120.32,125.41 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:170.2,171.22 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:125.41,130.7 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:130.7,132.21 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:144.4,145.48 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:132.21,141.10 7 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:145.48,147.10 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:148.10,157.51 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:157.51,159.14 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:160.11,164.14 3 0 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:175.37,176.28 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:179.2,179.19 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:205.2,205.6 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:222.2,222.13 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:176.28,178.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:179.19,183.17 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:188.3,188.62 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:192.3,192.48 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:183.17,185.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:185.9,187.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:188.62,191.4 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:192.48,194.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:205.6,206.18 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:209.3,209.17 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:214.3,214.62 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:218.3,218.48 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:206.18,208.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:209.17,211.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:211.9,213.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:214.62,217.4 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:218.48,219.9 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:231.44,235.44 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:242.2,242.32 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:246.2,250.62 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:260.2,261.59 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:284.2,285.17 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:288.2,288.13 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:235.44,240.3 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:242.32,244.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:250.62,253.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:253.8,253.54 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:253.54,257.3 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:261.59,265.14 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:268.3,268.31 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:272.3,273.63 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:280.3,282.51 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:265.14,267.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:268.31,271.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:273.63,275.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:275.9,275.22 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:275.22,277.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:285.17,287.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:292.49,296.2 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:300.39,302.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:305.44,307.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:311.42,313.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:317.39,319.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:323.35,324.34 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:327.2,327.20 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:324.34,326.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:331.33,332.34 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:335.2,335.15 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:332.34,334.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:341.102,343.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator_fast.go:348.123,350.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:186.146,194.12 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:198.2,199.14 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:203.2,203.16 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:212.2,212.18 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:216.2,216.18 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:194.12,196.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:199.14,202.3 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:203.16,204.14 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:209.3,209.18 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:204.14,208.4 3 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:212.18,215.3 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:221.28,226.33 3 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:232.2,235.17 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:226.33,227.42 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:227.42,229.9 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:235.17,237.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:243.26,248.33 3 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:272.2,284.38 8 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:248.33,249.32 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:250.19,252.29 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:258.4,260.23 3 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:262.19,266.23 3 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:268.11,269.55 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:252.29,256.5 3 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:284.38,286.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:291.57,296.2 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:301.80,305.17 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:308.2,309.18 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:312.2,313.6 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:328.2,328.12 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:305.17,307.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:309.18,311.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:313.6,314.56 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:317.3,319.18 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:322.3,323.20 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:326.3,326.17 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:314.56,315.9 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:319.18,320.9 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:323.20,324.9 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:333.193,340.29 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:344.2,345.19 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:348.2,355.12 5 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:340.29,342.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:345.19,347.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:367.56,370.17 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:373.2,374.9 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:378.2,379.48 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:382.2,391.17 4 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:401.2,405.35 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:411.2,412.34 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:419.2,419.35 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:425.2,425.22 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:437.2,437.12 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:370.17,372.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:374.9,376.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:379.48,381.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:391.17,400.3 5 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:405.35,406.40 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:406.40,409.4 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:412.34,414.40 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:417.3,417.25 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:414.40,416.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:419.35,420.19 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:420.19,422.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:425.22,427.36 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:435.3,435.26 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:427.36,428.51 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:431.4,431.41 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:428.51,430.5 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:431.41,433.5 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:451.60,453.32 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:464.2,464.38 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:498.2,506.13 7 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:453.32,455.49 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:455.49,457.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:457.9,460.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:465.18,466.13 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:468.18,481.25 5 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:484.3,485.47 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:494.10,495.55 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:481.25,483.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:485.47,490.53 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:490.53,492.5 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:514.47,521.26 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:527.2,531.16 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:534.2,538.39 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:567.2,567.45 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:591.2,591.55 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:617.2,624.38 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:627.2,641.51 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:646.2,646.12 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:521.26,525.3 3 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:531.16,532.38 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:538.39,540.74 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:544.3,548.17 4 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:564.3,564.15 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:540.74,541.12 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:548.17,557.48 5 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:557.48,558.41 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:561.5,561.18 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:558.41,560.6 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:567.45,569.74 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:573.3,583.47 6 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:569.74,570.12 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:583.47,584.40 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:587.4,587.17 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:584.40,586.5 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:591.55,593.81 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:597.3,599.42 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:593.81,594.12 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:599.42,601.91 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:604.4,604.21 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:612.4,613.56 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:601.91,602.13 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:604.21,608.5 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:608.10,611.5 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:624.38,626.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:641.51,645.3 3 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:655.63,658.17 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:662.2,667.60 4 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:670.2,671.33 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:676.2,676.54 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:680.2,681.16 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:685.2,686.18 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:658.17,660.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:667.60,669.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:671.33,673.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:676.54,678.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:681.16,683.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:692.42,702.33 5 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:728.2,731.3 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:702.33,703.32 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:704.19,706.29 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:712.4,714.23 3 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:716.19,720.23 3 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:722.11,723.55 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:706.29,710.5 3 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:736.93,738.16 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:741.2,741.8 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:744.2,744.46 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:738.16,740.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:741.8,743.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:749.114,751.16 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:754.2,754.8 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:757.2,757.55 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:751.16,753.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:754.8,756.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:762.47,764.16 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:767.2,769.185 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:783.2,783.16 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:786.2,786.17 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:789.2,789.12 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:764.16,766.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:769.185,771.17 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:774.3,777.17 3 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:780.3,780.19 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:771.17,773.4 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:777.17,779.4 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:783.16,785.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:786.17,788.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:794.39,796.29 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:800.2,800.17 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:803.2,803.30 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:796.29,798.8 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:800.17,802.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:804.18,805.15 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:806.18,807.22 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:808.10,809.50 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:815.39,817.22 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:820.2,820.25 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:817.22,819.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:825.43,830.18 4 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:833.2,835.36 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:830.18,832.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/snapshot.go:839.39,844.2 3 0 -github.com/ethereum/go-ethereum/core/state/snapshot/sort.go:29.28,29.46 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/sort.go:33.38,33.86 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/sort.go:36.33,36.64 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/account.go:39.93,44.23 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/account.go:47.2,47.42 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/account.go:50.2,50.13 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/account.go:44.23,46.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/account.go:47.42,49.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/account.go:55.95,57.16 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/account.go:60.2,60.13 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/account.go:57.16,58.13 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/account.go:65.48,67.56 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/account.go:70.2,70.28 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/account.go:73.2,73.32 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/account.go:76.2,76.21 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/account.go:67.56,69.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/account.go:70.28,72.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/account.go:73.32,75.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/account.go:80.50,82.16 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/account.go:85.2,85.35 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/account.go:82.16,84.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:48.41,50.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:53.40,55.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:59.35,64.2 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:68.66,70.16 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:73.2,73.20 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:76.2,77.55 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:80.2,80.21 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:70.16,72.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:73.20,75.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:77.55,78.13 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:85.67,91.14 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:96.2,96.69 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:100.2,103.57 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:109.2,113.27 4 1 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:118.2,118.18 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:91.14,93.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:96.69,98.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:103.57,107.3 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:113.27,115.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:115.8,117.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:123.84,129.14 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:132.2,136.65 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:140.2,143.53 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:149.2,153.27 4 1 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:158.2,158.18 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:129.14,131.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:136.65,138.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:143.53,147.3 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:153.27,155.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:155.8,157.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/disklayer.go:164.180,166.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:108.76,110.29 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:114.2,114.21 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:124.2,131.21 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:141.2,141.23 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:110.29,112.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:115.25,116.72 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:117.29,121.8 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:131.21,132.72 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:132.72,139.4 3 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:147.114,156.38 4 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:159.2,170.13 4 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:156.38,158.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:174.85,182.18 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:187.2,188.16 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:191.2,192.9 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:202.2,203.40 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:182.18,186.3 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:188.16,189.13 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:193.21,194.18 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:195.37,196.19 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:197.40,198.38 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:199.10,200.90 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:218.41,220.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:224.42,226.26 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:229.2,229.13 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:226.26,228.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:234.87,235.40 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:241.2,241.12 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:235.40,237.44 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:237.44,239.4 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:251.193,262.18 5 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:294.2,294.23 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:299.2,299.30 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:308.2,308.32 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:323.2,324.16 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:329.2,330.19 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:334.2,334.19 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:337.2,337.51 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:347.2,347.17 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:361.2,369.6 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:262.18,264.48 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:267.3,267.23 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:273.3,275.28 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:264.48,265.12 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:267.23,271.9 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:275.28,277.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:277.9,279.18 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:279.18,288.5 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:288.10,290.5 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:294.23,296.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:296.8,298.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:299.30,300.24 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:300.24,302.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:302.9,304.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:308.32,310.28 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:313.3,313.49 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:320.3,320.51 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:310.28,312.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:313.49,319.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:324.16,327.3 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:330.19,332.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:334.19,336.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:337.51,346.3 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:347.17,348.50 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:348.50,357.4 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:384.221,387.16 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:390.2,394.21 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:397.2,400.20 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:413.2,421.34 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:431.2,432.26 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:442.2,443.15 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:451.2,469.18 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:508.2,508.21 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:512.2,513.29 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:519.2,522.23 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:527.2,532.49 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:387.16,389.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:394.21,396.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:400.20,407.63 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:411.3,411.57 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:407.63,407.105 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:407.119,409.4 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:421.34,423.24 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:426.3,426.16 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:423.24,425.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:432.26,436.35 4 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:439.3,440.38 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:436.35,438.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:443.15,445.17 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:445.17,448.4 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:469.18,470.55 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:474.3,477.23 4 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:502.3,503.69 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:506.3,506.33 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:470.55,472.9 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:477.23,478.58 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:500.4,500.9 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:478.58,481.64 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:484.5,488.13 5 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:481.64,483.6 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:489.10,489.23 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:489.23,492.59 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:497.5,498.24 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:492.59,494.6 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:494.11,496.6 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:503.69,505.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:508.21,510.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:513.29,514.56 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:517.3,517.15 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:514.56,516.4 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:522.23,524.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:524.8,526.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:539.54,544.27 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:549.2,557.54 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:595.2,595.75 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:719.2,719.6 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:741.2,742.38 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:749.2,761.14 8 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:544.27,548.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:557.54,558.10 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:562.3,562.63 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:588.3,588.41 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:592.3,592.13 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:559.30,559.30 0 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:560.11,560.11 0 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:562.63,563.56 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:572.4,574.40 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:577.4,583.20 5 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:563.56,567.5 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:574.40,576.5 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:583.20,586.5 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:588.41,591.4 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:595.75,600.13 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:614.3,620.52 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:624.3,624.66 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:643.3,646.98 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:650.3,650.47 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:655.3,655.28 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:714.3,715.13 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:600.13,607.117 5 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:610.4,611.14 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:607.117,609.5 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:620.52,622.4 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:624.66,626.14 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:640.4,641.20 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:626.14,627.48 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:630.5,630.30 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:633.5,633.38 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:627.48,629.6 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:630.30,632.6 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:634.10,639.5 4 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:646.98,648.4 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:650.47,652.4 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:655.28,663.117 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:666.4,666.64 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:663.117,665.5 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:667.9,671.107 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:674.4,674.77 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:699.4,700.8 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:671.107,673.5 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:674.77,675.33 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:679.5,679.15 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:684.5,684.14 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:690.5,694.73 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:697.5,697.15 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:675.33,677.6 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:679.15,683.6 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:684.14,687.6 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:687.11,689.6 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:694.73,696.6 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:700.8,702.19 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:705.5,705.18 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:708.5,708.60 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:702.19,704.6 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:705.18,706.11 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:708.60,709.11 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:719.6,722.17 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:730.3,730.16 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:733.3,733.54 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:736.3,736.35 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:722.17,723.20 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:726.4,727.10 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:723.20,725.5 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:730.16,731.9 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:733.54,734.9 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:742.38,748.3 4 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:766.37,767.37 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:773.2,773.12 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:767.37,769.20 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/generate.go:769.20,771.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:86.72,89.53 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:93.2,96.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:89.53,91.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:100.44,105.20 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:109.2,109.23 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:112.2,112.22 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:117.2,120.13 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:105.20,106.68 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:109.23,111.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:112.22,115.3 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:125.46,127.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:130.51,132.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:142.49,145.9 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:152.2,153.22 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:156.2,156.13 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:145.9,146.52 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:150.3,150.81 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:146.52,149.4 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:153.22,155.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:160.43,160.44 0 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:170.72,176.2 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:179.44,181.18 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:185.2,185.6 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:195.2,195.13 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:181.18,183.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:185.6,186.20 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:191.3,191.77 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:186.20,190.4 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:191.77,192.9 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:203.46,204.18 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:207.2,207.22 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:204.18,206.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:211.51,213.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:216.49,218.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:221.42,223.18 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:223.18,226.3 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:250.101,255.53 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:259.2,263.15 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:255.53,257.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:267.44,272.20 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:276.2,276.23 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:279.2,279.22 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:284.2,287.13 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:272.20,273.68 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:276.23,278.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:279.22,282.3 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:292.46,294.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:297.51,299.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:309.46,312.9 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:316.2,317.9 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:320.2,321.22 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:324.2,324.13 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:312.9,313.89 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:317.9,318.86 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:321.22,323.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:328.43,328.44 0 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:342.101,349.2 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:352.44,354.18 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:358.2,358.6 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:368.2,368.13 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:354.18,356.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:358.6,359.20 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:364.3,364.95 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:359.20,363.4 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:364.95,365.9 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:376.46,377.18 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:380.2,380.22 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:377.18,379.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:384.51,386.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:389.46,391.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:394.42,396.18 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/iterator.go:396.18,399.3 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:69.56,70.29 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:73.2,74.67 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:79.2,80.49 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:88.2,89.77 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:70.29,72.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:74.67,77.3 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:81.25,82.36 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:83.29,84.91 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:85.10,86.33 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:93.103,98.29 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:101.2,102.67 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:111.2,112.23 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:116.2,120.16 3 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:124.2,124.31 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:131.2,132.40 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:138.2,138.51 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:143.2,144.16 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:147.2,148.33 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:98.29,100.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:102.67,104.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:112.23,115.3 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:120.16,123.3 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:124.31,127.3 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:132.40,134.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:138.51,141.3 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:144.16,146.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:152.138,155.40 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:160.2,161.33 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:164.2,171.16 3 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:183.2,183.43 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:197.2,197.21 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:218.2,218.29 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:155.40,157.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:161.33,163.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:171.16,174.3 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:183.43,187.16 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:194.3,194.89 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:187.16,189.4 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:197.21,200.28 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:203.3,207.33 4 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:210.3,216.5 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:200.28,202.4 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:207.33,209.4 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:223.70,226.40 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:233.2,234.45 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:237.2,238.34 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:241.2,242.44 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:245.2,246.33 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:253.2,254.43 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:257.2,258.32 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:269.2,269.92 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:226.40,228.20 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:231.3,231.52 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:228.20,230.4 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:234.45,236.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:238.34,240.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:242.44,244.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:246.33,247.26 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:247.26,249.4 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:249.9,251.4 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:254.43,256.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:258.32,260.34 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:267.3,267.34 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:260.34,261.30 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:261.30,263.5 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:263.10,265.5 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:274.73,277.24 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:286.2,289.14 3 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:293.2,296.21 3 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:277.24,281.36 3 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:281.36,283.4 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:289.14,291.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:301.73,304.16 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:308.2,311.16 3 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:315.2,315.52 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:318.2,319.35 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:322.2,322.54 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:325.2,326.41 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:329.2,329.53 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:332.2,333.42 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:342.2,342.52 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:345.2,346.18 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:304.16,306.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:311.16,313.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:315.52,317.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:319.35,321.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:322.54,324.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:326.41,328.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:329.53,331.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:333.42,336.31 3 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:340.3,340.80 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:336.31,339.4 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/journal.go:342.52,344.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:34.152,45.18 5 1 -github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:48.2,48.16 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:80.2,81.38 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:84.2,84.18 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:87.2,87.12 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:90.2,90.12 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:45.18,47.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:48.16,51.36 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:54.3,54.25 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:57.3,57.51 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:61.3,64.23 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:51.36,52.9 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:54.25,55.12 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:57.51,58.9 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:64.23,67.40 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:70.4,74.52 4 0 -github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:67.40,69.5 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:74.52,77.5 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:81.38,83.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:84.18,86.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/wipe.go:87.12,89.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:54.71,56.2 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:59.92,61.2 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:66.105,69.16 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:72.2,74.186 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:97.2,97.16 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:100.2,100.17 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:103.2,103.12 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:69.16,71.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:74.186,76.28 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:84.3,85.17 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:88.3,91.17 3 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:94.3,94.19 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:76.28,78.22 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:81.4,81.40 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:78.22,80.5 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:85.17,87.4 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:91.17,93.4 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:97.16,99.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:100.17,102.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:122.40,128.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:131.79,137.2 4 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:140.56,145.2 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:148.97,154.44 5 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:154.44,156.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:160.77,167.2 5 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:170.37,179.23 4 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:206.2,206.46 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:179.23,181.79 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:181.79,188.42 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:201.4,203.9 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:188.42,190.60 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:190.60,196.80 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:196.80,198.7 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:210.41,216.21 5 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:219.2,220.39 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:216.21,218.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:224.54,228.6 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:228.6,229.10 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:230.18,232.32 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:233.26,234.15 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:237.4,237.10 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:234.15,236.5 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:245.196,254.12 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:259.2,259.28 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:269.2,271.31 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:276.2,276.48 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:289.2,295.16 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:353.2,353.35 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:360.2,360.18 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:254.12,257.3 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:259.28,261.13 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:261.13,264.4 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:271.31,273.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:276.48,279.32 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:284.3,287.22 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:279.32,280.51 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:280.51,282.5 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:295.16,296.33 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:339.3,343.57 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:296.33,301.27 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:335.4,335.38 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:301.27,303.19 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:303.19,305.6 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:306.10,309.37 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:314.5,315.19 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:318.5,318.31 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:330.5,331.19 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:309.37,312.6 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:315.19,317.6 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:318.31,320.20 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:324.6,324.53 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:328.6,328.20 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:320.20,323.7 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:324.53,327.7 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:331.19,333.6 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:336.9,338.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:343.57,344.34 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:349.4,349.37 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:344.34,346.5 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:346.10,348.5 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:353.35,354.33 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:354.33,356.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:356.9,358.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:363.87,365.23 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:368.2,369.15 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:374.2,374.13 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:365.23,367.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:369.15,371.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/conversion.go:371.8,373.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:80.13,89.60 4 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:89.60,91.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:131.65,131.91 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:132.65,132.91 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:133.65,133.91 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:134.65,134.91 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:135.65,135.77 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:136.45,138.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:145.64,145.90 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:146.64,146.90 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:147.64,147.90 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:148.64,148.90 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:149.64,149.76 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:150.44,152.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:159.64,159.90 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:160.64,160.90 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:161.64,161.90 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:162.64,162.90 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:163.64,163.76 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:164.44,167.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:171.182,181.33 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:190.2,190.42 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:198.2,198.42 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:208.2,209.11 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:182.18,183.21 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:184.18,185.28 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:186.10,187.31 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:190.42,191.18 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:195.3,196.56 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:191.18,192.54 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:198.42,199.19 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:203.3,203.30 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:199.19,200.54 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:203.30,206.4 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:214.49,218.30 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:223.2,226.46 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:234.2,234.35 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:237.2,237.35 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:240.2,240.49 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:248.2,251.79 4 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:218.30,220.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:226.46,230.3 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:230.8,232.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:234.35,236.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:237.35,239.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:240.49,241.34 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:241.34,243.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:255.41,257.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:260.40,262.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:266.35,268.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:272.66,274.16 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:277.2,277.20 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:280.2,281.55 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:284.2,284.21 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:274.16,276.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:277.20,279.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:281.55,282.13 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:291.67,296.10 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:299.2,300.10 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:303.2,307.19 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:312.2,312.31 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:296.10,298.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:300.10,302.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:307.19,310.3 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:318.78,324.16 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:328.2,328.42 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:336.2,336.39 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:344.2,344.44 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:348.2,349.35 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:324.16,326.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:328.42,334.3 5 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:336.39,342.3 5 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:344.44,346.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:357.84,362.10 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:365.2,366.10 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:369.2,373.19 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:378.2,378.48 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:362.10,364.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:366.10,368.3 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:373.19,376.3 2 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:384.95,390.16 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:394.2,394.52 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:408.2,408.46 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:416.2,416.44 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:420.2,421.52 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:390.16,392.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:394.52,395.43 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:395.43,398.29 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:403.4,404.20 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:398.29,400.5 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:400.10,402.5 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:408.46,414.3 5 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:416.44,418.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:426.180,428.2 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:433.41,436.9 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:442.2,449.46 4 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:453.2,453.35 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:458.2,458.41 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:462.2,462.51 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:476.2,486.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:436.9,438.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:449.46,450.38 1 0 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:453.35,457.3 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:458.41,460.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:462.51,464.52 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:469.3,470.42 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:473.3,473.46 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:464.52,466.12 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:470.42,472.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:493.50,499.17 4 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:503.2,507.35 4 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:510.2,510.35 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:515.2,517.23 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:499.17,501.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:507.35,509.3 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:510.35,511.41 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:511.41,513.4 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:529.81,532.47 3 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:538.2,538.55 1 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:542.2,550.28 6 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:553.2,556.32 4 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:532.47,536.3 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:538.55,541.3 2 1 -github.com/ethereum/go-ethereum/core/state/snapshot/difflayer.go:550.28,552.3 1 1 -github.com/ethereum/go-ethereum/core/state/access_list.go:29.68,32.2 2 1 -github.com/ethereum/go-ethereum/core/state/access_list.go:36.114,38.9 2 1 -github.com/ethereum/go-ethereum/core/state/access_list.go:42.2,42.15 1 1 -github.com/ethereum/go-ethereum/core/state/access_list.go:46.2,47.26 2 1 -github.com/ethereum/go-ethereum/core/state/access_list.go:38.9,41.3 1 0 -github.com/ethereum/go-ethereum/core/state/access_list.go:42.15,45.3 1 1 -github.com/ethereum/go-ethereum/core/state/access_list.go:51.34,55.2 1 1 -github.com/ethereum/go-ethereum/core/state/access_list.go:58.41,60.32 2 1 -github.com/ethereum/go-ethereum/core/state/access_list.go:63.2,64.34 2 1 -github.com/ethereum/go-ethereum/core/state/access_list.go:71.2,71.11 1 1 -github.com/ethereum/go-ethereum/core/state/access_list.go:60.32,62.3 1 1 -github.com/ethereum/go-ethereum/core/state/access_list.go:64.34,66.26 2 1 -github.com/ethereum/go-ethereum/core/state/access_list.go:69.3,69.27 1 1 -github.com/ethereum/go-ethereum/core/state/access_list.go:66.26,68.4 1 1 -github.com/ethereum/go-ethereum/core/state/access_list.go:76.63,77.50 1 1 -github.com/ethereum/go-ethereum/core/state/access_list.go:80.2,81.13 2 1 -github.com/ethereum/go-ethereum/core/state/access_list.go:77.50,79.3 1 1 -github.com/ethereum/go-ethereum/core/state/access_list.go:89.108,91.31 2 1 -github.com/ethereum/go-ethereum/core/state/access_list.go:99.2,100.33 2 1 -github.com/ethereum/go-ethereum/core/state/access_list.go:106.2,106.21 1 1 -github.com/ethereum/go-ethereum/core/state/access_list.go:91.31,97.3 4 1 -github.com/ethereum/go-ethereum/core/state/access_list.go:100.33,104.3 2 1 -github.com/ethereum/go-ethereum/core/state/access_list.go:113.76,116.13 2 1 -github.com/ethereum/go-ethereum/core/state/access_list.go:119.2,124.23 3 1 -github.com/ethereum/go-ethereum/core/state/access_list.go:116.13,117.62 1 0 -github.com/ethereum/go-ethereum/core/state/access_list.go:124.23,127.3 2 1 -github.com/ethereum/go-ethereum/core/state/access_list.go:134.61,136.2 1 1 -github.com/ethereum/go-ethereum/core/state/database.go:112.46,114.2 1 1 -github.com/ethereum/go-ethereum/core/state/database.go:119.77,126.2 2 1 -github.com/ethereum/go-ethereum/core/state/database.go:135.63,137.16 2 1 -github.com/ethereum/go-ethereum/core/state/database.go:140.2,140.16 1 1 -github.com/ethereum/go-ethereum/core/state/database.go:137.16,139.3 1 0 -github.com/ethereum/go-ethereum/core/state/database.go:144.80,146.16 2 1 -github.com/ethereum/go-ethereum/core/state/database.go:149.2,149.16 1 1 -github.com/ethereum/go-ethereum/core/state/database.go:146.16,148.3 1 1 -github.com/ethereum/go-ethereum/core/state/database.go:153.44,154.23 1 1 -github.com/ethereum/go-ethereum/core/state/database.go:155.24,156.18 1 1 -github.com/ethereum/go-ethereum/core/state/database.go:157.10,158.47 1 0 -github.com/ethereum/go-ethereum/core/state/database.go:163.83,164.68 1 1 -github.com/ethereum/go-ethereum/core/state/database.go:167.2,168.19 2 1 -github.com/ethereum/go-ethereum/core/state/database.go:173.2,173.37 1 1 -github.com/ethereum/go-ethereum/core/state/database.go:164.68,166.3 1 1 -github.com/ethereum/go-ethereum/core/state/database.go:168.19,172.3 3 1 -github.com/ethereum/go-ethereum/core/state/database.go:179.93,180.68 1 0 -github.com/ethereum/go-ethereum/core/state/database.go:183.2,184.19 2 0 -github.com/ethereum/go-ethereum/core/state/database.go:189.2,189.37 1 0 -github.com/ethereum/go-ethereum/core/state/database.go:180.68,182.3 1 0 -github.com/ethereum/go-ethereum/core/state/database.go:184.19,188.3 3 0 -github.com/ethereum/go-ethereum/core/state/database.go:193.84,194.54 1 0 -github.com/ethereum/go-ethereum/core/state/database.go:197.2,198.23 2 0 -github.com/ethereum/go-ethereum/core/state/database.go:194.54,196.3 1 0 -github.com/ethereum/go-ethereum/core/state/database.go:202.46,204.2 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:48.52,52.2 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:57.37,59.21 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:63.2,63.34 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:67.2,67.22 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:59.21,61.3 1 0 -github.com/ethereum/go-ethereum/core/state/iterator.go:63.34,66.3 2 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:71.38,73.21 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:77.2,77.23 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:81.2,81.22 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:91.2,91.20 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:96.2,96.42 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:104.2,104.24 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:108.2,109.85 2 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:112.2,113.16 2 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:116.2,117.27 2 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:120.2,120.51 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:128.2,129.12 2 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:73.21,75.3 1 0 -github.com/ethereum/go-ethereum/core/state/iterator.go:77.23,79.3 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:81.22,82.42 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:88.3,88.13 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:82.42,83.32 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:86.4,86.19 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:83.32,85.5 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:91.20,94.3 2 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:96.42,97.32 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:100.3,101.13 2 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:97.32,99.4 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:104.24,106.3 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:109.85,111.3 1 0 -github.com/ethereum/go-ethereum/core/state/iterator.go:113.16,115.3 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:117.27,119.3 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:120.51,124.17 4 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:124.17,126.4 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:134.41,139.21 2 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:143.2,143.9 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:154.2,154.13 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:139.21,141.3 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:144.24,146.35 2 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:149.22,150.51 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:151.25,152.62 1 1 -github.com/ethereum/go-ethereum/core/state/iterator.go:146.35,148.4 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:37.31,39.2 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:43.40,44.28 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:48.2,48.8 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:44.28,46.3 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:51.33,53.28 2 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:57.2,57.12 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:53.28,55.3 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:97.36,99.2 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:102.91,103.25 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:106.2,106.26 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:109.2,109.34 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:112.2,120.3 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:103.25,105.3 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:106.26,108.3 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:109.34,111.3 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:124.52,126.2 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:129.43,130.20 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:130.20,132.3 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:135.38,137.2 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:139.31,143.25 2 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:143.25,147.3 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:150.49,151.19 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:168.2,168.15 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:151.19,154.57 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:159.3,159.20 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:154.57,158.4 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:159.20,162.18 3 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:162.18,165.5 2 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:172.74,174.26 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:178.2,179.11 2 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:183.2,183.37 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:174.26,176.3 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:179.11,181.3 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:187.83,189.26 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:193.2,193.54 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:196.2,196.51 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:200.2,204.22 2 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:221.2,221.36 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:232.2,233.18 2 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:240.2,241.14 2 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:189.26,191.3 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:193.54,195.3 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:196.51,198.3 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:204.22,211.66 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:214.3,216.31 3 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:211.66,213.4 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:216.31,218.4 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:221.36,224.31 3 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:227.3,227.17 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:224.31,226.4 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:227.17,230.4 2 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:233.18,235.17 2 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:238.3,238.26 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:235.17,237.4 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:245.69,247.26 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:252.2,253.19 2 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:257.2,262.24 2 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:247.26,250.3 2 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:253.19,255.3 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:271.71,273.26 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:276.2,276.34 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:273.26,275.3 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:276.34,278.3 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:283.56,285.2 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:289.47,291.41 2 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:297.2,297.96 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:300.2,300.29 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:291.41,293.36 2 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:293.36,295.4 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:297.96,299.3 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:300.29,302.3 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:307.52,310.32 2 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:314.2,314.30 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:318.2,324.43 5 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:354.2,354.28 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:357.2,357.31 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:360.2,360.11 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:310.32,312.3 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:314.30,315.31 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:315.31,315.75 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:324.43,326.36 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:329.3,332.31 3 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:342.3,342.23 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:352.3,352.62 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:326.36,327.12 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:332.31,335.4 2 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:335.9,340.4 3 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:342.23,343.22 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:350.4,350.48 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:343.22,345.63 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:345.63,348.6 2 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:354.28,356.3 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:357.31,359.3 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:364.47,366.29 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:370.2,370.30 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:373.2,373.29 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:366.29,368.3 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:370.30,371.31 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:371.31,371.74 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:378.60,380.29 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:383.2,383.20 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:387.2,387.30 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:390.2,391.16 2 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:394.2,394.23 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:380.29,382.3 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:383.20,385.3 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:387.30,388.31 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:388.31,388.75 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:391.16,393.3 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:399.51,402.24 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:408.2,408.53 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:402.24,403.16 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:406.3,406.9 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:403.16,405.4 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:413.51,414.24 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:417.2,417.53 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:414.24,416.3 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:420.51,426.2 2 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:428.51,430.2 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:432.58,434.19 2 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:437.2,444.20 8 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:434.19,436.3 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:452.48,454.2 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:457.48,458.19 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:461.2,461.46 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:464.2,465.16 2 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:468.2,469.13 2 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:458.19,460.3 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:461.46,463.3 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:465.16,467.3 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:475.49,476.19 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:479.2,479.46 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:482.2,483.16 2 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:486.2,486.13 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:476.19,478.3 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:479.46,481.3 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:483.16,485.3 1 0 -github.com/ethereum/go-ethereum/core/state/state_object.go:489.66,497.2 3 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:499.66,503.2 3 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:505.46,511.2 2 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:513.46,515.2 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:517.41,519.2 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:521.42,523.2 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:525.38,527.2 1 1 -github.com/ethereum/go-ethereum/core/state/state_object.go:532.40,533.54 1 0 -github.com/ethereum/go-ethereum/core/state/sync.go:30.127,33.19 2 1 -github.com/ethereum/go-ethereum/core/state/sync.go:40.2,41.91 2 1 -github.com/ethereum/go-ethereum/core/state/sync.go:55.2,56.15 2 1 -github.com/ethereum/go-ethereum/core/state/sync.go:33.19,34.88 1 0 -github.com/ethereum/go-ethereum/core/state/sync.go:34.88,36.4 1 0 -github.com/ethereum/go-ethereum/core/state/sync.go:41.91,42.20 1 1 -github.com/ethereum/go-ethereum/core/state/sync.go:47.3,48.65 2 1 -github.com/ethereum/go-ethereum/core/state/sync.go:51.3,53.13 3 1 -github.com/ethereum/go-ethereum/core/state/sync.go:42.20,43.46 1 0 -github.com/ethereum/go-ethereum/core/state/sync.go:43.46,45.5 1 0 -github.com/ethereum/go-ethereum/core/state/sync.go:48.65,50.4 1 0 -github.com/ethereum/go-ethereum/core/state/dump.go:70.41,72.2 1 1 -github.com/ethereum/go-ethereum/core/state/dump.go:75.68,77.2 1 1 -github.com/ethereum/go-ethereum/core/state/dump.go:87.49,89.2 1 0 -github.com/ethereum/go-ethereum/core/state/dump.go:92.76,94.2 1 0 -github.com/ethereum/go-ethereum/core/state/dump.go:102.76,113.32 2 0 -github.com/ethereum/go-ethereum/core/state/dump.go:116.2,116.23 1 0 -github.com/ethereum/go-ethereum/core/state/dump.go:113.32,115.3 1 0 -github.com/ethereum/go-ethereum/core/state/dump.go:120.49,124.2 1 0 -github.com/ethereum/go-ethereum/core/state/dump.go:128.87,130.17 1 1 -github.com/ethereum/go-ethereum/core/state/dump.go:133.2,143.16 5 1 -github.com/ethereum/go-ethereum/core/state/dump.go:195.2,195.26 1 1 -github.com/ethereum/go-ethereum/core/state/dump.go:198.2,201.16 2 1 -github.com/ethereum/go-ethereum/core/state/dump.go:130.17,132.3 1 1 -github.com/ethereum/go-ethereum/core/state/dump.go:143.16,145.58 2 1 -github.com/ethereum/go-ethereum/core/state/dump.go:148.3,156.23 3 1 -github.com/ethereum/go-ethereum/core/state/dump.go:164.3,166.21 3 1 -github.com/ethereum/go-ethereum/core/state/dump.go:169.3,169.24 1 1 -github.com/ethereum/go-ethereum/core/state/dump.go:181.3,183.41 3 1 -github.com/ethereum/go-ethereum/core/state/dump.go:188.3,188.43 1 1 -github.com/ethereum/go-ethereum/core/state/dump.go:145.58,146.14 1 0 -github.com/ethereum/go-ethereum/core/state/dump.go:156.23,159.30 2 0 -github.com/ethereum/go-ethereum/core/state/dump.go:162.4,162.30 1 0 -github.com/ethereum/go-ethereum/core/state/dump.go:159.30,160.13 1 0 -github.com/ethereum/go-ethereum/core/state/dump.go:166.21,168.4 1 1 -github.com/ethereum/go-ethereum/core/state/dump.go:169.24,172.25 3 1 -github.com/ethereum/go-ethereum/core/state/dump.go:172.25,174.19 2 0 -github.com/ethereum/go-ethereum/core/state/dump.go:178.5,178.98 1 0 -github.com/ethereum/go-ethereum/core/state/dump.go:174.19,176.14 2 0 -github.com/ethereum/go-ethereum/core/state/dump.go:183.41,187.4 2 0 -github.com/ethereum/go-ethereum/core/state/dump.go:188.43,189.17 1 0 -github.com/ethereum/go-ethereum/core/state/dump.go:192.4,192.9 1 0 -github.com/ethereum/go-ethereum/core/state/dump.go:189.17,191.5 1 0 -github.com/ethereum/go-ethereum/core/state/dump.go:195.26,197.3 1 0 -github.com/ethereum/go-ethereum/core/state/dump.go:205.50,211.2 3 1 -github.com/ethereum/go-ethereum/core/state/dump.go:214.49,217.16 3 1 -github.com/ethereum/go-ethereum/core/state/dump.go:220.2,220.13 1 1 -github.com/ethereum/go-ethereum/core/state/dump.go:217.16,219.3 1 0 -github.com/ethereum/go-ethereum/core/state/dump.go:224.73,226.2 1 0 -github.com/ethereum/go-ethereum/core/state/dump.go:229.63,235.2 3 0 -github.com/ethereum/go-ethereum/core/state/journal.go:44.28,48.2 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:51.46,53.42 2 1 -github.com/ethereum/go-ethereum/core/state/journal.go:53.42,55.3 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:60.58,61.50 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:72.2,72.34 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:61.50,66.50 2 1 -github.com/ethereum/go-ethereum/core/state/journal.go:66.50,67.49 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:67.49,69.5 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:78.46,80.2 1 0 -github.com/ethereum/go-ethereum/core/state/journal.go:83.32,85.2 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:143.49,146.2 2 1 -github.com/ethereum/go-ethereum/core/state/journal.go:148.56,150.2 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:152.48,154.39 2 1 -github.com/ethereum/go-ethereum/core/state/journal.go:154.39,156.3 1 0 -github.com/ethereum/go-ethereum/core/state/journal.go:159.55,161.2 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:163.44,165.16 2 1 -github.com/ethereum/go-ethereum/core/state/journal.go:165.16,168.3 2 1 -github.com/ethereum/go-ethereum/core/state/journal.go:171.51,173.2 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:177.43,178.2 0 1 -github.com/ethereum/go-ethereum/core/state/journal.go:180.49,182.2 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:184.44,186.2 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:188.51,190.2 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:192.42,194.2 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:196.49,198.2 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:200.41,202.2 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:204.48,206.2 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:208.44,210.2 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:212.51,214.2 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:216.43,218.2 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:220.50,222.2 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:224.43,226.20 2 1 -github.com/ethereum/go-ethereum/core/state/journal.go:231.2,231.13 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:226.20,228.3 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:228.8,230.3 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:234.50,236.2 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:238.48,240.2 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:242.55,244.2 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:246.57,257.2 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:259.64,261.2 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:263.54,265.2 1 1 -github.com/ethereum/go-ethereum/core/state/journal.go:267.61,269.2 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:50.57,53.2 2 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:55.46,56.24 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:128.81,130.16 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:133.2,147.22 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:154.2,154.17 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:130.16,132.3 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:147.22,148.59 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:148.59,152.4 3 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:160.53,161.25 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:165.2,165.19 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:161.25,164.3 2 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:165.19,167.3 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:172.36,173.25 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:173.25,176.3 2 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:180.39,181.20 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:181.20,183.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:186.33,188.2 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:190.42,198.2 6 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:200.81,202.25 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:205.2,205.13 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:202.25,204.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:208.39,210.29 2 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:213.2,213.13 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:210.29,212.3 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:217.66,218.37 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:218.37,223.3 4 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:227.54,229.2 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:232.41,235.2 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:239.41,241.20 2 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:244.2,244.17 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:241.20,242.88 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:249.51,251.2 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:255.51,258.2 2 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:261.60,263.24 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:266.2,266.20 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:263.24,265.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:269.56,271.24 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:275.2,275.10 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:271.24,273.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:279.33,281.2 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:283.55,285.24 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:288.2,288.12 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:285.24,287.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:291.56,293.24 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:296.2,296.10 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:293.24,295.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:299.64,301.24 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:304.2,304.51 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:301.24,303.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:308.79,310.24 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:313.2,313.22 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:310.24,312.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:317.67,319.2 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:322.74,326.2 3 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:329.88,332.17 3 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:335.2,336.19 2 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:332.17,334.3 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:340.88,342.24 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:345.2,345.22 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:342.24,344.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:349.39,351.2 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:355.57,357.24 2 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:360.2,362.26 3 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:357.24,359.3 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:365.57,367.24 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:370.2,370.14 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:367.24,369.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:378.68,380.24 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:380.24,382.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:386.68,388.24 2 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:388.24,390.3 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:393.68,395.24 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:395.24,397.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:400.63,402.24 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:402.24,404.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:407.61,409.24 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:409.24,411.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:414.73,416.24 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:416.24,418.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:423.88,425.24 2 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:425.24,427.3 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:435.53,437.24 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:440.2,448.13 4 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:437.24,439.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:456.55,458.30 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:462.2,463.68 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:471.2,471.19 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:458.30,459.31 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:459.31,459.72 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:463.68,465.3 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:471.19,473.3 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:477.55,479.30 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:483.2,484.50 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:479.30,480.31 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:480.31,480.72 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:484.50,486.3 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:492.68,493.70 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:496.2,496.12 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:493.70,495.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:503.75,505.45 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:509.2,510.19 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:535.2,535.17 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:555.2,557.12 3 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:505.45,507.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:510.19,513.31 3 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:516.3,516.17 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:513.31,515.4 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:516.17,517.18 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:520.4,526.31 2 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:529.4,529.36 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:517.18,519.5 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:526.31,528.5 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:529.36,531.5 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:535.17,538.31 3 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:541.3,541.17 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:545.3,545.20 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:548.3,549.52 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:538.31,540.4 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:541.17,544.4 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:545.20,547.4 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:549.52,552.4 2 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:560.55,562.2 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:565.73,567.24 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:570.2,570.20 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:567.24,569.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:575.81,579.34 3 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:585.2,586.17 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:591.2,592.34 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:595.2,595.20 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:579.34,581.20 2 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:581.20,583.4 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:586.17,588.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:588.8,590.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:592.34,594.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:608.54,610.17 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:610.17,612.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:615.100,617.15 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:620.2,622.16 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:641.2,641.12 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:617.15,619.3 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:622.16,624.50 2 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:631.3,631.24 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:624.50,625.23 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:628.4,628.12 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:625.23,627.5 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:631.24,633.18 2 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:636.4,636.45 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:633.18,635.5 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:636.45,638.5 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:646.35,662.38 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:680.2,680.42 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:686.2,686.40 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:692.2,692.33 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:700.2,700.42 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:708.2,713.25 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:716.2,716.20 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:741.2,741.14 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:662.38,667.51 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:667.51,675.4 3 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:680.42,681.51 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:684.3,684.47 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:681.51,683.4 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:686.40,687.51 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:690.3,690.45 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:687.51,689.4 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:692.33,694.26 2 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:698.3,698.25 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:694.26,697.4 2 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:700.42,702.3 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:713.25,715.3 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:716.20,725.37 4 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:728.3,729.36 2 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:732.3,733.35 2 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:725.37,727.4 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:729.36,731.4 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:733.35,735.26 2 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:738.4,738.31 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:735.26,737.5 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:745.34,750.2 4 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:753.47,755.61 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:758.2,758.71 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:761.2,765.43 3 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:755.61,757.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:758.71,759.64 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:769.38,771.2 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:776.53,778.38 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:812.2,812.57 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:816.2,816.27 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:778.38,780.13 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:789.3,789.58 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:804.3,810.79 3 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:780.13,787.12 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:789.58,796.21 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:796.21,800.5 3 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:801.9,803.4 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:812.57,814.3 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:822.73,834.25 3 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:845.2,845.42 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:853.2,853.23 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:858.2,859.42 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:869.2,869.23 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:872.2,872.36 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:876.2,876.30 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:879.2,879.22 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:834.25,835.16 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:835.16,838.4 2 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:845.42,846.48 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:846.48,848.4 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:853.23,854.59 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:854.59,856.4 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:859.42,860.47 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:867.3,867.59 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:860.47,863.4 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:863.9,866.4 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:869.23,871.3 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:872.36,874.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:876.30,877.31 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:877.31,877.71 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:884.54,887.2 2 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:889.43,890.32 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:894.2,894.41 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:890.32,893.3 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:898.72,899.20 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:903.2,908.40 4 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:923.2,923.34 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:926.2,926.32 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:932.2,933.30 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:938.2,939.113 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:948.2,948.16 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:951.2,951.30 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:964.2,964.19 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:983.2,983.18 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:899.20,901.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:908.40,909.48 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:909.48,911.40 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:916.4,917.18 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:920.4,920.33 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:911.40,914.5 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:917.18,919.5 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:923.34,925.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:926.32,927.44 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:927.44,929.4 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:933.30,935.3 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:939.113,940.57 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:943.3,943.32 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:946.3,946.13 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:940.57,942.4 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:943.32,945.4 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:948.16,950.3 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:951.30,962.3 9 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:964.19,965.31 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:969.3,969.46 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:981.3,981.78 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:965.31,966.32 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:966.32,966.74 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:969.46,970.103 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:977.4,977.49 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:970.103,972.5 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:977.49,979.5 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:995.134,1000.16 3 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:1004.2,1004.35 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:1007.2,1007.26 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:1000.16,1003.3 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:1004.35,1006.3 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:1007.26,1009.38 2 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:1009.38,1011.4 1 0 -github.com/ethereum/go-ethereum/core/state/statedb.go:1016.63,1017.35 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:1017.35,1019.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:1023.78,1025.13 2 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:1032.2,1032.13 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:1025.13,1031.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:1032.13,1037.3 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:1041.65,1043.2 1 1 -github.com/ethereum/go-ethereum/core/state/statedb.go:1046.115,1048.2 1 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:55.89,73.2 3 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:77.34,78.37 1 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:104.2,104.18 1 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:78.37,81.22 2 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:81.22,82.30 1 0 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:82.30,87.38 4 0 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:90.5,90.55 1 0 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:87.38,89.6 1 0 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:91.10,96.38 4 0 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:99.5,99.55 1 0 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:96.38,98.6 1 0 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:111.49,128.22 2 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:135.2,135.40 1 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:138.2,138.13 1 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:128.22,129.38 1 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:132.3,132.14 1 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:129.38,131.4 1 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:135.40,137.3 1 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:142.68,144.22 1 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:148.2,149.20 2 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:153.2,153.24 1 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:144.22,146.3 1 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:149.20,152.3 2 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:158.54,160.22 1 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:169.2,170.20 2 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:176.2,179.17 3 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:183.2,183.13 1 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:160.22,162.18 2 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:166.3,166.29 1 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:162.18,165.4 2 0 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:170.20,173.3 2 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:179.17,182.3 2 0 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:188.64,189.49 1 0 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:189.49,191.3 1 0 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:218.63,230.2 3 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:233.47,240.9 4 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:241.29,241.29 0 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:242.10,242.10 0 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:248.35,250.9 2 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:251.21,253.14 1 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:255.17,257.21 1 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:260.3,260.33 1 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:257.21,259.4 1 0 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:266.31,267.9 1 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:272.2,272.11 1 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:268.17,268.17 0 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:269.10,270.17 1 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:277.30,283.16 3 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:287.2,290.6 2 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:283.16,286.3 2 0 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:290.6,291.10 1 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:292.18,300.31 5 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:324.24,326.33 1 0 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:328.18,330.10 1 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:300.31,301.12 1 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:302.20,307.12 4 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:309.26,311.35 1 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:313.13,315.44 1 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:315.44,317.7 1 1 -github.com/ethereum/go-ethereum/core/state/trie_prefetcher.go:317.12,320.7 2 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:64.35,66.2 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:69.60,74.2 4 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:77.39,80.25 3 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:83.2,84.10 2 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:80.25,82.3 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:89.52,91.25 2 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:94.2,95.10 2 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:91.25,93.3 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:99.39,101.25 2 0 -github.com/ethereum/go-ethereum/crypto/crypto.go:104.2,104.19 1 0 -github.com/ethereum/go-ethereum/crypto/crypto.go:101.25,103.3 1 0 -github.com/ethereum/go-ethereum/crypto/crypto.go:108.67,111.2 2 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:115.86,117.2 1 0 -github.com/ethereum/go-ethereum/crypto/crypto.go:120.51,122.2 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:127.48,130.2 2 0 -github.com/ethereum/go-ethereum/crypto/crypto.go:135.64,138.49 3 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:141.2,144.33 2 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:148.2,148.24 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:152.2,153.29 2 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:156.2,156.18 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:138.49,140.3 1 0 -github.com/ethereum/go-ethereum/crypto/crypto.go:144.33,146.3 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:148.24,150.3 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:153.29,155.3 1 0 -github.com/ethereum/go-ethereum/crypto/crypto.go:160.47,161.17 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:164.2,164.61 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:161.17,163.3 1 0 -github.com/ethereum/go-ethereum/crypto/crypto.go:168.60,170.14 2 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:173.2,173.57 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:170.14,172.3 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:176.48,177.48 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:180.2,180.47 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:177.48,179.3 1 0 -github.com/ethereum/go-ethereum/crypto/crypto.go:184.59,186.51 2 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:191.2,191.19 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:186.51,188.3 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:188.8,188.23 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:188.23,190.3 1 0 -github.com/ethereum/go-ethereum/crypto/crypto.go:195.56,197.16 2 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:200.2,205.16 5 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:210.2,210.43 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:214.2,214.32 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:197.16,199.3 1 0 -github.com/ethereum/go-ethereum/crypto/crypto.go:205.16,207.3 1 0 -github.com/ethereum/go-ethereum/crypto/crypto.go:207.8,207.26 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:207.26,209.3 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:210.43,212.3 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:219.64,220.26 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:229.2,229.15 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:220.26,222.10 2 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:223.38,224.17 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:225.19,226.17 1 0 -github.com/ethereum/go-ethereum/crypto/crypto.go:233.45,234.20 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:234.20,236.10 2 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:237.22,238.14 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:239.19,240.14 1 0 -github.com/ethereum/go-ethereum/crypto/crypto.go:241.31,242.67 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:243.15,244.66 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:251.58,254.2 2 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:257.47,259.2 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:263.74,264.54 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:269.2,269.44 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:273.2,273.77 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:264.54,266.3 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:269.44,271.3 1 0 -github.com/ethereum/go-ethereum/crypto/crypto.go:276.56,279.2 2 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:281.30,282.23 1 1 -github.com/ethereum/go-ethereum/crypto/crypto.go:282.23,284.3 1 1 -github.com/ethereum/go-ethereum/crypto/signature_cgo.go:32.50,34.2 1 1 -github.com/ethereum/go-ethereum/crypto/signature_cgo.go:37.59,39.16 2 1 -github.com/ethereum/go-ethereum/crypto/signature_cgo.go:43.2,44.57 2 1 -github.com/ethereum/go-ethereum/crypto/signature_cgo.go:39.16,41.3 1 0 -github.com/ethereum/go-ethereum/crypto/signature_cgo.go:55.77,56.37 1 1 -github.com/ethereum/go-ethereum/crypto/signature_cgo.go:59.2,61.43 3 1 -github.com/ethereum/go-ethereum/crypto/signature_cgo.go:56.37,58.3 1 1 -github.com/ethereum/go-ethereum/crypto/signature_cgo.go:67.65,69.2 1 1 -github.com/ethereum/go-ethereum/crypto/signature_cgo.go:72.64,74.14 2 1 -github.com/ethereum/go-ethereum/crypto/signature_cgo.go:77.2,77.57 1 1 -github.com/ethereum/go-ethereum/crypto/signature_cgo.go:74.14,76.3 1 1 -github.com/ethereum/go-ethereum/crypto/signature_cgo.go:81.53,83.2 1 1 -github.com/ethereum/go-ethereum/crypto/signature_cgo.go:86.28,88.2 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:43.77,59.46 4 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:64.2,64.39 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:70.2,70.86 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:76.2,76.22 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:59.46,61.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:61.8,63.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:64.39,66.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:70.86,75.3 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:82.78,104.12 6 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:112.2,114.9 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:119.2,119.39 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:124.2,124.86 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:128.2,128.22 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:104.12,107.3 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:107.8,107.21 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:107.21,109.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:109.8,111.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:114.9,116.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:116.8,118.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:119.39,121.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:124.86,127.3 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:134.104,138.58 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:138.58,149.47 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:152.3,153.11 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:159.3,159.13 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:163.3,170.11 7 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:176.3,176.36 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:181.3,182.34 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:189.3,189.19 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:149.47,151.4 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:153.11,156.4 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:156.9,158.4 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:159.13,161.4 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:170.11,172.4 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:172.9,174.4 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:176.36,178.4 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:182.34,183.93 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/difficulty.go:183.93,187.5 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:60.13,67.2 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:71.28,74.2 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:77.79,79.16 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:82.2,83.16 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:87.2,87.34 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:94.2,94.10 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:101.2,101.48 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:79.16,81.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:83.16,86.3 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:87.34,88.25 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:88.25,92.4 3 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:94.10,95.36 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:95.36,99.4 3 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:105.76,108.11 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:111.2,112.16 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:116.2,121.23 6 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:108.11,110.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:112.16,114.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:127.136,129.62 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:133.2,136.16 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:139.2,139.77 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:145.2,146.16 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:151.2,156.36 4 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:159.2,159.37 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:162.2,162.46 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:165.2,165.30 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:129.62,131.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:136.16,138.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:139.77,143.3 3 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:146.16,150.3 3 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:156.36,158.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:159.37,161.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:162.46,164.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:182.81,183.19 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:186.2,186.70 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:189.2,189.49 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:183.19,185.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:186.70,188.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:195.62,201.9 4 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:211.2,211.48 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:217.2,217.21 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:201.9,202.44 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:208.3,208.29 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:202.44,204.4 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:204.9,207.4 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:211.48,216.3 4 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:231.41,233.2 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:236.71,237.19 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:237.19,240.11 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:244.3,244.16 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:250.3,251.24 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:254.3,264.17 6 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:268.3,271.95 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:272.3,272.17 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:279.3,279.49 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:240.11,242.4 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:244.16,248.4 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:251.24,253.4 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:264.17,267.4 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:271.95,271.135 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:272.17,277.4 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:279.49,283.4 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:288.29,289.19 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:289.19,293.3 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:308.43,310.2 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:313.73,314.19 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:314.19,321.11 5 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:326.3,326.16 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:336.3,337.24 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:340.3,350.17 6 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:354.3,360.98 4 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:361.3,361.17 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:368.3,368.49 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:321.11,324.4 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:326.16,334.4 5 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:337.24,339.4 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:350.17,353.4 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:360.98,360.141 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:361.17,366.4 3 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:368.49,372.4 3 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:379.36,381.2 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:384.31,385.19 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:385.19,389.3 3 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:393.42,396.2 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:399.44,402.2 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:461.65,462.23 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:465.2,465.29 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:469.2,469.54 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:472.2,472.58 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:475.2,482.34 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:485.2,486.15 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:462.23,464.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:465.29,468.3 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:469.54,471.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:472.58,474.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:482.34,484.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:491.56,493.2 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:498.25,505.2 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:510.41,518.2 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:523.50,531.2 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:535.29,542.2 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:546.26,548.2 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:551.37,553.2 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:556.48,557.29 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:565.2,565.12 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:557.29,559.27 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:562.3,563.25 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:559.27,561.4 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:571.50,580.20 5 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:584.2,584.16 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:580.20,583.3 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:593.66,600.35 4 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:618.2,618.16 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:600.35,601.13 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:601.13,604.22 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:604.22,607.5 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:609.8,613.21 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:613.21,616.4 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:623.37,628.2 3 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:635.47,640.26 3 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:645.2,646.9 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:640.26,643.3 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:647.35,647.35 0 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:648.10,648.10 0 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:656.42,658.78 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:661.2,663.9 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:671.2,671.49 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:658.78,660.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:664.40,664.40 0 1 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:665.30,667.33 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:675.73,692.2 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/ethash.go:696.36,698.2 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/mmap_help_other.go:30.47,36.2 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:51.140,53.80 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:64.2,64.26 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:68.2,72.24 4 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:80.2,81.18 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:84.2,84.17 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:88.2,88.26 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:91.2,95.31 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:103.2,103.12 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:127.2,127.12 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:53.80,56.10 3 0 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:61.3,61.13 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:57.42,57.42 0 0 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:58.11,59.126 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:64.26,66.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:72.24,74.17 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:78.3,78.55 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:74.17,77.4 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:81.18,83.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:84.17,86.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:88.26,90.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:95.31,97.33 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:97.33,100.4 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:103.12,105.10 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:125.3,125.14 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:106.15,108.16 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:109.26,111.11 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:116.4,116.16 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:117.24,120.67 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:112.27,112.27 0 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:113.12,114.128 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:120.67,122.5 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:132.115,150.6 5 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:187.2,187.28 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:150.6,151.10 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:152.16,156.16 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:158.11,161.35 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:166.4,167.51 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:182.4,182.11 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:161.35,164.5 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:167.51,174.12 4 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:180.5,180.17 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:175.42,176.93 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:177.18,178.94 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:245.84,265.2 4 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:267.31,268.15 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:275.2,278.6 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:268.15,273.3 4 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:278.6,279.10 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:280.27,285.18 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:287.32,289.29 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:295.35,297.65 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:303.35,306.22 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:308.31,311.33 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:315.4,315.16 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:317.19,319.34 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:325.4,325.29 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:333.24,334.10 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:289.29,291.5 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:291.10,293.5 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:297.65,299.5 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:299.10,301.5 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:311.33,314.5 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:319.34,320.47 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:320.47,322.6 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:325.29,326.38 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:326.38,327.72 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:327.72,329.7 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:346.53,356.2 7 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:360.37,366.32 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:372.2,373.35 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:366.32,368.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:368.8,370.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:373.35,375.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:378.103,382.16 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:386.2,392.16 6 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:382.16,385.3 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:392.16,394.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:394.8,397.3 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:403.109,404.27 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:409.2,410.18 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:415.2,420.17 5 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:427.2,427.22 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:431.2,437.70 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:448.2,449.14 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:404.27,407.3 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:410.18,413.3 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:420.17,421.64 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:421.64,424.4 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:427.22,430.3 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:437.70,438.10 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:439.30,441.15 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:442.11,444.16 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:53.37,55.22 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:58.2,58.29 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:55.22,57.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:64.38,66.65 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:69.2,69.13 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:66.65,68.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:74.39,76.22 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:79.2,79.31 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:76.22,78.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:85.40,87.64 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:90.2,90.13 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:87.64,89.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:100.37,108.9 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:111.2,112.40 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:108.9,109.42 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:112.40,116.3 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:121.36,123.25 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:126.2,127.46 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:130.2,130.13 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:123.25,125.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:127.46,129.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:139.62,144.15 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:154.2,171.12 12 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:182.2,186.70 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:191.2,193.35 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:207.2,207.23 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:144.15,148.30 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:151.3,151.90 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:148.30,150.4 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:171.12,172.7 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:172.7,173.11 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:174.16,175.11 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:176.39,177.186 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:186.70,189.3 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:193.35,194.29 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:194.29,204.4 4 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:207.23,209.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:213.26,214.38 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:214.38,216.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:223.30,225.2 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:228.43,229.32 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:229.32,231.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:236.81,244.33 4 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:247.2,251.35 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:255.2,255.46 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:260.2,260.29 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:263.2,264.12 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:244.33,246.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:251.35,253.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:255.46,258.3 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:260.29,262.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:269.67,274.15 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:285.2,303.31 13 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:333.2,333.13 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:274.15,278.30 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:281.3,281.90 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:278.30,280.4 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:303.31,304.19 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:304.19,314.30 6 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:318.4,319.47 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:314.30,316.5 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:319.47,321.16 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:324.5,326.70 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:321.16,323.6 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:326.70,328.6 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:338.109,352.32 8 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:356.2,358.36 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:366.2,366.35 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:369.2,372.26 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:375.2,375.58 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:352.32,354.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:358.36,360.51 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:363.3,363.21 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:360.51,362.4 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:366.35,368.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:372.26,374.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:381.94,384.40 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:393.2,393.45 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:384.40,388.34 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:391.3,391.14 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:388.34,390.4 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:399.82,400.40 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:404.2,404.63 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:400.40,403.3 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/api.go:41.46,42.30 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/api.go:46.2,50.9 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/api.go:55.2,55.9 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/api.go:42.30,44.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/api.go:51.75,51.75 0 1 -github.com/ethereum/go-ethereum/consensus/ethash/api.go:52.34,53.39 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/api.go:56.24,57.19 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/api.go:58.21,59.26 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/api.go:66.83,67.30 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/api.go:71.2,72.9 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/api.go:82.2,83.19 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/api.go:67.30,69.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/api.go:78.4,78.4 0 1 -github.com/ethereum/go-ethereum/consensus/ethash/api.go:79.34,80.15 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/api.go:92.74,93.30 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/api.go:97.2,98.9 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/api.go:105.2,106.13 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/api.go:93.30,95.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/api.go:99.91,99.91 0 1 -github.com/ethereum/go-ethereum/consensus/ethash/api.go:100.34,101.15 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/api.go:110.38,112.2 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:94.76,96.2 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:100.110,102.43 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:106.2,107.51 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:110.2,111.19 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:115.2,115.83 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:102.43,104.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:107.51,109.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:111.19,113.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:121.143,123.64 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:132.2,133.28 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:138.2,145.31 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:154.2,155.12 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:181.2,181.25 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:123.64,125.37 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:128.3,128.24 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:125.37,127.4 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:133.28,135.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:145.31,146.13 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:146.13,147.30 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:147.30,150.5 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:155.12,162.7 3 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:162.7,163.11 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:164.22,165.33 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:169.25,170.52 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:176.17,177.11 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:165.33,168.6 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:170.52,172.31 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:172.31,174.7 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:184.148,186.16 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:191.2,191.19 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:194.2,194.89 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:186.16,188.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:188.8,188.65 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:188.65,190.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:191.19,193.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:199.91,201.43 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:205.2,205.37 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:208.2,208.30 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:212.2,215.25 3 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:234.2,238.39 3 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:257.2,257.12 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:201.43,203.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:205.37,207.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:208.30,210.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:215.25,217.28 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:220.3,222.55 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:232.3,232.55 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:217.28,218.9 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:222.55,225.23 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:228.4,228.44 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:225.23,226.10 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:228.44,230.5 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:238.39,241.28 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:244.3,247.29 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:250.3,250.83 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:253.3,253.119 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:241.28,243.4 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:247.29,249.4 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:250.83,252.4 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:253.119,255.4 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:263.145,265.61 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:269.2,269.12 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:274.2,274.32 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:278.2,280.42 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:284.2,284.42 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:288.2,288.38 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:292.2,292.45 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:305.2,305.90 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:309.2,309.10 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:315.2,315.78 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:318.2,318.77 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:321.2,321.12 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:265.61,267.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:269.12,270.66 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:270.66,272.4 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:274.32,276.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:280.42,282.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:284.42,286.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:288.38,290.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:292.45,294.28 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:297.3,297.79 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:294.28,296.4 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:297.79,299.4 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:300.8,300.88 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:300.88,303.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:305.90,307.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:309.10,310.65 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:310.65,312.4 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:315.78,317.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:318.77,320.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:327.117,329.2 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:334.93,336.9 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:337.35,338.45 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:339.29,340.45 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:341.34,342.45 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:343.37,344.52 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:345.32,346.47 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:347.32,348.47 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:349.10,350.46 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:367.100,371.58 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:371.58,388.47 7 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:394.3,394.28 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:398.3,403.42 4 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:408.3,409.50 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:413.3,418.32 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:423.3,423.11 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:388.47,390.4 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:390.9,392.4 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:394.28,396.4 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:403.42,405.4 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:409.50,411.4 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:418.32,422.4 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:430.74,450.27 8 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:454.2,459.41 4 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:463.2,468.31 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:473.2,473.10 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:450.27,452.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:459.41,461.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:468.31,472.3 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:479.73,488.71 7 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:493.2,493.44 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:497.2,499.31 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:506.2,506.13 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:488.71,490.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:490.8,492.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:493.44,495.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:499.31,505.3 4 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:517.111,519.80 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:527.2,527.26 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:531.2,531.35 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:535.2,542.13 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:556.2,556.14 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:570.2,570.47 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:573.2,574.51 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:577.2,577.12 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:519.80,521.48 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:524.3,524.13 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:521.48,523.4 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:527.26,529.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:531.35,533.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:542.13,544.26 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:544.26,550.4 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:550.9,553.4 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:556.14,560.40 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:563.3,567.27 2 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:560.40,562.4 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:570.47,572.3 1 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:574.51,576.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:582.94,584.19 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:587.2,588.12 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:584.19,586.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:593.161,597.2 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:601.221,607.2 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:610.73,628.27 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:631.2,633.13 3 1 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:628.27,630.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:645.120,648.39 2 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:651.2,651.44 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:655.2,657.31 3 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:667.2,667.43 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:648.39,650.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:651.44,653.3 1 0 -github.com/ethereum/go-ethereum/consensus/ethash/consensus.go:657.31,666.3 7 0 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b_generic.go:28.80,32.31 3 0 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b_generic.go:43.2,43.21 1 0 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b_generic.go:32.31,34.21 2 0 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b_generic.go:37.3,37.20 1 0 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b_generic.go:41.3,41.36 1 0 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b_generic.go:34.21,36.4 1 0 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b_generic.go:37.20,40.4 2 0 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b_generic.go:46.87,53.35 6 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b_generic.go:172.2,179.18 8 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b_generic.go:53.35,171.3 113 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b_ref.go:10.80,12.2 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:50.51,51.21 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:54.2,54.38 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:59.2,59.33 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:62.2,71.15 4 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:51.21,53.3 1 0 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:54.38,58.3 1 0 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:59.33,61.3 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:84.50,85.16 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:88.2,88.21 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:85.16,86.44 1 0 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:91.27,94.2 2 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:96.23,106.45 8 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:109.2,110.20 2 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:106.45,108.3 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:113.49,114.17 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:119.2,119.22 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:123.2,124.29 2 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:129.2,129.18 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:142.2,142.21 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:155.2,155.30 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:169.2,169.8 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:114.17,117.3 2 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:119.22,121.3 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:124.29,127.3 2 0 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:129.18,131.25 2 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:136.3,139.40 4 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:131.25,135.4 3 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:142.21,153.3 8 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:155.30,156.33 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:159.3,167.30 7 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:156.33,158.4 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:172.46,174.21 2 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2x.go:174.21,176.3 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/register.go:15.13,16.33 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/register.go:20.2,20.33 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/register.go:25.2,25.33 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/register.go:30.2,32.53 3 1 -github.com/ethereum/go-ethereum/crypto/blake2b/register.go:16.33,19.3 2 0 -github.com/ethereum/go-ethereum/crypto/blake2b/register.go:20.33,23.3 2 0 -github.com/ethereum/go-ethereum/crypto/blake2b/register.go:25.33,28.3 2 0 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:53.37,57.2 3 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:60.40,66.2 5 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:69.40,75.2 5 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:79.44,79.75 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:83.44,83.78 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:87.44,87.78 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:97.51,97.82 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:103.76,105.11 2 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:108.2,108.44 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:105.11,107.3 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:111.59,112.37 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:115.2,115.21 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:118.2,124.15 4 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:112.37,114.3 1 0 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:115.21,117.3 1 0 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:127.59,132.45 4 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:141.2,144.22 4 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:147.2,151.39 3 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:132.45,134.18 2 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:137.3,138.18 2 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:134.18,136.4 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:144.22,146.3 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:151.39,153.3 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:156.73,160.31 3 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:171.2,171.21 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:160.31,162.21 2 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:165.3,165.20 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:169.3,169.29 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:162.21,164.4 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:165.20,168.4 2 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:190.50,191.19 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:194.2,196.25 3 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:199.2,205.15 6 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:191.19,193.3 1 0 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:196.25,198.3 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:208.50,209.60 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:212.2,212.29 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:215.2,216.25 2 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:219.2,226.12 8 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:209.60,211.3 1 0 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:212.29,214.3 1 0 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:216.25,218.3 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:229.34,229.54 1 0 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:231.29,231.46 1 0 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:233.26,237.18 4 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:237.18,240.3 2 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:243.53,246.18 2 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:258.2,258.42 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:267.2,267.16 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:271.2,271.8 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:246.18,248.21 2 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:252.3,255.20 4 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:248.21,251.4 2 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:258.42,260.19 2 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:263.3,264.13 2 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:260.19,262.4 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:267.16,269.3 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:274.41,278.2 3 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:280.45,286.22 5 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:289.2,294.22 4 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:286.22,288.3 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:294.22,296.3 1 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:299.46,303.2 3 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:305.46,309.2 3 0 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:311.47,314.2 2 1 -github.com/ethereum/go-ethereum/crypto/blake2b/blake2b.go:316.47,319.2 2 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:44.52,49.25 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:55.2,58.25 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:69.2,71.12 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:49.25,52.3 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:58.25,61.26 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:66.3,67.67 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:61.26,64.4 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:74.51,78.31 3 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:78.31,79.36 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:79.36,80.21 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:80.21,82.5 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:87.50,91.27 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:97.2,98.27 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:104.2,104.12 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:91.27,92.26 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:92.26,94.4 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:98.27,99.31 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:99.31,101.4 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:108.33,112.22 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/lattice.go:112.22,114.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:28.51,29.6 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:29.6,31.33 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:31.33,33.4 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:44.51,46.16 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:50.2,50.42 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:46.16,48.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:53.30,55.2 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:59.45,60.16 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:63.2,64.10 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:60.16,62.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:68.48,69.16 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:72.2,73.10 2 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:69.16,71.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:77.32,78.16 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:81.2,82.10 2 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:78.16,80.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:86.29,87.16 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:90.2,91.10 2 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:87.16,89.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:95.29,96.16 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:99.2,100.10 2 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:96.16,98.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:104.31,108.16 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:112.2,114.22 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:117.2,124.12 6 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:108.16,110.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:114.22,116.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:129.50,132.25 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:136.2,136.16 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:141.2,142.42 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:145.2,145.53 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:149.2,153.36 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:166.2,166.28 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:132.25,134.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:136.16,138.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:138.8,140.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:142.42,144.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:145.53,147.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:153.36,158.3 3 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:158.8,162.23 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:162.23,164.4 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:176.51,178.16 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:182.2,182.42 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:178.16,180.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:185.30,187.2 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:191.45,192.16 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:195.2,196.10 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:192.16,194.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:200.48,201.16 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:204.2,205.10 2 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:201.16,203.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:209.32,210.16 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:213.2,214.10 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:210.16,212.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:218.29,219.16 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:222.2,223.10 2 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:219.16,221.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:227.29,228.16 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:231.2,232.10 2 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:228.16,230.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:236.31,240.16 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:244.2,246.22 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:249.2,260.12 10 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:240.16,242.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:246.22,248.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:265.50,268.25 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:272.2,272.16 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:275.2,276.44 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:279.2,279.55 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:282.2,282.57 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:285.2,285.57 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:289.2,294.38 5 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:307.2,307.28 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:268.25,270.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:272.16,274.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:276.44,278.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:279.55,281.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:282.57,284.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:285.57,287.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:294.38,299.3 3 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:299.8,303.23 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:303.23,305.4 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:317.31,319.2 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:322.42,326.30 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:332.2,332.41 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:326.30,327.49 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:330.3,330.39 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:327.49,328.12 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:338.33,340.2 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:342.30,344.2 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:347.48,348.16 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:351.2,352.10 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:348.16,350.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:356.32,357.16 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:360.2,361.10 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:357.16,359.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:365.29,366.16 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:369.2,370.10 2 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:366.16,368.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:374.29,375.16 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:378.2,379.10 2 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:375.16,377.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:383.29,387.2 3 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:390.31,394.16 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:399.2,427.12 27 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:394.16,397.3 2 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:432.50,436.26 2 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:440.2,440.16 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:444.2,445.46 2 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:448.2,448.57 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:451.2,451.59 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:454.2,454.59 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:457.2,457.59 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:460.2,460.59 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:463.2,463.59 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:466.2,466.59 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:469.2,469.59 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:472.2,472.59 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:475.2,475.60 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:478.2,478.60 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:481.2,494.29 13 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:436.26,438.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:440.16,442.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:445.46,447.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:448.57,450.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:451.59,453.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:454.59,456.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:457.59,459.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:460.59,462.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:463.59,465.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:466.59,468.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:469.59,471.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:472.59,474.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:475.60,477.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/bn256.go:478.60,480.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/constants.go:11.39,14.2 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:23.38,29.2 5 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:31.41,36.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:39.39,41.20 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:45.2,51.19 6 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:41.20,43.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:54.36,59.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:61.40,63.2 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:65.44,66.20 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:70.2,70.20 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:80.2,117.22 23 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:121.2,149.21 19 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:66.20,69.3 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:70.20,73.3 2 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:117.22,120.3 2 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:152.44,183.2 24 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:185.58,198.45 10 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:206.2,206.12 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:198.45,200.26 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:200.26,202.4 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:202.9,204.4 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:209.35,210.23 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:219.2,230.18 9 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:210.23,212.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:212.8,212.30 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:212.30,217.3 4 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/curve.go:233.41,238.2 4 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:10.33,11.12 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:18.2,19.12 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:11.12,13.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:13.8,16.3 2 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:22.31,24.2 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:26.27,31.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:33.30,40.34 5 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:49.2,50.12 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:40.34,41.39 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:41.39,42.32 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:45.4,45.31 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:42.32,44.5 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:53.35,54.31 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:54.31,55.32 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:55.32,57.4 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:61.42,63.31 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:70.2,70.26 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:78.2,78.55 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:63.31,65.32 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:65.32,67.4 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:70.26,71.19 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:74.3,74.19 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:71.19,73.4 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:74.19,76.4 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:81.28,81.48 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp.go:82.28,82.53 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:17.33,19.2 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:21.38,25.2 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:27.34,31.2 3 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:33.33,37.2 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:39.31,41.2 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:43.30,45.2 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:47.44,51.2 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:53.38,57.2 3 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:60.44,65.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:68.46,73.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:75.46,80.2 4 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:82.41,86.2 3 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:88.41,92.2 3 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:94.41,105.2 8 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:107.53,111.2 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:113.54,117.43 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:126.2,127.10 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:117.43,119.24 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:119.24,121.4 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:121.9,123.4 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:130.41,144.2 10 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp12.go:146.41,160.2 9 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:13.33,18.2 4 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:20.32,22.2 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:24.35,28.2 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:30.32,34.2 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:36.31,40.2 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:42.30,45.2 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:47.29,50.2 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:52.41,56.2 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:58.35,62.2 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:64.38,68.2 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:70.38,74.2 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:78.38,92.2 11 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:94.49,98.2 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:101.37,122.2 15 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:124.38,138.2 9 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp2.go:140.38,156.2 10 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:3.99,50.2 29 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:52.89,92.2 26 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:94.41,112.2 14 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:122.50,141.45 13 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:178.2,206.12 19 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:141.45,143.31 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:147.3,150.28 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:159.3,160.11 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:143.31,145.4 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:151.10,152.60 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:153.11,154.59 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:155.11,156.12 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:212.44,261.2 36 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:263.54,267.38 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:270.2,270.12 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/optate.go:267.38,269.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:33.38,37.2 3 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:39.41,44.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:47.39,49.20 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:53.2,57.16 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:60.2,62.24 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:49.20,51.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:57.16,59.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:65.36,70.2 4 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:72.40,74.2 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:76.44,79.20 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:83.2,83.20 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:89.2,109.22 16 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:113.2,132.16 16 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:79.20,82.3 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:83.20,86.3 2 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:109.22,112.3 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:135.44,162.2 21 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:164.58,167.40 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:176.2,176.12 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:167.40,169.25 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:169.25,171.4 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:171.9,173.4 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:179.35,180.17 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:189.2,196.14 8 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:180.17,182.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:182.8,182.25 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:182.25,187.3 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/twist.go:199.41,204.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:13.32,15.2 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:17.35,22.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:24.32,29.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:31.31,36.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:38.30,40.2 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:42.29,44.2 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:46.35,51.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:53.41,61.2 6 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:64.43,71.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:73.43,78.2 4 0 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:80.38,85.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:87.38,92.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:94.38,122.2 20 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:124.50,129.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:131.46,136.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:139.38,147.2 6 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:149.38,169.2 15 1 -github.com/ethereum/go-ethereum/crypto/bn256/cloudflare/gfp6.go:171.38,213.2 22 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:62.54,64.2 1 0 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:67.57,74.2 1 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:83.56,87.2 3 0 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:90.53,93.2 2 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:97.106,99.16 2 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:102.2,107.19 6 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:110.2,111.8 2 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:99.16,101.3 1 0 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:107.19,109.3 1 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:116.45,118.2 1 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:121.97,122.38 1 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:125.2,125.44 1 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:129.2,130.14 2 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:134.2,137.16 4 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:122.38,124.3 1 0 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:125.44,127.3 1 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:130.14,132.3 1 0 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:146.64,149.54 3 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:157.2,157.18 1 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:149.54,156.3 6 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:161.39,163.2 1 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:166.75,174.2 7 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:178.71,184.2 5 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:187.77,191.2 3 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:194.92,196.16 2 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:200.2,201.16 2 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:204.2,209.8 5 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:196.16,198.3 1 0 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:201.16,203.3 1 0 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:214.76,216.16 2 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:220.2,224.8 4 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:216.16,218.3 1 0 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:232.87,234.16 2 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:238.2,239.16 2 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:243.2,244.16 2 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:248.2,252.47 4 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:256.2,263.16 7 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:234.16,236.3 1 0 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:239.16,241.3 1 0 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:244.16,246.3 1 0 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:252.47,254.3 1 0 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:267.72,268.17 1 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:271.2,272.16 2 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:276.2,285.14 3 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:295.2,301.16 6 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:305.2,306.16 2 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:309.2,312.50 3 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:316.2,316.47 1 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:268.17,270.3 1 0 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:272.16,274.3 1 0 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:286.15,288.33 2 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:291.10,292.34 1 1 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:288.33,290.4 1 0 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:301.16,303.3 1 0 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:306.16,308.3 1 0 -github.com/ethereum/go-ethereum/crypto/ecies/ecies.go:312.50,314.3 1 1 -github.com/ethereum/go-ethereum/crypto/ecies/params.go:123.67,125.2 1 0 -github.com/ethereum/go-ethereum/crypto/ecies/params.go:129.66,131.2 1 1 -github.com/ethereum/go-ethereum/crypto/ecies/params.go:133.57,135.19 2 1 -github.com/ethereum/go-ethereum/crypto/ecies/params.go:140.2,140.31 1 1 -github.com/ethereum/go-ethereum/crypto/ecies/params.go:143.2,143.20 1 1 -github.com/ethereum/go-ethereum/crypto/ecies/params.go:135.19,136.57 1 0 -github.com/ethereum/go-ethereum/crypto/ecies/params.go:136.57,138.4 1 0 -github.com/ethereum/go-ethereum/crypto/ecies/params.go:140.31,142.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:42.39,45.15 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:48.2,51.25 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:58.2,58.11 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:45.15,47.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:51.25,57.3 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:61.38,63.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:65.48,66.19 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:69.2,70.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:73.2,73.32 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:66.19,68.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:70.16,72.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:76.32,84.2 7 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:86.30,89.25 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:100.2,100.12 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:89.25,99.3 9 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:103.30,105.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:107.35,108.26 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:111.2,111.17 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:108.26,110.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:114.26,122.2 7 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:124.25,126.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:128.46,130.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:133.2,133.27 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:130.16,132.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:136.30,138.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:140.28,143.2 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:145.29,148.2 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:150.29,152.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:154.28,156.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:158.32,159.26 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:166.2,166.10 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:159.26,160.21 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:160.21,162.4 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:162.9,162.28 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:162.28,164.4 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:169.35,171.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:173.26,177.2 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:179.30,186.2 6 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:188.29,197.2 8 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:199.27,203.2 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:205.26,209.2 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:211.33,215.2 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:217.47,219.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:222.2,223.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:226.2,226.28 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:219.16,221.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:223.16,225.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:229.28,231.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:233.29,235.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:237.35,239.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:241.27,243.20 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:247.2,248.20 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:243.20,246.3 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:251.27,256.2 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:258.26,263.2 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:265.33,270.2 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:272.47,274.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:277.2,278.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:281.2,282.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:285.2,285.33 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:274.16,276.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:278.16,280.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:282.16,284.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:288.28,290.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:292.29,294.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:296.35,298.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:300.29,304.2 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:306.28,310.2 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:312.36,316.2 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:318.49,320.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:323.2,324.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:327.2,327.29 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:320.16,322.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:324.16,326.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:330.29,332.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:334.30,336.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/field_element.go:338.37,340.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:32.27,34.30 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:37.2,37.19 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:34.30,36.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:40.20,43.2 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:45.50,46.19 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:49.2,50.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:53.2,54.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:57.2,57.28 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:46.19,48.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:50.16,52.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:54.16,56.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:60.38,65.2 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:67.26,69.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:71.27,73.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:75.26,77.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:79.33,82.2 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:84.36,87.2 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:89.34,92.2 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:94.33,97.2 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:99.36,102.2 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:104.34,107.2 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:109.33,112.2 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:114.36,117.2 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:119.30,122.2 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:124.33,134.2 9 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:136.36,146.2 9 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:148.33,155.2 6 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:157.36,164.2 6 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:166.42,171.2 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:173.33,181.2 7 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:183.34,192.2 8 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:194.41,197.2 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:199.42,201.39 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:207.2,207.10 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:201.39,203.20 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:203.20,205.4 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:210.51,212.18 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:216.2,216.17 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:212.18,215.3 2 0 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:219.54,220.18 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:220.18,223.3 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:226.36,233.31 7 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:238.2,242.23 5 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:233.31,237.3 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp2.go:245.50,252.2 5 1 -github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:21.33,24.25 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:27.2,36.8 10 1 -github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:39.2,52.8 14 1 -github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:59.2,61.26 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:64.2,64.13 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:24.25,26.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:36.8,38.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:52.8,55.3 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:55.8,58.3 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:61.26,63.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:69.44,70.14 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:73.2,75.25 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:78.2,86.8 9 1 -github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:89.2,102.8 14 1 -github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:109.2,111.26 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:114.2,114.13 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:70.14,72.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:75.25,77.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:86.8,88.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:102.8,105.3 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:105.8,108.3 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/swu.go:111.26,113.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:35.29,38.31 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:41.2,41.31 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:44.2,44.34 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:38.31,40.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:41.31,43.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:47.30,49.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:52.2,52.22 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:49.16,51.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:55.27,57.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:59.52,60.20 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:63.2,65.16 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:68.2,69.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:72.2,72.29 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:60.20,62.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:65.16,67.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:69.16,71.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:75.40,81.2 5 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:83.28,85.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:87.29,89.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:91.28,93.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:95.35,100.2 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:102.35,106.2 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:108.35,113.2 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:115.32,119.2 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:121.38,125.2 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:127.35,138.2 10 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:140.45,164.2 23 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:166.35,178.2 11 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:180.38,192.2 11 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:194.47,204.2 9 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:206.36,216.2 9 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:218.57,229.2 10 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:231.44,233.39 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:239.2,239.10 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:233.39,235.20 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:235.20,237.4 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:242.54,244.39 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:250.2,250.10 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:244.39,246.20 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:246.20,248.4 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:253.53,257.15 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:258.9,259.9 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:260.9,261.24 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:262.10,263.62 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:267.56,271.15 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:272.9,273.9 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:274.9,275.24 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/fp12.go:276.10,277.62 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:33.27,35.30 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:38.2,38.19 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:35.30,37.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:41.26,43.14 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:46.2,46.19 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:43.14,45.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:49.49,50.18 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:53.2,55.16 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:58.2,59.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:62.2,63.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:66.2,66.33 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:50.18,52.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:55.16,57.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:59.16,61.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:63.16,65.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:69.38,76.2 6 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:78.26,80.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:82.27,84.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:86.26,88.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:90.33,95.2 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:97.36,102.2 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:104.33,109.2 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:111.36,116.2 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:118.33,123.2 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:125.36,130.2 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:132.30,137.2 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:139.33,165.2 25 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:167.36,193.2 25 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:195.33,214.2 18 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:216.50,234.2 17 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:236.47,254.2 17 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:256.42,262.2 5 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:264.42,270.2 5 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:272.49,277.2 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:279.42,281.39 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:287.2,287.10 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:281.39,283.20 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:283.20,285.4 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:290.34,313.2 22 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:315.51,320.19 5 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:321.9,322.9 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:323.9,326.24 3 0 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:327.10,329.53 2 0 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:333.54,339.19 6 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:340.9,341.9 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:342.9,346.24 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp6.go:347.10,349.52 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:32.27,34.2 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:37.22,40.2 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:43.26,45.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:48.31,50.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:53.18,56.2 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:59.27,61.2 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:65.47,67.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:70.2,70.19 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:73.2,73.15 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:67.16,69.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:70.19,72.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:77.35,79.2 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:82.33,86.2 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:89.23,91.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:94.30,96.2 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:99.30,101.2 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:104.30,106.2 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:109.30,111.2 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:114.39,116.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/gt.go:119.31,121.2 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/isogeny.go:20.29,29.35 8 1 -github.com/ethereum/go-ethereum/crypto/bls12381/isogeny.go:39.2,45.13 7 1 -github.com/ethereum/go-ethereum/crypto/bls12381/isogeny.go:29.35,38.3 8 1 -github.com/ethereum/go-ethereum/crypto/bls12381/isogeny.go:49.38,50.14 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/isogeny.go:54.2,60.35 7 1 -github.com/ethereum/go-ethereum/crypto/bls12381/isogeny.go:70.2,76.13 7 1 -github.com/ethereum/go-ethereum/crypto/bls12381/isogeny.go:50.14,52.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/isogeny.go:60.35,69.3 8 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:24.40,26.19 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:29.2,30.19 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:33.2,34.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:26.19,28.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:30.19,32.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:37.40,39.19 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:42.2,43.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:39.19,41.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:46.41,48.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:51.2,51.19 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:54.2,55.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:48.16,50.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:51.19,53.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:58.28,62.2 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:64.28,68.2 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:70.33,74.2 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:76.23,78.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:80.25,82.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:84.32,86.35 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:92.2,92.10 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:86.35,88.20 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:88.20,90.4 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:95.26,96.16 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:100.2,108.27 8 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:133.2,133.12 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:138.2,138.28 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:143.2,143.36 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:146.2,150.29 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:153.2,153.12 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:96.16,99.3 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:108.27,109.17 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:113.3,113.17 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:130.3,130.9 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:109.17,111.9 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:113.17,116.4 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:116.9,116.24 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:116.24,119.4 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:119.9,119.27 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:119.27,124.4 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:124.9,129.4 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:133.12,136.3 2 0 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:138.28,141.3 2 0 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:143.36,145.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:150.29,152.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:156.26,161.2 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/fp.go:163.43,167.2 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:31.45,36.2 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:39.35,45.2 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:58.18,60.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:62.24,63.14 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:66.2,67.18 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:63.14,65.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:70.25,72.25 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:75.2,75.18 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:72.25,74.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:79.27,81.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:83.62,85.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:88.2,89.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:92.2,93.37 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:85.16,87.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:89.16,91.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:101.53,102.20 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:105.2,106.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:109.2,110.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:114.2,114.32 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:117.2,119.21 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:122.2,122.15 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:102.20,104.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:106.16,108.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:110.16,112.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:114.32,116.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:119.21,121.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:126.55,127.20 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:130.2,132.16 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:135.2,136.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:139.2,140.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:143.2,144.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:147.2,151.32 5 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:127.20,129.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:132.16,134.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:136.16,138.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:140.16,142.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:144.16,146.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:157.41,159.17 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:162.2,165.12 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:159.17,161.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:169.45,180.2 7 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:183.29,185.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:188.30,190.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:193.29,196.2 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:199.38,201.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:204.42,205.18 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:208.2,208.18 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:211.2,220.45 10 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:205.18,207.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:208.18,210.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:224.49,228.2 3 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:231.41,232.17 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:235.2,244.25 10 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:232.17,234.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:248.40,250.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:253.42,254.17 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:257.2,257.20 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:266.2,266.10 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:254.17,256.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:257.20,265.3 7 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:270.47,272.18 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:275.2,275.18 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:278.2,287.22 10 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:293.2,314.10 22 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:272.18,274.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:275.18,277.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:287.22,288.23 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:291.3,291.18 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:288.23,290.4 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:318.45,320.17 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:323.2,346.10 24 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:320.17,322.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:350.42,355.2 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:358.45,363.2 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:366.60,370.25 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:376.2,376.17 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:370.25,371.20 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:374.3,374.17 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:371.20,373.4 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:380.40,382.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:388.91,389.32 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:392.2,393.23 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:396.2,400.34 5 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:403.2,406.21 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:430.2,431.41 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:437.2,437.24 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:389.32,391.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:393.23,395.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:400.34,402.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:406.21,409.36 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:412.3,412.36 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:420.3,421.41 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:425.3,428.11 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:409.36,411.4 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:412.36,415.18 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:418.4,418.52 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:415.18,417.5 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:421.41,424.4 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:431.41,432.34 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:435.3,435.30 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:432.34,434.4 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:444.54,447.16 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:450.2,455.25 6 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g2.go:447.16,449.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:24.45,26.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:39.33,52.2 6 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:59.40,61.26 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:64.2,65.35 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:61.26,63.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:69.60,71.18 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:75.2,75.10 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:71.18,74.3 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:79.63,83.2 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:86.34,89.2 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:91.38,93.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:95.33,98.2 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:100.58,132.2 30 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:134.61,163.2 27 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:165.73,167.29 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:170.2,172.39 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:167.29,169.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:172.39,174.20 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:179.3,179.6 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:174.20,178.4 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:183.38,186.34 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:189.2,193.48 5 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:212.2,212.22 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:186.34,188.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:193.48,194.14 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:197.3,197.38 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:202.3,202.20 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:210.3,210.6 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:194.14,196.4 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:197.38,201.4 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:202.20,204.39 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:204.39,208.5 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:215.34,219.2 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:221.36,255.2 31 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:257.36,259.23 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:262.2,264.10 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:259.23,261.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:268.31,270.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:273.30,277.2 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/pairing.go:280.27,282.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:43.23,55.361 8 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:55.361,63.3 7 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:66.26,78.361 8 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:78.361,86.3 7 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:89.24,97.2 7 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:99.27,107.2 7 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:109.23,121.361 8 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:121.361,129.3 7 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:132.26,144.361 8 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:144.361,152.3 7 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:155.24,164.2 7 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:166.23,174.12 8 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:174.12,182.3 7 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:185.26,193.12 8 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:193.12,201.3 7 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:204.27,212.2 7 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:214.24,215.16 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:219.2,225.57 7 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:215.16,218.3 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:228.23,231.2 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:336.2,336.361 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:231.2,247.3 14 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:248.2,264.3 14 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:265.2,281.3 14 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:282.2,298.3 14 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:299.2,315.3 14 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:316.2,332.3 14 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:336.361,344.3 7 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:347.23,352.2 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:440.2,440.361 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:352.2,368.3 14 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:369.2,384.3 13 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:385.2,399.3 12 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:400.2,413.3 11 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:414.2,425.3 9 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:426.2,436.3 8 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:440.361,448.3 7 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:468.58,475.2 6 0 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:478.40,484.2 5 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:487.51,493.2 5 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:496.54,504.2 7 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:507.60,520.2 10 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:522.57,532.2 8 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:534.58,546.2 9 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:548.55,557.2 7 1 -github.com/ethereum/go-ethereum/crypto/bls12381/arithmetic_fallback.go:559.57,567.2 7 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:30.45,35.2 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:38.35,43.2 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:55.18,58.2 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:60.25,62.25 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:65.2,65.18 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:62.25,64.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:69.27,71.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:73.62,75.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:78.2,79.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:82.2,83.37 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:75.16,77.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:79.16,81.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:91.53,92.19 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:95.2,96.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:99.2,100.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:104.2,104.32 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:107.2,109.21 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:112.2,112.15 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:92.19,94.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:96.16,98.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:100.16,102.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:104.32,106.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:109.21,111.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:116.55,117.20 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:120.2,123.16 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:127.2,128.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:131.2,133.32 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:117.20,119.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:123.16,125.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:128.16,130.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:139.41,141.17 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:144.2,147.12 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:141.17,143.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:151.45,159.2 5 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:162.29,164.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:167.30,169.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:172.29,175.2 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:178.38,180.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:183.42,184.18 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:187.2,187.18 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:190.2,199.45 10 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:184.18,186.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:187.18,189.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:203.49,207.2 3 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:210.41,211.17 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:214.2,223.25 10 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:211.17,213.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:227.40,229.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:232.42,233.17 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:236.2,236.20 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:245.2,245.10 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:233.17,235.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:236.20,244.3 7 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:249.47,251.18 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:254.2,254.18 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:257.2,266.22 10 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:272.2,293.10 22 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:251.18,253.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:254.18,256.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:266.22,267.23 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:270.3,270.18 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:267.23,269.4 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:297.45,299.17 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:302.2,325.10 24 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:299.17,301.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:329.42,334.2 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:337.45,342.2 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:345.60,349.25 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:355.2,355.17 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:349.25,350.20 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:353.3,353.17 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:350.20,352.4 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:359.40,361.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:367.91,368.32 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:371.2,372.23 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:375.2,379.34 5 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:382.2,385.21 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:409.2,410.41 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:416.2,416.24 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:368.32,370.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:372.23,374.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:379.34,381.3 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:385.21,388.36 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:391.3,391.36 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:399.3,400.41 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:404.3,407.11 4 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:388.36,390.4 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:391.36,394.18 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:397.4,397.52 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:394.18,396.5 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:400.41,403.4 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:410.41,411.34 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:414.3,414.30 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:411.34,413.4 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:423.54,425.16 2 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:428.2,433.25 6 1 -github.com/ethereum/go-ethereum/crypto/bls12381/g1.go:425.16,427.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/utils.go:26.38,28.2 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/utils.go:32.52,33.19 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/utils.go:37.2,37.26 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/utils.go:42.2,44.17 3 1 -github.com/ethereum/go-ethereum/crypto/bls12381/utils.go:33.19,35.3 1 0 -github.com/ethereum/go-ethereum/crypto/bls12381/utils.go:37.26,38.26 1 1 -github.com/ethereum/go-ethereum/crypto/bls12381/utils.go:38.26,40.4 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:43.46,50.2 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:52.38,54.2 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:56.40,61.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:63.41,68.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:71.39,80.42 8 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:83.2,85.24 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:80.42,82.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:88.36,90.2 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:92.40,94.2 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:96.58,99.20 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:103.2,103.20 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:109.2,129.22 16 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:133.2,167.14 30 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:99.20,102.3 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:103.20,106.3 2 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:129.22,132.3 2 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:170.58,206.2 29 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:208.84,213.40 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:222.2,225.10 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:213.40,215.25 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:215.25,217.4 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:217.9,219.4 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:230.59,231.17 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:234.2,234.20 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:241.2,254.10 12 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:231.17,233.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:234.20,240.3 5 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/twist.go:257.60,263.2 5 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:41.51,45.6 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:55.2,55.42 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:45.6,47.17 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:50.3,50.19 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:47.17,49.4 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:50.19,51.9 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:58.30,60.2 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:63.69,65.2 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:69.45,70.16 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:73.2,74.10 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:70.16,72.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:78.48,79.16 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:82.2,83.10 2 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:79.16,81.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:88.32,89.16 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:92.2,93.10 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:89.16,91.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:97.29,98.16 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:101.2,102.10 2 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:98.16,100.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:106.31,110.22 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:114.2,123.12 7 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:110.22,112.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:128.50,131.26 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:135.2,135.16 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:138.2,139.23 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:142.2,143.23 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:147.2,147.44 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:160.2,160.28 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:131.26,133.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:135.16,137.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:139.23,141.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:143.23,145.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:147.44,152.3 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:152.8,156.23 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:156.23,158.4 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:170.51,174.6 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:184.2,184.42 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:174.6,176.17 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:179.3,179.19 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:176.17,178.4 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:179.19,180.9 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:187.30,189.2 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:193.57,195.2 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:199.45,200.16 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:203.2,204.10 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:200.16,202.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:208.48,209.16 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:212.2,213.10 2 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:209.16,211.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:218.32,219.16 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:222.2,223.10 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:219.16,221.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:227.31,231.22 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:235.2,248.12 11 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:231.22,233.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:253.50,256.26 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:260.2,260.16 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:263.2,264.25 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:267.2,268.25 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:271.2,272.25 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:275.2,276.25 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:280.2,283.23 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:296.2,296.28 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:256.26,258.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:260.16,262.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:264.25,266.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:268.25,270.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:272.25,274.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:276.25,278.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:283.23,288.3 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:288.8,292.23 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:292.23,294.4 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:305.30,307.2 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:310.48,311.16 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:314.2,315.10 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:311.16,313.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:319.32,320.16 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:323.2,324.10 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:320.16,322.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:328.29,329.16 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:332.2,333.10 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:329.16,331.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:337.31,371.2 28 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:375.46,379.27 2 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:383.2,383.16 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:387.2,400.16 13 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:379.27,381.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:383.16,385.3 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:404.31,406.2 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:409.42,415.30 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:421.2,424.20 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:415.30,416.49 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:419.3,419.51 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:416.49,417.12 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:434.36,435.17 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:439.2,441.12 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:445.2,447.11 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:435.17,437.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:441.12,443.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:450.38,451.17 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:454.2,455.14 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:451.17,453.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/bn256.go:458.33,460.2 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/constants.go:11.39,14.2 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:28.46,35.2 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:37.38,40.2 2 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:42.40,47.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:49.41,54.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:57.39,63.37 6 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:66.2,66.23 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:63.37,65.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:69.36,71.2 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:73.40,75.2 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:77.58,78.20 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:82.2,82.20 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:92.2,131.22 26 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:135.2,180.14 36 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:78.20,81.3 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:82.20,85.3 2 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:131.22,134.3 2 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:183.58,226.2 36 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:228.84,233.40 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:242.2,245.10 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:233.40,235.25 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:235.25,237.4 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:237.9,239.4 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:250.59,251.59 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:254.2,254.20 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:261.2,278.10 16 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:251.59,253.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:254.20,260.3 5 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/curve.go:281.46,286.2 4 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:21.36,23.2 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:25.33,27.2 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:29.35,32.2 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:34.38,38.2 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:40.34,44.2 3 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:46.33,50.2 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:52.27,55.2 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:57.31,60.2 2 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:62.30,65.2 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:67.44,71.2 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:73.43,77.2 3 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:80.58,85.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:88.60,93.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:95.41,99.2 3 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:101.41,105.2 3 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:107.55,125.2 15 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:127.67,131.2 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:133.68,138.43 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:147.2,152.10 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:138.43,140.24 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:140.24,142.4 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:142.9,144.4 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:155.55,178.2 17 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp12.go:180.55,200.2 13 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:21.34,23.2 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:25.32,29.2 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:31.34,34.2 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:36.35,40.2 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:42.32,46.2 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:48.31,52.2 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:54.26,55.39 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:58.2,58.39 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:55.39,57.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:58.39,60.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:63.30,65.2 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:67.29,68.21 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:71.2,72.41 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:68.21,70.3 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:75.41,79.2 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:81.40,85.2 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:87.38,91.2 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:93.38,97.2 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:99.38,103.2 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:105.65,110.43 4 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:119.2,124.10 4 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:110.43,112.24 2 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:112.24,114.4 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:114.9,116.4 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:129.52,146.2 13 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:148.53,152.2 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:155.51,172.2 11 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:174.52,193.2 12 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:195.52,219.2 16 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:221.32,223.2 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp2.go:225.32,227.2 1 0 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:21.34,23.2 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:25.32,27.2 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:29.34,33.2 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:35.35,40.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:42.32,47.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:49.31,54.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:56.26,60.2 3 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:62.30,64.2 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:66.29,68.2 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:70.40,75.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:77.55,85.2 6 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:88.43,95.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:97.38,102.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:104.38,109.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:111.38,116.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:118.52,172.2 43 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:174.64,179.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:181.50,186.2 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:189.46,199.2 9 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:201.52,239.2 31 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/gfp6.go:241.52,296.2 33 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:7.113,83.2 56 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:85.103,152.2 51 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:154.55,182.2 23 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:192.64,213.45 15 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:258.2,302.12 34 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:213.45,215.31 2 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:219.3,226.28 7 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:235.3,240.11 6 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:215.31,217.4 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:227.10,228.66 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:229.11,230.65 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:231.11,232.12 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:308.58,386.2 64 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:388.68,393.38 4 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:396.2,396.12 1 1 -github.com/ethereum/go-ethereum/crypto/bn256/google/optate.go:393.38,395.3 1 1 -github.com/ethereum/go-ethereum/crypto/signify/signify.go:38.98,40.16 2 1 -github.com/ethereum/go-ethereum/crypto/signify/signify.go:43.2,43.25 1 1 -github.com/ethereum/go-ethereum/crypto/signify/signify.go:46.2,46.33 1 1 -github.com/ethereum/go-ethereum/crypto/signify/signify.go:49.2,49.55 1 1 -github.com/ethereum/go-ethereum/crypto/signify/signify.go:40.16,42.3 1 0 -github.com/ethereum/go-ethereum/crypto/signify/signify.go:43.25,45.3 1 0 -github.com/ethereum/go-ethereum/crypto/signify/signify.go:46.33,48.3 1 0 -github.com/ethereum/go-ethereum/crypto/signify/signify.go:56.110,58.52 1 1 -github.com/ethereum/go-ethereum/crypto/signify/signify.go:61.2,61.50 1 1 -github.com/ethereum/go-ethereum/crypto/signify/signify.go:64.2,64.28 1 1 -github.com/ethereum/go-ethereum/crypto/signify/signify.go:67.2,67.26 1 1 -github.com/ethereum/go-ethereum/crypto/signify/signify.go:71.2,72.16 2 1 -github.com/ethereum/go-ethereum/crypto/signify/signify.go:75.2,76.16 2 1 -github.com/ethereum/go-ethereum/crypto/signify/signify.go:81.2,99.52 15 1 -github.com/ethereum/go-ethereum/crypto/signify/signify.go:58.52,60.3 1 0 -github.com/ethereum/go-ethereum/crypto/signify/signify.go:61.50,63.3 1 1 -github.com/ethereum/go-ethereum/crypto/signify/signify.go:64.28,66.3 1 1 -github.com/ethereum/go-ethereum/crypto/signify/signify.go:67.26,69.3 1 1 -github.com/ethereum/go-ethereum/crypto/signify/signify.go:72.16,74.3 1 0 -github.com/ethereum/go-ethereum/crypto/signify/signify.go:76.16,78.3 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/queue.go:53.38,57.2 1 1 -github.com/ethereum/go-ethereum/eth/catalyst/queue.go:60.80,69.2 4 0 -github.com/ethereum/go-ethereum/eth/catalyst/queue.go:72.74,76.34 3 0 -github.com/ethereum/go-ethereum/eth/catalyst/queue.go:84.2,84.12 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/queue.go:76.34,77.18 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/queue.go:80.3,80.20 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/queue.go:77.18,79.4 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/queue.go:80.20,82.4 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/queue.go:103.36,107.2 1 1 -github.com/ethereum/go-ethereum/eth/catalyst/queue.go:110.65,119.2 4 0 -github.com/ethereum/go-ethereum/eth/catalyst/queue.go:122.59,126.33 3 0 -github.com/ethereum/go-ethereum/eth/catalyst/queue.go:134.2,134.12 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/queue.go:126.33,127.18 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/queue.go:130.3,130.24 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/queue.go:127.18,129.4 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/queue.go:130.24,132.4 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:39.62,58.2 3 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:68.55,69.62 1 1 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:72.2,76.3 1 1 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:69.62,70.59 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:89.161,91.45 2 1 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:98.2,99.18 2 1 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:124.2,124.63 1 1 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:140.2,140.91 1 1 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:150.2,154.50 2 1 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:169.2,169.45 1 1 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:183.2,183.30 1 1 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:198.2,198.46 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:91.45,94.3 2 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:99.18,105.20 2 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:112.3,112.55 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:116.3,117.85 2 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:120.3,120.36 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:105.20,108.4 2 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:112.55,115.4 2 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:117.85,119.4 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:124.63,130.57 2 1 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:134.3,134.69 1 1 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:130.57,133.4 2 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:134.69,137.4 2 1 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:140.91,142.66 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:142.66,144.4 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:145.8,149.3 1 1 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:154.50,155.57 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:159.3,160.24 2 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:155.57,157.4 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:160.24,163.4 2 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:163.9,163.109 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:163.109,166.4 2 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:169.45,171.23 2 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:175.3,175.96 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:171.23,174.4 2 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:175.96,178.4 2 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:183.30,188.17 4 1 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:192.3,196.47 4 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:188.17,191.4 2 1 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:203.98,209.2 2 1 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:213.144,214.43 1 1 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:217.2,218.58 2 1 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:223.2,223.49 1 1 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:233.2,233.93 1 1 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:214.43,216.3 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:218.58,221.3 2 1 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:223.49,224.122 1 1 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:231.3,231.56 1 1 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:224.122,230.4 1 1 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:237.101,240.17 3 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:243.2,243.18 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:240.17,242.3 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:247.103,250.16 3 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:256.2,256.82 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:267.2,268.19 2 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:289.2,293.21 2 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:297.2,297.35 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:301.2,301.85 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:306.2,307.78 2 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:314.2,314.54 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:318.2,319.82 2 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:250.16,253.3 2 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:256.82,260.3 3 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:268.19,276.95 2 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:284.3,285.62 2 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:276.95,279.4 2 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:293.21,296.3 2 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:297.35,300.3 2 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:301.85,305.3 3 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:307.78,310.3 2 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:314.54,317.3 2 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:323.103,333.2 8 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:336.68,340.2 3 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:344.134,347.16 3 1 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:350.2,350.49 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:347.16,349.3 1 1 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:354.75,355.25 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:358.2,358.12 1 0 -github.com/ethereum/go-ethereum/eth/catalyst/api.go:355.25,357.3 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:50.44,52.34 2 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:52.34,53.43 1 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:53.43,57.4 3 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:82.58,91.2 1 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:94.57,106.2 7 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:111.86,112.19 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:116.2,124.8 8 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:112.19,114.3 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:128.77,131.38 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:134.2,134.38 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:137.2,138.40 2 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:141.2,141.80 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:131.38,133.3 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:134.38,136.3 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:138.40,140.3 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:146.103,158.20 10 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:161.2,172.20 11 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:175.2,196.21 19 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:199.2,200.21 2 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:203.2,206.19 3 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:158.20,160.3 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:172.20,174.3 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:196.21,198.3 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:200.21,202.3 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:210.72,213.2 2 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:217.91,247.2 21 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:251.73,253.2 1 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:257.57,264.2 6 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:268.66,270.30 2 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:273.2,273.18 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:276.2,278.8 3 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:270.30,272.3 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:273.18,275.3 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:283.13,293.2 6 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:296.23,298.2 1 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/panic_cb.go:17.64,18.47 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/panic_cb.go:22.62,23.45 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/scalar_mult_cgo.go:24.91,27.22 1 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/scalar_mult_cgo.go:31.2,47.23 12 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/scalar_mult_cgo.go:50.2,50.24 1 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/scalar_mult_cgo.go:53.2,53.14 1 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/scalar_mult_cgo.go:56.2,56.13 1 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/scalar_mult_cgo.go:27.22,28.43 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/scalar_mult_cgo.go:47.23,49.3 1 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/scalar_mult_cgo.go:50.24,52.3 1 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/scalar_mult_cgo.go:53.14,55.3 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:47.13,52.2 3 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:70.54,71.20 1 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:74.2,74.23 1 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:77.2,78.60 2 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:82.2,87.103 2 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:91.2,98.17 4 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:71.20,73.3 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:74.23,76.3 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:78.60,80.3 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:87.103,89.3 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:105.60,106.20 1 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:109.2,109.44 1 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:113.2,118.107 2 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:121.2,121.20 1 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:106.20,108.3 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:109.44,111.3 1 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:118.107,120.3 1 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:126.58,127.64 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:130.2,133.101 4 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:127.64,129.3 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:138.54,139.23 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:142.2,149.91 2 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:152.2,152.74 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:139.23,141.3 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:149.91,151.3 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:156.43,165.91 2 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:168.2,168.12 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:165.91,166.30 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:171.39,172.20 1 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:175.2,175.18 1 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:178.2,178.12 1 1 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:172.20,174.3 1 0 -github.com/ethereum/go-ethereum/crypto/secp256k1/secp256.go:175.18,177.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:21.44,27.2 1 0 -github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:36.192,43.37 1 1 -github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:49.2,54.16 4 1 -github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:58.2,58.23 1 1 -github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:62.2,66.86 3 1 -github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:70.2,70.37 1 1 -github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:43.37,46.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:54.16,56.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:58.23,60.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:66.86,68.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:73.83,80.37 4 1 -github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:80.37,82.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:87.67,92.2 3 0 -github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:95.46,101.2 4 0 -github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:104.75,105.46 1 1 -github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:105.46,110.3 3 1 -github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:114.48,115.32 1 1 -github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:115.32,120.3 3 1 -github.com/ethereum/go-ethereum/eth/downloader/whitelist/service.go:124.32,126.2 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:75.37,75.54 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:76.42,78.2 1 0 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:79.47,81.2 1 0 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:86.74,88.71 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:91.2,91.65 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:96.2,97.27 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:101.2,101.82 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:106.2,107.39 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:115.2,116.45 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:120.2,125.32 4 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:88.71,90.3 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:91.65,93.3 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:93.8,95.3 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:97.27,100.3 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:101.82,104.3 2 0 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:107.39,109.36 1 0 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:112.3,112.9 1 0 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:109.36,111.4 1 0 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:116.45,119.3 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:125.32,127.81 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:131.3,131.48 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:127.81,130.4 2 0 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:140.154,147.41 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:160.2,160.25 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:168.2,168.40 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:174.2,174.43 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:177.2,177.70 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:147.41,148.100 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:148.100,151.4 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:151.9,155.19 3 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:155.19,157.5 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:160.25,162.97 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:162.97,164.4 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:164.9,166.4 1 0 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:168.40,170.3 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:170.8,170.57 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:170.57,172.3 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:174.43,176.3 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:193.188,194.16 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:197.2,198.33 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:201.2,201.28 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:205.2,205.38 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:213.2,219.31 3 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:222.2,229.38 4 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:232.2,232.54 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:279.2,285.29 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:300.2,300.23 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:303.2,303.33 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:308.2,309.80 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:194.16,196.3 1 0 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:198.33,200.3 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:201.28,204.3 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:205.38,206.23 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:209.3,209.42 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:206.23,208.4 1 0 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:209.42,211.4 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:219.31,221.3 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:229.38,231.3 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:232.54,233.13 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:233.13,234.8 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:234.8,237.32 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:241.5,242.71 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:237.32,239.6 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:242.71,247.6 4 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:247.11,253.56 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:253.56,256.7 2 0 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:256.12,257.38 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:266.7,266.48 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:273.7,273.22 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:257.38,259.48 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:259.48,262.9 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:263.13,265.8 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:266.48,268.27 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:268.27,270.9 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:285.29,287.22 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:290.3,291.34 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:287.22,289.4 1 0 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:291.34,293.4 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:293.9,295.24 1 0 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:295.24,297.5 1 0 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:300.23,302.3 1 0 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:303.33,305.3 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/feehistory.go:305.8,307.3 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:80.62,82.16 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:86.2,87.17 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:94.2,95.46 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:99.2,100.52 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:106.2,107.26 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:111.2,112.25 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:117.2,129.3 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:82.16,85.3 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:87.17,90.3 2 0 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:90.8,90.26 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:90.26,93.3 2 0 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:95.46,98.3 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:100.52,103.3 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:103.8,103.36 1 0 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:103.36,105.3 1 0 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:107.26,110.3 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:112.25,115.3 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:132.38,135.12 3 0 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:135.12,137.29 2 0 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:137.29,138.41 1 0 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:141.4,141.30 1 0 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:138.41,140.5 1 0 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:152.76,160.26 6 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:163.2,170.26 6 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:173.2,180.46 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:186.2,186.14 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:211.2,212.22 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:216.2,216.36 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:219.2,224.37 5 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:160.26,162.3 1 0 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:170.26,172.3 1 0 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:180.46,185.3 4 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:186.14,188.21 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:192.3,197.27 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:203.3,203.86 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:209.3,209.43 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:188.21,191.4 2 0 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:197.27,199.4 1 0 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:203.86,208.4 4 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:212.22,215.3 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:216.36,218.3 1 0 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:237.70,242.2 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:244.30,244.51 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:245.35,247.2 1 0 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:248.40,254.2 3 0 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:260.171,262.18 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:270.2,276.32 6 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:289.2,289.9 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:262.18,263.10 1 0 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:267.3,267.9 1 0 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:264.36,264.36 0 0 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:265.15,265.15 0 0 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:276.32,278.55 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:281.3,282.47 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:278.55,279.12 1 0 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:282.47,284.28 2 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:284.28,285.10 1 0 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:290.38,290.38 0 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:291.14,291.14 0 0 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:297.42,297.59 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:298.42,298.71 1 1 -github.com/ethereum/go-ethereum/eth/gasprice/gasprice.go:299.42,299.69 1 1 -github.com/ethereum/go-ethereum/console/bridge.go:45.93,51.2 1 1 -github.com/ethereum/go-ethereum/console/bridge.go:53.45,55.17 2 0 -github.com/ethereum/go-ethereum/console/bridge.go:58.2,58.26 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:55.17,56.50 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:64.65,70.9 2 0 -github.com/ethereum/go-ethereum/console/bridge.go:89.2,90.15 2 0 -github.com/ethereum/go-ethereum/console/bridge.go:93.2,94.16 2 0 -github.com/ethereum/go-ethereum/console/bridge.go:97.2,97.17 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:72.32,73.76 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:76.3,76.82 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:79.3,79.26 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:83.70,84.50 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:85.10,86.60 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:73.76,75.4 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:76.82,78.4 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:79.26,81.4 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:90.15,92.3 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:94.16,96.3 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:102.65,104.64 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:107.2,110.73 3 0 -github.com/ethereum/go-ethereum/console/bridge.go:116.2,117.15 2 0 -github.com/ethereum/go-ethereum/console/bridge.go:120.2,121.16 2 0 -github.com/ethereum/go-ethereum/console/bridge.go:126.2,126.9 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:190.2,190.17 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:104.64,106.3 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:110.73,112.3 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:112.8,114.3 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:117.15,119.3 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:121.16,123.3 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:127.76,129.17 2 0 -github.com/ethereum/go-ethereum/console/bridge.go:132.3,133.17 2 0 -github.com/ethereum/go-ethereum/console/bridge.go:137.81,140.17 2 0 -github.com/ethereum/go-ethereum/console/bridge.go:143.3,144.69 2 0 -github.com/ethereum/go-ethereum/console/bridge.go:158.76,162.17 3 0 -github.com/ethereum/go-ethereum/console/bridge.go:165.3,167.17 3 0 -github.com/ethereum/go-ethereum/console/bridge.go:170.3,172.86 2 0 -github.com/ethereum/go-ethereum/console/bridge.go:176.69,179.17 2 0 -github.com/ethereum/go-ethereum/console/bridge.go:182.3,182.85 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:186.10,188.18 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:129.17,131.4 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:133.17,135.4 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:140.17,142.4 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:144.69,145.70 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:149.4,150.18 2 0 -github.com/ethereum/go-ethereum/console/bridge.go:153.4,153.86 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:145.70,147.5 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:150.18,152.5 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:153.86,155.5 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:162.17,164.4 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:167.17,169.4 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:172.86,174.4 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:179.17,181.4 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:182.85,184.4 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:193.84,196.16 3 0 -github.com/ethereum/go-ethereum/console/bridge.go:199.2,200.15 2 0 -github.com/ethereum/go-ethereum/console/bridge.go:203.2,203.64 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:196.16,198.3 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:200.15,202.3 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:206.77,217.16 9 0 -github.com/ethereum/go-ethereum/console/bridge.go:220.2,221.15 2 0 -github.com/ethereum/go-ethereum/console/bridge.go:224.2,224.64 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:217.16,219.3 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:221.15,223.3 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:231.68,232.29 1 1 -github.com/ethereum/go-ethereum/console/bridge.go:236.2,238.104 2 1 -github.com/ethereum/go-ethereum/console/bridge.go:243.2,244.73 2 0 -github.com/ethereum/go-ethereum/console/bridge.go:259.2,260.75 2 0 -github.com/ethereum/go-ethereum/console/bridge.go:268.2,269.15 2 0 -github.com/ethereum/go-ethereum/console/bridge.go:272.2,272.62 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:232.29,234.3 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:238.104,240.3 1 1 -github.com/ethereum/go-ethereum/console/bridge.go:244.73,247.17 3 0 -github.com/ethereum/go-ethereum/console/bridge.go:250.3,250.34 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:247.17,249.4 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:251.8,252.61 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:255.3,255.28 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:252.61,254.4 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:260.75,261.34 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:264.3,264.30 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:261.34,263.4 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:269.15,271.3 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:278.59,279.45 1 1 -github.com/ethereum/go-ethereum/console/bridge.go:282.2,288.80 2 0 -github.com/ethereum/go-ethereum/console/bridge.go:291.2,291.80 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:296.2,296.53 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:308.2,309.15 2 0 -github.com/ethereum/go-ethereum/console/bridge.go:312.2,312.52 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:279.45,281.3 1 1 -github.com/ethereum/go-ethereum/console/bridge.go:288.80,290.3 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:291.80,293.3 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:296.53,299.17 3 0 -github.com/ethereum/go-ethereum/console/bridge.go:302.3,302.34 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:299.17,301.4 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:303.8,303.57 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:303.57,305.3 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:309.15,311.3 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:316.60,317.45 1 1 -github.com/ethereum/go-ethereum/console/bridge.go:320.2,321.80 2 1 -github.com/ethereum/go-ethereum/console/bridge.go:324.2,326.35 3 0 -github.com/ethereum/go-ethereum/console/bridge.go:317.45,319.3 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:321.80,323.3 1 1 -github.com/ethereum/go-ethereum/console/bridge.go:331.66,338.16 3 0 -github.com/ethereum/go-ethereum/console/bridge.go:341.2,341.16 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:347.2,347.16 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:355.2,357.70 3 0 -github.com/ethereum/go-ethereum/console/bridge.go:360.2,360.34 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:374.2,374.35 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:338.16,340.3 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:341.16,342.105 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:345.3,345.40 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:342.105,344.4 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:347.16,348.105 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:351.3,351.39 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:348.105,350.4 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:357.70,359.3 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:360.34,362.67 2 0 -github.com/ethereum/go-ethereum/console/bridge.go:365.3,365.27 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:369.3,369.18 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:372.3,372.26 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:362.67,364.4 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:365.27,368.4 2 0 -github.com/ethereum/go-ethereum/console/bridge.go:369.18,370.9 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:384.59,387.16 2 1 -github.com/ethereum/go-ethereum/console/bridge.go:391.2,398.22 3 1 -github.com/ethereum/go-ethereum/console/bridge.go:408.2,409.27 2 1 -github.com/ethereum/go-ethereum/console/bridge.go:448.2,449.11 2 1 -github.com/ethereum/go-ethereum/console/bridge.go:454.2,454.65 1 1 -github.com/ethereum/go-ethereum/console/bridge.go:458.2,458.20 1 1 -github.com/ethereum/go-ethereum/console/bridge.go:387.16,389.3 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:398.22,401.3 2 0 -github.com/ethereum/go-ethereum/console/bridge.go:401.8,405.3 3 1 -github.com/ethereum/go-ethereum/console/bridge.go:409.27,415.74 5 1 -github.com/ethereum/go-ethereum/console/bridge.go:444.3,444.30 1 1 -github.com/ethereum/go-ethereum/console/bridge.go:415.74,416.21 1 1 -github.com/ethereum/go-ethereum/console/bridge.go:416.21,420.5 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:420.10,423.18 3 1 -github.com/ethereum/go-ethereum/console/bridge.go:426.5,427.19 2 1 -github.com/ethereum/go-ethereum/console/bridge.go:423.18,425.6 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:427.19,429.6 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:429.11,431.6 1 1 -github.com/ethereum/go-ethereum/console/bridge.go:433.9,436.38 3 0 -github.com/ethereum/go-ethereum/console/bridge.go:439.4,439.42 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:442.4,442.43 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:436.38,438.5 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:439.42,441.5 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:449.11,451.3 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:451.8,453.3 1 1 -github.com/ethereum/go-ethereum/console/bridge.go:454.65,457.3 2 0 -github.com/ethereum/go-ethereum/console/bridge.go:461.74,465.17 4 0 -github.com/ethereum/go-ethereum/console/bridge.go:468.2,468.24 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:465.17,467.3 1 0 -github.com/ethereum/go-ethereum/console/bridge.go:472.34,475.2 2 0 -github.com/ethereum/go-ethereum/console/bridge.go:477.60,479.14 2 1 -github.com/ethereum/go-ethereum/console/bridge.go:482.2,482.23 1 1 -github.com/ethereum/go-ethereum/console/bridge.go:479.14,481.3 1 0 -github.com/ethereum/go-ethereum/console/console.go:90.43,92.28 1 1 -github.com/ethereum/go-ethereum/console/console.go:95.2,95.25 1 1 -github.com/ethereum/go-ethereum/console/console.go:98.2,98.27 1 1 -github.com/ethereum/go-ethereum/console/console.go:103.2,115.58 2 1 -github.com/ethereum/go-ethereum/console/console.go:118.2,118.53 1 1 -github.com/ethereum/go-ethereum/console/console.go:122.2,125.21 3 1 -github.com/ethereum/go-ethereum/console/console.go:92.28,94.3 1 0 -github.com/ethereum/go-ethereum/console/console.go:95.25,97.3 1 1 -github.com/ethereum/go-ethereum/console/console.go:98.27,100.3 1 0 -github.com/ethereum/go-ethereum/console/console.go:115.58,117.3 1 0 -github.com/ethereum/go-ethereum/console/console.go:118.53,120.3 1 0 -github.com/ethereum/go-ethereum/console/console.go:130.48,135.43 3 1 -github.com/ethereum/go-ethereum/console/console.go:138.2,138.43 1 1 -github.com/ethereum/go-ethereum/console/console.go:143.2,143.35 1 1 -github.com/ethereum/go-ethereum/console/console.go:149.2,149.31 1 1 -github.com/ethereum/go-ethereum/console/console.go:160.2,160.23 1 1 -github.com/ethereum/go-ethereum/console/console.go:169.2,169.12 1 1 -github.com/ethereum/go-ethereum/console/console.go:135.43,137.3 1 0 -github.com/ethereum/go-ethereum/console/console.go:138.43,140.3 1 0 -github.com/ethereum/go-ethereum/console/console.go:143.35,146.3 2 1 -github.com/ethereum/go-ethereum/console/console.go:149.31,150.43 1 1 -github.com/ethereum/go-ethereum/console/console.go:150.43,152.48 2 0 -github.com/ethereum/go-ethereum/console/console.go:155.4,155.46 1 0 -github.com/ethereum/go-ethereum/console/console.go:152.48,154.5 1 0 -github.com/ethereum/go-ethereum/console/console.go:160.23,161.62 1 1 -github.com/ethereum/go-ethereum/console/console.go:167.3,167.51 1 1 -github.com/ethereum/go-ethereum/console/console.go:161.62,163.4 1 1 -github.com/ethereum/go-ethereum/console/console.go:163.9,166.4 2 0 -github.com/ethereum/go-ethereum/console/console.go:172.39,173.35 1 1 -github.com/ethereum/go-ethereum/console/console.go:173.35,178.3 4 1 -github.com/ethereum/go-ethereum/console/console.go:181.50,184.61 3 1 -github.com/ethereum/go-ethereum/console/console.go:187.2,187.58 1 1 -github.com/ethereum/go-ethereum/console/console.go:190.2,190.69 1 1 -github.com/ethereum/go-ethereum/console/console.go:193.2,194.35 2 1 -github.com/ethereum/go-ethereum/console/console.go:201.2,201.12 1 1 -github.com/ethereum/go-ethereum/console/console.go:184.61,186.3 1 0 -github.com/ethereum/go-ethereum/console/console.go:187.58,189.3 1 0 -github.com/ethereum/go-ethereum/console/console.go:190.69,192.3 1 0 -github.com/ethereum/go-ethereum/console/console.go:194.35,200.3 5 1 -github.com/ethereum/go-ethereum/console/console.go:205.42,208.16 2 1 -github.com/ethereum/go-ethereum/console/console.go:211.2,212.24 2 1 -github.com/ethereum/go-ethereum/console/console.go:225.2,225.35 1 1 -github.com/ethereum/go-ethereum/console/console.go:233.2,233.12 1 1 -github.com/ethereum/go-ethereum/console/console.go:208.16,210.3 1 0 -github.com/ethereum/go-ethereum/console/console.go:212.24,213.20 1 1 -github.com/ethereum/go-ethereum/console/console.go:216.3,217.43 2 1 -github.com/ethereum/go-ethereum/console/console.go:213.20,214.12 1 1 -github.com/ethereum/go-ethereum/console/console.go:217.43,218.57 1 1 -github.com/ethereum/go-ethereum/console/console.go:218.57,220.5 1 0 -github.com/ethereum/go-ethereum/console/console.go:225.35,227.29 2 1 -github.com/ethereum/go-ethereum/console/console.go:227.29,228.37 1 1 -github.com/ethereum/go-ethereum/console/console.go:228.37,230.5 1 1 -github.com/ethereum/go-ethereum/console/console.go:237.63,238.51 1 1 -github.com/ethereum/go-ethereum/console/console.go:238.51,242.3 3 1 -github.com/ethereum/go-ethereum/console/console.go:251.66,253.42 2 1 -github.com/ethereum/go-ethereum/console/console.go:256.2,265.58 10 1 -github.com/ethereum/go-ethereum/console/console.go:253.42,255.3 1 0 -github.com/ethereum/go-ethereum/console/console.go:268.34,271.46 3 0 -github.com/ethereum/go-ethereum/console/console.go:271.46,273.3 1 0 -github.com/ethereum/go-ethereum/console/console.go:273.8,275.3 1 0 -github.com/ethereum/go-ethereum/console/console.go:280.68,282.42 2 0 -github.com/ethereum/go-ethereum/console/console.go:285.2,286.20 2 0 -github.com/ethereum/go-ethereum/console/console.go:282.42,284.3 1 0 -github.com/ethereum/go-ethereum/console/console.go:291.86,293.32 1 0 -github.com/ethereum/go-ethereum/console/console.go:298.2,299.27 2 0 -github.com/ethereum/go-ethereum/console/console.go:313.2,313.75 1 0 -github.com/ethereum/go-ethereum/console/console.go:293.32,295.3 1 0 -github.com/ethereum/go-ethereum/console/console.go:299.27,301.117 1 0 -github.com/ethereum/go-ethereum/console/console.go:305.3,305.50 1 0 -github.com/ethereum/go-ethereum/console/console.go:310.3,311.8 2 0 -github.com/ethereum/go-ethereum/console/console.go:301.117,302.12 1 0 -github.com/ethereum/go-ethereum/console/console.go:305.50,307.12 2 0 -github.com/ethereum/go-ethereum/console/console.go:318.29,332.17 2 1 -github.com/ethereum/go-ethereum/console/console.go:336.2,336.58 1 1 -github.com/ethereum/go-ethereum/console/console.go:344.2,345.34 2 1 -github.com/ethereum/go-ethereum/console/console.go:332.17,334.3 1 1 -github.com/ethereum/go-ethereum/console/console.go:336.58,338.34 2 1 -github.com/ethereum/go-ethereum/console/console.go:341.3,342.62 2 1 -github.com/ethereum/go-ethereum/console/console.go:338.34,340.4 1 1 -github.com/ethereum/go-ethereum/console/console.go:350.46,351.15 1 1 -github.com/ethereum/go-ethereum/console/console.go:356.2,359.25 2 1 -github.com/ethereum/go-ethereum/console/console.go:351.15,352.31 1 1 -github.com/ethereum/go-ethereum/console/console.go:352.31,354.4 1 0 -github.com/ethereum/go-ethereum/console/console.go:364.38,377.6 5 1 -github.com/ethereum/go-ethereum/console/console.go:377.6,378.10 1 1 -github.com/ethereum/go-ethereum/console/console.go:379.14,381.47 2 0 -github.com/ethereum/go-ethereum/console/console.go:382.30,384.47 2 0 -github.com/ethereum/go-ethereum/console/console.go:385.20,386.10 1 1 -github.com/ethereum/go-ethereum/console/console.go:391.39,392.9 1 0 -github.com/ethereum/go-ethereum/console/console.go:393.38,393.38 0 0 -github.com/ethereum/go-ethereum/console/console.go:394.10,394.10 0 0 -github.com/ethereum/go-ethereum/console/console.go:398.41,399.9 1 1 -github.com/ethereum/go-ethereum/console/console.go:400.26,400.26 0 0 -github.com/ethereum/go-ethereum/console/console.go:401.10,401.10 0 1 -github.com/ethereum/go-ethereum/console/console.go:406.37,407.9 1 0 -github.com/ethereum/go-ethereum/console/console.go:408.41,408.41 0 0 -github.com/ethereum/go-ethereum/console/console.go:409.19,409.19 0 0 -github.com/ethereum/go-ethereum/console/console.go:415.33,425.15 2 1 -github.com/ethereum/go-ethereum/console/console.go:430.2,433.6 3 1 -github.com/ethereum/go-ethereum/console/console.go:425.15,427.3 1 1 -github.com/ethereum/go-ethereum/console/console.go:433.6,437.10 2 1 -github.com/ethereum/go-ethereum/console/console.go:438.31,440.10 2 0 -github.com/ethereum/go-ethereum/console/console.go:442.27,447.10 2 0 -github.com/ethereum/go-ethereum/console/console.go:449.26,450.37 1 1 -github.com/ethereum/go-ethereum/console/console.go:456.4,456.10 1 1 -github.com/ethereum/go-ethereum/console/console.go:458.28,460.46 1 1 -github.com/ethereum/go-ethereum/console/console.go:463.4,463.40 1 1 -github.com/ethereum/go-ethereum/console/console.go:467.4,469.20 3 1 -github.com/ethereum/go-ethereum/console/console.go:475.4,475.20 1 1 -github.com/ethereum/go-ethereum/console/console.go:450.37,454.13 2 0 -github.com/ethereum/go-ethereum/console/console.go:460.46,462.5 1 0 -github.com/ethereum/go-ethereum/console/console.go:463.40,464.13 1 0 -github.com/ethereum/go-ethereum/console/console.go:469.20,471.5 1 1 -github.com/ethereum/go-ethereum/console/console.go:471.10,473.5 1 0 -github.com/ethereum/go-ethereum/console/console.go:475.20,476.80 1 1 -github.com/ethereum/go-ethereum/console/console.go:484.5,485.15 2 1 -github.com/ethereum/go-ethereum/console/console.go:476.80,477.108 1 1 -github.com/ethereum/go-ethereum/console/console.go:477.108,479.28 2 1 -github.com/ethereum/go-ethereum/console/console.go:479.28,481.8 1 1 -github.com/ethereum/go-ethereum/console/console.go:492.91,493.24 1 1 -github.com/ethereum/go-ethereum/console/console.go:493.24,495.17 2 1 -github.com/ethereum/go-ethereum/console/console.go:495.17,497.4 1 1 -github.com/ethereum/go-ethereum/console/console.go:497.9,499.4 1 1 -github.com/ethereum/go-ethereum/console/console.go:505.37,513.26 2 1 -github.com/ethereum/go-ethereum/console/console.go:543.2,543.16 1 1 -github.com/ethereum/go-ethereum/console/console.go:513.26,514.12 1 1 -github.com/ethereum/go-ethereum/console/console.go:515.13,517.32 1 1 -github.com/ethereum/go-ethereum/console/console.go:520.18,521.52 1 1 -github.com/ethereum/go-ethereum/console/console.go:527.4,527.23 1 1 -github.com/ethereum/go-ethereum/console/console.go:528.17,529.17 1 1 -github.com/ethereum/go-ethereum/console/console.go:532.4,532.23 1 1 -github.com/ethereum/go-ethereum/console/console.go:533.17,534.17 1 1 -github.com/ethereum/go-ethereum/console/console.go:537.4,537.23 1 1 -github.com/ethereum/go-ethereum/console/console.go:538.11,539.23 1 1 -github.com/ethereum/go-ethereum/console/console.go:517.32,519.5 1 1 -github.com/ethereum/go-ethereum/console/console.go:521.52,523.5 1 1 -github.com/ethereum/go-ethereum/console/console.go:523.10,523.40 1 1 -github.com/ethereum/go-ethereum/console/console.go:523.40,526.5 2 1 -github.com/ethereum/go-ethereum/console/console.go:529.17,531.5 1 1 -github.com/ethereum/go-ethereum/console/console.go:534.17,536.5 1 1 -github.com/ethereum/go-ethereum/console/console.go:547.46,549.2 1 1 -github.com/ethereum/go-ethereum/console/console.go:552.45,553.23 1 1 -github.com/ethereum/go-ethereum/console/console.go:559.2,560.12 2 1 -github.com/ethereum/go-ethereum/console/console.go:553.23,557.3 2 1 -github.com/ethereum/go-ethereum/console/console.go:563.40,564.98 1 1 -github.com/ethereum/go-ethereum/console/console.go:567.2,567.35 1 0 -github.com/ethereum/go-ethereum/console/console.go:564.98,566.3 1 1 -github.com/ethereum/go-ethereum/eth/backend.go:110.73,112.45 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:115.2,115.32 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:118.2,118.81 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:122.2,122.51 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:131.2,139.16 5 0 -github.com/ethereum/go-ethereum/eth/backend.go:142.2,143.79 2 0 -github.com/ethereum/go-ethereum/eth/backend.go:146.2,148.127 2 0 -github.com/ethereum/go-ethereum/eth/backend.go:151.2,172.40 4 0 -github.com/ethereum/go-ethereum/eth/backend.go:175.2,176.30 2 0 -github.com/ethereum/go-ethereum/eth/backend.go:179.2,188.22 6 0 -github.com/ethereum/go-ethereum/eth/backend.go:191.2,193.32 2 0 -github.com/ethereum/go-ethereum/eth/backend.go:203.2,220.16 3 0 -github.com/ethereum/go-ethereum/eth/backend.go:223.2,230.62 3 0 -github.com/ethereum/go-ethereum/eth/backend.go:235.2,237.33 2 0 -github.com/ethereum/go-ethereum/eth/backend.go:240.2,245.23 4 0 -github.com/ethereum/go-ethereum/eth/backend.go:248.2,260.17 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:264.2,270.16 5 0 -github.com/ethereum/go-ethereum/eth/backend.go:273.2,274.16 2 0 -github.com/ethereum/go-ethereum/eth/backend.go:279.2,289.17 6 0 -github.com/ethereum/go-ethereum/eth/backend.go:112.45,114.3 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:115.32,117.3 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:118.81,121.3 2 0 -github.com/ethereum/go-ethereum/eth/backend.go:122.51,123.31 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:129.3,129.28 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:123.31,126.4 2 0 -github.com/ethereum/go-ethereum/eth/backend.go:126.9,128.4 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:139.16,141.3 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:143.79,145.3 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:148.127,150.3 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:172.40,174.3 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:176.30,178.3 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:188.22,190.3 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:193.32,194.62 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:194.62,196.4 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:196.9,196.69 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:196.69,197.24 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:200.4,200.63 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:197.24,199.5 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:220.16,222.3 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:230.62,234.3 3 0 -github.com/ethereum/go-ethereum/eth/backend.go:237.33,239.3 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:245.23,247.3 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:260.17,262.3 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:270.16,272.3 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:274.16,276.3 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:292.41,293.21 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:302.2,302.54 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:306.2,306.14 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:293.21,301.3 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:302.54,305.3 2 0 -github.com/ethereum/go-ethereum/eth/backend.go:311.37,371.2 5 0 -github.com/ethereum/go-ethereum/eth/backend.go:373.59,375.2 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:377.63,382.37 4 0 -github.com/ethereum/go-ethereum/eth/backend.go:385.2,385.63 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:397.2,397.79 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:382.37,384.3 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:385.63,386.59 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:386.59,395.4 6 0 -github.com/ethereum/go-ethereum/eth/backend.go:405.60,407.16 2 0 -github.com/ethereum/go-ethereum/eth/backend.go:412.2,415.25 4 0 -github.com/ethereum/go-ethereum/eth/backend.go:420.2,420.49 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:425.2,425.14 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:407.16,410.3 2 0 -github.com/ethereum/go-ethereum/eth/backend.go:415.25,417.3 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:420.49,421.24 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:421.24,423.4 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:431.62,448.44 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:451.2,451.31 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:448.44,450.3 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:455.59,461.2 4 0 -github.com/ethereum/go-ethereum/eth/backend.go:466.51,471.39 2 0 -github.com/ethereum/go-ethereum/eth/backend.go:479.2,479.19 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:522.2,522.12 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:471.39,473.19 2 0 -github.com/ethereum/go-ethereum/eth/backend.go:476.3,476.25 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:473.19,475.4 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:479.19,488.17 6 0 -github.com/ethereum/go-ethereum/eth/backend.go:492.3,493.45 2 0 -github.com/ethereum/go-ethereum/eth/backend.go:500.3,500.17 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:508.3,508.41 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:518.3,520.23 2 0 -github.com/ethereum/go-ethereum/eth/backend.go:488.17,491.4 2 0 -github.com/ethereum/go-ethereum/eth/backend.go:493.45,495.4 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:495.9,495.53 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:495.53,496.54 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:496.54,498.5 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:500.17,502.35 2 0 -github.com/ethereum/go-ethereum/eth/backend.go:506.4,506.38 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:502.35,505.5 2 0 -github.com/ethereum/go-ethereum/eth/backend.go:508.41,510.35 2 0 -github.com/ethereum/go-ethereum/eth/backend.go:514.4,514.38 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:510.35,513.5 2 0 -github.com/ethereum/go-ethereum/eth/backend.go:527.33,532.39 2 0 -github.com/ethereum/go-ethereum/eth/backend.go:536.2,536.16 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:532.39,534.3 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:539.41,539.68 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:540.41,540.59 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:542.56,542.83 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:543.56,543.79 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:544.56,544.75 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:545.56,545.77 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:546.56,546.75 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:547.56,547.76 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:548.56,548.71 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:549.56,549.87 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:550.56,550.111 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:551.56,551.103 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:552.56,552.85 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:553.56,553.81 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:554.56,554.75 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:555.51,558.2 2 0 -github.com/ethereum/go-ethereum/eth/backend.go:562.47,564.32 2 0 -github.com/ethereum/go-ethereum/eth/backend.go:567.2,567.15 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:564.32,566.3 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:572.34,583.28 5 0 -github.com/ethereum/go-ethereum/eth/backend.go:591.2,595.12 3 0 -github.com/ethereum/go-ethereum/eth/backend.go:583.28,584.50 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:587.3,587.34 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:584.50,586.4 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:600.54,603.16 2 0 -github.com/ethereum/go-ethereum/eth/backend.go:611.2,614.6 3 0 -github.com/ethereum/go-ethereum/eth/backend.go:603.16,604.91 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:608.3,608.69 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:604.91,606.4 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:614.6,615.10 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:616.19,618.18 2 0 -github.com/ethereum/go-ethereum/eth/backend.go:621.20,622.10 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:618.18,620.5 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:633.54,637.9 3 0 -github.com/ethereum/go-ethereum/eth/backend.go:641.2,641.25 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:645.2,646.16 2 0 -github.com/ethereum/go-ethereum/eth/backend.go:651.2,653.12 2 0 -github.com/ethereum/go-ethereum/eth/backend.go:637.9,639.3 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:641.25,643.3 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:646.16,648.3 1 0 -github.com/ethereum/go-ethereum/eth/backend.go:658.33,684.2 14 0 -github.com/ethereum/go-ethereum/eth/backend.go:691.63,693.2 1 0 -github.com/ethereum/go-ethereum/eth/bloombits.go:46.61,47.43 1 0 -github.com/ethereum/go-ethereum/eth/bloombits.go:47.43,48.13 1 0 -github.com/ethereum/go-ethereum/eth/bloombits.go:48.13,49.8 1 0 -github.com/ethereum/go-ethereum/eth/bloombits.go:49.8,50.12 1 0 -github.com/ethereum/go-ethereum/eth/bloombits.go:51.34,52.12 1 0 -github.com/ethereum/go-ethereum/eth/bloombits.go:54.41,57.44 3 0 -github.com/ethereum/go-ethereum/eth/bloombits.go:69.6,69.21 1 0 -github.com/ethereum/go-ethereum/eth/bloombits.go:57.44,59.99 2 0 -github.com/ethereum/go-ethereum/eth/bloombits.go:59.99,60.92 1 0 -github.com/ethereum/go-ethereum/eth/bloombits.go:60.92,62.9 1 0 -github.com/ethereum/go-ethereum/eth/bloombits.go:62.14,64.9 1 0 -github.com/ethereum/go-ethereum/eth/bloombits.go:65.13,67.8 1 0 -github.com/ethereum/go-ethereum/eth/peerset.go:62.28,68.2 1 1 -github.com/ethereum/go-ethereum/eth/peerset.go:73.65,76.62 1 1 -github.com/ethereum/go-ethereum/eth/peerset.go:80.2,84.31 4 1 -github.com/ethereum/go-ethereum/eth/peerset.go:87.2,87.34 1 1 -github.com/ethereum/go-ethereum/eth/peerset.go:91.2,91.37 1 1 -github.com/ethereum/go-ethereum/eth/peerset.go:96.2,97.12 2 1 -github.com/ethereum/go-ethereum/eth/peerset.go:76.62,78.3 1 0 -github.com/ethereum/go-ethereum/eth/peerset.go:84.31,86.3 1 0 -github.com/ethereum/go-ethereum/eth/peerset.go:87.34,89.3 1 0 -github.com/ethereum/go-ethereum/eth/peerset.go:91.37,95.3 3 1 -github.com/ethereum/go-ethereum/eth/peerset.go:102.74,104.64 1 1 -github.com/ethereum/go-ethereum/eth/peerset.go:108.2,111.31 3 1 -github.com/ethereum/go-ethereum/eth/peerset.go:115.2,115.34 1 1 -github.com/ethereum/go-ethereum/eth/peerset.go:120.2,120.37 1 1 -github.com/ethereum/go-ethereum/eth/peerset.go:127.2,131.20 4 1 -github.com/ethereum/go-ethereum/eth/peerset.go:104.64,106.3 1 1 -github.com/ethereum/go-ethereum/eth/peerset.go:111.31,114.3 2 0 -github.com/ethereum/go-ethereum/eth/peerset.go:115.34,118.3 2 0 -github.com/ethereum/go-ethereum/eth/peerset.go:120.37,125.3 3 1 -github.com/ethereum/go-ethereum/eth/peerset.go:136.71,141.15 3 1 -github.com/ethereum/go-ethereum/eth/peerset.go:144.2,145.31 2 1 -github.com/ethereum/go-ethereum/eth/peerset.go:148.2,151.16 2 1 -github.com/ethereum/go-ethereum/eth/peerset.go:155.2,156.12 2 1 -github.com/ethereum/go-ethereum/eth/peerset.go:141.15,143.3 1 0 -github.com/ethereum/go-ethereum/eth/peerset.go:145.31,147.3 1 0 -github.com/ethereum/go-ethereum/eth/peerset.go:151.16,154.3 2 1 -github.com/ethereum/go-ethereum/eth/peerset.go:161.52,166.9 4 1 -github.com/ethereum/go-ethereum/eth/peerset.go:169.2,170.25 2 1 -github.com/ethereum/go-ethereum/eth/peerset.go:173.2,173.12 1 1 -github.com/ethereum/go-ethereum/eth/peerset.go:166.9,168.3 1 0 -github.com/ethereum/go-ethereum/eth/peerset.go:170.25,172.3 1 1 -github.com/ethereum/go-ethereum/eth/peerset.go:177.45,182.2 3 1 -github.com/ethereum/go-ethereum/eth/peerset.go:186.67,191.29 4 1 -github.com/ethereum/go-ethereum/eth/peerset.go:196.2,196.13 1 1 -github.com/ethereum/go-ethereum/eth/peerset.go:191.29,192.26 1 1 -github.com/ethereum/go-ethereum/eth/peerset.go:192.26,194.4 1 1 -github.com/ethereum/go-ethereum/eth/peerset.go:201.73,206.29 4 1 -github.com/ethereum/go-ethereum/eth/peerset.go:211.2,211.13 1 1 -github.com/ethereum/go-ethereum/eth/peerset.go:206.29,207.32 1 1 -github.com/ethereum/go-ethereum/eth/peerset.go:207.32,209.4 1 1 -github.com/ethereum/go-ethereum/eth/peerset.go:217.30,222.2 3 1 -github.com/ethereum/go-ethereum/eth/peerset.go:225.34,230.2 3 1 -github.com/ethereum/go-ethereum/eth/peerset.go:234.50,242.29 4 1 -github.com/ethereum/go-ethereum/eth/peerset.go:247.2,247.17 1 1 -github.com/ethereum/go-ethereum/eth/peerset.go:242.29,243.63 1 1 -github.com/ethereum/go-ethereum/eth/peerset.go:243.63,245.4 1 1 -github.com/ethereum/go-ethereum/eth/peerset.go:251.28,255.29 3 1 -github.com/ethereum/go-ethereum/eth/peerset.go:258.2,258.18 1 1 -github.com/ethereum/go-ethereum/eth/peerset.go:255.29,257.3 1 1 -github.com/ethereum/go-ethereum/eth/peer.go:42.39,50.2 2 0 -github.com/ethereum/go-ethereum/eth/peer.go:64.41,68.2 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:48.160,56.15 2 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:62.2,62.17 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:118.2,123.35 2 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:154.2,154.12 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:158.2,158.21 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:56.15,58.17 2 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:58.17,60.4 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:62.17,63.17 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:73.3,74.77 2 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:63.17,67.73 2 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:67.73,70.5 2 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:75.8,86.17 3 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:93.3,93.39 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:108.3,108.17 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:86.17,88.18 2 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:88.18,90.5 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:93.39,94.32 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:97.4,98.21 2 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:101.4,104.18 3 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:94.32,96.5 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:98.21,100.5 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:104.18,105.10 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:108.17,109.22 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:110.32,111.88 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:112.12,113.20 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:123.35,125.51 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:130.3,131.70 2 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:134.3,135.17 2 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:139.3,140.17 2 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:144.3,145.17 2 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:148.3,149.32 2 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:152.3,152.16 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:125.51,128.4 2 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:131.70,133.4 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:135.17,137.4 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:140.17,143.4 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:145.17,147.4 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:149.32,151.4 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:154.12,157.3 2 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:162.144,164.28 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:168.2,169.19 2 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:174.2,175.16 2 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:178.2,178.52 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:182.2,183.44 2 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:201.2,201.122 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:164.28,166.3 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:169.19,171.3 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:175.16,177.3 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:178.52,180.3 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:183.44,188.21 4 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:192.3,194.94 3 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:199.3,199.65 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:188.21,190.4 1 0 -github.com/ethereum/go-ethereum/eth/state_accessor.go:194.94,196.4 1 0 -github.com/ethereum/go-ethereum/eth/bor_api_backend.go:17.113,19.63 2 0 -github.com/ethereum/go-ethereum/eth/bor_api_backend.go:25.2,25.16 1 0 -github.com/ethereum/go-ethereum/eth/bor_api_backend.go:29.2,30.16 2 0 -github.com/ethereum/go-ethereum/eth/bor_api_backend.go:33.2,33.18 1 0 -github.com/ethereum/go-ethereum/eth/bor_api_backend.go:19.63,20.30 1 0 -github.com/ethereum/go-ethereum/eth/bor_api_backend.go:20.30,22.4 1 0 -github.com/ethereum/go-ethereum/eth/bor_api_backend.go:25.16,27.3 1 0 -github.com/ethereum/go-ethereum/eth/bor_api_backend.go:30.16,32.3 1 0 -github.com/ethereum/go-ethereum/eth/bor_api_backend.go:37.107,39.20 2 0 -github.com/ethereum/go-ethereum/eth/bor_api_backend.go:43.2,43.21 1 0 -github.com/ethereum/go-ethereum/eth/bor_api_backend.go:39.20,41.3 1 0 -github.com/ethereum/go-ethereum/eth/bor_api_backend.go:47.102,49.20 2 0 -github.com/ethereum/go-ethereum/eth/bor_api_backend.go:52.2,52.26 1 0 -github.com/ethereum/go-ethereum/eth/bor_api_backend.go:49.20,51.3 1 0 -github.com/ethereum/go-ethereum/eth/bor_api_backend.go:56.144,59.2 2 0 -github.com/ethereum/go-ethereum/eth/bor_api_backend.go:61.182,64.2 2 0 -github.com/ethereum/go-ethereum/eth/bor_api_backend.go:67.99,69.2 1 0 -github.com/ethereum/go-ethereum/eth/bor_api_backend.go:72.101,74.2 1 0 -github.com/ethereum/go-ethereum/eth/discovery.go:36.35,38.2 1 0 -github.com/ethereum/go-ethereum/eth/discovery.go:41.63,45.12 3 0 -github.com/ethereum/go-ethereum/eth/discovery.go:45.12,47.7 2 0 -github.com/ethereum/go-ethereum/eth/discovery.go:47.7,48.11 1 0 -github.com/ethereum/go-ethereum/eth/discovery.go:49.19,50.34 1 0 -github.com/ethereum/go-ethereum/eth/discovery.go:51.21,54.11 1 0 -github.com/ethereum/go-ethereum/eth/discovery.go:60.50,63.2 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:135.58,137.28 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:140.2,153.40 2 1 -github.com/ethereum/go-ethereum/eth/handler.go:177.2,177.30 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:183.2,183.20 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:205.2,208.48 2 1 -github.com/ethereum/go-ethereum/eth/handler.go:226.2,226.28 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:229.2,229.53 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:292.2,294.59 2 1 -github.com/ethereum/go-ethereum/eth/handler.go:301.2,303.15 3 1 -github.com/ethereum/go-ethereum/eth/handler.go:137.28,139.3 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:153.40,163.62 2 1 -github.com/ethereum/go-ethereum/eth/handler.go:163.62,166.4 2 0 -github.com/ethereum/go-ethereum/eth/handler.go:167.8,168.45 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:168.45,171.4 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:171.9,174.4 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:177.30,180.3 2 0 -github.com/ethereum/go-ethereum/eth/handler.go:183.20,186.42 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:192.3,193.45 2 0 -github.com/ethereum/go-ethereum/eth/handler.go:186.42,189.4 2 0 -github.com/ethereum/go-ethereum/eth/handler.go:193.45,196.66 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:196.66,198.5 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:208.48,211.30 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:219.3,219.58 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:224.3,224.62 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:211.30,214.4 2 0 -github.com/ethereum/go-ethereum/eth/handler.go:219.58,220.34 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:220.34,222.5 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:226.28,228.3 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:229.53,232.30 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:250.3,250.62 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:259.3,259.42 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:263.3,263.28 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:286.3,287.17 2 0 -github.com/ethereum/go-ethereum/eth/handler.go:290.3,290.16 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:232.30,235.23 3 0 -github.com/ethereum/go-ethereum/eth/handler.go:241.4,242.64 2 0 -github.com/ethereum/go-ethereum/eth/handler.go:235.23,240.5 4 0 -github.com/ethereum/go-ethereum/eth/handler.go:250.62,253.4 2 0 -github.com/ethereum/go-ethereum/eth/handler.go:259.42,262.4 2 0 -github.com/ethereum/go-ethereum/eth/handler.go:263.28,270.33 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:284.4,284.17 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:270.33,272.19 2 0 -github.com/ethereum/go-ethereum/eth/handler.go:275.5,276.54 2 0 -github.com/ethereum/go-ethereum/eth/handler.go:280.5,280.68 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:272.19,274.6 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:276.54,279.6 2 0 -github.com/ethereum/go-ethereum/eth/handler.go:280.68,282.6 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:287.17,289.4 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:294.59,296.15 2 1 -github.com/ethereum/go-ethereum/eth/handler.go:299.3,299.30 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:296.15,298.4 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:308.73,312.16 2 1 -github.com/ethereum/go-ethereum/eth/handler.go:317.2,317.40 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:320.2,332.100 5 1 -github.com/ethereum/go-ethereum/eth/handler.go:336.2,337.41 2 1 -github.com/ethereum/go-ethereum/eth/handler.go:348.2,348.39 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:353.2,356.57 2 1 -github.com/ethereum/go-ethereum/eth/handler.go:360.2,363.14 3 1 -github.com/ethereum/go-ethereum/eth/handler.go:367.2,367.83 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:371.2,371.17 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:377.2,388.41 5 1 -github.com/ethereum/go-ethereum/eth/handler.go:435.2,435.43 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:472.2,472.22 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:312.16,315.3 2 0 -github.com/ethereum/go-ethereum/eth/handler.go:317.40,319.3 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:332.100,335.3 2 1 -github.com/ethereum/go-ethereum/eth/handler.go:337.41,338.18 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:338.18,342.69 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:342.69,344.5 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:348.39,349.44 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:349.44,351.4 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:356.57,359.3 2 0 -github.com/ethereum/go-ethereum/eth/handler.go:363.14,365.3 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:367.83,370.3 2 0 -github.com/ethereum/go-ethereum/eth/handler.go:371.17,372.64 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:372.64,375.4 2 0 -github.com/ethereum/go-ethereum/eth/handler.go:388.41,391.96 2 1 -github.com/ethereum/go-ethereum/eth/handler.go:395.3,395.13 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:391.96,393.4 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:395.13,399.11 3 1 -github.com/ethereum/go-ethereum/eth/handler.go:400.24,402.26 2 1 -github.com/ethereum/go-ethereum/eth/handler.go:415.5,415.25 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:419.5,419.46 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:423.5,423.20 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:425.21,427.28 2 1 -github.com/ethereum/go-ethereum/eth/handler.go:429.16,429.16 0 0 -github.com/ethereum/go-ethereum/eth/handler.go:402.26,406.45 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:411.6,412.12 2 1 -github.com/ethereum/go-ethereum/eth/handler.go:406.45,410.7 3 1 -github.com/ethereum/go-ethereum/eth/handler.go:415.25,418.6 2 0 -github.com/ethereum/go-ethereum/eth/handler.go:419.46,422.6 2 1 -github.com/ethereum/go-ethereum/eth/handler.go:435.43,437.84 2 0 -github.com/ethereum/go-ethereum/eth/handler.go:440.3,440.44 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:437.84,439.4 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:440.44,444.11 3 0 -github.com/ethereum/go-ethereum/eth/handler.go:445.24,447.26 2 0 -github.com/ethereum/go-ethereum/eth/handler.go:454.5,454.25 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:458.5,458.74 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:463.5,464.20 2 0 -github.com/ethereum/go-ethereum/eth/handler.go:465.21,467.28 2 0 -github.com/ethereum/go-ethereum/eth/handler.go:447.26,452.6 2 0 -github.com/ethereum/go-ethereum/eth/handler.go:454.25,457.6 2 0 -github.com/ethereum/go-ethereum/eth/handler.go:458.74,462.6 3 0 -github.com/ethereum/go-ethereum/eth/handler.go:479.81,483.60 3 1 -github.com/ethereum/go-ethereum/eth/handler.go:487.2,487.22 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:483.60,486.3 2 0 -github.com/ethereum/go-ethereum/eth/handler.go:491.41,493.17 2 1 -github.com/ethereum/go-ethereum/eth/handler.go:493.17,495.3 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:499.45,502.18 2 1 -github.com/ethereum/go-ethereum/eth/handler.go:509.2,510.17 2 1 -github.com/ethereum/go-ethereum/eth/handler.go:515.2,518.25 2 1 -github.com/ethereum/go-ethereum/eth/handler.go:521.2,524.51 3 1 -github.com/ethereum/go-ethereum/eth/handler.go:502.18,505.3 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:505.8,507.3 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:510.17,513.3 2 0 -github.com/ethereum/go-ethereum/eth/handler.go:518.25,520.3 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:524.51,526.3 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:529.39,546.2 10 1 -github.com/ethereum/go-ethereum/eth/handler.go:548.26,565.2 7 1 -github.com/ethereum/go-ethereum/eth/handler.go:569.70,572.29 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:576.2,576.57 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:581.2,585.15 3 1 -github.com/ethereum/go-ethereum/eth/handler.go:603.2,603.47 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:572.29,574.3 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:576.57,577.41 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:577.41,579.4 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:585.15,588.89 2 1 -github.com/ethereum/go-ethereum/eth/handler.go:595.3,596.33 2 1 -github.com/ethereum/go-ethereum/eth/handler.go:599.3,600.9 2 1 -github.com/ethereum/go-ethereum/eth/handler.go:588.89,590.4 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:590.9,593.4 2 0 -github.com/ethereum/go-ethereum/eth/handler.go:596.33,598.4 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:603.47,604.30 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:607.3,607.136 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:604.30,606.4 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:615.65,627.25 2 1 -github.com/ethereum/go-ethereum/eth/handler.go:639.2,639.34 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:644.2,644.34 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:649.2,651.57 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:627.25,631.42 3 1 -github.com/ethereum/go-ethereum/eth/handler.go:635.3,635.42 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:631.42,633.4 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:635.42,637.4 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:639.34,643.3 3 1 -github.com/ethereum/go-ethereum/eth/handler.go:644.34,648.3 3 1 -github.com/ethereum/go-ethereum/eth/handler.go:655.40,658.42 2 1 -github.com/ethereum/go-ethereum/eth/handler.go:658.42,659.55 1 0 -github.com/ethereum/go-ethereum/eth/handler.go:659.55,662.4 2 0 -github.com/ethereum/go-ethereum/eth/handler.go:667.37,669.6 2 1 -github.com/ethereum/go-ethereum/eth/handler.go:669.6,670.10 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:671.27,672.38 1 1 -github.com/ethereum/go-ethereum/eth/handler.go:673.25,674.10 1 1 -github.com/ethereum/go-ethereum/eth/handler_eth.go:36.47,36.65 1 1 -github.com/ethereum/go-ethereum/eth/handler_eth.go:37.47,37.66 1 1 -github.com/ethereum/go-ethereum/eth/handler_eth.go:40.70,42.2 1 0 -github.com/ethereum/go-ethereum/eth/handler_eth.go:45.56,46.46 1 0 -github.com/ethereum/go-ethereum/eth/handler_eth.go:49.2,49.12 1 0 -github.com/ethereum/go-ethereum/eth/handler_eth.go:46.46,48.3 1 0 -github.com/ethereum/go-ethereum/eth/handler_eth.go:54.39,56.2 1 1 -github.com/ethereum/go-ethereum/eth/handler_eth.go:60.70,62.33 1 1 -github.com/ethereum/go-ethereum/eth/handler_eth.go:63.33,65.55 2 0 -github.com/ethereum/go-ethereum/eth/handler_eth.go:67.27,68.63 1 0 -github.com/ethereum/go-ethereum/eth/handler_eth.go:70.45,71.48 1 1 -github.com/ethereum/go-ethereum/eth/handler_eth.go:73.31,74.56 1 1 -github.com/ethereum/go-ethereum/eth/handler_eth.go:76.37,77.55 1 1 -github.com/ethereum/go-ethereum/eth/handler_eth.go:79.10,80.62 1 0 -github.com/ethereum/go-ethereum/eth/handler_eth.go:86.105,90.29 1 0 -github.com/ethereum/go-ethereum/eth/handler_eth.go:96.2,100.35 2 0 -github.com/ethereum/go-ethereum/eth/handler_eth.go:106.2,106.42 1 0 -github.com/ethereum/go-ethereum/eth/handler_eth.go:109.2,109.12 1 0 -github.com/ethereum/go-ethereum/eth/handler_eth.go:90.29,94.3 1 0 -github.com/ethereum/go-ethereum/eth/handler_eth.go:100.35,101.47 1 0 -github.com/ethereum/go-ethereum/eth/handler_eth.go:101.47,104.4 2 0 -github.com/ethereum/go-ethereum/eth/handler_eth.go:106.42,108.3 1 0 -github.com/ethereum/go-ethereum/eth/handler_eth.go:114.98,118.29 1 0 -github.com/ethereum/go-ethereum/eth/handler_eth.go:124.2,133.46 3 0 -github.com/ethereum/go-ethereum/eth/handler_eth.go:137.2,137.12 1 0 -github.com/ethereum/go-ethereum/eth/handler_eth.go:118.29,122.3 1 0 -github.com/ethereum/go-ethereum/eth/handler_eth.go:133.46,136.3 2 0 -github.com/ethereum/go-ethereum/eth/handler_snap.go:29.48,29.66 1 1 -github.com/ethereum/go-ethereum/eth/handler_snap.go:32.73,34.2 1 0 -github.com/ethereum/go-ethereum/eth/handler_snap.go:37.57,38.46 1 0 -github.com/ethereum/go-ethereum/eth/handler_snap.go:43.2,43.12 1 0 -github.com/ethereum/go-ethereum/eth/handler_snap.go:38.46,39.23 1 0 -github.com/ethereum/go-ethereum/eth/handler_snap.go:39.23,41.4 1 0 -github.com/ethereum/go-ethereum/eth/handler_snap.go:48.73,50.2 1 1 -github.com/ethereum/go-ethereum/eth/api.go:51.59,53.2 1 0 -github.com/ethereum/go-ethereum/eth/api.go:56.67,58.2 1 0 -github.com/ethereum/go-ethereum/eth/api.go:61.66,63.2 1 0 -github.com/ethereum/go-ethereum/eth/api.go:66.57,68.2 1 0 -github.com/ethereum/go-ethereum/eth/api.go:77.53,79.2 1 0 -github.com/ethereum/go-ethereum/eth/api.go:82.42,84.2 1 0 -github.com/ethereum/go-ethereum/eth/api.go:93.55,95.2 1 0 -github.com/ethereum/go-ethereum/eth/api.go:102.55,103.20 1 0 -github.com/ethereum/go-ethereum/eth/api.go:106.2,106.36 1 0 -github.com/ethereum/go-ethereum/eth/api.go:103.20,105.3 1 0 -github.com/ethereum/go-ethereum/eth/api.go:111.36,113.2 1 0 -github.com/ethereum/go-ethereum/eth/api.go:116.66,117.62 1 0 -github.com/ethereum/go-ethereum/eth/api.go:120.2,120.18 1 0 -github.com/ethereum/go-ethereum/eth/api.go:117.62,119.3 1 0 -github.com/ethereum/go-ethereum/eth/api.go:124.68,131.2 5 0 -github.com/ethereum/go-ethereum/eth/api.go:134.71,137.2 2 0 -github.com/ethereum/go-ethereum/eth/api.go:140.73,143.2 2 0 -github.com/ethereum/go-ethereum/eth/api.go:146.63,148.2 1 0 -github.com/ethereum/go-ethereum/eth/api.go:158.57,160.2 1 0 -github.com/ethereum/go-ethereum/eth/api.go:164.97,165.33 1 0 -github.com/ethereum/go-ethereum/eth/api.go:168.2,168.33 1 0 -github.com/ethereum/go-ethereum/eth/api.go:172.2,172.41 1 0 -github.com/ethereum/go-ethereum/eth/api.go:178.2,179.16 2 0 -github.com/ethereum/go-ethereum/eth/api.go:182.2,185.36 3 0 -github.com/ethereum/go-ethereum/eth/api.go:191.2,191.18 1 0 -github.com/ethereum/go-ethereum/eth/api.go:198.2,198.18 1 0 -github.com/ethereum/go-ethereum/eth/api.go:165.33,167.3 1 0 -github.com/ethereum/go-ethereum/eth/api.go:168.33,171.3 2 0 -github.com/ethereum/go-ethereum/eth/api.go:172.41,176.3 1 0 -github.com/ethereum/go-ethereum/eth/api.go:179.16,181.3 1 0 -github.com/ethereum/go-ethereum/eth/api.go:185.36,188.3 2 0 -github.com/ethereum/go-ethereum/eth/api.go:191.18,192.77 1 0 -github.com/ethereum/go-ethereum/eth/api.go:192.77,194.4 1 0 -github.com/ethereum/go-ethereum/eth/api.go:195.8,195.67 1 0 -github.com/ethereum/go-ethereum/eth/api.go:195.67,197.3 1 0 -github.com/ethereum/go-ethereum/eth/api.go:201.67,202.23 1 0 -github.com/ethereum/go-ethereum/eth/api.go:208.2,208.13 1 0 -github.com/ethereum/go-ethereum/eth/api.go:202.23,203.47 1 0 -github.com/ethereum/go-ethereum/eth/api.go:203.47,205.4 1 0 -github.com/ethereum/go-ethereum/eth/api.go:212.68,215.16 2 0 -github.com/ethereum/go-ethereum/eth/api.go:218.2,221.36 3 0 -github.com/ethereum/go-ethereum/eth/api.go:228.2,231.28 3 0 -github.com/ethereum/go-ethereum/eth/api.go:257.2,257.18 1 0 -github.com/ethereum/go-ethereum/eth/api.go:215.16,217.3 1 0 -github.com/ethereum/go-ethereum/eth/api.go:221.36,222.55 1 0 -github.com/ethereum/go-ethereum/eth/api.go:222.55,224.4 1 0 -github.com/ethereum/go-ethereum/eth/api.go:231.28,233.33 1 0 -github.com/ethereum/go-ethereum/eth/api.go:243.3,243.23 1 0 -github.com/ethereum/go-ethereum/eth/api.go:247.3,247.49 1 0 -github.com/ethereum/go-ethereum/eth/api.go:252.3,252.69 1 0 -github.com/ethereum/go-ethereum/eth/api.go:255.3,255.22 1 0 -github.com/ethereum/go-ethereum/eth/api.go:233.33,235.50 2 0 -github.com/ethereum/go-ethereum/eth/api.go:240.4,241.11 2 0 -github.com/ethereum/go-ethereum/eth/api.go:235.50,236.10 1 0 -github.com/ethereum/go-ethereum/eth/api.go:237.10,237.25 1 0 -github.com/ethereum/go-ethereum/eth/api.go:237.25,239.5 1 0 -github.com/ethereum/go-ethereum/eth/api.go:243.23,244.9 1 0 -github.com/ethereum/go-ethereum/eth/api.go:247.49,249.12 2 0 -github.com/ethereum/go-ethereum/eth/api.go:252.69,254.4 1 0 -github.com/ethereum/go-ethereum/eth/api.go:268.55,270.2 1 0 -github.com/ethereum/go-ethereum/eth/api.go:273.83,278.39 2 0 -github.com/ethereum/go-ethereum/eth/api.go:285.2,286.38 2 0 -github.com/ethereum/go-ethereum/eth/api.go:291.2,291.18 1 0 -github.com/ethereum/go-ethereum/eth/api.go:294.2,295.16 2 0 -github.com/ethereum/go-ethereum/eth/api.go:298.2,298.35 1 0 -github.com/ethereum/go-ethereum/eth/api.go:278.39,284.3 2 0 -github.com/ethereum/go-ethereum/eth/api.go:286.38,288.3 1 0 -github.com/ethereum/go-ethereum/eth/api.go:288.8,290.3 1 0 -github.com/ethereum/go-ethereum/eth/api.go:291.18,293.3 1 0 -github.com/ethereum/go-ethereum/eth/api.go:295.16,297.3 1 0 -github.com/ethereum/go-ethereum/eth/api.go:309.57,311.2 1 0 -github.com/ethereum/go-ethereum/eth/api.go:314.100,315.78 1 0 -github.com/ethereum/go-ethereum/eth/api.go:318.2,318.44 1 0 -github.com/ethereum/go-ethereum/eth/api.go:315.78,317.3 1 0 -github.com/ethereum/go-ethereum/eth/api.go:330.88,336.31 2 0 -github.com/ethereum/go-ethereum/eth/api.go:355.2,355.21 1 0 -github.com/ethereum/go-ethereum/eth/api.go:336.31,341.60 2 0 -github.com/ethereum/go-ethereum/eth/api.go:346.3,346.111 1 0 -github.com/ethereum/go-ethereum/eth/api.go:349.3,353.5 1 0 -github.com/ethereum/go-ethereum/eth/api.go:341.60,343.4 1 0 -github.com/ethereum/go-ethereum/eth/api.go:343.9,345.4 1 0 -github.com/ethereum/go-ethereum/eth/api.go:346.111,348.4 1 0 -github.com/ethereum/go-ethereum/eth/api.go:362.173,366.46 3 0 -github.com/ethereum/go-ethereum/eth/api.go:400.2,407.60 2 0 -github.com/ethereum/go-ethereum/eth/api.go:410.2,410.40 1 0 -github.com/ethereum/go-ethereum/eth/api.go:366.46,367.39 1 0 -github.com/ethereum/go-ethereum/eth/api.go:367.39,372.4 1 0 -github.com/ethereum/go-ethereum/eth/api.go:372.9,374.39 2 0 -github.com/ethereum/go-ethereum/eth/api.go:379.4,379.20 1 0 -github.com/ethereum/go-ethereum/eth/api.go:382.4,383.18 2 0 -github.com/ethereum/go-ethereum/eth/api.go:374.39,376.5 1 0 -github.com/ethereum/go-ethereum/eth/api.go:376.10,378.5 1 0 -github.com/ethereum/go-ethereum/eth/api.go:379.20,381.5 1 0 -github.com/ethereum/go-ethereum/eth/api.go:383.18,385.5 1 0 -github.com/ethereum/go-ethereum/eth/api.go:387.8,387.49 1 0 -github.com/ethereum/go-ethereum/eth/api.go:387.49,389.19 2 0 -github.com/ethereum/go-ethereum/eth/api.go:392.3,393.17 2 0 -github.com/ethereum/go-ethereum/eth/api.go:389.19,391.4 1 0 -github.com/ethereum/go-ethereum/eth/api.go:393.17,395.4 1 0 -github.com/ethereum/go-ethereum/eth/api.go:396.8,398.3 1 0 -github.com/ethereum/go-ethereum/eth/api.go:407.60,409.3 1 0 -github.com/ethereum/go-ethereum/eth/api.go:427.179,430.18 2 0 -github.com/ethereum/go-ethereum/eth/api.go:433.2,434.16 2 0 -github.com/ethereum/go-ethereum/eth/api.go:437.2,438.15 2 0 -github.com/ethereum/go-ethereum/eth/api.go:441.2,441.48 1 0 -github.com/ethereum/go-ethereum/eth/api.go:430.18,432.3 1 0 -github.com/ethereum/go-ethereum/eth/api.go:434.16,436.3 1 0 -github.com/ethereum/go-ethereum/eth/api.go:438.15,440.3 1 0 -github.com/ethereum/go-ethereum/eth/api.go:444.93,447.46 3 1 -github.com/ethereum/go-ethereum/eth/api.go:460.2,460.15 1 1 -github.com/ethereum/go-ethereum/eth/api.go:464.2,464.20 1 1 -github.com/ethereum/go-ethereum/eth/api.go:447.46,449.17 2 1 -github.com/ethereum/go-ethereum/eth/api.go:452.3,453.53 2 1 -github.com/ethereum/go-ethereum/eth/api.go:457.3,457.49 1 1 -github.com/ethereum/go-ethereum/eth/api.go:449.17,451.4 1 0 -github.com/ethereum/go-ethereum/eth/api.go:453.53,456.4 2 1 -github.com/ethereum/go-ethereum/eth/api.go:460.15,463.3 2 1 -github.com/ethereum/go-ethereum/eth/api.go:472.116,476.23 3 0 -github.com/ethereum/go-ethereum/eth/api.go:480.2,480.19 1 0 -github.com/ethereum/go-ethereum/eth/api.go:492.2,492.54 1 0 -github.com/ethereum/go-ethereum/eth/api.go:476.23,478.3 1 0 -github.com/ethereum/go-ethereum/eth/api.go:480.19,483.24 3 0 -github.com/ethereum/go-ethereum/eth/api.go:483.24,485.4 1 0 -github.com/ethereum/go-ethereum/eth/api.go:486.8,488.22 2 0 -github.com/ethereum/go-ethereum/eth/api.go:488.22,490.4 1 0 -github.com/ethereum/go-ethereum/eth/api.go:500.126,503.23 3 0 -github.com/ethereum/go-ethereum/eth/api.go:507.2,507.20 1 0 -github.com/ethereum/go-ethereum/eth/api.go:519.2,519.54 1 0 -github.com/ethereum/go-ethereum/eth/api.go:503.23,505.3 1 0 -github.com/ethereum/go-ethereum/eth/api.go:507.20,510.24 3 0 -github.com/ethereum/go-ethereum/eth/api.go:510.24,512.4 1 0 -github.com/ethereum/go-ethereum/eth/api.go:513.8,515.22 2 0 -github.com/ethereum/go-ethereum/eth/api.go:515.22,517.4 1 0 -github.com/ethereum/go-ethereum/eth/api.go:522.110,523.64 1 0 -github.com/ethereum/go-ethereum/eth/api.go:526.2,529.16 3 0 -github.com/ethereum/go-ethereum/eth/api.go:532.2,533.16 2 0 -github.com/ethereum/go-ethereum/eth/api.go:536.2,540.18 4 0 -github.com/ethereum/go-ethereum/eth/api.go:547.2,547.19 1 0 -github.com/ethereum/go-ethereum/eth/api.go:523.64,525.3 1 0 -github.com/ethereum/go-ethereum/eth/api.go:529.16,531.3 1 0 -github.com/ethereum/go-ethereum/eth/api.go:533.16,535.3 1 0 -github.com/ethereum/go-ethereum/eth/api.go:540.18,542.17 2 0 -github.com/ethereum/go-ethereum/eth/api.go:545.3,545.52 1 0 -github.com/ethereum/go-ethereum/eth/api.go:542.17,544.4 1 0 -github.com/ethereum/go-ethereum/eth/api.go:555.90,558.50 3 0 -github.com/ethereum/go-ethereum/eth/api.go:562.2,562.61 1 0 -github.com/ethereum/go-ethereum/eth/api.go:573.2,580.47 2 0 -github.com/ethereum/go-ethereum/eth/api.go:583.2,583.43 1 0 -github.com/ethereum/go-ethereum/eth/api.go:586.2,586.18 1 0 -github.com/ethereum/go-ethereum/eth/api.go:589.2,589.17 1 0 -github.com/ethereum/go-ethereum/eth/api.go:592.2,592.53 1 0 -github.com/ethereum/go-ethereum/eth/api.go:608.2,608.40 1 0 -github.com/ethereum/go-ethereum/eth/api.go:558.50,561.3 2 0 -github.com/ethereum/go-ethereum/eth/api.go:562.61,564.22 1 0 -github.com/ethereum/go-ethereum/eth/api.go:571.3,571.34 1 0 -github.com/ethereum/go-ethereum/eth/api.go:564.22,566.20 2 0 -github.com/ethereum/go-ethereum/eth/api.go:569.4,569.33 1 0 -github.com/ethereum/go-ethereum/eth/api.go:566.20,568.5 1 0 -github.com/ethereum/go-ethereum/eth/api.go:580.47,582.3 1 0 -github.com/ethereum/go-ethereum/eth/api.go:583.43,585.3 1 0 -github.com/ethereum/go-ethereum/eth/api.go:586.18,588.3 1 0 -github.com/ethereum/go-ethereum/eth/api.go:589.17,591.3 1 0 -github.com/ethereum/go-ethereum/eth/api.go:592.53,593.42 1 0 -github.com/ethereum/go-ethereum/eth/api.go:597.3,597.23 1 0 -github.com/ethereum/go-ethereum/eth/api.go:600.3,601.15 2 0 -github.com/ethereum/go-ethereum/eth/api.go:604.3,604.52 1 0 -github.com/ethereum/go-ethereum/eth/api.go:593.42,596.4 2 0 -github.com/ethereum/go-ethereum/eth/api.go:597.23,598.12 1 0 -github.com/ethereum/go-ethereum/eth/api.go:601.15,603.4 1 0 -github.com/ethereum/go-ethereum/eth/api.go:604.52,606.4 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:52.59,54.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:56.53,58.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:60.48,63.2 2 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:65.108,67.38 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:72.2,72.37 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:75.2,75.64 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:67.38,70.3 2 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:72.37,74.3 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:78.127,79.47 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:82.2,82.42 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:92.2,92.79 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:79.47,81.3 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:82.42,84.20 2 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:87.3,87.106 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:90.3,90.21 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:84.20,86.4 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:87.106,89.4 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:95.100,97.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:99.106,101.38 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:106.2,106.37 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:109.2,109.63 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:101.38,104.3 2 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:106.37,108.3 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:112.98,114.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:116.125,117.47 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:120.2,120.42 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:134.2,134.79 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:117.47,119.3 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:120.42,122.20 2 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:125.3,125.106 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:128.3,129.19 2 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:132.3,132.20 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:122.20,124.4 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:125.106,127.4 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:129.19,131.4 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:137.82,139.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:141.132,143.38 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:148.2,149.16 2 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:152.2,152.19 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:155.2,156.29 2 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:143.38,146.3 2 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:149.16,151.3 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:152.19,154.3 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:159.151,160.47 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:163.2,163.42 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:177.2,177.84 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:160.47,162.3 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:163.42,165.17 2 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:168.3,168.20 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:171.3,171.106 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:174.3,175.30 2 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:165.17,167.4 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:168.20,170.4 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:171.106,173.4 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:180.100,182.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:184.96,187.19 3 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:190.2,191.17 2 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:194.2,194.18 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:187.19,189.3 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:191.17,193.3 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:197.79,198.69 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:201.2,201.12 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:198.69,200.3 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:204.167,205.26 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:206.2,206.21 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:209.2,211.97 3 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:205.26,205.40 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:206.21,208.3 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:214.103,216.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:218.94,220.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:222.91,224.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:226.99,228.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:230.99,232.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:234.87,236.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:238.88,240.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:242.75,245.32 3 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:248.2,248.17 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:245.32,247.3 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:251.81,253.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:255.138,258.2 2 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:260.96,262.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:264.59,266.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:268.120,270.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:272.105,274.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:276.47,278.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:280.93,282.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:284.62,286.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:288.81,290.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:292.227,294.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:296.50,298.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:300.51,302.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:304.60,306.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:308.46,310.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:312.51,314.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:316.44,318.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:320.55,322.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:324.47,326.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:328.56,331.2 2 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:333.95,334.42 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:334.42,336.3 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:339.51,341.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:343.55,345.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:347.46,349.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:351.56,353.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:355.167,357.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:359.168,361.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:363.73,365.2 1 0 -github.com/ethereum/go-ethereum/eth/api_backend.go:367.52,369.2 1 0 -github.com/ethereum/go-ethereum/eth/handler_bor.go:38.90,41.16 2 0 -github.com/ethereum/go-ethereum/eth/handler_bor.go:47.2,48.57 2 0 -github.com/ethereum/go-ethereum/eth/handler_bor.go:54.2,55.16 2 0 -github.com/ethereum/go-ethereum/eth/handler_bor.go:60.2,60.50 1 0 -github.com/ethereum/go-ethereum/eth/handler_bor.go:66.2,67.16 2 0 -github.com/ethereum/go-ethereum/eth/handler_bor.go:72.2,74.66 2 0 -github.com/ethereum/go-ethereum/eth/handler_bor.go:41.16,44.3 2 0 -github.com/ethereum/go-ethereum/eth/handler_bor.go:48.57,51.3 2 0 -github.com/ethereum/go-ethereum/eth/handler_bor.go:55.16,58.3 2 0 -github.com/ethereum/go-ethereum/eth/handler_bor.go:60.50,63.3 2 0 -github.com/ethereum/go-ethereum/eth/handler_bor.go:67.16,70.3 2 0 -github.com/ethereum/go-ethereum/eth/sync.go:39.49,48.32 3 1 -github.com/ethereum/go-ethereum/eth/sync.go:51.2,51.19 1 1 -github.com/ethereum/go-ethereum/eth/sync.go:57.2,58.25 2 1 -github.com/ethereum/go-ethereum/eth/sync.go:61.2,61.44 1 1 -github.com/ethereum/go-ethereum/eth/sync.go:48.32,50.3 1 1 -github.com/ethereum/go-ethereum/eth/sync.go:51.19,53.3 1 1 -github.com/ethereum/go-ethereum/eth/sync.go:58.25,60.3 1 1 -github.com/ethereum/go-ethereum/eth/sync.go:83.52,88.2 1 1 -github.com/ethereum/go-ethereum/eth/sync.go:93.61,94.9 1 1 -github.com/ethereum/go-ethereum/eth/sync.go:95.36,96.14 1 1 -github.com/ethereum/go-ethereum/eth/sync.go:97.29,98.15 1 0 -github.com/ethereum/go-ethereum/eth/sync.go:103.31,117.6 9 1 -github.com/ethereum/go-ethereum/eth/sync.go:117.6,118.39 1 1 -github.com/ethereum/go-ethereum/eth/sync.go:121.3,121.10 1 1 -github.com/ethereum/go-ethereum/eth/sync.go:118.39,120.4 1 0 -github.com/ethereum/go-ethereum/eth/sync.go:122.25,122.25 0 1 -github.com/ethereum/go-ethereum/eth/sync.go:124.27,132.95 4 0 -github.com/ethereum/go-ethereum/eth/sync.go:136.21,137.20 1 0 -github.com/ethereum/go-ethereum/eth/sync.go:139.30,145.24 3 1 -github.com/ethereum/go-ethereum/eth/sync.go:148.4,148.10 1 1 -github.com/ethereum/go-ethereum/eth/sync.go:132.95,135.5 2 0 -github.com/ethereum/go-ethereum/eth/sync.go:145.24,147.5 1 0 -github.com/ethereum/go-ethereum/eth/sync.go:154.50,155.22 1 1 -github.com/ethereum/go-ethereum/eth/sync.go:166.2,166.36 1 1 -github.com/ethereum/go-ethereum/eth/sync.go:170.2,171.15 2 1 -github.com/ethereum/go-ethereum/eth/sync.go:176.2,176.39 1 1 -github.com/ethereum/go-ethereum/eth/sync.go:182.2,183.17 2 1 -github.com/ethereum/go-ethereum/eth/sync.go:186.2,188.27 3 1 -github.com/ethereum/go-ethereum/eth/sync.go:198.2,198.11 1 0 -github.com/ethereum/go-ethereum/eth/sync.go:155.22,157.3 1 0 -github.com/ethereum/go-ethereum/eth/sync.go:166.36,168.3 1 0 -github.com/ethereum/go-ethereum/eth/sync.go:171.15,173.3 1 0 -github.com/ethereum/go-ethereum/eth/sync.go:173.8,173.43 1 1 -github.com/ethereum/go-ethereum/eth/sync.go:173.43,175.3 1 0 -github.com/ethereum/go-ethereum/eth/sync.go:176.39,178.3 1 1 -github.com/ethereum/go-ethereum/eth/sync.go:183.17,185.3 1 0 -github.com/ethereum/go-ethereum/eth/sync.go:188.27,192.140 1 1 -github.com/ethereum/go-ethereum/eth/sync.go:196.3,196.13 1 1 -github.com/ethereum/go-ethereum/eth/sync.go:192.140,195.4 2 0 -github.com/ethereum/go-ethereum/eth/sync.go:201.71,204.2 2 1 -github.com/ethereum/go-ethereum/eth/sync.go:206.75,208.50 1 1 -github.com/ethereum/go-ethereum/eth/sync.go:215.2,215.75 1 1 -github.com/ethereum/go-ethereum/eth/sync.go:223.2,225.32 3 1 -github.com/ethereum/go-ethereum/eth/sync.go:208.50,212.3 3 0 -github.com/ethereum/go-ethereum/eth/sync.go:215.75,216.73 1 0 -github.com/ethereum/go-ethereum/eth/sync.go:216.73,220.4 3 0 -github.com/ethereum/go-ethereum/eth/sync.go:229.51,231.12 2 0 -github.com/ethereum/go-ethereum/eth/sync.go:231.12,231.50 1 0 -github.com/ethereum/go-ethereum/eth/sync.go:235.49,236.36 1 1 -github.com/ethereum/go-ethereum/eth/sync.go:255.2,256.16 2 1 -github.com/ethereum/go-ethereum/eth/sync.go:259.2,259.41 1 1 -github.com/ethereum/go-ethereum/eth/sync.go:265.2,266.44 2 1 -github.com/ethereum/go-ethereum/eth/sync.go:273.2,273.26 1 1 -github.com/ethereum/go-ethereum/eth/sync.go:282.2,282.12 1 1 -github.com/ethereum/go-ethereum/eth/sync.go:236.36,247.71 2 1 -github.com/ethereum/go-ethereum/eth/sync.go:247.71,249.4 1 1 -github.com/ethereum/go-ethereum/eth/sync.go:249.9,249.30 1 0 -github.com/ethereum/go-ethereum/eth/sync.go:249.30,252.4 2 0 -github.com/ethereum/go-ethereum/eth/sync.go:256.16,258.3 1 0 -github.com/ethereum/go-ethereum/eth/sync.go:259.41,262.3 2 1 -github.com/ethereum/go-ethereum/eth/sync.go:266.44,269.65 1 1 -github.com/ethereum/go-ethereum/eth/sync.go:269.65,271.4 1 0 -github.com/ethereum/go-ethereum/eth/sync.go:273.26,281.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:97.92,99.43 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:124.2,124.18 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:99.43,106.55 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:106.55,110.57 3 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:110.57,112.6 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:114.33,116.5 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:117.44,119.5 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:138.65,147.2 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:152.48,153.6 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:153.6,154.54 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:154.54,157.4 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:186.55,189.16 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:192.2,192.31 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:195.2,203.21 3 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:214.2,214.51 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:217.2,217.58 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:189.16,191.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:192.31,194.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:203.21,205.31 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:205.31,206.37 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:211.4,211.96 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:206.37,210.5 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handler.go:214.51,216.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:32.78,35.43 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:38.2,39.61 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:35.43,37.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:44.115,45.21 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:45.21,48.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:48.8,50.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:53.124,66.65 5 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:139.2,139.16 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:66.65,70.15 3 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:83.3,83.20 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:86.3,86.60 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:93.3,93.10 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:70.15,71.13 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:71.13,74.22 3 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:74.22,76.6 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:77.10,79.5 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:80.9,82.4 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:83.20,84.9 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:86.60,88.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:88.9,91.4 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:94.34,97.21 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:103.35,109.23 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:126.22,128.43 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:134.23,136.41 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:97.21,99.5 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:99.10,102.5 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:109.23,113.5 3 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:113.10,114.63 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:114.63,117.41 3 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:117.41,119.7 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:119.12,121.7 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:122.11,124.6 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:128.43,130.5 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:130.10,132.5 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:142.109,144.29 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:147.2,147.42 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:164.2,169.19 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:176.2,177.20 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:144.29,146.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:147.42,152.21 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:155.3,156.21 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:161.3,161.17 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:152.21,154.4 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:156.21,157.58 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:157.58,159.5 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:169.19,172.3 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:172.8,175.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:177.20,181.66 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:185.3,186.61 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:189.3,190.17 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:181.66,184.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:186.61,188.4 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:192.2,193.55 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:201.3,201.17 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:193.55,195.21 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:198.4,199.38 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:195.21,196.10 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:205.77,208.43 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:211.2,212.60 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:208.43,210.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:217.100,223.35 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:233.2,233.15 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:223.35,225.32 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:228.3,228.53 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:225.32,226.9 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:228.53,231.4 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:236.74,239.43 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:242.2,243.54 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:239.43,241.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:248.88,254.35 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:270.2,270.14 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:254.35,256.34 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:260.3,261.36 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:265.3,265.35 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:256.34,257.9 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:261.36,264.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:265.35,268.4 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:273.74,276.43 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:279.2,280.57 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:276.43,278.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:285.94,291.35 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:311.2,311.17 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:291.35,293.34 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:297.3,298.21 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:304.3,304.61 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:293.34,294.9 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:298.21,299.105 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:299.105,300.13 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:304.61,306.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:306.9,309.4 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:314.75,317.40 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:321.2,321.29 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:325.2,325.34 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:317.40,319.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:321.29,323.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:328.69,331.40 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:334.2,334.42 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:337.2,337.84 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:341.2,341.107 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:345.2,351.34 4 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:331.40,333.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:334.42,336.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:337.84,340.3 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:341.107,344.3 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:354.75,357.40 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:360.2,360.33 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:367.2,371.14 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:357.40,359.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:360.33,362.49 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:365.3,365.16 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:362.49,364.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:374.74,377.40 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:380.2,380.33 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:392.2,396.14 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:377.40,379.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:380.33,386.46 3 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:390.3,390.49 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:386.46,389.4 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:399.71,402.40 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:405.2,409.9 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:402.40,404.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:412.71,415.40 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:418.2,418.33 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:426.2,430.14 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:415.40,417.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:418.33,421.46 3 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:424.3,424.16 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:421.46,423.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:433.87,436.26 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:439.2,440.40 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:444.2,444.28 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:447.2,447.34 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:436.26,438.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:440.40,442.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:444.28,446.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:450.84,453.43 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:456.2,457.70 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:453.43,455.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:460.130,467.29 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:485.2,485.20 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:467.29,468.33 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:472.3,473.16 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:477.3,477.56 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:468.33,469.9 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:473.16,474.12 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:477.56,479.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:479.9,483.4 3 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:488.73,490.26 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:494.2,495.41 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:498.2,498.25 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:505.2,505.35 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:490.26,492.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:495.41,497.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:498.25,500.16 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:503.3,503.34 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:500.16,502.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:508.81,510.26 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:514.2,515.41 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:518.2,518.50 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:525.2,527.60 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:510.26,512.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:515.41,517.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:518.50,520.16 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:523.3,523.34 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handlers.go:520.16,522.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:37.144,43.12 3 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:53.2,53.12 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:56.2,58.25 3 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:68.2,72.41 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:75.2,75.12 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:43.12,52.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:53.12,55.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:58.25,59.10 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:60.22,61.18 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:64.20,65.30 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:61.18,63.5 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:72.41,74.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:79.118,81.16 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:84.2,84.27 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:87.2,87.31 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:91.2,91.44 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:94.2,94.33 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:97.2,97.47 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:100.2,100.31 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:103.2,103.50 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:106.2,106.12 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:81.16,83.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:84.27,86.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:87.31,89.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:91.44,93.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:94.33,96.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:97.47,99.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:100.31,102.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/handshake.go:103.50,105.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:105.67,110.26 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:113.2,113.24 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:110.26,112.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:141.54,142.32 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:145.2,145.20 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:148.2,148.31 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:142.32,144.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:145.20,147.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:153.56,155.9 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:156.18,157.13 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:158.18,160.28 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:161.17,163.30 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:164.10,165.62 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:195.52,196.52 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:201.2,201.47 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:204.2,204.12 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:196.52,198.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:201.47,203.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:244.82,249.26 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:252.2,252.24 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:249.26,251.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:330.36,330.55 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:331.36,331.56 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:333.44,333.71 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:334.44,334.72 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:336.42,336.67 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:337.42,337.68 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:339.45,339.73 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:340.45,340.74 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:342.42,342.67 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:343.42,343.68 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:345.44,345.71 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:346.44,346.72 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:348.41,348.65 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:349.41,349.66 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:351.38,351.59 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:352.38,352.60 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:354.41,354.65 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:355.41,355.66 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:357.38,357.59 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:358.38,358.60 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:360.41,360.65 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:361.41,361.66 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:363.38,363.59 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:364.38,364.60 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:366.56,366.95 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:367.56,367.96 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:369.51,369.85 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:370.51,370.86 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:372.48,372.79 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/protocol.go:373.48,373.80 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:42.34,43.6 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:43.6,44.10 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:45.33,46.62 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:49.4,49.110 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:51.37,52.105 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:55.4,55.84 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:57.17,58.10 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:46.62,48.5 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:52.105,54.5 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:66.40,73.6 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:73.6,75.36 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:105.3,105.10 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:75.36,82.62 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:89.4,92.20 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:82.62,83.48 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:87.5,87.18 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:83.48,86.6 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:92.20,94.15 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:94.15,95.52 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:99.6,100.59 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:95.52,98.7 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:106.34,108.14 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:112.4,113.33 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:118.15,119.14 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:121.15,122.17 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:124.17,125.10 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:108.14,109.13 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:113.33,116.5 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:133.39,140.6 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:140.6,142.36 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:172.3,172.10 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:142.36,149.73 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:156.4,159.24 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:149.73,150.42 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:150.42,153.6 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:159.24,161.15 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:161.15,162.67 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:166.6,167.76 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:162.67,165.7 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:173.33,175.14 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:179.4,180.36 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:185.15,186.14 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:188.15,189.17 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:191.17,192.10 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:175.14,176.13 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/broadcast.go:180.36,183.5 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/discovery.go:35.35,37.2 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/discovery.go:41.67,45.12 3 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/discovery.go:45.12,47.7 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/discovery.go:47.7,48.11 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/discovery.go:49.19,50.35 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/discovery.go:51.21,54.11 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/discovery.go:61.56,65.2 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:61.33,62.19 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:65.2,69.9 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:62.19,64.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:70.36,71.41 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:74.3,75.13 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:76.21,77.25 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:71.41,73.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:122.52,131.9 5 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:132.30,133.22 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:134.16,135.25 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:141.83,149.9 4 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:150.30,152.38 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:157.3,157.22 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:166.3,166.10 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:180.16,181.25 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:152.38,154.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:157.22,159.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:167.25,168.14 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:169.11,172.11 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:173.29,174.22 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:175.26,176.15 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:188.29,191.6 2 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:191.6,192.10 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:193.33,201.18 6 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:205.34,209.18 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:214.4,215.24 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:217.33,224.11 4 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:249.17,250.10 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:201.18,203.5 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:209.18,211.13 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:225.24,229.38 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:231.34,236.105 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/dispatcher.go:238.12,246.28 3 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:60.24,61.11 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:64.2,64.10 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:61.11,63.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:97.84,122.2 6 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:127.24,129.2 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:132.28,134.2 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:137.31,139.2 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:142.55,148.2 4 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:151.55,157.2 4 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:160.50,162.2 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:165.56,167.2 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:171.44,174.2 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:178.50,181.2 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:192.63,194.25 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:197.2,197.45 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:194.25,196.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:203.60,204.9 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:205.31,207.28 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:208.16,209.74 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:219.72,223.2 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:228.71,229.9 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:230.30,232.28 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:233.16,234.75 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:239.102,248.2 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:252.81,257.35 3 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:261.2,261.51 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:257.35,260.3 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:267.58,268.9 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:269.34,271.34 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:272.10,273.98 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:278.68,285.2 2 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:289.67,290.9 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:291.65,293.34 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:294.10,295.97 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:300.78,305.2 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:308.76,314.2 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:317.62,322.2 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:325.75,330.2 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:334.90,353.47 4 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:356.2,356.17 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:353.47,355.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:361.132,380.47 4 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:383.2,383.17 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:380.47,382.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:388.129,407.47 4 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:410.2,410.17 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:407.47,409.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:415.91,429.47 4 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:432.2,432.17 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:429.47,431.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:437.93,451.47 4 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:454.2,454.17 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:451.47,453.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:458.93,472.47 4 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:475.2,475.17 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:472.47,474.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:479.55,488.2 4 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:497.41,502.2 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:505.49,506.57 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:509.2,509.30 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:506.57,508.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:509.30,511.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:515.54,517.2 1 0 -github.com/ethereum/go-ethereum/eth/protocols/eth/peer.go:520.40,522.2 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:140.52,141.26 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:144.2,144.33 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:141.26,143.3 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:148.55,149.26 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:152.2,152.28 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:149.26,151.3 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:201.276,227.2 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:231.32,233.2 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:237.31,239.2 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:244.70,253.9 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:254.25,255.13 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:256.16,257.23 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:262.71,267.9 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:268.22,269.13 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:270.16,271.23 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:277.108,283.9 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:289.2,289.9 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:295.2,295.9 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:284.32,284.32 0 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:285.16,286.13 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:290.77,290.77 0 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:291.16,292.13 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:296.24,297.22 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:298.16,299.13 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:305.173,311.9 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:317.2,317.9 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:323.2,323.9 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:312.30,312.30 0 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:313.16,314.18 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:318.101,318.101 0 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:319.16,320.18 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:324.24,325.40 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:326.16,327.18 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:333.31,344.6 6 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:344.6,346.42 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:352.3,353.24 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:380.3,380.10 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:346.42,347.48 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:347.48,349.5 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:353.24,356.32 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:360.4,361.25 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:369.4,369.120 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:373.4,373.15 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:356.32,358.5 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:361.25,363.33 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:366.5,366.10 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:363.33,365.6 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:369.120,371.13 2 0 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:373.15,375.5 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:375.10,377.5 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:381.17,383.10 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:385.35,390.25 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:395.4,395.32 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:399.4,399.112 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:405.4,405.50 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:408.4,408.52 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:411.4,413.79 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:416.4,416.29 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:420.25,426.15 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:429.4,429.39 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:431.25,434.23 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:436.23,440.45 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:460.4,460.38 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:489.4,489.33 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:491.26,495.43 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:507.4,507.38 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:534.4,534.39 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:536.35,541.11 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:546.4,551.40 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:600.4,601.11 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:607.4,607.40 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:618.4,618.42 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:622.4,622.35 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:628.33,631.11 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:636.4,639.29 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:682.4,683.11 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:689.4,689.33 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:390.25,393.10 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:395.32,396.10 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:399.112,402.10 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:405.50,406.10 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:408.52,409.10 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:413.79,415.5 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:416.29,418.5 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:426.15,427.13 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:440.45,444.16 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:447.5,447.48 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:444.16,446.6 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:447.48,453.88 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:453.88,456.7 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:460.38,465.26 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:465.26,466.31 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:469.6,469.34 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:466.31,468.7 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:469.34,471.33 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:471.33,475.22 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:478.8,483.91 4 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:475.22,477.9 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:495.43,501.32 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:501.32,504.6 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:507.38,511.32 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:514.5,517.48 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:511.32,513.6 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:517.48,521.20 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:524.6,530.51 5 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:521.20,523.7 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:542.25,542.25 0 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:543.18,544.11 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:551.40,555.166 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:555.166,557.51 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:565.6,565.17 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:574.6,574.33 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:557.51,561.15 4 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:565.17,566.35 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:570.7,571.15 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:566.35,569.8 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:574.33,579.91 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:590.7,590.48 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:579.91,587.16 6 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:591.12,594.7 2 0 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:595.11,598.6 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:602.72,602.72 0 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:603.18,604.11 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:607.40,609.40 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:612.5,613.28 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:609.40,610.14 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:613.28,615.6 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:618.42,620.5 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:622.35,623.64 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:623.64,625.6 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:632.25,632.25 0 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:633.18,634.11 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:639.29,640.73 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:640.73,647.47 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:674.6,674.17 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:647.47,648.64 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:651.7,651.39 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:654.7,654.49 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:657.7,657.37 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:660.7,660.44 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:664.7,665.34 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:648.64,649.16 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:651.39,653.8 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:654.49,655.16 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:657.37,659.8 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:660.44,661.16 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:665.34,669.8 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:669.13,671.8 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:674.17,678.15 4 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:684.24,684.24 0 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:685.18,686.11 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:689.33,690.64 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:690.64,692.6 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:699.59,701.27 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:706.2,706.13 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:711.2,712.40 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:717.2,717.51 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:701.27,703.3 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:706.13,709.3 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:712.40,713.40 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:713.40,715.4 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:721.65,723.25 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:727.2,728.38 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:733.2,733.52 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:723.25,725.3 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:728.38,729.40 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:729.40,731.4 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:738.87,743.19 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:749.2,750.24 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:757.2,757.97 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:764.2,764.34 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:743.19,745.3 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:745.8,747.3 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:750.24,755.3 4 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:757.97,762.3 4 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:764.34,766.20 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:771.3,774.31 4 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:777.3,777.120 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:766.20,768.4 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:768.9,770.4 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:774.31,776.4 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:784.73,788.12 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:788.12,789.16 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:791.3,792.20 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:797.3,797.83 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:803.3,803.69 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:808.3,808.28 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:789.16,789.34 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:792.20,795.4 2 0 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:797.83,801.4 3 0 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:803.69,806.4 2 0 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:808.28,810.4 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:817.70,822.12 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:822.12,823.16 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:826.3,827.20 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:832.3,832.53 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:848.3,848.63 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:853.3,857.28 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:823.16,823.34 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:827.20,830.4 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:833.12,836.36 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:838.33,838.33 0 0 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:841.11,845.10 3 0 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:848.63,851.4 2 0 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:857.28,859.4 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:865.53,867.46 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:880.2,880.51 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:889.2,889.43 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:895.2,898.53 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:867.46,868.40 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:874.3,875.34 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:868.40,870.41 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:870.41,872.5 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:875.34,877.4 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:880.51,882.40 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:885.3,885.27 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:882.40,884.4 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:889.43,891.40 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:891.40,893.4 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:898.53,900.40 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:903.3,903.29 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:900.40,902.4 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:909.54,910.45 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:910.45,912.35 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:915.3,915.25 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/block_fetcher.go:912.35,914.4 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:183.147,185.2 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:191.51,212.2 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:216.69,229.30 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:241.2,245.24 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:248.2,252.9 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:229.30,230.10 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:231.22,232.15 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:234.37,235.17 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:237.11,238.37 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:245.24,247.3 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:253.28,254.13 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:255.16,256.23 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:264.87,266.12 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:273.2,280.27 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:305.2,305.12 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:314.2,314.9 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:266.12,268.3 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:268.8,270.3 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:280.27,284.88 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:291.3,291.10 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:303.3,303.39 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:284.88,285.63 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:288.4,288.36 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:285.63,287.5 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:292.19,292.19 0 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:294.45,295.15 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:297.90,298.17 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:300.11,301.17 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:305.12,309.3 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:309.8,313.3 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:315.77,316.13 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:317.16,318.23 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:324.45,325.9 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:326.37,327.13 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:328.16,329.23 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:335.29,337.2 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:341.28,343.2 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:345.28,353.6 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:353.6,354.10 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:671.3,679.20 7 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:355.26,361.30 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:369.4,370.29 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:375.4,378.36 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:430.4,430.39 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:435.4,435.52 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:439.22,443.43 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:467.4,467.27 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:471.4,471.24 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:475.25,480.38 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:515.4,519.53 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:521.32,524.41 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:560.4,560.23 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:614.25,616.43 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:630.4,631.55 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:652.4,652.43 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:662.4,662.22 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:667.17,668.10 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:361.30,367.10 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:370.29,373.5 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:378.36,382.34 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:395.5,395.33 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:409.5,409.32 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:420.5,423.63 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:382.34,386.64 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:391.6,391.14 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:386.64,388.7 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:388.12,390.7 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:395.33,399.64 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:404.6,404.14 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:399.64,401.7 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:401.12,403.7 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:409.32,412.64 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:417.6,417.14 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:412.64,414.7 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:414.12,416.7 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:423.63,425.6 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:425.11,427.6 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:430.39,432.5 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:435.52,437.5 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:443.43,444.78 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:444.78,446.34 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:449.6,450.41 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:462.6,463.30 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:446.34,447.63 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:450.41,451.59 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:456.7,457.38 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:460.7,460.33 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:451.59,453.8 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:453.13,455.8 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:457.38,459.8 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:467.27,469.5 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:471.24,473.5 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:480.38,481.77 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:481.77,485.38 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:507.6,507.37 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:511.6,511.35 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:485.38,487.28 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:493.7,493.41 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:496.7,496.36 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:499.7,500.38 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:503.7,505.31 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:487.28,488.41 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:488.41,489.17 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:493.41,494.66 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:496.36,498.8 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:500.38,502.8 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:507.37,509.7 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:524.41,525.38 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:525.38,526.43 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:532.6,533.30 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:526.43,528.26 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:528.26,530.8 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:534.11,535.43 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:541.6,547.95 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:555.6,555.30 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:535.43,537.26 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:537.26,539.8 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:547.95,549.24 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:553.7,553.32 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:549.24,552.8 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:560.23,566.19 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:570.5,575.42 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:578.5,579.37 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:585.5,585.37 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:611.5,611.57 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:566.19,568.11 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:575.42,577.6 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:579.37,580.38 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:580.38,582.7 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:585.37,587.27 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:592.6,592.39 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:607.6,608.30 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:587.27,588.40 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:588.40,589.16 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:592.39,593.21 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:600.7,600.38 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:593.21,596.50 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:596.50,598.9 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:600.38,601.42 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:604.8,604.46 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:601.42,602.103 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:616.43,617.46 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:624.5,625.28 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:617.46,619.36 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:619.36,622.7 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:625.28,627.6 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:631.55,632.41 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:649.5,649.34 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:632.41,634.31 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:640.6,641.38 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:647.6,647.30 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:634.31,635.44 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:635.44,636.16 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:641.38,643.7 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:643.12,646.7 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:652.43,653.46 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:659.5,659.35 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:653.46,655.37 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:655.37,657.7 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:662.22,665.5 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:679.20,681.4 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:691.80,692.19 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:695.2,698.38 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:706.2,706.81 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:692.19,694.3 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:698.38,699.26 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:699.26,701.65 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:701.65,702.10 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:706.81,708.3 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:725.83,726.19 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:729.2,732.33 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:744.2,744.80 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:726.19,728.3 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:732.33,734.24 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:737.3,737.26 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:734.24,735.12 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:737.26,739.64 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:739.64,740.10 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:744.80,746.3 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:750.112,753.20 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:759.2,759.23 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:763.2,765.43 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:808.2,808.33 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:753.20,755.33 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:755.33,757.4 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:759.23,761.3 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:765.43,766.30 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:769.3,769.34 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:772.3,773.64 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:793.3,793.22 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:766.30,768.4 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:769.34,771.4 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:773.64,774.38 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:790.4,790.15 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:774.38,778.40 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:781.5,786.39 4 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:778.40,779.100 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:786.39,788.6 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:793.22,797.47 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:797.47,800.52 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:800.52,803.6 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:808.33,810.3 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:815.82,817.19 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:824.2,825.26 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:828.2,830.28 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:817.19,818.27 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:821.3,821.9 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:818.27,820.4 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:825.26,827.3 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:830.28,832.3 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:837.98,839.19 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:848.2,849.27 2 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:852.2,854.28 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:839.19,840.28 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:845.3,845.9 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:840.28,841.17 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:841.17,843.5 1 0 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:849.27,851.3 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:854.28,855.16 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:855.16,857.4 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:863.43,867.33 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:867.33,869.3 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:874.38,875.34 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:875.34,876.39 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:876.39,877.51 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:877.51,879.5 1 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:886.47,890.33 3 1 -github.com/ethereum/go-ethereum/eth/fetcher/tx_fetcher.go:890.33,892.3 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:91.35,93.2 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:100.56,102.2 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:104.87,106.16 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:109.2,109.27 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:112.2,113.16 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:116.2,116.15 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:106.16,108.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:109.27,111.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:113.16,115.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:121.69,123.2 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:127.98,129.16 2 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:132.2,132.18 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:135.2,135.19 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:129.16,131.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:132.18,134.3 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:140.90,142.16 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:145.2,145.18 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:148.2,148.19 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:142.16,144.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:145.18,147.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:156.123,158.16 2 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:161.2,161.26 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:164.2,164.35 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:158.16,160.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:161.26,163.3 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:224.125,226.16 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:229.2,230.16 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:233.2,233.41 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:236.2,236.46 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:226.16,228.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:230.16,232.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:233.41,235.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:242.122,245.16 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:248.2,253.43 3 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:256.2,258.22 3 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:261.2,267.34 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:304.2,310.12 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:403.2,403.12 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:430.2,430.17 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:245.16,247.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:253.43,255.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:258.22,260.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:267.34,269.13 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:269.13,273.28 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:273.28,277.50 3 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:295.5,295.12 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:277.50,285.20 4 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:291.6,292.51 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:285.20,288.12 3 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:296.26,296.26 0 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:297.30,298.12 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:310.12,320.16 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:334.3,336.70 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:320.16,324.11 3 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:332.4,332.18 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:325.23,326.158 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:327.34,328.161 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:329.12,330.145 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:336.70,338.11 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:344.4,345.32 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:348.4,352.42 3 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:357.4,358.18 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:364.4,365.18 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:369.4,369.60 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:384.4,387.18 3 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:392.4,393.11 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:398.4,398.30 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:339.29,340.11 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:341.12,341.12 0 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:345.32,347.5 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:352.42,355.5 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:358.18,360.10 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:365.18,367.10 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:369.60,374.34 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:378.5,379.59 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:374.34,376.6 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:379.59,382.6 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:387.18,389.10 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:394.138,394.138 0 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:395.29,396.11 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:403.12,408.28 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:408.28,421.62 6 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:421.62,422.58 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:425.5,426.11 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:422.58,424.6 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:435.128,437.16 2 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:440.2,440.43 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:437.16,439.3 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:445.120,447.16 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:450.2,450.43 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:447.16,449.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:455.116,457.65 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:460.2,460.43 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:457.65,459.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:465.117,467.16 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:470.2,470.42 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:467.16,469.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:476.117,478.18 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:481.2,481.43 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:478.18,480.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:487.123,489.16 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:492.2,492.57 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:489.16,491.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:497.118,499.18 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:503.2,503.18 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:506.2,506.28 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:509.2,510.16 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:513.2,514.43 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:517.2,518.16 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:521.2,528.42 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:549.2,549.19 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:499.18,502.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:503.18,505.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:506.28,508.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:510.16,512.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:514.43,516.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:518.16,520.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:528.42,535.95 3 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:547.3,547.70 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:535.95,544.4 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:555.126,557.18 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:560.2,560.57 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:557.18,559.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:566.116,567.28 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:570.2,571.16 2 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:574.2,575.43 2 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:578.2,579.16 2 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:583.2,592.24 3 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:595.2,596.34 2 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:619.2,621.25 3 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:637.2,641.19 3 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:644.2,644.21 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:567.28,569.3 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:571.16,573.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:575.43,577.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:579.16,581.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:592.24,594.3 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:596.34,598.13 2 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:598.13,602.27 3 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:602.27,610.19 4 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:614.5,614.54 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:610.19,612.14 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:621.25,629.95 5 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:635.3,635.65 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:629.95,631.9 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:641.19,643.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:650.125,652.55 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:657.2,657.28 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:660.2,661.16 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:664.2,665.43 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:668.2,669.16 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:673.2,677.19 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:681.2,697.46 3 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:708.2,708.42 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:762.2,762.19 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:652.55,653.40 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:653.40,655.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:657.28,659.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:661.16,663.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:665.43,667.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:669.16,671.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:677.19,680.3 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:697.46,703.67 4 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:703.67,706.4 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:708.42,719.55 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:740.3,743.20 4 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:746.3,746.18 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:750.3,750.17 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:755.3,758.26 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:719.55,722.14 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:725.4,726.18 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:729.4,737.5 3 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:722.14,724.5 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:726.18,728.5 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:743.20,745.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:746.18,749.4 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:750.17,752.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:758.26,759.9 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:767.60,768.42 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:773.2,773.14 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:768.42,769.24 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:769.24,771.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:778.115,780.15 2 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:789.2,789.16 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:794.2,794.22 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:797.2,798.43 2 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:801.2,802.16 2 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:805.2,806.16 2 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:809.2,814.61 2 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:780.15,783.16 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:783.16,787.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:789.16,791.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:794.22,796.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:798.43,800.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:802.16,804.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:806.16,808.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:821.160,827.42 2 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:834.2,834.16 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:838.2,839.43 2 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:842.2,843.16 2 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:847.2,847.19 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:853.2,854.16 2 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:857.2,860.19 3 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:868.2,868.73 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:827.42,829.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:829.8,829.53 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:829.53,831.3 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:831.8,833.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:834.16,836.3 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:839.43,841.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:843.16,845.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:847.19,848.62 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:848.62,850.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:854.16,856.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:860.19,867.3 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:874.173,881.9 2 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:909.2,915.16 4 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:920.2,920.33 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:882.21,883.39 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:884.28,887.28 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:892.3,892.55 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:905.10,906.49 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:887.28,888.70 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:888.70,890.5 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:892.55,894.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:894.9,896.14 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:902.4,903.14 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:896.14,898.63 2 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:898.63,900.6 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:915.16,917.3 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:921.28,924.31 2 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:927.3,932.9 1 1 -github.com/ethereum/go-ethereum/eth/tracers/api.go:934.14,935.28 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:937.10,938.51 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:924.31,926.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/api.go:943.38,953.2 1 0 -github.com/ethereum/go-ethereum/eth/tracers/tracers.go:55.55,56.14 1 0 -github.com/ethereum/go-ethereum/eth/tracers/tracers.go:56.14,58.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/tracers.go:58.8,60.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/tracers.go:65.53,66.33 1 0 -github.com/ethereum/go-ethereum/eth/tracers/tracers.go:71.2,71.44 1 0 -github.com/ethereum/go-ethereum/eth/tracers/tracers.go:66.33,67.51 1 0 -github.com/ethereum/go-ethereum/eth/tracers/tracers.go:67.51,69.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:37.33,39.2 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:42.57,44.41 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:44.41,46.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:50.72,56.2 2 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:60.51,62.27 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:65.2,65.23 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:70.2,70.26 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:76.2,76.30 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:93.2,93.13 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:62.27,64.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:65.23,66.32 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:66.32,68.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:70.26,71.29 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:71.29,73.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:76.30,79.36 2 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:82.3,82.27 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:87.3,87.32 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:79.36,81.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:82.27,83.38 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:83.38,85.5 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:87.32,88.33 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:88.33,90.5 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:97.52,99.30 2 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:106.2,106.12 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:99.30,101.27 2 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:104.3,104.27 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:101.27,103.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:119.121,123.35 2 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:126.2,127.25 2 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:135.2,138.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:123.35,125.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:127.25,128.37 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:131.3,131.39 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:128.37,130.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:131.39,133.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:141.150,142.2 0 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:145.144,149.58 4 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:153.2,153.138 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:159.2,159.107 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:149.58,152.3 2 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:153.138,155.33 2 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:155.33,157.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:159.107,161.33 2 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:161.33,163.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:167.129,168.2 0 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:170.97,170.98 0 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:172.137,173.2 0 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:175.81,175.82 0 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:178.58,180.2 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/access_list_tracer.go:183.64,185.2 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:18.50,51.2 17 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:54.55,70.52 3 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:73.2,73.19 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:76.2,76.19 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:79.2,79.20 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:82.2,82.24 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:85.2,85.23 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:88.2,88.27 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:91.2,91.22 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:94.2,94.27 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:97.2,97.24 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:100.2,100.22 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:103.2,103.30 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:106.2,106.20 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:109.2,109.12 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:70.52,72.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:73.19,75.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:76.19,78.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:79.20,81.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:82.24,84.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:85.23,87.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:88.27,90.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:91.22,93.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:94.27,96.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:97.24,99.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:100.22,102.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:103.30,105.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/gen_structlog.go:106.20,108.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:40.33,42.28 2 1 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:45.2,45.12 1 1 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:42.28,44.3 1 1 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:90.37,92.2 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:95.42,96.18 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:99.2,99.11 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:96.18,98.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:118.49,122.16 2 1 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:125.2,125.15 1 1 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:122.16,124.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:129.32,134.2 4 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:137.145,139.2 1 1 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:144.140,149.52 4 1 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:153.2,154.24 2 1 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:159.2,160.25 2 1 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:166.2,170.66 4 1 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:194.2,195.28 2 1 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:200.2,201.30 2 1 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:149.52,151.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:154.24,157.3 2 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:160.25,162.37 2 1 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:162.37,164.4 1 1 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:170.66,173.43 1 1 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:177.3,177.38 1 1 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:173.43,175.4 1 1 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:177.38,184.4 3 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:184.9,184.46 1 1 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:184.46,192.4 3 1 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:195.28,198.3 2 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:206.127,207.2 0 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:210.94,213.17 3 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:213.17,215.17 2 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:215.17,217.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:221.135,222.2 0 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:224.79,224.80 0 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:227.49,227.66 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:230.38,230.54 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:233.40,233.59 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:236.53,237.27 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:237.27,239.21 2 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:242.3,244.25 2 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:250.3,250.26 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:254.3,254.27 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:260.3,260.30 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:264.3,264.23 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:239.21,241.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:244.25,246.45 2 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:246.45,248.5 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:250.26,253.4 2 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:254.27,256.37 2 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:256.37,258.5 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:260.30,263.4 2 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:269.53,270.27 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:270.27,273.36 2 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:277.3,278.23 2 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:273.36,275.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:290.65,292.18 2 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:295.2,295.10 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:292.18,294.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:298.141,300.13 2 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:310.2,313.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:300.13,304.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:304.8,308.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:317.136,321.25 3 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:330.2,332.16 3 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:321.25,324.37 2 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:327.3,328.34 2 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:324.37,326.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:332.16,334.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:337.122,339.2 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:341.91,344.2 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:346.131,347.2 0 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger.go:349.75,349.76 0 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:38.63,40.18 2 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:43.2,43.10 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:40.18,42.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:46.128,48.2 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:50.131,53.2 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:56.138,70.24 4 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:73.2,73.25 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:76.2,76.28 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:79.2,79.23 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:70.24,72.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:73.25,75.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:76.28,78.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:83.92,91.16 3 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:94.2,94.93 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:91.16,93.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:97.133,98.2 0 0 -github.com/ethereum/go-ethereum/eth/tracers/logger/logger_json.go:100.77,100.78 0 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter_system.go:12.90,13.51 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter_system.go:13.51,15.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter_system.go:19.91,32.2 2 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:70.116,75.24 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:82.2,82.35 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:89.2,98.15 6 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:75.24,77.37 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:80.3,80.36 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:77.37,79.4 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:82.35,84.35 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:87.3,87.36 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:84.35,86.4 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:103.117,108.2 3 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:112.93,119.2 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:123.66,125.32 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:136.2,137.19 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:140.2,142.19 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:145.2,146.17 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:150.2,155.59 3 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:165.2,167.18 3 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:125.32,127.17 2 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:130.3,130.20 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:133.3,133.34 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:127.17,129.4 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:130.20,132.4 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:137.19,139.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:142.19,144.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:146.17,148.3 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:155.59,156.20 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:161.3,161.17 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:156.20,158.4 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:158.9,160.4 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:161.17,163.4 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:172.85,177.16 3 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:180.2,187.6 4 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:177.16,179.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:187.6,188.10 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:189.32,191.11 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:198.4,202.35 3 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:205.4,206.18 2 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:209.4,209.33 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:211.21,212.26 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:191.11,193.19 2 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:196.5,196.21 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:193.19,195.6 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:202.35,204.5 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:206.18,208.5 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:219.87,222.41 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:233.2,233.18 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:222.41,224.34 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:227.3,228.17 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:231.3,231.32 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:224.34,226.4 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:228.17,230.4 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:237.102,238.54 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:245.2,245.18 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:238.54,240.17 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:243.3,243.32 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:240.17,242.4 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:250.105,253.16 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:256.2,257.32 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:260.2,261.19 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:276.2,276.17 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:253.16,255.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:257.32,259.3 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:261.19,263.40 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:274.3,274.19 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:263.40,265.18 2 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:268.4,269.37 2 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:272.4,272.66 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:265.18,267.5 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:269.37,271.5 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter.go:279.66,280.33 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:286.2,286.14 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:280.33,281.16 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:281.16,283.4 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:290.130,293.27 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:322.2,322.12 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:293.27,294.89 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:297.3,297.83 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:301.3,301.62 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:305.3,305.36 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:308.3,308.30 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:320.3,320.25 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:294.89,295.12 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:297.83,298.12 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:301.62,302.12 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:305.36,306.17 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:308.30,310.30 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:316.4,316.14 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:310.30,311.31 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:311.31,313.11 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:316.14,317.18 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:325.94,326.24 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:339.2,339.29 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:351.2,351.13 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:326.24,328.34 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:334.3,334.16 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:328.34,329.38 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:329.38,331.10 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:334.16,336.4 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:339.29,341.29 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:347.3,347.16 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:341.29,342.39 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:342.39,344.10 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter.go:347.16,349.4 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:123.67,146.111 8 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:150.2,151.10 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:146.111,148.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:163.45,165.2 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:168.40,169.26 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:169.26,171.7 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:188.3,188.14 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:171.7,176.11 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:177.35,178.24 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:179.22,179.22 0 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:180.24,180.24 0 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:181.25,181.25 0 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:193.67,197.2 3 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:202.112,204.27 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:209.2,209.25 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:216.2,216.68 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:220.2,220.66 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:224.2,224.40 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:228.2,228.67 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:232.2,232.46 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:235.2,235.76 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:204.27,206.3 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:206.8,208.3 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:209.25,211.3 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:211.8,213.3 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:216.68,218.3 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:220.66,222.3 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:224.40,226.3 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:228.67,230.3 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:232.46,234.3 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:240.115,253.2 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:257.103,270.2 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:274.110,287.2 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:291.84,303.2 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:307.85,319.2 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:323.73,324.18 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:327.2,327.46 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:324.18,326.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:327.46,329.27 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:329.27,331.4 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:335.80,336.18 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:339.2,339.53 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:336.18,338.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:339.53,341.27 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:341.27,343.4 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:347.89,348.46 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:348.46,350.27 2 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:350.27,352.4 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:356.81,358.28 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:361.2,361.61 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:358.28,360.3 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:361.61,363.3 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:366.82,367.48 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:370.2,370.56 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:367.48,369.3 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:370.56,371.84 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:371.84,372.48 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:372.48,373.121 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:373.121,375.6 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:381.104,384.17 3 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:387.2,390.33 3 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:405.2,405.31 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:409.2,409.44 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:384.17,386.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:390.33,391.51 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:395.3,395.50 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:391.51,394.4 2 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:395.50,398.19 3 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:398.19,401.5 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:405.31,407.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:409.44,411.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:415.140,416.50 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:451.2,451.12 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:416.50,421.17 4 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:424.3,425.33 2 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:432.3,433.57 2 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:449.3,449.14 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:421.17,423.4 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:425.33,426.29 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:426.29,430.5 3 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:433.57,436.18 2 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:439.4,440.37 2 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:447.4,447.62 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:436.18,438.5 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:440.37,441.38 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:441.38,445.6 3 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:455.36,457.15 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:466.2,467.63 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:471.2,471.6 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:457.15,464.3 6 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:467.63,469.3 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:471.6,472.10 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:473.25,474.32 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:475.26,476.28 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:477.28,478.35 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:479.33,480.35 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:481.27,482.34 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:483.31,484.38 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:486.26,487.48 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:494.4,494.22 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:496.28,497.48 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:504.4,504.16 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:507.26,508.10 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:509.27,510.10 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:511.29,512.10 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:513.28,514.10 1 0 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:487.48,491.5 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:491.10,493.5 1 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:497.48,501.5 2 1 -github.com/ethereum/go-ethereum/eth/filters/filter_system.go:501.10,503.5 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:64.112,75.2 3 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:79.64,83.6 4 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:83.6,86.34 3 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:95.3,100.33 2 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:103.3,103.20 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:86.34,87.11 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:88.24,90.28 2 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:91.12,92.13 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:100.33,102.4 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:114.66,124.12 5 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:142.2,142.24 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:124.12,125.7 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:125.7,126.11 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:127.28,129.56 2 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:132.5,132.27 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:133.30,137.11 4 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:129.56,131.6 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:147.100,149.16 2 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:153.2,155.12 2 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:177.2,177.20 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:149.16,151.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:155.12,159.7 3 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:159.7,160.11 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:161.30,164.30 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:167.24,169.11 2 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:170.29,172.11 2 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:164.30,166.6 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:184.53,194.12 5 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:212.2,212.21 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:194.12,195.7 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:195.7,196.11 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:197.24,199.53 2 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:202.5,202.27 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:203.27,207.11 4 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:199.53,201.6 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:216.86,218.16 2 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:222.2,224.12 2 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:242.2,242.20 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:218.16,220.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:224.12,228.7 3 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:228.7,229.11 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:230.24,231.34 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:232.24,234.11 2 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:235.29,237.11 2 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:246.103,248.16 2 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:252.2,258.16 3 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:262.2,262.12 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:280.2,280.20 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:248.16,250.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:258.16,260.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:262.12,264.7 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:264.7,265.11 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:266.31,267.30 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:270.24,272.11 2 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:273.29,275.11 2 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:267.30,269.6 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:300.76,303.16 3 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:307.2,311.12 4 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:329.2,329.24 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:303.16,305.3 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:311.12,312.7 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:312.7,313.11 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:314.21,316.51 2 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:319.5,319.27 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:320.25,324.11 4 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:316.51,318.6 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:335.101,336.28 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:341.2,345.27 4 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:371.2,372.16 2 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:376.2,376.26 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:387.2,387.30 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:336.28,338.3 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:345.27,349.18 2 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:349.18,351.4 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:352.8,355.28 2 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:358.3,359.26 2 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:363.3,365.18 2 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:355.28,357.4 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:359.26,361.4 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:365.18,367.4 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:372.16,374.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:376.26,379.17 2 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:383.3,383.65 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:379.17,381.4 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:393.61,396.11 3 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:399.2,400.11 2 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:404.2,404.14 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:396.11,398.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:400.11,402.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:411.97,416.41 4 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:420.2,421.29 2 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:438.2,439.16 2 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:442.2,442.30 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:416.41,418.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:421.29,424.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:424.8,427.30 2 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:430.3,431.28 2 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:435.3,435.84 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:427.30,429.4 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:431.28,433.4 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:439.16,441.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:452.78,456.40 3 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:476.2,476.56 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:456.40,457.25 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:462.3,464.16 2 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:457.25,461.4 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:465.60,468.36 3 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:469.58,472.32 3 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:481.55,482.19 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:485.2,485.15 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:482.19,484.3 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:490.49,491.17 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:494.2,494.13 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:491.17,493.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:498.62,508.51 3 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:512.2,512.26 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:528.2,530.26 2 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:558.2,558.25 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:597.2,597.12 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:508.51,510.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:512.26,513.49 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:517.3,517.33 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:513.49,516.4 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:518.8,519.27 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:523.3,523.25 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:519.27,521.4 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:523.25,525.4 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:530.26,532.42 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:533.22,534.33 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:545.15,547.18 2 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:550.4,550.43 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:551.11,552.51 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:534.33,535.41 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:535.41,537.20 2 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:540.6,540.51 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:537.20,539.7 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:541.11,543.6 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:547.18,549.5 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:558.25,560.32 2 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:560.32,561.29 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:562.13,562.13 0 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:565.16,568.19 2 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:571.5,571.40 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:573.23,575.36 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:591.12,592.42 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:568.19,570.6 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:575.36,576.25 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:581.6,581.44 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:576.25,579.12 2 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:581.44,583.21 2 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:586.7,586.54 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:583.21,585.8 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:587.12,589.7 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:600.54,602.50 2 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:605.2,605.38 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:602.50,604.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/api.go:608.49,610.47 2 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:613.2,613.35 1 1 -github.com/ethereum/go-ethereum/eth/filters/api.go:610.47,612.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_api.go:16.77,18.2 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_api.go:20.109,21.28 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_api.go:26.2,29.27 3 0 -github.com/ethereum/go-ethereum/eth/filters/bor_api.go:47.2,48.16 2 0 -github.com/ethereum/go-ethereum/eth/filters/bor_api.go:51.2,51.30 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_api.go:21.28,23.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_api.go:29.27,32.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_api.go:32.8,35.28 2 0 -github.com/ethereum/go-ethereum/eth/filters/bor_api.go:38.3,39.26 2 0 -github.com/ethereum/go-ethereum/eth/filters/bor_api.go:43.3,43.100 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_api.go:35.28,37.4 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_api.go:39.26,41.4 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_api.go:48.16,50.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_api.go:55.120,57.16 2 0 -github.com/ethereum/go-ethereum/eth/filters/bor_api.go:61.2,62.12 2 0 -github.com/ethereum/go-ethereum/eth/filters/bor_api.go:83.2,83.20 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_api.go:57.16,59.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_api.go:62.12,66.7 3 0 -github.com/ethereum/go-ethereum/eth/filters/bor_api.go:66.7,67.11 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_api.go:68.30,70.58 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_api.go:73.24,75.11 2 0 -github.com/ethereum/go-ethereum/eth/filters/bor_api.go:76.29,78.11 2 0 -github.com/ethereum/go-ethereum/eth/filters/bor_api.go:70.58,72.6 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:43.155,50.2 4 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:54.151,59.2 3 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:63.132,71.2 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:75.78,77.32 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:86.2,87.19 2 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:90.2,92.19 2 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:97.2,100.17 3 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:105.2,105.42 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:77.32,79.21 2 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:82.3,82.38 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:79.21,81.4 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:87.19,89.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:92.19,94.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:100.17,102.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:110.99,113.54 2 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:132.2,132.18 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:113.54,115.34 2 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:120.3,121.35 2 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:126.3,127.17 2 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:130.3,130.32 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:115.34,117.4 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:121.35,122.12 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:127.17,129.4 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:136.119,137.55 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:140.2,140.18 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:137.55,139.3 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:143.53,145.12 2 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:149.2,149.19 1 0 -github.com/ethereum/go-ethereum/eth/filters/bor_filter.go:145.12,147.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/discovery.go:30.35,32.2 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:86.76,88.59 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:93.2,94.43 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:116.2,116.18 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:88.59,91.3 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:94.43,101.55 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:101.55,102.76 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:102.76,104.6 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:106.33,108.5 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:109.44,111.5 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:121.48,122.6 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:122.6,123.54 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:123.54,126.4 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:133.55,136.16 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:139.2,139.31 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:142.2,145.21 3 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:157.2,157.9 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:136.16,138.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:139.31,141.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:145.21,147.31 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:147.31,148.37 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:153.4,153.96 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:148.37,152.5 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:158.38,161.42 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:165.3,172.5 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:174.35,177.41 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:181.3,181.42 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:186.3,188.35 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:190.39,193.42 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:197.3,204.5 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:206.36,209.41 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:213.3,213.35 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:220.3,222.35 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:224.35,227.42 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:231.3,237.5 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:239.32,242.41 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:245.3,247.35 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:249.35,252.42 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:256.3,257.17 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:261.3,264.5 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:266.32,269.41 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:272.3,274.35 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:276.10,277.59 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:161.42,163.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:177.41,179.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:181.42,182.78 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:182.78,184.5 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:193.42,195.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:209.41,211.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:213.35,214.36 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:214.36,215.65 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:215.65,217.6 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:227.42,229.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:242.41,244.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:252.42,254.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:257.17,259.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:269.41,271.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:283.113,284.35 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:288.2,289.16 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:292.2,293.16 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:297.2,302.16 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:322.2,326.58 3 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:330.2,330.29 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:336.2,337.40 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:340.2,340.25 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:284.35,286.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:289.16,291.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:293.16,295.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:302.16,315.48 5 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:318.3,318.23 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:315.48,316.9 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:318.23,319.9 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:326.58,329.3 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:330.29,331.53 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:331.53,334.4 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:337.40,339.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:343.117,344.35 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:352.2,360.39 3 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:448.2,448.22 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:344.35,346.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:360.39,363.24 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:367.3,368.26 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:371.3,372.25 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:376.3,377.17 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:381.3,386.17 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:407.3,413.41 3 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:363.24,364.9 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:368.26,370.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:372.25,374.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:377.17,379.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:386.17,387.25 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:391.4,403.45 5 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:387.25,389.10 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:403.45,404.10 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:413.41,417.18 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:420.4,421.73 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:424.4,425.18 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:428.4,429.60 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:433.4,433.31 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:439.4,439.42 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:445.4,445.9 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:417.18,419.5 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:421.73,423.5 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:425.18,427.5 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:429.60,432.5 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:433.31,434.59 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:434.59,437.6 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:439.42,441.5 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:453.89,454.35 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:457.2,457.38 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:461.2,465.34 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:478.2,478.14 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:454.35,456.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:457.38,459.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:465.34,466.24 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:474.3,474.24 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:466.24,470.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:470.9,470.73 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:470.73,473.4 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:474.24,475.9 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:483.115,484.35 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:488.2,491.16 3 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:495.2,496.17 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:504.2,509.36 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:557.2,557.19 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:484.35,486.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:491.16,494.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:496.17,502.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:509.36,510.23 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:553.3,553.98 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:511.10,513.76 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:515.10,519.18 3 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:522.4,523.30 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:525.11,529.36 3 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:532.4,534.18 3 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:537.4,537.37 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:519.18,520.10 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:529.36,530.10 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:534.18,535.10 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:537.37,540.19 3 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:543.5,547.100 3 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:540.19,541.11 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:547.100,548.11 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:553.98,554.9 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/handler.go:565.49,567.2 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/peer.go:38.69,47.2 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/peer.go:50.71,57.2 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/peer.go:60.28,62.2 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/peer.go:65.31,67.2 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/peer.go:70.33,72.2 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/peer.go:76.112,87.2 3 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/peer.go:92.132,93.41 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/peer.go:98.2,106.4 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/peer.go:93.41,95.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/peer.go:95.8,97.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/peer.go:110.86,119.2 3 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/peer.go:123.107,133.2 3 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:101.72,106.33 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:113.2,113.30 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:106.33,108.17 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:111.3,111.41 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:108.17,110.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:141.70,146.32 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:154.2,154.25 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:146.32,149.30 3 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:149.30,152.4 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:196.45,196.73 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:197.45,197.74 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:199.42,199.67 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:200.42,200.68 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:202.46,202.75 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:203.46,203.76 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:205.43,205.69 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:206.43,206.70 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:208.42,208.67 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:209.42,209.68 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:211.39,211.61 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:212.39,212.62 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:214.42,214.67 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:215.42,215.68 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:217.39,217.61 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/protocol.go:218.39,218.62 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/range.go:35.61,48.2 5 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/range.go:51.33,53.14 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/range.go:56.2,57.13 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/range.go:53.14,55.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/range.go:61.41,63.2 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/range.go:66.39,69.14 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/range.go:72.2,72.42 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/range.go:69.14,71.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/range.go:76.41,81.2 4 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:456.48,481.2 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:484.48,489.30 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:495.2,508.12 10 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:489.30,494.3 3 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:512.46,515.31 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:521.2,536.12 11 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:515.31,520.3 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:543.69,556.34 6 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:560.2,561.60 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:565.2,565.15 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:573.2,576.15 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:582.2,585.15 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:596.2,619.6 8 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:556.34,558.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:561.60,564.3 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:565.15,566.32 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:569.3,570.21 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:566.32,568.4 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:576.15,577.36 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:577.36,580.4 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:585.15,594.3 8 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:619.6,623.61 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:627.3,631.24 4 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:637.3,637.10 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:670.3,670.18 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:623.61,625.4 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:631.24,635.4 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:638.19,638.19 0 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:640.19,640.19 0 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:642.25,643.24 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:644.17,645.23 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:647.33,648.31 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:649.34,650.32 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:651.33,652.31 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:653.38,654.36 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:655.38,656.36 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:658.30,659.33 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:660.31,661.34 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:662.30,663.33 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:664.35,665.38 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:666.35,667.38 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:676.35,679.65 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:727.2,741.42 9 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:679.65,680.59 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:680.59,682.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:682.9,683.40 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:686.4,687.33 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:708.4,721.10 12 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:683.40,685.5 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:687.33,690.44 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:694.5,696.44 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:690.44,692.7 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:696.44,697.39 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:697.39,700.46 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:704.7,704.60 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:700.46,702.9 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:741.42,743.32 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:747.3,749.42 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:753.3,761.69 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:743.32,746.4 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:749.42,751.5 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:766.35,768.31 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:781.2,795.16 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:798.2,798.45 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:768.31,769.47 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:772.3,772.42 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:769.47,771.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:772.42,773.37 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:773.37,774.52 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:774.52,776.6 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:795.16,796.13 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:802.59,819.21 5 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:823.2,823.26 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:819.21,822.3 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:828.38,830.23 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:834.2,834.36 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:841.2,841.23 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:830.23,832.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:834.36,835.22 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:835.22,838.4 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:841.23,848.3 4 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:853.38,854.31 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:854.31,855.48 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:855.48,857.39 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:863.4,863.25 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:868.4,868.41 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:873.4,877.22 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:857.39,858.25 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:858.25,861.6 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:863.25,865.13 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:868.41,869.24 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:869.24,871.6 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:877.22,879.5 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:886.117,896.34 5 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:903.2,903.26 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:906.2,909.31 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:896.34,897.40 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:900.3,901.86 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:897.40,898.12 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:903.26,905.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:909.31,911.41 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:917.3,917.27 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:920.3,929.7 4 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:940.3,952.64 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:957.3,961.29 4 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:978.3,978.17 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:911.41,912.12 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:917.27,919.4 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:929.7,931.18 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:934.4,934.41 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:937.4,937.9 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:931.18,932.13 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:934.41,935.13 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:952.64,956.4 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:961.29,965.28 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:968.4,968.28 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:971.4,971.100 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:965.28,967.5 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:968.28,970.5 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:971.100,974.5 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:983.120,993.35 5 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1000.2,1000.26 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1003.2,1006.31 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:993.35,994.40 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:997.3,998.83 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:994.40,995.12 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1000.26,1002.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1006.31,1008.22 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1012.3,1012.31 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1018.3,1018.27 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1021.3,1030.7 4 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1041.3,1041.32 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1044.3,1045.36 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1052.3,1063.64 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1068.3,1072.13 4 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1008.22,1009.12 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1012.31,1013.12 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1018.27,1020.4 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1030.7,1032.18 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1035.4,1035.42 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1038.4,1038.9 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1032.18,1033.13 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1035.42,1036.13 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1041.32,1043.4 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1045.36,1048.26 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1048.26,1049.10 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1063.64,1067.4 3 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1072.13,1076.79 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1076.79,1079.5 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1086.117,1096.34 5 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1103.2,1103.26 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1106.2,1109.31 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1096.34,1097.40 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1100.3,1101.87 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1097.40,1098.12 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1103.26,1105.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1109.31,1111.22 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1115.3,1115.59 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1121.3,1121.27 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1124.3,1133.7 4 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1146.3,1146.27 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1149.3,1149.27 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1152.3,1159.48 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1175.3,1175.21 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1190.3,1190.25 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1193.3,1206.21 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1210.3,1210.64 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1215.3,1219.29 4 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1234.3,1234.21 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1111.22,1112.12 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1115.59,1116.12 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1121.27,1123.4 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1133.7,1135.18 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1138.4,1138.41 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1141.4,1141.9 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1135.18,1136.13 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1138.41,1139.13 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1146.27,1148.4 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1149.27,1151.4 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1159.48,1160.32 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1171.4,1171.22 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1160.32,1162.22 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1166.5,1169.10 4 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1162.22,1163.14 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1171.22,1172.10 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1175.21,1177.48 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1177.48,1183.37 4 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1183.37,1184.11 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1190.25,1191.12 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1206.21,1209.4 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1210.64,1214.4 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1219.29,1224.22 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1227.4,1227.103 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1224.22,1226.5 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1227.103,1230.5 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1234.21,1236.4 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1242.132,1252.39 5 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1259.2,1259.26 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1262.2,1265.70 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1252.39,1253.40 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1256.3,1257.83 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1253.40,1254.12 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1259.26,1261.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1265.70,1273.18 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1283.3,1283.35 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1289.3,1289.27 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1292.3,1301.7 4 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1312.3,1312.32 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1315.3,1320.49 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1331.3,1343.64 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1348.3,1352.29 4 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1273.18,1275.31 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1278.4,1278.31 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1275.31,1277.5 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1278.31,1280.5 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1283.35,1285.4 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1289.27,1291.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1301.7,1303.18 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1306.4,1306.46 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1309.4,1309.9 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1303.18,1304.13 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1306.46,1307.13 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1312.32,1314.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1320.49,1327.26 5 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1327.26,1328.10 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1343.64,1347.4 3 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1352.29,1356.87 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1356.87,1359.5 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1366.132,1376.39 5 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1383.2,1383.26 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1386.2,1389.70 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1376.39,1377.40 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1380.3,1381.83 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1377.40,1378.12 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1383.26,1385.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1389.70,1397.18 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1407.3,1407.35 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1413.3,1413.27 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1416.3,1425.7 4 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1436.3,1436.32 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1439.3,1440.40 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1448.3,1459.64 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1464.3,1468.13 4 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1397.18,1399.31 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1402.4,1402.31 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1399.31,1401.5 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1402.31,1404.5 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1407.35,1409.4 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1413.27,1415.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1425.7,1427.18 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1430.4,1430.46 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1433.4,1433.9 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1427.18,1428.13 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1430.46,1431.13 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1436.32,1438.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1440.40,1444.26 3 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1444.26,1445.10 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1459.64,1463.4 3 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1468.13,1472.79 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1472.79,1475.5 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1482.46,1486.36 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1491.2,1492.37 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1497.2,1498.36 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1503.2,1504.41 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1509.2,1510.41 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1515.2,1518.34 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1521.2,1521.35 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1524.2,1524.34 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1527.2,1527.39 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1530.2,1530.39 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1486.36,1487.23 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1487.23,1489.4 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1492.37,1493.23 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1493.23,1495.4 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1498.36,1499.23 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1499.23,1501.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1504.41,1505.23 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1505.23,1507.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1510.41,1511.23 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1511.23,1513.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1518.34,1520.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1521.35,1523.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1524.34,1526.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1527.39,1529.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1530.39,1532.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1537.68,1538.9 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1539.25,1539.25 0 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1541.20,1541.20 0 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1543.19,1543.19 0 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1553.60,1555.9 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1561.2,1571.25 6 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1556.19,1558.9 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1559.10,1559.10 0 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1571.25,1573.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1578.70,1579.9 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1580.25,1580.25 0 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1582.20,1582.20 0 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1584.19,1584.19 0 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1594.62,1596.9 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1602.2,1612.34 6 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1597.19,1599.9 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1600.10,1600.10 0 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1612.34,1614.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1619.68,1620.9 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1621.25,1621.25 0 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1623.20,1623.20 0 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1625.19,1625.19 0 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1635.60,1637.9 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1643.2,1653.24 6 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1638.19,1640.9 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1641.10,1641.10 0 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1653.24,1655.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1655.8,1656.40 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1656.40,1658.4 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1664.78,1665.9 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1666.25,1666.25 0 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1668.20,1668.20 0 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1670.19,1670.19 0 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1680.70,1682.9 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1688.2,1698.34 6 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1683.19,1685.9 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1686.10,1686.10 0 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1698.34,1700.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1705.78,1706.9 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1707.25,1707.25 0 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1709.20,1709.20 0 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1711.19,1711.19 0 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1721.70,1723.9 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1729.2,1739.34 6 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1724.19,1726.9 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1727.10,1727.10 0 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1739.34,1741.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1746.63,1753.34 4 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1771.2,1781.39 8 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1815.2,1815.38 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1823.2,1823.24 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1753.34,1757.15 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1761.3,1761.14 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1757.15,1759.12 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1761.14,1766.9 4 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1781.39,1783.51 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1791.3,1791.32 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1783.51,1784.76 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1784.76,1788.5 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1791.32,1792.63 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1792.63,1797.61 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1807.5,1808.20 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1797.61,1799.39 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1802.6,1803.41 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1799.39,1801.7 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1804.11,1806.6 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1815.38,1816.34 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1816.34,1819.4 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1823.24,1826.3 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1833.65,1839.34 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1858.2,1859.38 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1862.2,1869.24 4 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1839.34,1843.18 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1848.3,1848.49 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1855.3,1856.37 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1843.18,1845.12 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1848.49,1849.76 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1849.76,1852.5 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1859.38,1861.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1869.24,1872.3 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1879.63,1881.24 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1884.2,1886.41 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1890.2,1896.39 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2043.2,2043.24 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2064.2,2064.38 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2067.2,2073.28 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1881.24,1883.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1886.41,1888.4 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1896.39,1898.27 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1904.3,1904.48 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2020.3,2022.50 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2032.3,2032.43 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1898.27,1900.12 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1904.48,1905.23 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1908.4,1913.95 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1919.4,1919.93 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1924.4,1924.64 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1992.4,1992.26 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1905.23,1906.13 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1913.95,1916.5 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1919.93,1921.5 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1924.64,1927.57 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1927.57,1933.23 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1942.6,1942.81 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1950.6,1955.45 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1959.6,1966.19 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1981.6,1981.33 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1984.6,1988.28 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1933.23,1935.7 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1942.81,1943.68 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1946.7,1946.125 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1943.68,1945.8 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1947.12,1949.7 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1955.45,1957.8 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1966.19,1969.46 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1973.7,1979.9 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1969.46,1971.9 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1981.33,1983.7 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1992.26,1997.63 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2004.5,2004.19 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2010.5,2010.17 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1997.63,1999.18 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2002.6,2002.20 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:1999.18,2001.7 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2004.19,2008.6 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2010.17,2012.6 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2012.11,2014.6 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2022.50,2024.44 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2027.4,2027.15 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2024.44,2026.5 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2032.43,2037.52 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2037.52,2039.5 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2043.24,2044.23 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2056.3,2056.82 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2044.23,2045.61 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2045.61,2047.5 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2047.10,2047.39 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2047.39,2049.53 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2049.53,2050.54 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2050.54,2052.7 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2056.82,2057.55 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2060.4,2060.32 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2057.55,2059.5 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2064.38,2066.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2073.28,2076.3 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2083.73,2084.34 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2107.2,2108.57 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2111.2,2111.38 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2114.2,2114.113 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2084.34,2088.18 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2093.3,2097.14 4 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2088.18,2090.12 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2098.12,2098.12 0 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2099.33,2100.24 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2101.29,2102.24 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2103.11,2104.69 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2108.57,2110.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2111.38,2113.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2119.73,2120.34 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2143.2,2144.57 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2147.2,2147.38 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2150.2,2150.112 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2120.34,2124.18 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2129.3,2133.14 4 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2124.18,2126.12 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2134.12,2134.12 0 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2135.33,2136.24 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2137.29,2138.24 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2139.11,2140.69 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2144.57,2146.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2147.38,2149.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2156.56,2159.16 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2162.2,2171.41 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2175.2,2175.34 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2193.2,2193.38 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2196.2,2200.34 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2207.2,2212.15 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2217.2,2217.67 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2223.2,2223.114 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2159.16,2161.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2171.41,2173.4 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2175.34,2176.44 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2179.3,2184.24 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2176.44,2177.9 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2184.24,2186.18 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2189.4,2189.38 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2186.18,2187.15 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2193.38,2195.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2200.34,2201.44 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2204.3,2204.28 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2201.44,2203.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2212.15,2213.50 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2213.50,2215.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2217.67,2218.47 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2221.3,2221.24 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2218.47,2220.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2228.118,2230.35 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2233.2,2233.29 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2236.2,2243.37 4 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2246.2,2246.9 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2251.2,2252.9 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2258.2,2263.25 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2272.2,2272.63 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2281.2,2286.29 4 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2289.2,2290.29 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2293.2,2296.19 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2299.2,2300.16 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2306.2,2307.35 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2314.2,2320.9 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2325.2,2325.12 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2230.35,2232.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2233.29,2235.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2243.37,2245.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2247.30,2247.30 0 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2248.10,2248.10 0 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2252.9,2257.3 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2263.25,2267.3 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2272.63,2280.3 5 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2286.29,2288.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2290.29,2292.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2296.19,2298.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2300.16,2305.3 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2307.35,2309.55 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2312.3,2312.16 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2309.55,2310.14 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2321.31,2321.31 0 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2322.20,2322.20 0 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2323.19,2323.19 0 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2330.82,2335.13 4 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2338.2,2338.47 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2335.13,2337.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2343.82,2345.33 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2348.2,2355.37 4 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2358.2,2358.9 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2363.2,2364.9 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2370.2,2375.25 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2384.2,2384.25 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2393.2,2401.44 5 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2422.2,2427.9 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2432.2,2432.12 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2345.33,2347.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2355.37,2357.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2359.30,2359.30 0 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2360.10,2360.10 0 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2364.9,2369.3 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2375.25,2379.3 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2384.25,2392.3 5 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2401.44,2407.67 4 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2410.3,2410.26 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2416.3,2419.43 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2407.67,2409.4 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2410.26,2413.12 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2428.31,2428.31 0 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2429.20,2429.20 0 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2430.19,2430.19 0 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2437.118,2444.33 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2448.2,2448.32 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2454.2,2454.29 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2457.2,2464.37 4 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2467.2,2467.9 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2472.2,2473.9 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2479.2,2484.25 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2492.2,2492.31 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2498.2,2498.37 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2508.2,2508.22 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2515.2,2520.35 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2560.2,2569.9 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2574.2,2574.12 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2444.33,2447.3 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2448.32,2449.32 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2452.3,2452.28 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2449.32,2451.4 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2454.29,2456.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2464.37,2466.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2468.30,2468.30 0 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2469.10,2469.10 0 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2473.9,2478.3 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2484.25,2488.3 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2492.31,2497.3 4 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2498.37,2503.3 4 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2508.22,2514.3 5 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2520.35,2523.33 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2526.3,2527.25 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2532.3,2533.22 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2523.33,2525.4 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2527.25,2528.31 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2528.31,2530.5 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2533.22,2537.18 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2537.18,2541.5 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2542.9,2548.21 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2551.4,2552.18 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2548.21,2550.5 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2552.18,2556.5 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2570.31,2570.31 0 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2571.20,2571.20 0 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2572.19,2572.19 0 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2579.82,2581.33 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2584.2,2591.37 4 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2594.2,2594.9 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2599.2,2600.9 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2606.2,2611.25 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2620.2,2620.25 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2629.2,2637.44 5 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2658.2,2664.9 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2669.2,2669.12 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2581.33,2583.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2591.37,2593.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2595.30,2595.30 0 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2596.10,2596.10 0 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2600.9,2605.3 3 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2611.25,2615.3 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2620.25,2628.3 5 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2637.44,2643.67 4 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2646.3,2646.26 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2652.3,2655.51 3 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2643.67,2645.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2646.26,2649.12 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2665.31,2665.31 0 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2666.20,2666.20 0 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2667.19,2667.19 0 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2674.86,2676.33 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2679.2,2686.37 4 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2689.2,2689.9 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2694.2,2695.9 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2701.2,2706.25 3 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2715.2,2715.25 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2724.2,2732.44 5 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2753.2,2758.9 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2763.2,2763.12 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2676.33,2678.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2686.37,2688.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2690.30,2690.30 0 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2691.10,2691.10 0 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2695.9,2700.3 3 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2706.25,2710.3 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2715.25,2723.3 5 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2732.44,2738.67 4 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2741.3,2741.26 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2747.3,2750.51 3 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2738.67,2740.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2741.26,2744.12 3 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2759.31,2759.31 0 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2760.20,2760.20 0 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2761.19,2761.19 0 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2770.66,2771.21 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2781.2,2781.21 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2786.2,2786.54 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2790.2,2790.12 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2771.21,2773.58 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2776.3,2779.80 4 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2773.58,2775.4 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2781.21,2785.3 3 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2786.54,2789.3 2 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2797.37,2798.22 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2802.2,2802.29 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2798.22,2801.3 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2806.49,2808.53 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2812.2,2813.17 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2816.2,2817.31 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2820.2,2821.32 2 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2824.2,2830.20 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2833.2,2844.108 4 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2808.53,2810.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2813.17,2815.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2817.31,2819.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2821.32,2823.3 1 0 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2830.20,2832.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2848.49,2850.53 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2853.2,2863.81 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2850.53,2852.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2869.75,2870.29 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2873.2,2875.23 3 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2879.2,2879.45 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2870.29,2872.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2875.23,2878.3 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2890.34,2892.2 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2894.44,2896.2 1 1 -github.com/ethereum/go-ethereum/eth/protocols/snap/sync.go:2898.39,2901.2 2 1 -github.com/ethereum/go-ethereum/ethclient/bor_ethclient.go:12.116,14.110 2 0 -github.com/ethereum/go-ethereum/ethclient/bor_ethclient.go:17.2,17.22 1 0 -github.com/ethereum/go-ethereum/ethclient/bor_ethclient.go:14.110,16.3 1 0 -github.com/ethereum/go-ethereum/ethclient/bor_ethclient.go:21.101,24.28 3 0 -github.com/ethereum/go-ethereum/ethclient/bor_ethclient.go:27.2,27.15 1 0 -github.com/ethereum/go-ethereum/ethclient/bor_ethclient.go:24.28,26.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:40.43,42.2 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:44.71,46.16 2 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:49.2,49.26 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:46.16,48.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:53.39,55.2 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:57.27,59.2 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:64.66,67.16 3 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:70.2,70.33 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:67.16,69.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:77.92,79.2 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:81.138,84.16 3 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:87.2,87.16 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:84.16,86.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:95.93,97.2 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:100.68,104.2 3 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:112.107,115.16 3 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:121.2,123.51 3 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:126.2,126.51 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:130.2,130.73 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:133.2,133.74 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:136.2,136.71 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:140.2,141.31 2 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:164.2,165.39 2 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:171.2,171.66 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:115.16,117.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:117.8,117.26 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:117.26,119.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:123.51,125.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:126.51,128.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:130.73,132.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:133.74,135.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:136.71,138.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:141.31,144.23 3 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:151.3,151.58 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:154.3,154.23 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:144.23,150.4 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:151.58,153.4 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:154.23,155.28 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:158.4,158.24 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:155.28,157.5 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:158.24,160.5 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:165.39,166.21 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:169.3,169.17 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:166.21,168.4 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:175.94,178.31 3 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:181.2,181.18 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:178.31,180.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:186.95,189.31 3 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:192.2,192.18 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:189.31,191.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:206.59,207.52 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:210.2,210.45 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:207.52,209.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:214.127,217.16 3 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:224.2,224.47 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:227.2,227.46 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:217.16,219.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:219.8,219.24 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:219.24,221.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:221.8,221.62 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:221.62,223.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:224.47,226.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:236.136,239.16 2 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:244.2,248.123 2 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:251.2,251.60 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:254.2,254.23 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:239.16,241.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:248.123,250.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:251.60,253.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:258.94,262.2 3 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:265.122,268.16 3 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:271.2,271.17 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:276.2,276.47 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:279.2,279.21 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:268.16,270.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:271.17,273.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:273.8,273.62 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:273.62,275.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:276.47,278.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:284.103,287.16 3 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:292.2,292.15 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:287.16,288.15 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:288.15,290.4 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:297.85,299.67 2 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:303.2,304.54 2 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:307.2,308.48 2 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:311.2,311.32 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:299.67,301.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:304.54,306.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:308.48,310.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:316.113,318.2 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:323.68,326.67 3 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:329.2,329.46 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:332.2,332.21 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:326.67,328.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:329.46,331.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:337.114,341.2 3 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:345.129,349.2 3 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:353.109,357.2 3 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:361.110,365.2 3 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:370.96,373.16 3 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:376.2,377.20 2 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:373.16,375.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:381.136,383.16 2 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:386.2,386.48 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:383.16,385.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:389.63,394.24 2 1 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:407.2,407.17 1 1 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:394.24,396.45 2 1 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:396.45,398.4 1 1 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:399.8,400.25 1 1 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:405.3,405.44 1 1 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:400.25,402.4 1 1 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:402.9,404.4 1 1 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:413.99,417.2 3 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:420.114,424.2 3 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:427.94,431.2 3 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:435.95,439.2 3 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:442.78,446.2 3 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:456.113,459.16 3 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:462.2,462.17 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:459.16,461.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:467.120,470.16 3 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:473.2,473.17 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:470.16,472.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:478.98,481.16 3 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:484.2,484.17 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:481.16,483.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:489.74,491.68 2 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:494.2,494.30 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:491.68,493.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:499.75,501.80 2 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:504.2,504.30 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:501.80,503.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:511.90,514.16 3 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:517.2,517.25 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:514.16,516.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:524.85,526.16 2 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:529.2,529.83 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:526.16,528.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:532.44,533.19 1 1 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:536.2,537.30 2 1 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:540.2,540.34 1 1 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:533.19,535.3 1 1 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:537.30,539.3 1 1 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:543.50,548.23 2 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:551.2,551.22 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:554.2,554.18 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:557.2,557.25 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:560.2,560.12 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:548.23,550.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:551.22,553.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:554.18,556.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:557.25,559.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:586.63,587.14 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:590.2,608.3 1 0 -github.com/ethereum/go-ethereum/ethclient/ethclient.go:587.14,589.3 1 0 -github.com/ethereum/go-ethereum/ethclient/signer.go:37.89,40.2 1 0 -github.com/ethereum/go-ethereum/ethclient/signer.go:42.59,45.2 2 0 -github.com/ethereum/go-ethereum/ethclient/signer.go:47.82,48.34 1 0 -github.com/ethereum/go-ethereum/ethclient/signer.go:51.2,51.20 1 0 -github.com/ethereum/go-ethereum/ethclient/signer.go:48.34,50.3 1 0 -github.com/ethereum/go-ethereum/ethclient/signer.go:54.47,55.43 1 0 -github.com/ethereum/go-ethereum/ethclient/signer.go:57.68,58.43 1 0 -github.com/ethereum/go-ethereum/ethclient/signer.go:60.109,61.43 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:43.31,45.35 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:48.2,48.33 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:45.35,47.3 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:54.13,55.44 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:59.2,59.44 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:55.44,58.3 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:68.54,76.2 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:79.44,83.2 3 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:86.51,90.2 3 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:99.54,102.51 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:103.2,105.51 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:106.2,108.51 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:109.2,109.33 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:102.51,102.88 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:105.51,105.95 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:108.51,108.96 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:118.57,119.18 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:122.2,122.30 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:128.2,128.32 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:134.2,134.44 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:119.18,121.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:122.30,127.3 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:128.32,133.3 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:138.55,139.48 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:145.2,145.58 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:139.48,144.3 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:150.58,154.51 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:162.2,165.51 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:172.2,172.34 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:154.51,161.3 5 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:165.51,171.3 4 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:181.48,182.44 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:188.2,188.35 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:182.44,187.3 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:193.57,196.51 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:197.2,200.51 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:207.2,207.31 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:196.51,196.98 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:200.51,206.3 4 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:217.54,221.51 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:225.2,228.51 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:232.2,235.51 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:242.2,245.51 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:255.2,258.51 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:262.2,262.33 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:221.51,224.3 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:228.51,231.3 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:235.51,241.3 4 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:245.51,254.3 6 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:258.51,261.3 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:272.60,276.51 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:281.2,284.51 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:289.2,292.51 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:296.2,299.51 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:306.2,306.35 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:276.51,280.3 3 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:284.51,288.3 3 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:292.51,295.3 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:299.51,305.3 4 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:318.24,325.2 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:327.49,330.51 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:331.2,333.51 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:334.2,336.51 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:337.2,339.51 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:340.2,342.51 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:343.2,345.51 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:353.2,353.35 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:330.51,330.87 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:333.51,333.88 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:336.51,336.86 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:339.51,339.88 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:342.51,342.87 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:345.51,346.21 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:351.3,351.11 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:346.21,348.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:348.9,350.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:362.36,366.2 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:368.55,371.51 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:372.2,374.51 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:375.2,377.51 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:385.2,385.35 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:371.51,371.91 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:374.51,374.89 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:377.51,378.26 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:383.3,383.11 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:378.26,380.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:380.9,382.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:427.79,428.37 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:431.2,431.16 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:434.2,450.38 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:459.2,459.73 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:463.2,463.74 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:474.2,474.77 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:485.2,485.78 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:499.2,499.79 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:521.2,521.81 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:532.2,532.73 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:550.2,550.64 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:554.2,559.60 4 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:562.2,564.61 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:567.2,573.25 6 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:576.2,600.58 15 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:601.2,603.58 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:604.2,606.58 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:607.2,609.58 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:610.2,612.58 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:613.2,615.58 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:623.2,636.20 9 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:428.37,430.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:431.16,433.3 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:450.38,453.36 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:453.36,456.4 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:459.73,462.3 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:463.74,465.49 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:470.3,472.11 3 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:465.49,467.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:467.9,469.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:474.77,476.49 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:481.3,483.11 3 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:476.49,478.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:478.9,480.4 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:485.78,487.49 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:492.3,497.11 5 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:487.49,489.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:489.9,491.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:499.79,501.49 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:507.3,510.49 3 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:515.3,519.11 5 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:501.49,503.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:503.9,505.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:510.49,512.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:512.9,514.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:521.81,523.46 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:529.3,530.11 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:523.46,524.17 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:524.17,527.5 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:532.73,539.50 5 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:546.3,547.11 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:539.50,545.4 3 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:550.64,553.3 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:559.60,561.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:564.61,566.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:573.25,575.3 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:600.58,600.101 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:603.58,603.102 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:606.58,606.103 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:609.58,609.104 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:612.58,612.105 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:615.58,616.31 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:621.3,621.11 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:616.31,618.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:618.9,620.4 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:640.38,643.2 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:647.95,650.27 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:653.2,656.15 3 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:661.2,661.11 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:667.2,671.39 4 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:675.2,675.54 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:650.27,652.3 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:656.15,659.3 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:661.11,663.3 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:671.39,674.3 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:678.49,680.2 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:683.143,686.12 3 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:689.2,707.16 14 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:710.2,710.40 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:686.12,688.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:707.16,709.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:714.138,715.21 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:718.2,718.20 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:722.2,722.43 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:727.2,739.16 11 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:744.2,744.63 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:715.21,717.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:718.20,720.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:722.43,726.3 3 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:739.16,742.3 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:744.63,746.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:750.124,751.20 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:755.2,758.64 3 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:751.20,753.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:758.64,760.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:764.92,769.16 4 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:769.16,771.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:775.132,776.26 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:779.2,779.20 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:783.2,783.43 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:788.2,794.18 7 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:798.2,798.60 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:776.26,778.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:779.20,781.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:783.43,786.3 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:794.18,796.3 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:798.60,800.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:805.76,806.26 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:810.2,810.43 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:815.2,818.16 4 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:823.2,823.65 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:806.26,808.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:810.43,813.3 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:818.16,821.3 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:823.65,825.3 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:829.59,833.32 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:836.2,840.16 3 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:844.2,847.24 3 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:833.32,835.3 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:840.16,842.3 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:851.69,854.2 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:856.55,857.27 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:858.14,859.26 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:860.14,861.22 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:862.14,864.44 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:865.22,867.35 2 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:868.16,869.23 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:870.11,871.19 1 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:872.12,873.20 1 1 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:874.19,876.35 2 0 -github.com/ethereum/go-ethereum/eth/tracers/js/tracer.go:877.10,878.50 1 0 -github.com/ethereum/go-ethereum/core/vm/runtime/env.go:24.34,42.2 3 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:53.31,54.28 1 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:74.2,74.27 1 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:77.2,77.21 1 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:80.2,80.23 1 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:83.2,83.25 1 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:86.2,86.22 1 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:89.2,89.28 1 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:92.2,92.26 1 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:97.2,97.24 1 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:54.28,72.3 1 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:74.27,76.3 1 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:77.21,79.3 1 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:80.23,82.3 1 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:83.25,85.3 1 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:86.22,88.3 1 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:89.28,91.3 1 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:92.26,93.46 1 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:93.46,95.4 1 0 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:97.24,99.3 1 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:107.79,108.16 1 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:111.2,113.22 2 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:116.2,121.108 2 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:124.2,136.28 4 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:108.16,110.3 1 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:113.22,115.3 1 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:121.108,123.3 1 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:140.80,141.16 1 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:144.2,146.22 2 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:149.2,153.108 2 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:157.2,163.40 2 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:141.16,143.3 1 0 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:146.22,148.3 1 0 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:153.108,155.3 1 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:171.86,179.108 5 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:183.2,190.30 2 1 -github.com/ethereum/go-ethereum/core/vm/runtime/runtime.go:179.108,181.3 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:54.22,58.2 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:62.37,66.2 1 0 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:70.35,76.2 4 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:79.51,83.18 3 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:86.2,87.16 2 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:83.18,85.3 1 0 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:91.53,95.18 3 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:98.2,98.41 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:101.2,101.33 1 0 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:95.18,97.3 1 0 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:98.41,100.3 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:105.57,109.18 3 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:112.2,113.12 2 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:109.18,111.3 1 0 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:117.46,121.18 3 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:124.2,125.12 2 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:121.18,123.3 1 0 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:130.44,134.2 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:137.60,141.2 1 0 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:146.77,158.25 4 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:167.2,168.27 2 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:171.2,174.3 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:158.25,159.34 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:162.3,162.16 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:159.34,160.12 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:162.16,164.4 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:168.27,170.3 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:180.59,182.2 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:185.59,187.2 1 0 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:191.63,193.2 1 0 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:199.31,204.2 3 0 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:223.46,227.2 3 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:230.42,234.2 3 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:237.33,239.2 1 0 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:242.31,246.36 3 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:253.2,253.12 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:246.36,247.22 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:251.3,251.49 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:247.22,249.12 2 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:257.25,260.2 2 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:263.54,264.36 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:275.2,275.12 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:264.36,265.22 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:271.3,271.61 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:265.22,266.49 1 0 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:269.4,269.12 1 0 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:266.49,268.5 1 0 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:271.61,273.4 1 0 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:289.33,291.16 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:296.2,296.22 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:300.2,300.25 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:291.16,294.3 2 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:296.22,299.3 2 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:305.35,307.2 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:312.34,313.22 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:316.2,316.12 1 0 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:313.22,315.3 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:322.36,323.24 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:326.2,326.12 1 0 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:323.24,325.3 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:331.31,333.2 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:343.42,348.30 4 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:351.2,351.30 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:348.30,350.3 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:356.53,360.20 3 0 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:363.2,364.16 2 0 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:360.20,362.3 1 0 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:369.55,373.20 3 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:376.2,376.43 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:379.2,379.33 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:373.20,375.3 1 0 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:376.43,378.3 1 1 -github.com/ethereum/go-ethereum/ethdb/memorydb/memorydb.go:384.33,389.2 3 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:42.33,44.2 1 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:48.122,55.95 3 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:58.2,58.69 1 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:55.95,57.3 1 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:81.134,103.38 6 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:110.2,118.21 2 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:103.38,109.3 1 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:140.160,147.2 3 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:150.72,154.2 3 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:157.76,161.2 3 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:166.71,168.2 1 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:171.75,175.2 3 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:178.125,180.2 1 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:182.44,183.19 1 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:186.2,187.30 2 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:190.2,190.34 1 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:183.19,185.3 1 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:187.30,189.3 1 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:193.50,198.23 2 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:201.2,201.22 1 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:204.2,204.18 1 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:207.2,207.25 1 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:210.2,210.12 1 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:198.23,200.3 1 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:201.22,203.3 1 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:204.18,206.3 1 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:207.25,209.3 1 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:213.79,214.22 1 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:217.2,225.41 3 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:234.2,234.16 1 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:214.22,216.3 1 0 -github.com/ethereum/go-ethereum/ethclient/gethclient/gethclient.go:225.41,233.3 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:87.99,88.63 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:88.63,90.23 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:93.3,93.27 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:97.3,100.15 4 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:90.23,92.4 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:93.27,95.4 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:100.15,102.4 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:109.104,114.22 5 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:117.2,121.59 3 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:124.2,124.16 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:128.2,149.17 15 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:114.22,116.3 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:121.59,123.3 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:124.16,126.3 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:153.68,160.24 2 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:163.2,163.16 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:160.24,162.3 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:168.35,172.24 3 1 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:180.2,180.22 1 1 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:172.24,175.32 3 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:178.3,178.20 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:175.32,177.4 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:184.51,186.2 1 1 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:189.53,191.16 2 1 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:194.2,194.17 1 1 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:191.16,193.3 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:198.57,200.2 1 1 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:203.46,205.2 1 1 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:209.44,214.2 1 1 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:217.60,222.2 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:227.77,229.2 1 1 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:236.59,238.16 2 1 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:241.2,241.33 1 1 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:238.16,240.3 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:245.59,247.2 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:256.63,258.2 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:261.35,263.2 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:282.50,285.25 2 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:289.2,306.46 6 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:462.2,462.17 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:465.2,465.14 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:285.25,287.3 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:306.46,309.17 2 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:315.3,316.70 2 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:319.3,319.22 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:324.3,327.46 2 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:330.3,330.30 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:346.3,346.30 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:349.3,349.30 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:352.3,352.30 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:355.3,355.31 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:359.3,360.17 2 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:365.3,371.127 2 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:376.3,377.17 2 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:382.3,382.33 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:385.3,385.32 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:390.3,391.67 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:395.3,399.17 3 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:404.3,406.21 3 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:411.3,411.82 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:416.3,416.84 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:421.3,421.30 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:424.3,424.31 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:427.3,430.17 3 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:436.3,442.167 2 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:447.3,453.10 5 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:309.17,312.12 3 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:316.70,318.4 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:319.22,322.12 3 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:327.46,329.4 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:330.30,332.23 2 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:335.4,335.40 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:332.23,333.10 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:335.40,337.19 2 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:342.5,342.35 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:337.19,340.14 3 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:346.30,348.4 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:349.30,351.4 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:352.30,354.4 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:355.31,357.4 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:360.17,363.12 3 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:371.127,374.12 3 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:377.17,380.12 3 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:382.33,384.4 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:385.32,387.4 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:391.67,394.4 2 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:399.17,402.12 3 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:406.21,409.12 3 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:411.82,414.12 3 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:416.84,419.12 3 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:421.30,423.4 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:424.31,426.4 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:430.17,433.12 3 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:442.167,445.12 3 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:454.29,454.29 0 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:456.18,457.24 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:462.17,464.3 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:477.46,481.2 3 1 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:484.42,488.2 3 1 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:491.33,493.2 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:496.31,498.2 1 1 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:501.25,504.2 2 1 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:507.54,509.2 1 1 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:518.43,520.22 1 1 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:523.2,523.38 1 1 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:520.22,522.3 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:527.39,529.22 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:532.2,532.34 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:529.22,531.3 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:538.57,542.2 3 1 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:551.53,553.2 1 0 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:557.55,559.2 1 1 -github.com/ethereum/go-ethereum/ethdb/leveldb/leveldb.go:563.33,565.2 1 0 -github.com/ethereum/go-ethereum/event/event.go:53.74,57.17 4 1 -github.com/ethereum/go-ethereum/event/event.go:78.2,78.12 1 1 -github.com/ethereum/go-ethereum/event/event.go:57.17,62.3 2 1 -github.com/ethereum/go-ethereum/event/event.go:62.8,63.22 1 1 -github.com/ethereum/go-ethereum/event/event.go:66.3,66.27 1 1 -github.com/ethereum/go-ethereum/event/event.go:63.22,65.4 1 1 -github.com/ethereum/go-ethereum/event/event.go:66.27,69.32 3 1 -github.com/ethereum/go-ethereum/event/event.go:72.4,75.25 4 1 -github.com/ethereum/go-ethereum/event/event.go:69.32,70.70 1 1 -github.com/ethereum/go-ethereum/event/event.go:83.48,90.17 4 1 -github.com/ethereum/go-ethereum/event/event.go:94.2,96.27 3 1 -github.com/ethereum/go-ethereum/event/event.go:99.2,99.12 1 1 -github.com/ethereum/go-ethereum/event/event.go:90.17,93.3 2 1 -github.com/ethereum/go-ethereum/event/event.go:96.27,98.3 1 1 -github.com/ethereum/go-ethereum/event/event.go:105.28,108.32 3 1 -github.com/ethereum/go-ethereum/event/event.go:113.2,114.20 2 1 -github.com/ethereum/go-ethereum/event/event.go:108.32,109.28 1 1 -github.com/ethereum/go-ethereum/event/event.go:109.28,111.4 1 1 -github.com/ethereum/go-ethereum/event/event.go:117.49,120.34 3 1 -github.com/ethereum/go-ethereum/event/event.go:120.34,121.37 1 1 -github.com/ethereum/go-ethereum/event/event.go:121.37,122.22 1 1 -github.com/ethereum/go-ethereum/event/event.go:122.22,124.5 1 1 -github.com/ethereum/go-ethereum/event/event.go:124.10,126.5 1 1 -github.com/ethereum/go-ethereum/event/event.go:131.72,132.26 1 1 -github.com/ethereum/go-ethereum/event/event.go:137.2,137.11 1 1 -github.com/ethereum/go-ethereum/event/event.go:132.26,133.16 1 1 -github.com/ethereum/go-ethereum/event/event.go:133.16,135.4 1 1 -github.com/ethereum/go-ethereum/event/event.go:140.78,145.2 4 1 -github.com/ethereum/go-ethereum/event/event.go:163.48,172.2 2 1 -github.com/ethereum/go-ethereum/event/event.go:174.59,176.2 1 1 -github.com/ethereum/go-ethereum/event/event.go:178.45,181.2 2 1 -github.com/ethereum/go-ethereum/event/event.go:183.45,187.2 3 0 -github.com/ethereum/go-ethereum/event/event.go:189.43,192.14 3 1 -github.com/ethereum/go-ethereum/event/event.go:195.2,201.15 6 1 -github.com/ethereum/go-ethereum/event/event.go:192.14,194.3 1 1 -github.com/ethereum/go-ethereum/event/event.go:204.60,206.33 1 1 -github.com/ethereum/go-ethereum/event/event.go:210.2,213.9 3 1 -github.com/ethereum/go-ethereum/event/event.go:206.33,208.3 1 1 -github.com/ethereum/go-ethereum/event/event.go:214.24,214.24 0 1 -github.com/ethereum/go-ethereum/event/event.go:215.19,215.19 0 1 -github.com/ethereum/go-ethereum/event/feed.go:56.39,58.2 1 0 -github.com/ethereum/go-ethereum/event/feed.go:60.23,65.2 4 1 -github.com/ethereum/go-ethereum/event/feed.go:72.60,77.78 4 1 -github.com/ethereum/go-ethereum/event/feed.go:80.2,84.34 4 1 -github.com/ethereum/go-ethereum/event/feed.go:89.2,91.12 3 1 -github.com/ethereum/go-ethereum/event/feed.go:77.78,78.23 1 1 -github.com/ethereum/go-ethereum/event/feed.go:84.34,85.102 1 1 -github.com/ethereum/go-ethereum/event/feed.go:95.49,96.20 1 1 -github.com/ethereum/go-ethereum/event/feed.go:100.2,100.23 1 1 -github.com/ethereum/go-ethereum/event/feed.go:96.20,99.3 2 1 -github.com/ethereum/go-ethereum/event/feed.go:103.37,109.17 4 1 -github.com/ethereum/go-ethereum/event/feed.go:114.2,116.9 2 1 -github.com/ethereum/go-ethereum/event/feed.go:109.17,113.3 3 1 -github.com/ethereum/go-ethereum/event/feed.go:117.25,117.25 0 1 -github.com/ethereum/go-ethereum/event/feed.go:119.20,122.27 2 1 -github.com/ethereum/go-ethereum/event/feed.go:128.52,139.33 7 1 -github.com/ethereum/go-ethereum/event/feed.go:144.2,147.55 2 1 -github.com/ethereum/go-ethereum/event/feed.go:154.2,155.6 2 1 -github.com/ethereum/go-ethereum/event/feed.go:185.2,185.55 1 1 -github.com/ethereum/go-ethereum/event/feed.go:188.2,189.14 2 1 -github.com/ethereum/go-ethereum/event/feed.go:139.33,142.70 3 1 -github.com/ethereum/go-ethereum/event/feed.go:147.55,149.3 1 1 -github.com/ethereum/go-ethereum/event/feed.go:155.6,159.50 1 1 -github.com/ethereum/go-ethereum/event/feed.go:166.3,166.37 1 1 -github.com/ethereum/go-ethereum/event/feed.go:170.3,171.38 2 1 -github.com/ethereum/go-ethereum/event/feed.go:159.50,160.37 1 1 -github.com/ethereum/go-ethereum/event/feed.go:160.37,164.5 3 1 -github.com/ethereum/go-ethereum/event/feed.go:166.37,167.9 1 1 -github.com/ethereum/go-ethereum/event/feed.go:171.38,174.40 3 1 -github.com/ethereum/go-ethereum/event/feed.go:174.40,177.5 1 1 -github.com/ethereum/go-ethereum/event/feed.go:178.9,181.4 2 1 -github.com/ethereum/go-ethereum/event/feed.go:185.55,187.3 1 1 -github.com/ethereum/go-ethereum/event/feed.go:199.35,200.24 1 1 -github.com/ethereum/go-ethereum/event/feed.go:200.24,203.3 2 1 -github.com/ethereum/go-ethereum/event/feed.go:206.40,208.2 1 1 -github.com/ethereum/go-ethereum/event/feed.go:213.50,214.25 1 1 -github.com/ethereum/go-ethereum/event/feed.go:219.2,219.11 1 1 -github.com/ethereum/go-ethereum/event/feed.go:214.25,215.38 1 1 -github.com/ethereum/go-ethereum/event/feed.go:215.38,217.4 1 1 -github.com/ethereum/go-ethereum/event/feed.go:223.47,225.2 1 1 -github.com/ethereum/go-ethereum/event/feed.go:228.51,232.2 3 1 -github.com/ethereum/go-ethereum/event/subscription.go:49.73,51.12 2 1 -github.com/ethereum/go-ethereum/event/subscription.go:63.2,63.10 1 1 -github.com/ethereum/go-ethereum/event/subscription.go:51.12,56.22 5 1 -github.com/ethereum/go-ethereum/event/subscription.go:56.22,57.18 1 1 -github.com/ethereum/go-ethereum/event/subscription.go:60.4,60.25 1 1 -github.com/ethereum/go-ethereum/event/subscription.go:57.18,59.5 1 1 -github.com/ethereum/go-ethereum/event/subscription.go:73.33,75.20 2 1 -github.com/ethereum/go-ethereum/event/subscription.go:79.2,83.9 4 1 -github.com/ethereum/go-ethereum/event/subscription.go:75.20,78.3 2 1 -github.com/ethereum/go-ethereum/event/subscription.go:86.38,88.2 1 1 -github.com/ethereum/go-ethereum/event/subscription.go:97.77,98.93 1 1 -github.com/ethereum/go-ethereum/event/subscription.go:98.93,100.3 1 1 -github.com/ethereum/go-ethereum/event/subscription.go:117.83,127.2 3 1 -github.com/ethereum/go-ethereum/event/subscription.go:144.40,145.24 1 1 -github.com/ethereum/go-ethereum/event/subscription.go:145.24,148.3 2 1 -github.com/ethereum/go-ethereum/event/subscription.go:151.45,153.2 1 1 -github.com/ethereum/go-ethereum/event/subscription.go:155.33,158.12 3 1 -github.com/ethereum/go-ethereum/event/subscription.go:158.12,160.17 2 1 -github.com/ethereum/go-ethereum/event/subscription.go:163.3,164.20 2 1 -github.com/ethereum/go-ethereum/event/subscription.go:160.17,161.9 1 1 -github.com/ethereum/go-ethereum/event/subscription.go:168.51,171.6 3 1 -github.com/ethereum/go-ethereum/event/subscription.go:171.6,174.13 3 1 -github.com/ethereum/go-ethereum/event/subscription.go:179.3,179.10 1 1 -github.com/ethereum/go-ethereum/event/subscription.go:174.13,178.4 3 1 -github.com/ethereum/go-ethereum/event/subscription.go:180.28,182.18 2 1 -github.com/ethereum/go-ethereum/event/subscription.go:189.4,189.23 1 1 -github.com/ethereum/go-ethereum/event/subscription.go:192.18,195.14 3 1 -github.com/ethereum/go-ethereum/event/subscription.go:182.18,183.19 1 1 -github.com/ethereum/go-ethereum/event/subscription.go:186.5,186.15 1 1 -github.com/ethereum/go-ethereum/event/subscription.go:183.19,184.76 1 0 -github.com/ethereum/go-ethereum/event/subscription.go:189.23,191.5 1 0 -github.com/ethereum/go-ethereum/event/subscription.go:200.62,202.9 2 1 -github.com/ethereum/go-ethereum/event/subscription.go:203.26,205.20 2 1 -github.com/ethereum/go-ethereum/event/subscription.go:206.17,207.14 1 0 -github.com/ethereum/go-ethereum/event/subscription.go:211.45,212.58 1 1 -github.com/ethereum/go-ethereum/event/subscription.go:221.2,223.9 3 1 -github.com/ethereum/go-ethereum/event/subscription.go:212.58,214.3 1 1 -github.com/ethereum/go-ethereum/event/subscription.go:214.8,216.32 2 1 -github.com/ethereum/go-ethereum/event/subscription.go:216.32,218.4 1 0 -github.com/ethereum/go-ethereum/event/subscription.go:224.13,225.15 1 1 -github.com/ethereum/go-ethereum/event/subscription.go:226.17,227.14 1 0 -github.com/ethereum/go-ethereum/event/subscription.go:252.65,255.15 3 1 -github.com/ethereum/go-ethereum/event/subscription.go:258.2,258.20 1 1 -github.com/ethereum/go-ethereum/event/subscription.go:261.2,263.11 3 1 -github.com/ethereum/go-ethereum/event/subscription.go:255.15,257.3 1 0 -github.com/ethereum/go-ethereum/event/subscription.go:258.20,260.3 1 1 -github.com/ethereum/go-ethereum/event/subscription.go:268.38,271.15 3 1 -github.com/ethereum/go-ethereum/event/subscription.go:274.2,275.25 2 1 -github.com/ethereum/go-ethereum/event/subscription.go:278.2,278.15 1 1 -github.com/ethereum/go-ethereum/event/subscription.go:271.15,273.3 1 0 -github.com/ethereum/go-ethereum/event/subscription.go:275.25,277.3 1 1 -github.com/ethereum/go-ethereum/event/subscription.go:283.42,287.2 3 0 -github.com/ethereum/go-ethereum/event/subscription.go:289.34,294.2 4 1 -github.com/ethereum/go-ethereum/event/subscription.go:296.39,298.2 1 1 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:94.51,96.2 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:142.62,144.2 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:147.54,152.2 3 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:155.53,160.2 3 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:163.37,167.2 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:172.63,176.48 3 1 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:179.2,182.21 3 1 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:185.2,186.33 2 1 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:190.2,190.44 1 1 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:176.48,178.3 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:182.21,184.3 1 1 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:186.33,188.3 1 1 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:194.87,196.16 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:199.2,211.12 3 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:196.16,198.3 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:215.33,227.2 9 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:230.32,235.2 4 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:239.135,247.12 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:290.2,294.36 3 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:298.2,301.6 3 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:247.12,251.7 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:286.3,286.16 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:251.7,252.11 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:254.31,255.12 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:261.38,262.12 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:268.21,269.57 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:272.5,274.12 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:280.25,281.21 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:282.27,283.21 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:256.31,256.31 0 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:257.13,257.13 0 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:263.32,263.32 0 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:264.13,264.13 0 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:269.57,270.14 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:275.29,275.29 0 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:276.13,276.13 0 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:294.36,296.3 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:301.6,302.10 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:303.17,304.10 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:305.21,314.29 5 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:322.4,322.18 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:328.4,328.39 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:334.4,337.40 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:344.4,346.19 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:381.4,385.21 3 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:314.29,317.19 3 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:317.19,319.11 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:322.18,325.13 3 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:328.39,332.13 4 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:337.40,341.13 4 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:346.19,347.12 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:348.19,352.12 3 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:354.25,355.42 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:358.29,359.55 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:362.27,363.53 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:366.6,366.49 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:370.34,371.65 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:375.17,376.49 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:355.42,357.7 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:359.55,361.7 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:363.53,365.7 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:366.49,368.7 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:371.65,373.7 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:376.49,378.7 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:394.47,398.6 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:398.6,401.46 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:406.3,407.98 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:415.3,416.52 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:420.3,421.28 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:425.3,426.10 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:431.3,431.54 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:443.3,443.52 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:476.3,476.48 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:401.46,404.4 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:407.98,408.84 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:412.4,412.12 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:408.84,411.5 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:416.52,419.4 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:421.28,424.4 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:426.10,429.4 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:431.54,432.11 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:433.32,435.13 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:436.12,439.11 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:443.52,446.11 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:454.4,455.11 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:460.4,461.29 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:469.4,469.11 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:446.11,448.12 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:452.5,452.13 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:449.26,449.26 0 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:450.13,450.13 0 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:455.11,458.5 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:461.29,463.12 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:467.5,467.27 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:463.12,466.6 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:470.29,471.13 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:472.12,472.12 0 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:504.50,509.43 3 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:512.2,513.49 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:518.2,538.46 3 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:542.2,543.98 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:546.2,546.12 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:509.43,511.3 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:513.49,515.3 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:515.8,517.3 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:538.46,540.3 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:543.98,545.3 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:552.51,553.46 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:556.2,556.49 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:559.2,559.46 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:562.2,562.44 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:565.2,565.12 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:553.46,555.3 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:556.49,558.3 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:559.46,561.3 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:562.44,564.3 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:570.58,580.45 3 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:584.2,584.9 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:591.2,602.30 4 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:580.45,582.3 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:585.18,585.18 0 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:587.37,589.38 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:631.51,632.53 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:635.2,635.26 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:632.53,634.3 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:639.76,654.2 5 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:658.70,669.8 3 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:693.2,709.3 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:669.8,670.19 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:673.3,677.43 4 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:680.3,680.26 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:670.19,672.4 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:677.43,679.4 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:681.8,683.19 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:688.3,689.20 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:683.19,685.4 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:685.9,687.4 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:714.73,717.19 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:732.2,733.33 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:754.2,754.22 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:759.2,766.31 3 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:717.19,720.3 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:720.8,724.16 3 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:727.3,727.50 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:724.16,726.4 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:727.50,729.4 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:733.33,737.9 3 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:745.3,745.19 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:750.3,751.8 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:737.9,739.4 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:739.9,740.107 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:740.107,742.5 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:745.19,747.12 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:754.22,756.3 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:756.8,758.3 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:776.58,792.2 5 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:800.44,807.2 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:816.99,820.48 2 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:823.2,823.48 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:827.2,834.31 3 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:820.48,822.3 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:823.48,825.3 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:850.56,860.8 3 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:877.2,894.31 4 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:860.8,869.69 7 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:869.69,871.4 1 0 -github.com/ethereum/go-ethereum/ethstats/ethstats.go:872.8,875.3 2 0 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:83.65,88.2 4 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:92.52,97.2 4 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:99.41,111.45 5 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:115.2,117.33 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:111.45,113.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:117.33,119.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:124.49,134.2 6 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:138.38,149.31 4 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:171.2,171.36 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:174.2,178.31 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:149.31,151.71 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:156.3,156.71 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:164.3,164.45 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:151.71,154.4 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:156.71,161.12 4 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:164.45,167.12 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:171.36,173.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:178.31,180.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:185.84,194.18 4 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:198.2,198.12 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:194.18,197.3 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:206.31,207.6 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:207.6,209.10 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:214.3,218.34 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:223.3,223.17 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:210.21,210.21 0 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:211.41,211.41 0 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:218.34,222.4 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:228.58,230.2 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:233.51,235.2 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:239.73,244.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:247.2,247.16 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:253.2,254.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:258.2,258.12 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:244.16,246.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:247.16,249.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:254.16,257.3 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:263.79,269.12 4 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:273.2,273.50 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:269.12,271.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:277.117,283.12 4 0 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:287.2,288.57 2 0 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:283.12,285.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:294.126,296.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:299.2,300.42 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:296.16,298.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:305.150,307.16 2 0 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:310.2,313.49 3 0 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:307.16,309.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:317.73,319.2 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:322.53,324.44 2 0 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:330.2,330.12 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:324.44,327.3 2 0 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:327.8,329.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:340.101,342.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:346.2,349.11 4 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:359.2,359.17 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:365.2,366.12 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:342.16,344.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:349.11,350.21 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:357.3,357.17 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:350.21,355.4 2 0 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:359.17,362.3 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:362.8,364.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:370.72,376.2 5 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:378.102,380.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:383.2,384.20 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:380.16,382.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:387.85,390.9 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:391.17,391.17 0 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:393.13,399.29 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:403.3,403.17 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:399.29,402.4 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:409.77,411.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:416.2,418.21 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:411.16,413.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:422.110,424.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:427.2,428.55 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:433.2,433.45 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:424.16,426.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:428.55,430.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:430.8,432.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:437.104,439.41 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:442.2,442.16 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:445.2,448.38 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:453.2,453.41 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:439.41,441.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:442.16,444.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:448.38,452.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:457.102,462.38 4 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:467.2,467.38 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:462.38,466.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:470.86,472.73 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:475.2,477.15 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:472.73,474.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:481.88,483.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:486.2,486.60 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:483.16,485.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:491.99,493.16 2 0 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:496.2,498.15 3 0 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:493.16,495.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:502.35,504.19 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/keystore.go:504.19,506.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:83.95,86.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:89.2,90.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:94.2,94.25 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:97.2,97.17 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:86.16,88.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:90.16,92.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:94.25,96.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:101.81,104.2 2 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:106.85,108.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:112.2,113.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:116.2,116.33 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:130.2,130.37 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:108.16,110.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:113.16,115.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:116.33,119.17 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:119.17,128.4 2 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:133.63,134.30 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:137.2,137.48 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:134.30,136.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:141.81,144.58 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:147.2,148.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:151.2,154.56 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:157.2,158.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:161.2,181.26 10 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:144.58,145.59 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:148.16,150.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:154.56,155.59 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:158.16,160.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:186.78,189.16 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:192.2,198.41 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:189.16,191.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:202.60,205.52 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:209.2,213.64 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:227.2,227.16 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:230.2,232.16 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:235.2,239.8 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:205.52,207.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:213.64,215.52 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:218.3,218.47 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:215.52,217.4 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:219.8,221.52 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:224.3,224.47 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:221.52,223.4 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:227.16,229.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:232.16,234.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:242.72,243.40 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:246.2,247.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:251.2,252.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:256.2,257.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:261.2,262.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:266.2,267.38 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:271.2,272.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:275.2,275.23 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:243.40,245.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:247.16,249.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:252.16,254.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:257.16,259.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:262.16,264.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:267.38,269.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:272.16,274.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:278.109,279.37 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:282.2,283.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:286.2,288.16 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:291.2,291.30 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:279.37,281.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:283.16,285.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:288.16,290.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:294.109,296.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:299.2,301.16 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:305.2,306.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:310.2,311.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:315.2,316.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:320.2,321.38 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:325.2,326.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:329.2,329.30 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:296.16,298.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:301.16,303.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:306.16,308.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:311.16,313.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:316.16,318.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:321.38,323.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:326.16,328.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:332.68,335.16 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:338.2,340.36 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:356.2,356.63 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:335.16,337.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:340.36,346.3 4 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:346.8,346.39 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:346.39,349.27 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:352.3,353.18 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:349.27,351.4 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:362.35,364.9 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:367.2,367.12 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/passphrase.go:364.9,366.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/plain.go:32.90,34.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/plain.go:37.2,39.56 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/plain.go:42.2,42.25 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/plain.go:45.2,45.17 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/plain.go:34.16,36.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/plain.go:39.56,41.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/plain.go:42.25,44.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/plain.go:48.80,50.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/plain.go:53.2,53.40 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/plain.go:50.16,52.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/plain.go:56.58,57.30 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/plain.go:60.2,60.48 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/plain.go:57.30,59.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:35.107,37.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:40.2,41.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:44.2,52.20 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:37.16,39.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:41.16,43.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:55.83,63.16 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:66.2,67.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:70.2,70.28 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:73.2,85.16 6 1 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:88.2,98.33 6 1 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:101.2,101.17 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:63.16,65.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:67.16,69.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:70.28,72.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:85.16,87.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:98.33,100.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:104.56,107.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:110.2,113.21 4 1 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:107.16,109.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:116.64,118.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:121.2,125.22 5 1 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:128.2,128.23 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:118.16,120.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:125.22,127.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:132.35,133.18 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:137.2,138.55 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:144.2,144.56 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:149.2,149.34 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:133.18,135.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:138.55,140.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:140.8,140.25 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:140.25,142.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:144.56,145.23 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/presale.go:145.23,147.4 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:40.86,45.16 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:48.2,58.27 7 1 -github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:76.2,88.39 8 1 -github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:45.16,47.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:58.27,61.21 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:66.3,69.33 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:72.3,72.33 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:61.21,63.12 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:69.33,71.4 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:72.33,74.4 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:92.38,94.76 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:98.2,98.46 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:101.2,101.14 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:94.76,96.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/file_cache.go:98.46,100.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:94.51,103.2 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:105.51,108.16 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:112.2,114.16 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:117.2,119.16 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:122.2,123.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:127.2,130.12 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:108.16,110.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:114.16,116.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:119.16,121.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:123.16,125.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:133.62,135.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:138.2,143.12 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:135.16,136.62 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:149.47,152.16 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:155.2,157.16 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:160.2,161.51 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:164.2,164.12 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:152.16,153.77 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:157.16,158.68 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:161.51,163.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:167.43,169.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:172.2,172.46 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:169.16,171.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:175.92,177.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:180.2,184.59 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:188.2,188.20 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:177.16,179.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:184.59,187.3 2 0 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:191.73,195.65 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:200.2,201.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:204.2,204.44 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:209.2,210.22 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:195.65,197.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:201.16,203.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:204.44,208.3 3 0 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:213.54,215.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:218.2,218.30 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:215.16,217.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:223.49,226.2 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:228.36,231.19 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:236.2,237.86 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:231.19,233.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/key.go:233.8,235.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:36.45,38.2 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:42.51,46.57 3 0 -github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:49.2,49.22 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:46.57,48.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:54.56,54.70 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:58.40,58.54 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:62.56,64.2 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:68.66,70.2 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:74.99,76.2 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:80.104,81.2 0 0 -github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:87.90,89.26 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:93.2,93.43 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:89.26,91.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:97.107,99.2 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:102.133,104.26 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:108.2,108.87 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:104.26,106.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:113.90,115.2 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:119.123,121.26 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:125.2,125.88 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:121.26,123.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:132.128,134.26 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:138.2,138.48 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:134.26,136.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:143.161,145.26 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:149.2,149.74 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/wallet.go:145.26,147.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/watch.go:37.44,43.2 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/watch.go:48.27,49.29 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/watch.go:52.2,53.13 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/watch.go:49.29,51.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/watch.go:56.27,58.2 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/watch.go:60.26,61.15 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/watch.go:67.2,69.68 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/watch.go:73.2,90.22 8 1 -github.com/ethereum/go-ethereum/accounts/keystore/watch.go:93.2,94.6 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/watch.go:61.15,66.3 4 1 -github.com/ethereum/go-ethereum/accounts/keystore/watch.go:69.68,72.3 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/watch.go:90.22,92.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/watch.go:94.6,95.10 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/watch.go:96.17,97.10 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/watch.go:98.15,100.24 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/watch.go:104.21,106.27 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/watch.go:100.24,103.5 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:43.44,43.61 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:44.44,44.81 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:45.44,45.71 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:54.47,56.32 2 0 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:62.2,62.63 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:56.32,58.29 2 0 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:58.29,60.4 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:77.68,86.2 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:88.55,95.2 6 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:97.62,102.2 4 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:104.58,108.49 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:109.2,109.48 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:113.2,116.83 4 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:108.49,108.98 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:109.48,111.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:120.58,125.76 4 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:125.76,127.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:127.8,129.3 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:133.51,136.49 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:138.2,138.51 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:136.49,136.86 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:138.51,141.77 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:141.77,143.4 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:143.9,145.4 1 0 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:149.88,150.23 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:155.2,155.14 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:150.23,151.23 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:151.23,153.4 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:161.76,164.37 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:167.2,167.22 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:181.2,181.22 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:164.37,166.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:167.22,169.60 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:172.3,172.26 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:177.3,177.38 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:169.60,171.4 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:172.26,173.31 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:173.31,175.5 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:177.38,179.4 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:182.9,183.25 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:184.9,185.40 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:186.10,190.33 4 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:194.39,197.24 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:201.2,201.24 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:212.2,215.19 4 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:197.24,200.3 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:201.24,203.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:203.8,204.10 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:205.24,205.24 0 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:206.11,208.10 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:218.33,221.24 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:224.2,224.22 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:228.2,228.16 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:221.24,223.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:224.22,227.3 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:233.46,236.16 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:240.2,240.92 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:244.2,250.53 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:276.2,278.38 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:283.2,283.38 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:286.2,286.38 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:293.2,295.9 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:299.2,300.12 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:236.16,239.3 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:240.92,242.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:250.53,252.17 2 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:256.3,262.10 6 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:273.3,273.13 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:252.17,255.4 2 0 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:263.19,264.72 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:265.33,266.94 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:267.11,271.5 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:278.38,279.45 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:279.45,281.4 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:283.38,285.3 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:286.38,289.39 3 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:289.39,291.4 1 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:296.31,296.31 0 1 -github.com/ethereum/go-ethereum/accounts/keystore/account_cache.go:297.10,297.10 0 1 -github.com/ethereum/go-ethereum/graphql/graphiql.go:37.60,42.2 4 0 -github.com/ethereum/go-ethereum/graphql/graphiql.go:44.35,48.2 3 0 -github.com/ethereum/go-ethereum/graphql/graphiql.go:50.69,51.23 1 0 -github.com/ethereum/go-ethereum/graphql/graphiql.go:55.2,56.19 2 0 -github.com/ethereum/go-ethereum/graphql/graphiql.go:51.23,54.3 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:46.55,46.80 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:49.58,51.31 2 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:71.2,71.12 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:52.14,62.13 3 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:64.13,65.19 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:66.13,67.19 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:68.10,69.57 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:82.73,85.2 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:87.72,89.2 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:91.69,93.16 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:96.2,97.20 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:100.2,100.35 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:93.16,95.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:97.20,99.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:103.81,105.86 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:112.2,113.16 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:116.2,116.55 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:105.86,107.17 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:110.3,110.36 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:107.17,109.4 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:113.16,115.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:119.68,121.16 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:124.2,124.38 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:121.16,123.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:127.102,129.16 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:132.2,132.50 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:129.16,131.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:142.61,144.2 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:146.75,152.2 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:154.48,156.2 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:158.57,160.2 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:162.55,164.2 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:172.68,174.2 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:176.71,178.2 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:191.80,192.17 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:208.2,208.18 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:192.17,195.30 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:206.3,206.46 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:195.30,204.4 5 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:211.61,213.2 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:215.77,217.29 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:220.2,220.23 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:217.29,219.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:223.72,225.29 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:228.2,228.38 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:225.29,227.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:231.74,233.29 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:236.2,236.19 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:233.29,235.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:237.30,238.42 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:239.30,240.21 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:246.3,246.42 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:247.10,248.42 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:240.21,241.64 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:241.64,244.5 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:252.84,254.29 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:258.2,258.20 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:261.2,262.33 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:265.2,265.27 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:268.2,268.107 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:254.29,256.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:258.20,260.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:262.33,264.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:265.27,267.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:271.79,273.29 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:276.2,276.19 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:273.29,275.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:277.30,278.18 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:279.30,280.45 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:281.10,282.18 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:286.87,288.29 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:291.2,291.19 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:288.29,290.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:292.30,293.18 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:294.30,295.45 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:296.10,297.18 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:301.79,303.29 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:307.2,307.20 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:310.2,311.33 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:314.2,314.27 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:318.2,319.16 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:322.2,322.33 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:303.29,305.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:307.20,309.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:311.33,313.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:314.27,316.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:319.16,321.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:325.71,327.29 2 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:330.2,330.23 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:333.2,333.38 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:327.29,329.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:330.23,332.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:336.74,338.29 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:341.2,341.40 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:338.29,340.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:344.87,346.29 2 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:349.2,350.15 2 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:353.2,357.8 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:346.29,348.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:350.15,352.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:360.89,362.29 2 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:365.2,371.8 3 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:362.29,364.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:374.66,375.42 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:378.2,378.21 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:375.42,377.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:381.66,382.42 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:385.2,385.20 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:388.2,389.20 2 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:382.42,384.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:385.20,387.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:393.79,394.42 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:397.2,397.20 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:400.2,401.16 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:404.2,404.31 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:394.42,396.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:397.20,399.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:401.16,403.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:407.66,409.34 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:412.2,412.33 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:415.2,416.18 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:409.34,411.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:412.33,414.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:419.67,421.34 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:424.2,425.18 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:421.34,423.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:428.77,430.34 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:433.2,434.18 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:430.34,432.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:437.100,439.83 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:442.2,446.8 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:439.83,441.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:449.66,451.34 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:454.2,455.35 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:462.2,462.18 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:451.34,453.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:455.35,461.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:465.65,467.16 2 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:470.2,471.21 2 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:467.16,469.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:474.80,476.29 2 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:479.2,481.32 3 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:487.2,487.18 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:476.29,478.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:481.32,486.3 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:490.67,492.29 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:495.2,496.29 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:492.29,494.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:499.67,501.29 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:504.2,505.29 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:501.29,503.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:508.67,510.29 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:513.2,514.29 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:510.29,512.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:533.68,534.20 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:537.2,537.27 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:541.2,543.39 3 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:549.2,549.21 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:534.20,536.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:537.27,540.3 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:543.39,545.44 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:545.44,547.4 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:555.75,556.56 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:559.2,560.21 2 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:567.2,567.22 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:556.56,558.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:560.21,561.32 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:561.32,563.4 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:563.9,565.4 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:572.80,573.23 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:588.2,588.24 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:573.23,575.30 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:582.3,583.17 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:586.3,586.24 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:575.30,577.18 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:580.4,580.24 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:577.18,579.5 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:583.17,585.4 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:591.59,593.16 2 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:597.2,597.42 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:593.16,595.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:600.64,601.31 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:608.2,608.20 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:601.31,603.17 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:606.3,606.25 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:603.17,605.4 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:611.61,613.16 2 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:616.2,616.35 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:613.16,615.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:619.60,621.16 2 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:624.2,624.34 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:621.16,623.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:627.74,629.16 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:632.2,632.27 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:635.2,635.44 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:629.16,631.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:632.27,634.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:638.78,640.16 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:643.2,644.27 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:650.2,651.41 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:640.16,642.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:644.27,646.71 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:646.71,648.4 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:654.61,655.48 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:658.2,658.53 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:661.2,666.8 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:655.48,657.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:658.53,660.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:669.70,671.16 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:674.2,674.45 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:671.16,673.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:677.72,679.16 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:682.2,682.41 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:679.16,681.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:685.67,687.16 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:690.2,690.29 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:687.16,689.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:693.67,695.16 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:698.2,698.30 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:695.16,697.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:701.76,703.16 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:706.2,706.27 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:703.16,705.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:709.69,711.16 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:714.2,714.25 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:711.16,713.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:717.72,719.16 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:722.2,722.32 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:719.16,721.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:725.69,727.16 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:730.2,730.30 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:727.16,729.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:733.65,735.32 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:738.2,739.20 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:735.32,737.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:742.64,744.32 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:747.2,748.39 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:756.2,756.18 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:744.32,746.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:748.39,755.3 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:759.71,761.16 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:764.2,764.26 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:761.16,763.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:767.71,769.16 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:772.2,772.34 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:769.16,771.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:775.75,777.26 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:784.2,785.15 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:788.2,788.30 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:777.26,779.17 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:782.3,782.20 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:779.17,781.4 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:785.15,787.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:801.88,802.20 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:806.2,806.16 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:802.20,805.3 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:811.65,813.2 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:815.84,817.16 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:820.2,824.8 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:817.16,819.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:827.71,829.32 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:832.2,833.20 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:829.32,831.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:836.76,838.32 2 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:841.2,842.42 2 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:851.2,851.18 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:838.32,840.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:842.42,850.3 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:854.102,856.32 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:859.2,860.51 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:863.2,870.8 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:856.32,858.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:860.51,862.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:873.90,875.32 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:878.2,879.54 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:882.2,888.8 3 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:875.32,877.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:879.54,881.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:912.96,914.31 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:917.2,918.27 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:925.2,925.17 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:914.31,916.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:918.27,924.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:928.102,930.34 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:933.2,934.31 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:937.2,938.29 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:946.2,949.42 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:930.34,932.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:934.31,936.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:938.29,940.17 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:943.3,943.23 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:940.17,942.4 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:954.22,955.27 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:961.2,965.8 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:955.27,957.17 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:957.17,959.4 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:988.43,990.2 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:992.37,994.2 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:996.36,998.2 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:1002.25,1003.27 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:1009.2,1010.16 2 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:1013.2,1014.21 2 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:1018.2,1022.8 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:1003.27,1005.17 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1005.17,1007.4 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1010.16,1012.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1014.21,1016.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1027.18,1028.27 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:1034.2,1035.23 2 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:1028.27,1030.17 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1030.17,1032.4 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1042.72,1045.2 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1047.78,1049.16 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1052.2,1053.25 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1061.2,1061.18 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1049.16,1051.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1053.25,1060.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1066.13,1073.2 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1077.25,1080.16 3 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1083.2,1084.21 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1088.2,1092.8 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1080.16,1082.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1084.21,1086.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1097.18,1101.2 3 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1111.20,1113.24 2 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:1139.2,1140.16 2 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:1145.2,1145.19 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:1113.24,1114.23 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:1117.3,1122.4 3 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:1114.23,1116.4 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:1123.8,1123.29 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:1123.29,1129.3 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1129.8,1135.3 2 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:1140.16,1142.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1142.8,1142.21 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:1142.21,1144.3 1 1 -github.com/ethereum/go-ethereum/graphql/graphql.go:1151.22,1155.20 3 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1160.2,1160.15 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1163.2,1164.30 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1182.2,1182.17 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1155.20,1157.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1157.8,1159.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1160.15,1162.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1164.30,1174.17 4 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1180.3,1180.27 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1174.17,1176.4 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1176.9,1176.22 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1176.22,1178.9 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1185.58,1187.2 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1189.108,1196.16 3 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1201.2,1201.16 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1196.16,1198.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1198.8,1198.21 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1198.21,1200.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1204.116,1206.54 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1209.2,1210.18 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1206.54,1208.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1233.100,1236.34 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1239.2,1240.32 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1243.2,1244.34 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1247.2,1248.31 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1252.2,1253.42 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1236.34,1238.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1240.32,1242.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1244.34,1246.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1248.31,1250.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1256.71,1258.16 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1261.2,1261.60 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1264.2,1264.36 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1258.16,1260.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1261.60,1263.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1267.83,1269.16 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1272.2,1272.36 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1269.16,1271.3 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1275.70,1277.2 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1284.52,1286.2 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1287.51,1289.2 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1290.51,1292.2 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1293.53,1295.2 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1296.57,1298.2 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1299.54,1301.2 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1302.58,1304.2 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1305.52,1307.2 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1308.57,1310.2 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1311.54,1313.2 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1314.58,1316.2 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1317.54,1319.2 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1320.58,1322.2 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1323.55,1325.2 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1326.54,1328.2 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1347.50,1351.52 2 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1355.2,1355.34 1 0 -github.com/ethereum/go-ethereum/graphql/graphql.go:1351.52,1353.3 1 0 -github.com/ethereum/go-ethereum/graphql/service.go:32.68,38.64 2 1 -github.com/ethereum/go-ethereum/graphql/service.go:43.2,45.16 3 1 -github.com/ethereum/go-ethereum/graphql/service.go:49.2,49.30 1 1 -github.com/ethereum/go-ethereum/graphql/service.go:53.2,54.23 2 1 -github.com/ethereum/go-ethereum/graphql/service.go:38.64,41.3 2 0 -github.com/ethereum/go-ethereum/graphql/service.go:45.16,48.3 2 0 -github.com/ethereum/go-ethereum/graphql/service.go:49.30,51.3 1 1 -github.com/ethereum/go-ethereum/graphql/service.go:59.81,60.20 1 1 -github.com/ethereum/go-ethereum/graphql/service.go:64.2,64.49 1 1 -github.com/ethereum/go-ethereum/graphql/service.go:60.20,61.27 1 0 -github.com/ethereum/go-ethereum/graphql/service.go:69.88,73.16 3 1 -github.com/ethereum/go-ethereum/graphql/service.go:76.2,83.12 6 1 -github.com/ethereum/go-ethereum/graphql/service.go:73.16,75.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:16.39,22.2 2 1 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:29.40,31.2 1 1 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:33.33,36.31 3 0 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:39.2,39.42 1 0 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:36.31,38.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:42.46,44.2 1 1 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:46.35,48.2 1 0 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:57.41,63.2 2 1 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:72.45,78.2 2 0 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:87.39,93.2 2 0 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:102.45,108.2 2 0 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:116.38,117.20 1 0 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:120.2,120.25 1 0 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:117.20,119.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:123.46,127.36 3 0 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:132.2,132.9 1 0 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:135.2,136.12 2 0 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:127.36,129.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:129.8,131.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:132.9,134.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:139.45,145.2 2 0 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:153.43,154.20 1 1 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:157.2,157.36 1 1 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:154.20,156.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:160.51,163.2 2 1 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:165.55,171.2 2 1 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:180.49,186.2 2 1 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:194.41,195.20 1 1 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:198.2,199.29 2 1 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:202.2,202.30 1 1 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:195.20,197.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:199.29,201.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:205.49,206.20 1 1 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:209.2,209.46 1 1 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:218.2,218.12 1 1 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:206.20,208.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:209.46,210.14 1 1 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:210.14,213.20 2 1 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:213.20,215.5 1 1 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:221.51,227.2 2 1 -github.com/ethereum/go-ethereum/internal/cli/flagset/flagset.go:236.47,242.2 2 0 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:50.51,53.16 3 0 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:56.2,56.29 1 0 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:61.2,61.16 1 0 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:53.16,55.3 1 0 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:56.29,57.32 1 0 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:57.32,59.4 1 0 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:66.56,67.19 1 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:70.2,73.16 4 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:67.19,69.3 1 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:78.54,80.2 1 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:82.52,84.29 2 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:96.2,96.16 1 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:84.29,95.3 9 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:114.51,119.2 1 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:122.48,125.2 2 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:128.54,129.20 1 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:134.2,134.28 1 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:129.20,133.3 2 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:138.46,141.14 3 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:141.14,143.3 1 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:143.8,145.3 1 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:155.53,161.2 2 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:163.44,165.2 1 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:168.50,170.2 1 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:172.42,174.14 2 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:177.2,179.20 3 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:174.14,176.3 1 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:189.66,191.2 1 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:193.59,194.17 1 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:218.2,218.15 1 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:194.17,195.16 1 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:202.3,203.16 2 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:209.3,212.17 4 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:215.3,216.19 2 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:195.16,196.60 1 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:199.4,199.19 1 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:196.60,198.5 1 0 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:203.16,207.4 3 0 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:212.17,214.4 1 0 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:222.32,223.14 1 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:223.14,226.3 2 0 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:230.37,232.23 2 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:237.2,237.14 1 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:232.23,233.15 1 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:233.15,235.4 1 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:241.36,245.2 3 0 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:247.48,250.12 3 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:262.2,263.17 2 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:250.12,252.16 2 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:260.3,260.13 1 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:252.16,253.36 1 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:253.36,258.5 4 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:275.23,275.24 0 0 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:279.23,282.2 2 0 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:285.20,289.2 3 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:292.27,296.2 3 0 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:300.36,304.2 3 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:308.52,311.55 3 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:314.2,314.38 1 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:311.55,313.3 1 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:318.38,321.2 2 1 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:324.54,327.2 2 0 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:330.38,333.2 2 0 -github.com/ethereum/go-ethereum/internal/utesting/utesting.go:336.54,339.2 2 0 -github.com/ethereum/go-ethereum/internal/jsre/completion.go:28.58,30.33 2 1 -github.com/ethereum/go-ethereum/internal/jsre/completion.go:33.2,33.16 1 1 -github.com/ethereum/go-ethereum/internal/jsre/completion.go:30.33,32.3 1 1 -github.com/ethereum/go-ethereum/internal/jsre/completion.go:36.71,38.21 2 1 -github.com/ethereum/go-ethereum/internal/jsre/completion.go:44.2,45.36 2 1 -github.com/ethereum/go-ethereum/internal/jsre/completion.go:56.2,57.52 2 1 -github.com/ethereum/go-ethereum/internal/jsre/completion.go:69.2,69.45 1 1 -github.com/ethereum/go-ethereum/internal/jsre/completion.go:80.2,81.16 2 1 -github.com/ethereum/go-ethereum/internal/jsre/completion.go:38.21,40.3 1 0 -github.com/ethereum/go-ethereum/internal/jsre/completion.go:45.36,47.56 2 1 -github.com/ethereum/go-ethereum/internal/jsre/completion.go:50.3,50.23 1 1 -github.com/ethereum/go-ethereum/internal/jsre/completion.go:47.56,49.4 1 0 -github.com/ethereum/go-ethereum/internal/jsre/completion.go:57.52,58.35 1 1 -github.com/ethereum/go-ethereum/internal/jsre/completion.go:58.35,59.23 1 1 -github.com/ethereum/go-ethereum/internal/jsre/completion.go:59.23,61.5 1 1 -github.com/ethereum/go-ethereum/internal/jsre/completion.go:61.10,63.5 1 1 -github.com/ethereum/go-ethereum/internal/jsre/completion.go:69.45,71.17 2 1 -github.com/ethereum/go-ethereum/internal/jsre/completion.go:71.17,72.53 1 1 -github.com/ethereum/go-ethereum/internal/jsre/completion.go:72.53,74.5 1 1 -github.com/ethereum/go-ethereum/internal/jsre/completion.go:74.10,76.5 1 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:71.52,84.2 5 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:87.32,90.45 3 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:94.2,95.22 2 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:90.45,92.3 1 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:107.32,116.81 6 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:135.2,135.56 1 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:140.2,140.57 1 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:145.2,145.58 1 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:153.2,173.6 8 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:217.2,217.33 1 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:116.81,118.17 2 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:121.3,128.55 3 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:132.3,132.37 1 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:118.17,120.4 1 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:128.55,130.4 1 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:135.56,138.3 2 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:140.57,143.3 2 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:145.58,147.40 2 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:151.3,151.26 1 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:147.40,150.4 2 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:173.6,174.10 1 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:175.25,178.37 2 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:187.4,189.15 3 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:192.4,195.31 3 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:203.30,207.48 3 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:210.46,211.49 1 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:178.37,181.31 3 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:181.31,183.6 1 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:184.10,186.5 1 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:189.15,190.79 1 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:195.31,197.5 1 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:197.10,199.49 2 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:199.49,200.16 1 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:207.48,208.15 1 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:211.49,212.15 1 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:217.33,220.3 2 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:225.44,228.9 3 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:229.27,230.9 1 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:231.19,231.19 0 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:236.45,240.6 3 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:240.6,241.10 1 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:242.20,243.10 1 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:244.45,246.10 2 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:247.20,249.53 1 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:256.41,258.16 2 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:261.2,261.39 1 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:258.16,260.3 1 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:265.60,266.31 1 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:267.2,267.15 1 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:266.31,266.62 1 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:271.59,272.31 1 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:273.2,273.12 1 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:272.31,272.48 1 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:277.83,278.60 1 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:278.60,280.17 2 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:283.3,283.16 1 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:280.17,281.29 1 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:288.52,289.31 1 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:289.31,291.17 2 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:296.3,296.18 1 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:291.17,293.4 1 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:293.9,295.4 1 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:301.42,303.30 2 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:305.2,305.9 1 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:303.31,303.32 0 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:306.44,306.44 0 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:308.10,309.21 1 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:314.66,315.31 1 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:316.2,316.12 1 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:315.31,315.76 1 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:320.59,324.16 4 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:327.2,328.16 2 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:331.2,331.19 1 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:324.16,326.3 1 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:328.16,330.3 1 0 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:334.87,336.16 2 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:339.2,339.30 1 1 -github.com/ethereum/go-ethereum/internal/jsre/jsre.go:336.16,338.3 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:56.67,58.2 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:61.60,63.46 2 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:66.2,66.42 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:63.46,65.3 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:69.66,70.35 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:74.2,74.25 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:70.35,73.3 2 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:82.43,84.2 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:86.68,87.43 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:91.2,92.9 2 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:87.43,90.3 2 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:93.28,94.55 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:95.30,96.51 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:97.57,98.51 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:99.10,100.38 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:100.38,102.4 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:102.9,104.4 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:111.61,112.15 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:117.2,119.12 2 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:112.15,113.31 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:113.31,115.4 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:122.73,123.25 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:124.26,127.15 3 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:131.3,131.34 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:135.3,136.35 2 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:145.3,145.25 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:147.16,149.27 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:154.3,155.21 2 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:159.3,159.34 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:163.3,164.26 2 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:173.3,173.14 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:176.3,176.47 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:178.18,182.47 4 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:184.16,185.54 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:187.10,188.35 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:127.15,130.4 2 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:131.34,134.4 2 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:136.35,138.17 2 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:141.4,141.17 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:138.17,140.5 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:141.17,143.5 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:149.27,152.4 2 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:155.21,158.4 2 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:159.34,162.4 2 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:164.26,168.23 4 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:171.4,171.23 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:168.23,170.5 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:173.14,175.4 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:188.35,191.4 2 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:191.9,193.4 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:197.52,202.24 2 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:224.2,227.33 4 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:202.24,203.60 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:206.3,209.17 3 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:203.60,205.4 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:209.17,215.4 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:215.9,216.57 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:216.57,218.5 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:218.10,220.5 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:230.84,232.41 2 1 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:236.2,236.52 1 1 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:232.41,235.3 2 1 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:236.52,237.41 1 1 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:237.41,238.19 1 1 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:238.19,240.5 1 1 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:245.70,248.13 3 1 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:251.2,252.16 2 1 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:255.2,256.25 2 1 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:248.13,249.67 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:252.16,253.77 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:257.21,258.24 1 1 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:261.16,262.24 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:265.10,266.82 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:258.24,260.4 1 1 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:262.24,264.4 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:270.51,272.62 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:278.2,279.22 2 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:282.2,284.15 3 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:287.2,288.23 2 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:272.62,273.61 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:273.61,275.4 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:279.22,281.3 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:284.15,286.3 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:291.40,293.2 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:295.76,296.43 1 1 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:301.2,301.12 1 0 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:296.43,297.53 1 1 -github.com/ethereum/go-ethereum/internal/jsre/pretty.go:297.53,299.4 1 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:33.67,45.2 3 0 -github.com/ethereum/go-ethereum/les/catalyst/api.go:53.60,54.62 1 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:57.2,57.32 1 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:54.62,55.59 1 0 -github.com/ethereum/go-ethereum/les/catalyst/api.go:70.160,71.44 1 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:75.2,75.78 1 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:83.2,83.49 1 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:90.2,90.57 1 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:93.2,93.30 1 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:96.2,96.43 1 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:71.44,74.3 2 0 -github.com/ethereum/go-ethereum/les/catalyst/api.go:75.78,76.89 1 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:80.3,80.36 1 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:76.89,79.4 1 0 -github.com/ethereum/go-ethereum/les/catalyst/api.go:83.49,84.94 1 0 -github.com/ethereum/go-ethereum/les/catalyst/api.go:84.94,87.4 1 0 -github.com/ethereum/go-ethereum/les/catalyst/api.go:90.57,92.3 1 0 -github.com/ethereum/go-ethereum/les/catalyst/api.go:93.30,95.3 1 0 -github.com/ethereum/go-ethereum/les/catalyst/api.go:100.101,102.2 1 0 -github.com/ethereum/go-ethereum/les/catalyst/api.go:105.107,107.16 2 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:110.2,110.78 1 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:120.2,121.19 2 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:124.2,126.21 3 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:129.2,129.73 1 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:132.2,132.54 1 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:135.2,136.82 2 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:107.16,109.3 1 0 -github.com/ethereum/go-ethereum/les/catalyst/api.go:110.78,119.3 1 0 -github.com/ethereum/go-ethereum/les/catalyst/api.go:121.19,123.3 1 0 -github.com/ethereum/go-ethereum/les/catalyst/api.go:126.21,128.3 1 0 -github.com/ethereum/go-ethereum/les/catalyst/api.go:129.73,131.3 1 0 -github.com/ethereum/go-ethereum/les/catalyst/api.go:132.54,134.3 1 0 -github.com/ethereum/go-ethereum/les/catalyst/api.go:139.78,144.2 2 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:147.59,150.2 2 0 -github.com/ethereum/go-ethereum/les/catalyst/api.go:152.79,154.37 1 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:158.2,159.19 2 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:162.2,163.84 2 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:166.2,166.12 1 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:154.37,156.3 1 0 -github.com/ethereum/go-ethereum/les/catalyst/api.go:159.19,161.3 1 0 -github.com/ethereum/go-ethereum/les/catalyst/api.go:163.84,165.3 1 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:170.61,174.34 3 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:177.2,178.26 2 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:181.2,181.73 1 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:185.2,185.56 1 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:188.2,188.12 1 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:174.34,176.3 1 1 -github.com/ethereum/go-ethereum/les/catalyst/api.go:178.26,180.3 1 0 -github.com/ethereum/go-ethereum/les/catalyst/api.go:181.73,183.3 1 0 -github.com/ethereum/go-ethereum/les/catalyst/api.go:185.56,187.3 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:73.72,82.18 2 1 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:85.2,86.13 2 1 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:82.18,84.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:90.38,96.2 4 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:99.57,103.21 3 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:106.2,110.12 5 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:113.2,113.41 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:103.21,105.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:110.12,112.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:121.50,129.2 6 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:133.34,138.2 4 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:142.52,143.73 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:148.2,148.20 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:143.73,147.3 3 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:152.54,154.25 2 1 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:157.2,158.49 2 1 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:161.2,161.21 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:164.2,164.21 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:154.25,156.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:158.49,160.3 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:161.21,163.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:168.59,174.51 5 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:174.51,177.3 2 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:177.8,178.41 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:185.3,185.128 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:178.41,179.50 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:179.50,183.5 3 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:190.79,192.14 2 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:197.2,197.41 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:192.14,194.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:194.8,194.51 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:194.51,196.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:203.118,209.36 5 1 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:216.2,218.21 3 1 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:221.2,222.54 2 1 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:209.36,210.22 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:214.3,214.51 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:210.22,213.4 2 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:218.21,220.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:226.89,234.21 7 1 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:237.2,238.12 2 1 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:241.2,241.19 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:234.21,236.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:238.12,240.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:259.73,268.18 2 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:271.2,271.13 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:268.18,270.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:275.59,280.44 4 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:287.2,287.22 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:280.44,282.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:282.8,283.41 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:283.41,285.4 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:292.55,293.25 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:296.2,296.22 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:304.2,305.21 2 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:293.25,295.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:296.22,299.47 3 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:299.47,302.4 2 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:305.21,307.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:316.74,320.31 3 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:323.2,326.36 4 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:329.2,329.33 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:336.2,337.21 2 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:340.2,340.20 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:320.31,322.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:326.36,328.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:329.33,331.22 2 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:334.3,334.19 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:331.22,333.4 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:337.21,339.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:346.62,355.33 5 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:361.2,363.21 3 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:355.33,357.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:357.8,360.3 2 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:363.21,365.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:370.57,376.31 5 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:379.2,380.9 2 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:383.2,386.13 4 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:389.2,389.36 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:396.2,398.21 3 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:376.31,378.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:380.9,382.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:386.13,388.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:389.36,394.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:398.21,400.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:405.49,409.34 3 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:412.2,414.31 3 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:417.2,420.21 4 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:409.34,411.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:414.31,416.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:420.21,422.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:426.36,430.21 3 0 -github.com/ethereum/go-ethereum/les/flowcontrol/control.go:430.21,432.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/logger.go:41.44,46.2 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/logger.go:49.56,51.68 2 0 -github.com/ethereum/go-ethereum/les/flowcontrol/logger.go:55.2,56.14 2 0 -github.com/ethereum/go-ethereum/les/flowcontrol/logger.go:51.68,54.3 2 0 -github.com/ethereum/go-ethereum/les/flowcontrol/logger.go:60.43,61.41 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/logger.go:61.41,64.3 2 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:108.81,111.65 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:115.2,115.18 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:118.2,118.12 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:132.2,132.11 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:111.65,111.99 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:115.18,117.3 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:118.12,120.7 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:120.7,121.11 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:122.35,125.21 3 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:126.27,128.11 2 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:136.33,140.2 3 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:143.66,150.20 6 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:150.20,152.3 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:152.8,154.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:161.77,162.13 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:165.2,166.13 2 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:169.2,172.22 4 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:162.13,164.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:166.13,168.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:177.52,189.2 10 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:192.55,201.2 7 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:207.106,214.2 5 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:220.100,221.24 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:224.2,224.53 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:221.24,223.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:229.88,234.39 4 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:234.39,235.22 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:238.3,238.36 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:235.22,237.4 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:243.98,252.2 7 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:256.45,257.36 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:261.2,263.20 3 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:266.2,266.15 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:269.2,269.44 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:257.36,260.3 2 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:263.20,265.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:266.15,268.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:274.61,279.25 3 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:279.25,281.37 2 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:284.3,287.21 4 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:290.3,295.18 4 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:302.3,304.60 2 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:308.3,308.45 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:281.37,283.4 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:287.21,289.4 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:295.18,301.4 3 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:304.60,307.4 2 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:314.110,317.54 3 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:325.2,327.14 3 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:330.2,331.49 2 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:335.2,335.14 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:338.2,338.28 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:341.2,341.13 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:317.54,320.54 3 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:323.3,323.42 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:320.54,322.4 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:327.14,329.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:331.49,334.3 2 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:335.14,337.3 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:338.28,340.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:341.13,343.28 2 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:346.3,348.46 3 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:343.28,345.4 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:353.64,358.35 4 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:361.2,364.40 4 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:367.2,367.35 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:358.35,360.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:364.40,366.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:376.80,380.47 3 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:386.2,386.40 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:389.2,389.13 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:380.47,382.48 2 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:382.48,384.4 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:386.40,388.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:389.13,391.3 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:396.44,398.88 2 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:401.2,402.31 2 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:398.88,400.3 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:402.31,403.10 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:404.55,404.55 0 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:405.11,405.11 0 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:412.72,418.2 4 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:424.54,427.12 3 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:430.2,430.13 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:438.2,438.12 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:441.2,442.19 2 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:445.2,446.12 2 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:449.2,449.87 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:427.12,429.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:430.13,432.19 2 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:432.19,434.4 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:434.9,436.4 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:438.12,440.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:442.19,444.3 1 1 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:446.12,448.3 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:453.41,455.24 2 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:461.2,461.13 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:455.24,456.18 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:459.3,459.14 1 0 -github.com/ethereum/go-ethereum/les/flowcontrol/manager.go:456.18,458.4 1 0 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:38.66,40.2 1 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:44.53,46.2 1 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:49.53,51.2 1 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:54.47,56.2 1 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:59.71,60.43 1 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:68.2,69.8 2 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:60.43,63.44 2 0 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:63.44,66.4 2 0 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:69.8,71.18 2 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:71.18,73.4 1 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:74.8,75.18 1 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:75.18,76.41 1 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:83.4,83.45 1 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:76.41,82.5 4 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:92.49,93.6 1 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:93.6,94.26 1 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:97.3,100.27 4 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:103.3,103.78 1 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:94.26,96.4 1 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:100.27,102.4 1 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:103.78,105.4 1 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:120.59,122.124 2 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:128.2,131.18 4 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:135.2,136.28 2 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:142.2,143.41 2 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:122.124,124.28 2 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:124.28,125.14 1 0 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:131.18,134.3 2 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:136.28,139.3 2 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:139.8,141.3 1 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:148.60,149.18 1 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:160.2,165.17 6 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:168.2,168.13 1 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:149.18,154.18 5 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:158.3,158.14 1 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:154.18,157.4 2 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:165.17,167.3 1 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:172.56,173.30 1 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:182.2,182.12 1 0 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:173.30,174.14 1 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:180.3,180.11 1 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:174.14,175.20 1 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:178.4,178.44 1 1 -github.com/ethereum/go-ethereum/les/utils/weighted_select.go:175.20,177.5 1 1 -github.com/ethereum/go-ethereum/les/utils/exec_queue.go:31.44,36.2 4 1 -github.com/ethereum/go-ethereum/les/utils/exec_queue.go:38.28,39.61 1 1 -github.com/ethereum/go-ethereum/les/utils/exec_queue.go:42.2,42.20 1 1 -github.com/ethereum/go-ethereum/les/utils/exec_queue.go:39.61,41.3 1 1 -github.com/ethereum/go-ethereum/les/utils/exec_queue.go:45.52,47.30 2 1 -github.com/ethereum/go-ethereum/les/utils/exec_queue.go:52.2,52.20 1 1 -github.com/ethereum/go-ethereum/les/utils/exec_queue.go:59.2,60.10 2 1 -github.com/ethereum/go-ethereum/les/utils/exec_queue.go:47.30,51.3 1 1 -github.com/ethereum/go-ethereum/les/utils/exec_queue.go:52.20,53.23 1 1 -github.com/ethereum/go-ethereum/les/utils/exec_queue.go:57.3,57.16 1 1 -github.com/ethereum/go-ethereum/les/utils/exec_queue.go:53.23,55.9 2 1 -github.com/ethereum/go-ethereum/les/utils/exec_queue.go:63.37,65.2 1 1 -github.com/ethereum/go-ethereum/les/utils/exec_queue.go:68.37,73.2 4 1 -github.com/ethereum/go-ethereum/les/utils/exec_queue.go:76.42,79.8 3 1 -github.com/ethereum/go-ethereum/les/utils/exec_queue.go:83.2,84.11 2 1 -github.com/ethereum/go-ethereum/les/utils/exec_queue.go:79.8,82.3 2 1 -github.com/ethereum/go-ethereum/les/utils/exec_queue.go:88.29,92.2 3 0 -github.com/ethereum/go-ethereum/les/utils/exec_queue.go:97.28,99.19 2 1 -github.com/ethereum/go-ethereum/les/utils/exec_queue.go:103.2,104.15 2 1 -github.com/ethereum/go-ethereum/les/utils/exec_queue.go:99.19,102.3 2 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:60.52,62.2 1 0 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:66.67,68.2 1 0 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:71.55,74.2 2 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:77.67,81.21 4 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:84.2,84.21 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:88.2,88.42 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:100.2,102.12 3 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:81.21,83.3 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:84.21,87.3 2 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:88.42,93.16 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:98.3,98.16 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:93.16,95.4 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:95.9,97.4 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:106.47,107.19 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:110.2,110.19 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:114.2,114.18 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:107.19,109.3 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:110.19,113.3 2 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:118.47,119.19 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:122.2,122.19 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:126.2,126.21 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:119.19,121.3 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:122.19,125.3 2 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:126.21,128.3 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:128.8,130.3 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:134.38,136.2 1 0 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:148.62,150.23 2 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:158.2,158.14 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:150.23,152.20 2 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:152.20,154.4 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:154.9,156.4 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:163.75,165.23 2 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:174.2,174.43 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:179.2,179.14 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:165.23,167.20 2 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:172.3,172.20 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:167.20,169.4 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:169.9,171.4 1 0 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:174.43,176.3 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:176.8,178.3 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:203.61,208.12 4 0 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:211.2,212.15 2 0 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:208.12,210.3 1 0 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:216.71,222.2 4 0 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:225.57,230.13 4 0 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:233.2,233.67 1 0 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:230.13,232.3 1 0 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:243.40,245.2 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:248.42,250.2 1 0 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:253.38,255.2 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:258.39,260.2 1 1 -github.com/ethereum/go-ethereum/les/utils/expiredvalue.go:268.35,270.2 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:71.42,71.81 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:76.44,77.25 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:80.2,85.35 6 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:77.25,78.59 1 0 -github.com/ethereum/go-ethereum/les/utils/limiter.go:91.62,92.92 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:95.2,98.26 4 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:92.92,93.59 1 0 -github.com/ethereum/go-ethereum/les/utils/limiter.go:103.47,104.92 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:108.2,109.24 2 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:113.2,116.12 4 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:121.2,121.26 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:104.92,105.59 1 0 -github.com/ethereum/go-ethereum/les/utils/limiter.go:109.24,112.3 2 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:116.12,118.3 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:118.8,120.3 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:125.45,127.2 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:130.45,132.72 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:138.2,140.10 3 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:132.72,132.115 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:133.72,133.112 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:146.98,147.24 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:150.2,150.15 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:154.2,154.25 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:157.2,159.22 3 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:164.2,166.21 3 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:169.2,169.8 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:147.24,149.3 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:150.15,153.3 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:154.25,156.3 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:159.22,161.3 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:161.8,163.3 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:166.21,168.3 1 0 -github.com/ethereum/go-ethereum/les/utils/limiter.go:177.100,182.12 4 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:186.2,186.18 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:189.2,189.31 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:224.2,225.32 2 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:228.2,228.16 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:182.12,185.3 2 0 -github.com/ethereum/go-ethereum/les/utils/limiter.go:186.18,188.3 1 0 -github.com/ethereum/go-ethereum/les/utils/limiter.go:189.31,190.22 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:190.22,194.29 4 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:194.29,198.5 2 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:199.9,205.4 4 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:206.8,215.24 3 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:218.3,219.26 2 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:222.3,222.28 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:215.24,217.4 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:219.26,221.4 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:225.32,227.3 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:232.41,234.21 2 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:239.2,244.26 6 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:234.21,236.3 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:236.8,238.3 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:249.61,252.15 3 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:256.2,257.28 2 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:252.15,255.3 2 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:261.50,264.24 3 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:267.2,267.28 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:264.24,266.3 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:272.41,274.25 2 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:277.2,277.24 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:274.25,276.3 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:281.39,282.52 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:288.2,290.11 3 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:282.52,283.61 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:283.61,286.4 2 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:294.33,298.6 3 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:298.6,299.13 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:307.3,308.16 2 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:312.3,312.22 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:299.13,300.31 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:305.4,305.10 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:300.31,301.38 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:301.38,303.6 1 0 -github.com/ethereum/go-ethereum/les/utils/limiter.go:308.16,310.12 2 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:312.22,322.25 10 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:322.25,324.5 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:324.10,326.5 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:327.9,330.4 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:335.26,341.2 4 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:351.29,353.2 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:355.39,357.2 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:359.34,361.2 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:366.34,371.29 2 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:374.2,374.29 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:387.2,388.28 2 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:371.29,373.3 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:374.29,375.22 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:378.3,379.19 2 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:382.3,385.5 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:375.22,376.12 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:379.19,381.4 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:388.28,389.41 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:396.3,401.36 6 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:389.41,391.4 1 1 -github.com/ethereum/go-ethereum/les/utils/limiter.go:401.36,403.4 1 1 -github.com/ethereum/go-ethereum/les/utils/timeutils.go:33.79,35.19 1 1 -github.com/ethereum/go-ethereum/les/utils/timeutils.go:39.2,39.18 1 1 -github.com/ethereum/go-ethereum/les/utils/timeutils.go:42.2,46.3 1 1 -github.com/ethereum/go-ethereum/les/utils/timeutils.go:35.19,37.3 1 1 -github.com/ethereum/go-ethereum/les/utils/timeutils.go:39.18,41.3 1 0 -github.com/ethereum/go-ethereum/les/utils/timeutils.go:49.75,51.2 1 1 -github.com/ethereum/go-ethereum/les/utils/timeutils.go:53.96,58.14 4 1 -github.com/ethereum/go-ethereum/les/utils/timeutils.go:61.2,61.24 1 1 -github.com/ethereum/go-ethereum/les/utils/timeutils.go:64.2,64.20 1 1 -github.com/ethereum/go-ethereum/les/utils/timeutils.go:68.2,68.14 1 0 -github.com/ethereum/go-ethereum/les/utils/timeutils.go:58.14,60.3 1 0 -github.com/ethereum/go-ethereum/les/utils/timeutils.go:61.24,63.3 1 1 -github.com/ethereum/go-ethereum/les/utils/timeutils.go:64.20,67.3 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:142.52,143.26 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:146.2,146.33 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:143.26,145.3 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:150.55,151.26 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:154.2,154.28 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:151.26,153.3 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:203.276,229.2 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:233.32,235.2 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:239.31,241.2 1 0 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:246.70,255.9 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:256.25,257.13 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:258.16,259.23 1 0 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:264.71,269.9 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:270.22,271.13 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:272.16,273.23 1 0 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:279.108,285.9 3 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:291.2,291.9 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:297.2,297.9 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:286.32,286.32 0 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:287.16,288.13 1 0 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:292.77,292.77 0 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:293.16,294.13 1 0 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:298.24,299.22 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:300.16,301.13 1 0 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:307.173,313.9 3 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:319.2,319.9 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:325.2,325.9 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:314.30,314.30 0 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:315.16,316.18 1 0 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:320.101,320.101 0 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:321.16,322.18 1 0 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:326.24,327.40 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:328.16,329.18 1 0 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:335.31,346.6 6 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:346.6,348.42 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:354.3,355.24 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:382.3,382.10 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:348.42,349.48 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:349.48,351.5 1 0 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:355.24,358.32 3 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:362.4,363.25 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:371.4,371.120 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:375.4,375.15 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:358.32,360.5 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:363.25,365.33 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:368.5,368.10 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:365.33,367.6 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:371.120,373.13 2 0 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:375.15,377.5 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:377.10,379.5 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:383.17,385.10 1 0 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:387.35,392.25 3 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:398.4,398.31 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:406.4,406.50 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:409.4,409.52 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:412.4,414.79 3 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:417.4,417.29 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:421.25,427.15 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:430.4,430.39 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:432.25,435.23 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:437.23,441.45 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:461.4,461.38 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:477.4,477.33 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:479.26,483.43 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:495.4,495.38 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:506.4,506.39 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:508.35,513.11 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:518.4,523.40 3 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:572.4,573.11 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:579.4,579.40 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:590.4,590.42 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:594.4,594.35 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:600.33,603.11 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:608.4,611.29 3 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:654.4,655.11 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:661.4,661.33 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:392.25,395.10 3 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:398.31,399.113 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:399.113,402.11 3 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:406.50,407.10 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:409.52,410.10 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:414.79,416.5 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:417.29,419.5 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:427.15,428.13 1 0 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:441.45,445.16 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:448.5,448.48 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:445.16,447.6 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:448.48,454.88 3 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:454.88,457.7 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:461.38,466.15 3 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:466.15,467.31 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:470.6,470.34 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:467.31,469.7 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:470.34,473.7 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:483.43,489.32 3 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:489.32,492.6 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:495.38,499.32 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:502.5,503.51 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:499.32,501.6 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:514.25,514.25 0 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:515.18,516.11 1 0 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:523.40,527.166 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:527.166,529.51 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:537.6,537.17 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:546.6,546.33 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:529.51,533.15 4 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:537.17,538.35 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:542.7,543.15 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:538.35,541.8 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:546.33,551.91 3 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:562.7,562.48 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:551.91,559.16 6 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:563.12,566.7 2 0 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:567.11,570.6 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:574.72,574.72 0 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:575.18,576.11 1 0 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:579.40,581.40 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:584.5,585.28 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:581.40,582.14 1 0 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:585.28,587.6 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:590.42,592.5 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:594.35,595.64 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:595.64,597.6 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:604.25,604.25 0 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:605.18,606.11 1 0 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:611.29,612.73 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:612.73,619.47 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:646.6,646.17 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:619.47,620.64 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:623.7,623.39 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:626.7,626.49 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:629.7,629.37 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:632.7,632.44 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:636.7,637.34 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:620.64,621.16 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:623.39,625.8 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:626.49,627.16 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:629.37,631.8 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:632.44,633.16 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:637.34,641.8 3 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:641.13,643.8 1 0 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:646.17,650.15 4 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:656.24,656.24 0 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:657.18,658.11 1 0 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:661.33,662.64 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:662.64,664.6 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:671.59,673.27 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:678.2,678.13 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:683.2,684.40 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:689.2,689.51 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:673.27,675.3 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:678.13,681.3 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:684.40,685.40 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:685.40,687.4 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:693.65,695.25 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:699.2,700.38 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:705.2,705.52 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:695.25,697.3 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:700.38,701.40 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:701.40,703.4 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:710.87,715.19 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:721.2,722.24 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:729.2,729.97 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:736.2,736.34 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:715.19,717.3 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:717.8,719.3 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:722.24,727.3 4 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:729.97,734.3 4 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:736.34,738.20 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:743.3,746.31 4 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:749.3,749.120 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:738.20,740.4 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:740.9,742.4 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:746.31,748.4 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:756.73,760.12 3 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:760.12,761.16 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:763.3,764.20 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:769.3,769.83 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:775.3,775.69 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:780.3,780.28 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:761.16,761.34 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:764.20,767.4 2 0 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:769.83,773.4 3 0 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:775.69,778.4 2 0 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:780.28,782.4 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:789.70,794.12 3 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:794.12,795.16 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:798.3,799.20 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:804.3,804.53 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:820.3,820.63 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:825.3,829.28 3 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:795.16,795.34 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:799.20,802.4 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:805.12,808.36 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:810.33,810.33 0 0 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:813.11,817.10 3 0 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:820.63,823.4 2 0 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:829.28,831.4 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:837.53,839.46 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:852.2,852.51 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:861.2,861.43 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:867.2,870.53 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:839.46,840.40 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:846.3,847.34 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:840.40,842.41 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:842.41,844.5 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:847.34,849.4 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:852.51,854.40 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:857.3,857.27 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:854.40,856.4 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:861.43,863.40 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:863.40,865.4 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:870.53,872.40 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:875.3,875.29 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:872.40,874.4 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:881.54,882.45 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:882.45,884.35 2 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:887.3,887.25 1 1 -github.com/ethereum/go-ethereum/les/fetcher/block_fetcher.go:884.35,886.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/api.go:33.62,35.2 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/api.go:38.53,39.51 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/api.go:42.2,42.71 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/api.go:39.51,41.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/api.go:42.71,44.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/api.go:44.8,46.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/api.go:51.64,53.2 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/api.go:61.100,63.17 2 0 -github.com/ethereum/go-ethereum/les/vflux/client/api.go:66.2,66.19 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/api.go:69.2,69.50 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/api.go:63.17,65.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/api.go:66.19,68.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/api.go:69.50,71.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/api.go:71.8,73.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/api.go:83.89,84.19 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/api.go:87.2,87.50 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/api.go:84.19,86.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/api.go:87.50,89.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/api.go:89.8,91.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/api.go:96.86,99.19 3 0 -github.com/ethereum/go-ethereum/les/vflux/client/api.go:102.2,102.50 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/api.go:99.19,101.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/api.go:102.50,104.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/api.go:104.8,106.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:42.103,50.83 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:64.2,65.11 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:50.83,52.29 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:55.3,55.29 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:58.3,58.27 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:61.3,61.19 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:52.29,54.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:55.29,57.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:58.27,60.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:70.31,71.6 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:71.6,73.43 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:77.3,78.23 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:81.3,81.66 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:73.43,75.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:78.23,80.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:89.42,94.26 4 1 -github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:94.26,96.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/fillset.go:100.28,107.2 5 1 -github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:42.150,50.107 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:74.2,74.11 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:50.107,53.27 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:57.3,60.15 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:72.3,72.19 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:53.27,55.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:60.15,62.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:62.9,64.32 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:64.32,65.22 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:65.22,68.11 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:78.38,80.38 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:91.2,91.15 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:97.2,97.13 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:105.2,106.13 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:80.38,81.29 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:84.3,84.40 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:87.3,87.29 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:81.29,83.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:84.40,86.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:87.29,89.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:91.15,95.3 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:97.13,101.3 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:101.8,104.3 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:110.34,115.2 4 1 -github.com/ethereum/go-ethereum/les/vflux/client/queueiterator.go:118.45,123.2 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:75.44,76.17 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:85.2,85.17 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:76.17,78.32 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:83.3,83.14 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:78.32,82.4 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:85.17,87.32 2 0 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:92.3,92.14 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:87.32,91.4 3 0 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:98.39,99.27 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:99.27,101.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:106.105,111.2 4 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:115.57,117.2 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:122.62,127.35 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:139.2,139.12 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:127.35,130.20 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:133.3,133.19 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:136.3,137.36 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:130.20,132.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:133.19,135.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:144.42,148.2 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:153.56,160.36 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:164.2,164.19 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:172.2,172.21 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:160.36,163.3 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:164.19,167.37 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:167.37,170.4 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:177.45,179.35 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:179.35,180.19 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:180.19,182.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:182.9,184.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:189.39,191.35 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:195.2,196.35 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:191.35,194.3 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:196.35,199.3 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:204.69,209.35 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:213.2,213.19 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:216.2,216.55 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:209.35,212.3 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:213.19,215.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:220.51,222.2 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:225.53,229.40 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:232.2,233.12 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:229.40,231.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:237.54,239.2 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:242.56,247.39 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:250.2,251.12 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:247.39,249.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:259.112,261.34 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:264.2,266.34 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:273.2,273.22 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:278.2,278.34 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:284.2,284.11 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:261.34,263.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:266.34,267.34 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:267.34,271.4 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:273.22,275.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:275.8,277.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:278.34,279.34 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/requestbasket.go:279.34,282.4 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:110.43,111.40 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:120.4,120.48 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:111.40,119.5 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:122.41,131.4 4 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:136.43,137.42 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:141.4,141.48 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:137.42,140.5 2 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:143.41,145.53 2 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:148.4,148.20 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:145.53,147.5 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:154.200,158.30 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:164.2,172.18 8 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:176.2,176.132 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:184.2,186.34 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:158.30,158.58 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:172.18,174.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:176.132,177.63 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:177.63,181.4 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:186.34,187.26 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:187.26,190.5 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:203.42,204.27 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:208.2,208.14 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:204.27,207.3 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:212.49,214.2 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:217.38,219.2 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:224.54,229.34 4 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:232.2,232.30 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:235.2,235.33 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:229.34,231.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:232.30,234.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:235.33,237.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:241.55,242.19 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:242.19,244.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:250.92,252.93 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:297.2,297.88 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:252.93,253.32 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:260.3,262.30 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:265.3,265.48 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:274.3,274.13 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:253.32,254.32 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:258.4,258.10 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:254.32,257.5 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:262.30,264.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:265.48,273.4 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:274.13,276.15 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:286.4,286.26 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:276.15,279.34 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:279.34,282.6 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:283.10,285.5 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:286.26,288.15 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:293.5,293.55 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:288.15,290.6 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:290.11,292.6 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:297.88,298.14 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:298.14,300.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:300.9,302.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:307.30,309.36 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:314.2,314.36 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:321.2,322.24 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:337.2,337.35 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:309.36,313.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:314.36,315.64 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:315.64,317.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:317.9,319.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:322.24,323.93 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:323.93,325.100 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:325.100,328.24 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:333.5,333.93 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:328.24,332.6 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:341.29,342.22 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:345.2,345.24 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:351.2,352.13 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:342.22,344.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:345.24,346.91 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:346.91,349.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:356.80,357.40 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:360.2,361.24 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:368.2,368.17 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:357.40,359.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:361.24,364.29 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:364.29,366.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:372.55,373.24 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:378.2,378.28 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:373.24,377.3 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:384.37,390.69 5 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:394.2,404.40 4 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:407.2,407.44 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:410.2,411.26 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:422.2,423.24 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:390.69,392.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:404.40,406.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:407.44,409.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:411.26,415.37 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:418.3,418.31 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:415.37,417.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:418.31,420.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:427.49,432.2 4 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:436.81,441.2 4 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:445.71,447.16 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:450.2,451.30 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:454.2,454.22 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:447.16,449.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:451.30,453.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:458.88,460.16 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:463.2,468.85 5 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:476.2,476.8 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:460.16,462.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:468.85,472.33 4 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:472.33,474.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:482.95,484.35 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:493.2,493.20 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:484.35,487.3 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:487.8,492.3 4 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:505.91,522.32 7 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:537.2,538.34 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:543.2,545.23 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:548.2,548.33 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:551.2,552.26 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:522.32,525.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:525.8,534.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:538.34,540.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:545.23,547.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:548.33,550.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:552.26,558.3 5 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:558.8,564.3 3 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:571.56,576.2 4 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:579.46,581.2 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:585.65,585.79 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:586.65,586.81 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:595.58,596.68 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:600.2,600.10 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:596.68,599.3 2 0 -github.com/ethereum/go-ethereum/les/vflux/client/serverpool.go:604.45,606.2 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:53.47,54.11 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:57.2,58.11 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:61.2,62.26 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:65.2,65.10 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:54.11,56.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:58.11,60.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:62.26,64.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:70.47,72.11 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:75.2,75.52 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:72.11,74.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:83.70,84.21 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:92.2,92.8 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:84.21,86.20 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:86.20,88.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:88.9,90.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:96.59,102.2 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:105.61,110.39 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:113.2,114.12 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:110.39,112.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:118.108,125.26 7 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:125.26,127.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:132.49,133.18 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:140.2,140.18 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:133.18,135.30 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:138.3,138.15 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:135.30,137.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:140.18,142.30 2 0 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:145.3,145.15 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:142.30,144.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:151.106,153.29 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:156.2,156.11 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:159.2,159.55 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:153.29,155.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:156.11,158.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:163.61,165.28 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:165.28,167.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:171.61,173.28 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:173.28,174.22 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:174.22,176.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:176.9,178.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:188.70,190.29 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:193.2,195.32 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:199.2,200.21 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:203.2,203.11 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:206.2,207.26 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:210.2,210.11 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:190.29,192.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:195.32,198.3 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:200.21,202.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:203.11,205.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:207.26,209.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:219.114,221.16 2 0 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:232.2,232.29 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:236.2,236.8 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:221.16,223.30 2 0 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:226.3,226.14 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:223.30,225.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:226.14,228.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:229.8,231.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/timestats.go:232.29,235.3 2 0 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:57.60,62.2 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:68.99,75.2 5 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:83.120,89.12 5 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:92.2,95.84 4 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:89.12,91.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:104.82,113.25 7 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:117.2,117.44 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:113.25,116.3 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:121.57,126.2 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:175.183,182.30 5 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:186.2,187.30 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:193.2,204.35 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:210.2,214.12 4 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:227.2,227.11 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:182.30,185.3 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:187.30,191.3 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:204.35,209.3 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:214.12,215.7 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:215.7,216.11 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:217.37,220.21 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:221.27,223.11 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:232.55,234.2 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:238.65,243.2 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:247.60,249.16 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:252.2,254.48 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:258.2,258.26 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:262.2,263.44 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:267.2,269.12 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:272.2,277.32 5 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:289.2,289.29 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:293.2,293.52 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:302.2,302.12 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:249.16,251.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:254.48,257.3 2 0 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:258.26,261.3 2 0 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:263.44,266.3 2 0 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:269.12,271.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:277.32,278.29 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:281.3,281.29 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:286.3,287.8 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:278.29,279.17 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:281.29,282.17 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:282.17,283.18 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:289.29,292.3 2 0 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:293.52,295.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:295.8,296.53 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:300.3,300.115 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:296.53,299.4 2 0 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:306.36,316.16 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:320.2,321.16 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:325.2,325.64 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:316.16,319.3 2 0 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:321.16,324.3 2 0 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:325.64,327.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:332.32,338.35 6 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:341.2,343.18 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:338.35,340.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:347.65,351.25 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:355.2,363.11 8 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:351.25,354.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:367.49,371.39 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:371.39,374.3 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:379.64,384.2 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:388.70,389.36 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:392.2,394.16 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:397.2,399.48 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:403.2,403.27 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:407.2,408.44 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:412.2,414.55 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:423.2,423.11 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:389.36,391.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:394.16,396.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:399.48,402.3 2 0 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:403.27,406.3 2 0 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:408.44,411.3 2 0 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:414.55,416.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:416.8,417.56 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:421.3,421.141 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:417.56,420.4 2 0 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:427.69,439.16 7 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:443.2,444.16 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:448.2,448.86 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:439.16,442.3 2 0 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:444.16,447.3 2 0 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:448.86,450.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:454.53,460.2 4 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:465.42,471.34 5 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:476.2,478.34 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:481.2,481.15 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:471.34,475.3 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:478.34,480.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:491.59,500.49 8 0 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:505.2,505.12 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/valuetracker.go:500.49,504.3 3 0 -github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:42.139,43.36 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:52.2,58.108 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:67.2,67.107 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:83.2,83.10 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:43.36,45.15 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:48.3,49.12 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:45.15,47.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:58.108,59.64 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:59.64,64.4 4 1 -github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:67.107,70.27 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:74.3,75.15 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:80.3,81.18 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:70.27,72.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:75.15,77.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:77.9,79.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:87.35,90.2 2 1 -github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:92.48,96.6 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:96.6,97.36 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:100.3,100.15 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:106.3,106.36 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:97.36,99.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:100.15,102.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:106.36,110.4 3 1 -github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:116.31,121.2 4 1 -github.com/ethereum/go-ethereum/les/vflux/client/wrsiterator.go:124.42,128.2 3 1 -github.com/ethereum/go-ethereum/log/handler_glog.go:54.45,58.2 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:61.46,63.2 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:74.44,76.2 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:93.53,95.51 2 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:136.2,143.12 6 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:95.51,97.21 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:101.3,102.22 2 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:105.3,107.47 3 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:111.3,112.17 2 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:115.3,115.17 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:119.3,120.53 2 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:127.3,127.42 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:130.3,133.51 3 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:97.21,98.12 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:102.22,104.4 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:107.47,109.4 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:112.17,114.4 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:115.17,116.12 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:120.53,121.19 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:121.19,123.5 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:123.10,123.25 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:123.25,125.5 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:127.42,129.4 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:151.58,154.21 2 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:157.2,159.46 3 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:163.2,163.41 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:166.2,166.50 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:170.2,176.12 5 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:154.21,156.3 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:159.46,161.3 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:163.41,165.3 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:166.50,168.3 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:181.44,183.41 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:201.2,201.50 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:205.2,205.41 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:209.2,214.9 4 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:228.2,228.18 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:231.2,231.12 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:183.41,191.12 4 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:191.12,198.4 4 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:201.50,203.3 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:205.41,207.3 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:214.9,216.35 2 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:223.3,223.10 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:226.3,226.18 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:216.35,217.60 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:217.60,219.10 2 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:223.10,225.4 1 0 -github.com/ethereum/go-ethereum/log/handler_glog.go:228.18,230.3 1 0 -github.com/ethereum/go-ethereum/log/handler_go14.go:14.44,16.2 1 0 -github.com/ethereum/go-ethereum/log/handler_go14.go:18.48,20.2 1 1 -github.com/ethereum/go-ethereum/log/handler_go14.go:22.37,24.2 1 0 -github.com/ethereum/go-ethereum/log/logger.go:30.37,31.11 1 0 -github.com/ethereum/go-ethereum/log/logger.go:32.16,33.17 1 0 -github.com/ethereum/go-ethereum/log/logger.go:34.16,35.17 1 0 -github.com/ethereum/go-ethereum/log/logger.go:36.15,37.17 1 0 -github.com/ethereum/go-ethereum/log/logger.go:38.15,39.17 1 0 -github.com/ethereum/go-ethereum/log/logger.go:40.16,41.17 1 0 -github.com/ethereum/go-ethereum/log/logger.go:42.15,43.17 1 0 -github.com/ethereum/go-ethereum/log/logger.go:44.10,45.21 1 0 -github.com/ethereum/go-ethereum/log/logger.go:50.30,51.11 1 0 -github.com/ethereum/go-ethereum/log/logger.go:52.16,53.16 1 0 -github.com/ethereum/go-ethereum/log/logger.go:54.16,55.16 1 0 -github.com/ethereum/go-ethereum/log/logger.go:56.15,57.16 1 0 -github.com/ethereum/go-ethereum/log/logger.go:58.15,59.16 1 0 -github.com/ethereum/go-ethereum/log/logger.go:60.16,61.16 1 0 -github.com/ethereum/go-ethereum/log/logger.go:62.15,63.16 1 0 -github.com/ethereum/go-ethereum/log/logger.go:64.10,65.21 1 0 -github.com/ethereum/go-ethereum/log/logger.go:71.51,72.19 1 0 -github.com/ethereum/go-ethereum/log/logger.go:73.23,74.23 1 0 -github.com/ethereum/go-ethereum/log/logger.go:75.23,76.23 1 0 -github.com/ethereum/go-ethereum/log/logger.go:77.14,78.22 1 0 -github.com/ethereum/go-ethereum/log/logger.go:79.14,80.22 1 0 -github.com/ethereum/go-ethereum/log/logger.go:81.23,82.23 1 0 -github.com/ethereum/go-ethereum/log/logger.go:83.14,84.22 1 0 -github.com/ethereum/go-ethereum/log/logger.go:85.10,86.62 1 0 -github.com/ethereum/go-ethereum/log/logger.go:133.74,147.2 1 0 -github.com/ethereum/go-ethereum/log/logger.go:149.49,153.2 3 0 -github.com/ethereum/go-ethereum/log/logger.go:155.75,161.2 5 0 -github.com/ethereum/go-ethereum/log/logger.go:163.56,165.2 1 0 -github.com/ethereum/go-ethereum/log/logger.go:167.56,169.2 1 0 -github.com/ethereum/go-ethereum/log/logger.go:171.55,173.2 1 0 -github.com/ethereum/go-ethereum/log/logger.go:175.55,177.2 1 0 -github.com/ethereum/go-ethereum/log/logger.go:179.56,181.2 1 0 -github.com/ethereum/go-ethereum/log/logger.go:183.55,186.2 2 0 -github.com/ethereum/go-ethereum/log/logger.go:188.39,190.2 1 0 -github.com/ethereum/go-ethereum/log/logger.go:192.40,194.2 1 1 -github.com/ethereum/go-ethereum/log/logger.go:196.49,198.19 1 0 -github.com/ethereum/go-ethereum/log/logger.go:209.2,209.21 1 0 -github.com/ethereum/go-ethereum/log/logger.go:213.2,213.12 1 0 -github.com/ethereum/go-ethereum/log/logger.go:198.19,199.37 1 0 -github.com/ethereum/go-ethereum/log/logger.go:199.37,201.4 1 0 -github.com/ethereum/go-ethereum/log/logger.go:209.21,211.3 1 0 -github.com/ethereum/go-ethereum/log/logger.go:234.38,238.22 3 0 -github.com/ethereum/go-ethereum/log/logger.go:244.2,244.12 1 0 -github.com/ethereum/go-ethereum/log/logger.go:238.22,242.3 3 0 -github.com/ethereum/go-ethereum/log/root.go:13.13,15.2 1 1 -github.com/ethereum/go-ethereum/log/root.go:19.37,21.2 1 0 -github.com/ethereum/go-ethereum/log/root.go:24.20,26.2 1 0 -github.com/ethereum/go-ethereum/log/root.go:33.44,35.2 1 0 -github.com/ethereum/go-ethereum/log/root.go:38.44,40.2 1 0 -github.com/ethereum/go-ethereum/log/root.go:43.43,45.2 1 0 -github.com/ethereum/go-ethereum/log/root.go:48.43,50.2 1 0 -github.com/ethereum/go-ethereum/log/root.go:53.44,55.2 1 0 -github.com/ethereum/go-ethereum/log/root.go:58.43,61.2 2 0 -github.com/ethereum/go-ethereum/log/root.go:68.69,70.2 1 0 -github.com/ethereum/go-ethereum/log/syslog.go:13.88,16.2 2 0 -github.com/ethereum/go-ethereum/log/syslog.go:20.109,23.2 2 0 -github.com/ethereum/go-ethereum/log/syslog.go:25.82,26.16 1 0 -github.com/ethereum/go-ethereum/log/syslog.go:29.2,29.41 1 0 -github.com/ethereum/go-ethereum/log/syslog.go:49.2,49.52 1 0 -github.com/ethereum/go-ethereum/log/syslog.go:26.16,28.3 1 0 -github.com/ethereum/go-ethereum/log/syslog.go:29.41,31.16 2 0 -github.com/ethereum/go-ethereum/log/syslog.go:46.3,47.21 2 0 -github.com/ethereum/go-ethereum/log/syslog.go:32.16,33.25 1 0 -github.com/ethereum/go-ethereum/log/syslog.go:34.17,35.24 1 0 -github.com/ethereum/go-ethereum/log/syslog.go:36.16,37.28 1 0 -github.com/ethereum/go-ethereum/log/syslog.go:38.16,39.25 1 0 -github.com/ethereum/go-ethereum/log/syslog.go:40.17,41.26 1 0 -github.com/ethereum/go-ethereum/log/syslog.go:42.17,43.36 1 0 -github.com/ethereum/go-ethereum/log/syslog.go:43.36,43.50 1 0 -github.com/ethereum/go-ethereum/log/syslog.go:52.90,54.2 1 0 -github.com/ethereum/go-ethereum/log/syslog.go:56.111,58.2 1 0 -github.com/ethereum/go-ethereum/log/format.go:32.31,33.11 1 0 -github.com/ethereum/go-ethereum/log/format.go:33.11,35.3 1 0 -github.com/ethereum/go-ethereum/log/format.go:35.8,37.3 1 0 -github.com/ethereum/go-ethereum/log/format.go:61.48,63.2 1 1 -github.com/ethereum/go-ethereum/log/format.go:67.46,69.2 1 0 -github.com/ethereum/go-ethereum/log/format.go:88.43,89.43 1 0 -github.com/ethereum/go-ethereum/log/format.go:89.43,91.15 2 0 -github.com/ethereum/go-ethereum/log/format.go:108.3,110.47 3 0 -github.com/ethereum/go-ethereum/log/format.go:138.3,139.45 2 0 -github.com/ethereum/go-ethereum/log/format.go:143.3,144.19 2 0 -github.com/ethereum/go-ethereum/log/format.go:91.15,92.17 1 0 -github.com/ethereum/go-ethereum/log/format.go:93.17,94.15 1 0 -github.com/ethereum/go-ethereum/log/format.go:95.18,96.15 1 0 -github.com/ethereum/go-ethereum/log/format.go:97.17,98.15 1 0 -github.com/ethereum/go-ethereum/log/format.go:99.17,100.15 1 0 -github.com/ethereum/go-ethereum/log/format.go:101.18,102.15 1 0 -github.com/ethereum/go-ethereum/log/format.go:103.18,104.15 1 0 -github.com/ethereum/go-ethereum/log/format.go:110.47,113.41 2 0 -github.com/ethereum/go-ethereum/log/format.go:117.4,118.29 2 0 -github.com/ethereum/go-ethereum/log/format.go:122.4,125.17 2 0 -github.com/ethereum/go-ethereum/log/format.go:113.41,115.5 1 0 -github.com/ethereum/go-ethereum/log/format.go:118.29,121.5 2 0 -github.com/ethereum/go-ethereum/log/format.go:125.17,127.5 1 0 -github.com/ethereum/go-ethereum/log/format.go:127.10,129.5 1 0 -github.com/ethereum/go-ethereum/log/format.go:130.9,131.17 1 0 -github.com/ethereum/go-ethereum/log/format.go:131.17,133.5 1 0 -github.com/ethereum/go-ethereum/log/format.go:133.10,135.5 1 0 -github.com/ethereum/go-ethereum/log/format.go:139.45,141.4 1 0 -github.com/ethereum/go-ethereum/log/format.go:153.28,154.43 1 1 -github.com/ethereum/go-ethereum/log/format.go:154.43,159.3 4 0 -github.com/ethereum/go-ethereum/log/format.go:162.73,163.35 1 0 -github.com/ethereum/go-ethereum/log/format.go:198.2,198.21 1 0 -github.com/ethereum/go-ethereum/log/format.go:163.35,164.13 1 0 -github.com/ethereum/go-ethereum/log/format.go:168.3,170.10 3 0 -github.com/ethereum/go-ethereum/log/format.go:175.3,180.54 5 0 -github.com/ethereum/go-ethereum/log/format.go:187.3,187.16 1 0 -github.com/ethereum/go-ethereum/log/format.go:193.3,194.41 2 0 -github.com/ethereum/go-ethereum/log/format.go:164.13,166.4 1 0 -github.com/ethereum/go-ethereum/log/format.go:170.10,172.4 1 0 -github.com/ethereum/go-ethereum/log/format.go:180.54,186.4 4 0 -github.com/ethereum/go-ethereum/log/format.go:187.16,189.4 1 0 -github.com/ethereum/go-ethereum/log/format.go:189.9,192.4 2 0 -github.com/ethereum/go-ethereum/log/format.go:194.41,196.4 1 0 -github.com/ethereum/go-ethereum/log/format.go:203.26,205.2 1 0 -github.com/ethereum/go-ethereum/log/format.go:210.61,212.12 2 0 -github.com/ethereum/go-ethereum/log/format.go:217.2,217.43 1 0 -github.com/ethereum/go-ethereum/log/format.go:212.12,213.53 1 0 -github.com/ethereum/go-ethereum/log/format.go:213.53,215.4 1 0 -github.com/ethereum/go-ethereum/log/format.go:217.43,225.38 6 0 -github.com/ethereum/go-ethereum/log/format.go:233.3,236.17 3 0 -github.com/ethereum/go-ethereum/log/format.go:242.3,242.20 1 0 -github.com/ethereum/go-ethereum/log/format.go:245.3,245.11 1 0 -github.com/ethereum/go-ethereum/log/format.go:225.38,227.11 2 0 -github.com/ethereum/go-ethereum/log/format.go:230.4,231.50 2 0 -github.com/ethereum/go-ethereum/log/format.go:227.11,229.5 1 0 -github.com/ethereum/go-ethereum/log/format.go:236.17,241.4 2 0 -github.com/ethereum/go-ethereum/log/format.go:242.20,244.4 1 0 -github.com/ethereum/go-ethereum/log/format.go:252.54,254.12 2 0 -github.com/ethereum/go-ethereum/log/format.go:260.2,260.43 1 0 -github.com/ethereum/go-ethereum/log/format.go:254.12,255.53 1 0 -github.com/ethereum/go-ethereum/log/format.go:255.53,257.4 1 0 -github.com/ethereum/go-ethereum/log/format.go:260.43,267.38 5 0 -github.com/ethereum/go-ethereum/log/format.go:275.3,276.17 2 0 -github.com/ethereum/go-ethereum/log/format.go:283.3,283.20 1 0 -github.com/ethereum/go-ethereum/log/format.go:287.3,287.11 1 0 -github.com/ethereum/go-ethereum/log/format.go:267.38,269.11 2 0 -github.com/ethereum/go-ethereum/log/format.go:272.4,272.42 1 0 -github.com/ethereum/go-ethereum/log/format.go:269.11,271.5 1 0 -github.com/ethereum/go-ethereum/log/format.go:276.17,281.4 2 0 -github.com/ethereum/go-ethereum/log/format.go:283.20,285.4 1 0 -github.com/ethereum/go-ethereum/log/format.go:291.59,292.15 1 0 -github.com/ethereum/go-ethereum/log/format.go:302.2,302.27 1 0 -github.com/ethereum/go-ethereum/log/format.go:292.15,293.35 1 0 -github.com/ethereum/go-ethereum/log/format.go:293.35,294.73 1 0 -github.com/ethereum/go-ethereum/log/format.go:294.73,296.5 1 0 -github.com/ethereum/go-ethereum/log/format.go:296.10,297.15 1 0 -github.com/ethereum/go-ethereum/log/format.go:303.17,304.30 1 0 -github.com/ethereum/go-ethereum/log/format.go:306.13,307.19 1 0 -github.com/ethereum/go-ethereum/log/format.go:309.20,310.20 1 0 -github.com/ethereum/go-ethereum/log/format.go:312.10,313.11 1 0 -github.com/ethereum/go-ethereum/log/format.go:317.53,319.22 2 0 -github.com/ethereum/go-ethereum/log/format.go:320.101,321.15 1 0 -github.com/ethereum/go-ethereum/log/format.go:322.10,323.35 1 0 -github.com/ethereum/go-ethereum/log/format.go:328.61,329.18 1 0 -github.com/ethereum/go-ethereum/log/format.go:333.2,333.27 1 0 -github.com/ethereum/go-ethereum/log/format.go:348.2,348.10 1 0 -github.com/ethereum/go-ethereum/log/format.go:354.2,355.27 2 0 -github.com/ethereum/go-ethereum/log/format.go:329.18,331.3 1 0 -github.com/ethereum/go-ethereum/log/format.go:334.17,338.30 1 0 -github.com/ethereum/go-ethereum/log/format.go:340.16,343.15 1 0 -github.com/ethereum/go-ethereum/log/format.go:346.3,346.31 1 0 -github.com/ethereum/go-ethereum/log/format.go:343.15,345.4 1 0 -github.com/ethereum/go-ethereum/log/format.go:348.10,349.44 1 0 -github.com/ethereum/go-ethereum/log/format.go:349.44,352.4 1 0 -github.com/ethereum/go-ethereum/log/format.go:356.12,357.31 1 0 -github.com/ethereum/go-ethereum/log/format.go:358.15,359.61 1 0 -github.com/ethereum/go-ethereum/log/format.go:360.15,361.52 1 0 -github.com/ethereum/go-ethereum/log/format.go:362.12,363.41 1 0 -github.com/ethereum/go-ethereum/log/format.go:364.13,365.41 1 0 -github.com/ethereum/go-ethereum/log/format.go:366.13,367.41 1 0 -github.com/ethereum/go-ethereum/log/format.go:368.14,369.41 1 0 -github.com/ethereum/go-ethereum/log/format.go:371.11,372.37 1 0 -github.com/ethereum/go-ethereum/log/format.go:373.13,374.37 1 0 -github.com/ethereum/go-ethereum/log/format.go:375.13,376.30 1 0 -github.com/ethereum/go-ethereum/log/format.go:377.12,378.39 1 0 -github.com/ethereum/go-ethereum/log/format.go:379.14,380.39 1 0 -github.com/ethereum/go-ethereum/log/format.go:381.14,382.31 1 0 -github.com/ethereum/go-ethereum/log/format.go:383.14,384.25 1 0 -github.com/ethereum/go-ethereum/log/format.go:385.10,386.49 1 0 -github.com/ethereum/go-ethereum/log/format.go:391.40,392.11 1 1 -github.com/ethereum/go-ethereum/log/format.go:395.2,395.45 1 1 -github.com/ethereum/go-ethereum/log/format.go:392.11,394.3 1 1 -github.com/ethereum/go-ethereum/log/format.go:399.42,401.2 1 1 -github.com/ethereum/go-ethereum/log/format.go:403.52,405.16 1 1 -github.com/ethereum/go-ethereum/log/format.go:413.2,420.19 3 1 -github.com/ethereum/go-ethereum/log/format.go:430.2,430.9 1 1 -github.com/ethereum/go-ethereum/log/format.go:434.2,434.26 1 1 -github.com/ethereum/go-ethereum/log/format.go:405.16,406.10 1 1 -github.com/ethereum/go-ethereum/log/format.go:406.10,408.4 1 1 -github.com/ethereum/go-ethereum/log/format.go:408.9,410.4 1 1 -github.com/ethereum/go-ethereum/log/format.go:420.19,421.17 1 1 -github.com/ethereum/go-ethereum/log/format.go:421.17,424.4 2 1 -github.com/ethereum/go-ethereum/log/format.go:424.9,428.4 3 1 -github.com/ethereum/go-ethereum/log/format.go:430.9,433.3 2 1 -github.com/ethereum/go-ethereum/log/format.go:438.44,439.18 1 1 -github.com/ethereum/go-ethereum/log/format.go:442.2,442.17 1 1 -github.com/ethereum/go-ethereum/log/format.go:446.2,452.50 2 1 -github.com/ethereum/go-ethereum/log/format.go:468.2,468.26 1 1 -github.com/ethereum/go-ethereum/log/format.go:439.18,441.3 1 0 -github.com/ethereum/go-ethereum/log/format.go:442.17,444.3 1 0 -github.com/ethereum/go-ethereum/log/format.go:452.50,455.10 2 1 -github.com/ethereum/go-ethereum/log/format.go:456.17,457.14 1 1 -github.com/ethereum/go-ethereum/log/format.go:458.19,462.15 4 1 -github.com/ethereum/go-ethereum/log/format.go:463.11,465.11 2 1 -github.com/ethereum/go-ethereum/log/format.go:473.36,475.22 2 0 -github.com/ethereum/go-ethereum/log/format.go:482.2,482.19 1 0 -github.com/ethereum/go-ethereum/log/format.go:485.2,485.25 1 0 -github.com/ethereum/go-ethereum/log/format.go:475.22,477.38 1 0 -github.com/ethereum/go-ethereum/log/format.go:477.38,479.9 2 0 -github.com/ethereum/go-ethereum/log/format.go:482.19,484.3 1 0 -github.com/ethereum/go-ethereum/log/handler.go:24.52,26.2 1 1 -github.com/ethereum/go-ethereum/log/handler.go:30.43,32.2 1 0 -github.com/ethereum/go-ethereum/log/handler.go:41.55,42.41 1 1 -github.com/ethereum/go-ethereum/log/handler.go:46.2,46.36 1 1 -github.com/ethereum/go-ethereum/log/handler.go:42.41,45.3 2 0 -github.com/ethereum/go-ethereum/log/handler.go:52.37,54.43 2 1 -github.com/ethereum/go-ethereum/log/handler.go:54.43,58.3 3 0 -github.com/ethereum/go-ethereum/log/handler.go:65.61,67.16 2 0 -github.com/ethereum/go-ethereum/log/handler.go:70.2,70.55 1 0 -github.com/ethereum/go-ethereum/log/handler.go:67.16,69.3 1 0 -github.com/ethereum/go-ethereum/log/handler.go:75.69,77.16 2 0 -github.com/ethereum/go-ethereum/log/handler.go:81.2,81.61 1 0 -github.com/ethereum/go-ethereum/log/handler.go:77.16,79.3 1 0 -github.com/ethereum/go-ethereum/log/handler.go:92.40,94.2 1 0 -github.com/ethereum/go-ethereum/log/handler.go:98.43,99.43 1 0 -github.com/ethereum/go-ethereum/log/handler.go:99.43,102.3 2 0 -github.com/ethereum/go-ethereum/log/handler.go:107.43,108.43 1 0 -github.com/ethereum/go-ethereum/log/handler.go:108.43,111.3 2 0 -github.com/ethereum/go-ethereum/log/handler.go:115.53,117.2 1 0 -github.com/ethereum/go-ethereum/log/handler.go:124.59,125.43 1 0 -github.com/ethereum/go-ethereum/log/handler.go:125.43,127.17 2 0 -github.com/ethereum/go-ethereum/log/handler.go:130.3,130.18 1 0 -github.com/ethereum/go-ethereum/log/handler.go:127.17,129.4 1 0 -github.com/ethereum/go-ethereum/log/handler.go:147.64,148.43 1 0 -github.com/ethereum/go-ethereum/log/handler.go:148.43,149.12 1 0 -github.com/ethereum/go-ethereum/log/handler.go:152.3,152.13 1 0 -github.com/ethereum/go-ethereum/log/handler.go:149.12,151.4 1 0 -github.com/ethereum/go-ethereum/log/handler.go:163.75,164.51 1 0 -github.com/ethereum/go-ethereum/log/handler.go:164.51,165.14 1 0 -github.com/ethereum/go-ethereum/log/handler.go:174.3,174.38 1 0 -github.com/ethereum/go-ethereum/log/handler.go:179.3,179.15 1 0 -github.com/ethereum/go-ethereum/log/handler.go:166.23,167.25 1 0 -github.com/ethereum/go-ethereum/log/handler.go:168.24,169.26 1 0 -github.com/ethereum/go-ethereum/log/handler.go:170.23,171.25 1 0 -github.com/ethereum/go-ethereum/log/handler.go:174.38,175.23 1 0 -github.com/ethereum/go-ethereum/log/handler.go:175.23,177.5 1 0 -github.com/ethereum/go-ethereum/log/handler.go:190.54,191.51 1 0 -github.com/ethereum/go-ethereum/log/handler.go:191.51,193.3 1 0 -github.com/ethereum/go-ethereum/log/handler.go:205.42,206.43 1 0 -github.com/ethereum/go-ethereum/log/handler.go:206.43,207.24 1 0 -github.com/ethereum/go-ethereum/log/handler.go:211.3,211.13 1 0 -github.com/ethereum/go-ethereum/log/handler.go:207.24,210.4 1 0 -github.com/ethereum/go-ethereum/log/handler.go:230.45,231.43 1 0 -github.com/ethereum/go-ethereum/log/handler.go:231.43,233.24 2 0 -github.com/ethereum/go-ethereum/log/handler.go:241.3,241.13 1 0 -github.com/ethereum/go-ethereum/log/handler.go:233.24,235.18 2 0 -github.com/ethereum/go-ethereum/log/handler.go:238.4,238.65 1 0 -github.com/ethereum/go-ethereum/log/handler.go:235.18,237.5 1 0 -github.com/ethereum/go-ethereum/log/handler.go:248.50,249.43 1 0 -github.com/ethereum/go-ethereum/log/handler.go:249.43,252.3 2 0 -github.com/ethereum/go-ethereum/log/handler.go:260.54,262.12 2 0 -github.com/ethereum/go-ethereum/log/handler.go:267.2,267.29 1 0 -github.com/ethereum/go-ethereum/log/handler.go:262.12,263.23 1 0 -github.com/ethereum/go-ethereum/log/handler.go:263.23,265.4 1 0 -github.com/ethereum/go-ethereum/log/handler.go:274.37,275.43 1 1 -github.com/ethereum/go-ethereum/log/handler.go:275.43,279.38 2 0 -github.com/ethereum/go-ethereum/log/handler.go:295.3,295.13 1 0 -github.com/ethereum/go-ethereum/log/handler.go:299.3,299.18 1 0 -github.com/ethereum/go-ethereum/log/handler.go:279.38,281.10 2 0 -github.com/ethereum/go-ethereum/log/handler.go:281.10,283.19 2 0 -github.com/ethereum/go-ethereum/log/handler.go:283.19,286.6 2 0 -github.com/ethereum/go-ethereum/log/handler.go:286.11,287.43 1 0 -github.com/ethereum/go-ethereum/log/handler.go:290.6,290.18 1 0 -github.com/ethereum/go-ethereum/log/handler.go:287.43,289.7 1 0 -github.com/ethereum/go-ethereum/log/handler.go:295.13,297.4 1 0 -github.com/ethereum/go-ethereum/log/handler.go:303.49,306.30 2 0 -github.com/ethereum/go-ethereum/log/handler.go:310.2,310.19 1 0 -github.com/ethereum/go-ethereum/log/handler.go:314.2,314.21 1 0 -github.com/ethereum/go-ethereum/log/handler.go:318.2,320.23 3 0 -github.com/ethereum/go-ethereum/log/handler.go:323.2,324.28 2 0 -github.com/ethereum/go-ethereum/log/handler.go:327.2,327.20 1 0 -github.com/ethereum/go-ethereum/log/handler.go:306.30,308.3 1 0 -github.com/ethereum/go-ethereum/log/handler.go:310.19,312.3 1 0 -github.com/ethereum/go-ethereum/log/handler.go:314.21,316.3 1 0 -github.com/ethereum/go-ethereum/log/handler.go:320.23,322.3 1 0 -github.com/ethereum/go-ethereum/log/handler.go:324.28,326.3 1 0 -github.com/ethereum/go-ethereum/log/handler.go:333.31,334.43 1 1 -github.com/ethereum/go-ethereum/log/handler.go:334.43,336.3 1 0 -github.com/ethereum/go-ethereum/log/handler.go:344.41,345.16 1 0 -github.com/ethereum/go-ethereum/log/handler.go:348.2,348.10 1 0 -github.com/ethereum/go-ethereum/log/handler.go:345.16,346.13 1 0 -github.com/ethereum/go-ethereum/log/handler.go:353.63,355.2 1 0 -github.com/ethereum/go-ethereum/log/handler.go:357.71,359.2 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:117.92,122.2 4 0 -github.com/ethereum/go-ethereum/light/postprocess.go:125.88,129.2 3 0 -github.com/ethereum/go-ethereum/light/postprocess.go:144.118,156.2 3 0 -github.com/ethereum/go-ethereum/light/postprocess.go:160.108,163.6 3 0 -github.com/ethereum/go-ethereum/light/postprocess.go:163.6,165.14 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:166.12,168.24 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:169.19,171.11 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:177.11,178.14 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:172.22,173.21 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:174.40,174.40 0 0 -github.com/ethereum/go-ethereum/light/postprocess.go:184.107,186.17 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:189.2,192.32 3 0 -github.com/ethereum/go-ethereum/light/postprocess.go:198.2,199.12 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:186.17,188.3 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:192.32,194.17 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:194.17,196.4 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:203.86,208.15 4 0 -github.com/ethereum/go-ethereum/light/postprocess.go:211.2,215.12 5 0 -github.com/ethereum/go-ethereum/light/postprocess.go:208.15,209.13 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:219.44,221.16 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:225.2,225.23 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:251.2,253.12 3 0 -github.com/ethereum/go-ethereum/light/postprocess.go:221.16,223.3 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:225.23,228.55 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:230.3,238.17 4 0 -github.com/ethereum/go-ethereum/light/postprocess.go:247.3,247.140 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:228.55,228.78 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:238.17,240.56 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:240.56,243.5 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:243.10,245.5 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:248.8,250.3 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:259.59,261.22 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:264.2,269.6 4 0 -github.com/ethereum/go-ethereum/light/postprocess.go:294.2,294.38 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:297.2,298.12 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:261.22,263.3 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:269.6,271.24 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:274.3,274.37 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:286.3,286.47 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:292.3,292.38 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:271.24,272.9 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:274.37,285.4 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:286.47,287.40 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:290.4,290.17 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:287.40,289.5 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:294.38,296.3 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:307.98,312.2 4 0 -github.com/ethereum/go-ethereum/light/postprocess.go:315.94,319.2 3 0 -github.com/ethereum/go-ethereum/light/postprocess.go:337.126,352.2 5 0 -github.com/ethereum/go-ethereum/light/postprocess.go:356.114,363.26 4 0 -github.com/ethereum/go-ethereum/light/postprocess.go:385.2,385.50 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:388.2,390.50 3 0 -github.com/ethereum/go-ethereum/light/postprocess.go:397.2,397.22 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:363.26,364.13 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:364.13,365.34 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:365.34,367.9 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:367.9,368.58 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:368.58,370.14 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:371.25,373.14 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:374.43,374.43 0 0 -github.com/ethereum/go-ethereum/light/postprocess.go:377.12,379.12 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:385.50,387.3 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:390.50,392.21 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:395.3,395.25 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:392.21,394.4 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:401.113,403.17 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:406.2,408.32 3 0 -github.com/ethereum/go-ethereum/light/postprocess.go:414.2,415.12 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:403.17,405.3 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:408.32,410.17 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:410.17,412.4 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:419.92,421.31 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:424.2,424.12 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:421.31,423.3 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:428.50,431.50 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:457.2,458.16 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:462.2,462.23 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:488.2,492.12 4 0 -github.com/ethereum/go-ethereum/light/postprocess.go:431.50,436.49 5 0 -github.com/ethereum/go-ethereum/light/postprocess.go:447.3,451.20 4 0 -github.com/ethereum/go-ethereum/light/postprocess.go:436.49,438.18 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:441.4,442.19 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:445.4,445.42 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:438.18,440.5 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:442.19,444.5 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:451.20,453.4 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:453.9,455.4 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:458.16,460.3 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:462.23,465.55 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:467.3,475.17 4 0 -github.com/ethereum/go-ethereum/light/postprocess.go:484.3,484.142 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:465.55,465.78 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:475.17,477.56 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:477.56,480.5 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:480.10,482.5 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:485.8,487.3 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:497.65,499.22 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:502.2,503.50 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:506.2,507.12 2 0 -github.com/ethereum/go-ethereum/light/postprocess.go:499.22,501.3 1 0 -github.com/ethereum/go-ethereum/light/postprocess.go:503.50,505.3 1 0 -github.com/ethereum/go-ethereum/light/trie.go:38.87,41.2 2 1 -github.com/ethereum/go-ethereum/light/trie.go:43.95,45.2 1 1 -github.com/ethereum/go-ethereum/light/trie.go:53.71,55.2 1 1 -github.com/ethereum/go-ethereum/light/trie.go:57.88,59.2 1 1 -github.com/ethereum/go-ethereum/light/trie.go:61.58,62.23 1 0 -github.com/ethereum/go-ethereum/light/trie.go:63.16,65.20 2 0 -github.com/ethereum/go-ethereum/light/trie.go:69.3,69.13 1 0 -github.com/ethereum/go-ethereum/light/trie.go:70.10,71.47 1 0 -github.com/ethereum/go-ethereum/light/trie.go:65.20,68.4 2 0 -github.com/ethereum/go-ethereum/light/trie.go:75.85,76.25 1 1 -github.com/ethereum/go-ethereum/light/trie.go:79.2,80.20 2 1 -github.com/ethereum/go-ethereum/light/trie.go:83.2,87.22 5 1 -github.com/ethereum/go-ethereum/light/trie.go:76.25,78.3 1 0 -github.com/ethereum/go-ethereum/light/trie.go:80.20,82.3 1 1 -github.com/ethereum/go-ethereum/light/trie.go:90.86,93.2 2 0 -github.com/ethereum/go-ethereum/light/trie.go:95.48,97.2 1 0 -github.com/ethereum/go-ethereum/light/trie.go:105.54,108.38 3 1 -github.com/ethereum/go-ethereum/light/trie.go:112.2,112.17 1 1 -github.com/ethereum/go-ethereum/light/trie.go:108.38,111.3 2 1 -github.com/ethereum/go-ethereum/light/trie.go:115.79,118.16 3 0 -github.com/ethereum/go-ethereum/light/trie.go:121.2,121.32 1 0 -github.com/ethereum/go-ethereum/light/trie.go:118.16,120.3 1 0 -github.com/ethereum/go-ethereum/light/trie.go:121.32,123.3 1 0 -github.com/ethereum/go-ethereum/light/trie.go:126.54,128.32 2 0 -github.com/ethereum/go-ethereum/light/trie.go:128.32,130.3 1 0 -github.com/ethereum/go-ethereum/light/trie.go:133.47,135.32 2 0 -github.com/ethereum/go-ethereum/light/trie.go:135.32,137.3 1 0 -github.com/ethereum/go-ethereum/light/trie.go:140.78,141.19 1 0 -github.com/ethereum/go-ethereum/light/trie.go:144.2,144.30 1 0 -github.com/ethereum/go-ethereum/light/trie.go:141.19,143.3 1 0 -github.com/ethereum/go-ethereum/light/trie.go:147.38,148.19 1 0 -github.com/ethereum/go-ethereum/light/trie.go:151.2,151.22 1 0 -github.com/ethereum/go-ethereum/light/trie.go:148.19,150.3 1 0 -github.com/ethereum/go-ethereum/light/trie.go:154.67,156.2 1 1 -github.com/ethereum/go-ethereum/light/trie.go:158.45,160.2 1 0 -github.com/ethereum/go-ethereum/light/trie.go:162.89,164.2 1 0 -github.com/ethereum/go-ethereum/light/trie.go:168.57,169.6 1 1 -github.com/ethereum/go-ethereum/light/trie.go:169.6,171.20 2 1 -github.com/ethereum/go-ethereum/light/trie.go:174.3,174.17 1 1 -github.com/ethereum/go-ethereum/light/trie.go:177.3,177.49 1 1 -github.com/ethereum/go-ethereum/light/trie.go:180.3,181.60 2 1 -github.com/ethereum/go-ethereum/light/trie.go:171.20,173.4 1 1 -github.com/ethereum/go-ethereum/light/trie.go:174.17,176.4 1 1 -github.com/ethereum/go-ethereum/light/trie.go:177.49,179.4 1 1 -github.com/ethereum/go-ethereum/light/trie.go:181.60,183.4 1 1 -github.com/ethereum/go-ethereum/light/trie.go:193.69,196.19 2 1 -github.com/ethereum/go-ethereum/light/trie.go:205.2,205.21 1 1 -github.com/ethereum/go-ethereum/light/trie.go:209.2,209.11 1 1 -github.com/ethereum/go-ethereum/light/trie.go:196.19,197.22 1 1 -github.com/ethereum/go-ethereum/light/trie.go:197.22,199.18 2 1 -github.com/ethereum/go-ethereum/light/trie.go:202.4,202.14 1 1 -github.com/ethereum/go-ethereum/light/trie.go:199.18,201.5 1 1 -github.com/ethereum/go-ethereum/light/trie.go:205.21,208.3 2 1 -github.com/ethereum/go-ethereum/light/trie.go:212.49,214.21 2 1 -github.com/ethereum/go-ethereum/light/trie.go:218.2,218.11 1 1 -github.com/ethereum/go-ethereum/light/trie.go:214.21,217.3 2 1 -github.com/ethereum/go-ethereum/light/trie.go:222.45,224.6 2 1 -github.com/ethereum/go-ethereum/light/trie.go:224.6,227.10 3 1 -github.com/ethereum/go-ethereum/light/trie.go:230.3,230.35 1 1 -github.com/ethereum/go-ethereum/light/trie.go:234.3,236.71 3 1 -github.com/ethereum/go-ethereum/light/trie.go:227.10,229.4 1 1 -github.com/ethereum/go-ethereum/light/trie.go:230.35,233.4 2 0 -github.com/ethereum/go-ethereum/light/trie.go:236.71,238.4 1 0 -github.com/ethereum/go-ethereum/light/trie.go:242.39,243.19 1 1 -github.com/ethereum/go-ethereum/light/trie.go:246.2,246.32 1 1 -github.com/ethereum/go-ethereum/light/trie.go:243.19,245.3 1 0 -github.com/ethereum/go-ethereum/light/trie.go:249.38,250.45 1 1 -github.com/ethereum/go-ethereum/light/trie.go:253.2,253.21 1 1 -github.com/ethereum/go-ethereum/light/trie.go:256.2,257.57 2 1 -github.com/ethereum/go-ethereum/light/trie.go:260.2,260.12 1 1 -github.com/ethereum/go-ethereum/light/trie.go:250.45,252.3 1 0 -github.com/ethereum/go-ethereum/light/trie.go:253.21,255.3 1 1 -github.com/ethereum/go-ethereum/light/trie.go:257.57,259.3 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:90.93,111.2 4 1 -github.com/ethereum/go-ethereum/light/txpool.go:114.70,116.2 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:121.88,124.26 3 0 -github.com/ethereum/go-ethereum/light/txpool.go:127.2,128.22 2 0 -github.com/ethereum/go-ethereum/light/txpool.go:131.2,131.23 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:134.2,134.19 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:124.26,126.3 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:128.22,130.3 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:131.23,133.3 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:142.68,144.27 2 1 -github.com/ethereum/go-ethereum/light/txpool.go:144.27,146.3 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:146.8,148.3 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:152.84,153.29 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:160.2,160.8 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:153.29,154.10 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:154.10,156.4 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:156.9,158.4 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:166.115,168.28 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:171.2,172.16 2 1 -github.com/ethereum/go-ethereum/light/txpool.go:176.2,177.42 2 1 -github.com/ethereum/go-ethereum/light/txpool.go:183.2,183.17 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:197.2,197.12 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:168.28,170.3 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:172.16,174.3 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:177.42,178.43 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:178.43,180.4 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:183.17,185.74 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:188.3,191.27 2 1 -github.com/ethereum/go-ethereum/light/txpool.go:195.3,195.26 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:185.74,187.4 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:191.27,194.4 2 1 -github.com/ethereum/go-ethereum/light/txpool.go:202.71,204.38 2 0 -github.com/ethereum/go-ethereum/light/txpool.go:213.2,213.15 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:204.38,205.27 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:211.3,211.27 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:205.27,210.4 4 0 -github.com/ethereum/go-ethereum/light/txpool.go:222.106,228.33 5 1 -github.com/ethereum/go-ethereum/light/txpool.go:242.2,242.42 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:246.2,246.33 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:249.2,251.43 2 1 -github.com/ethereum/go-ethereum/light/txpool.go:260.2,260.71 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:278.2,278.17 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:228.33,229.51 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:233.3,233.50 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:229.51,232.4 2 0 -github.com/ethereum/go-ethereum/light/txpool.go:233.50,236.19 3 1 -github.com/ethereum/go-ethereum/light/txpool.go:236.19,239.5 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:242.42,244.3 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:246.33,248.3 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:251.43,253.97 2 1 -github.com/ethereum/go-ethereum/light/txpool.go:256.3,256.19 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:253.97,255.4 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:260.71,262.26 2 1 -github.com/ethereum/go-ethereum/light/txpool.go:275.3,275.23 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:262.26,263.42 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:263.42,265.41 2 1 -github.com/ethereum/go-ethereum/light/txpool.go:265.41,267.30 2 1 -github.com/ethereum/go-ethereum/light/txpool.go:270.6,271.30 2 1 -github.com/ethereum/go-ethereum/light/txpool.go:267.30,269.7 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:287.33,288.6 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:288.6,289.10 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:290.33,294.32 2 1 -github.com/ethereum/go-ethereum/light/txpool.go:297.34,298.10 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:303.52,318.2 10 1 -github.com/ethereum/go-ethereum/light/txpool.go:321.28,328.2 4 0 -github.com/ethereum/go-ethereum/light/txpool.go:332.89,334.2 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:337.43,343.2 4 0 -github.com/ethereum/go-ethereum/light/txpool.go:346.82,355.59 2 1 -github.com/ethereum/go-ethereum/light/txpool.go:359.2,360.54 2 1 -github.com/ethereum/go-ethereum/light/txpool.go:366.2,367.32 2 1 -github.com/ethereum/go-ethereum/light/txpool.go:374.2,374.27 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:380.2,380.62 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:385.2,386.16 2 1 -github.com/ethereum/go-ethereum/light/txpool.go:389.2,389.20 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:392.2,392.29 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:355.59,357.3 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:360.54,362.3 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:367.32,369.3 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:374.27,376.3 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:380.62,382.3 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:386.16,388.3 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:389.20,391.3 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:397.75,400.31 2 1 -github.com/ethereum/go-ethereum/light/txpool.go:403.2,404.16 2 1 -github.com/ethereum/go-ethereum/light/txpool.go:408.2,408.38 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:425.2,425.95 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:426.2,426.12 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:400.31,402.3 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:404.16,406.3 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:408.38,414.31 4 1 -github.com/ethereum/go-ethereum/light/txpool.go:421.3,421.69 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:414.31,416.4 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:425.95,425.152 2 0 -github.com/ethereum/go-ethereum/light/txpool.go:431.75,435.16 4 1 -github.com/ethereum/go-ethereum/light/txpool.go:439.2,439.42 1 1 -github.com/ethereum/go-ethereum/light/txpool.go:443.2,446.12 3 1 -github.com/ethereum/go-ethereum/light/txpool.go:435.16,437.3 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:439.42,441.3 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:451.77,456.25 4 0 -github.com/ethereum/go-ethereum/light/txpool.go:461.2,461.21 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:456.25,457.43 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:457.43,459.4 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:461.21,463.3 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:468.73,470.38 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:473.2,473.12 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:470.38,472.3 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:478.75,484.34 5 0 -github.com/ethereum/go-ethereum/light/txpool.go:488.2,488.17 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:484.34,487.3 2 0 -github.com/ethereum/go-ethereum/light/txpool.go:493.110,499.34 4 0 -github.com/ethereum/go-ethereum/light/txpool.go:504.2,505.24 2 0 -github.com/ethereum/go-ethereum/light/txpool.go:499.34,502.3 2 0 -github.com/ethereum/go-ethereum/light/txpool.go:510.95,516.34 4 0 -github.com/ethereum/go-ethereum/light/txpool.go:524.2,524.38 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:516.34,518.22 2 0 -github.com/ethereum/go-ethereum/light/txpool.go:521.3,521.32 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:518.22,519.12 1 0 -github.com/ethereum/go-ethereum/light/txpool.go:528.64,534.25 5 0 -github.com/ethereum/go-ethereum/light/txpool.go:540.2,541.28 2 0 -github.com/ethereum/go-ethereum/light/txpool.go:534.25,539.3 4 0 -github.com/ethereum/go-ethereum/light/txpool.go:545.48,552.2 5 0 -github.com/ethereum/go-ethereum/light/lightchain.go:84.148,102.16 8 1 -github.com/ethereum/go-ethereum/light/lightchain.go:105.2,106.28 2 1 -github.com/ethereum/go-ethereum/light/lightchain.go:109.2,109.23 1 1 -github.com/ethereum/go-ethereum/light/lightchain.go:112.2,112.43 1 1 -github.com/ethereum/go-ethereum/light/lightchain.go:116.2,116.35 1 1 -github.com/ethereum/go-ethereum/light/lightchain.go:123.2,123.16 1 1 -github.com/ethereum/go-ethereum/light/lightchain.go:102.16,104.3 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:106.28,108.3 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:109.23,111.3 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:112.43,114.3 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:116.35,117.56 1 1 -github.com/ethereum/go-ethereum/light/lightchain.go:117.56,121.4 3 1 -github.com/ethereum/go-ethereum/light/lightchain.go:127.74,128.32 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:132.2,132.38 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:136.2,136.34 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:139.2,139.119 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:128.32,131.3 2 0 -github.com/ethereum/go-ethereum/light/lightchain.go:132.38,135.3 2 0 -github.com/ethereum/go-ethereum/light/lightchain.go:136.34,138.3 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:142.47,144.2 1 1 -github.com/ethereum/go-ethereum/light/lightchain.go:147.40,149.2 1 1 -github.com/ethereum/go-ethereum/light/lightchain.go:152.55,154.2 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:158.45,159.75 1 1 -github.com/ethereum/go-ethereum/light/lightchain.go:172.2,175.12 4 1 -github.com/ethereum/go-ethereum/light/lightchain.go:159.75,162.3 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:162.8,164.20 2 1 -github.com/ethereum/go-ethereum/light/lightchain.go:164.20,167.4 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:167.9,169.4 1 1 -github.com/ethereum/go-ethereum/light/lightchain.go:180.50,186.2 4 1 -github.com/ethereum/go-ethereum/light/lightchain.go:189.41,191.2 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:194.31,196.2 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:200.67,212.38 8 0 -github.com/ethereum/go-ethereum/light/lightchain.go:215.2,217.50 3 0 -github.com/ethereum/go-ethereum/light/lightchain.go:212.38,214.3 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:223.49,223.69 1 1 -github.com/ethereum/go-ethereum/light/lightchain.go:226.46,228.2 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:230.51,231.26 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:236.91,238.46 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:242.2,243.19 2 0 -github.com/ethereum/go-ethereum/light/lightchain.go:246.2,247.16 2 0 -github.com/ethereum/go-ethereum/light/lightchain.go:251.2,252.18 2 0 -github.com/ethereum/go-ethereum/light/lightchain.go:238.46,241.3 2 0 -github.com/ethereum/go-ethereum/light/lightchain.go:243.19,245.3 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:247.16,249.3 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:257.95,259.49 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:262.2,263.19 2 0 -github.com/ethereum/go-ethereum/light/lightchain.go:266.2,267.16 2 0 -github.com/ethereum/go-ethereum/light/lightchain.go:271.2,272.18 2 0 -github.com/ethereum/go-ethereum/light/lightchain.go:259.49,261.3 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:263.19,265.3 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:267.16,269.3 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:277.70,280.2 2 0 -github.com/ethereum/go-ethereum/light/lightchain.go:284.108,286.46 1 1 -github.com/ethereum/go-ethereum/light/lightchain.go:289.2,290.16 2 1 -github.com/ethereum/go-ethereum/light/lightchain.go:294.2,295.19 2 1 -github.com/ethereum/go-ethereum/light/lightchain.go:286.46,288.3 1 1 -github.com/ethereum/go-ethereum/light/lightchain.go:290.16,292.3 1 1 -github.com/ethereum/go-ethereum/light/lightchain.go:300.99,302.19 2 1 -github.com/ethereum/go-ethereum/light/lightchain.go:305.2,305.40 1 1 -github.com/ethereum/go-ethereum/light/lightchain.go:302.19,304.3 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:310.98,312.43 2 1 -github.com/ethereum/go-ethereum/light/lightchain.go:315.2,315.39 1 1 -github.com/ethereum/go-ethereum/light/lightchain.go:312.43,314.3 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:320.30,321.52 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:324.2,327.32 4 0 -github.com/ethereum/go-ethereum/light/lightchain.go:321.52,323.3 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:333.36,335.2 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:339.53,344.39 4 0 -github.com/ethereum/go-ethereum/light/lightchain.go:356.2,356.38 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:344.39,351.57 2 0 -github.com/ethereum/go-ethereum/light/lightchain.go:351.57,354.4 2 0 -github.com/ethereum/go-ethereum/light/lightchain.go:356.38,358.3 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:363.61,364.31 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:364.31,365.29 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:366.24,367.44 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:370.4,370.25 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:371.28,372.29 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:367.44,369.5 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:377.64,380.67 2 0 -github.com/ethereum/go-ethereum/light/lightchain.go:384.2,392.12 7 0 -github.com/ethereum/go-ethereum/light/lightchain.go:380.67,382.3 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:395.64,402.61 5 0 -github.com/ethereum/go-ethereum/light/lightchain.go:406.2,410.12 5 0 -github.com/ethereum/go-ethereum/light/lightchain.go:402.61,404.3 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:424.92,425.21 1 1 -github.com/ethereum/go-ethereum/light/lightchain.go:428.2,428.49 1 1 -github.com/ethereum/go-ethereum/light/lightchain.go:431.2,432.71 2 1 -github.com/ethereum/go-ethereum/light/lightchain.go:437.2,444.35 6 1 -github.com/ethereum/go-ethereum/light/lightchain.go:449.2,453.16 2 1 -github.com/ethereum/go-ethereum/light/lightchain.go:460.2,460.15 1 1 -github.com/ethereum/go-ethereum/light/lightchain.go:425.21,427.3 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:428.49,430.3 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:432.71,434.3 1 1 -github.com/ethereum/go-ethereum/light/lightchain.go:444.35,446.3 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:454.24,456.59 2 1 -github.com/ethereum/go-ethereum/light/lightchain.go:457.23,458.59 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:465.53,467.2 1 1 -github.com/ethereum/go-ethereum/light/lightchain.go:471.71,473.2 1 1 -github.com/ethereum/go-ethereum/light/lightchain.go:477.95,479.15 2 0 -github.com/ethereum/go-ethereum/light/lightchain.go:482.2,483.11 2 0 -github.com/ethereum/go-ethereum/light/lightchain.go:479.15,481.3 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:488.80,490.2 1 1 -github.com/ethereum/go-ethereum/light/lightchain.go:494.71,496.2 1 1 -github.com/ethereum/go-ethereum/light/lightchain.go:500.71,502.2 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:505.67,507.2 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:514.125,516.2 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:520.70,522.2 1 1 -github.com/ethereum/go-ethereum/light/lightchain.go:526.103,527.62 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:530.2,530.47 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:527.62,529.3 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:534.52,534.77 1 1 -github.com/ethereum/go-ethereum/light/lightchain.go:541.102,546.52 3 0 -github.com/ethereum/go-ethereum/light/lightchain.go:549.2,549.20 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:553.2,553.88 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:565.2,565.14 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:546.52,548.3 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:549.20,551.3 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:553.88,558.69 3 0 -github.com/ethereum/go-ethereum/light/lightchain.go:563.3,563.14 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:558.69,562.4 3 0 -github.com/ethereum/go-ethereum/light/lightchain.go:570.35,572.2 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:575.37,577.2 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:580.89,582.2 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:585.97,587.2 1 1 -github.com/ethereum/go-ethereum/light/lightchain.go:590.97,592.2 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:596.85,598.2 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:602.101,604.2 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:607.99,609.2 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:612.42,614.2 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:617.41,619.2 1 0 -github.com/ethereum/go-ethereum/light/lightchain.go:623.97,625.2 1 0 -github.com/ethereum/go-ethereum/light/nodeset.go:40.28,44.2 1 1 -github.com/ethereum/go-ethereum/light/nodeset.go:47.56,51.40 3 1 -github.com/ethereum/go-ethereum/light/nodeset.go:54.2,60.12 5 1 -github.com/ethereum/go-ethereum/light/nodeset.go:51.40,53.3 1 0 -github.com/ethereum/go-ethereum/light/nodeset.go:64.45,70.2 4 0 -github.com/ethereum/go-ethereum/light/nodeset.go:73.52,77.44 3 0 -github.com/ethereum/go-ethereum/light/nodeset.go:80.2,80.37 1 0 -github.com/ethereum/go-ethereum/light/nodeset.go:77.44,79.3 1 0 -github.com/ethereum/go-ethereum/light/nodeset.go:84.50,87.2 2 0 -github.com/ethereum/go-ethereum/light/nodeset.go:90.35,95.2 3 0 -github.com/ethereum/go-ethereum/light/nodeset.go:98.35,103.2 3 0 -github.com/ethereum/go-ethereum/light/nodeset.go:106.40,111.31 4 0 -github.com/ethereum/go-ethereum/light/nodeset.go:114.2,114.15 1 0 -github.com/ethereum/go-ethereum/light/nodeset.go:111.31,113.3 1 0 -github.com/ethereum/go-ethereum/light/nodeset.go:118.55,122.35 3 1 -github.com/ethereum/go-ethereum/light/nodeset.go:122.35,124.3 1 1 -github.com/ethereum/go-ethereum/light/nodeset.go:131.50,132.25 1 0 -github.com/ethereum/go-ethereum/light/nodeset.go:132.25,134.3 1 0 -github.com/ethereum/go-ethereum/light/nodeset.go:138.38,142.2 3 0 -github.com/ethereum/go-ethereum/light/nodeset.go:145.56,148.2 2 0 -github.com/ethereum/go-ethereum/light/nodeset.go:151.45,152.24 1 0 -github.com/ethereum/go-ethereum/light/nodeset.go:156.34,158.25 2 0 -github.com/ethereum/go-ethereum/light/nodeset.go:161.2,161.13 1 0 -github.com/ethereum/go-ethereum/light/nodeset.go:158.25,160.3 1 0 -github.com/ethereum/go-ethereum/light/odr.go:63.48,70.2 1 1 -github.com/ethereum/go-ethereum/light/odr.go:75.71,82.2 1 1 -github.com/ethereum/go-ethereum/light/odr.go:92.56,94.2 1 1 -github.com/ethereum/go-ethereum/light/odr.go:104.56,106.2 1 1 -github.com/ethereum/go-ethereum/light/odr.go:117.57,119.2 1 1 -github.com/ethereum/go-ethereum/light/odr.go:131.60,132.20 1 1 -github.com/ethereum/go-ethereum/light/odr.go:132.20,134.3 1 1 -github.com/ethereum/go-ethereum/light/odr.go:148.55,153.2 4 0 -github.com/ethereum/go-ethereum/light/odr.go:168.57,169.50 1 0 -github.com/ethereum/go-ethereum/light/odr.go:169.50,176.3 2 0 -github.com/ethereum/go-ethereum/light/odr.go:193.61,193.62 0 0 -github.com/ethereum/go-ethereum/light/odr_util.go:39.99,46.29 3 1 -github.com/ethereum/go-ethereum/light/odr_util.go:53.2,54.48 2 0 -github.com/ethereum/go-ethereum/light/odr_util.go:57.2,63.45 2 0 -github.com/ethereum/go-ethereum/light/odr_util.go:66.2,66.22 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:46.29,47.66 1 1 -github.com/ethereum/go-ethereum/light/odr_util.go:47.66,49.4 1 1 -github.com/ethereum/go-ethereum/light/odr_util.go:54.48,56.3 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:63.45,65.3 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:70.96,72.29 2 1 -github.com/ethereum/go-ethereum/light/odr_util.go:75.2,76.16 2 0 -github.com/ethereum/go-ethereum/light/odr_util.go:80.2,80.27 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:72.29,74.3 1 1 -github.com/ethereum/go-ethereum/light/odr_util.go:76.16,78.3 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:84.100,86.15 2 0 -github.com/ethereum/go-ethereum/light/odr_util.go:89.2,90.16 2 0 -github.com/ethereum/go-ethereum/light/odr_util.go:93.2,93.27 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:97.2,97.56 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:86.15,88.3 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:90.16,92.3 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:93.27,95.3 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:101.109,102.74 1 1 -github.com/ethereum/go-ethereum/light/odr_util.go:106.2,107.16 2 1 -github.com/ethereum/go-ethereum/light/odr_util.go:110.2,110.27 1 1 -github.com/ethereum/go-ethereum/light/odr_util.go:113.2,114.45 2 1 -github.com/ethereum/go-ethereum/light/odr_util.go:117.2,117.19 1 1 -github.com/ethereum/go-ethereum/light/odr_util.go:102.74,104.3 1 1 -github.com/ethereum/go-ethereum/light/odr_util.go:107.16,109.3 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:110.27,112.3 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:114.45,116.3 1 1 -github.com/ethereum/go-ethereum/light/odr_util.go:122.105,124.16 2 1 -github.com/ethereum/go-ethereum/light/odr_util.go:127.2,128.64 2 1 -github.com/ethereum/go-ethereum/light/odr_util.go:131.2,131.18 1 1 -github.com/ethereum/go-ethereum/light/odr_util.go:124.16,126.3 1 1 -github.com/ethereum/go-ethereum/light/odr_util.go:128.64,130.3 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:136.107,139.16 2 1 -github.com/ethereum/go-ethereum/light/odr_util.go:142.2,143.16 2 1 -github.com/ethereum/go-ethereum/light/odr_util.go:147.2,147.87 1 1 -github.com/ethereum/go-ethereum/light/odr_util.go:139.16,141.3 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:143.16,145.3 1 1 -github.com/ethereum/go-ethereum/light/odr_util.go:152.117,155.21 2 1 -github.com/ethereum/go-ethereum/light/odr_util.go:170.2,170.64 1 1 -github.com/ethereum/go-ethereum/light/odr_util.go:183.2,183.22 1 1 -github.com/ethereum/go-ethereum/light/odr_util.go:155.21,157.17 2 1 -github.com/ethereum/go-ethereum/light/odr_util.go:160.3,160.28 1 1 -github.com/ethereum/go-ethereum/light/odr_util.go:163.3,164.46 2 1 -github.com/ethereum/go-ethereum/light/odr_util.go:167.3,167.24 1 1 -github.com/ethereum/go-ethereum/light/odr_util.go:157.17,159.4 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:160.28,162.4 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:164.46,166.4 1 1 -github.com/ethereum/go-ethereum/light/odr_util.go:170.64,172.17 2 1 -github.com/ethereum/go-ethereum/light/odr_util.go:175.3,178.110 3 1 -github.com/ethereum/go-ethereum/light/odr_util.go:181.3,181.62 1 1 -github.com/ethereum/go-ethereum/light/odr_util.go:172.17,174.4 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:178.110,180.4 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:188.113,191.16 2 0 -github.com/ethereum/go-ethereum/light/odr_util.go:194.2,195.35 2 0 -github.com/ethereum/go-ethereum/light/odr_util.go:198.2,198.18 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:191.16,193.3 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:195.35,197.3 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:204.111,208.21 3 0 -github.com/ethereum/go-ethereum/light/odr_util.go:218.2,219.35 2 0 -github.com/ethereum/go-ethereum/light/odr_util.go:222.2,222.18 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:208.21,210.46 2 0 -github.com/ethereum/go-ethereum/light/odr_util.go:213.3,213.24 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:210.46,212.4 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:219.35,221.3 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:227.103,235.35 3 0 -github.com/ethereum/go-ethereum/light/odr_util.go:252.2,252.24 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:256.2,263.45 2 0 -github.com/ethereum/go-ethereum/light/odr_util.go:266.2,266.31 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:269.2,269.20 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:235.35,240.94 2 0 -github.com/ethereum/go-ethereum/light/odr_util.go:245.3,245.24 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:248.3,249.33 2 0 -github.com/ethereum/go-ethereum/light/odr_util.go:240.94,242.12 2 0 -github.com/ethereum/go-ethereum/light/odr_util.go:245.24,247.4 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:252.24,254.3 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:263.45,265.3 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:266.31,268.3 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:278.135,280.100 2 0 -github.com/ethereum/go-ethereum/light/odr_util.go:283.2,286.110 2 0 -github.com/ethereum/go-ethereum/light/odr_util.go:289.2,290.112 2 0 -github.com/ethereum/go-ethereum/light/odr_util.go:293.2,293.84 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:280.100,282.3 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:286.110,288.3 1 0 -github.com/ethereum/go-ethereum/light/odr_util.go:290.112,292.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:208.147,209.23 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:212.2,237.11 3 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:209.23,211.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:247.55,254.9 5 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:264.2,270.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:255.47,256.52 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:257.47,258.56 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:259.27,260.57 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:261.10,262.124 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:274.43,276.2 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:280.77,282.18 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:288.2,289.87 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:293.2,293.12 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:282.18,285.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:285.8,287.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:289.87,292.3 2 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:297.87,299.2 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:304.54,307.18 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:313.2,314.47 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:318.2,320.12 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:307.18,310.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:310.8,312.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:314.47,317.3 2 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:325.97,328.13 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:332.2,334.106 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:345.2,346.12 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:329.33,330.13 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:334.106,336.24 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:343.3,343.13 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:336.24,340.4 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:340.9,342.4 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:352.97,354.30 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:358.2,358.57 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:361.2,364.51 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:370.2,370.22 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:384.2,387.64 3 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:393.2,393.72 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:402.2,402.30 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:410.2,422.14 8 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:425.2,425.36 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:354.30,356.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:358.57,360.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:364.51,366.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:370.22,371.18 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:381.3,381.18 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:371.18,375.63 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:378.4,379.21 2 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:375.63,377.5 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:387.64,388.10 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:389.13,389.13 0 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:390.11,390.11 0 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:393.72,394.31 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:394.31,395.11 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:396.14,396.14 0 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:397.12,398.17 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:402.30,403.10 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:404.25,404.25 0 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:405.11,406.16 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:422.14,424.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:428.41,430.2 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:434.97,436.15 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:445.2,445.27 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:448.2,451.30 3 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:456.2,457.16 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:460.2,460.38 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:467.2,470.16 3 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:473.2,474.73 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:477.2,481.22 3 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:494.2,495.52 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:498.2,498.22 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:538.2,539.27 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:542.2,543.16 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:548.2,548.22 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:557.2,557.30 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:436.15,438.17 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:438.17,440.4 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:440.9,443.4 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:445.27,447.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:451.30,453.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:457.16,459.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:460.38,466.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:470.16,472.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:474.73,476.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:481.22,482.40 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:482.40,484.4 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:484.9,486.29 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:491.4,491.54 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:486.29,488.5 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:495.52,497.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:498.22,513.64 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:520.3,524.38 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:531.3,531.24 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:513.64,515.4 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:515.9,515.44 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:515.44,517.4 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:517.9,519.4 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:524.38,527.4 2 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:527.9,527.32 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:527.32,529.4 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:531.24,532.59 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:532.59,534.5 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:539.27,541.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:543.16,543.54 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:544.16,544.52 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:545.16,545.54 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:546.16,546.57 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:548.22,553.44 4 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:553.44,553.81 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:554.8,554.29 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:554.29,556.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:562.63,565.30 3 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:570.2,571.37 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:582.2,584.12 3 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:565.30,567.13 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:567.13,567.54 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:571.37,572.27 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:578.3,578.53 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:572.27,577.4 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:578.53,579.9 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:590.31,595.23 3 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:595.23,596.10 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:597.21,597.21 0 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:599.11,600.21 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:607.31,610.2 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:614.34,617.9 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:622.2,625.12 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:618.18,618.18 0 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:619.10,620.18 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:630.104,637.22 5 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:640.2,644.6 4 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:637.22,639.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:644.6,645.10 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:646.21,647.32 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:649.31,651.31 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:656.4,657.49 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:663.4,664.86 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:667.4,667.25 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:676.4,677.77 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:680.4,680.27 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:682.18,684.31 2 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:686.19,686.19 0 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:687.22,687.22 0 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:651.31,653.10 2 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:657.49,659.5 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:664.86,666.5 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:667.25,668.75 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:671.5,672.26 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:668.75,670.6 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:677.77,679.5 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:701.87,712.21 3 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:717.2,718.23 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:721.2,723.14 3 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:726.2,726.15 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:730.2,731.22 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:734.2,734.15 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:737.2,738.14 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:741.2,742.50 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:712.21,714.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:718.23,720.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:723.14,725.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:726.15,728.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:731.22,733.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:734.15,736.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:738.14,740.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:750.98,758.14 3 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:766.2,770.30 3 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:773.2,773.36 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:779.2,779.23 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:797.2,798.16 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:805.2,805.41 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:809.2,810.16 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:813.2,813.22 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:759.16,760.56 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:761.16,762.60 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:763.10,764.61 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:770.30,772.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:773.36,776.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:779.23,781.21 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:792.3,792.33 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:781.21,783.22 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:783.22,785.36 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:788.5,788.61 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:785.36,786.11 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:792.33,794.4 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:798.16,800.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:805.41,807.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:810.16,812.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:816.161,828.36 7 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:889.2,889.29 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:897.2,897.30 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:828.36,829.10 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:830.21,831.25 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:833.31,835.31 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:840.4,841.25 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:846.4,846.35 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:854.4,855.43 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:879.18,881.24 2 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:883.19,883.19 0 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:884.22,884.22 0 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:835.31,837.10 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:841.25,844.5 2 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:846.35,848.64 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:848.64,851.6 2 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:855.43,857.77 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:861.5,865.17 4 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:873.5,873.14 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:857.77,858.14 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:866.19,867.41 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:868.19,869.45 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:870.13,871.42 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:873.14,875.11 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:889.29,890.29 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:894.3,895.21 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:890.29,893.4 2 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:900.150,905.15 3 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:908.2,910.20 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:975.2,975.27 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:979.2,980.19 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:905.15,907.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:910.20,920.35 5 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:920.35,921.11 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:922.22,923.26 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:925.32,927.32 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:932.5,933.26 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:937.5,944.17 5 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:952.5,952.15 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:956.5,957.40 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:961.5,962.13 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:964.19,966.25 2 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:968.20,968.20 0 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:969.23,969.23 0 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:927.32,929.11 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:933.26,936.6 2 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:945.19,946.41 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:947.19,948.45 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:949.13,950.42 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:952.15,954.11 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:957.40,960.6 2 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:975.27,978.3 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:991.73,1004.34 10 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1018.2,1018.25 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1033.2,1037.6 4 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1004.34,1010.15 4 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1010.15,1013.4 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1013.9,1016.4 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1018.25,1031.3 9 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1037.6,1038.10 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1039.21,1040.22 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1042.31,1044.31 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1048.4,1055.28 5 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1058.4,1060.16 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1090.4,1090.39 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1096.4,1096.27 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1117.4,1120.16 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1160.4,1160.24 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1188.20,1189.25 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1196.4,1201.66 4 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1207.4,1207.11 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1211.4,1211.65 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1044.31,1046.10 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1055.28,1057.5 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1060.16,1061.28 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1085.5,1087.13 3 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1061.28,1065.95 2 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1069.6,1069.99 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1073.6,1083.50 6 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1065.95,1068.7 2 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1069.99,1072.7 2 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1090.39,1093.13 3 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1096.27,1098.61 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1109.5,1110.12 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1098.61,1100.13 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1101.43,1103.15 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1104.24,1105.25 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1111.32,1112.16 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1113.23,1114.24 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1120.16,1122.19 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1126.5,1127.27 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1122.19,1125.6 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1128.10,1132.33 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1132.33,1135.27 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1146.6,1146.25 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1150.6,1150.72 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1135.27,1137.7 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1137.12,1139.71 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1139.71,1141.8 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1146.25,1148.7 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1150.72,1152.20 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1155.7,1155.34 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1152.20,1154.8 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1160.24,1162.12 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1167.5,1171.30 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1163.36,1163.36 0 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1164.23,1165.24 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1171.30,1173.6 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1173.11,1175.6 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1176.10,1179.12 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1180.42,1182.14 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1183.23,1184.24 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1189.25,1193.10 2 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1201.66,1202.12 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1203.22,1203.22 0 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1204.23,1204.23 0 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1208.31,1208.31 0 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1209.22,1209.22 0 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1225.110,1230.48 3 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1244.2,1251.28 4 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1230.48,1233.4 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1234.35,1234.98 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1235.76,1237.4 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1238.63,1238.114 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1239.42,1239.102 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1240.76,1242.4 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1257.53,1261.48 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1270.2,1275.12 3 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1261.48,1264.4 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1265.36,1265.98 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1266.63,1266.92 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1267.42,1267.101 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1268.76,1268.119 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1281.55,1285.48 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1296.2,1301.12 3 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1285.48,1288.4 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1289.36,1289.100 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1290.63,1290.94 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1291.42,1291.103 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1292.76,1294.4 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1332.106,1342.6 5 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1342.6,1343.10 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1344.21,1345.22 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1347.31,1351.58 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1374.4,1374.11 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1379.25,1381.13 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1385.4,1385.11 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1390.19,1392.11 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1397.17,1399.26 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1403.4,1403.37 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1439.4,1439.22 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1447.4,1450.31 4 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1494.4,1494.85 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1351.58,1354.40 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1360.5,1360.42 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1364.5,1364.12 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1354.40,1356.6 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1360.42,1362.6 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1365.44,1366.66 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1367.21,1368.90 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1369.13,1370.82 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1375.30,1375.30 0 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1376.12,1376.12 0 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1381.13,1383.5 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1386.30,1386.30 0 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1387.12,1387.12 0 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1393.30,1393.30 0 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1394.12,1394.12 0 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1399.26,1401.5 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1403.37,1404.47 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1404.47,1412.19 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1412.19,1415.7 2 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1415.12,1418.28 2 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1418.28,1422.8 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1422.13,1430.18 5 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1430.18,1433.9 2 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1439.22,1440.32 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1444.5,1444.10 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1440.32,1443.6 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1450.31,1452.18 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1456.5,1456.46 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1462.5,1463.17 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1466.5,1466.17 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1470.5,1470.23 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1473.5,1473.25 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1479.5,1479.25 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1482.5,1482.48 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1490.5,1490.19 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1452.18,1453.11 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1456.46,1457.11 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1463.17,1465.6 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1466.17,1469.6 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1470.23,1471.14 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1473.25,1475.6 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1475.11,1477.6 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1479.25,1481.6 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1482.48,1488.70 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1494.85,1496.5 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1504.71,1511.15 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1534.2,1536.6 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1511.15,1512.19 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1512.19,1514.25 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1518.4,1518.61 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1522.4,1523.25 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1527.4,1530.80 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1514.25,1517.5 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1518.61,1521.5 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1523.25,1526.5 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1536.6,1537.10 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1538.21,1540.22 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1542.36,1544.25 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1588.4,1589.25 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1661.4,1662.39 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1665.4,1668.66 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1544.25,1546.67 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1564.5,1564.26 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1577.5,1577.46 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1584.5,1585.15 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1546.67,1547.13 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1548.23,1548.23 0 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1549.24,1549.24 0 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1564.26,1566.86 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1566.86,1568.7 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1577.46,1579.75 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1579.75,1581.7 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1589.25,1591.12 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1598.5,1599.29 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1602.5,1605.46 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1640.5,1640.45 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1657.5,1658.28 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1592.23,1594.24 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1595.13,1595.13 0 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1599.29,1601.6 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1605.46,1610.30 3 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1613.6,1616.81 3 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1619.6,1619.80 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1630.6,1630.26 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1610.30,1612.7 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1616.81,1618.7 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1619.80,1623.72 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1626.7,1627.56 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1623.72,1625.8 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1630.26,1632.52 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1632.52,1634.8 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1634.13,1636.8 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1640.45,1642.103 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1651.6,1652.36 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1642.103,1643.14 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1644.25,1646.26 2 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1647.38,1647.38 0 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1652.36,1655.7 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1662.39,1664.5 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1668.66,1669.12 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1670.21,1670.21 0 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1671.13,1671.13 0 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1679.53,1680.6 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1680.6,1682.24 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1685.3,1685.31 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1688.3,1688.55 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1682.24,1684.4 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1685.31,1687.4 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1688.55,1690.4 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1694.71,1696.23 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1699.2,1699.9 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1705.2,1711.33 4 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1714.2,1714.64 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1726.2,1726.12 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1696.23,1698.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1700.18,1701.36 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1702.10,1702.10 0 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1711.33,1713.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1714.64,1715.27 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1724.3,1724.52 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1715.27,1717.4 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1717.9,1723.4 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1731.53,1738.15 4 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1745.2,1745.35 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1750.2,1758.6 3 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1738.15,1743.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1745.35,1746.114 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1746.114,1748.4 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1758.6,1762.24 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1775.3,1775.31 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1780.3,1784.22 4 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1795.3,1795.42 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1817.3,1818.61 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1821.3,1821.15 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1847.3,1847.54 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1762.24,1764.23 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1768.4,1768.11 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1764.23,1766.5 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1769.22,1771.23 2 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1772.12,1772.12 0 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1775.31,1777.4 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1784.22,1785.31 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1785.31,1790.5 3 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1791.9,1793.4 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1795.42,1804.128 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1804.128,1815.5 6 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1818.61,1820.4 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1821.15,1823.21 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1831.4,1831.11 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1823.21,1829.5 4 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1832.21,1833.24 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1836.5,1836.49 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1839.5,1839.19 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1841.35,1843.13 2 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1833.24,1835.6 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1836.49,1838.6 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1847.54,1849.4 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1853.108,1854.23 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1857.2,1857.80 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1862.2,1862.33 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1873.2,1873.25 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1854.23,1856.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1857.80,1860.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1862.33,1864.10 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1865.20,1866.35 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1867.21,1868.14 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1869.11,1870.33 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1876.93,1878.23 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1881.2,1881.9 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1891.2,1898.33 5 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1902.2,1902.97 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1906.2,1906.12 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1878.23,1880.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1882.18,1883.36 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1884.24,1885.42 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1888.10,1888.10 0 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1885.42,1887.4 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1898.33,1901.3 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1902.97,1905.3 2 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1909.66,1914.133 3 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1917.2,1917.70 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1920.2,1921.12 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1914.133,1916.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1917.70,1919.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1926.79,1928.2 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1931.116,1933.2 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1936.84,1938.2 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1941.70,1943.2 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1947.83,1948.33 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1949.32,1951.17 2 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1954.3,1954.82 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1956.33,1958.81 2 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1960.29,1961.65 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1963.29,1964.65 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1966.10,1967.63 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1951.17,1953.4 1 0 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1972.115,1975.15 2 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1981.2,1984.19 4 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1987.2,1987.9 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1975.15,1976.17 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1976.17,1978.4 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1984.19,1986.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1988.24,1989.13 1 1 -github.com/ethereum/go-ethereum/les/downloader/downloader.go:1990.16,1991.25 1 1 -github.com/ethereum/go-ethereum/les/downloader/modes.go:32.37,34.2 1 0 -github.com/ethereum/go-ethereum/les/downloader/modes.go:37.38,38.14 1 0 -github.com/ethereum/go-ethereum/les/downloader/modes.go:39.16,40.16 1 0 -github.com/ethereum/go-ethereum/les/downloader/modes.go:41.16,42.16 1 0 -github.com/ethereum/go-ethereum/les/downloader/modes.go:43.16,44.16 1 0 -github.com/ethereum/go-ethereum/les/downloader/modes.go:45.17,46.17 1 0 -github.com/ethereum/go-ethereum/les/downloader/modes.go:47.10,48.19 1 0 -github.com/ethereum/go-ethereum/les/downloader/modes.go:52.52,53.14 1 0 -github.com/ethereum/go-ethereum/les/downloader/modes.go:54.16,55.29 1 0 -github.com/ethereum/go-ethereum/les/downloader/modes.go:56.16,57.29 1 0 -github.com/ethereum/go-ethereum/les/downloader/modes.go:58.16,59.29 1 0 -github.com/ethereum/go-ethereum/les/downloader/modes.go:60.17,61.30 1 0 -github.com/ethereum/go-ethereum/les/downloader/modes.go:62.10,63.55 1 0 -github.com/ethereum/go-ethereum/les/downloader/modes.go:67.56,68.22 1 0 -github.com/ethereum/go-ethereum/les/downloader/modes.go:80.2,80.12 1 0 -github.com/ethereum/go-ethereum/les/downloader/modes.go:69.14,70.19 1 0 -github.com/ethereum/go-ethereum/les/downloader/modes.go:71.14,72.19 1 0 -github.com/ethereum/go-ethereum/les/downloader/modes.go:73.14,74.19 1 0 -github.com/ethereum/go-ethereum/les/downloader/modes.go:75.15,76.20 1 0 -github.com/ethereum/go-ethereum/les/downloader/modes.go:77.10,78.82 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:48.38,50.2 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:62.61,65.9 2 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:75.2,75.10 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:66.29,70.14 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:71.18,73.16 2 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:80.37,81.6 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:81.6,82.10 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:83.32,84.32 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:87.20,87.20 0 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:89.19,90.10 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:84.32,86.5 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:97.60,105.15 3 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:113.2,121.6 6 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:105.15,108.30 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:108.30,111.4 2 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:121.6,127.24 2 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:132.3,132.10 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:127.24,130.4 2 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:134.35,136.15 2 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:138.17,140.14 2 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:143.35,147.41 3 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:150.28,153.18 2 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:158.4,163.33 5 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:166.24,169.18 2 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:173.4,178.24 5 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:181.25,185.34 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:188.4,191.31 3 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:194.33,201.46 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:210.4,210.51 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:213.4,213.29 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:153.18,155.13 2 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:169.18,170.13 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:185.34,186.13 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:201.46,208.5 5 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:210.51,212.5 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:221.146,223.22 2 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:252.2,252.31 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:223.22,228.10 2 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:241.3,241.17 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:244.3,247.56 4 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:230.28,232.24 2 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:234.24,236.23 2 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:238.24,239.22 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:241.17,242.12 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:252.31,254.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:296.63,309.2 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:314.27,316.18 2 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:321.2,321.15 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:316.18,318.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:318.8,320.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:325.34,328.2 2 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:331.36,332.25 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:335.2,335.17 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:332.25,334.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:344.40,349.15 4 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:357.2,357.28 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:407.2,407.12 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:349.15,351.17 2 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:351.17,353.4 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:357.28,358.40 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:361.3,363.10 2 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:358.40,360.4 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:364.18,364.18 0 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:367.19,368.30 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:370.23,371.22 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:373.27,376.57 2 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:399.4,401.18 3 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:376.57,380.28 2 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:380.28,384.6 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:384.11,392.16 5 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:392.16,395.7 2 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:401.18,404.5 2 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:410.46,411.57 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:414.2,416.42 3 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:419.2,419.34 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:422.2,425.12 4 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:411.57,413.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:416.42,418.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:419.34,421.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:430.35,433.26 2 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:433.26,441.32 4 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:441.32,443.11 2 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:444.34,445.52 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:446.20,446.20 0 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:447.24,447.24 0 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:455.119,457.65 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:473.2,480.35 6 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:495.2,495.35 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:513.2,514.28 2 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:457.65,459.30 2 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:465.3,465.30 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:459.30,464.4 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:465.30,469.4 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:480.35,482.33 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:486.3,486.43 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:490.3,493.28 4 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:482.33,483.9 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:486.43,487.12 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:495.35,497.33 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:501.3,501.43 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:505.3,511.28 5 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:497.33,498.9 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:501.43,502.12 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:521.57,525.30 2 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:532.2,532.36 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:551.2,552.40 2 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:567.2,567.40 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:582.2,582.24 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:525.30,526.38 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:526.38,528.4 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:532.36,534.14 2 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:547.3,548.30 2 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:535.12,538.16 3 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:539.29,540.16 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:541.33,542.15 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:543.11,544.90 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:552.40,556.46 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:561.3,561.35 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:565.3,565.27 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:556.46,558.4 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:561.35,563.4 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:567.40,571.46 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:576.3,576.35 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:580.3,580.27 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:571.46,573.4 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:576.35,578.4 1 0 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:588.71,595.2 6 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:599.93,608.52 7 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:611.2,611.17 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:608.52,610.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/statesync.go:611.18,613.3 0 1 -github.com/ethereum/go-ethereum/les/downloader/types.go:41.38,41.57 1 1 -github.com/ethereum/go-ethereum/les/downloader/types.go:42.38,42.63 1 1 -github.com/ethereum/go-ethereum/les/downloader/types.go:43.38,43.82 1 1 -github.com/ethereum/go-ethereum/les/downloader/types.go:52.36,52.55 1 1 -github.com/ethereum/go-ethereum/les/downloader/types.go:53.32,54.42 1 1 -github.com/ethereum/go-ethereum/les/downloader/types.go:57.2,57.22 1 0 -github.com/ethereum/go-ethereum/les/downloader/types.go:54.42,56.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/types.go:59.35,59.102 1 1 -github.com/ethereum/go-ethereum/les/downloader/types.go:67.39,67.58 1 1 -github.com/ethereum/go-ethereum/les/downloader/types.go:68.39,68.65 1 1 -github.com/ethereum/go-ethereum/les/downloader/types.go:69.39,69.84 1 1 -github.com/ethereum/go-ethereum/les/downloader/types.go:77.37,77.56 1 1 -github.com/ethereum/go-ethereum/les/downloader/types.go:78.37,78.61 1 1 -github.com/ethereum/go-ethereum/les/downloader/types.go:79.37,79.80 1 0 -github.com/ethereum/go-ethereum/les/downloader/api.go:41.83,52.2 3 0 -github.com/ethereum/go-ethereum/les/downloader/api.go:56.45,62.6 2 0 -github.com/ethereum/go-ethereum/les/downloader/api.go:62.6,63.10 1 0 -github.com/ethereum/go-ethereum/les/downloader/api.go:64.43,65.37 1 0 -github.com/ethereum/go-ethereum/les/downloader/api.go:66.45,68.24 2 0 -github.com/ethereum/go-ethereum/les/downloader/api.go:69.30,70.20 1 0 -github.com/ethereum/go-ethereum/les/downloader/api.go:74.4,75.29 2 0 -github.com/ethereum/go-ethereum/les/downloader/api.go:85.4,85.37 1 0 -github.com/ethereum/go-ethereum/les/downloader/api.go:70.20,72.5 1 0 -github.com/ethereum/go-ethereum/les/downloader/api.go:76.20,80.6 1 0 -github.com/ethereum/go-ethereum/les/downloader/api.go:81.32,82.25 1 0 -github.com/ethereum/go-ethereum/les/downloader/api.go:85.37,87.5 1 0 -github.com/ethereum/go-ethereum/les/downloader/api.go:93.89,95.16 2 0 -github.com/ethereum/go-ethereum/les/downloader/api.go:99.2,101.12 2 0 -github.com/ethereum/go-ethereum/les/downloader/api.go:119.2,119.20 1 0 -github.com/ethereum/go-ethereum/les/downloader/api.go:95.16,97.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/api.go:101.12,105.7 3 0 -github.com/ethereum/go-ethereum/les/downloader/api.go:105.7,106.11 1 0 -github.com/ethereum/go-ethereum/les/downloader/api.go:107.30,108.39 1 0 -github.com/ethereum/go-ethereum/les/downloader/api.go:109.24,111.11 2 0 -github.com/ethereum/go-ethereum/les/downloader/api.go:112.29,114.11 2 0 -github.com/ethereum/go-ethereum/les/downloader/api.go:144.48,145.24 1 0 -github.com/ethereum/go-ethereum/les/downloader/api.go:145.24,149.7 3 0 -github.com/ethereum/go-ethereum/les/downloader/api.go:149.7,150.11 1 0 -github.com/ethereum/go-ethereum/les/downloader/api.go:151.15,153.13 1 0 -github.com/ethereum/go-ethereum/les/downloader/api.go:154.27,155.11 1 0 -github.com/ethereum/go-ethereum/les/downloader/api.go:163.102,166.2 2 0 -github.com/ethereum/go-ethereum/les/downloader/peer.go:91.59,91.83 1 0 -github.com/ethereum/go-ethereum/les/downloader/peer.go:92.106,94.2 1 0 -github.com/ethereum/go-ethereum/les/downloader/peer.go:95.103,97.2 1 0 -github.com/ethereum/go-ethereum/les/downloader/peer.go:98.63,99.64 1 0 -github.com/ethereum/go-ethereum/les/downloader/peer.go:101.65,102.66 1 0 -github.com/ethereum/go-ethereum/les/downloader/peer.go:104.65,105.66 1 0 -github.com/ethereum/go-ethereum/les/downloader/peer.go:109.95,117.2 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:120.34,130.2 7 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:133.69,135.54 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:138.2,143.12 3 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:135.54,137.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/peer.go:147.67,149.53 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:152.2,154.12 2 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:163.2,163.12 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:149.53,151.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/peer.go:154.12,157.42 2 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:160.3,160.31 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:157.42,159.4 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:167.69,169.55 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:172.2,174.12 2 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:183.2,183.12 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:169.55,171.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/peer.go:174.12,177.42 2 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:180.3,180.33 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:177.42,179.4 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:187.68,189.53 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:192.2,196.12 3 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:189.53,191.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/peer.go:202.80,205.2 2 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:210.79,213.2 2 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:218.81,221.2 2 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:226.81,229.2 2 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:233.70,235.26 2 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:238.2,238.12 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:235.26,237.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:243.69,245.25 2 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:248.2,248.12 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:245.25,247.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:253.71,255.27 2 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:258.2,258.12 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:255.27,257.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:263.72,265.25 2 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:268.2,268.12 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:265.25,267.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:274.56,278.41 3 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:284.2,284.30 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:278.41,279.31 1 0 -github.com/ethereum/go-ethereum/les/downloader/peer.go:279.31,281.9 2 0 -github.com/ethereum/go-ethereum/les/downloader/peer.go:289.55,295.2 4 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:310.28,315.2 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:318.84,320.2 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:323.85,325.2 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:329.28,333.32 3 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:333.32,335.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:344.54,347.33 2 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:351.2,352.54 2 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:355.2,359.12 4 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:347.33,350.3 2 0 -github.com/ethereum/go-ethereum/les/downloader/peer.go:352.54,354.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/peer.go:364.48,367.9 3 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:371.2,376.12 5 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:367.9,370.3 2 0 -github.com/ethereum/go-ethereum/les/downloader/peer.go:380.52,385.2 3 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:388.30,393.2 3 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:396.49,401.29 4 0 -github.com/ethereum/go-ethereum/les/downloader/peer.go:404.2,404.13 1 0 -github.com/ethereum/go-ethereum/les/downloader/peer.go:401.29,403.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/peer.go:409.63,410.39 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:413.2,413.44 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:416.2,416.61 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:410.39,412.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:413.44,415.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:421.61,422.39 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:425.2,425.44 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:428.2,428.61 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:422.39,424.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:425.44,427.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:433.64,434.39 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:437.2,437.44 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:440.2,440.61 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:434.39,436.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:437.44,439.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:445.65,446.39 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:449.2,449.44 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:452.2,452.61 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:446.39,448.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:449.44,451.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:458.160,467.29 4 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:478.2,480.27 3 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:467.29,468.59 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:468.59,469.20 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:473.4,473.11 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:469.20,472.5 2 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:490.39,492.2 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:494.49,496.2 1 1 -github.com/ethereum/go-ethereum/les/downloader/peer.go:498.44,501.2 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:73.71,77.25 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:80.2,80.41 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:83.2,83.13 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:77.25,79.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:80.41,82.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:87.37,88.67 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:88.67,90.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:94.38,96.2 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:99.41,100.70 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:100.70,102.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:106.44,109.2 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:146.69,157.2 4 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:160.70,180.2 14 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:184.25,189.2 4 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:192.38,197.2 3 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:200.37,205.2 3 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:208.39,213.2 3 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:217.40,222.2 3 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:226.39,231.2 3 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:235.41,240.2 3 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:243.29,251.2 5 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:255.73,260.28 3 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:264.2,272.34 8 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:260.28,261.49 1 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:272.34,277.3 3 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:282.58,290.2 5 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:294.80,300.33 4 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:333.2,333.16 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:300.33,303.61 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:307.3,307.75 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:314.3,314.41 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:321.3,321.52 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:329.3,331.9 3 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:303.61,305.9 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:307.75,309.9 2 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:314.41,316.4 1 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:316.9,319.4 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:321.52,322.44 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:322.44,324.5 1 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:324.10,327.5 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:340.52,342.50 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:345.2,346.52 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:365.2,366.33 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:383.2,387.48 3 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:393.2,393.16 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:342.50,344.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:346.52,355.52 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:360.3,362.18 3 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:355.52,357.9 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:366.33,369.39 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:372.3,372.43 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:375.3,375.42 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:378.3,379.61 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:369.39,371.4 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:372.43,374.4 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:375.42,377.4 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:387.48,392.3 4 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:396.39,401.2 3 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:403.39,409.2 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:413.76,419.41 3 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:423.2,424.46 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:435.2,435.28 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:439.2,439.15 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:442.2,448.16 3 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:419.41,421.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:424.46,426.36 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:432.3,432.23 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:426.36,427.58 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:427.58,429.13 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:435.28,437.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:439.15,441.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:454.89,459.2 3 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:464.91,469.2 3 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:484.76,487.23 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:490.2,490.33 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:494.2,498.65 5 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:549.2,549.30 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:552.2,552.39 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:557.2,557.20 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:560.2,566.37 3 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:487.23,489.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:490.33,492.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:498.65,507.12 4 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:517.3,517.15 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:525.3,525.17 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:531.3,531.22 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:540.3,542.29 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:507.12,515.12 6 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:517.15,523.9 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:525.17,529.9 2 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:531.22,537.12 5 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:542.29,544.4 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:544.9,546.4 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:549.30,551.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:552.39,555.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:557.20,559.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:570.54,574.2 3 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:578.53,582.2 3 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:586.55,590.2 3 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:593.106,594.22 1 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:597.2,597.41 1 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:600.2,600.35 1 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:594.22,596.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:597.41,599.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:606.39,610.48 3 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:616.2,616.50 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:610.48,611.42 1 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:614.3,614.34 1 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:611.42,613.4 1 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:616.50,617.42 1 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:620.3,620.36 1 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:617.42,619.4 1 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:626.69,631.2 3 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:635.68,640.2 3 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:644.70,649.2 3 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:657.149,660.36 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:679.2,679.17 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:660.36,661.41 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:661.41,666.24 2 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:669.4,669.43 1 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:673.4,676.24 2 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:666.24,668.5 1 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:669.43,671.5 1 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:689.116,694.18 4 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:701.2,702.20 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:705.2,712.14 5 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:721.2,721.14 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:740.2,740.15 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:754.2,758.98 4 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:761.2,761.15 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:774.2,774.32 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:777.2,777.26 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:694.18,697.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:697.8,699.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:702.20,704.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:712.14,713.49 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:713.49,716.4 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:716.9,716.54 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:716.54,719.4 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:721.14,723.38 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:723.38,725.76 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:730.4,730.39 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:736.4,736.21 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:725.76,728.10 3 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:730.39,733.10 3 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:740.15,744.18 3 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:748.3,751.48 3 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:744.18,747.4 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:758.98,760.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:761.15,766.10 3 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:767.32,769.34 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:770.11,770.11 0 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:774.32,776.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:783.117,787.58 4 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:797.2,797.54 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:802.2,803.53 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:787.58,788.87 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:791.3,791.65 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:794.3,794.13 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:788.87,790.4 1 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:791.65,793.4 1 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:797.54,801.3 3 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:809.89,813.58 4 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:819.2,819.54 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:823.2,824.60 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:813.58,814.92 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:817.3,817.13 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:814.92,816.4 1 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:819.54,822.3 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:835.65,839.20 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:842.2,846.18 3 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:852.2,858.41 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:872.2,872.45 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:887.2,887.52 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:891.2,891.18 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:894.2,894.20 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:898.2,898.18 1 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:901.2,901.66 1 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:839.20,841.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:846.18,847.42 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:847.42,849.4 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:858.41,860.19 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:864.3,864.45 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:868.3,869.6 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:860.19,861.9 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:864.45,866.9 2 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:872.45,873.91 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:883.3,884.13 2 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:873.91,875.4 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:875.9,881.4 2 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:887.52,889.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:891.18,893.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:894.20,896.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/queue.go:898.18,900.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/queue.go:906.55,913.2 4 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:48.44,54.2 1 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:58.69,63.24 4 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:66.2,67.28 2 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:63.24,65.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:78.123,84.38 5 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:87.2,87.17 1 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:91.2,91.36 1 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:84.38,86.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:87.17,90.3 2 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:98.88,104.2 4 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:108.123,113.27 4 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:119.2,119.11 1 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:122.2,123.42 2 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:113.27,118.3 2 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:119.11,121.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:128.48,132.23 3 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:135.2,135.55 1 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:138.2,138.14 1 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:132.23,134.3 1 0 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:135.55,137.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:145.44,149.18 2 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:158.2,159.19 2 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:149.18,150.35 1 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:153.3,154.41 2 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:150.35,151.9 1 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:154.41,155.9 1 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:163.62,168.23 4 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:171.2,176.55 4 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:180.2,183.16 3 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:168.23,170.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:176.55,178.3 1 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:187.46,191.29 3 1 -github.com/ethereum/go-ethereum/les/downloader/resultstore.go:191.29,193.3 1 1 -github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:43.32,47.2 1 1 -github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:49.64,51.2 1 1 -github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:53.60,55.2 1 1 -github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:57.74,59.2 1 1 -github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:61.68,66.20 5 1 -github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:69.2,69.24 1 1 -github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:66.20,68.3 1 1 -github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:72.60,74.2 1 1 -github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:76.60,81.20 5 1 -github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:84.2,84.24 1 1 -github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:81.20,83.3 1 1 -github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:87.78,88.26 1 1 -github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:91.2,98.24 8 1 -github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:88.26,90.3 1 1 -github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:101.71,105.2 3 1 -github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:107.73,111.2 3 1 -github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:113.79,116.2 2 1 -github.com/ethereum/go-ethereum/metrics/prometheus/collector.go:118.35,120.2 1 1 -github.com/ethereum/go-ethereum/metrics/prometheus/prometheus.go:30.49,31.71 1 0 -github.com/ethereum/go-ethereum/metrics/prometheus/prometheus.go:31.71,34.45 2 0 -github.com/ethereum/go-ethereum/metrics/prometheus/prometheus.go:37.3,42.30 3 0 -github.com/ethereum/go-ethereum/metrics/prometheus/prometheus.go:64.3,66.26 3 0 -github.com/ethereum/go-ethereum/metrics/prometheus/prometheus.go:34.45,36.4 1 0 -github.com/ethereum/go-ethereum/metrics/prometheus/prometheus.go:42.30,45.25 2 0 -github.com/ethereum/go-ethereum/metrics/prometheus/prometheus.go:46.25,47.37 1 0 -github.com/ethereum/go-ethereum/metrics/prometheus/prometheus.go:48.23,49.35 1 0 -github.com/ethereum/go-ethereum/metrics/prometheus/prometheus.go:50.30,51.42 1 0 -github.com/ethereum/go-ethereum/metrics/prometheus/prometheus.go:52.27,53.39 1 0 -github.com/ethereum/go-ethereum/metrics/prometheus/prometheus.go:54.23,55.35 1 0 -github.com/ethereum/go-ethereum/metrics/prometheus/prometheus.go:56.23,57.35 1 0 -github.com/ethereum/go-ethereum/metrics/prometheus/prometheus.go:58.32,59.44 1 0 -github.com/ethereum/go-ethereum/metrics/prometheus/prometheus.go:60.12,61.77 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:85.147,99.159 4 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:125.2,125.119 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:133.2,133.148 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:151.2,151.11 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:99.159,100.42 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:108.3,108.104 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:111.3,111.40 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:118.3,118.41 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:100.42,103.70 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:106.4,106.52 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:103.70,105.5 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:108.104,110.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:111.40,114.20 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:114.20,116.5 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:118.41,119.70 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:119.70,121.5 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:125.119,126.69 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:126.69,129.4 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:133.148,134.48 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:137.3,137.48 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:140.3,140.84 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:143.3,143.84 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:146.3,149.55 4 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:134.48,136.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:137.48,139.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:140.84,142.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:143.84,145.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:155.31,157.2 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:161.30,164.2 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:169.66,173.2 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:176.51,178.2 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:183.60,188.2 4 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:191.133,193.29 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:196.2,198.25 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:266.2,266.8 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:193.29,195.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:198.25,200.21 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:204.3,205.20 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:210.3,210.25 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:215.3,215.80 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:219.3,219.25 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:222.3,222.16 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:231.3,232.24 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:258.3,258.113 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:263.3,264.27 2 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:200.21,203.4 2 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:205.20,209.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:210.25,214.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:215.80,218.4 2 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:219.25,221.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:222.16,226.17 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:226.17,228.5 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:232.24,241.62 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:244.4,244.26 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:247.4,252.28 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:241.62,243.5 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:244.26,246.5 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:252.28,254.5 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:255.9,257.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:258.113,261.4 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:272.85,274.40 2 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:277.2,277.70 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:280.2,281.18 2 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:287.2,289.29 3 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:292.2,296.70 3 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:312.2,312.20 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:317.2,318.14 2 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:274.40,276.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:277.70,279.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:281.18,285.3 3 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:289.29,291.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:296.70,298.43 2 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:298.43,300.62 2 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:303.4,303.63 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:306.4,306.29 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:300.62,302.5 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:303.63,305.5 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:306.29,308.5 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:312.20,314.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:314.8,316.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:322.92,323.14 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:324.31,325.45 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientpool.go:326.10,327.13 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:102.186,113.38 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:116.2,118.121 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:137.2,137.126 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:147.2,147.100 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:152.2,152.11 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:113.38,115.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:118.121,119.22 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:119.22,128.4 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:128.9,130.81 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:133.4,134.50 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:130.81,132.5 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:137.126,138.80 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:138.80,139.26 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:142.4,142.26 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:139.26,141.5 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:142.26,144.5 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:147.100,148.26 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:148.26,150.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:160.115,164.27 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:167.2,167.27 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:170.2,170.26 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:173.2,174.14 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:179.2,180.28 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:184.2,193.19 10 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:164.27,166.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:167.27,169.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:170.26,172.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:174.14,178.3 3 0 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:180.28,183.3 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:197.60,205.9 7 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:209.2,209.9 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:212.2,213.25 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:205.9,208.3 2 0 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:209.9,211.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:213.25,213.52 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:217.59,220.38 3 0 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:223.2,225.25 3 0 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:220.38,222.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:225.25,225.52 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:229.51,234.2 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:237.40,242.2 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:245.51,250.2 3 0 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:253.49,255.2 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:258.47,260.2 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:264.36,265.24 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:268.2,268.11 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:265.24,267.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:272.42,274.17 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:274.17,276.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:276.8,278.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:282.86,285.16 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:288.2,288.98 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:285.16,287.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:292.63,294.2 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:298.52,301.17 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:305.2,309.25 5 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:301.17,304.3 2 0 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:315.55,318.18 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:322.2,327.21 5 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:332.2,333.25 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:318.18,321.3 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:327.21,331.3 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:340.53,341.17 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:344.2,345.34 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:349.2,352.40 4 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:341.17,343.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:345.34,347.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:357.55,358.18 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:361.2,362.34 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:365.2,367.12 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:358.18,360.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:362.34,364.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:373.68,374.18 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:378.2,379.25 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:382.2,382.14 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:385.2,385.22 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:374.18,377.3 2 0 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:379.25,381.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:382.14,384.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:389.72,390.18 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:394.2,394.15 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:390.18,393.3 2 0 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:398.71,399.18 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:403.2,403.21 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:399.18,402.3 2 0 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:409.62,410.64 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:413.2,417.70 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:436.2,436.45 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:410.64,412.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:417.70,421.68 4 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:434.3,434.66 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:421.68,423.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:423.9,425.16 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:428.4,428.40 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:431.4,432.26 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:425.16,427.5 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:428.40,430.5 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:442.76,443.33 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:466.2,467.12 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:470.2,470.8 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:443.33,448.13 4 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:453.3,455.18 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:448.13,450.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:450.9,452.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:455.18,456.23 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:461.4,461.33 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:456.23,458.5 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:458.10,460.5 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:461.33,463.5 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:467.12,469.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:482.58,483.28 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:483.28,484.20 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:487.3,487.20 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:484.20,486.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:487.20,490.4 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:490.9,492.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:497.62,498.34 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:512.2,513.35 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:498.34,505.25 7 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:505.25,508.4 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:508.9,509.9 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:519.58,523.30 4 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:527.2,529.21 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:534.2,536.25 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:523.30,526.3 2 0 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:529.21,531.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:531.8,533.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:554.59,560.72 5 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:564.2,576.23 8 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:615.2,620.24 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:623.2,623.14 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:560.72,562.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:576.23,578.31 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:584.3,590.27 5 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:596.3,597.18 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:601.3,602.19 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:611.3,612.42 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:578.31,580.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:580.9,582.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:590.27,593.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:593.9,595.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:597.18,599.9 2 0 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:602.19,608.4 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:620.24,622.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:627.62,628.41 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:638.2,638.11 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:628.41,637.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:641.53,643.31 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:647.2,647.51 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:655.2,655.11 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:643.31,646.3 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:647.51,649.13 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:652.3,653.40 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:649.13,650.9 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:662.78,664.16 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:673.2,674.34 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:677.2,678.41 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:681.2,682.18 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:690.2,690.13 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:664.16,667.59 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:667.59,669.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:669.9,671.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:674.34,676.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:678.41,680.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:682.18,684.48 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:684.48,686.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/prioritypool.go:686.9,688.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/service.go:53.55,59.2 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/service.go:62.55,64.35 2 0 -github.com/ethereum/go-ethereum/les/vflux/server/service.go:69.2,71.17 3 0 -github.com/ethereum/go-ethereum/les/vflux/server/service.go:64.35,68.3 2 0 -github.com/ethereum/go-ethereum/les/vflux/server/service.go:78.92,80.52 2 0 -github.com/ethereum/go-ethereum/les/vflux/server/service.go:84.2,85.15 2 0 -github.com/ethereum/go-ethereum/les/vflux/server/service.go:90.2,92.31 3 0 -github.com/ethereum/go-ethereum/les/vflux/server/service.go:97.2,100.16 4 0 -github.com/ethereum/go-ethereum/les/vflux/server/service.go:80.52,82.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/service.go:85.15,87.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/service.go:92.31,93.57 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/service.go:93.57,95.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/service.go:104.82,106.56 2 0 -github.com/ethereum/go-ethereum/les/vflux/server/service.go:109.2,110.20 2 0 -github.com/ethereum/go-ethereum/les/vflux/server/service.go:113.2,114.12 2 0 -github.com/ethereum/go-ethereum/les/vflux/server/service.go:106.56,108.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/service.go:110.20,112.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/service.go:118.25,120.2 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/status.go:48.36,59.2 10 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:52.79,54.2 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:122.54,124.2 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:127.54,129.2 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:134.115,139.9 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:144.2,145.76 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:152.2,153.9 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:158.2,158.41 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:139.9,141.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:141.8,143.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:145.76,146.13 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:149.3,150.22 2 0 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:146.13,148.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:153.9,155.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:155.8,157.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:163.78,164.42 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:167.2,172.12 6 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:164.42,166.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:184.53,191.2 5 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:195.80,202.2 5 0 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:209.72,218.41 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:227.2,227.16 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:231.2,231.31 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:234.2,234.16 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:241.2,241.22 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:218.41,220.82 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:223.3,225.14 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:220.82,222.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:227.16,229.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:231.31,233.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:234.16,235.18 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:239.3,239.27 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:235.18,237.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:246.57,253.41 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:263.2,263.31 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:266.2,266.16 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:273.2,273.12 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:253.41,255.59 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:258.3,260.14 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:255.59,257.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:263.31,265.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:266.16,267.18 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:271.3,271.27 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:267.18,269.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:277.70,286.29 4 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:302.2,302.49 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:306.2,309.11 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:312.2,314.22 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:321.2,321.8 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:286.29,288.19 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:288.19,291.4 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:291.9,294.22 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:299.4,299.16 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:294.22,296.5 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:296.10,298.5 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:302.49,305.3 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:309.11,311.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:314.22,315.28 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:315.28,316.33 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:316.33,318.5 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:325.55,332.2 5 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:339.122,347.21 6 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:350.2,350.16 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:358.2,358.14 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:361.2,367.20 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:370.2,370.12 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:373.2,373.12 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:347.21,349.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:350.16,353.23 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:356.3,356.61 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:353.23,355.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:358.14,360.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:367.20,369.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:370.12,372.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:378.74,385.22 7 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:385.22,386.28 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:386.28,387.33 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:387.33,389.5 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:395.77,400.2 3 0 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:403.34,404.41 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:404.41,405.15 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:408.3,410.14 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:405.15,407.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:415.36,416.41 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:416.41,417.16 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:420.3,421.27 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:425.3,427.14 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:417.16,419.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:421.27,424.4 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:432.57,433.36 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:433.36,436.3 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:440.51,441.9 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:444.2,444.9 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:441.9,443.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:444.9,446.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:454.77,457.70 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:460.2,460.46 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:464.2,469.22 6 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:457.70,459.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:460.46,463.3 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:474.51,476.15 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:479.2,480.43 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:484.2,485.13 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:476.15,478.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:480.43,483.3 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:491.79,492.45 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:495.2,496.78 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:501.2,502.8 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:492.45,494.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:496.78,500.3 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:507.57,508.26 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:508.26,510.10 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:515.3,515.64 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:510.10,514.4 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:515.64,516.23 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:523.4,524.20 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:516.23,522.5 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:526.8,529.3 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:533.53,534.50 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:534.50,535.14 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:535.14,537.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:537.9,538.52 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:538.52,541.29 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:546.5,547.25 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:541.29,545.6 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:547.25,548.31 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:548.31,549.36 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:549.36,551.8 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:561.42,566.16 5 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:566.16,568.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:574.50,575.47 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:580.2,580.14 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:575.47,577.48 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:578.3,578.14 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:577.48,577.72 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:585.46,588.2 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:593.52,600.31 7 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:600.31,602.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:608.95,610.13 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:613.2,613.32 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:610.13,612.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:619.91,620.18 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:623.2,623.29 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:620.18,622.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:628.134,635.21 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:645.2,645.13 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:649.2,649.10 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:635.21,639.18 4 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:639.18,641.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:641.9,643.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:645.13,648.3 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:658.71,665.13 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:684.2,685.21 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:692.2,692.38 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:665.13,667.25 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:670.3,670.20 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:667.25,669.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:670.20,671.23 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:674.4,675.40 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:671.23,673.5 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:676.9,678.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:679.8,680.20 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:680.20,682.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:685.21,687.25 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:690.3,690.49 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance.go:687.25,689.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:62.171,80.82 6 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:85.2,85.122 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:103.2,103.120 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:125.2,127.12 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:138.2,138.11 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:80.82,83.3 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:85.122,87.15 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:91.3,93.25 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:96.3,96.14 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:99.3,99.25 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:87.15,89.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:93.25,95.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:96.14,98.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:99.25,101.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:103.120,107.22 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:107.22,113.4 5 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:113.9,115.81 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:118.4,118.52 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:115.81,117.5 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:127.12,128.7 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:128.7,129.11 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:130.49,132.71 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:133.19,134.11 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:142.34,146.100 4 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:154.2,154.16 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:146.100,147.78 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:147.78,152.4 4 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:158.53,162.52 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:172.2,174.57 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:162.52,164.101 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:170.3,170.14 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:164.101,165.91 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:165.91,168.5 2 0 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:178.100,180.2 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:183.82,188.2 4 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:192.61,198.13 5 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:203.2,203.13 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:198.13,200.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:200.8,202.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:203.13,205.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:205.8,207.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:212.64,217.2 3 0 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:221.109,222.25 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:222.25,224.45 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:227.3,227.16 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:231.3,231.9 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:224.45,226.4 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:227.16,230.4 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:239.108,251.33 4 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:254.2,254.41 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:257.2,257.10 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:251.33,253.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:254.41,256.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:261.87,262.51 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:262.51,264.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:264.8,266.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:271.99,272.9 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:275.2,275.58 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:272.9,274.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:279.84,287.17 6 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:290.2,290.12 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:295.2,295.14 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:287.17,289.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:290.12,292.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:292.8,294.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:295.14,297.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/balance_tracker.go:297.8,299.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:69.68,81.2 5 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:83.27,85.2 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:87.46,89.9 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:92.2,92.40 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:89.9,91.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:95.51,97.9 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:100.2,100.57 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:103.2,106.55 4 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:97.9,99.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:100.57,102.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:109.66,111.35 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:114.2,114.109 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:111.35,113.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:117.57,122.2 4 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:124.75,127.11 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:130.2,132.33 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:135.2,135.49 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:138.2,139.10 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:127.11,129.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:132.33,134.3 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:135.49,137.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:142.73,145.16 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:148.2,149.30 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:145.16,147.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:152.51,156.2 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:160.92,161.19 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:164.2,170.16 5 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:184.2,184.8 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:161.19,163.3 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:170.16,172.30 2 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:175.3,176.51 2 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:179.3,180.30 2 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:172.30,174.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:176.51,178.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:180.30,182.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:188.105,195.16 5 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:195.16,197.30 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:200.3,203.57 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:206.3,206.23 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:197.30,199.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:203.57,204.12 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:206.23,208.4 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:212.29,213.6 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:213.6,214.10 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:215.41,216.20 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:217.21,218.10 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:225.33,231.42 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:246.2,246.27 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:249.2,249.120 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:231.42,233.19 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:233.19,236.66 3 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:239.4,239.81 1 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:236.66,238.5 1 0 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:239.81,242.5 2 1 -github.com/ethereum/go-ethereum/les/vflux/server/clientdb.go:246.27,248.3 1 1 -github.com/ethereum/go-ethereum/mobile/params.go:31.30,33.2 1 0 -github.com/ethereum/go-ethereum/mobile/params.go:36.30,38.16 2 0 -github.com/ethereum/go-ethereum/mobile/params.go:41.2,41.20 1 0 -github.com/ethereum/go-ethereum/mobile/params.go:38.16,39.13 1 0 -github.com/ethereum/go-ethereum/mobile/params.go:45.30,47.16 2 0 -github.com/ethereum/go-ethereum/mobile/params.go:50.2,50.20 1 0 -github.com/ethereum/go-ethereum/mobile/params.go:47.16,48.13 1 0 -github.com/ethereum/go-ethereum/mobile/params.go:54.30,56.16 2 0 -github.com/ethereum/go-ethereum/mobile/params.go:59.2,59.20 1 0 -github.com/ethereum/go-ethereum/mobile/params.go:56.16,57.13 1 0 -github.com/ethereum/go-ethereum/mobile/params.go:63.29,65.16 2 0 -github.com/ethereum/go-ethereum/mobile/params.go:68.2,68.20 1 0 -github.com/ethereum/go-ethereum/mobile/params.go:65.16,66.13 1 0 -github.com/ethereum/go-ethereum/mobile/params.go:72.29,74.16 2 0 -github.com/ethereum/go-ethereum/mobile/params.go:77.2,77.20 1 0 -github.com/ethereum/go-ethereum/mobile/params.go:74.16,75.13 1 0 -github.com/ethereum/go-ethereum/mobile/params.go:81.33,83.16 2 0 -github.com/ethereum/go-ethereum/mobile/params.go:86.2,86.20 1 0 -github.com/ethereum/go-ethereum/mobile/params.go:83.16,84.13 1 0 -github.com/ethereum/go-ethereum/mobile/params.go:91.36,93.46 2 1 -github.com/ethereum/go-ethereum/mobile/params.go:100.2,100.14 1 1 -github.com/ethereum/go-ethereum/mobile/params.go:93.46,96.17 3 1 -github.com/ethereum/go-ethereum/mobile/params.go:96.17,97.45 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:37.48,39.16 2 0 -github.com/ethereum/go-ethereum/mobile/types.go:42.2,42.12 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:39.16,41.3 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:52.35,54.2 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:57.33,59.2 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:62.33,64.2 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:72.35,74.2 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:77.33,79.2 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:82.33,84.2 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:92.53,96.74 2 0 -github.com/ethereum/go-ethereum/mobile/types.go:99.2,99.15 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:96.74,98.3 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:103.46,105.2 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:108.54,112.63 2 0 -github.com/ethereum/go-ethereum/mobile/types.go:115.2,115.15 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:112.63,114.3 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:119.47,122.2 2 0 -github.com/ethereum/go-ethereum/mobile/types.go:125.34,127.2 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:129.42,129.79 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:130.42,130.78 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:131.42,131.80 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:132.42,132.73 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:133.42,133.75 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:134.42,134.80 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:135.42,135.75 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:136.42,136.81 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:137.42,137.76 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:138.42,138.77 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:139.42,139.76 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:140.42,140.73 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:141.42,141.67 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:142.42,142.78 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:143.42,143.75 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:144.42,144.75 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:150.30,152.2 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:155.60,156.42 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:159.2,159.39 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:156.42,158.3 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:168.51,172.73 2 0 -github.com/ethereum/go-ethereum/mobile/types.go:175.2,175.15 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:172.73,174.3 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:179.45,181.2 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:184.52,188.62 2 0 -github.com/ethereum/go-ethereum/mobile/types.go:191.2,191.15 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:188.62,190.3 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:195.46,198.2 2 0 -github.com/ethereum/go-ethereum/mobile/types.go:201.33,203.2 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:205.49,205.87 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:206.49,206.86 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:207.49,207.88 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:208.49,208.81 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:209.49,209.83 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:210.49,210.88 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:211.49,211.83 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:212.49,212.89 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:213.49,213.84 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:214.49,214.85 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:215.49,215.84 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:216.49,216.81 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:217.49,217.75 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:218.49,218.86 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:219.49,219.82 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:220.49,220.81 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:221.49,221.85 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:222.49,222.86 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:223.49,223.97 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:224.57,226.2 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:235.115,237.2 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:241.123,242.15 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:245.2,245.144 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:242.15,244.3 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:249.63,253.71 2 0 -github.com/ethereum/go-ethereum/mobile/types.go:256.2,256.16 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:253.71,255.3 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:260.52,262.2 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:265.64,269.60 2 0 -github.com/ethereum/go-ethereum/mobile/types.go:272.2,272.16 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:269.60,271.3 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:276.53,279.2 2 0 -github.com/ethereum/go-ethereum/mobile/types.go:282.40,284.2 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:286.46,286.69 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:287.46,287.75 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:288.46,288.82 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:289.46,289.79 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:290.46,290.77 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:292.42,292.72 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:293.42,293.74 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:295.41,296.33 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:299.2,299.12 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:296.33,298.3 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:302.100,304.20 2 0 -github.com/ethereum/go-ethereum/mobile/types.go:307.2,308.33 2 0 -github.com/ethereum/go-ethereum/mobile/types.go:304.20,306.3 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:315.37,317.2 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:320.68,321.40 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:324.2,324.42 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:321.40,323.3 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:333.55,337.75 2 0 -github.com/ethereum/go-ethereum/mobile/types.go:340.2,340.15 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:337.75,339.3 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:344.47,346.2 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:349.56,353.64 2 0 -github.com/ethereum/go-ethereum/mobile/types.go:356.2,356.15 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:353.64,355.3 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:360.48,363.2 2 0 -github.com/ethereum/go-ethereum/mobile/types.go:366.35,368.2 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:370.49,370.81 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:371.49,371.79 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:372.49,372.94 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:373.49,373.83 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:374.49,374.81 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:375.49,375.83 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:376.49,376.95 1 0 -github.com/ethereum/go-ethereum/mobile/types.go:377.49,377.84 1 0 -github.com/ethereum/go-ethereum/mobile/big.go:34.33,36.2 1 1 -github.com/ethereum/go-ethereum/mobile/big.go:40.54,42.14 2 0 -github.com/ethereum/go-ethereum/mobile/big.go:45.2,45.19 1 0 -github.com/ethereum/go-ethereum/mobile/big.go:42.14,44.3 1 0 -github.com/ethereum/go-ethereum/mobile/big.go:49.37,51.2 1 0 -github.com/ethereum/go-ethereum/mobile/big.go:54.35,56.2 1 0 -github.com/ethereum/go-ethereum/mobile/big.go:60.36,62.2 1 0 -github.com/ethereum/go-ethereum/mobile/big.go:66.40,68.2 1 0 -github.com/ethereum/go-ethereum/mobile/big.go:71.37,73.2 1 0 -github.com/ethereum/go-ethereum/mobile/big.go:81.30,83.2 1 0 -github.com/ethereum/go-ethereum/mobile/big.go:90.49,92.2 1 0 -github.com/ethereum/go-ethereum/mobile/big.go:98.36,102.2 1 1 -github.com/ethereum/go-ethereum/mobile/big.go:105.31,107.2 1 1 -github.com/ethereum/go-ethereum/mobile/big.go:110.61,111.43 1 0 -github.com/ethereum/go-ethereum/mobile/big.go:114.2,114.40 1 0 -github.com/ethereum/go-ethereum/mobile/big.go:111.43,113.3 1 0 -github.com/ethereum/go-ethereum/mobile/big.go:118.57,119.43 1 1 -github.com/ethereum/go-ethereum/mobile/big.go:122.2,123.12 2 1 -github.com/ethereum/go-ethereum/mobile/big.go:119.43,121.3 1 0 -github.com/ethereum/go-ethereum/mobile/big.go:127.46,129.2 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:37.60,39.61 2 0 -github.com/ethereum/go-ethereum/mobile/common.go:42.2,42.15 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:39.61,41.3 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:46.55,48.38 2 0 -github.com/ethereum/go-ethereum/mobile/common.go:51.2,51.15 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:48.38,50.3 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:55.44,56.54 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:59.2,60.12 2 0 -github.com/ethereum/go-ethereum/mobile/common.go:56.54,58.3 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:64.34,66.2 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:69.42,71.40 2 0 -github.com/ethereum/go-ethereum/mobile/common.go:74.2,74.56 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:77.2,78.16 2 0 -github.com/ethereum/go-ethereum/mobile/common.go:81.2,82.12 2 0 -github.com/ethereum/go-ethereum/mobile/common.go:71.40,73.3 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:74.56,76.3 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:78.16,80.3 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:86.32,88.2 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:91.32,93.2 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:99.34,103.2 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:106.31,108.2 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:111.29,113.2 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:116.55,117.41 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:120.2,120.36 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:117.41,119.3 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:124.51,125.41 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:128.2,129.12 2 0 -github.com/ethereum/go-ethereum/mobile/common.go:125.41,127.3 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:133.37,135.2 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:143.69,145.61 2 0 -github.com/ethereum/go-ethereum/mobile/common.go:148.2,148.15 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:145.61,147.3 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:152.64,154.38 2 0 -github.com/ethereum/go-ethereum/mobile/common.go:157.2,157.15 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:154.38,156.3 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:161.50,162.60 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:165.2,166.12 2 0 -github.com/ethereum/go-ethereum/mobile/common.go:162.60,164.3 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:170.37,172.2 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:175.48,177.46 2 0 -github.com/ethereum/go-ethereum/mobile/common.go:180.2,180.62 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:183.2,184.16 2 0 -github.com/ethereum/go-ethereum/mobile/common.go:187.2,188.12 2 0 -github.com/ethereum/go-ethereum/mobile/common.go:177.46,179.3 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:180.62,182.3 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:184.16,186.3 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:192.35,194.2 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:197.35,199.2 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:205.40,209.2 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:212.37,214.2 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:217.32,219.2 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:222.64,223.44 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:226.2,226.42 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:223.44,225.3 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:230.60,231.44 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:234.2,235.12 2 0 -github.com/ethereum/go-ethereum/mobile/common.go:231.44,233.3 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:239.46,241.2 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:244.35,246.2 1 0 -github.com/ethereum/go-ethereum/mobile/common.go:249.46,251.2 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:88.34,91.2 2 0 -github.com/ethereum/go-ethereum/mobile/geth.go:94.55,96.2 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:99.54,102.2 2 0 -github.com/ethereum/go-ethereum/mobile/geth.go:105.41,107.2 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:115.73,117.19 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:120.2,120.26 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:123.2,123.71 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:127.2,127.31 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:132.2,148.16 3 0 -github.com/ethereum/go-ethereum/mobile/geth.go:152.2,155.34 3 0 -github.com/ethereum/go-ethereum/mobile/geth.go:205.2,205.28 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:222.2,222.29 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:117.19,119.3 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:120.26,122.3 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:123.71,125.3 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:127.31,129.3 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:148.16,150.3 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:155.34,158.81 2 0 -github.com/ethereum/go-ethereum/mobile/geth.go:162.3,162.49 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:169.3,169.49 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:176.3,176.49 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:183.3,183.48 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:190.3,190.52 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:197.3,197.48 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:158.81,160.4 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:162.49,164.37 2 0 -github.com/ethereum/go-ethereum/mobile/geth.go:164.37,166.5 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:169.49,171.37 2 0 -github.com/ethereum/go-ethereum/mobile/geth.go:171.37,173.5 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:176.49,178.37 2 0 -github.com/ethereum/go-ethereum/mobile/geth.go:178.37,180.5 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:183.48,185.37 2 0 -github.com/ethereum/go-ethereum/mobile/geth.go:185.37,187.5 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:190.52,192.37 2 0 -github.com/ethereum/go-ethereum/mobile/geth.go:192.37,194.5 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:197.48,199.37 2 0 -github.com/ethereum/go-ethereum/mobile/geth.go:199.37,201.5 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:205.28,212.17 7 0 -github.com/ethereum/go-ethereum/mobile/geth.go:216.3,216.36 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:212.17,214.4 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:216.36,217.118 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:217.118,219.5 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:227.30,229.2 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:232.30,235.2 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:238.70,240.16 2 0 -github.com/ethereum/go-ethereum/mobile/geth.go:243.2,243.55 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:240.16,242.3 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:247.40,249.2 1 0 -github.com/ethereum/go-ethereum/mobile/geth.go:252.42,254.2 1 0 -github.com/ethereum/go-ethereum/mobile/logger.go:26.30,28.2 1 0 -github.com/ethereum/go-ethereum/mobile/p2p.go:32.49,32.70 1 0 -github.com/ethereum/go-ethereum/mobile/p2p.go:33.49,33.72 1 0 -github.com/ethereum/go-ethereum/mobile/p2p.go:34.49,34.73 1 0 -github.com/ethereum/go-ethereum/mobile/p2p.go:35.49,35.70 1 0 -github.com/ethereum/go-ethereum/mobile/p2p.go:36.49,36.83 1 0 -github.com/ethereum/go-ethereum/mobile/p2p.go:37.49,37.82 1 0 -github.com/ethereum/go-ethereum/mobile/p2p.go:38.49,38.78 1 0 -github.com/ethereum/go-ethereum/mobile/p2p.go:39.45,41.39 2 0 -github.com/ethereum/go-ethereum/mobile/p2p.go:44.2,44.25 1 0 -github.com/ethereum/go-ethereum/mobile/p2p.go:41.39,43.3 1 0 -github.com/ethereum/go-ethereum/mobile/p2p.go:52.47,52.68 1 0 -github.com/ethereum/go-ethereum/mobile/p2p.go:53.47,53.70 1 0 -github.com/ethereum/go-ethereum/mobile/p2p.go:54.47,54.80 1 0 -github.com/ethereum/go-ethereum/mobile/p2p.go:55.47,55.86 1 0 -github.com/ethereum/go-ethereum/mobile/p2p.go:56.47,56.87 1 0 -github.com/ethereum/go-ethereum/mobile/p2p.go:64.33,66.2 1 0 -github.com/ethereum/go-ethereum/mobile/p2p.go:69.63,70.41 1 0 -github.com/ethereum/go-ethereum/mobile/p2p.go:73.2,73.40 1 0 -github.com/ethereum/go-ethereum/mobile/p2p.go:70.41,72.3 1 0 -github.com/ethereum/go-ethereum/mobile/context.go:37.28,41.2 1 0 -github.com/ethereum/go-ethereum/mobile/context.go:48.41,54.2 2 0 -github.com/ethereum/go-ethereum/mobile/context.go:61.64,67.2 2 0 -github.com/ethereum/go-ethereum/mobile/context.go:74.52,80.2 2 0 -github.com/ethereum/go-ethereum/mobile/discover.go:56.46,58.16 2 0 -github.com/ethereum/go-ethereum/mobile/discover.go:61.2,61.26 1 0 -github.com/ethereum/go-ethereum/mobile/discover.go:58.16,60.3 1 0 -github.com/ethereum/go-ethereum/mobile/discover.go:68.34,72.2 1 0 -github.com/ethereum/go-ethereum/mobile/discover.go:75.31,77.2 1 0 -github.com/ethereum/go-ethereum/mobile/discover.go:80.29,82.2 1 0 -github.com/ethereum/go-ethereum/mobile/discover.go:85.57,86.40 1 0 -github.com/ethereum/go-ethereum/mobile/discover.go:89.2,89.36 1 0 -github.com/ethereum/go-ethereum/mobile/discover.go:86.40,88.3 1 0 -github.com/ethereum/go-ethereum/mobile/discover.go:93.53,94.40 1 0 -github.com/ethereum/go-ethereum/mobile/discover.go:97.2,98.12 2 0 -github.com/ethereum/go-ethereum/mobile/discover.go:94.40,96.3 1 0 -github.com/ethereum/go-ethereum/mobile/discover.go:102.39,104.2 1 0 -github.com/ethereum/go-ethereum/mobile/init.go:28.13,34.2 2 1 -github.com/ethereum/go-ethereum/mobile/ethclient.go:34.73,37.2 2 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:40.92,43.2 2 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:47.96,48.16 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:52.2,53.30 2 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:48.16,51.3 2 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:57.95,60.2 2 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:64.99,65.16 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:69.2,70.32 2 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:65.16,68.3 2 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:74.101,78.2 2 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:82.134,85.2 2 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:88.94,91.2 2 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:94.113,98.2 2 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:102.103,105.2 2 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:109.88,111.24 2 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:114.2,114.41 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:111.24,113.3 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:126.123,130.16 3 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:134.2,134.12 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:148.2,148.35 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:130.16,132.3 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:134.12,135.7 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:135.7,136.11 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:137.24,138.39 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:140.31,141.19 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:144.5,144.11 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:141.19,143.6 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:155.113,156.16 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:160.2,161.33 2 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:156.16,159.3 2 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:166.123,167.16 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:170.2,170.88 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:167.16,169.3 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:175.106,176.16 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:179.2,179.75 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:176.16,178.3 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:184.107,185.16 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:189.2,190.29 2 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:185.16,188.3 2 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:196.94,198.16 2 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:202.2,203.25 2 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:206.2,206.24 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:198.16,200.3 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:203.25,205.3 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:217.149,221.16 3 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:225.2,225.12 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:239.2,239.35 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:221.16,223.3 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:225.12,226.7 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:226.7,227.11 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:228.21,229.37 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:231.31,232.19 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:235.5,235.11 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:232.19,234.6 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:245.106,248.2 2 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:251.116,253.2 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:256.99,258.2 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:262.100,265.2 2 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:268.89,271.2 2 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:281.107,282.16 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:285.2,285.73 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:282.16,284.3 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:290.100,292.2 1 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:296.82,299.2 2 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:305.88,308.2 2 0 -github.com/ethereum/go-ethereum/mobile/ethclient.go:314.80,316.2 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:36.38,38.2 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:46.28,48.2 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:50.43,50.76 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:51.43,51.72 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:52.43,52.79 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:53.43,53.76 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:54.43,54.66 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:55.38,56.33 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:59.2,59.12 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:56.33,58.3 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:62.48,62.82 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:63.48,63.77 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:64.48,64.83 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:65.48,65.80 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:66.48,66.89 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:67.45,68.20 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:72.2,72.31 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:68.20,71.3 2 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:81.55,81.97 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:82.55,82.96 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:83.55,83.96 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:84.55,84.98 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:85.55,85.102 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:86.55,86.99 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:87.55,87.103 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:88.55,88.97 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:89.55,89.102 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:90.55,90.99 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:91.55,91.103 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:92.55,92.99 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:93.55,93.103 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:94.55,94.100 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:95.55,95.99 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:101.34,105.2 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:108.31,110.2 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:113.29,115.2 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:118.59,119.41 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:122.2,122.38 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:119.41,121.3 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:126.55,127.41 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:130.2,131.12 2 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:127.41,129.3 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:135.41,137.2 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:145.36,147.2 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:149.50,149.88 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:150.50,150.86 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:151.50,151.91 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:152.50,152.85 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:154.59,154.100 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:155.59,155.96 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:156.59,156.103 1 0 -github.com/ethereum/go-ethereum/mobile/ethereum.go:157.59,157.94 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:41.32,43.2 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:45.53,45.70 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:46.53,46.77 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:47.53,47.72 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:48.53,48.78 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:49.53,49.101 2 1 -github.com/ethereum/go-ethereum/mobile/interface.go:50.53,50.86 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:51.53,51.84 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:52.53,52.84 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:53.53,53.78 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:54.53,54.82 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:55.53,55.70 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:56.53,56.70 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:57.53,57.70 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:58.53,58.70 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:59.48,61.37 2 1 -github.com/ethereum/go-ethereum/mobile/interface.go:64.2,64.18 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:61.37,63.3 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:66.49,68.37 2 1 -github.com/ethereum/go-ethereum/mobile/interface.go:71.2,71.18 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:68.37,70.3 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:73.49,75.37 2 1 -github.com/ethereum/go-ethereum/mobile/interface.go:78.2,78.18 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:75.37,77.3 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:80.49,82.37 2 1 -github.com/ethereum/go-ethereum/mobile/interface.go:85.2,85.18 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:82.37,84.3 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:87.47,87.100 2 1 -github.com/ethereum/go-ethereum/mobile/interface.go:88.47,88.101 2 1 -github.com/ethereum/go-ethereum/mobile/interface.go:89.47,89.101 2 1 -github.com/ethereum/go-ethereum/mobile/interface.go:90.47,90.93 2 1 -github.com/ethereum/go-ethereum/mobile/interface.go:91.49,93.37 2 1 -github.com/ethereum/go-ethereum/mobile/interface.go:96.2,96.18 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:93.37,95.3 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:98.50,100.37 2 1 -github.com/ethereum/go-ethereum/mobile/interface.go:103.2,103.18 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:100.37,102.3 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:105.50,107.37 2 1 -github.com/ethereum/go-ethereum/mobile/interface.go:110.2,110.18 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:107.37,109.3 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:112.50,114.37 2 1 -github.com/ethereum/go-ethereum/mobile/interface.go:117.2,117.18 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:114.37,116.3 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:119.50,119.79 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:120.50,120.81 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:122.43,122.67 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:123.43,123.69 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:124.43,124.69 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:125.43,125.71 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:126.43,126.69 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:127.43,127.71 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:128.43,128.77 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:129.43,129.79 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:130.43,130.74 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:131.43,131.76 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:132.43,132.67 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:133.43,133.69 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:134.43,134.68 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:135.43,135.70 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:136.43,136.68 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:137.43,137.70 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:138.43,138.68 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:139.43,139.70 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:140.43,140.68 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:141.43,141.70 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:142.43,142.69 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:143.43,143.71 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:144.43,144.69 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:145.43,145.71 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:146.43,146.69 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:147.43,147.71 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:148.43,148.71 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:149.43,149.73 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:151.47,151.75 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:152.47,152.85 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:153.47,153.77 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:154.47,154.89 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:155.47,155.77 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:156.47,156.90 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:157.47,157.95 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:158.47,158.99 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:159.47,159.89 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:160.47,160.93 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:161.47,161.75 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:162.47,162.76 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:163.47,163.76 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:164.47,164.76 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:165.41,168.25 3 1 -github.com/ethereum/go-ethereum/mobile/interface.go:171.2,171.16 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:168.25,170.3 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:173.42,176.25 3 1 -github.com/ethereum/go-ethereum/mobile/interface.go:179.2,179.16 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:176.25,178.3 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:181.42,184.25 3 1 -github.com/ethereum/go-ethereum/mobile/interface.go:187.2,187.16 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:184.25,186.3 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:189.42,192.25 3 1 -github.com/ethereum/go-ethereum/mobile/interface.go:195.2,195.16 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:192.25,194.3 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:197.40,199.2 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:200.41,202.2 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:203.41,205.2 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:206.41,208.2 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:209.42,212.25 3 1 -github.com/ethereum/go-ethereum/mobile/interface.go:215.2,215.16 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:212.25,214.3 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:217.43,220.25 3 1 -github.com/ethereum/go-ethereum/mobile/interface.go:223.2,223.16 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:220.25,222.3 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:225.43,228.25 3 1 -github.com/ethereum/go-ethereum/mobile/interface.go:231.2,231.16 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:228.25,230.3 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:233.43,236.25 3 1 -github.com/ethereum/go-ethereum/mobile/interface.go:239.2,239.16 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:236.25,238.3 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:241.43,241.84 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:242.43,242.87 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:250.42,252.2 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:255.33,257.2 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:262.65,263.42 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:266.2,266.50 1 1 -github.com/ethereum/go-ethereum/mobile/interface.go:263.42,265.3 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:270.62,271.42 1 0 -github.com/ethereum/go-ethereum/mobile/interface.go:274.2,275.12 2 0 -github.com/ethereum/go-ethereum/mobile/interface.go:271.42,273.3 1 0 -github.com/ethereum/go-ethereum/mobile/vm.go:33.38,33.72 1 0 -github.com/ethereum/go-ethereum/mobile/vm.go:34.38,34.70 1 0 -github.com/ethereum/go-ethereum/mobile/vm.go:35.38,35.59 1 0 -github.com/ethereum/go-ethereum/mobile/vm.go:36.38,36.73 1 0 -github.com/ethereum/go-ethereum/mobile/vm.go:37.38,37.68 1 0 -github.com/ethereum/go-ethereum/mobile/vm.go:38.38,38.67 1 0 -github.com/ethereum/go-ethereum/mobile/vm.go:39.38,39.71 1 0 -github.com/ethereum/go-ethereum/mobile/vm.go:40.38,40.65 1 0 -github.com/ethereum/go-ethereum/mobile/vm.go:46.27,48.2 1 0 -github.com/ethereum/go-ethereum/mobile/vm.go:51.51,52.39 1 0 -github.com/ethereum/go-ethereum/mobile/vm.go:55.2,55.33 1 0 -github.com/ethereum/go-ethereum/mobile/vm.go:52.39,54.3 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:57.31,59.2 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:62.63,63.43 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:66.2,66.41 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:63.43,65.3 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:70.59,71.43 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:74.2,75.12 2 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:71.43,73.3 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:79.41,81.2 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:84.35,86.2 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:92.65,94.2 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:97.55,99.2 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:102.45,104.2 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:108.78,110.2 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:114.89,116.2 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:119.102,120.20 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:123.2,124.16 2 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:127.2,127.34 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:120.20,122.3 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:124.16,126.3 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:133.118,135.2 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:139.131,140.20 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:143.2,144.16 2 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:147.2,147.34 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:140.20,142.3 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:144.16,146.3 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:151.71,153.2 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:156.50,158.2 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:167.91,169.2 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:173.69,175.16 2 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:178.2,178.31 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:175.16,177.3 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:182.93,184.2 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:187.105,189.2 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:192.109,194.16 2 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:197.2,197.27 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:194.16,196.3 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:201.95,203.16 2 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:206.2,207.16 2 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:210.2,210.27 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:203.16,205.3 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:207.16,209.3 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:215.100,217.16 2 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:220.2,220.31 1 0 -github.com/ethereum/go-ethereum/mobile/accounts.go:217.16,219.3 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:42.102,44.16 2 0 -github.com/ethereum/go-ethereum/mobile/bind.go:47.2,47.31 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:44.16,46.3 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:56.30,58.2 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:60.43,60.71 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:61.43,61.76 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:67.52,67.83 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:68.53,68.76 0 0 -github.com/ethereum/go-ethereum/mobile/bind.go:69.52,69.91 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:70.52,70.85 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:79.38,81.2 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:85.103,87.16 2 0 -github.com/ethereum/go-ethereum/mobile/bind.go:90.2,91.16 2 0 -github.com/ethereum/go-ethereum/mobile/bind.go:94.2,94.34 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:87.16,89.3 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:91.16,93.3 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:97.49,97.84 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:98.49,98.83 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:99.49,99.84 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:100.49,100.87 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:101.49,101.85 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:110.50,110.83 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:111.50,111.89 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:112.47,113.98 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:113.98,115.17 2 0 -github.com/ethereum/go-ethereum/mobile/bind.go:118.3,118.21 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:115.17,117.4 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:121.56,121.90 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:122.56,122.93 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:123.56,123.94 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:124.56,124.95 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:137.151,140.16 2 0 -github.com/ethereum/go-ethereum/mobile/bind.go:143.2,144.16 2 0 -github.com/ethereum/go-ethereum/mobile/bind.go:147.2,151.8 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:140.16,142.3 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:144.16,146.3 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:156.112,158.16 2 0 -github.com/ethereum/go-ethereum/mobile/bind.go:161.2,164.8 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:158.16,160.3 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:167.47,167.77 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:168.52,169.23 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:172.2,172.33 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:169.23,171.3 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:177.102,180.87 3 0 -github.com/ethereum/go-ethereum/mobile/bind.go:183.2,184.12 2 0 -github.com/ethereum/go-ethereum/mobile/bind.go:180.87,182.3 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:188.114,190.16 2 0 -github.com/ethereum/go-ethereum/mobile/bind.go:193.2,193.33 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:190.16,192.3 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:197.101,199.16 2 0 -github.com/ethereum/go-ethereum/mobile/bind.go:202.2,202.33 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:199.16,201.3 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:207.81,209.16 2 0 -github.com/ethereum/go-ethereum/mobile/bind.go:212.2,212.33 1 0 -github.com/ethereum/go-ethereum/mobile/bind.go:209.16,211.3 1 0 -github.com/ethereum/go-ethereum/mobile/primitives.go:32.30,34.2 1 0 -github.com/ethereum/go-ethereum/mobile/primitives.go:37.56,38.39 1 0 -github.com/ethereum/go-ethereum/mobile/primitives.go:41.2,41.27 1 0 -github.com/ethereum/go-ethereum/mobile/primitives.go:38.39,40.3 1 0 -github.com/ethereum/go-ethereum/mobile/primitives.go:45.52,46.39 1 0 -github.com/ethereum/go-ethereum/mobile/primitives.go:49.2,50.12 2 0 -github.com/ethereum/go-ethereum/mobile/primitives.go:46.39,48.3 1 0 -github.com/ethereum/go-ethereum/mobile/primitives.go:54.35,56.2 1 0 -github.com/ethereum/go-ethereum/mobile/primitives.go:62.29,64.2 1 0 -github.com/ethereum/go-ethereum/mobile/primitives.go:67.51,68.41 1 0 -github.com/ethereum/go-ethereum/mobile/primitives.go:71.2,71.29 1 0 -github.com/ethereum/go-ethereum/mobile/primitives.go:68.41,70.3 1 0 -github.com/ethereum/go-ethereum/mobile/primitives.go:75.47,76.41 1 0 -github.com/ethereum/go-ethereum/mobile/primitives.go:79.2,80.12 2 0 -github.com/ethereum/go-ethereum/mobile/primitives.go:76.41,78.3 1 0 -github.com/ethereum/go-ethereum/mobile/primitives.go:84.34,86.2 1 0 -github.com/ethereum/go-ethereum/mobile/primitives.go:92.32,94.2 1 0 -github.com/ethereum/go-ethereum/mobile/primitives.go:97.61,98.44 1 0 -github.com/ethereum/go-ethereum/mobile/primitives.go:101.2,101.50 1 0 -github.com/ethereum/go-ethereum/mobile/primitives.go:98.44,100.3 1 0 -github.com/ethereum/go-ethereum/mobile/primitives.go:105.57,106.44 1 0 -github.com/ethereum/go-ethereum/mobile/primitives.go:109.2,110.12 2 0 -github.com/ethereum/go-ethereum/mobile/primitives.go:106.44,108.3 1 0 -github.com/ethereum/go-ethereum/mobile/primitives.go:114.37,116.2 1 0 -github.com/ethereum/go-ethereum/node/rpcstack.go:85.75,91.2 4 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:95.65,99.61 3 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:103.2,105.12 3 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:99.61,101.3 1 0 -github.com/ethereum/go-ethereum/node/rpcstack.go:109.42,113.23 3 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:116.2,116.19 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:113.23,115.3 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:120.36,124.43 3 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:129.2,130.40 2 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:138.2,139.16 2 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:146.2,149.19 3 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:157.2,157.21 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:161.2,170.35 3 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:173.2,175.29 3 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:182.2,182.12 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:124.43,126.3 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:130.40,135.3 4 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:139.16,145.3 3 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:149.19,151.30 2 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:154.3,154.46 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:151.30,153.4 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:157.21,159.3 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:170.35,172.3 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:175.29,177.20 2 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:177.20,180.4 2 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:185.72,188.33 2 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:195.2,196.16 2 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:212.2,212.36 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:188.33,189.38 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:192.3,192.9 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:189.38,191.4 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:196.16,202.20 2 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:207.3,207.40 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:202.20,205.4 2 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:207.40,210.4 2 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:216.51,218.16 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:222.2,222.71 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:218.16,220.3 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:226.46,227.16 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:230.2,230.20 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:233.2,233.37 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:239.2,239.12 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:227.16,229.3 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:230.20,232.3 1 0 -github.com/ethereum/go-ethereum/node/rpcstack.go:233.37,238.3 1 0 -github.com/ethereum/go-ethereum/node/rpcstack.go:243.29,247.2 3 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:249.31,250.23 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:255.2,257.24 3 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:261.2,261.22 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:265.2,271.33 5 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:250.23,252.3 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:257.24,260.3 2 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:261.22,264.3 2 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:275.73,279.20 3 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:284.2,285.71 2 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:288.2,293.12 3 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:279.20,281.3 1 0 -github.com/ethereum/go-ethereum/node/rpcstack.go:285.71,287.3 1 0 -github.com/ethereum/go-ethereum/node/rpcstack.go:297.40,299.20 2 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:303.2,303.23 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:299.20,302.3 2 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:307.70,311.19 3 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:315.2,316.71 2 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:319.2,324.12 3 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:311.19,313.3 1 0 -github.com/ethereum/go-ethereum/node/rpcstack.go:316.71,318.3 1 0 -github.com/ethereum/go-ethereum/node/rpcstack.go:328.31,332.19 3 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:332.19,333.22 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:333.22,335.4 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:340.39,342.15 2 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:346.2,346.18 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:342.15,345.3 2 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:350.40,352.2 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:355.39,357.2 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:360.40,363.2 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:366.107,370.25 3 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:373.2,373.32 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:370.25,372.3 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:377.73,378.25 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:381.2,381.12 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:378.25,380.3 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:384.77,386.30 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:389.2,395.23 2 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:386.30,388.3 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:407.71,409.37 2 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:412.2,412.44 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:409.37,411.3 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:416.80,418.18 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:422.2,423.16 2 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:427.2,427.48 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:434.2,434.38 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:438.2,438.39 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:442.2,442.63 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:418.18,421.3 2 0 -github.com/ethereum/go-ethereum/node/rpcstack.go:423.16,426.3 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:427.48,432.3 2 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:434.38,437.3 2 0 -github.com/ethereum/go-ethereum/node/rpcstack.go:438.39,441.3 2 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:446.26,449.3 2 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:457.54,460.2 2 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:462.59,464.2 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:466.53,467.71 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:467.71,468.65 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:473.3,481.72 6 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:468.65,471.4 2 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:494.63,496.2 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:499.50,503.24 3 0 -github.com/ethereum/go-ethereum/node/rpcstack.go:506.2,507.16 2 0 -github.com/ethereum/go-ethereum/node/rpcstack.go:511.2,513.12 3 0 -github.com/ethereum/go-ethereum/node/rpcstack.go:503.24,505.3 1 0 -github.com/ethereum/go-ethereum/node/rpcstack.go:507.16,510.3 2 0 -github.com/ethereum/go-ethereum/node/rpcstack.go:516.35,520.24 3 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:523.2,527.12 5 0 -github.com/ethereum/go-ethereum/node/rpcstack.go:520.24,522.3 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:532.92,533.76 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:537.2,538.33 2 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:542.2,542.27 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:549.2,549.12 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:533.76,535.3 1 0 -github.com/ethereum/go-ethereum/node/rpcstack.go:538.33,540.3 1 0 -github.com/ethereum/go-ethereum/node/rpcstack.go:542.27,543.83 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:543.83,544.71 1 1 -github.com/ethereum/go-ethereum/node/rpcstack.go:544.71,546.5 1 0 -github.com/ethereum/go-ethereum/node/config.go:212.39,214.21 1 1 -github.com/ethereum/go-ethereum/node/config.go:218.2,218.31 1 1 -github.com/ethereum/go-ethereum/node/config.go:225.2,225.43 1 1 -github.com/ethereum/go-ethereum/node/config.go:231.2,231.18 1 1 -github.com/ethereum/go-ethereum/node/config.go:214.21,216.3 1 1 -github.com/ethereum/go-ethereum/node/config.go:218.31,219.48 1 0 -github.com/ethereum/go-ethereum/node/config.go:222.3,222.33 1 0 -github.com/ethereum/go-ethereum/node/config.go:219.48,221.4 1 0 -github.com/ethereum/go-ethereum/node/config.go:225.43,226.22 1 1 -github.com/ethereum/go-ethereum/node/config.go:229.3,229.45 1 1 -github.com/ethereum/go-ethereum/node/config.go:226.22,228.4 1 1 -github.com/ethereum/go-ethereum/node/config.go:235.34,236.21 1 1 -github.com/ethereum/go-ethereum/node/config.go:239.2,239.43 1 1 -github.com/ethereum/go-ethereum/node/config.go:236.21,238.3 1 1 -github.com/ethereum/go-ethereum/node/config.go:243.57,244.28 1 0 -github.com/ethereum/go-ethereum/node/config.go:250.2,251.29 2 0 -github.com/ethereum/go-ethereum/node/config.go:244.28,246.29 2 0 -github.com/ethereum/go-ethereum/node/config.go:246.29,247.34 1 0 -github.com/ethereum/go-ethereum/node/config.go:256.40,257.22 1 0 -github.com/ethereum/go-ethereum/node/config.go:260.2,260.53 1 0 -github.com/ethereum/go-ethereum/node/config.go:257.22,259.3 1 0 -github.com/ethereum/go-ethereum/node/config.go:264.35,267.2 2 0 -github.com/ethereum/go-ethereum/node/config.go:271.38,272.20 1 0 -github.com/ethereum/go-ethereum/node/config.go:275.2,275.49 1 0 -github.com/ethereum/go-ethereum/node/config.go:272.20,274.3 1 0 -github.com/ethereum/go-ethereum/node/config.go:279.33,282.2 2 0 -github.com/ethereum/go-ethereum/node/config.go:286.39,288.2 1 0 -github.com/ethereum/go-ethereum/node/config.go:291.36,294.46 2 1 -github.com/ethereum/go-ethereum/node/config.go:297.2,297.23 1 1 -github.com/ethereum/go-ethereum/node/config.go:300.2,300.21 1 1 -github.com/ethereum/go-ethereum/node/config.go:303.2,305.13 3 1 -github.com/ethereum/go-ethereum/node/config.go:294.46,296.3 1 0 -github.com/ethereum/go-ethereum/node/config.go:297.23,299.3 1 0 -github.com/ethereum/go-ethereum/node/config.go:300.21,302.3 1 0 -github.com/ethereum/go-ethereum/node/config.go:308.32,309.18 1 1 -github.com/ethereum/go-ethereum/node/config.go:316.2,316.15 1 1 -github.com/ethereum/go-ethereum/node/config.go:309.18,311.21 2 1 -github.com/ethereum/go-ethereum/node/config.go:314.3,314.18 1 1 -github.com/ethereum/go-ethereum/node/config.go:311.21,312.51 1 0 -github.com/ethereum/go-ethereum/node/config.go:329.50,330.26 1 1 -github.com/ethereum/go-ethereum/node/config.go:333.2,333.21 1 1 -github.com/ethereum/go-ethereum/node/config.go:338.2,338.51 1 1 -github.com/ethereum/go-ethereum/node/config.go:350.2,350.45 1 1 -github.com/ethereum/go-ethereum/node/config.go:330.26,332.3 1 0 -github.com/ethereum/go-ethereum/node/config.go:333.21,335.3 1 1 -github.com/ethereum/go-ethereum/node/config.go:338.51,340.25 2 1 -github.com/ethereum/go-ethereum/node/config.go:343.3,343.49 1 1 -github.com/ethereum/go-ethereum/node/config.go:340.25,342.4 1 0 -github.com/ethereum/go-ethereum/node/config.go:343.49,344.12 1 0 -github.com/ethereum/go-ethereum/node/config.go:347.4,347.18 1 0 -github.com/ethereum/go-ethereum/node/config.go:344.12,346.5 1 0 -github.com/ethereum/go-ethereum/node/config.go:353.39,354.21 1 1 -github.com/ethereum/go-ethereum/node/config.go:357.2,357.43 1 1 -github.com/ethereum/go-ethereum/node/config.go:354.21,356.3 1 0 -github.com/ethereum/go-ethereum/node/config.go:363.46,365.29 1 1 -github.com/ethereum/go-ethereum/node/config.go:369.2,369.21 1 1 -github.com/ethereum/go-ethereum/node/config.go:377.2,378.55 2 1 -github.com/ethereum/go-ethereum/node/config.go:382.2,383.16 2 1 -github.com/ethereum/go-ethereum/node/config.go:386.2,387.55 2 1 -github.com/ethereum/go-ethereum/node/config.go:391.2,392.55 2 1 -github.com/ethereum/go-ethereum/node/config.go:395.2,395.12 1 1 -github.com/ethereum/go-ethereum/node/config.go:365.29,367.3 1 1 -github.com/ethereum/go-ethereum/node/config.go:369.21,371.17 2 1 -github.com/ethereum/go-ethereum/node/config.go:374.3,374.13 1 1 -github.com/ethereum/go-ethereum/node/config.go:371.17,373.4 1 0 -github.com/ethereum/go-ethereum/node/config.go:378.55,380.3 1 1 -github.com/ethereum/go-ethereum/node/config.go:383.16,385.3 1 0 -github.com/ethereum/go-ethereum/node/config.go:387.55,390.3 2 0 -github.com/ethereum/go-ethereum/node/config.go:392.55,394.3 1 0 -github.com/ethereum/go-ethereum/node/config.go:399.46,401.2 1 1 -github.com/ethereum/go-ethereum/node/config.go:404.47,406.2 1 1 -github.com/ethereum/go-ethereum/node/config.go:410.75,412.21 1 1 -github.com/ethereum/go-ethereum/node/config.go:415.2,415.41 1 1 -github.com/ethereum/go-ethereum/node/config.go:418.2,422.57 3 0 -github.com/ethereum/go-ethereum/node/config.go:427.2,428.31 2 0 -github.com/ethereum/go-ethereum/node/config.go:439.2,439.14 1 0 -github.com/ethereum/go-ethereum/node/config.go:412.21,414.3 1 1 -github.com/ethereum/go-ethereum/node/config.go:415.41,417.3 1 1 -github.com/ethereum/go-ethereum/node/config.go:422.57,425.3 2 0 -github.com/ethereum/go-ethereum/node/config.go:428.31,429.16 1 0 -github.com/ethereum/go-ethereum/node/config.go:432.3,433.17 2 0 -github.com/ethereum/go-ethereum/node/config.go:437.3,437.30 1 0 -github.com/ethereum/go-ethereum/node/config.go:429.16,430.12 1 0 -github.com/ethereum/go-ethereum/node/config.go:433.17,435.12 2 0 -github.com/ethereum/go-ethereum/node/config.go:443.49,448.9 2 1 -github.com/ethereum/go-ethereum/node/config.go:460.2,460.20 1 1 -github.com/ethereum/go-ethereum/node/config.go:449.37,450.25 1 0 -github.com/ethereum/go-ethereum/node/config.go:451.23,452.26 1 1 -github.com/ethereum/go-ethereum/node/config.go:457.27,458.44 1 0 -github.com/ethereum/go-ethereum/node/config.go:452.26,454.4 1 1 -github.com/ethereum/go-ethereum/node/config.go:454.9,456.4 1 0 -github.com/ethereum/go-ethereum/node/config.go:465.57,467.16 2 1 -github.com/ethereum/go-ethereum/node/config.go:470.2,471.18 2 1 -github.com/ethereum/go-ethereum/node/config.go:477.2,477.16 1 1 -github.com/ethereum/go-ethereum/node/config.go:480.2,480.50 1 1 -github.com/ethereum/go-ethereum/node/config.go:484.2,484.33 1 1 -github.com/ethereum/go-ethereum/node/config.go:467.16,469.3 1 0 -github.com/ethereum/go-ethereum/node/config.go:471.18,475.3 2 1 -github.com/ethereum/go-ethereum/node/config.go:477.16,479.3 1 0 -github.com/ethereum/go-ethereum/node/config.go:480.50,482.3 1 0 -github.com/ethereum/go-ethereum/node/config.go:489.72,493.8 3 0 -github.com/ethereum/go-ethereum/node/config.go:496.2,497.14 2 0 -github.com/ethereum/go-ethereum/node/config.go:500.2,501.11 2 0 -github.com/ethereum/go-ethereum/node/config.go:493.8,495.3 1 0 -github.com/ethereum/go-ethereum/node/config.go:497.14,499.3 1 0 -github.com/ethereum/go-ethereum/node/endpoints.go:29.122,35.61 2 0 -github.com/ethereum/go-ethereum/node/endpoints.go:39.2,48.38 4 0 -github.com/ethereum/go-ethereum/node/endpoints.go:35.61,37.3 1 0 -github.com/ethereum/go-ethereum/node/endpoints.go:54.90,56.27 2 1 -github.com/ethereum/go-ethereum/node/endpoints.go:62.2,62.31 1 1 -github.com/ethereum/go-ethereum/node/endpoints.go:69.2,69.23 1 1 -github.com/ethereum/go-ethereum/node/endpoints.go:56.27,57.48 1 1 -github.com/ethereum/go-ethereum/node/endpoints.go:57.48,60.4 2 1 -github.com/ethereum/go-ethereum/node/endpoints.go:62.31,63.39 1 0 -github.com/ethereum/go-ethereum/node/endpoints.go:63.39,64.56 1 0 -github.com/ethereum/go-ethereum/node/endpoints.go:64.56,66.5 1 0 -github.com/ethereum/go-ethereum/node/endpoints.go:73.48,74.40 1 1 -github.com/ethereum/go-ethereum/node/endpoints.go:78.2,78.41 1 1 -github.com/ethereum/go-ethereum/node/endpoints.go:82.2,82.40 1 1 -github.com/ethereum/go-ethereum/node/endpoints.go:74.40,77.3 2 0 -github.com/ethereum/go-ethereum/node/endpoints.go:78.41,81.3 2 0 -github.com/ethereum/go-ethereum/node/endpoints.go:82.40,85.3 2 0 -github.com/ethereum/go-ethereum/node/errors.go:35.44,36.77 1 1 -github.com/ethereum/go-ethereum/node/errors.go:39.2,39.12 1 0 -github.com/ethereum/go-ethereum/node/errors.go:36.77,38.3 1 1 -github.com/ethereum/go-ethereum/node/errors.go:50.36,52.2 1 0 -github.com/ethereum/go-ethereum/node/node.go:76.39,81.24 3 1 -github.com/ethereum/go-ethereum/node/node.go:88.2,88.24 1 1 -github.com/ethereum/go-ethereum/node/node.go:94.2,94.42 1 1 -github.com/ethereum/go-ethereum/node/node.go:97.2,97.41 1 1 -github.com/ethereum/go-ethereum/node/node.go:100.2,100.42 1 1 -github.com/ethereum/go-ethereum/node/node.go:104.2,118.43 3 1 -github.com/ethereum/go-ethereum/node/node.go:121.2,122.16 2 1 -github.com/ethereum/go-ethereum/node/node.go:125.2,135.43 7 1 -github.com/ethereum/go-ethereum/node/node.go:138.2,138.44 1 1 -github.com/ethereum/go-ethereum/node/node.go:141.2,141.43 1 1 -github.com/ethereum/go-ethereum/node/node.go:146.2,146.68 1 1 -github.com/ethereum/go-ethereum/node/node.go:149.2,149.71 1 1 -github.com/ethereum/go-ethereum/node/node.go:154.2,160.18 6 1 -github.com/ethereum/go-ethereum/node/node.go:81.24,83.17 2 1 -github.com/ethereum/go-ethereum/node/node.go:86.3,86.28 1 1 -github.com/ethereum/go-ethereum/node/node.go:83.17,85.4 1 0 -github.com/ethereum/go-ethereum/node/node.go:88.24,90.3 1 1 -github.com/ethereum/go-ethereum/node/node.go:94.42,96.3 1 0 -github.com/ethereum/go-ethereum/node/node.go:97.41,99.3 1 0 -github.com/ethereum/go-ethereum/node/node.go:100.42,102.3 1 0 -github.com/ethereum/go-ethereum/node/node.go:118.43,120.3 1 1 -github.com/ethereum/go-ethereum/node/node.go:122.16,124.3 1 0 -github.com/ethereum/go-ethereum/node/node.go:135.43,137.3 1 1 -github.com/ethereum/go-ethereum/node/node.go:138.44,140.3 1 1 -github.com/ethereum/go-ethereum/node/node.go:141.43,143.3 1 1 -github.com/ethereum/go-ethereum/node/node.go:146.68,148.3 1 0 -github.com/ethereum/go-ethereum/node/node.go:149.71,151.3 1 0 -github.com/ethereum/go-ethereum/node/node.go:165.30,170.17 4 1 -github.com/ethereum/go-ethereum/node/node.go:178.2,186.16 6 1 -github.com/ethereum/go-ethereum/node/node.go:191.2,192.39 2 1 -github.com/ethereum/go-ethereum/node/node.go:199.2,199.16 1 1 -github.com/ethereum/go-ethereum/node/node.go:203.2,203.12 1 1 -github.com/ethereum/go-ethereum/node/node.go:171.20,173.24 2 1 -github.com/ethereum/go-ethereum/node/node.go:174.19,176.24 2 0 -github.com/ethereum/go-ethereum/node/node.go:186.16,189.3 2 0 -github.com/ethereum/go-ethereum/node/node.go:192.39,193.42 1 1 -github.com/ethereum/go-ethereum/node/node.go:196.3,196.39 1 1 -github.com/ethereum/go-ethereum/node/node.go:193.42,194.9 1 1 -github.com/ethereum/go-ethereum/node/node.go:199.16,202.3 2 1 -github.com/ethereum/go-ethereum/node/node.go:208.30,215.15 6 1 -github.com/ethereum/go-ethereum/node/node.go:216.25,218.24 1 1 -github.com/ethereum/go-ethereum/node/node.go:219.20,222.54 2 1 -github.com/ethereum/go-ethereum/node/node.go:225.3,225.25 1 1 -github.com/ethereum/go-ethereum/node/node.go:226.19,227.24 1 1 -github.com/ethereum/go-ethereum/node/node.go:228.10,229.59 1 0 -github.com/ethereum/go-ethereum/node/node.go:222.54,224.4 1 1 -github.com/ethereum/go-ethereum/node/node.go:234.44,242.41 5 1 -github.com/ethereum/go-ethereum/node/node.go:245.2,245.18 1 1 -github.com/ethereum/go-ethereum/node/node.go:252.2,258.19 3 1 -github.com/ethereum/go-ethereum/node/node.go:242.41,244.3 1 0 -github.com/ethereum/go-ethereum/node/node.go:245.18,246.48 1 1 -github.com/ethereum/go-ethereum/node/node.go:246.48,248.4 1 0 -github.com/ethereum/go-ethereum/node/node.go:259.9,260.13 1 1 -github.com/ethereum/go-ethereum/node/node.go:261.9,262.17 1 1 -github.com/ethereum/go-ethereum/node/node.go:263.10,264.32 1 0 -github.com/ethereum/go-ethereum/node/node.go:269.38,272.41 2 1 -github.com/ethereum/go-ethereum/node/node.go:276.2,277.16 2 1 -github.com/ethereum/go-ethereum/node/node.go:281.2,281.12 1 1 -github.com/ethereum/go-ethereum/node/node.go:272.41,274.3 1 0 -github.com/ethereum/go-ethereum/node/node.go:277.16,280.3 2 0 -github.com/ethereum/go-ethereum/node/node.go:285.59,286.26 1 1 -github.com/ethereum/go-ethereum/node/node.go:291.2,291.14 1 1 -github.com/ethereum/go-ethereum/node/node.go:286.26,287.15 1 1 -github.com/ethereum/go-ethereum/node/node.go:287.15,289.4 1 1 -github.com/ethereum/go-ethereum/node/node.go:296.56,301.41 3 1 -github.com/ethereum/go-ethereum/node/node.go:308.2,310.31 2 1 -github.com/ethereum/go-ethereum/node/node.go:313.2,313.12 1 1 -github.com/ethereum/go-ethereum/node/node.go:301.41,302.43 1 1 -github.com/ethereum/go-ethereum/node/node.go:302.43,304.4 1 1 -github.com/ethereum/go-ethereum/node/node.go:310.31,312.3 1 1 -github.com/ethereum/go-ethereum/node/node.go:316.36,317.28 1 1 -github.com/ethereum/go-ethereum/node/node.go:321.2,322.51 2 1 -github.com/ethereum/go-ethereum/node/node.go:327.2,328.16 2 1 -github.com/ethereum/go-ethereum/node/node.go:331.2,332.12 2 1 -github.com/ethereum/go-ethereum/node/node.go:317.28,319.3 1 1 -github.com/ethereum/go-ethereum/node/node.go:322.51,324.3 1 1 -github.com/ethereum/go-ethereum/node/node.go:328.16,330.3 1 1 -github.com/ethereum/go-ethereum/node/node.go:335.31,337.22 1 1 -github.com/ethereum/go-ethereum/node/node.go:337.22,338.45 1 1 -github.com/ethereum/go-ethereum/node/node.go:341.3,341.18 1 1 -github.com/ethereum/go-ethereum/node/node.go:338.45,340.4 1 0 -github.com/ethereum/go-ethereum/node/node.go:348.65,350.24 2 0 -github.com/ethereum/go-ethereum/node/node.go:355.2,356.52 2 0 -github.com/ethereum/go-ethereum/node/node.go:365.2,368.20 3 0 -github.com/ethereum/go-ethereum/node/node.go:372.2,372.88 1 0 -github.com/ethereum/go-ethereum/node/node.go:375.2,376.23 2 0 -github.com/ethereum/go-ethereum/node/node.go:350.24,353.3 1 0 -github.com/ethereum/go-ethereum/node/node.go:356.52,358.27 2 0 -github.com/ethereum/go-ethereum/node/node.go:361.3,362.47 2 0 -github.com/ethereum/go-ethereum/node/node.go:358.27,360.4 1 0 -github.com/ethereum/go-ethereum/node/node.go:368.20,371.3 2 0 -github.com/ethereum/go-ethereum/node/node.go:372.88,374.3 1 0 -github.com/ethereum/go-ethereum/node/node.go:382.33,383.40 1 1 -github.com/ethereum/go-ethereum/node/node.go:388.2,388.26 1 1 -github.com/ethereum/go-ethereum/node/node.go:393.2,398.71 2 1 -github.com/ethereum/go-ethereum/node/node.go:414.2,414.49 1 1 -github.com/ethereum/go-ethereum/node/node.go:430.2,430.66 1 1 -github.com/ethereum/go-ethereum/node/node.go:464.2,464.29 1 1 -github.com/ethereum/go-ethereum/node/node.go:471.2,471.27 1 1 -github.com/ethereum/go-ethereum/node/node.go:478.2,478.27 1 1 -github.com/ethereum/go-ethereum/node/node.go:488.2,488.33 1 1 -github.com/ethereum/go-ethereum/node/node.go:493.2,493.12 1 1 -github.com/ethereum/go-ethereum/node/node.go:383.40,385.3 1 0 -github.com/ethereum/go-ethereum/node/node.go:388.26,389.48 1 0 -github.com/ethereum/go-ethereum/node/node.go:389.48,391.4 1 0 -github.com/ethereum/go-ethereum/node/node.go:398.71,399.71 1 1 -github.com/ethereum/go-ethereum/node/node.go:402.3,407.18 1 1 -github.com/ethereum/go-ethereum/node/node.go:410.3,411.13 2 1 -github.com/ethereum/go-ethereum/node/node.go:399.71,401.4 1 0 -github.com/ethereum/go-ethereum/node/node.go:407.18,409.4 1 0 -github.com/ethereum/go-ethereum/node/node.go:414.49,416.69 2 1 -github.com/ethereum/go-ethereum/node/node.go:419.3,423.18 1 1 -github.com/ethereum/go-ethereum/node/node.go:426.3,427.13 2 1 -github.com/ethereum/go-ethereum/node/node.go:416.69,418.4 1 0 -github.com/ethereum/go-ethereum/node/node.go:423.18,425.4 1 0 -github.com/ethereum/go-ethereum/node/node.go:430.66,433.71 2 0 -github.com/ethereum/go-ethereum/node/node.go:436.3,442.18 1 0 -github.com/ethereum/go-ethereum/node/node.go:445.3,448.71 3 0 -github.com/ethereum/go-ethereum/node/node.go:451.3,456.18 1 0 -github.com/ethereum/go-ethereum/node/node.go:459.3,460.13 2 0 -github.com/ethereum/go-ethereum/node/node.go:433.71,435.4 1 0 -github.com/ethereum/go-ethereum/node/node.go:442.18,444.4 1 0 -github.com/ethereum/go-ethereum/node/node.go:448.71,450.4 1 0 -github.com/ethereum/go-ethereum/node/node.go:456.18,458.4 1 0 -github.com/ethereum/go-ethereum/node/node.go:464.29,466.67 1 1 -github.com/ethereum/go-ethereum/node/node.go:466.67,468.4 1 0 -github.com/ethereum/go-ethereum/node/node.go:471.27,473.55 1 1 -github.com/ethereum/go-ethereum/node/node.go:473.55,475.4 1 0 -github.com/ethereum/go-ethereum/node/node.go:478.27,480.17 2 0 -github.com/ethereum/go-ethereum/node/node.go:483.3,483.69 1 0 -github.com/ethereum/go-ethereum/node/node.go:480.17,482.4 1 0 -github.com/ethereum/go-ethereum/node/node.go:483.69,485.4 1 0 -github.com/ethereum/go-ethereum/node/node.go:488.33,489.40 1 1 -github.com/ethereum/go-ethereum/node/node.go:489.40,491.4 1 0 -github.com/ethereum/go-ethereum/node/node.go:496.74,498.19 2 1 -github.com/ethereum/go-ethereum/node/node.go:501.2,501.56 1 1 -github.com/ethereum/go-ethereum/node/node.go:504.2,504.17 1 1 -github.com/ethereum/go-ethereum/node/node.go:498.19,500.3 1 0 -github.com/ethereum/go-ethereum/node/node.go:501.56,503.3 1 1 -github.com/ethereum/go-ethereum/node/node.go:507.26,514.2 6 1 -github.com/ethereum/go-ethereum/node/node.go:517.36,518.32 1 1 -github.com/ethereum/go-ethereum/node/node.go:523.2,523.12 1 1 -github.com/ethereum/go-ethereum/node/node.go:518.32,519.82 1 1 -github.com/ethereum/go-ethereum/node/node.go:519.82,521.4 1 0 -github.com/ethereum/go-ethereum/node/node.go:527.29,529.2 1 1 -github.com/ethereum/go-ethereum/node/node.go:532.23,534.2 1 0 -github.com/ethereum/go-ethereum/node/node.go:537.55,541.34 3 1 -github.com/ethereum/go-ethereum/node/node.go:544.2,544.48 1 1 -github.com/ethereum/go-ethereum/node/node.go:547.2,547.48 1 1 -github.com/ethereum/go-ethereum/node/node.go:541.34,542.60 1 0 -github.com/ethereum/go-ethereum/node/node.go:544.48,545.83 1 0 -github.com/ethereum/go-ethereum/node/node.go:551.60,555.34 3 1 -github.com/ethereum/go-ethereum/node/node.go:558.2,558.63 1 1 -github.com/ethereum/go-ethereum/node/node.go:555.34,556.60 1 0 -github.com/ethereum/go-ethereum/node/node.go:562.45,566.34 3 1 -github.com/ethereum/go-ethereum/node/node.go:569.2,569.40 1 1 -github.com/ethereum/go-ethereum/node/node.go:566.34,567.55 1 0 -github.com/ethereum/go-ethereum/node/node.go:574.59,575.32 1 1 -github.com/ethereum/go-ethereum/node/node.go:580.2,580.35 1 1 -github.com/ethereum/go-ethereum/node/node.go:575.32,576.25 1 1 -github.com/ethereum/go-ethereum/node/node.go:576.25,578.4 1 1 -github.com/ethereum/go-ethereum/node/node.go:587.73,591.34 3 1 -github.com/ethereum/go-ethereum/node/node.go:595.2,596.34 2 1 -github.com/ethereum/go-ethereum/node/node.go:591.34,592.63 1 0 -github.com/ethereum/go-ethereum/node/node.go:600.46,602.2 1 0 -github.com/ethereum/go-ethereum/node/node.go:605.50,609.28 3 0 -github.com/ethereum/go-ethereum/node/node.go:612.2,612.29 1 0 -github.com/ethereum/go-ethereum/node/node.go:609.28,611.3 1 0 -github.com/ethereum/go-ethereum/node/node.go:616.33,618.2 1 0 -github.com/ethereum/go-ethereum/node/node.go:623.37,628.2 3 0 -github.com/ethereum/go-ethereum/node/node.go:632.33,634.2 1 0 -github.com/ethereum/go-ethereum/node/node.go:637.37,639.2 1 0 -github.com/ethereum/go-ethereum/node/node.go:642.37,644.2 1 0 -github.com/ethereum/go-ethereum/node/node.go:647.51,649.2 1 0 -github.com/ethereum/go-ethereum/node/node.go:652.37,654.2 1 0 -github.com/ethereum/go-ethereum/node/node.go:658.38,660.2 1 1 -github.com/ethereum/go-ethereum/node/node.go:663.36,664.24 1 1 -github.com/ethereum/go-ethereum/node/node.go:667.2,667.59 1 1 -github.com/ethereum/go-ethereum/node/node.go:664.24,666.3 1 1 -github.com/ethereum/go-ethereum/node/node.go:672.42,674.2 1 0 -github.com/ethereum/go-ethereum/node/node.go:679.119,682.28 3 1 -github.com/ethereum/go-ethereum/node/node.go:686.2,688.28 3 1 -github.com/ethereum/go-ethereum/node/node.go:694.2,694.16 1 1 -github.com/ethereum/go-ethereum/node/node.go:697.2,697.16 1 1 -github.com/ethereum/go-ethereum/node/node.go:682.28,684.3 1 0 -github.com/ethereum/go-ethereum/node/node.go:688.28,690.3 1 1 -github.com/ethereum/go-ethereum/node/node.go:690.8,692.3 1 0 -github.com/ethereum/go-ethereum/node/node.go:694.16,696.3 1 1 -github.com/ethereum/go-ethereum/node/node.go:705.139,708.28 3 0 -github.com/ethereum/go-ethereum/node/node.go:712.2,714.28 3 0 -github.com/ethereum/go-ethereum/node/node.go:727.2,727.16 1 0 -github.com/ethereum/go-ethereum/node/node.go:730.2,730.16 1 0 -github.com/ethereum/go-ethereum/node/node.go:708.28,710.3 1 0 -github.com/ethereum/go-ethereum/node/node.go:714.28,716.3 1 0 -github.com/ethereum/go-ethereum/node/node.go:716.8,718.10 2 0 -github.com/ethereum/go-ethereum/node/node.go:724.3,724.100 1 0 -github.com/ethereum/go-ethereum/node/node.go:719.22,720.44 1 0 -github.com/ethereum/go-ethereum/node/node.go:721.33,722.36 1 0 -github.com/ethereum/go-ethereum/node/node.go:727.16,729.3 1 0 -github.com/ethereum/go-ethereum/node/node.go:734.45,736.2 1 0 -github.com/ethereum/go-ethereum/node/node.go:746.42,751.2 4 1 -github.com/ethereum/go-ethereum/node/node.go:754.63,758.2 3 1 -github.com/ethereum/go-ethereum/node/node.go:761.50,762.30 1 1 -github.com/ethereum/go-ethereum/node/node.go:768.2,768.15 1 1 -github.com/ethereum/go-ethereum/node/node.go:762.30,764.45 2 1 -github.com/ethereum/go-ethereum/node/node.go:764.45,766.4 1 0 -github.com/ethereum/go-ethereum/node/api.go:34.33,56.2 1 1 -github.com/ethereum/go-ethereum/node/api.go:66.63,69.19 2 0 -github.com/ethereum/go-ethereum/node/api.go:73.2,74.16 2 0 -github.com/ethereum/go-ethereum/node/api.go:77.2,78.18 2 0 -github.com/ethereum/go-ethereum/node/api.go:69.19,71.3 1 0 -github.com/ethereum/go-ethereum/node/api.go:74.16,76.3 1 0 -github.com/ethereum/go-ethereum/node/api.go:82.66,85.19 2 0 -github.com/ethereum/go-ethereum/node/api.go:89.2,90.16 2 0 -github.com/ethereum/go-ethereum/node/api.go:93.2,94.18 2 0 -github.com/ethereum/go-ethereum/node/api.go:85.19,87.3 1 0 -github.com/ethereum/go-ethereum/node/api.go:90.16,92.3 1 0 -github.com/ethereum/go-ethereum/node/api.go:98.70,101.19 2 0 -github.com/ethereum/go-ethereum/node/api.go:104.2,105.16 2 0 -github.com/ethereum/go-ethereum/node/api.go:108.2,109.18 2 0 -github.com/ethereum/go-ethereum/node/api.go:101.19,103.3 1 0 -github.com/ethereum/go-ethereum/node/api.go:105.16,107.3 1 0 -github.com/ethereum/go-ethereum/node/api.go:114.73,117.19 2 0 -github.com/ethereum/go-ethereum/node/api.go:120.2,121.16 2 0 -github.com/ethereum/go-ethereum/node/api.go:124.2,125.18 2 0 -github.com/ethereum/go-ethereum/node/api.go:117.19,119.3 1 0 -github.com/ethereum/go-ethereum/node/api.go:121.16,123.3 1 0 -github.com/ethereum/go-ethereum/node/api.go:130.88,133.19 2 0 -github.com/ethereum/go-ethereum/node/api.go:138.2,139.16 2 0 -github.com/ethereum/go-ethereum/node/api.go:142.2,144.12 2 0 -github.com/ethereum/go-ethereum/node/api.go:163.2,163.20 1 0 -github.com/ethereum/go-ethereum/node/api.go:133.19,135.3 1 0 -github.com/ethereum/go-ethereum/node/api.go:139.16,141.3 1 0 -github.com/ethereum/go-ethereum/node/api.go:144.12,149.7 4 0 -github.com/ethereum/go-ethereum/node/api.go:149.7,150.11 1 0 -github.com/ethereum/go-ethereum/node/api.go:151.27,152.38 1 0 -github.com/ethereum/go-ethereum/node/api.go:153.21,154.11 1 0 -github.com/ethereum/go-ethereum/node/api.go:155.24,156.11 1 0 -github.com/ethereum/go-ethereum/node/api.go:157.29,158.11 1 0 -github.com/ethereum/go-ethereum/node/api.go:167.122,172.17 3 1 -github.com/ethereum/go-ethereum/node/api.go:179.2,179.17 1 1 -github.com/ethereum/go-ethereum/node/api.go:184.2,189.17 2 1 -github.com/ethereum/go-ethereum/node/api.go:195.2,195.19 1 1 -github.com/ethereum/go-ethereum/node/api.go:201.2,201.17 1 1 -github.com/ethereum/go-ethereum/node/api.go:208.2,208.66 1 1 -github.com/ethereum/go-ethereum/node/api.go:211.2,211.74 1 1 -github.com/ethereum/go-ethereum/node/api.go:214.2,214.46 1 1 -github.com/ethereum/go-ethereum/node/api.go:217.2,217.18 1 1 -github.com/ethereum/go-ethereum/node/api.go:172.17,174.37 2 0 -github.com/ethereum/go-ethereum/node/api.go:177.3,177.12 1 0 -github.com/ethereum/go-ethereum/node/api.go:174.37,176.4 1 0 -github.com/ethereum/go-ethereum/node/api.go:179.17,181.3 1 0 -github.com/ethereum/go-ethereum/node/api.go:189.17,191.52 2 0 -github.com/ethereum/go-ethereum/node/api.go:191.52,193.4 1 0 -github.com/ethereum/go-ethereum/node/api.go:195.19,197.51 2 0 -github.com/ethereum/go-ethereum/node/api.go:197.51,199.4 1 0 -github.com/ethereum/go-ethereum/node/api.go:201.17,203.47 2 0 -github.com/ethereum/go-ethereum/node/api.go:203.47,205.4 1 0 -github.com/ethereum/go-ethereum/node/api.go:208.66,210.3 1 0 -github.com/ethereum/go-ethereum/node/api.go:211.74,213.3 1 0 -github.com/ethereum/go-ethereum/node/api.go:214.46,216.3 1 1 -github.com/ethereum/go-ethereum/node/api.go:222.121,225.2 2 0 -github.com/ethereum/go-ethereum/node/api.go:228.54,231.2 2 1 -github.com/ethereum/go-ethereum/node/api.go:235.53,238.2 2 0 -github.com/ethereum/go-ethereum/node/api.go:241.114,246.17 3 1 -github.com/ethereum/go-ethereum/node/api.go:253.2,253.17 1 1 -github.com/ethereum/go-ethereum/node/api.go:258.2,263.17 2 1 -github.com/ethereum/go-ethereum/node/api.go:269.2,269.27 1 1 -github.com/ethereum/go-ethereum/node/api.go:277.2,278.59 2 1 -github.com/ethereum/go-ethereum/node/api.go:281.2,282.58 2 1 -github.com/ethereum/go-ethereum/node/api.go:285.2,285.39 1 1 -github.com/ethereum/go-ethereum/node/api.go:288.2,289.18 2 1 -github.com/ethereum/go-ethereum/node/api.go:246.17,248.35 2 0 -github.com/ethereum/go-ethereum/node/api.go:251.3,251.12 1 0 -github.com/ethereum/go-ethereum/node/api.go:248.35,250.4 1 0 -github.com/ethereum/go-ethereum/node/api.go:253.17,255.3 1 0 -github.com/ethereum/go-ethereum/node/api.go:263.17,265.47 2 0 -github.com/ethereum/go-ethereum/node/api.go:265.47,267.4 1 0 -github.com/ethereum/go-ethereum/node/api.go:269.27,271.62 2 0 -github.com/ethereum/go-ethereum/node/api.go:271.62,273.4 1 0 -github.com/ethereum/go-ethereum/node/api.go:278.59,280.3 1 0 -github.com/ethereum/go-ethereum/node/api.go:282.58,284.3 1 0 -github.com/ethereum/go-ethereum/node/api.go:285.39,287.3 1 0 -github.com/ethereum/go-ethereum/node/api.go:293.52,297.2 3 1 -github.com/ethereum/go-ethereum/node/api.go:307.61,309.19 2 0 -github.com/ethereum/go-ethereum/node/api.go:312.2,312.32 1 0 -github.com/ethereum/go-ethereum/node/api.go:309.19,311.3 1 0 -github.com/ethereum/go-ethereum/node/api.go:317.62,319.19 2 0 -github.com/ethereum/go-ethereum/node/api.go:322.2,322.31 1 0 -github.com/ethereum/go-ethereum/node/api.go:319.19,321.3 1 0 -github.com/ethereum/go-ethereum/node/api.go:326.45,328.2 1 0 -github.com/ethereum/go-ethereum/node/api.go:336.48,338.2 1 0 -github.com/ethereum/go-ethereum/node/api.go:342.65,344.2 1 0 -github.com/ethereum/go-ethereum/node/defaults.go:71.30,74.16 2 1 -github.com/ethereum/go-ethereum/node/defaults.go:93.2,93.11 1 0 -github.com/ethereum/go-ethereum/node/defaults.go:74.16,75.23 1 1 -github.com/ethereum/go-ethereum/node/defaults.go:76.17,77.53 1 1 -github.com/ethereum/go-ethereum/node/defaults.go:78.18,84.48 3 0 -github.com/ethereum/go-ethereum/node/defaults.go:87.4,87.45 1 0 -github.com/ethereum/go-ethereum/node/defaults.go:88.11,89.43 1 0 -github.com/ethereum/go-ethereum/node/defaults.go:84.48,86.5 1 0 -github.com/ethereum/go-ethereum/node/defaults.go:96.30,98.13 2 0 -github.com/ethereum/go-ethereum/node/defaults.go:104.2,104.10 1 0 -github.com/ethereum/go-ethereum/node/defaults.go:98.13,102.58 1 0 -github.com/ethereum/go-ethereum/node/defaults.go:107.37,109.16 2 0 -github.com/ethereum/go-ethereum/node/defaults.go:112.2,114.23 3 0 -github.com/ethereum/go-ethereum/node/defaults.go:109.16,111.3 1 0 -github.com/ethereum/go-ethereum/node/defaults.go:117.23,118.43 1 1 -github.com/ethereum/go-ethereum/node/defaults.go:121.2,121.44 1 0 -github.com/ethereum/go-ethereum/node/defaults.go:124.2,124.11 1 0 -github.com/ethereum/go-ethereum/node/defaults.go:118.43,120.3 1 1 -github.com/ethereum/go-ethereum/node/defaults.go:121.44,123.3 1 0 -github.com/ethereum/go-ethereum/node/jwt_handler.go:33.67,35.56 1 1 -github.com/ethereum/go-ethereum/node/jwt_handler.go:35.56,37.4 1 1 -github.com/ethereum/go-ethereum/node/jwt_handler.go:43.80,48.79 2 1 -github.com/ethereum/go-ethereum/node/jwt_handler.go:51.2,51.24 1 1 -github.com/ethereum/go-ethereum/node/jwt_handler.go:58.2,62.9 2 1 -github.com/ethereum/go-ethereum/node/jwt_handler.go:48.79,50.3 1 1 -github.com/ethereum/go-ethereum/node/jwt_handler.go:51.24,54.3 2 1 -github.com/ethereum/go-ethereum/node/jwt_handler.go:63.18,64.53 1 1 -github.com/ethereum/go-ethereum/node/jwt_handler.go:65.20,66.57 1 0 -github.com/ethereum/go-ethereum/node/jwt_handler.go:67.50,68.60 1 1 -github.com/ethereum/go-ethereum/node/jwt_handler.go:69.30,70.61 1 1 -github.com/ethereum/go-ethereum/node/jwt_handler.go:71.56,72.55 1 1 -github.com/ethereum/go-ethereum/node/jwt_handler.go:73.56,74.56 1 1 -github.com/ethereum/go-ethereum/node/jwt_handler.go:75.10,76.33 1 1 -github.com/ethereum/go-ethereum/metrics/graphite.go:27.78,36.2 1 0 -github.com/ethereum/go-ethereum/metrics/graphite.go:40.43,42.39 2 0 -github.com/ethereum/go-ethereum/metrics/graphite.go:42.39,43.38 1 0 -github.com/ethereum/go-ethereum/metrics/graphite.go:43.38,45.4 1 0 -github.com/ethereum/go-ethereum/metrics/graphite.go:52.43,55.2 2 0 -github.com/ethereum/go-ethereum/metrics/graphite.go:57.40,61.16 4 0 -github.com/ethereum/go-ethereum/metrics/graphite.go:64.2,66.51 3 0 -github.com/ethereum/go-ethereum/metrics/graphite.go:112.2,112.12 1 0 -github.com/ethereum/go-ethereum/metrics/graphite.go:61.16,63.3 1 0 -github.com/ethereum/go-ethereum/metrics/graphite.go:66.51,67.29 1 0 -github.com/ethereum/go-ethereum/metrics/graphite.go:110.3,110.12 1 0 -github.com/ethereum/go-ethereum/metrics/graphite.go:68.16,69.78 1 0 -github.com/ethereum/go-ethereum/metrics/graphite.go:70.14,71.78 1 0 -github.com/ethereum/go-ethereum/metrics/graphite.go:72.21,73.78 1 0 -github.com/ethereum/go-ethereum/metrics/graphite.go:74.18,82.44 8 0 -github.com/ethereum/go-ethereum/metrics/graphite.go:86.14,92.77 6 0 -github.com/ethereum/go-ethereum/metrics/graphite.go:93.14,101.44 8 0 -github.com/ethereum/go-ethereum/metrics/graphite.go:105.4,108.82 4 0 -github.com/ethereum/go-ethereum/metrics/graphite.go:82.44,85.5 2 0 -github.com/ethereum/go-ethereum/metrics/graphite.go:101.44,104.5 2 0 -github.com/ethereum/go-ethereum/metrics/healthcheck.go:13.54,14.14 1 0 -github.com/ethereum/go-ethereum/metrics/healthcheck.go:17.2,17.37 1 0 -github.com/ethereum/go-ethereum/metrics/healthcheck.go:14.14,16.3 1 0 -github.com/ethereum/go-ethereum/metrics/healthcheck.go:24.32,24.33 0 0 -github.com/ethereum/go-ethereum/metrics/healthcheck.go:27.37,27.51 1 0 -github.com/ethereum/go-ethereum/metrics/healthcheck.go:30.34,30.35 0 0 -github.com/ethereum/go-ethereum/metrics/healthcheck.go:33.41,33.42 0 0 -github.com/ethereum/go-ethereum/metrics/healthcheck.go:43.39,45.2 1 0 -github.com/ethereum/go-ethereum/metrics/healthcheck.go:48.45,50.2 1 0 -github.com/ethereum/go-ethereum/metrics/healthcheck.go:53.41,55.2 1 0 -github.com/ethereum/go-ethereum/metrics/healthcheck.go:59.52,61.2 1 0 -github.com/ethereum/go-ethereum/metrics/meter.go:26.56,27.14 1 1 -github.com/ethereum/go-ethereum/metrics/meter.go:30.2,30.48 1 1 -github.com/ethereum/go-ethereum/metrics/meter.go:27.14,29.3 1 0 -github.com/ethereum/go-ethereum/metrics/meter.go:37.62,38.14 1 0 -github.com/ethereum/go-ethereum/metrics/meter.go:41.2,41.54 1 0 -github.com/ethereum/go-ethereum/metrics/meter.go:38.14,40.3 1 0 -github.com/ethereum/go-ethereum/metrics/meter.go:46.23,47.14 1 1 -github.com/ethereum/go-ethereum/metrics/meter.go:50.2,54.22 5 1 -github.com/ethereum/go-ethereum/metrics/meter.go:58.2,58.10 1 1 -github.com/ethereum/go-ethereum/metrics/meter.go:47.14,49.3 1 0 -github.com/ethereum/go-ethereum/metrics/meter.go:54.22,57.3 2 1 -github.com/ethereum/go-ethereum/metrics/meter.go:64.29,69.22 5 0 -github.com/ethereum/go-ethereum/metrics/meter.go:73.2,73.10 1 0 -github.com/ethereum/go-ethereum/metrics/meter.go:69.22,72.3 2 0 -github.com/ethereum/go-ethereum/metrics/meter.go:80.56,82.14 2 1 -github.com/ethereum/go-ethereum/metrics/meter.go:85.2,86.10 2 1 -github.com/ethereum/go-ethereum/metrics/meter.go:82.14,84.3 1 0 -github.com/ethereum/go-ethereum/metrics/meter.go:93.62,95.14 2 0 -github.com/ethereum/go-ethereum/metrics/meter.go:98.2,99.10 2 0 -github.com/ethereum/go-ethereum/metrics/meter.go:95.14,97.3 1 0 -github.com/ethereum/go-ethereum/metrics/meter.go:114.39,114.57 1 0 -github.com/ethereum/go-ethereum/metrics/meter.go:117.37,118.41 1 0 -github.com/ethereum/go-ethereum/metrics/meter.go:123.41,123.59 1 0 -github.com/ethereum/go-ethereum/metrics/meter.go:127.41,127.59 1 0 -github.com/ethereum/go-ethereum/metrics/meter.go:131.42,131.61 1 0 -github.com/ethereum/go-ethereum/metrics/meter.go:135.44,135.65 1 1 -github.com/ethereum/go-ethereum/metrics/meter.go:138.42,138.54 1 0 -github.com/ethereum/go-ethereum/metrics/meter.go:141.33,141.34 0 0 -github.com/ethereum/go-ethereum/metrics/meter.go:147.31,147.43 1 0 -github.com/ethereum/go-ethereum/metrics/meter.go:150.32,150.33 0 0 -github.com/ethereum/go-ethereum/metrics/meter.go:153.33,153.47 1 0 -github.com/ethereum/go-ethereum/metrics/meter.go:156.33,156.47 1 0 -github.com/ethereum/go-ethereum/metrics/meter.go:159.34,159.48 1 0 -github.com/ethereum/go-ethereum/metrics/meter.go:162.36,162.50 1 0 -github.com/ethereum/go-ethereum/metrics/meter.go:165.34,165.55 1 0 -github.com/ethereum/go-ethereum/metrics/meter.go:168.25,168.26 0 0 -github.com/ethereum/go-ethereum/metrics/meter.go:179.40,187.2 1 1 -github.com/ethereum/go-ethereum/metrics/meter.go:190.32,192.18 2 1 -github.com/ethereum/go-ethereum/metrics/meter.go:192.18,196.3 3 1 -github.com/ethereum/go-ethereum/metrics/meter.go:201.39,206.2 4 1 -github.com/ethereum/go-ethereum/metrics/meter.go:209.39,211.2 1 1 -github.com/ethereum/go-ethereum/metrics/meter.go:214.41,218.2 3 1 -github.com/ethereum/go-ethereum/metrics/meter.go:221.41,225.2 3 1 -github.com/ethereum/go-ethereum/metrics/meter.go:228.42,232.2 3 1 -github.com/ethereum/go-ethereum/metrics/meter.go:235.44,239.2 3 1 -github.com/ethereum/go-ethereum/metrics/meter.go:242.42,247.2 4 1 -github.com/ethereum/go-ethereum/metrics/meter.go:249.42,256.2 5 1 -github.com/ethereum/go-ethereum/metrics/meter.go:258.39,265.2 5 1 -github.com/ethereum/go-ethereum/metrics/meter.go:267.32,275.2 7 1 -github.com/ethereum/go-ethereum/metrics/meter.go:289.32,290.24 1 1 -github.com/ethereum/go-ethereum/metrics/meter.go:290.24,292.3 1 1 -github.com/ethereum/go-ethereum/metrics/meter.go:295.38,298.31 3 1 -github.com/ethereum/go-ethereum/metrics/meter.go:298.31,300.3 1 1 -github.com/ethereum/go-ethereum/metrics/opentsdb.go:28.78,36.2 1 0 -github.com/ethereum/go-ethereum/metrics/opentsdb.go:40.43,41.39 1 0 -github.com/ethereum/go-ethereum/metrics/opentsdb.go:41.39,42.38 1 0 -github.com/ethereum/go-ethereum/metrics/opentsdb.go:42.38,44.4 1 0 -github.com/ethereum/go-ethereum/metrics/opentsdb.go:48.32,49.25 1 0 -github.com/ethereum/go-ethereum/metrics/opentsdb.go:57.2,57.22 1 0 -github.com/ethereum/go-ethereum/metrics/opentsdb.go:49.25,51.51 2 0 -github.com/ethereum/go-ethereum/metrics/opentsdb.go:51.51,53.4 1 0 -github.com/ethereum/go-ethereum/metrics/opentsdb.go:53.9,55.4 1 0 -github.com/ethereum/go-ethereum/metrics/opentsdb.go:60.40,65.16 5 0 -github.com/ethereum/go-ethereum/metrics/opentsdb.go:68.2,70.51 3 0 -github.com/ethereum/go-ethereum/metrics/opentsdb.go:118.2,118.12 1 0 -github.com/ethereum/go-ethereum/metrics/opentsdb.go:65.16,67.3 1 0 -github.com/ethereum/go-ethereum/metrics/opentsdb.go:70.51,71.29 1 0 -github.com/ethereum/go-ethereum/metrics/opentsdb.go:116.3,116.12 1 0 -github.com/ethereum/go-ethereum/metrics/opentsdb.go:72.16,73.105 1 0 -github.com/ethereum/go-ethereum/metrics/opentsdb.go:74.14,75.105 1 0 -github.com/ethereum/go-ethereum/metrics/opentsdb.go:76.21,77.105 1 0 -github.com/ethereum/go-ethereum/metrics/opentsdb.go:78.18,90.107 12 0 -github.com/ethereum/go-ethereum/metrics/opentsdb.go:91.14,97.104 6 0 -github.com/ethereum/go-ethereum/metrics/opentsdb.go:98.14,114.109 16 0 -github.com/ethereum/go-ethereum/metrics/counter.go:18.60,19.14 1 1 -github.com/ethereum/go-ethereum/metrics/counter.go:22.2,22.52 1 1 -github.com/ethereum/go-ethereum/metrics/counter.go:19.14,21.3 1 0 -github.com/ethereum/go-ethereum/metrics/counter.go:29.66,30.14 1 0 -github.com/ethereum/go-ethereum/metrics/counter.go:33.2,33.58 1 0 -github.com/ethereum/go-ethereum/metrics/counter.go:30.14,32.3 1 0 -github.com/ethereum/go-ethereum/metrics/counter.go:37.27,38.14 1 1 -github.com/ethereum/go-ethereum/metrics/counter.go:41.2,41.28 1 1 -github.com/ethereum/go-ethereum/metrics/counter.go:38.14,40.3 1 0 -github.com/ethereum/go-ethereum/metrics/counter.go:46.33,48.2 1 0 -github.com/ethereum/go-ethereum/metrics/counter.go:51.60,53.14 2 1 -github.com/ethereum/go-ethereum/metrics/counter.go:56.2,57.10 2 1 -github.com/ethereum/go-ethereum/metrics/counter.go:53.14,55.3 1 0 -github.com/ethereum/go-ethereum/metrics/counter.go:64.66,66.14 2 0 -github.com/ethereum/go-ethereum/metrics/counter.go:69.2,70.10 2 0 -github.com/ethereum/go-ethereum/metrics/counter.go:66.14,68.3 1 0 -github.com/ethereum/go-ethereum/metrics/counter.go:77.32,78.44 1 0 -github.com/ethereum/go-ethereum/metrics/counter.go:82.40,82.59 1 1 -github.com/ethereum/go-ethereum/metrics/counter.go:85.35,86.42 1 0 -github.com/ethereum/go-ethereum/metrics/counter.go:90.35,91.42 1 0 -github.com/ethereum/go-ethereum/metrics/counter.go:95.45,95.57 1 0 -github.com/ethereum/go-ethereum/metrics/counter.go:101.28,101.29 0 0 -github.com/ethereum/go-ethereum/metrics/counter.go:104.33,104.45 1 0 -github.com/ethereum/go-ethereum/metrics/counter.go:107.33,107.34 0 0 -github.com/ethereum/go-ethereum/metrics/counter.go:110.33,110.34 0 0 -github.com/ethereum/go-ethereum/metrics/counter.go:113.38,113.61 1 0 -github.com/ethereum/go-ethereum/metrics/counter.go:122.35,124.2 1 1 -github.com/ethereum/go-ethereum/metrics/counter.go:127.41,129.2 1 1 -github.com/ethereum/go-ethereum/metrics/counter.go:132.40,134.2 1 1 -github.com/ethereum/go-ethereum/metrics/counter.go:137.40,139.2 1 1 -github.com/ethereum/go-ethereum/metrics/counter.go:142.46,144.2 1 1 -github.com/ethereum/go-ethereum/metrics/ewma.go:20.34,22.2 1 1 -github.com/ethereum/go-ethereum/metrics/ewma.go:25.22,27.2 1 1 -github.com/ethereum/go-ethereum/metrics/ewma.go:30.22,32.2 1 1 -github.com/ethereum/go-ethereum/metrics/ewma.go:35.23,37.2 1 1 -github.com/ethereum/go-ethereum/metrics/ewma.go:44.38,44.59 1 0 -github.com/ethereum/go-ethereum/metrics/ewma.go:47.39,47.51 1 0 -github.com/ethereum/go-ethereum/metrics/ewma.go:50.28,51.41 1 0 -github.com/ethereum/go-ethereum/metrics/ewma.go:55.35,56.43 1 0 -github.com/ethereum/go-ethereum/metrics/ewma.go:63.31,63.45 1 0 -github.com/ethereum/go-ethereum/metrics/ewma.go:66.32,66.52 1 0 -github.com/ethereum/go-ethereum/metrics/ewma.go:69.24,69.25 0 0 -github.com/ethereum/go-ethereum/metrics/ewma.go:72.33,72.34 0 0 -github.com/ethereum/go-ethereum/metrics/ewma.go:86.39,90.2 3 1 -github.com/ethereum/go-ethereum/metrics/ewma.go:93.40,95.2 1 0 -github.com/ethereum/go-ethereum/metrics/ewma.go:99.31,105.12 6 1 -github.com/ethereum/go-ethereum/metrics/ewma.go:105.12,107.3 1 1 -github.com/ethereum/go-ethereum/metrics/ewma.go:107.8,110.3 2 1 -github.com/ethereum/go-ethereum/metrics/ewma.go:114.40,116.2 1 1 -github.com/ethereum/go-ethereum/metrics/log.go:11.52,13.2 1 0 -github.com/ethereum/go-ethereum/metrics/log.go:17.79,21.28 3 0 -github.com/ethereum/go-ethereum/metrics/log.go:21.28,22.43 1 0 -github.com/ethereum/go-ethereum/metrics/log.go:22.43,23.30 1 0 -github.com/ethereum/go-ethereum/metrics/log.go:24.17,26.53 2 0 -github.com/ethereum/go-ethereum/metrics/log.go:27.15,29.53 2 0 -github.com/ethereum/go-ethereum/metrics/log.go:30.22,32.52 2 0 -github.com/ethereum/go-ethereum/metrics/log.go:33.21,36.52 3 0 -github.com/ethereum/go-ethereum/metrics/log.go:37.19,50.48 13 0 -github.com/ethereum/go-ethereum/metrics/log.go:51.15,58.54 7 0 -github.com/ethereum/go-ethereum/metrics/log.go:59.15,76.54 17 0 -github.com/ethereum/go-ethereum/metrics/metrics.go:38.13,39.30 1 1 -github.com/ethereum/go-ethereum/metrics/metrics.go:39.30,42.40 2 1 -github.com/ethereum/go-ethereum/metrics/metrics.go:48.3,48.49 1 1 -github.com/ethereum/go-ethereum/metrics/metrics.go:42.40,43.35 1 1 -github.com/ethereum/go-ethereum/metrics/metrics.go:43.35,46.5 2 0 -github.com/ethereum/go-ethereum/metrics/metrics.go:48.49,49.44 1 1 -github.com/ethereum/go-ethereum/metrics/metrics.go:49.44,52.5 2 0 -github.com/ethereum/go-ethereum/metrics/metrics.go:59.51,61.14 1 0 -github.com/ethereum/go-ethereum/metrics/metrics.go:64.2,70.37 5 0 -github.com/ethereum/go-ethereum/metrics/metrics.go:76.2,97.20 2 0 -github.com/ethereum/go-ethereum/metrics/metrics.go:61.14,63.3 1 0 -github.com/ethereum/go-ethereum/metrics/metrics.go:70.37,74.3 3 0 -github.com/ethereum/go-ethereum/metrics/metrics.go:97.20,115.49 15 0 -github.com/ethereum/go-ethereum/metrics/metrics.go:124.3,124.22 1 0 -github.com/ethereum/go-ethereum/metrics/metrics.go:115.49,123.4 6 0 -github.com/ethereum/go-ethereum/metrics/sample.go:48.65,49.14 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:52.2,59.10 3 1 -github.com/ethereum/go-ethereum/metrics/sample.go:49.14,51.3 1 0 -github.com/ethereum/go-ethereum/metrics/sample.go:63.34,70.2 6 0 -github.com/ethereum/go-ethereum/metrics/sample.go:74.40,78.2 3 1 -github.com/ethereum/go-ethereum/metrics/sample.go:82.38,84.2 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:87.41,89.2 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:93.38,95.2 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:98.56,100.2 1 0 -github.com/ethereum/go-ethereum/metrics/sample.go:104.62,106.2 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:109.37,113.2 3 1 -github.com/ethereum/go-ethereum/metrics/sample.go:116.44,121.25 5 1 -github.com/ethereum/go-ethereum/metrics/sample.go:124.2,127.3 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:121.25,123.3 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:131.43,133.2 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:136.38,138.2 1 0 -github.com/ethereum/go-ethereum/metrics/sample.go:141.42,143.2 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:146.43,151.25 5 1 -github.com/ethereum/go-ethereum/metrics/sample.go:154.2,154.15 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:151.25,153.3 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:158.45,160.2 1 0 -github.com/ethereum/go-ethereum/metrics/sample.go:164.55,168.40 4 1 -github.com/ethereum/go-ethereum/metrics/sample.go:171.2,175.19 2 1 -github.com/ethereum/go-ethereum/metrics/sample.go:168.40,170.3 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:175.19,181.28 6 1 -github.com/ethereum/go-ethereum/metrics/sample.go:181.28,184.4 2 1 -github.com/ethereum/go-ethereum/metrics/sample.go:192.27,192.28 0 0 -github.com/ethereum/go-ethereum/metrics/sample.go:195.32,195.44 1 0 -github.com/ethereum/go-ethereum/metrics/sample.go:198.30,198.42 1 0 -github.com/ethereum/go-ethereum/metrics/sample.go:201.33,201.47 1 0 -github.com/ethereum/go-ethereum/metrics/sample.go:204.30,204.42 1 0 -github.com/ethereum/go-ethereum/metrics/sample.go:207.48,207.62 1 0 -github.com/ethereum/go-ethereum/metrics/sample.go:210.54,212.2 1 0 -github.com/ethereum/go-ethereum/metrics/sample.go:215.29,215.41 1 0 -github.com/ethereum/go-ethereum/metrics/sample.go:218.36,218.58 1 0 -github.com/ethereum/go-ethereum/metrics/sample.go:221.35,221.49 1 0 -github.com/ethereum/go-ethereum/metrics/sample.go:224.30,224.42 1 0 -github.com/ethereum/go-ethereum/metrics/sample.go:227.35,227.36 0 0 -github.com/ethereum/go-ethereum/metrics/sample.go:230.35,230.55 1 0 -github.com/ethereum/go-ethereum/metrics/sample.go:233.37,233.51 1 0 -github.com/ethereum/go-ethereum/metrics/sample.go:236.38,237.22 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:240.2,241.27 2 1 -github.com/ethereum/go-ethereum/metrics/sample.go:246.2,246.12 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:237.22,239.3 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:241.27,242.14 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:242.14,244.4 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:250.41,251.22 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:254.2,254.58 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:251.22,253.3 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:258.38,259.22 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:262.2,263.27 2 1 -github.com/ethereum/go-ethereum/metrics/sample.go:268.2,268.12 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:259.22,261.3 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:263.27,264.14 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:264.14,266.4 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:272.61,274.2 1 0 -github.com/ethereum/go-ethereum/metrics/sample.go:278.67,281.14 3 1 -github.com/ethereum/go-ethereum/metrics/sample.go:296.2,296.15 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:281.14,283.24 2 1 -github.com/ethereum/go-ethereum/metrics/sample.go:283.24,285.17 2 1 -github.com/ethereum/go-ethereum/metrics/sample.go:285.17,287.5 1 0 -github.com/ethereum/go-ethereum/metrics/sample.go:287.10,287.35 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:287.35,289.5 1 0 -github.com/ethereum/go-ethereum/metrics/sample.go:289.10,293.5 3 1 -github.com/ethereum/go-ethereum/metrics/sample.go:305.69,310.2 1 0 -github.com/ethereum/go-ethereum/metrics/sample.go:313.32,314.43 1 0 -github.com/ethereum/go-ethereum/metrics/sample.go:318.40,318.58 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:321.38,321.68 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:324.41,324.72 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:327.38,327.68 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:331.56,333.2 1 0 -github.com/ethereum/go-ethereum/metrics/sample.go:337.62,339.2 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:342.37,342.61 1 0 -github.com/ethereum/go-ethereum/metrics/sample.go:345.44,345.56 1 0 -github.com/ethereum/go-ethereum/metrics/sample.go:349.43,349.76 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:352.38,352.68 1 0 -github.com/ethereum/go-ethereum/metrics/sample.go:355.38,356.44 1 0 -github.com/ethereum/go-ethereum/metrics/sample.go:360.43,364.2 3 0 -github.com/ethereum/go-ethereum/metrics/sample.go:367.45,367.80 1 0 -github.com/ethereum/go-ethereum/metrics/sample.go:370.43,372.2 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:375.38,377.27 2 1 -github.com/ethereum/go-ethereum/metrics/sample.go:380.2,380.12 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:377.27,379.3 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:384.45,385.22 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:388.2,390.27 3 1 -github.com/ethereum/go-ethereum/metrics/sample.go:394.2,394.35 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:385.22,387.3 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:390.27,393.3 2 1 -github.com/ethereum/go-ethereum/metrics/sample.go:409.49,410.14 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:413.2,416.3 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:410.14,412.3 1 0 -github.com/ethereum/go-ethereum/metrics/sample.go:420.33,425.2 4 0 -github.com/ethereum/go-ethereum/metrics/sample.go:429.39,433.2 3 1 -github.com/ethereum/go-ethereum/metrics/sample.go:437.37,441.2 3 1 -github.com/ethereum/go-ethereum/metrics/sample.go:444.40,448.2 3 1 -github.com/ethereum/go-ethereum/metrics/sample.go:452.37,456.2 3 1 -github.com/ethereum/go-ethereum/metrics/sample.go:459.55,463.2 3 0 -github.com/ethereum/go-ethereum/metrics/sample.go:467.61,471.2 3 1 -github.com/ethereum/go-ethereum/metrics/sample.go:474.36,478.2 3 1 -github.com/ethereum/go-ethereum/metrics/sample.go:481.43,490.2 5 1 -github.com/ethereum/go-ethereum/metrics/sample.go:493.42,497.2 3 1 -github.com/ethereum/go-ethereum/metrics/sample.go:500.37,504.2 3 0 -github.com/ethereum/go-ethereum/metrics/sample.go:507.41,511.37 4 1 -github.com/ethereum/go-ethereum/metrics/sample.go:511.37,513.3 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:513.8,515.31 2 1 -github.com/ethereum/go-ethereum/metrics/sample.go:515.31,517.4 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:522.42,528.2 5 1 -github.com/ethereum/go-ethereum/metrics/sample.go:531.44,535.2 3 0 -github.com/ethereum/go-ethereum/metrics/sample.go:543.67,545.2 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:553.38,555.2 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:557.53,562.2 4 1 -github.com/ethereum/go-ethereum/metrics/sample.go:564.51,573.2 7 1 -github.com/ethereum/go-ethereum/metrics/sample.go:575.41,577.2 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:579.56,581.2 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:583.40,584.6 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:584.6,586.39 2 1 -github.com/ethereum/go-ethereum/metrics/sample.go:589.3,590.8 2 1 -github.com/ethereum/go-ethereum/metrics/sample.go:586.39,587.9 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:594.45,595.6 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:595.6,597.24 2 1 -github.com/ethereum/go-ethereum/metrics/sample.go:600.3,601.55 2 1 -github.com/ethereum/go-ethereum/metrics/sample.go:604.3,604.29 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:607.3,608.8 2 1 -github.com/ethereum/go-ethereum/metrics/sample.go:597.24,598.9 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:601.55,603.4 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:604.29,605.9 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:614.41,614.58 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:615.41,615.63 1 1 -github.com/ethereum/go-ethereum/metrics/sample.go:616.41,616.68 1 1 -github.com/ethereum/go-ethereum/metrics/cputime_unix.go:29.32,31.71 2 0 -github.com/ethereum/go-ethereum/metrics/cputime_unix.go:35.2,35.100 1 0 -github.com/ethereum/go-ethereum/metrics/cputime_unix.go:31.71,34.3 2 0 -github.com/ethereum/go-ethereum/metrics/registry.go:15.43,17.2 1 0 -github.com/ethereum/go-ethereum/metrics/registry.go:61.29,63.2 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:66.62,67.38 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:67.38,69.3 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:73.57,77.2 3 1 -github.com/ethereum/go-ethereum/metrics/registry.go:83.82,86.39 3 1 -github.com/ethereum/go-ethereum/metrics/registry.go:89.2,89.55 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:92.2,93.10 2 1 -github.com/ethereum/go-ethereum/metrics/registry.go:86.39,88.3 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:89.55,91.3 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:98.71,102.2 3 1 -github.com/ethereum/go-ethereum/metrics/registry.go:105.46,108.30 3 0 -github.com/ethereum/go-ethereum/metrics/registry.go:108.30,109.35 1 0 -github.com/ethereum/go-ethereum/metrics/registry.go:109.35,111.4 1 0 -github.com/ethereum/go-ethereum/metrics/registry.go:116.71,118.42 2 1 -github.com/ethereum/go-ethereum/metrics/registry.go:173.2,173.13 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:118.42,120.29 2 1 -github.com/ethereum/go-ethereum/metrics/registry.go:171.3,171.22 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:121.16,122.36 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:123.14,124.36 1 0 -github.com/ethereum/go-ethereum/metrics/registry.go:125.21,126.36 1 0 -github.com/ethereum/go-ethereum/metrics/registry.go:127.20,130.41 3 0 -github.com/ethereum/go-ethereum/metrics/registry.go:133.18,145.27 12 0 -github.com/ethereum/go-ethereum/metrics/registry.go:146.14,152.38 6 0 -github.com/ethereum/go-ethereum/metrics/registry.go:153.14,169.38 16 0 -github.com/ethereum/go-ethereum/metrics/registry.go:130.41,132.5 1 0 -github.com/ethereum/go-ethereum/metrics/registry.go:177.52,182.2 4 1 -github.com/ethereum/go-ethereum/metrics/registry.go:185.44,188.30 3 0 -github.com/ethereum/go-ethereum/metrics/registry.go:188.30,191.3 2 0 -github.com/ethereum/go-ethereum/metrics/registry.go:194.71,195.34 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:198.2,198.18 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:202.2,202.12 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:195.34,197.3 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:199.90,200.22 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:205.64,209.33 4 1 -github.com/ethereum/go-ethereum/metrics/registry.go:212.2,212.16 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:209.33,211.3 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:215.46,216.34 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:216.34,217.33 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:217.33,219.4 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:233.50,238.2 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:240.72,245.2 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:248.63,249.61 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:259.2,260.38 2 1 -github.com/ethereum/go-ethereum/metrics/registry.go:249.61,250.47 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:250.47,251.39 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:251.39,253.5 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:253.10,255.5 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:263.70,264.30 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:270.2,270.16 1 0 -github.com/ethereum/go-ethereum/metrics/registry.go:265.25,266.51 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:267.25,268.19 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:274.57,277.2 2 1 -github.com/ethereum/go-ethereum/metrics/registry.go:282.87,285.2 2 1 -github.com/ethereum/go-ethereum/metrics/registry.go:288.76,291.2 2 1 -github.com/ethereum/go-ethereum/metrics/registry.go:294.46,296.2 1 0 -github.com/ethereum/go-ethereum/metrics/registry.go:299.71,301.2 1 0 -github.com/ethereum/go-ethereum/metrics/registry.go:304.52,307.2 2 1 -github.com/ethereum/go-ethereum/metrics/registry.go:310.44,312.2 1 0 -github.com/ethereum/go-ethereum/metrics/registry.go:321.40,323.2 1 0 -github.com/ethereum/go-ethereum/metrics/registry.go:326.35,328.2 1 0 -github.com/ethereum/go-ethereum/metrics/registry.go:332.60,334.2 1 0 -github.com/ethereum/go-ethereum/metrics/registry.go:338.49,340.2 1 1 -github.com/ethereum/go-ethereum/metrics/registry.go:344.47,345.42 1 0 -github.com/ethereum/go-ethereum/metrics/registry.go:345.42,346.13 1 0 -github.com/ethereum/go-ethereum/metrics/registry.go:351.24,353.2 1 0 -github.com/ethereum/go-ethereum/metrics/registry.go:356.30,358.2 1 0 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:26.74,27.14 1 0 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:30.2,30.66 1 0 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:27.14,29.3 1 0 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:34.74,36.14 2 0 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:39.2,40.10 2 0 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:36.14,38.3 1 0 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:44.41,45.14 1 1 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:48.2,50.3 1 1 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:45.14,47.3 1 0 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:58.43,58.57 1 0 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:61.52,65.2 1 0 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:68.40,68.41 0 0 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:71.49,71.50 0 0 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:74.57,75.52 1 0 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:79.41,80.45 1 0 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:84.50,84.51 0 0 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:94.51,96.2 1 0 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:99.60,108.2 5 1 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:111.65,112.57 1 0 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:116.49,117.50 1 0 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:121.49,125.2 3 0 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:128.58,132.2 3 1 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:135.60,139.2 3 0 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:150.60,150.72 1 0 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:153.45,154.50 1 0 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:158.54,159.52 1 0 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:163.55,164.57 1 0 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:168.51,170.2 1 1 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:173.77,177.2 2 1 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:180.49,181.19 1 1 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:185.2,185.15 1 1 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:181.19,183.3 1 0 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:188.62,192.15 3 1 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:233.2,233.21 1 1 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:192.15,198.30 5 1 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:202.3,206.35 3 1 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:226.3,227.41 2 1 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:198.30,200.4 1 1 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:206.35,207.17 1 1 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:223.4,223.48 1 1 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:207.17,209.17 2 1 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:216.5,217.36 2 1 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:220.5,220.46 1 1 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:209.17,211.6 1 1 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:211.11,213.6 1 0 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:217.36,219.6 1 1 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:228.8,231.3 2 1 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:239.41,239.58 1 1 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:240.41,240.63 1 1 -github.com/ethereum/go-ethereum/metrics/resetting_timer.go:241.41,241.68 1 1 -github.com/ethereum/go-ethereum/metrics/writer.go:12.54,13.25 1 0 -github.com/ethereum/go-ethereum/metrics/writer.go:13.25,15.3 1 0 -github.com/ethereum/go-ethereum/metrics/writer.go:20.41,22.42 2 0 -github.com/ethereum/go-ethereum/metrics/writer.go:26.2,27.43 2 0 -github.com/ethereum/go-ethereum/metrics/writer.go:22.42,24.3 1 0 -github.com/ethereum/go-ethereum/metrics/writer.go:27.43,28.41 1 0 -github.com/ethereum/go-ethereum/metrics/writer.go:29.16,31.58 2 0 -github.com/ethereum/go-ethereum/metrics/writer.go:32.14,34.58 2 0 -github.com/ethereum/go-ethereum/metrics/writer.go:35.21,37.57 2 0 -github.com/ethereum/go-ethereum/metrics/writer.go:38.20,41.57 3 0 -github.com/ethereum/go-ethereum/metrics/writer.go:42.18,55.53 13 0 -github.com/ethereum/go-ethereum/metrics/writer.go:56.14,63.59 7 0 -github.com/ethereum/go-ethereum/metrics/writer.go:64.14,81.59 17 0 -github.com/ethereum/go-ethereum/metrics/writer.go:94.39,94.58 1 1 -github.com/ethereum/go-ethereum/metrics/writer.go:96.44,96.79 1 1 -github.com/ethereum/go-ethereum/metrics/writer.go:98.49,100.2 1 1 -github.com/ethereum/go-ethereum/metrics/cpu_enabled.go:28.36,31.16 2 0 -github.com/ethereum/go-ethereum/metrics/cpu_enabled.go:35.2,35.25 1 0 -github.com/ethereum/go-ethereum/metrics/cpu_enabled.go:40.2,43.39 4 0 -github.com/ethereum/go-ethereum/metrics/cpu_enabled.go:31.16,34.3 2 0 -github.com/ethereum/go-ethereum/metrics/cpu_enabled.go:35.25,38.3 2 0 -github.com/ethereum/go-ethereum/metrics/gauge.go:16.56,17.14 1 1 -github.com/ethereum/go-ethereum/metrics/gauge.go:20.2,20.48 1 1 -github.com/ethereum/go-ethereum/metrics/gauge.go:17.14,19.3 1 1 -github.com/ethereum/go-ethereum/metrics/gauge.go:24.23,25.14 1 1 -github.com/ethereum/go-ethereum/metrics/gauge.go:28.2,28.26 1 1 -github.com/ethereum/go-ethereum/metrics/gauge.go:25.14,27.3 1 0 -github.com/ethereum/go-ethereum/metrics/gauge.go:32.56,34.14 2 1 -github.com/ethereum/go-ethereum/metrics/gauge.go:37.2,38.10 2 1 -github.com/ethereum/go-ethereum/metrics/gauge.go:34.14,36.3 1 0 -github.com/ethereum/go-ethereum/metrics/gauge.go:42.47,43.14 1 1 -github.com/ethereum/go-ethereum/metrics/gauge.go:46.2,46.35 1 1 -github.com/ethereum/go-ethereum/metrics/gauge.go:43.14,45.3 1 0 -github.com/ethereum/go-ethereum/metrics/gauge.go:50.82,52.14 2 1 -github.com/ethereum/go-ethereum/metrics/gauge.go:55.2,56.10 2 1 -github.com/ethereum/go-ethereum/metrics/gauge.go:52.14,54.3 1 0 -github.com/ethereum/go-ethereum/metrics/gauge.go:63.41,63.53 1 0 -github.com/ethereum/go-ethereum/metrics/gauge.go:66.36,67.43 1 0 -github.com/ethereum/go-ethereum/metrics/gauge.go:71.33,72.40 1 0 -github.com/ethereum/go-ethereum/metrics/gauge.go:76.33,77.40 1 0 -github.com/ethereum/go-ethereum/metrics/gauge.go:81.38,81.57 1 1 -github.com/ethereum/go-ethereum/metrics/gauge.go:87.34,87.55 1 0 -github.com/ethereum/go-ethereum/metrics/gauge.go:90.34,90.35 0 0 -github.com/ethereum/go-ethereum/metrics/gauge.go:93.31,93.32 0 0 -github.com/ethereum/go-ethereum/metrics/gauge.go:96.31,96.32 0 0 -github.com/ethereum/go-ethereum/metrics/gauge.go:99.31,99.43 1 0 -github.com/ethereum/go-ethereum/metrics/gauge.go:108.42,110.2 1 1 -github.com/ethereum/go-ethereum/metrics/gauge.go:113.41,115.2 1 1 -github.com/ethereum/go-ethereum/metrics/gauge.go:118.39,120.2 1 1 -github.com/ethereum/go-ethereum/metrics/gauge.go:123.38,125.2 1 0 -github.com/ethereum/go-ethereum/metrics/gauge.go:128.38,130.2 1 0 -github.com/ethereum/go-ethereum/metrics/gauge.go:138.40,140.2 1 1 -github.com/ethereum/go-ethereum/metrics/gauge.go:143.43,143.78 1 0 -github.com/ethereum/go-ethereum/metrics/gauge.go:146.38,147.45 1 0 -github.com/ethereum/go-ethereum/metrics/gauge.go:151.35,152.42 1 0 -github.com/ethereum/go-ethereum/metrics/gauge.go:156.35,157.42 1 0 -github.com/ethereum/go-ethereum/metrics/gauge_float64.go:14.70,15.14 1 1 -github.com/ethereum/go-ethereum/metrics/gauge_float64.go:18.2,18.64 1 1 -github.com/ethereum/go-ethereum/metrics/gauge_float64.go:15.14,17.3 1 0 -github.com/ethereum/go-ethereum/metrics/gauge_float64.go:22.37,23.14 1 1 -github.com/ethereum/go-ethereum/metrics/gauge_float64.go:26.2,28.3 1 1 -github.com/ethereum/go-ethereum/metrics/gauge_float64.go:23.14,25.3 1 0 -github.com/ethereum/go-ethereum/metrics/gauge_float64.go:32.70,34.14 2 1 -github.com/ethereum/go-ethereum/metrics/gauge_float64.go:37.2,38.10 2 1 -github.com/ethereum/go-ethereum/metrics/gauge_float64.go:34.14,36.3 1 0 -github.com/ethereum/go-ethereum/metrics/gauge_float64.go:42.63,43.14 1 1 -github.com/ethereum/go-ethereum/metrics/gauge_float64.go:46.2,46.42 1 1 -github.com/ethereum/go-ethereum/metrics/gauge_float64.go:43.14,45.3 1 0 -github.com/ethereum/go-ethereum/metrics/gauge_float64.go:50.98,52.14 2 1 -github.com/ethereum/go-ethereum/metrics/gauge_float64.go:55.2,56.10 2 1 -github.com/ethereum/go-ethereum/metrics/gauge_float64.go:52.14,54.3 1 0 -github.com/ethereum/go-ethereum/metrics/gauge_float64.go:63.55,63.67 1 0 -github.com/ethereum/go-ethereum/metrics/gauge_float64.go:66.45,67.50 1 0 -github.com/ethereum/go-ethereum/metrics/gauge_float64.go:71.47,71.68 1 1 -github.com/ethereum/go-ethereum/metrics/gauge_float64.go:77.48,77.76 1 0 -github.com/ethereum/go-ethereum/metrics/gauge_float64.go:80.43,80.44 0 0 -github.com/ethereum/go-ethereum/metrics/gauge_float64.go:83.40,83.54 1 0 -github.com/ethereum/go-ethereum/metrics/gauge_float64.go:93.56,95.2 1 1 -github.com/ethereum/go-ethereum/metrics/gauge_float64.go:98.50,102.2 3 1 -github.com/ethereum/go-ethereum/metrics/gauge_float64.go:105.48,109.2 3 1 -github.com/ethereum/go-ethereum/metrics/gauge_float64.go:117.49,119.2 1 1 -github.com/ethereum/go-ethereum/metrics/gauge_float64.go:122.57,122.99 1 0 -github.com/ethereum/go-ethereum/metrics/gauge_float64.go:125.47,126.52 1 0 -github.com/ethereum/go-ethereum/metrics/runtime_cgo.go:8.25,10.2 1 1 -github.com/ethereum/go-ethereum/metrics/runtime_gccpufraction.go:8.56,10.2 1 1 -github.com/ethereum/go-ethereum/metrics/disk_nop.go:25.44,27.2 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:22.74,23.14 1 1 -github.com/ethereum/go-ethereum/metrics/histogram.go:26.2,26.48 1 1 -github.com/ethereum/go-ethereum/metrics/histogram.go:23.14,25.3 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:26.48,26.74 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:31.85,32.14 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:35.2,35.48 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:32.14,34.3 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:35.48,35.76 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:39.39,40.14 1 1 -github.com/ethereum/go-ethereum/metrics/histogram.go:43.2,43.38 1 1 -github.com/ethereum/go-ethereum/metrics/histogram.go:40.14,42.3 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:48.74,50.14 2 1 -github.com/ethereum/go-ethereum/metrics/histogram.go:53.2,54.10 2 1 -github.com/ethereum/go-ethereum/metrics/histogram.go:50.14,52.3 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:63.35,64.46 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:69.43,69.70 1 1 -github.com/ethereum/go-ethereum/metrics/histogram.go:73.41,73.66 1 1 -github.com/ethereum/go-ethereum/metrics/histogram.go:77.44,77.70 1 1 -github.com/ethereum/go-ethereum/metrics/histogram.go:81.41,81.66 1 1 -github.com/ethereum/go-ethereum/metrics/histogram.go:85.59,87.2 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:91.65,93.2 1 1 -github.com/ethereum/go-ethereum/metrics/histogram.go:96.45,96.64 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:99.50,99.62 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:103.46,103.74 1 1 -github.com/ethereum/go-ethereum/metrics/histogram.go:106.41,106.66 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:109.41,110.47 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:114.48,114.78 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:120.30,120.31 0 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:123.35,123.47 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:126.33,126.45 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:129.36,129.50 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:132.33,132.45 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:135.51,135.65 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:138.57,140.2 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:143.37,143.59 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:146.42,146.67 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:149.38,149.52 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:152.33,152.45 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:155.38,155.39 0 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:158.40,158.54 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:167.37,167.57 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:171.43,171.70 1 1 -github.com/ethereum/go-ethereum/metrics/histogram.go:174.41,174.66 1 1 -github.com/ethereum/go-ethereum/metrics/histogram.go:177.44,177.70 1 1 -github.com/ethereum/go-ethereum/metrics/histogram.go:180.41,180.66 1 1 -github.com/ethereum/go-ethereum/metrics/histogram.go:183.59,185.2 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:189.65,191.2 1 1 -github.com/ethereum/go-ethereum/metrics/histogram.go:194.45,194.64 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:197.50,199.2 1 1 -github.com/ethereum/go-ethereum/metrics/histogram.go:202.46,202.74 1 1 -github.com/ethereum/go-ethereum/metrics/histogram.go:205.41,205.66 1 0 -github.com/ethereum/go-ethereum/metrics/histogram.go:208.45,208.67 1 1 -github.com/ethereum/go-ethereum/metrics/histogram.go:211.48,211.78 1 0 -github.com/ethereum/go-ethereum/metrics/runtime.go:57.58,58.25 1 0 -github.com/ethereum/go-ethereum/metrics/runtime.go:58.25,60.3 1 0 -github.com/ethereum/go-ethereum/metrics/runtime.go:71.45,78.22 6 1 -github.com/ethereum/go-ethereum/metrics/runtime.go:83.2,83.23 1 1 -github.com/ethereum/go-ethereum/metrics/runtime.go:89.2,110.59 20 1 -github.com/ethereum/go-ethereum/metrics/runtime.go:125.2,142.69 14 1 -github.com/ethereum/go-ethereum/metrics/runtime.go:78.22,80.3 1 0 -github.com/ethereum/go-ethereum/metrics/runtime.go:80.8,82.3 1 1 -github.com/ethereum/go-ethereum/metrics/runtime.go:83.23,85.3 1 1 -github.com/ethereum/go-ethereum/metrics/runtime.go:85.8,87.3 1 0 -github.com/ethereum/go-ethereum/metrics/runtime.go:110.59,111.53 1 1 -github.com/ethereum/go-ethereum/metrics/runtime.go:111.53,113.4 1 1 -github.com/ethereum/go-ethereum/metrics/runtime.go:114.8,115.13 1 1 -github.com/ethereum/go-ethereum/metrics/runtime.go:121.3,121.21 1 1 -github.com/ethereum/go-ethereum/metrics/runtime.go:115.13,116.49 1 0 -github.com/ethereum/go-ethereum/metrics/runtime.go:119.4,119.9 1 0 -github.com/ethereum/go-ethereum/metrics/runtime.go:116.49,118.5 1 0 -github.com/ethereum/go-ethereum/metrics/runtime.go:121.21,123.4 1 1 -github.com/ethereum/go-ethereum/metrics/runtime.go:148.42,212.2 62 1 -github.com/ethereum/go-ethereum/metrics/debug.go:24.55,25.25 1 0 -github.com/ethereum/go-ethereum/metrics/debug.go:25.25,27.3 1 0 -github.com/ethereum/go-ethereum/metrics/debug.go:38.42,46.56 7 0 -github.com/ethereum/go-ethereum/metrics/debug.go:50.2,50.67 1 0 -github.com/ethereum/go-ethereum/metrics/debug.go:46.56,48.3 1 0 -github.com/ethereum/go-ethereum/metrics/debug.go:56.39,70.2 10 0 -github.com/ethereum/go-ethereum/metrics/debug.go:74.13,76.2 1 1 -github.com/ethereum/go-ethereum/metrics/json.go:11.58,13.2 1 1 -github.com/ethereum/go-ethereum/metrics/json.go:17.58,18.25 1 0 -github.com/ethereum/go-ethereum/metrics/json.go:18.25,20.3 1 0 -github.com/ethereum/go-ethereum/metrics/json.go:25.45,27.2 1 1 -github.com/ethereum/go-ethereum/metrics/json.go:29.58,31.2 1 0 -github.com/ethereum/go-ethereum/metrics/syslog.go:14.60,15.25 1 0 -github.com/ethereum/go-ethereum/metrics/syslog.go:15.25,16.43 1 0 -github.com/ethereum/go-ethereum/metrics/syslog.go:16.43,17.30 1 0 -github.com/ethereum/go-ethereum/metrics/syslog.go:18.17,19.71 1 0 -github.com/ethereum/go-ethereum/metrics/syslog.go:20.15,21.69 1 0 -github.com/ethereum/go-ethereum/metrics/syslog.go:22.22,23.69 1 0 -github.com/ethereum/go-ethereum/metrics/syslog.go:24.21,26.75 2 0 -github.com/ethereum/go-ethereum/metrics/syslog.go:27.19,43.7 3 0 -github.com/ethereum/go-ethereum/metrics/syslog.go:44.15,54.7 2 0 -github.com/ethereum/go-ethereum/metrics/syslog.go:55.15,75.7 3 0 -github.com/ethereum/go-ethereum/metrics/timer.go:34.56,35.14 1 1 -github.com/ethereum/go-ethereum/metrics/timer.go:38.2,38.48 1 1 -github.com/ethereum/go-ethereum/metrics/timer.go:35.14,37.3 1 1 -github.com/ethereum/go-ethereum/metrics/timer.go:43.49,44.14 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:47.2,50.3 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:44.14,46.3 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:56.56,58.14 2 1 -github.com/ethereum/go-ethereum/metrics/timer.go:61.2,62.10 2 1 -github.com/ethereum/go-ethereum/metrics/timer.go:58.14,60.3 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:68.23,69.14 1 1 -github.com/ethereum/go-ethereum/metrics/timer.go:72.2,75.3 1 1 -github.com/ethereum/go-ethereum/metrics/timer.go:69.14,71.3 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:82.31,82.43 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:85.29,85.41 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:88.32,88.46 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:91.29,91.41 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:94.47,94.61 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:97.53,99.2 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:102.33,102.47 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:105.33,105.47 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:108.34,108.48 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:111.36,111.50 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:114.34,114.55 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:117.34,117.48 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:120.25,120.26 0 0 -github.com/ethereum/go-ethereum/metrics/timer.go:123.29,123.41 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:126.31,126.32 0 0 -github.com/ethereum/go-ethereum/metrics/timer.go:129.40,129.41 0 0 -github.com/ethereum/go-ethereum/metrics/timer.go:132.41,132.42 0 0 -github.com/ethereum/go-ethereum/metrics/timer.go:135.36,135.50 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:146.39,148.2 1 1 -github.com/ethereum/go-ethereum/metrics/timer.go:151.37,153.2 1 1 -github.com/ethereum/go-ethereum/metrics/timer.go:156.40,158.2 1 1 -github.com/ethereum/go-ethereum/metrics/timer.go:161.37,163.2 1 1 -github.com/ethereum/go-ethereum/metrics/timer.go:166.55,168.2 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:172.61,174.2 1 1 -github.com/ethereum/go-ethereum/metrics/timer.go:177.41,179.2 1 1 -github.com/ethereum/go-ethereum/metrics/timer.go:182.41,184.2 1 1 -github.com/ethereum/go-ethereum/metrics/timer.go:187.42,189.2 1 1 -github.com/ethereum/go-ethereum/metrics/timer.go:192.44,194.2 1 1 -github.com/ethereum/go-ethereum/metrics/timer.go:197.42,204.2 3 0 -github.com/ethereum/go-ethereum/metrics/timer.go:207.42,209.2 1 1 -github.com/ethereum/go-ethereum/metrics/timer.go:212.32,214.2 1 1 -github.com/ethereum/go-ethereum/metrics/timer.go:217.37,219.2 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:222.40,226.2 3 1 -github.com/ethereum/go-ethereum/metrics/timer.go:229.49,234.2 4 1 -github.com/ethereum/go-ethereum/metrics/timer.go:237.51,242.2 4 1 -github.com/ethereum/go-ethereum/metrics/timer.go:245.44,247.2 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:257.39,257.69 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:260.37,260.65 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:263.40,263.69 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:266.37,266.65 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:270.55,272.2 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:276.61,278.2 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:282.41,282.67 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:286.41,286.67 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:290.42,290.69 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:294.44,294.73 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:297.42,297.54 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:301.42,301.73 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:304.33,304.34 0 0 -github.com/ethereum/go-ethereum/metrics/timer.go:307.37,307.65 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:310.36,311.41 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:315.45,316.43 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:320.46,321.48 1 0 -github.com/ethereum/go-ethereum/metrics/timer.go:326.44,326.77 1 0 -github.com/ethereum/go-ethereum/metrics/resetting_sample.go:7.44,11.2 1 0 -github.com/ethereum/go-ethereum/metrics/resetting_sample.go:20.46,24.2 3 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:133.31,135.2 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:153.62,155.38 2 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:160.2,160.63 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:155.38,157.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:157.8,157.46 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:157.46,159.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:169.32,169.52 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:170.32,170.53 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:172.32,172.52 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:173.32,173.53 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:175.36,175.60 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:176.36,176.61 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:178.37,178.62 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:179.37,179.63 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:181.38,181.64 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:182.38,182.65 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:184.39,184.66 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:185.39,185.67 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:188.30,190.2 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:209.59,210.29 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:213.2,215.36 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:218.2,219.16 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:223.2,224.36 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:240.2,242.32 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:210.29,212.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:215.36,217.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:219.16,221.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:225.18,226.18 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:227.18,228.18 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:229.22,230.22 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:231.23,232.23 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:233.24,234.24 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:235.25,236.25 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:237.10,238.67 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:246.82,250.43 4 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:253.2,255.16 3 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:258.2,262.26 4 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:250.43,252.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:255.16,257.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:266.63,268.16 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:271.2,272.17 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:268.16,270.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:276.48,281.2 4 1 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:284.77,289.34 5 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:292.2,292.15 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4wire/v4wire.go:289.34,291.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/command.go:29.33,34.2 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/command.go:37.37,39.2 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/command.go:42.42,44.42 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/command.go:50.2,51.42 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/command.go:62.2,62.50 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/command.go:66.2,69.16 3 0 -github.com/ethereum/go-ethereum/internal/cli/server/command.go:73.2,75.26 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/command.go:44.42,47.3 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/command.go:51.42,53.17 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/command.go:57.3,57.43 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/command.go:53.17,56.4 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/command.go:57.43,60.4 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/command.go:62.50,65.3 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/command.go:69.16,72.3 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/command.go:78.39,88.12 7 0 -github.com/ethereum/go-ethereum/internal/cli/server/command.go:93.2,93.26 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/command.go:101.2,101.10 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/command.go:88.12,91.3 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/command.go:93.26,94.10 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/command.go:95.19,96.79 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/command.go:97.21,98.12 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:381.30,508.2 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:510.37,521.24 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:538.2,538.12 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:521.24,522.19 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:522.19,526.39 3 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:531.4,531.11 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:534.4,535.13 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:526.39,528.5 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:528.10,530.5 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:531.11,533.5 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:541.44,552.24 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:562.2,562.12 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:552.24,553.50 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:553.50,555.18 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:558.4,559.13 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:555.18,557.5 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:565.51,567.20 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:576.2,581.64 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:584.2,584.44 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:587.2,587.51 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:590.2,590.20 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:567.20,570.17 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:573.3,573.32 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:570.17,572.4 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:581.64,583.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:584.44,586.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:587.51,589.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:593.36,594.25 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:597.2,598.9 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:601.2,604.32 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:609.2,609.26 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:614.2,614.12 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:594.25,596.3 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:598.9,600.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:604.32,606.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:609.26,611.3 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:611.8,613.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:617.72,619.16 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:622.2,626.26 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:630.2,634.2 3 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:670.2,670.25 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:777.2,778.22 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:783.2,787.20 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:797.2,797.18 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:811.2,811.16 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:821.2,822.16 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:619.16,621.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:626.26,629.3 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:634.2,639.3 4 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:642.2,653.3 10 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:656.2,661.55 4 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:661.55,662.39 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:665.4,665.54 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:662.39,664.5 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:670.25,673.94 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:678.3,684.46 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:694.3,694.58 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:697.3,713.30 7 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:673.94,675.4 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:684.46,686.4 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:686.9,686.50 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:686.50,688.4 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:688.9,690.18 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:690.18,692.5 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:694.58,696.4 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:713.30,715.4 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:719.2,722.3 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:725.2,727.33 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:727.33,729.18 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:732.4,733.55 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:736.4,736.39 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:729.18,731.5 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:733.55,735.5 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:741.2,743.36 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:748.3,749.17 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:761.3,774.42 12 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:743.36,745.4 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:749.17,750.67 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:754.4,755.25 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:750.67,753.5 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:755.25,758.5 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:778.22,780.3 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:780.8,782.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:788.14,789.35 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:790.14,791.35 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:792.10,793.65 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:798.14,799.22 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:800.17,802.19 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:806.10,807.60 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:802.19,805.4 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:811.16,812.40 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:812.40,814.4 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:814.9,818.4 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:831.52,833.27 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:840.2,865.25 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:887.2,888.16 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:891.2,894.26 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:915.2,915.22 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:920.2,920.17 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:833.27,835.30 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:835.30,837.4 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:865.25,873.3 5 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:876.2,877.29 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:881.3,881.27 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:877.29,880.4 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:881.27,884.4 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:888.16,890.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:894.26,898.26 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:901.3,901.74 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:904.3,904.94 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:907.3,907.89 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:910.3,910.91 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:898.26,900.4 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:901.74,903.4 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:904.94,906.4 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:907.89,909.4 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:910.91,912.4 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:915.22,919.3 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:923.45,924.26 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:929.2,929.12 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:924.26,925.89 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:925.89,927.4 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:932.41,934.16 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:937.2,938.16 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:941.2,941.29 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:934.16,936.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:938.16,940.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:944.59,946.27 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:955.2,955.17 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:946.27,947.16 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:947.16,949.18 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:952.4,952.27 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:949.18,951.5 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:958.30,961.16 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:965.2,965.22 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:961.16,964.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:966.16,967.47 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:968.17,970.20 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:974.3,974.39 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:975.10,976.37 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:970.20,972.59 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:980.24,982.16 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:985.2,985.17 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config.go:982.16,984.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/config_legacy.go:18.41,23.2 4 1 -github.com/ethereum/go-ethereum/internal/cli/server/config_legacy.go:25.53,29.42 3 1 -github.com/ethereum/go-ethereum/internal/cli/server/config_legacy.go:32.2,32.29 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/config_legacy.go:29.42,31.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/flags.go:7.44,484.2 91 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:44.49,52.62 3 1 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:57.2,57.43 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:62.2,63.16 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:66.2,67.16 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:70.2,73.2 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:83.2,84.16 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:88.2,89.16 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:92.2,98.36 3 1 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:105.2,105.27 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:112.2,112.55 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:118.2,118.72 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:123.2,123.41 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:126.2,126.17 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:52.62,54.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:57.43,59.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:63.16,65.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:67.16,69.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:73.2,76.40 3 1 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:79.3,79.72 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:76.40,78.4 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:84.16,86.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:89.16,91.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:98.36,99.107 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:99.107,101.4 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:105.27,106.100 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:106.100,108.4 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:112.55,113.48 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:113.48,115.4 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:118.72,120.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:123.41,125.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:129.25,133.21 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:133.21,134.65 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:134.65,136.4 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:140.82,144.22 3 1 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:149.2,152.106 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:172.2,174.33 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:195.2,195.40 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:236.2,236.12 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:144.22,147.3 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:152.106,153.29 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:157.3,161.16 4 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:165.3,165.16 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:153.29,155.4 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:161.16,164.4 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:165.16,168.4 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:174.33,178.85 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:182.3,187.13 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:178.85,180.4 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:187.13,188.54 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:188.54,190.5 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:195.40,205.17 3 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:210.3,215.17 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:221.3,233.28 5 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:205.17,207.4 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:215.17,217.4 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:239.53,244.16 4 1 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:248.2,248.12 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:254.2,255.12 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:244.16,246.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:248.12,249.49 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:249.49,251.4 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:258.66,260.2 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:262.157,267.2 4 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:269.35,272.14 3 1 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:275.2,280.16 4 1 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:285.2,285.32 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:272.14,274.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:280.16,282.3 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/server.go:282.8,284.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:21.85,27.18 5 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:35.2,35.16 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:40.2,48.16 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:53.2,56.72 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:60.2,60.47 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:65.2,68.16 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:71.2,71.12 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:28.30,29.66 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:30.32,31.61 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:32.33,33.59 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:35.16,37.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:48.16,50.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:56.72,58.4 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:60.47,62.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:68.16,70.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:74.109,76.16 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:79.2,80.17 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:85.2,85.39 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:76.16,78.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:80.17,82.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:82.8,84.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:88.118,90.16 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:93.2,94.17 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:99.2,99.42 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:90.16,92.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:94.17,96.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:96.8,98.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:102.112,106.26 3 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:109.2,109.18 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:106.26,108.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:112.118,114.48 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:122.2,123.21 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:126.2,126.18 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:114.48,115.41 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:115.41,116.23 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:119.4,119.16 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:116.23,118.5 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:123.21,125.3 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:129.53,139.2 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:141.121,144.2 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:146.93,163.2 4 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:165.57,170.2 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:175.74,178.36 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:220.2,220.14 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:178.36,180.34 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:184.3,187.40 3 1 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:180.34,182.4 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:187.40,190.42 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:193.4,193.47 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:197.4,202.29 3 1 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:217.4,217.31 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:190.42,191.13 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:193.47,194.13 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:203.17,205.20 2 1 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:210.24,211.35 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:213.12,214.13 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:205.20,207.6 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:207.11,209.6 1 1 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:223.72,227.31 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:235.2,235.19 1 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:227.31,233.3 2 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:238.99,246.6 5 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:246.6,253.17 3 0 -github.com/ethereum/go-ethereum/internal/cli/server/service.go:253.17,255.4 1 0 -github.com/ethereum/go-ethereum/p2p/peer_error.go:39.73,41.9 2 1 -github.com/ethereum/go-ethereum/p2p/peer_error.go:44.2,45.18 2 1 -github.com/ethereum/go-ethereum/p2p/peer_error.go:48.2,48.12 1 1 -github.com/ethereum/go-ethereum/p2p/peer_error.go:41.9,42.30 1 0 -github.com/ethereum/go-ethereum/p2p/peer_error.go:45.18,47.3 1 1 -github.com/ethereum/go-ethereum/p2p/peer_error.go:51.37,53.2 1 0 -github.com/ethereum/go-ethereum/p2p/peer_error.go:91.37,92.39 1 1 -github.com/ethereum/go-ethereum/p2p/peer_error.go:95.2,95.30 1 1 -github.com/ethereum/go-ethereum/p2p/peer_error.go:92.39,94.3 1 0 -github.com/ethereum/go-ethereum/p2p/peer_error.go:98.36,100.2 1 1 -github.com/ethereum/go-ethereum/p2p/peer_error.go:102.47,103.40 1 1 -github.com/ethereum/go-ethereum/p2p/peer_error.go:106.2,106.32 1 1 -github.com/ethereum/go-ethereum/p2p/peer_error.go:109.2,110.8 2 1 -github.com/ethereum/go-ethereum/p2p/peer_error.go:118.2,118.29 1 1 -github.com/ethereum/go-ethereum/p2p/peer_error.go:103.40,105.3 1 1 -github.com/ethereum/go-ethereum/p2p/peer_error.go:106.32,108.3 1 1 -github.com/ethereum/go-ethereum/p2p/peer_error.go:110.8,111.25 1 0 -github.com/ethereum/go-ethereum/p2p/peer_error.go:112.41,113.28 1 0 -github.com/ethereum/go-ethereum/p2p/peer_error.go:114.11,115.31 1 0 -github.com/ethereum/go-ethereum/p2p/protocol.go:66.29,68.2 1 1 -github.com/ethereum/go-ethereum/p2p/protocol.go:76.32,78.2 1 0 -github.com/ethereum/go-ethereum/p2p/protocol.go:82.47,82.65 1 1 -github.com/ethereum/go-ethereum/p2p/protocol.go:83.47,83.78 1 1 -github.com/ethereum/go-ethereum/p2p/protocol.go:84.52,86.2 1 1 -github.com/ethereum/go-ethereum/p2p/transport.go:54.66,56.2 1 1 -github.com/ethereum/go-ethereum/p2p/transport.go:58.48,65.16 6 1 -github.com/ethereum/go-ethereum/p2p/transport.go:78.2,78.17 1 1 -github.com/ethereum/go-ethereum/p2p/transport.go:65.16,77.3 2 1 -github.com/ethereum/go-ethereum/p2p/transport.go:81.49,87.75 4 1 -github.com/ethereum/go-ethereum/p2p/transport.go:92.2,94.16 3 1 -github.com/ethereum/go-ethereum/p2p/transport.go:99.2,100.48 2 1 -github.com/ethereum/go-ethereum/p2p/transport.go:105.2,105.12 1 1 -github.com/ethereum/go-ethereum/p2p/transport.go:87.75,89.3 1 0 -github.com/ethereum/go-ethereum/p2p/transport.go:94.16,96.3 1 1 -github.com/ethereum/go-ethereum/p2p/transport.go:100.48,104.3 3 0 -github.com/ethereum/go-ethereum/p2p/transport.go:108.42,115.19 3 1 -github.com/ethereum/go-ethereum/p2p/transport.go:126.2,126.16 1 1 -github.com/ethereum/go-ethereum/p2p/transport.go:115.19,116.61 1 1 -github.com/ethereum/go-ethereum/p2p/transport.go:116.61,118.60 2 1 -github.com/ethereum/go-ethereum/p2p/transport.go:118.60,123.5 3 1 -github.com/ethereum/go-ethereum/p2p/transport.go:129.89,132.2 2 1 -github.com/ethereum/go-ethereum/p2p/transport.go:134.98,140.12 2 1 -github.com/ethereum/go-ethereum/p2p/transport.go:141.2,141.55 1 1 -github.com/ethereum/go-ethereum/p2p/transport.go:145.2,145.31 1 1 -github.com/ethereum/go-ethereum/p2p/transport.go:149.2,151.19 2 1 -github.com/ethereum/go-ethereum/p2p/transport.go:140.12,140.50 1 1 -github.com/ethereum/go-ethereum/p2p/transport.go:141.55,144.3 2 0 -github.com/ethereum/go-ethereum/p2p/transport.go:145.31,147.3 1 0 -github.com/ethereum/go-ethereum/p2p/transport.go:154.67,156.16 2 1 -github.com/ethereum/go-ethereum/p2p/transport.go:159.2,159.39 1 1 -github.com/ethereum/go-ethereum/p2p/transport.go:162.2,162.25 1 1 -github.com/ethereum/go-ethereum/p2p/transport.go:171.2,171.30 1 1 -github.com/ethereum/go-ethereum/p2p/transport.go:174.2,175.40 2 1 -github.com/ethereum/go-ethereum/p2p/transport.go:178.2,178.51 1 1 -github.com/ethereum/go-ethereum/p2p/transport.go:181.2,181.17 1 1 -github.com/ethereum/go-ethereum/p2p/transport.go:156.16,158.3 1 0 -github.com/ethereum/go-ethereum/p2p/transport.go:159.39,161.3 1 1 -github.com/ethereum/go-ethereum/p2p/transport.go:162.25,170.3 3 1 -github.com/ethereum/go-ethereum/p2p/transport.go:171.30,173.3 1 1 -github.com/ethereum/go-ethereum/p2p/transport.go:175.40,177.3 1 1 -github.com/ethereum/go-ethereum/p2p/transport.go:178.51,180.3 1 1 -github.com/ethereum/go-ethereum/p2p/util.go:35.47,37.2 1 1 -github.com/ethereum/go-ethereum/p2p/util.go:40.56,42.2 1 1 -github.com/ethereum/go-ethereum/p2p/util.go:45.45,46.22 1 1 -github.com/ethereum/go-ethereum/p2p/util.go:51.2,51.14 1 1 -github.com/ethereum/go-ethereum/p2p/util.go:46.22,47.21 1 1 -github.com/ethereum/go-ethereum/p2p/util.go:47.21,49.4 1 1 -github.com/ethereum/go-ethereum/p2p/util.go:55.66,56.42 1 1 -github.com/ethereum/go-ethereum/p2p/util.go:56.42,58.19 2 1 -github.com/ethereum/go-ethereum/p2p/util.go:58.19,60.4 1 1 -github.com/ethereum/go-ethereum/p2p/util.go:65.39,65.56 1 1 -github.com/ethereum/go-ethereum/p2p/util.go:66.39,66.69 1 1 -github.com/ethereum/go-ethereum/p2p/util.go:67.39,67.66 1 1 -github.com/ethereum/go-ethereum/p2p/util.go:68.39,68.71 1 1 -github.com/ethereum/go-ethereum/p2p/util.go:69.37,75.2 5 1 -github.com/ethereum/go-ethereum/p2p/dial.go:66.82,68.2 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:70.39,72.2 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:144.49,145.29 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:148.2,148.20 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:151.2,151.22 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:154.2,154.21 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:160.2,160.12 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:145.29,147.3 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:148.20,150.3 1 0 -github.com/ethereum/go-ethereum/p2p/dial.go:151.22,153.3 1 0 -github.com/ethereum/go-ethereum/p2p/dial.go:154.21,159.3 4 1 -github.com/ethereum/go-ethereum/p2p/dial.go:163.101,183.2 7 1 -github.com/ethereum/go-ethereum/p2p/dial.go:186.32,189.2 2 1 -github.com/ethereum/go-ethereum/p2p/dial.go:192.50,193.9 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:194.26,194.26 0 1 -github.com/ethereum/go-ethereum/p2p/dial.go:195.22,195.22 0 0 -github.com/ethereum/go-ethereum/p2p/dial.go:200.53,201.9 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:202.26,202.26 0 1 -github.com/ethereum/go-ethereum/p2p/dial.go:203.22,203.22 0 0 -github.com/ethereum/go-ethereum/p2p/dial.go:208.44,209.9 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:210.24,210.24 0 1 -github.com/ethereum/go-ethereum/p2p/dial.go:211.22,211.22 0 0 -github.com/ethereum/go-ethereum/p2p/dial.go:216.46,217.9 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:218.24,218.24 0 1 -github.com/ethereum/go-ethereum/p2p/dial.go:219.22,219.22 0 0 -github.com/ethereum/go-ethereum/p2p/dial.go:224.49,231.6 2 1 -github.com/ethereum/go-ethereum/p2p/dial.go:310.2,311.22 2 1 -github.com/ethereum/go-ethereum/p2p/dial.go:314.2,314.13 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:231.6,235.16 3 1 -github.com/ethereum/go-ethereum/p2p/dial.go:240.3,243.10 3 1 -github.com/ethereum/go-ethereum/p2p/dial.go:235.16,237.4 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:237.9,239.4 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:244.26,245.44 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:251.27,255.24 4 1 -github.com/ethereum/go-ethereum/p2p/dial.go:257.27,258.53 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:261.4,265.48 4 1 -github.com/ethereum/go-ethereum/p2p/dial.go:270.27,271.53 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:274.4,275.35 2 1 -github.com/ethereum/go-ethereum/p2p/dial.go:277.32,281.14 4 1 -github.com/ethereum/go-ethereum/p2p/dial.go:284.4,286.32 3 1 -github.com/ethereum/go-ethereum/p2p/dial.go:290.32,294.19 4 1 -github.com/ethereum/go-ethereum/p2p/dial.go:301.21,302.21 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:304.23,306.14 2 1 -github.com/ethereum/go-ethereum/p2p/dial.go:245.44,247.5 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:247.10,249.5 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:258.53,260.5 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:265.48,267.5 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:271.53,273.5 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:281.14,282.18 1 0 -github.com/ethereum/go-ethereum/p2p/dial.go:286.32,288.5 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:294.19,296.34 2 1 -github.com/ethereum/go-ethereum/p2p/dial.go:296.34,298.6 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:311.22,313.3 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:319.54,322.16 2 1 -github.com/ethereum/go-ethereum/p2p/dial.go:322.16,323.10 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:324.31,324.31 0 1 -github.com/ethereum/go-ethereum/p2p/dial.go:325.23,325.23 0 1 -github.com/ethereum/go-ethereum/p2p/dial.go:333.36,335.52 2 1 -github.com/ethereum/go-ethereum/p2p/dial.go:338.2,338.70 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:341.2,342.22 2 1 -github.com/ethereum/go-ethereum/p2p/dial.go:335.52,337.3 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:338.70,340.3 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:347.61,348.73 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:351.2,354.53 4 1 -github.com/ethereum/go-ethereum/p2p/dial.go:348.73,350.3 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:354.53,354.73 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:358.60,359.53 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:359.53,361.3 1 0 -github.com/ethereum/go-ethereum/p2p/dial.go:365.41,369.52 4 1 -github.com/ethereum/go-ethereum/p2p/dial.go:369.52,373.3 3 1 -github.com/ethereum/go-ethereum/p2p/dial.go:378.45,380.30 2 1 -github.com/ethereum/go-ethereum/p2p/dial.go:383.2,384.13 2 1 -github.com/ethereum/go-ethereum/p2p/dial.go:380.30,382.3 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:388.56,389.22 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:392.2,392.35 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:398.2,398.36 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:401.2,401.34 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:404.2,404.61 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:407.2,407.48 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:410.2,410.12 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:389.22,391.3 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:392.35,397.3 1 0 -github.com/ethereum/go-ethereum/p2p/dial.go:398.36,400.3 1 0 -github.com/ethereum/go-ethereum/p2p/dial.go:401.34,403.3 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:404.61,406.3 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:407.48,409.3 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:414.63,415.67 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:421.2,421.16 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:415.67,420.3 4 1 -github.com/ethereum/go-ethereum/p2p/dial.go:425.55,427.69 2 1 -github.com/ethereum/go-ethereum/p2p/dial.go:427.69,429.3 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:432.57,433.31 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:436.2,437.46 2 1 -github.com/ethereum/go-ethereum/p2p/dial.go:433.31,434.51 1 0 -github.com/ethereum/go-ethereum/p2p/dial.go:442.55,450.2 7 1 -github.com/ethereum/go-ethereum/p2p/dial.go:453.51,458.12 5 1 -github.com/ethereum/go-ethereum/p2p/dial.go:458.12,461.3 2 1 -github.com/ethereum/go-ethereum/p2p/dial.go:475.62,477.2 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:483.42,484.38 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:488.2,489.16 2 1 -github.com/ethereum/go-ethereum/p2p/dial.go:484.38,486.3 1 0 -github.com/ethereum/go-ethereum/p2p/dial.go:489.16,491.69 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:491.69,492.20 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:492.20,494.5 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:499.39,501.2 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:509.51,510.23 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:513.2,513.25 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:516.2,516.88 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:519.2,521.21 3 1 -github.com/ethereum/go-ethereum/p2p/dial.go:530.2,533.13 4 1 -github.com/ethereum/go-ethereum/p2p/dial.go:510.23,512.3 1 0 -github.com/ethereum/go-ethereum/p2p/dial.go:513.25,515.3 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:516.88,518.3 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:521.21,523.39 2 1 -github.com/ethereum/go-ethereum/p2p/dial.go:526.3,527.15 2 1 -github.com/ethereum/go-ethereum/p2p/dial.go:523.39,525.4 1 0 -github.com/ethereum/go-ethereum/p2p/dial.go:537.67,539.16 2 1 -github.com/ethereum/go-ethereum/p2p/dial.go:543.2,544.40 2 1 -github.com/ethereum/go-ethereum/p2p/dial.go:539.16,542.3 2 1 -github.com/ethereum/go-ethereum/p2p/dial.go:547.36,550.2 2 0 -github.com/ethereum/go-ethereum/p2p/dial.go:552.38,553.65 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:556.2,556.12 1 1 -github.com/ethereum/go-ethereum/p2p/dial.go:553.65,555.3 1 0 -github.com/ethereum/go-ethereum/p2p/message.go:55.46,57.38 2 1 -github.com/ethereum/go-ethereum/p2p/message.go:60.2,60.12 1 1 -github.com/ethereum/go-ethereum/p2p/message.go:57.38,59.3 1 1 -github.com/ethereum/go-ethereum/p2p/message.go:63.32,65.2 1 0 -github.com/ethereum/go-ethereum/p2p/message.go:68.32,71.2 2 1 -github.com/ethereum/go-ethereum/p2p/message.go:73.33,75.2 1 0 -github.com/ethereum/go-ethereum/p2p/message.go:100.64,102.16 2 1 -github.com/ethereum/go-ethereum/p2p/message.go:105.2,105.71 1 1 -github.com/ethereum/go-ethereum/p2p/message.go:102.16,104.3 1 0 -github.com/ethereum/go-ethereum/p2p/message.go:117.73,119.2 1 1 -github.com/ethereum/go-ethereum/p2p/message.go:132.51,133.18 1 1 -github.com/ethereum/go-ethereum/p2p/message.go:141.2,142.29 2 1 -github.com/ethereum/go-ethereum/p2p/message.go:145.2,147.50 3 1 -github.com/ethereum/go-ethereum/p2p/message.go:151.2,151.15 1 1 -github.com/ethereum/go-ethereum/p2p/message.go:133.18,134.19 1 1 -github.com/ethereum/go-ethereum/p2p/message.go:138.3,138.19 1 1 -github.com/ethereum/go-ethereum/p2p/message.go:134.19,137.4 2 1 -github.com/ethereum/go-ethereum/p2p/message.go:142.29,144.3 1 1 -github.com/ethereum/go-ethereum/p2p/message.go:147.50,150.3 2 1 -github.com/ethereum/go-ethereum/p2p/message.go:157.41,166.2 2 1 -github.com/ethereum/go-ethereum/p2p/message.go:182.45,183.37 1 1 -github.com/ethereum/go-ethereum/p2p/message.go:199.2,199.22 1 1 -github.com/ethereum/go-ethereum/p2p/message.go:183.37,186.10 3 1 -github.com/ethereum/go-ethereum/p2p/message.go:187.19,188.20 1 1 -github.com/ethereum/go-ethereum/p2p/message.go:195.4,195.14 1 1 -github.com/ethereum/go-ethereum/p2p/message.go:196.20,196.20 0 1 -github.com/ethereum/go-ethereum/p2p/message.go:188.20,190.12 1 1 -github.com/ethereum/go-ethereum/p2p/message.go:191.21,191.21 0 1 -github.com/ethereum/go-ethereum/p2p/message.go:192.22,192.22 0 0 -github.com/ethereum/go-ethereum/p2p/message.go:203.44,204.37 1 1 -github.com/ethereum/go-ethereum/p2p/message.go:211.2,211.29 1 1 -github.com/ethereum/go-ethereum/p2p/message.go:204.37,205.10 1 1 -github.com/ethereum/go-ethereum/p2p/message.go:206.21,207.19 1 1 -github.com/ethereum/go-ethereum/p2p/message.go:208.20,208.20 0 1 -github.com/ethereum/go-ethereum/p2p/message.go:217.35,218.39 1 1 -github.com/ethereum/go-ethereum/p2p/message.go:223.2,224.12 2 1 -github.com/ethereum/go-ethereum/p2p/message.go:218.39,222.3 2 1 -github.com/ethereum/go-ethereum/p2p/message.go:230.69,232.16 2 1 -github.com/ethereum/go-ethereum/p2p/message.go:235.2,235.22 1 1 -github.com/ethereum/go-ethereum/p2p/message.go:238.2,238.20 1 1 -github.com/ethereum/go-ethereum/p2p/message.go:241.2,242.16 2 1 -github.com/ethereum/go-ethereum/p2p/message.go:245.2,245.38 1 1 -github.com/ethereum/go-ethereum/p2p/message.go:248.2,249.16 2 1 -github.com/ethereum/go-ethereum/p2p/message.go:252.2,252.45 1 1 -github.com/ethereum/go-ethereum/p2p/message.go:255.2,255.12 1 1 -github.com/ethereum/go-ethereum/p2p/message.go:232.16,234.3 1 0 -github.com/ethereum/go-ethereum/p2p/message.go:235.22,237.3 1 0 -github.com/ethereum/go-ethereum/p2p/message.go:238.20,240.3 1 1 -github.com/ethereum/go-ethereum/p2p/message.go:242.16,243.48 1 0 -github.com/ethereum/go-ethereum/p2p/message.go:245.38,247.3 1 0 -github.com/ethereum/go-ethereum/p2p/message.go:249.16,251.3 1 0 -github.com/ethereum/go-ethereum/p2p/message.go:252.45,254.3 1 0 -github.com/ethereum/go-ethereum/p2p/message.go:272.114,281.2 1 0 -github.com/ethereum/go-ethereum/p2p/message.go:285.46,287.16 2 0 -github.com/ethereum/go-ethereum/p2p/message.go:290.2,299.17 2 0 -github.com/ethereum/go-ethereum/p2p/message.go:287.16,289.3 1 0 -github.com/ethereum/go-ethereum/p2p/message.go:304.47,306.16 2 0 -github.com/ethereum/go-ethereum/p2p/message.go:309.2,318.12 2 0 -github.com/ethereum/go-ethereum/p2p/message.go:306.16,308.3 1 0 -github.com/ethereum/go-ethereum/p2p/message.go:323.37,324.47 1 0 -github.com/ethereum/go-ethereum/p2p/message.go:327.2,327.12 1 0 -github.com/ethereum/go-ethereum/p2p/message.go:324.47,326.3 1 0 -github.com/ethereum/go-ethereum/p2p/metrics.go:55.78,57.22 1 1 -github.com/ethereum/go-ethereum/p2p/metrics.go:61.2,61.13 1 0 -github.com/ethereum/go-ethereum/p2p/metrics.go:66.2,67.33 2 0 -github.com/ethereum/go-ethereum/p2p/metrics.go:57.22,59.3 1 1 -github.com/ethereum/go-ethereum/p2p/metrics.go:61.13,63.3 1 0 -github.com/ethereum/go-ethereum/p2p/metrics.go:63.8,65.3 1 0 -github.com/ethereum/go-ethereum/p2p/metrics.go:72.57,76.2 3 0 -github.com/ethereum/go-ethereum/p2p/metrics.go:80.58,84.2 3 0 -github.com/ethereum/go-ethereum/p2p/metrics.go:88.37,90.16 2 0 -github.com/ethereum/go-ethereum/p2p/metrics.go:93.2,93.12 1 0 -github.com/ethereum/go-ethereum/p2p/metrics.go:90.16,92.3 1 0 -github.com/ethereum/go-ethereum/p2p/peer.go:123.58,128.27 2 1 -github.com/ethereum/go-ethereum/p2p/peer.go:132.2,137.13 6 1 -github.com/ethereum/go-ethereum/p2p/peer.go:128.27,131.3 2 1 -github.com/ethereum/go-ethereum/p2p/peer.go:143.79,147.2 3 0 -github.com/ethereum/go-ethereum/p2p/peer.go:150.30,152.2 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:155.35,157.2 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:160.30,162.17 2 1 -github.com/ethereum/go-ethereum/p2p/peer.go:165.2,165.10 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:162.17,164.3 1 0 -github.com/ethereum/go-ethereum/p2p/peer.go:169.34,171.2 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:174.29,177.2 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:182.66,183.42 1 0 -github.com/ethereum/go-ethereum/p2p/peer.go:190.2,190.14 1 0 -github.com/ethereum/go-ethereum/p2p/peer.go:183.42,184.32 1 0 -github.com/ethereum/go-ethereum/p2p/peer.go:184.32,185.28 1 0 -github.com/ethereum/go-ethereum/p2p/peer.go:185.28,187.5 1 0 -github.com/ethereum/go-ethereum/p2p/peer.go:194.38,196.2 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:199.37,201.2 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:205.46,206.23 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:210.2,210.9 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:206.23,208.3 1 0 -github.com/ethereum/go-ethereum/p2p/peer.go:211.24,211.24 0 1 -github.com/ethereum/go-ethereum/p2p/peer.go:212.18,212.18 0 1 -github.com/ethereum/go-ethereum/p2p/peer.go:217.32,220.2 2 0 -github.com/ethereum/go-ethereum/p2p/peer.go:223.31,225.2 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:227.70,239.2 3 1 -github.com/ethereum/go-ethereum/p2p/peer.go:241.33,243.2 1 0 -github.com/ethereum/go-ethereum/p2p/peer.go:245.56,262.6 7 1 -github.com/ethereum/go-ethereum/p2p/peer.go:289.2,292.29 4 1 -github.com/ethereum/go-ethereum/p2p/peer.go:262.6,263.10 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:264.25,267.18 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:271.4,271.28 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:272.24,273.37 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:279.4,279.14 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:280.27,282.14 2 1 -github.com/ethereum/go-ethereum/p2p/peer.go:283.23,285.14 2 1 -github.com/ethereum/go-ethereum/p2p/peer.go:267.18,269.15 2 0 -github.com/ethereum/go-ethereum/p2p/peer.go:273.37,276.5 2 1 -github.com/ethereum/go-ethereum/p2p/peer.go:276.10,278.5 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:295.27,299.6 4 1 -github.com/ethereum/go-ethereum/p2p/peer.go:299.6,300.10 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:301.17,302.51 1 0 -github.com/ethereum/go-ethereum/p2p/peer.go:306.4,306.28 1 0 -github.com/ethereum/go-ethereum/p2p/peer.go:307.19,308.10 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:302.51,305.5 2 0 -github.com/ethereum/go-ethereum/p2p/peer.go:313.44,315.6 2 1 -github.com/ethereum/go-ethereum/p2p/peer.go:315.6,317.17 2 1 -github.com/ethereum/go-ethereum/p2p/peer.go:321.3,322.38 2 1 -github.com/ethereum/go-ethereum/p2p/peer.go:317.17,320.4 2 1 -github.com/ethereum/go-ethereum/p2p/peer.go:322.38,325.4 2 1 -github.com/ethereum/go-ethereum/p2p/peer.go:329.38,330.9 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:361.2,361.12 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:331.27,333.30 2 1 -github.com/ethereum/go-ethereum/p2p/peer.go:334.27,339.13 3 1 -github.com/ethereum/go-ethereum/p2p/peer.go:340.37,342.23 1 0 -github.com/ethereum/go-ethereum/p2p/peer.go:343.10,346.17 2 1 -github.com/ethereum/go-ethereum/p2p/peer.go:349.3,349.22 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:354.3,354.10 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:346.17,348.4 1 0 -github.com/ethereum/go-ethereum/p2p/peer.go:349.22,353.4 3 0 -github.com/ethereum/go-ethereum/p2p/peer.go:355.24,356.14 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:357.19,358.17 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:364.67,366.27 2 1 -github.com/ethereum/go-ethereum/p2p/peer.go:373.2,373.10 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:366.27,367.35 1 0 -github.com/ethereum/go-ethereum/p2p/peer.go:367.35,368.62 1 0 -github.com/ethereum/go-ethereum/p2p/peer.go:368.62,370.5 1 0 -github.com/ethereum/go-ethereum/p2p/peer.go:377.93,383.27 4 1 -github.com/ethereum/go-ethereum/p2p/peer.go:398.2,398.15 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:383.27,384.35 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:384.35,385.62 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:385.62,387.44 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:391.5,394.19 3 1 -github.com/ethereum/go-ethereum/p2p/peer.go:387.44,389.6 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:401.82,403.34 2 1 -github.com/ethereum/go-ethereum/p2p/peer.go:403.34,409.22 6 1 -github.com/ethereum/go-ethereum/p2p/peer.go:412.3,413.13 2 1 -github.com/ethereum/go-ethereum/p2p/peer.go:409.22,411.4 1 0 -github.com/ethereum/go-ethereum/p2p/peer.go:413.13,416.18 3 1 -github.com/ethereum/go-ethereum/p2p/peer.go:422.4,422.21 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:416.18,419.5 2 1 -github.com/ethereum/go-ethereum/p2p/peer.go:419.10,419.28 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:419.28,421.5 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:429.56,430.34 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:435.2,435.57 1 0 -github.com/ethereum/go-ethereum/p2p/peer.go:430.34,431.63 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:431.63,433.4 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:448.50,449.27 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:452.2,457.9 4 1 -github.com/ethereum/go-ethereum/p2p/peer.go:468.2,468.12 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:449.27,451.3 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:458.19,464.17 2 1 -github.com/ethereum/go-ethereum/p2p/peer.go:465.19,466.24 1 0 -github.com/ethereum/go-ethereum/p2p/peer.go:471.43,472.9 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:473.22,475.18 2 1 -github.com/ethereum/go-ethereum/p2p/peer.go:476.19,477.23 1 0 -github.com/ethereum/go-ethereum/p2p/peer.go:501.33,504.31 2 1 -github.com/ethereum/go-ethereum/p2p/peer.go:508.2,515.24 2 1 -github.com/ethereum/go-ethereum/p2p/peer.go:518.2,525.34 6 1 -github.com/ethereum/go-ethereum/p2p/peer.go:536.2,536.13 1 1 -github.com/ethereum/go-ethereum/p2p/peer.go:504.31,506.3 1 0 -github.com/ethereum/go-ethereum/p2p/peer.go:515.24,517.3 1 0 -github.com/ethereum/go-ethereum/p2p/peer.go:525.34,527.53 2 0 -github.com/ethereum/go-ethereum/p2p/peer.go:534.3,534.41 1 0 -github.com/ethereum/go-ethereum/p2p/peer.go:527.53,528.50 1 0 -github.com/ethereum/go-ethereum/p2p/peer.go:528.50,530.5 1 0 -github.com/ethereum/go-ethereum/p2p/peer.go:530.10,532.5 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:245.32,247.33 2 0 -github.com/ethereum/go-ethereum/p2p/server.go:250.2,251.10 2 0 -github.com/ethereum/go-ethereum/p2p/server.go:247.33,249.3 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:254.35,256.24 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:259.2,259.26 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:262.2,262.29 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:265.2,265.24 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:268.2,268.13 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:271.2,271.10 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:256.24,258.3 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:259.26,261.3 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:262.29,264.3 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:265.24,267.3 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:268.13,270.3 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:274.36,277.2 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:279.42,280.6 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:280.6,283.10 3 1 -github.com/ethereum/go-ethereum/p2p/server.go:288.3,288.84 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:283.10,285.4 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:285.9,287.4 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:288.84,290.4 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:295.49,297.2 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:300.36,302.46 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:307.2,307.11 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:302.46,303.27 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:303.27,305.4 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:311.36,313.43 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:316.2,316.14 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:313.43,315.3 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:322.46,324.2 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:331.49,337.46 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:346.2,346.15 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:337.46,339.44 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:339.44,343.4 3 1 -github.com/ethereum/go-ethereum/p2p/server.go:346.15,348.22 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:348.22,349.60 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:349.60,351.5 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:358.53,359.9 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:360.30,360.30 0 1 -github.com/ethereum/go-ethereum/p2p/server.go:361.18,361.18 0 0 -github.com/ethereum/go-ethereum/p2p/server.go:366.56,367.9 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:368.33,368.33 0 1 -github.com/ethereum/go-ethereum/p2p/server.go:369.18,369.18 0 0 -github.com/ethereum/go-ethereum/p2p/server.go:374.75,376.2 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:379.39,384.15 4 1 -github.com/ethereum/go-ethereum/p2p/server.go:387.2,387.18 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:384.15,386.3 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:392.27,394.18 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:398.2,399.25 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:403.2,405.19 3 1 -github.com/ethereum/go-ethereum/p2p/server.go:394.18,397.3 2 0 -github.com/ethereum/go-ethereum/p2p/server.go:399.25,402.3 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:416.85,418.9 2 0 -github.com/ethereum/go-ethereum/p2p/server.go:421.2,422.16 2 0 -github.com/ethereum/go-ethereum/p2p/server.go:425.2,426.28 2 0 -github.com/ethereum/go-ethereum/p2p/server.go:418.9,420.3 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:422.16,424.3 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:430.39,432.2 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:436.40,439.17 3 1 -github.com/ethereum/go-ethereum/p2p/server.go:442.2,444.20 3 1 -github.com/ethereum/go-ethereum/p2p/server.go:447.2,447.22 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:450.2,450.40 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:455.2,455.27 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:458.2,458.29 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:461.2,461.27 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:464.2,473.45 9 1 -github.com/ethereum/go-ethereum/p2p/server.go:476.2,476.26 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:481.2,481.45 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:484.2,488.12 4 1 -github.com/ethereum/go-ethereum/p2p/server.go:439.17,441.3 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:444.20,446.3 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:447.22,449.3 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:450.40,452.3 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:455.27,457.3 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:458.29,460.3 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:461.27,463.3 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:473.45,475.3 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:476.26,477.46 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:477.46,479.4 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:481.45,483.3 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:491.43,495.34 3 1 -github.com/ethereum/go-ethereum/p2p/server.go:498.2,502.16 3 1 -github.com/ethereum/go-ethereum/p2p/server.go:505.2,509.34 4 1 -github.com/ethereum/go-ethereum/p2p/server.go:514.2,514.24 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:532.2,532.12 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:495.34,497.3 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:502.16,504.3 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:509.34,510.34 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:510.34,512.4 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:515.11,515.11 0 1 -github.com/ethereum/go-ethereum/p2p/server.go:517.17,520.32 2 0 -github.com/ethereum/go-ethereum/p2p/server.go:521.10,525.13 2 0 -github.com/ethereum/go-ethereum/p2p/server.go:525.13,527.51 2 0 -github.com/ethereum/go-ethereum/p2p/server.go:527.51,529.5 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:535.43,540.38 3 1 -github.com/ethereum/go-ethereum/p2p/server.go:548.2,548.41 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:552.2,553.16 2 0 -github.com/ethereum/go-ethereum/p2p/server.go:556.2,557.16 2 0 -github.com/ethereum/go-ethereum/p2p/server.go:560.2,562.20 3 0 -github.com/ethereum/go-ethereum/p2p/server.go:571.2,576.22 4 0 -github.com/ethereum/go-ethereum/p2p/server.go:597.2,597.21 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:614.2,614.12 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:540.38,541.56 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:541.56,544.4 2 0 -github.com/ethereum/go-ethereum/p2p/server.go:548.41,550.3 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:553.16,555.3 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:557.16,559.3 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:562.20,563.32 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:563.32,565.14 2 0 -github.com/ethereum/go-ethereum/p2p/server.go:565.14,568.5 2 0 -github.com/ethereum/go-ethereum/p2p/server.go:576.22,577.22 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:581.3,589.17 3 0 -github.com/ethereum/go-ethereum/p2p/server.go:592.3,593.44 2 0 -github.com/ethereum/go-ethereum/p2p/server.go:577.22,580.4 2 0 -github.com/ethereum/go-ethereum/p2p/server.go:589.17,591.4 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:597.21,605.19 3 0 -github.com/ethereum/go-ethereum/p2p/server.go:610.3,610.17 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:605.19,607.4 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:607.9,609.4 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:610.17,612.4 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:617.41,627.21 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:630.2,630.26 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:633.2,634.36 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:627.21,629.3 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:630.26,632.3 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:634.36,636.3 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:639.42,641.2 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:643.49,644.37 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:647.2,647.24 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:652.2,652.16 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:655.2,655.14 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:644.37,646.3 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:647.24,649.3 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:649.8,651.3 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:652.16,654.3 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:658.43,661.16 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:664.2,668.51 3 1 -github.com/ethereum/go-ethereum/p2p/server.go:679.2,681.12 3 1 -github.com/ethereum/go-ethereum/p2p/server.go:661.16,663.3 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:668.51,670.45 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:670.45,672.14 2 0 -github.com/ethereum/go-ethereum/p2p/server.go:672.14,675.5 2 0 -github.com/ethereum/go-ethereum/p2p/server.go:685.44,686.9 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:687.24,688.19 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:689.18,689.18 0 0 -github.com/ethereum/go-ethereum/p2p/server.go:694.26,708.37 7 1 -github.com/ethereum/go-ethereum/p2p/server.go:712.1,713.6 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:780.2,783.21 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:786.2,786.23 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:790.2,790.26 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:796.2,796.21 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:708.37,710.3 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:713.6,714.10 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:715.19,717.17 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:719.30,724.34 3 1 -github.com/ethereum/go-ethereum/p2p/server.go:728.33,733.34 3 1 -github.com/ethereum/go-ethereum/p2p/server.go:737.27,740.32 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:742.43,745.28 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:750.4,750.61 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:752.37,756.18 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:766.4,766.17 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:768.28,774.20 5 1 -github.com/ethereum/go-ethereum/p2p/server.go:724.34,726.5 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:733.34,735.5 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:745.28,748.5 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:756.18,762.20 5 1 -github.com/ethereum/go-ethereum/p2p/server.go:762.20,764.6 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:774.20,776.5 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:783.21,785.3 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:786.23,788.3 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:790.26,792.3 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:796.21,800.3 3 1 -github.com/ethereum/go-ethereum/p2p/server.go:803.99,804.9 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:805.56,806.26 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:807.88,808.26 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:809.33,810.30 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:811.41,812.18 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:813.10,814.13 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:818.93,820.82 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:825.2,825.56 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:820.82,822.3 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:830.33,835.29 3 1 -github.com/ethereum/go-ethereum/p2p/server.go:838.2,839.30 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:845.2,846.15 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:852.2,852.6 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:835.29,837.3 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:839.30,841.3 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:846.15,847.35 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:847.35,849.4 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:852.6,861.7 3 1 -github.com/ethereum/go-ethereum/p2p/server.go:878.3,879.56 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:885.3,885.22 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:893.3,893.13 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:861.7,863.37 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:875.4,875.9 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:863.37,864.44 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:868.5,869.13 2 0 -github.com/ethereum/go-ethereum/p2p/server.go:864.44,867.6 2 0 -github.com/ethereum/go-ethereum/p2p/server.go:870.10,870.25 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:870.25,874.5 3 1 -github.com/ethereum/go-ethereum/p2p/server.go:879.56,883.12 4 1 -github.com/ethereum/go-ethereum/p2p/server.go:885.22,887.53 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:890.4,891.65 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:887.53,889.5 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:893.13,896.4 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:900.60,901.21 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:905.2,905.67 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:909.2,911.80 3 1 -github.com/ethereum/go-ethereum/p2p/server.go:914.2,915.12 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:901.21,903.3 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:905.67,907.3 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:911.80,913.3 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:921.87,923.21 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:929.2,930.16 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:933.2,933.12 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:923.21,925.3 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:925.8,927.3 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:930.16,932.3 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:936.83,941.14 4 1 -github.com/ethereum/go-ethereum/p2p/server.go:946.2,946.21 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:956.2,957.16 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:961.2,961.21 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:966.2,968.16 3 1 -github.com/ethereum/go-ethereum/p2p/server.go:974.2,975.16 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:979.2,979.70 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:983.2,985.16 3 1 -github.com/ethereum/go-ethereum/p2p/server.go:990.2,990.12 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:941.14,943.3 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:946.21,948.71 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:948.71,952.4 3 0 -github.com/ethereum/go-ethereum/p2p/server.go:957.16,960.3 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:961.21,963.3 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:963.8,965.3 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:968.16,971.3 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:975.16,978.3 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:979.70,982.3 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:985.16,988.3 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:993.71,996.53 3 1 -github.com/ethereum/go-ethereum/p2p/server.go:1000.2,1000.44 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:996.53,999.3 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:1005.66,1006.9 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:1011.2,1011.17 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:1007.18,1007.18 0 1 -github.com/ethereum/go-ethereum/p2p/server.go:1008.18,1009.26 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:1014.46,1016.25 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:1021.2,1022.10 2 1 -github.com/ethereum/go-ethereum/p2p/server.go:1016.25,1020.3 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:1026.37,1027.28 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:1030.2,1055.4 4 1 -github.com/ethereum/go-ethereum/p2p/server.go:1027.28,1029.3 1 1 -github.com/ethereum/go-ethereum/p2p/server.go:1074.41,1090.38 6 0 -github.com/ethereum/go-ethereum/p2p/server.go:1099.2,1099.13 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:1090.38,1091.47 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:1091.47,1093.45 2 0 -github.com/ethereum/go-ethereum/p2p/server.go:1096.4,1096.41 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:1093.45,1095.5 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:1103.44,1106.35 2 0 -github.com/ethereum/go-ethereum/p2p/server.go:1112.2,1112.34 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:1119.2,1119.14 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:1106.35,1107.18 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:1107.18,1109.4 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:1112.34,1113.39 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:1113.39,1114.33 1 0 -github.com/ethereum/go-ethereum/p2p/server.go:1114.33,1116.5 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:148.86,156.2 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:161.110,169.9 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:185.2,185.16 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:190.2,190.54 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:195.2,198.46 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:209.2,210.29 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:170.40,171.57 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:172.24,174.68 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:175.10,177.21 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:177.21,180.4 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:180.9,183.4 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:185.16,187.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:190.54,192.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:198.46,201.3 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:201.8,201.27 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:201.27,204.17 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:204.17,206.4 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:214.85,225.2 6 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:227.44,232.2 4 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:235.80,237.14 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:247.2,248.32 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:251.2,258.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:238.19,239.35 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:240.21,241.37 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:242.21,243.37 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:244.10,245.64 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:248.32,249.68 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:262.69,267.53 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:270.2,277.30 6 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:267.53,269.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:281.83,283.48 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:288.2,300.18 8 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:283.48,284.60 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:304.115,306.27 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:311.2,312.16 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:317.2,318.16 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:323.2,337.27 10 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:306.27,307.49 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:312.16,314.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:318.16,320.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:341.123,348.78 4 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:351.2,352.16 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:355.2,362.16 6 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:365.2,370.36 4 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:375.2,376.16 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:379.2,379.23 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:348.78,350.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:352.16,354.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:362.16,364.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:370.36,372.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:376.16,378.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:383.80,388.16 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:391.2,396.18 6 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:388.16,390.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:399.103,403.49 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:406.2,410.16 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:413.2,413.23 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:403.49,405.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:410.16,412.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:417.102,419.41 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:422.2,432.56 9 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:437.2,449.19 8 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:459.2,459.28 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:419.41,421.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:432.56,434.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:450.21,451.48 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:452.21,453.73 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:454.19,455.61 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:456.10,457.23 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:463.82,464.51 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:467.2,477.15 6 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:464.51,466.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:480.136,482.16 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:488.2,489.16 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:495.2,497.23 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:482.16,485.3 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:489.16,492.3 2 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:500.127,501.61 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:506.2,507.22 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:511.2,512.16 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:516.2,519.16 4 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:523.2,524.16 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:528.2,530.30 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:501.61,503.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:507.22,509.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:512.16,514.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:519.16,521.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:524.16,526.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:534.91,536.50 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:539.2,550.34 5 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:553.2,556.18 4 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:536.50,538.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:550.34,552.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:562.111,564.21 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:580.2,580.17 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:583.2,583.18 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:564.21,566.58 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:569.3,569.49 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:566.58,568.4 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:569.49,571.18 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:574.4,574.24 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:577.4,577.12 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:571.18,573.5 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:574.24,576.5 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:580.17,582.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:587.106,588.49 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:591.2,599.30 7 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:603.2,603.17 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:588.49,590.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:599.30,602.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:606.90,608.16 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:611.2,611.23 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:614.2,614.47 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:608.16,610.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:611.23,613.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:619.56,620.32 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:623.2,623.28 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:626.2,626.59 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:629.2,629.33 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:632.2,632.12 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:620.32,622.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:623.28,625.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:626.59,628.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:629.33,631.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:636.54,638.16 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:641.2,641.38 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:638.16,639.31 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/encoding.go:644.40,648.2 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:149.61,151.15 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:177.2,177.51 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:180.2,180.56 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:183.2,183.17 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:152.15,153.18 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:154.15,155.18 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:156.19,157.22 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:158.16,159.19 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:160.22,161.25 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:162.23,163.26 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:164.24,165.27 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:166.17,167.20 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:168.19,169.22 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:170.26,171.29 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:172.21,173.24 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:174.10,175.58 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:177.51,179.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:180.56,182.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:186.40,186.65 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:187.40,187.66 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:188.40,188.54 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:189.41,189.42 0 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:191.38,191.61 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:192.38,192.62 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:193.38,193.52 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:194.39,194.40 0 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:196.40,196.60 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:197.40,197.58 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:198.40,198.58 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:199.40,199.56 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:201.40,201.60 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:202.40,202.58 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:203.40,203.58 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:204.40,204.56 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:206.44,206.68 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:207.44,207.66 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:208.44,208.62 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:209.44,209.60 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:211.41,211.62 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:212.41,212.60 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:213.41,213.59 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:214.41,214.57 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:216.47,216.70 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:217.47,217.72 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:218.47,218.65 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:219.47,219.63 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:221.48,221.72 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:222.48,222.74 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:223.48,223.66 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:224.48,224.64 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:226.49,226.74 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:227.49,227.76 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:228.49,228.67 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:229.49,229.65 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:231.44,231.68 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:232.44,232.66 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:233.44,233.62 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:234.44,234.60 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:236.42,236.64 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:237.42,237.62 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:238.42,238.60 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:239.42,239.58 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:241.51,241.82 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:242.51,242.80 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:243.51,243.69 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:244.51,244.67 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:246.46,246.72 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:247.46,247.70 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:248.46,248.64 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/msg.go:249.46,249.62 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:60.42,62.2 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:64.70,66.16 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:69.2,76.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:66.16,67.38 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:79.57,83.2 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:85.42,88.2 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:91.62,94.2 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:97.68,99.9 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:102.2,102.24 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:99.9,101.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:106.66,107.41 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:110.2,110.12 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:107.41,109.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:114.79,116.2 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:119.75,121.2 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:124.92,127.2 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:130.67,132.2 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:135.39,137.44 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:137.44,138.32 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/session.go:138.32,140.4 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:44.48,45.19 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:46.21,47.36 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:48.10,49.77 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:54.77,55.15 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:56.21,57.19 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:60.3,60.36 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:61.10,62.86 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:57.19,59.4 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:67.81,74.2 6 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:77.120,79.19 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:80.21,82.17 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:85.3,85.35 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:86.10,87.74 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:82.17,84.4 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:94.32,94.54 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:97.116,98.59 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:99.12,101.29 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:104.3,105.50 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:108.3,108.13 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:109.10,110.83 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:101.29,103.4 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:105.50,107.4 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:117.120,125.16 7 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:128.2,132.21 5 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:135.2,135.13 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:125.16,127.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:132.21,134.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:139.70,141.17 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:144.2,147.12 4 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:141.17,143.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:153.79,155.16 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:158.2,159.16 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:162.2,162.59 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:155.16,156.58 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:159.16,160.49 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:166.66,168.16 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:171.2,171.32 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:174.2,175.16 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:178.2,179.45 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:168.16,170.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:171.32,173.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5wire/crypto.go:175.16,177.3 1 0 -github.com/ethereum/go-ethereum/miner/miner.go:73.170,86.2 4 1 -github.com/ethereum/go-ethereum/miner/miner.go:92.30,96.15 3 1 -github.com/ethereum/go-ethereum/miner/miner.go:102.2,105.6 4 1 -github.com/ethereum/go-ethereum/miner/miner.go:96.15,97.23 1 1 -github.com/ethereum/go-ethereum/miner/miner.go:97.23,99.4 1 1 -github.com/ethereum/go-ethereum/miner/miner.go:105.6,106.10 1 1 -github.com/ethereum/go-ethereum/miner/miner.go:107.26,108.17 1 1 -github.com/ethereum/go-ethereum/miner/miner.go:113.4,113.26 1 1 -github.com/ethereum/go-ethereum/miner/miner.go:138.32,140.16 2 1 -github.com/ethereum/go-ethereum/miner/miner.go:143.4,143.22 1 1 -github.com/ethereum/go-ethereum/miner/miner.go:144.23,146.23 2 1 -github.com/ethereum/go-ethereum/miner/miner.go:147.23,149.10 2 1 -github.com/ethereum/go-ethereum/miner/miner.go:108.17,111.13 2 1 -github.com/ethereum/go-ethereum/miner/miner.go:114.31,118.18 4 1 -github.com/ethereum/go-ethereum/miner/miner.go:123.32,125.20 2 1 -github.com/ethereum/go-ethereum/miner/miner.go:129.30,131.20 2 1 -github.com/ethereum/go-ethereum/miner/miner.go:136.5,136.25 1 1 -github.com/ethereum/go-ethereum/miner/miner.go:118.18,122.6 2 1 -github.com/ethereum/go-ethereum/miner/miner.go:125.20,128.6 2 1 -github.com/ethereum/go-ethereum/miner/miner.go:131.20,134.6 2 1 -github.com/ethereum/go-ethereum/miner/miner.go:140.16,142.5 1 1 -github.com/ethereum/go-ethereum/miner/miner.go:154.52,156.2 1 1 -github.com/ethereum/go-ethereum/miner/miner.go:158.28,160.2 1 1 -github.com/ethereum/go-ethereum/miner/miner.go:162.29,165.2 2 1 -github.com/ethereum/go-ethereum/miner/miner.go:167.35,169.2 1 1 -github.com/ethereum/go-ethereum/miner/miner.go:171.39,172.49 1 0 -github.com/ethereum/go-ethereum/miner/miner.go:175.2,175.10 1 0 -github.com/ethereum/go-ethereum/miner/miner.go:172.49,174.3 1 0 -github.com/ethereum/go-ethereum/miner/miner.go:178.50,179.54 1 0 -github.com/ethereum/go-ethereum/miner/miner.go:182.2,183.12 2 0 -github.com/ethereum/go-ethereum/miner/miner.go:179.54,181.3 1 0 -github.com/ethereum/go-ethereum/miner/miner.go:187.65,189.2 1 0 -github.com/ethereum/go-ethereum/miner/miner.go:192.62,194.2 1 0 -github.com/ethereum/go-ethereum/miner/miner.go:201.49,203.2 1 0 -github.com/ethereum/go-ethereum/miner/miner.go:206.78,208.2 1 0 -github.com/ethereum/go-ethereum/miner/miner.go:210.55,213.2 2 1 -github.com/ethereum/go-ethereum/miner/miner.go:217.45,219.2 1 0 -github.com/ethereum/go-ethereum/miner/miner.go:225.37,227.2 1 0 -github.com/ethereum/go-ethereum/miner/miner.go:234.38,236.2 1 0 -github.com/ethereum/go-ethereum/miner/miner.go:240.142,242.2 1 0 -github.com/ethereum/go-ethereum/miner/miner.go:246.85,248.2 1 0 -github.com/ethereum/go-ethereum/miner/unconfirmed.go:57.80,62.2 1 1 -github.com/ethereum/go-ethereum/miner/unconfirmed.go:65.70,79.23 6 1 -github.com/ethereum/go-ethereum/miner/unconfirmed.go:85.2,85.71 1 1 -github.com/ethereum/go-ethereum/miner/unconfirmed.go:79.23,81.3 1 1 -github.com/ethereum/go-ethereum/miner/unconfirmed.go:81.8,83.3 1 1 -github.com/ethereum/go-ethereum/miner/unconfirmed.go:91.52,95.24 3 1 -github.com/ethereum/go-ethereum/miner/unconfirmed.go:95.24,98.44 2 1 -github.com/ethereum/go-ethereum/miner/unconfirmed.go:102.3,103.10 2 1 -github.com/ethereum/go-ethereum/miner/unconfirmed.go:128.3,128.50 1 1 -github.com/ethereum/go-ethereum/miner/unconfirmed.go:98.44,99.9 1 1 -github.com/ethereum/go-ethereum/miner/unconfirmed.go:104.22,105.97 1 1 -github.com/ethereum/go-ethereum/miner/unconfirmed.go:106.35,107.91 1 0 -github.com/ethereum/go-ethereum/miner/unconfirmed.go:108.11,111.111 2 0 -github.com/ethereum/go-ethereum/miner/unconfirmed.go:121.4,121.16 1 0 -github.com/ethereum/go-ethereum/miner/unconfirmed.go:111.111,112.66 1 0 -github.com/ethereum/go-ethereum/miner/unconfirmed.go:112.66,113.43 1 0 -github.com/ethereum/go-ethereum/miner/unconfirmed.go:113.43,114.36 1 0 -github.com/ethereum/go-ethereum/miner/unconfirmed.go:114.36,116.13 2 0 -github.com/ethereum/go-ethereum/miner/unconfirmed.go:121.16,123.5 1 0 -github.com/ethereum/go-ethereum/miner/unconfirmed.go:123.10,125.5 1 0 -github.com/ethereum/go-ethereum/miner/unconfirmed.go:128.50,130.4 1 1 -github.com/ethereum/go-ethereum/miner/unconfirmed.go:130.9,134.4 3 1 -github.com/ethereum/go-ethereum/miner/worker.go:99.45,110.24 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:116.2,119.38 4 1 -github.com/ethereum/go-ethereum/miner/worker.go:122.2,122.12 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:110.24,113.3 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:119.38,121.3 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:126.53,128.35 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:131.2,131.15 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:128.35,130.3 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:137.35,138.22 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:141.2,141.28 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:138.22,140.3 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:250.188,283.36 6 1 -github.com/ethereum/go-ethereum/miner/worker.go:288.2,295.10 6 1 -github.com/ethereum/go-ethereum/miner/worker.go:298.2,298.15 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:283.36,286.3 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:295.10,297.3 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:302.52,306.2 3 1 -github.com/ethereum/go-ethereum/miner/worker.go:308.42,312.2 3 0 -github.com/ethereum/go-ethereum/miner/worker.go:315.41,319.2 3 1 -github.com/ethereum/go-ethereum/miner/worker.go:322.62,323.9 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:324.40,324.40 0 0 -github.com/ethereum/go-ethereum/miner/worker.go:325.18,325.18 0 0 -github.com/ethereum/go-ethereum/miner/worker.go:330.35,332.2 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:335.34,337.2 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:340.59,344.28 3 0 -github.com/ethereum/go-ethereum/miner/worker.go:347.2,347.48 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:344.28,346.3 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:351.46,356.2 3 0 -github.com/ethereum/go-ethereum/miner/worker.go:359.75,364.2 3 0 -github.com/ethereum/go-ethereum/miner/worker.go:367.26,370.2 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:373.25,375.2 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:378.35,380.2 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:384.26,388.2 3 1 -github.com/ethereum/go-ethereum/miner/worker.go:391.94,413.2 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:416.54,429.40 6 1 -github.com/ethereum/go-ethereum/miner/worker.go:443.2,443.38 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:453.2,453.6 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:429.40,430.23 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:433.3,434.10 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:439.3,440.34 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:430.23,432.4 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:435.97,435.97 0 1 -github.com/ethereum/go-ethereum/miner/worker.go:436.19,437.10 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:443.38,445.36 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:450.3,450.23 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:445.36,446.52 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:446.52,448.5 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:453.6,454.10 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:455.20,458.41 3 1 -github.com/ethereum/go-ethereum/miner/worker.go:460.32,463.41 3 1 -github.com/ethereum/go-ethereum/miner/worker.go:465.18,468.89 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:477.43,479.38 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:483.4,486.29 3 0 -github.com/ethereum/go-ethereum/miner/worker.go:490.39,492.18 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:503.4,503.29 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:507.19,508.10 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:468.89,470.41 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:474.5,474.42 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:470.41,472.14 2 0 -github.com/ethereum/go-ethereum/miner/worker.go:479.38,482.5 2 0 -github.com/ethereum/go-ethereum/miner/worker.go:486.29,488.5 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:492.18,497.5 4 0 -github.com/ethereum/go-ethereum/miner/worker.go:497.10,501.5 3 1 -github.com/ethereum/go-ethereum/miner/worker.go:503.29,505.5 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:516.29,521.15 5 1 -github.com/ethereum/go-ethereum/miner/worker.go:527.2,530.6 3 1 -github.com/ethereum/go-ethereum/miner/worker.go:521.15,522.23 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:522.23,524.4 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:530.6,531.10 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:532.29,533.59 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:535.29,537.18 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:544.30,546.57 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:549.4,549.58 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:553.4,553.66 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:561.4,561.70 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:568.24,570.43 2 0 -github.com/ethereum/go-ethereum/miner/worker.go:575.4,575.44 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:581.24,587.42 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:614.4,614.50 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:617.19,618.10 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:619.25,620.10 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:621.31,622.10 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:623.31,624.10 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:537.18,540.5 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:540.10,542.5 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:546.57,547.13 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:549.58,550.13 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:553.66,555.5 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:555.10,557.5 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:561.70,563.71 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:563.71,565.6 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:570.43,571.66 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:571.66,573.6 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:575.44,576.66 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:576.66,578.6 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:587.42,589.70 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:592.5,593.31 2 0 -github.com/ethereum/go-ethereum/miner/worker.go:597.5,603.35 4 0 -github.com/ethereum/go-ethereum/miner/worker.go:589.70,590.14 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:593.31,596.6 2 0 -github.com/ethereum/go-ethereum/miner/worker.go:603.35,605.6 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:606.10,610.72 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:610.72,612.6 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:631.29,639.22 3 1 -github.com/ethereum/go-ethereum/miner/worker.go:645.2,645.6 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:639.22,640.20 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:640.20,643.4 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:645.6,646.10 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:647.27,648.28 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:652.4,653.24 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:657.4,660.53 3 1 -github.com/ethereum/go-ethereum/miner/worker.go:663.4,667.81 4 1 -github.com/ethereum/go-ethereum/miner/worker.go:673.19,675.10 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:648.28,650.5 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:653.24,654.13 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:660.53,661.13 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:667.81,672.5 4 1 -github.com/ethereum/go-ethereum/miner/worker.go:682.31,684.6 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:684.6,685.10 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:686.30,688.20 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:692.4,692.57 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:695.4,696.23 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:704.4,711.14 5 1 -github.com/ethereum/go-ethereum/miner/worker.go:716.4,720.46 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:742.4,743.18 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:747.4,754.57 3 1 -github.com/ethereum/go-ethereum/miner/worker.go:756.19,757.10 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:688.20,689.13 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:692.57,693.13 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:696.23,699.41 3 0 -github.com/ethereum/go-ethereum/miner/worker.go:699.41,701.14 2 0 -github.com/ethereum/go-ethereum/miner/worker.go:711.14,713.13 2 0 -github.com/ethereum/go-ethereum/miner/worker.go:720.46,733.46 8 1 -github.com/ethereum/go-ethereum/miner/worker.go:739.5,739.41 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:733.46,738.6 4 1 -github.com/ethereum/go-ethereum/miner/worker.go:743.18,745.13 2 0 -github.com/ethereum/go-ethereum/miner/worker.go:763.116,767.16 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:777.2,777.16 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:780.2,793.71 3 1 -github.com/ethereum/go-ethereum/miner/worker.go:801.2,802.17 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:767.16,776.3 2 0 -github.com/ethereum/go-ethereum/miner/worker.go:777.16,779.3 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:793.71,794.43 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:797.3,798.37 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:794.43,796.4 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:806.75,807.32 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:810.2,811.41 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:814.2,814.47 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:817.2,817.47 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:820.2,820.31 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:823.2,824.12 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:807.32,809.3 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:811.41,813.3 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:814.47,816.3 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:817.47,819.3 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:820.31,822.3 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:828.51,841.2 5 1 -github.com/ethereum/go-ethereum/miner/worker.go:843.99,847.16 3 1 -github.com/ethereum/go-ethereum/miner/worker.go:851.2,854.26 3 1 -github.com/ethereum/go-ethereum/miner/worker.go:847.16,850.3 2 0 -github.com/ethereum/go-ethereum/miner/worker.go:857.118,859.24 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:862.2,864.6 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:947.2,947.46 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:964.2,964.22 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:967.2,967.14 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:859.24,861.3 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:864.6,871.77 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:886.3,886.39 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:891.3,892.16 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:899.3,902.67 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:909.3,912.10 3 1 -github.com/ethereum/go-ethereum/miner/worker.go:871.77,873.62 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:883.4,883.64 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:873.62,875.20 2 0 -github.com/ethereum/go-ethereum/miner/worker.go:878.5,881.6 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:875.20,877.6 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:886.39,888.9 2 0 -github.com/ethereum/go-ethereum/miner/worker.go:892.16,893.9 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:902.67,906.12 3 0 -github.com/ethereum/go-ethereum/miner/worker.go:913.48,916.13 2 0 -github.com/ethereum/go-ethereum/miner/worker.go:918.44,921.15 2 0 -github.com/ethereum/go-ethereum/miner/worker.go:923.45,926.13 2 0 -github.com/ethereum/go-ethereum/miner/worker.go:928.28,932.15 3 1 -github.com/ethereum/go-ethereum/miner/worker.go:934.51,937.13 2 0 -github.com/ethereum/go-ethereum/miner/worker.go:939.11,943.15 2 0 -github.com/ethereum/go-ethereum/miner/worker.go:947.46,956.35 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:960.3,960.30 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:956.35,959.4 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:964.22,966.3 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:984.79,990.45 4 1 -github.com/ethereum/go-ethereum/miner/worker.go:993.2,993.19 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:998.2,999.32 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:1006.2,1014.45 3 1 -github.com/ethereum/go-ethereum/miner/worker.go:1018.2,1018.41 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1022.2,1022.43 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1030.2,1030.58 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1037.2,1038.16 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:1043.2,1043.24 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1060.2,1060.17 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:990.45,992.3 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:993.19,995.3 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:999.32,1000.26 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1003.3,1003.32 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1000.26,1002.4 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:1014.45,1016.3 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1018.41,1020.3 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1022.43,1024.47 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:1024.47,1027.4 2 0 -github.com/ethereum/go-ethereum/miner/worker.go:1030.58,1033.3 2 0 -github.com/ethereum/go-ethereum/miner/worker.go:1038.16,1041.3 2 0 -github.com/ethereum/go-ethereum/miner/worker.go:1043.24,1044.61 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1057.3,1058.31 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:1044.61,1045.36 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1045.36,1046.29 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1049.5,1049.62 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1046.29,1047.11 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1049.62,1051.6 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1051.11,1053.6 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1066.71,1071.50 3 1 -github.com/ethereum/go-ethereum/miner/worker.go:1077.2,1077.23 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1083.2,1083.24 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1071.50,1072.46 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1072.46,1075.4 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:1077.23,1079.48 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:1079.48,1081.4 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:1083.24,1085.48 2 0 -github.com/ethereum/go-ethereum/miner/worker.go:1085.48,1087.4 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:1092.77,1094.16 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:1097.2,1100.114 3 1 -github.com/ethereum/go-ethereum/miner/worker.go:1094.16,1096.3 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1105.78,1110.19 3 1 -github.com/ethereum/go-ethereum/miner/worker.go:1117.2,1121.16 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:1126.2,1126.52 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1130.2,1135.22 3 1 -github.com/ethereum/go-ethereum/miner/worker.go:1138.2,1138.18 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1110.19,1111.39 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1115.3,1115.24 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1111.39,1114.4 2 0 -github.com/ethereum/go-ethereum/miner/worker.go:1121.16,1123.3 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:1126.52,1128.3 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1135.22,1137.3 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1145.96,1146.19 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1172.2,1172.12 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1175.2,1175.12 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1146.19,1147.22 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1152.3,1154.17 3 1 -github.com/ethereum/go-ethereum/miner/worker.go:1158.3,1158.38 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1147.22,1149.4 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1154.17,1156.4 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:1158.38,1159.11 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1160.106,1165.58 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:1167.20,1168.34 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:1172.12,1174.3 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1179.139,1192.9 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:1193.26,1195.19 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:1198.3,1198.20 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1199.18,1200.41 1 0 -github.com/ethereum/go-ethereum/miner/worker.go:1195.19,1197.4 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1206.58,1209.2 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:1212.63,1214.29 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:1218.2,1218.15 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1214.29,1217.3 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:1222.59,1223.9 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1224.30,1224.30 0 1 -github.com/ethereum/go-ethereum/miner/worker.go:1225.18,1225.18 0 0 -github.com/ethereum/go-ethereum/miner/worker.go:1230.74,1232.42 2 1 -github.com/ethereum/go-ethereum/miner/worker.go:1236.2,1236.108 1 1 -github.com/ethereum/go-ethereum/miner/worker.go:1232.42,1235.3 2 1 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:41.34,41.50 1 1 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:43.47,45.2 1 1 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:47.50,49.2 1 1 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:54.47,56.2 1 1 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:61.30,61.46 1 0 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:66.31,66.48 1 0 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:71.30,71.46 1 1 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:76.31,76.48 1 0 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:83.29,83.44 1 1 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:90.29,91.28 1 0 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:94.2,94.13 1 0 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:91.28,93.3 1 0 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:98.42,99.40 1 0 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:102.2,102.41 1 0 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:105.2,105.56 1 0 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:99.40,101.3 1 0 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:102.41,104.3 1 0 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:109.45,110.47 1 0 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:113.2,113.35 1 0 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:116.2,116.12 1 0 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:110.47,112.3 1 0 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:113.35,115.3 1 0 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:122.31,122.46 1 1 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:125.44,127.16 2 1 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:130.2,130.27 1 1 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:127.16,129.3 1 0 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:134.47,135.47 1 1 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:138.2,138.18 1 1 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:141.2,141.12 1 1 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:135.47,137.3 1 0 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:138.18,140.3 1 0 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:147.31,147.47 1 1 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:150.44,152.16 2 1 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:155.2,155.27 1 1 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:152.16,154.3 1 0 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:159.47,160.47 1 1 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:163.2,163.19 1 1 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:166.2,166.12 1 1 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:160.47,162.3 1 0 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:163.19,165.3 1 0 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:176.37,177.28 1 0 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:180.2,180.56 1 0 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:177.28,179.3 1 0 -github.com/ethereum/go-ethereum/p2p/enr/entries.go:185.33,188.2 2 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:69.56,71.14 2 0 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:74.2,74.25 1 0 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:71.14,73.3 1 0 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:77.47,79.14 2 0 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:82.2,82.22 1 0 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:79.14,81.3 1 0 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:100.31,102.2 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:107.35,111.2 3 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:118.38,119.50 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:120.2,120.52 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:126.2,126.53 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:119.50,119.87 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:120.52,121.58 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:124.3,124.13 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:121.58,123.4 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:132.31,134.16 2 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:137.2,141.48 4 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:142.2,142.9 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:156.2,156.17 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:134.16,135.65 1 0 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:141.48,141.83 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:143.50,145.20 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:146.24,151.16 4 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:152.10,154.48 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:159.31,160.24 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:163.2,164.13 2 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:160.24,162.3 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:168.37,169.24 1 0 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:172.2,174.12 3 0 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:169.24,171.3 1 0 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:179.46,180.24 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:183.2,184.12 2 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:180.24,182.3 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:188.49,190.16 2 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:193.2,195.12 3 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:190.16,192.3 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:198.70,200.16 2 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:203.2,203.26 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:208.2,209.36 2 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:212.2,212.48 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:218.2,218.42 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:225.2,226.20 2 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:251.2,251.30 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:200.16,202.3 1 0 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:203.26,205.3 1 0 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:209.36,211.3 1 0 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:212.48,213.21 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:216.3,216.23 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:213.21,215.4 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:218.42,219.21 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:222.3,222.23 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:219.21,221.4 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:226.20,228.41 2 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:234.3,234.41 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:240.3,240.12 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:248.3,249.17 2 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:228.41,229.22 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:232.4,232.24 1 0 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:229.22,230.10 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:234.41,235.22 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:238.4,238.24 1 0 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:235.22,237.5 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:240.12,241.23 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:244.4,244.22 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:241.23,243.5 1 0 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:244.22,246.5 1 0 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:255.42,259.2 3 0 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:262.58,264.2 1 0 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:273.61,274.9 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:294.2,294.12 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:276.30,277.77 1 0 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:278.30,279.77 1 0 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:281.16,282.42 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:285.3,286.17 2 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:289.3,289.32 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:291.10,292.32 1 0 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:282.42,284.4 1 0 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:286.17,288.4 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:298.67,300.28 2 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:303.2,303.13 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:300.28,302.3 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:306.61,310.52 4 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:313.2,313.26 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:316.2,316.17 1 1 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:310.52,312.3 1 0 -github.com/ethereum/go-ethereum/p2p/enr/enr.go:313.26,315.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:64.41,71.22 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:74.2,74.30 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:77.2,77.25 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:80.2,80.24 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:83.2,83.29 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:86.2,86.25 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:89.2,89.23 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:92.2,92.12 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:71.22,73.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:74.30,76.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:77.25,79.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:80.24,82.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:83.29,85.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:86.25,88.3 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:89.23,91.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:96.36,99.16 3 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:102.2,108.3 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:99.16,100.13 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:112.54,114.16 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:117.2,119.46 3 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:122.2,123.15 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:114.16,116.3 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:119.46,121.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:128.70,130.27 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:135.2,135.16 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:130.27,131.41 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:131.41,133.4 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:139.86,140.70 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:153.2,153.27 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:140.70,143.17 3 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:146.3,146.28 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:151.3,151.55 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:143.17,145.4 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:146.28,147.42 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:147.42,149.5 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:156.72,158.16 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:161.2,161.36 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:164.2,164.15 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:158.16,160.3 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:161.36,163.3 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:169.88,173.46 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:176.2,177.42 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:181.2,181.72 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:189.2,190.15 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:173.46,175.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:177.42,179.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:181.72,183.17 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:186.3,187.16 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:183.17,185.4 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:194.90,196.16 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:199.2,202.16 4 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:205.2,205.27 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:217.2,217.41 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:196.16,198.3 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:202.16,204.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:205.27,207.29 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:210.3,210.64 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:215.3,215.16 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:207.29,208.12 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:210.64,212.4 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:212.9,212.24 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:212.24,214.4 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:235.54,243.2 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:246.46,248.2 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:251.35,257.2 4 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:260.39,263.2 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:266.53,268.16 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:271.2,272.12 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:268.16,270.3 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:276.50,277.6 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:277.6,279.16 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:282.3,283.17 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:290.3,290.15 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:279.16,281.4 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:283.17,284.27 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:287.4,288.12 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:284.27,286.5 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:290.15,292.4 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:297.50,303.21 3 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:308.2,308.19 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:313.2,313.6 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:303.21,305.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:308.19,311.3 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:313.6,315.10 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:316.16,318.39 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:319.23,322.37 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:326.11,328.14 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:322.37,325.5 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:334.79,340.30 3 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:347.2,347.30 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:350.2,350.31 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:340.30,341.25 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:341.25,343.4 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:343.9,345.4 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:347.30,349.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:354.72,357.27 3 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:365.2,369.9 5 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:357.27,359.42 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:359.42,362.4 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:370.21,371.14 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:372.23,373.15 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:378.42,380.28 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:386.2,386.34 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:380.28,381.31 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:381.31,383.4 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:386.34,387.27 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/client.go:387.27,390.4 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/error.go:49.37,50.40 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/error.go:53.2,53.42 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/error.go:50.40,52.3 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/error.go:61.38,63.2 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:50.74,52.2 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:55.60,56.60 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:59.2,59.50 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:62.2,62.49 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:65.2,65.12 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:56.60,58.3 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:59.50,61.3 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:62.49,64.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:70.82,71.24 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:78.2,78.15 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:85.2,85.22 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:89.2,94.20 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:97.2,97.34 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:71.24,72.44 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:72.44,74.4 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:78.15,79.17 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:79.17,81.4 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:85.22,88.3 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:94.20,96.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:101.44,106.2 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:110.33,111.56 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:114.2,115.31 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:111.56,113.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:118.63,121.16 3 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:124.2,126.36 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:130.2,130.12 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:121.16,123.3 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:126.36,129.3 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:133.83,137.16 4 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:140.2,141.33 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:144.2,144.17 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:137.16,139.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:141.33,143.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:147.39,149.2 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:152.49,153.17 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:156.2,157.18 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:161.2,161.17 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:153.17,155.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:157.18,160.3 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:165.61,166.33 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:170.2,174.16 5 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:178.2,183.52 4 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:187.2,187.50 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:190.2,190.12 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:166.33,168.3 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:174.16,177.3 2 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:183.52,186.3 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:187.50,189.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:194.44,198.2 3 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:200.63,202.2 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:207.68,209.9 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:217.2,219.9 3 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:210.29,211.27 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:212.28,213.26 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:214.10,215.14 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:220.21,221.14 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:222.20,223.15 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:237.85,239.2 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:241.36,243.2 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:245.64,246.17 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:257.2,257.12 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:246.17,251.17 5 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:254.3,255.30 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:251.17,253.4 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:260.85,262.16 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:265.2,265.23 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:279.2,279.15 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:262.16,264.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:266.17,267.14 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:270.3,270.14 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:271.18,272.15 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:275.3,275.14 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:276.20,277.49 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:267.14,269.4 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:272.15,274.4 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:288.50,290.2 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:292.47,293.40 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:297.2,297.24 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:300.2,300.35 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:303.2,304.19 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:293.40,295.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:297.24,299.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:300.35,302.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:308.72,310.19 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:310.19,314.36 3 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:314.36,315.28 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:318.4,318.32 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:321.4,323.22 3 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:315.28,316.13 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:318.32,319.13 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/sync.go:323.22,326.5 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:43.83,46.16 3 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:49.2,52.27 4 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:46.16,48.3 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:57.78,59.54 2 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:62.2,64.35 3 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:67.2,68.12 2 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:59.54,61.3 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:64.35,66.3 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:72.27,74.2 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:77.35,79.2 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:82.55,84.30 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:91.2,91.16 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:84.30,86.19 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:89.3,89.27 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:86.19,88.4 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:95.33,97.30 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:102.2,102.14 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:97.30,98.35 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:98.35,100.4 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:106.38,108.30 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:113.2,113.14 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:108.30,109.34 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:109.34,111.4 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:154.77,160.28 4 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:167.2,168.28 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:171.2,172.26 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:181.2,187.15 7 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:160.28,161.39 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:161.39,163.4 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:168.28,170.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:172.26,174.17 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:177.3,177.22 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:174.17,176.4 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:190.45,191.23 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:194.2,194.33 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:202.2,203.23 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:213.2,213.26 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:191.23,193.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:194.33,196.29 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:200.3,200.30 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:196.29,199.4 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:203.23,205.23 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:208.3,211.34 4 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:205.23,207.4 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:216.50,217.40 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:220.2,220.14 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:217.40,219.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:263.32,267.2 3 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:269.37,271.2 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:273.38,277.2 3 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:279.67,283.2 3 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:285.39,287.2 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:289.36,291.2 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:293.37,295.2 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:297.70,301.2 3 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:305.75,306.9 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:307.40,308.27 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:309.42,310.24 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:311.39,312.35 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:313.10,314.30 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:318.45,321.108 3 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:324.2,324.48 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:327.2,328.55 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:331.2,331.48 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:321.108,323.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:324.48,326.3 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:328.55,330.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:334.46,336.16 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:339.2,339.16 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:336.16,338.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:342.46,343.39 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:346.2,348.15 3 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:351.2,353.16 3 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:356.2,357.16 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:360.2,360.40 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:343.39,345.3 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:348.15,350.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:353.16,355.3 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:357.16,359.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:363.43,365.13 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:368.2,369.42 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:375.2,375.34 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:365.13,367.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:369.42,370.22 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:373.3,373.29 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:370.22,372.4 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:378.73,381.16 3 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:384.2,385.51 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:388.2,389.16 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:392.2,392.26 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:381.16,383.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:385.51,387.3 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:389.16,391.3 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:395.33,397.73 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:400.2,402.19 3 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:397.73,399.3 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:406.39,408.24 2 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:411.2,411.22 1 1 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:408.24,409.59 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:417.79,419.16 2 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:422.2,422.34 1 0 -github.com/ethereum/go-ethereum/p2p/dnsdisc/tree.go:419.16,421.3 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:149.70,150.17 1 1 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:153.2,156.3 1 1 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:150.17,152.3 1 1 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:166.70,176.2 4 1 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:180.37,183.2 2 1 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:189.73,195.16 3 1 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:200.2,200.18 1 1 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:203.2,206.110 3 1 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:195.16,198.3 2 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:200.18,202.3 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:246.44,255.2 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:258.61,262.33 3 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:265.2,268.12 3 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:262.33,264.3 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:272.45,276.34 3 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:279.2,280.12 2 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:276.34,278.3 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:287.52,292.2 3 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:296.52,299.32 2 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:304.2,307.33 3 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:313.2,313.29 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:316.2,316.29 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:319.2,319.15 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:299.32,303.3 3 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:307.33,309.3 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:309.8,309.26 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:309.26,311.3 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:313.29,315.3 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:316.29,318.3 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:326.56,331.2 3 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:335.56,337.32 2 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:344.2,344.35 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:347.2,347.19 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:337.32,339.37 2 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:342.3,342.20 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:339.37,341.4 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:344.35,346.3 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:355.52,364.2 4 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:370.50,379.2 4 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:383.50,385.34 2 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:388.2,388.16 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:385.34,387.3 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:393.27,400.12 4 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:405.2,408.56 3 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:412.2,417.86 5 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:400.12,402.3 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:408.56,410.3 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:423.29,425.26 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:431.2,431.44 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:435.2,438.37 3 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:441.2,441.117 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:425.26,428.3 2 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:431.44,433.3 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:438.37,440.3 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:446.82,451.20 4 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:454.2,454.42 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:451.20,453.3 1 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:459.85,463.47 3 0 -github.com/ethereum/go-ethereum/p2p/msgrate/msgrate.go:463.47,465.3 1 0 -github.com/ethereum/go-ethereum/p2p/netutil/toobig_notwindows.go:25.37,27.2 1 0 -github.com/ethereum/go-ethereum/p2p/netutil/addrutil.go:22.35,23.26 1 0 -github.com/ethereum/go-ethereum/p2p/netutil/addrutil.go:24.19,25.14 1 0 -github.com/ethereum/go-ethereum/p2p/netutil/addrutil.go:26.20,27.14 1 0 -github.com/ethereum/go-ethereum/p2p/netutil/addrutil.go:28.20,29.14 1 0 -github.com/ethereum/go-ethereum/p2p/netutil/addrutil.go:30.10,31.13 1 0 -github.com/ethereum/go-ethereum/p2p/netutil/error.go:20.39,25.2 2 0 -github.com/ethereum/go-ethereum/p2p/netutil/error.go:28.32,33.2 2 0 -github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:50.86,59.2 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:64.48,68.38 4 1 -github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:73.2,73.14 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:68.38,69.52 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:69.52,71.4 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:77.47,83.34 4 1 -github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:90.2,90.12 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:83.34,86.44 3 1 -github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:86.44,88.4 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:94.58,97.56 3 1 -github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:97.56,99.3 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:104.46,107.61 3 1 -github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:107.61,109.3 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:112.55,115.37 3 1 -github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:115.37,116.22 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:116.22,118.4 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:122.52,125.35 3 1 -github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:125.35,126.18 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/iptrack.go:126.18,128.4 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:31.13,66.2 30 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:73.47,77.29 4 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:87.2,87.16 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:77.29,78.17 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:81.3,82.17 2 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:85.3,85.20 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:78.17,79.12 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:82.17,84.4 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:91.44,93.24 2 0 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:96.2,96.13 1 0 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:93.24,95.3 1 0 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:100.67,102.35 2 0 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:105.2,105.29 1 0 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:112.2,112.12 1 0 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:102.35,104.3 1 0 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:105.29,107.17 2 0 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:110.3,110.22 1 0 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:107.17,109.4 1 0 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:117.36,119.16 2 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:122.2,122.21 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:119.16,120.13 1 0 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:126.44,127.14 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:130.2,130.25 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:135.2,135.14 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:127.14,129.3 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:130.25,131.23 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:131.23,133.4 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:139.28,140.21 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:143.2,143.31 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:146.2,146.26 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:140.21,142.3 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:143.31,145.3 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:151.39,152.22 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:155.2,155.31 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:158.2,158.30 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:152.22,154.3 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:155.31,157.3 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:177.46,178.58 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:181.2,181.26 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:184.2,184.28 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:187.2,187.47 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:190.2,190.35 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:193.2,193.12 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:178.58,180.3 1 0 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:181.26,183.3 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:184.28,186.3 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:187.47,189.3 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:190.35,192.3 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:197.48,199.9 2 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:200.39,201.15 1 0 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:202.18,203.36 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:204.10,205.48 1 0 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:209.48,212.64 3 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:215.2,215.51 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:212.64,214.3 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:230.46,233.17 3 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:237.2,237.14 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:233.17,236.3 2 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:241.44,243.41 2 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:243.41,244.13 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:244.13,246.4 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:246.9,248.4 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:253.50,257.2 3 0 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:260.35,262.30 2 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:265.2,265.15 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:262.30,264.3 1 0 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:272.48,274.22 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:279.2,280.33 2 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:283.2,284.28 2 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:288.2,292.31 5 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:295.2,295.12 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:274.22,277.3 2 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:280.33,282.3 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:284.28,286.3 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:292.31,294.3 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:299.41,303.27 4 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:306.2,307.25 2 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:320.2,321.21 2 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:303.27,305.3 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:307.25,309.18 2 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:314.3,316.23 3 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:309.18,311.4 1 1 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:311.9,313.4 1 0 -github.com/ethereum/go-ethereum/p2p/netutil/net.go:316.23,318.4 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:40.30,45.2 4 1 -github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:49.63,54.15 3 1 -github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:60.2,65.16 4 1 -github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:68.2,70.39 3 1 -github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:54.15,57.3 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:65.16,67.3 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:74.34,75.28 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:78.2,81.26 4 1 -github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:75.28,77.3 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:90.31,92.2 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:94.48,98.2 3 1 -github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:100.55,103.2 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:107.34,109.2 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:111.36,115.2 3 1 -github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:119.49,120.26 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:123.2,123.26 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:126.2,126.33 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:120.26,122.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/buffer.go:123.26,125.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:81.59,83.44 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:86.2,86.35 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:89.2,89.10 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:83.44,84.76 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:86.35,87.60 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:94.62,99.2 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:104.39,105.12 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:105.12,108.3 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:108.8,111.3 2 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:115.54,117.2 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:120.55,122.2 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:125.50,127.2 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:131.75,132.22 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:136.2,137.16 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:140.2,141.16 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:144.2,147.31 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:159.2,159.34 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:132.22,133.42 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:137.16,139.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:141.16,143.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:147.31,150.17 3 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:153.3,153.29 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:156.3,157.54 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:150.17,152.4 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:153.29,155.4 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:162.66,167.16 3 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:172.2,173.45 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:178.2,182.40 4 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:187.2,188.16 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:193.2,194.16 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:197.2,198.41 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:203.2,204.27 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:167.16,169.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:173.45,175.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:182.40,184.3 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:188.16,190.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:194.16,196.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:198.41,200.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:211.64,212.22 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:215.2,215.27 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:218.2,218.32 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:226.2,228.22 3 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:212.22,213.43 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:215.27,217.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:218.32,224.3 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:231.83,236.23 3 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:239.2,251.40 9 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:254.2,261.12 5 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:236.23,238.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:251.40,253.3 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:265.55,268.2 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:271.57,275.2 3 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:284.53,285.35 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:289.2,290.29 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:293.2,295.18 3 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:285.35,286.28 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:290.29,292.3 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:300.75,306.23 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:311.2,311.16 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:314.2,317.24 4 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:306.23,308.3 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:308.8,310.3 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:311.16,313.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:322.45,323.22 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:326.2,327.16 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:330.2,331.16 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:336.2,342.3 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:323.22,324.33 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:327.16,328.46 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:331.16,332.46 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:346.30,348.2 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:414.105,417.16 3 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:420.2,420.54 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:424.2,425.16 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:428.2,429.16 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:432.2,432.53 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:436.2,436.46 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:417.16,419.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:420.54,422.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:425.16,427.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:429.16,431.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:432.53,434.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:439.85,442.16 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:445.2,450.28 3 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:458.2,459.16 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:462.2,464.16 3 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:467.2,468.12 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:442.16,444.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:450.28,452.17 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:452.17,454.4 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:459.16,461.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:464.16,466.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:473.74,475.16 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:480.2,495.17 10 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:501.2,501.15 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:475.16,477.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:495.17,497.3 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:497.8,499.3 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:506.84,508.2 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:514.130,519.16 4 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:522.2,523.16 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:527.2,527.49 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:531.2,533.16 3 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:536.2,536.54 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:540.2,540.46 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:519.16,521.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:523.16,525.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:527.49,529.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:533.16,535.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:536.54,538.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:544.81,548.16 3 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:552.2,553.16 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:558.2,559.16 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:562.2,564.16 3 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:568.2,573.17 6 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:548.16,550.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:553.16,555.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:559.16,561.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:564.16,566.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:576.70,580.2 3 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:582.70,585.49 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:589.2,593.17 5 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:585.49,587.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:597.103,603.16 4 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:606.2,610.16 3 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:613.2,614.16 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:619.2,621.51 3 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:603.16,605.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:610.16,612.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:614.16,616.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:625.68,629.49 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:634.2,640.36 5 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:629.49,631.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:644.63,646.21 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:656.2,657.16 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:660.2,660.42 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:647.10,649.45 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:650.10,651.20 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:652.10,653.85 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:657.16,659.3 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:663.48,664.16 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:667.2,667.54 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:664.16,665.22 1 0 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:670.42,672.32 2 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:675.2,675.12 1 1 -github.com/ethereum/go-ethereum/p2p/rlpx/rlpx.go:672.32,674.3 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:185.44,186.20 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:189.2,191.10 3 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:186.20,188.3 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:195.54,196.20 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:199.2,201.10 3 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:196.20,198.3 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:205.37,207.2 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:210.65,217.2 3 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:220.159,229.2 3 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:232.66,233.20 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:239.2,239.20 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:245.2,245.24 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:248.2,249.13 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:252.2,252.13 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:255.2,255.16 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:258.2,258.12 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:233.20,234.18 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:237.3,237.20 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:234.18,235.53 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:239.20,240.18 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:243.3,243.20 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:240.18,241.53 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:245.24,246.56 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:249.13,251.3 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:252.13,254.3 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:255.16,257.3 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:262.35,262.78 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:265.38,265.81 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:268.34,268.75 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:271.35,271.77 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:274.37,274.90 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:277.38,277.91 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:280.37,280.89 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:283.31,283.53 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:286.38,287.20 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:290.2,291.33 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:294.2,294.12 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:287.20,289.3 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:291.33,293.3 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:298.32,299.17 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:302.2,304.41 3 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:313.2,314.10 2 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:299.17,301.3 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:304.41,305.44 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:305.44,306.13 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:309.4,310.16 2 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:306.13,308.5 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:320.116,321.24 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:324.2,324.57 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:327.2,337.39 4 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:346.2,347.41 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:354.2,354.11 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:321.24,322.34 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:324.57,325.37 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:337.39,338.43 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:341.3,342.22 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:338.43,339.57 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:342.22,344.4 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:347.41,348.44 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:351.3,352.35 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:348.44,349.53 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:358.60,359.48 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:362.2,362.19 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:359.48,360.56 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:366.57,367.29 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:370.2,370.20 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:367.29,368.51 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:382.81,386.16 3 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:389.2,389.78 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:386.16,387.41 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:393.81,397.16 3 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:400.2,401.35 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:397.16,398.41 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:405.62,407.2 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:410.44,411.17 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:411.17,412.41 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:418.37,420.16 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:423.2,424.18 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:428.2,431.18 4 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:420.16,421.41 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:424.18,426.3 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:435.36,440.19 4 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:443.2,443.32 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:448.2,448.18 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:451.2,453.15 3 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:440.19,441.26 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:443.32,447.3 3 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:448.18,450.3 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:457.42,459.16 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:459.16,461.49 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:465.3,466.32 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:461.49,463.12 2 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:472.65,472.79 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:473.65,473.81 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:476.66,478.52 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:482.2,486.37 4 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:491.2,491.44 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:496.2,496.38 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:514.2,519.92 6 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:478.52,481.3 2 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:486.37,490.3 3 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:491.44,494.3 2 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:496.38,497.25 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:500.3,500.51 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:497.25,498.12 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:500.51,501.50 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:501.50,504.5 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:504.10,507.5 2 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:508.9,511.4 2 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:523.73,524.18 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:528.2,529.34 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:532.2,540.32 4 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:555.2,555.41 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:563.2,565.16 3 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:568.2,568.72 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:571.2,573.28 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:576.2,576.12 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:524.18,526.3 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:529.34,531.3 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:540.32,541.15 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:544.3,545.20 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:548.3,549.17 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:552.3,553.16 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:541.15,542.12 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:545.20,546.12 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:549.17,551.4 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:555.41,556.14 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:560.3,561.13 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:556.14,559.4 2 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:565.16,567.3 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:568.72,570.3 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:573.28,575.3 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:580.53,582.2 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:585.40,586.33 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:586.33,587.17 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:587.17,589.18 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:589.18,591.5 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:597.78,600.46 3 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:604.2,604.17 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:600.46,603.3 2 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:608.58,613.62 4 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:620.2,620.12 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:613.62,615.17 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:618.3,618.13 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:615.17,617.4 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:625.110,629.19 3 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:632.2,634.12 3 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:629.19,631.3 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:639.107,645.2 4 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:647.104,651.17 4 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:658.2,668.30 6 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:671.2,671.26 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:674.2,674.43 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:684.2,684.21 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:691.2,691.47 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:651.17,652.15 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:655.3,656.22 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:652.15,654.4 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:668.30,670.3 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:671.26,673.3 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:674.43,676.14 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:676.14,678.4 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:679.8,680.32 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:680.32,682.4 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:684.21,685.36 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:685.36,686.29 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:686.29,688.5 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:695.39,696.16 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:696.16,697.37 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:702.44,703.16 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:706.2,706.15 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:709.2,710.13 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:703.16,705.3 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:706.15,708.3 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:717.40,718.29 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:727.2,729.23 3 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:718.29,721.27 3 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:724.3,725.42 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:721.27,723.4 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:735.56,739.14 4 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:742.2,746.12 5 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:739.14,741.3 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:750.58,751.44 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:781.2,781.30 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:751.44,753.22 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:779.3,779.48 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:753.22,754.37 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:766.4,766.32 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:754.37,757.28 3 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:760.5,760.14 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:757.28,758.14 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:760.14,762.6 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:762.11,764.6 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:766.32,767.45 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:770.5,770.44 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:767.45,768.14 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:770.44,771.15 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:771.15,773.7 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:773.12,775.7 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:786.97,791.15 4 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:794.2,795.12 2 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:791.15,793.3 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:799.92,801.17 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:804.2,805.15 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:808.2,810.47 3 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:820.2,821.28 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:801.17,803.3 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:805.15,807.3 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:810.47,814.20 3 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:817.3,818.16 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:814.20,816.4 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:821.28,823.3 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:830.74,831.42 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:831.42,834.17 3 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:837.3,838.18 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:841.3,845.30 5 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:834.17,835.12 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:838.18,839.12 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:845.30,847.4 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:854.78,859.15 4 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:862.2,862.47 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:865.2,865.12 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:859.15,861.3 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:862.47,864.3 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:871.59,876.15 4 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:879.2,879.47 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:882.2,882.16 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:876.15,878.3 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:879.47,881.3 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:886.91,890.19 3 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:893.2,895.12 3 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:890.19,892.3 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:900.94,906.2 4 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:908.91,911.17 3 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:918.2,920.54 3 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:924.2,925.23 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:928.2,928.21 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:931.2,931.18 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:934.2,935.45 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:945.2,946.21 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:951.2,952.12 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:911.17,912.19 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:915.3,916.22 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:912.19,914.4 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:920.54,923.3 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:925.23,927.3 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:928.21,930.3 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:931.18,933.3 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:935.45,937.14 2 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:937.14,939.4 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:940.8,941.22 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:941.22,943.4 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:946.21,947.29 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:947.29,949.4 1 1 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:959.108,968.32 6 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:973.2,974.30 2 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:968.32,969.63 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:969.63,971.4 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:974.30,976.3 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:980.62,985.39 4 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:988.2,988.12 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:985.39,987.3 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:993.144,995.97 2 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:995.97,998.27 3 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:1002.3,1002.15 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:1019.3,1019.19 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:998.27,1000.4 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:1002.15,1004.18 2 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:1007.4,1007.22 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:1004.18,1006.5 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:1007.22,1009.5 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:1010.9,1012.18 2 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:1015.4,1015.23 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:1012.18,1014.5 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:1015.23,1017.5 1 0 -github.com/ethereum/go-ethereum/p2p/nodestate/nodestate.go:1019.19,1021.4 1 0 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:40.39,42.16 2 0 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:45.2,45.10 1 0 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:42.16,43.44 1 0 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:72.44,73.65 1 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:80.2,80.30 1 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:73.65,75.17 2 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:78.3,78.35 1 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:75.17,77.4 1 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:85.68,87.17 2 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:90.2,90.14 1 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:93.2,93.14 1 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:96.2,98.16 3 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:101.2,101.10 1 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:87.17,89.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:90.14,92.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:93.14,95.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:98.16,99.13 1 0 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:105.28,108.2 2 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:110.50,116.16 3 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:119.2,119.25 1 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:123.2,123.19 1 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:126.2,126.56 1 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:130.2,131.15 2 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:139.2,139.35 1 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:143.2,143.68 1 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:146.2,148.30 3 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:154.2,154.55 1 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:116.16,118.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:119.25,121.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:123.19,125.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:126.56,128.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:131.15,133.17 2 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:136.3,136.14 1 0 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:133.17,135.4 1 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:139.35,141.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:143.68,145.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:148.30,150.17 2 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:150.17,152.4 1 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:158.55,160.16 2 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:165.2,166.34 2 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:160.16,162.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:162.8,162.25 1 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:162.25,164.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:169.31,177.9 4 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:183.2,184.20 2 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:194.2,194.19 1 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:178.50,179.60 1 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:180.10,181.49 1 0 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:184.20,186.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:186.8,190.25 4 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:190.25,192.4 1 1 -github.com/ethereum/go-ethereum/p2p/enode/urlv4.go:198.44,203.2 4 1 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:45.61,54.16 7 1 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:57.2,58.47 2 1 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:61.2,61.12 1 1 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:54.16,56.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:58.47,60.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:64.53,66.39 2 1 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:72.2,74.53 3 1 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:77.2,77.12 1 1 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:66.39,68.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:68.8,68.29 1 1 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:68.29,70.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:74.53,76.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:80.44,83.16 3 1 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:86.2,89.30 4 1 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:83.16,85.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:95.36,95.58 1 1 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:98.49,100.2 1 1 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:103.52,105.16 2 1 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:108.2,109.16 2 1 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:112.2,113.12 2 1 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:105.16,107.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:109.16,111.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:119.32,119.54 1 1 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:127.59,130.2 2 1 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:132.59,134.57 2 1 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:134.57,135.13 1 0 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:143.55,145.2 1 1 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:147.46,151.2 3 0 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:153.43,156.53 3 1 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:159.2,159.29 1 1 -github.com/ethereum/go-ethereum/p2p/enode/idscheme.go:156.53,157.13 1 0 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:36.44,38.38 2 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:47.2,48.28 2 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:51.2,51.15 1 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:38.38,42.40 3 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:45.3,45.25 1 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:42.40,43.12 1 0 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:48.28,50.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:55.40,57.2 1 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:60.41,62.2 1 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:71.34,75.24 3 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:78.2,79.31 2 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:87.2,87.13 1 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:75.24,77.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:79.31,80.15 1 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:80.15,82.4 1 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:82.9,85.4 2 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:90.35,93.24 3 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:96.2,96.27 1 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:93.24,95.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:99.30,104.2 3 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:108.59,110.2 1 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:117.34,118.24 1 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:123.2,123.14 1 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:118.24,119.24 1 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:119.24,121.4 1 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:160.49,167.2 2 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:170.42,174.21 3 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:177.2,180.34 4 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:174.21,176.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:185.27,189.21 3 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:192.2,192.30 1 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:195.2,199.16 5 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:189.21,191.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:192.30,194.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:203.31,207.20 3 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:212.2,212.6 1 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:207.20,211.3 3 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:212.6,214.20 2 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:217.3,217.10 1 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:214.20,216.4 1 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:218.31,219.10 1 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:225.4,225.26 1 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:226.18,228.26 2 0 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:219.10,223.5 3 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:234.32,236.2 1 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:240.38,242.8 2 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:245.2,245.11 1 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:242.8,244.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:249.43,253.25 3 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:256.2,257.26 2 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:253.25,255.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:261.46,265.27 3 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:265.27,266.24 1 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:266.24,270.9 4 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:276.65,279.18 3 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:279.18,281.10 2 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:282.20,282.20 0 1 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:283.23,283.23 0 0 -github.com/ethereum/go-ethereum/p2p/enode/iter.go:284.17,285.10 1 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:70.61,87.2 5 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:90.37,92.2 1 0 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:95.35,98.14 2 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:103.2,108.41 3 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:117.2,118.39 2 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:122.2,124.30 3 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:98.14,100.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:108.41,110.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:118.39,120.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:128.35,133.2 3 0 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:136.30,138.2 1 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:147.39,152.2 3 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:154.39,156.43 2 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:156.43,159.3 2 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:163.42,168.2 3 0 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:170.42,172.12 2 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:172.12,175.3 2 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:178.59,179.21 1 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:182.2,182.22 1 0 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:179.21,181.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:187.45,193.2 4 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:197.47,203.2 4 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:207.47,214.2 5 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:218.76,224.2 4 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:228.54,234.2 4 0 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:237.40,241.40 3 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:246.2,246.40 1 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:251.2,251.15 1 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:256.2,256.31 1 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:241.40,243.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:243.8,245.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:246.40,248.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:248.8,250.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:251.15,253.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:253.8,255.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:256.31,258.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:258.8,260.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:264.59,266.25 2 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:269.2,269.23 1 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:275.2,275.23 1 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:266.25,268.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:269.23,271.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:271.8,271.56 1 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:271.56,274.3 2 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:280.57,282.14 2 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:285.2,288.16 4 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:291.2,291.25 1 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:282.14,284.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:288.16,290.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:294.35,296.2 1 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:298.29,299.42 1 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:303.2,304.31 2 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:307.2,309.43 3 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:312.2,313.16 2 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:316.2,317.110 2 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:299.42,301.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:304.31,306.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:309.43,310.57 1 0 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:313.16,314.65 1 0 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:320.32,323.2 2 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:326.31,328.12 2 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:331.2,331.33 1 1 -github.com/ethereum/go-ethereum/p2p/enode/localnode.go:328.12,330.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:43.73,44.56 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:47.2,48.75 2 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:51.2,51.18 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:44.56,46.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:48.75,50.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:55.37,57.16 2 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:60.2,60.10 1 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:57.16,58.40 1 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:64.74,65.42 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:68.2,68.39 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:71.2,72.16 2 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:75.2,76.49 2 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:79.2,79.30 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:65.42,67.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:68.39,70.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:72.16,74.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:76.49,78.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:83.24,85.2 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:88.29,90.2 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:93.34,95.2 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:98.40,100.2 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:103.28,108.25 2 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:111.2,111.25 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:114.2,114.12 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:108.25,110.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:111.25,113.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:118.26,122.2 3 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:125.26,129.2 3 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:132.42,134.39 2 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:137.2,137.13 1 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:134.39,136.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:142.37,145.2 2 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:149.41,150.20 1 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:153.2,153.18 1 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:156.2,157.44 2 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:161.2,162.21 2 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:150.20,152.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:153.18,155.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:157.44,159.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:166.32,167.16 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:170.2,172.21 3 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:167.16,169.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:176.46,178.2 1 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:181.49,183.16 2 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:186.2,186.12 1 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:183.16,185.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:193.28,195.2 1 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:198.29,200.2 1 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:203.31,205.2 1 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:208.37,210.2 1 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:213.43,215.2 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:218.47,220.16 2 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:223.2,224.12 2 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:220.16,222.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:230.26,232.16 2 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:235.2,235.11 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:232.16,233.13 1 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:238.37,241.16 3 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:246.2,247.16 2 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:241.16,243.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:243.8,243.30 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:243.30,245.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/node.go:253.35,254.24 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:263.2,263.10 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:254.24,257.14 3 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:257.14,259.4 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:259.9,259.21 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:259.21,261.4 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:267.27,269.19 2 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:278.2,278.22 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:269.19,271.13 2 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:271.13,273.4 1 1 -github.com/ethereum/go-ethereum/p2p/enode/node.go:273.9,275.9 2 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:80.39,81.16 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:84.2,84.30 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:81.16,83.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:88.33,90.16 2 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:93.2,93.53 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:90.16,92.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:98.48,101.63 3 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:104.2,104.16 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:109.2,113.13 4 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:131.2,131.53 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:101.63,103.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:104.16,106.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:114.27,116.71 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:121.11,123.37 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:116.71,119.4 2 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:123.37,125.44 2 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:128.4,128.32 1 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:125.44,127.5 1 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:135.28,140.2 4 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:143.52,144.49 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:147.2,149.29 3 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:144.49,146.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:153.57,155.17 2 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:158.2,158.76 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:155.17,156.55 1 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:162.68,165.35 2 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:168.2,171.33 3 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:174.2,177.22 3 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:165.35,167.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:171.33,173.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:180.51,188.2 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:191.47,196.2 4 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:199.44,201.16 2 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:204.2,205.15 2 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:208.2,208.12 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:201.16,203.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:205.15,207.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:212.53,216.2 3 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:219.46,221.16 2 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:224.2,225.12 2 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:221.16,223.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:229.55,233.2 3 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:236.33,238.16 2 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:241.2,241.36 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:238.16,240.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:244.44,246.55 2 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:250.2,251.13 2 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:246.55,247.74 1 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:255.44,256.40 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:259.2,260.16 2 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:263.2,263.66 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:266.2,266.78 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:256.40,258.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:260.16,262.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:263.66,265.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:270.37,272.2 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:276.38,277.34 1 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:280.2,280.24 1 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:277.34,279.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:284.33,286.2 1 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:288.49,291.16 3 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:291.16,293.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:305.31,306.22 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:306.22,306.41 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:311.25,314.6 3 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:314.6,315.10 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:316.17,317.20 1 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:318.18,319.10 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:326.29,329.16 3 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:333.2,338.13 2 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:329.16,331.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:338.13,340.26 2 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:350.3,352.28 3 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:340.26,342.27 2 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:345.4,345.24 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:342.27,344.5 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:345.24,348.5 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:352.28,355.52 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:358.4,358.20 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:355.52,357.5 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:365.60,366.31 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:369.2,369.69 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:366.31,368.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:373.82,374.31 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:377.2,377.72 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:374.31,376.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:381.60,382.31 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:386.2,387.69 2 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:382.31,384.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:391.82,392.31 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:395.2,395.72 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:392.31,394.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:399.47,400.31 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:403.2,403.65 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:400.31,402.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:407.66,408.31 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:411.2,411.74 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:408.31,410.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:415.49,416.31 1 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:419.2,419.59 1 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:416.31,418.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:423.68,424.31 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:427.2,427.68 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:424.31,426.3 1 0 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:433.38,434.66 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:437.2,437.26 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:434.66,436.3 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:441.46,443.2 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:447.63,457.57 3 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:481.2,481.14 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:457.57,467.15 6 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:471.3,471.60 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:474.3,474.24 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:479.3,479.27 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:467.15,469.17 2 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:471.60,472.17 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:474.24,475.31 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:475.31,476.18 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:486.43,487.43 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:494.2,494.12 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:487.43,489.37 2 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:492.3,492.43 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:489.37,490.12 1 1 -github.com/ethereum/go-ethereum/p2p/enode/nodedb.go:498.23,501.2 2 1 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:52.34,55.31 3 1 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:59.2,59.25 1 1 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:55.31,58.3 2 1 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:62.54,64.31 2 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:69.2,69.16 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:72.2,73.15 2 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:76.2,76.16 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:64.31,67.3 2 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:69.16,71.3 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:73.15,75.3 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:79.109,81.16 2 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:84.2,88.38 4 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:81.16,83.3 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:88.38,90.3 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:93.50,95.16 2 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:98.2,99.16 2 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:102.2,102.31 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:113.2,113.83 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:95.16,97.3 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:99.16,101.3 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:102.31,104.17 2 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:107.3,107.30 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:104.17,106.4 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:107.30,108.64 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:108.64,110.5 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:116.75,117.38 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:117.38,119.3 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:122.32,124.2 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:126.53,131.25 4 1 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:134.2,136.12 3 1 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:131.25,133.3 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:141.31,144.101 2 1 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:154.2,154.101 1 1 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:165.2,165.34 1 1 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:170.2,170.12 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:144.101,145.33 1 1 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:151.3,151.13 1 1 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:146.47,147.101 1 1 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:148.48,149.103 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:154.101,155.33 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:163.3,163.13 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:156.47,157.101 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:158.47,159.101 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:160.48,161.103 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:165.34,166.29 1 1 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:166.29,168.4 1 1 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:176.90,178.16 2 1 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:182.2,183.43 2 1 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:212.2,212.12 1 1 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:178.16,181.3 2 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:183.43,184.26 1 1 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:187.3,187.67 1 1 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:184.26,185.12 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:187.67,188.13 1 1 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:192.4,200.19 4 1 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:203.4,206.25 2 1 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:188.13,190.5 1 1 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:200.19,202.5 1 1 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:206.25,209.5 2 1 -github.com/ethereum/go-ethereum/p2p/nat/natupnp.go:212.12,214.3 1 1 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:62.44,68.20 2 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:74.2,74.14 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:68.20,70.16 2 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:70.16,72.4 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:75.25,76.18 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:77.27,78.20 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:79.21,80.16 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:83.3,83.24 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:84.14,85.21 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:86.34,87.22 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:88.10,89.59 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:80.16,82.4 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:99.94,102.15 3 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:107.2,107.83 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:112.2,112.6 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:102.15,106.3 3 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:107.83,109.3 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:109.8,111.3 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:112.6,113.10 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:114.21,115.11 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:118.20,120.85 2 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:123.4,123.29 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:115.11,117.5 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:120.85,122.5 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:133.45,133.70 1 1 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:134.45,134.91 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:138.72,138.86 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:139.72,139.86 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:143.22,146.59 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:146.59,148.13 2 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:149.3,149.13 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:150.3,150.35 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:155.3,155.13 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:148.13,148.40 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:149.13,149.39 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:150.35,151.30 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:151.30,153.5 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:161.23,163.2 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:168.36,169.20 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:172.2,172.46 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:169.20,171.3 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:191.66,194.2 1 1 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:196.113,197.33 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:200.2,200.71 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:197.33,199.3 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:203.79,204.33 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:207.2,207.58 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:204.33,206.3 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:210.49,211.33 1 1 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:214.2,214.29 1 1 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:211.33,213.3 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:217.36,220.20 3 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:223.2,223.25 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:220.20,222.3 1 0 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:227.33,228.19 1 1 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:233.2,233.20 1 1 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:236.2,236.12 1 1 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:228.19,232.3 3 1 -github.com/ethereum/go-ethereum/p2p/nat/nat.go:233.20,235.3 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:35.31,37.2 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:39.44,41.16 2 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:44.2,44.43 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:41.16,43.3 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:47.108,48.19 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:53.2,54.12 2 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:48.19,50.3 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:57.80,63.2 2 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:65.30,69.21 3 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:83.2,85.16 3 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:95.2,95.12 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:69.21,71.13 2 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:71.13,73.52 2 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:73.52,75.5 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:75.10,77.5 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:85.16,86.10 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:87.21,88.16 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:91.20,92.14 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:88.16,90.5 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:107.41,109.16 2 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:112.2,112.31 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:129.2,129.12 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:109.16,111.3 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:112.31,114.17 2 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:117.3,117.32 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:114.17,116.4 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:117.32,118.38 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:118.38,119.79 1 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:119.79,121.19 2 0 -github.com/ethereum/go-ethereum/p2p/nat/natpmp.go:121.19,124.7 2 0 -github.com/ethereum/go-ethereum/params/config.go:422.62,423.15 1 0 -github.com/ethereum/go-ethereum/params/config.go:426.2,426.25 1 0 -github.com/ethereum/go-ethereum/params/config.go:423.15,425.3 1 0 -github.com/ethereum/go-ethereum/params/config.go:430.48,443.2 10 0 -github.com/ethereum/go-ethereum/params/config.go:446.42,448.2 1 0 -github.com/ethereum/go-ethereum/params/config.go:502.40,504.2 1 0 -github.com/ethereum/go-ethereum/params/config.go:513.40,515.2 1 0 -github.com/ethereum/go-ethereum/params/config.go:532.37,534.2 1 0 -github.com/ethereum/go-ethereum/params/config.go:536.69,538.2 1 0 -github.com/ethereum/go-ethereum/params/config.go:540.59,542.2 1 0 -github.com/ethereum/go-ethereum/params/config.go:544.50,546.2 1 0 -github.com/ethereum/go-ethereum/params/config.go:548.93,550.23 2 0 -github.com/ethereum/go-ethereum/params/config.go:553.2,554.35 2 0 -github.com/ethereum/go-ethereum/params/config.go:561.2,561.33 1 0 -github.com/ethereum/go-ethereum/params/config.go:550.23,552.3 1 0 -github.com/ethereum/go-ethereum/params/config.go:554.35,557.47 3 0 -github.com/ethereum/go-ethereum/params/config.go:557.47,559.4 1 0 -github.com/ethereum/go-ethereum/params/config.go:564.66,566.33 2 0 -github.com/ethereum/go-ethereum/params/config.go:569.2,570.35 2 0 -github.com/ethereum/go-ethereum/params/config.go:577.2,577.43 1 0 -github.com/ethereum/go-ethereum/params/config.go:566.33,568.3 1 0 -github.com/ethereum/go-ethereum/params/config.go:570.35,573.47 3 0 -github.com/ethereum/go-ethereum/params/config.go:573.47,575.4 1 0 -github.com/ethereum/go-ethereum/params/config.go:581.39,583.9 2 0 -github.com/ethereum/go-ethereum/params/config.go:593.2,612.3 1 0 -github.com/ethereum/go-ethereum/params/config.go:584.23,585.20 1 0 -github.com/ethereum/go-ethereum/params/config.go:586.23,587.20 1 0 -github.com/ethereum/go-ethereum/params/config.go:588.20,589.17 1 0 -github.com/ethereum/go-ethereum/params/config.go:590.10,591.21 1 0 -github.com/ethereum/go-ethereum/params/config.go:616.54,618.2 1 1 -github.com/ethereum/go-ethereum/params/config.go:621.52,623.2 1 1 -github.com/ethereum/go-ethereum/params/config.go:626.51,628.2 1 1 -github.com/ethereum/go-ethereum/params/config.go:631.51,633.2 1 1 -github.com/ethereum/go-ethereum/params/config.go:636.51,638.2 1 1 -github.com/ethereum/go-ethereum/params/config.go:641.54,643.2 1 1 -github.com/ethereum/go-ethereum/params/config.go:646.59,648.2 1 1 -github.com/ethereum/go-ethereum/params/config.go:651.56,653.2 1 0 -github.com/ethereum/go-ethereum/params/config.go:658.55,660.2 1 1 -github.com/ethereum/go-ethereum/params/config.go:663.53,665.2 1 1 -github.com/ethereum/go-ethereum/params/config.go:668.51,670.2 1 1 -github.com/ethereum/go-ethereum/params/config.go:673.51,675.2 1 1 -github.com/ethereum/go-ethereum/params/config.go:678.57,680.2 1 0 -github.com/ethereum/go-ethereum/params/config.go:683.93,684.38 1 0 -github.com/ethereum/go-ethereum/params/config.go:687.2,687.108 1 0 -github.com/ethereum/go-ethereum/params/config.go:684.38,686.3 1 0 -github.com/ethereum/go-ethereum/params/config.go:692.94,697.6 3 1 -github.com/ethereum/go-ethereum/params/config.go:705.2,705.16 1 1 -github.com/ethereum/go-ethereum/params/config.go:697.6,699.73 2 1 -github.com/ethereum/go-ethereum/params/config.go:702.3,703.32 2 1 -github.com/ethereum/go-ethereum/params/config.go:699.73,700.9 1 1 -github.com/ethereum/go-ethereum/params/config.go:710.52,732.4 3 0 -github.com/ethereum/go-ethereum/params/config.go:751.2,751.12 1 0 -github.com/ethereum/go-ethereum/params/config.go:732.4,733.26 1 0 -github.com/ethereum/go-ethereum/params/config.go:747.3,747.40 1 0 -github.com/ethereum/go-ethereum/params/config.go:733.26,735.49 1 0 -github.com/ethereum/go-ethereum/params/config.go:739.4,739.49 1 0 -github.com/ethereum/go-ethereum/params/config.go:735.49,738.5 1 0 -github.com/ethereum/go-ethereum/params/config.go:739.49,740.42 1 0 -github.com/ethereum/go-ethereum/params/config.go:740.42,743.6 1 0 -github.com/ethereum/go-ethereum/params/config.go:747.40,749.4 1 0 -github.com/ethereum/go-ethereum/params/config.go:754.94,755.71 1 1 -github.com/ethereum/go-ethereum/params/config.go:758.2,758.67 1 1 -github.com/ethereum/go-ethereum/params/config.go:761.2,761.68 1 1 -github.com/ethereum/go-ethereum/params/config.go:764.2,764.65 1 1 -github.com/ethereum/go-ethereum/params/config.go:767.2,767.65 1 1 -github.com/ethereum/go-ethereum/params/config.go:770.2,770.65 1 1 -github.com/ethereum/go-ethereum/params/config.go:773.2,773.68 1 1 -github.com/ethereum/go-ethereum/params/config.go:776.2,776.71 1 1 -github.com/ethereum/go-ethereum/params/config.go:779.2,779.81 1 1 -github.com/ethereum/go-ethereum/params/config.go:782.2,782.73 1 1 -github.com/ethereum/go-ethereum/params/config.go:789.2,789.69 1 1 -github.com/ethereum/go-ethereum/params/config.go:792.2,792.75 1 1 -github.com/ethereum/go-ethereum/params/config.go:795.2,795.65 1 1 -github.com/ethereum/go-ethereum/params/config.go:798.2,798.65 1 1 -github.com/ethereum/go-ethereum/params/config.go:801.2,801.77 1 1 -github.com/ethereum/go-ethereum/params/config.go:804.2,804.71 1 1 -github.com/ethereum/go-ethereum/params/config.go:807.2,807.12 1 1 -github.com/ethereum/go-ethereum/params/config.go:755.71,757.3 1 1 -github.com/ethereum/go-ethereum/params/config.go:758.67,760.3 1 0 -github.com/ethereum/go-ethereum/params/config.go:761.68,763.3 1 0 -github.com/ethereum/go-ethereum/params/config.go:764.65,766.3 1 1 -github.com/ethereum/go-ethereum/params/config.go:767.65,769.3 1 0 -github.com/ethereum/go-ethereum/params/config.go:770.65,772.3 1 0 -github.com/ethereum/go-ethereum/params/config.go:773.68,775.3 1 0 -github.com/ethereum/go-ethereum/params/config.go:776.71,778.3 1 0 -github.com/ethereum/go-ethereum/params/config.go:779.81,781.3 1 0 -github.com/ethereum/go-ethereum/params/config.go:782.73,785.78 1 1 -github.com/ethereum/go-ethereum/params/config.go:785.78,787.4 1 1 -github.com/ethereum/go-ethereum/params/config.go:789.69,791.3 1 0 -github.com/ethereum/go-ethereum/params/config.go:792.75,794.3 1 0 -github.com/ethereum/go-ethereum/params/config.go:795.65,797.3 1 0 -github.com/ethereum/go-ethereum/params/config.go:798.65,800.3 1 0 -github.com/ethereum/go-ethereum/params/config.go:801.77,803.3 1 0 -github.com/ethereum/go-ethereum/params/config.go:804.71,806.3 1 0 -github.com/ethereum/go-ethereum/params/config.go:812.53,814.2 1 1 -github.com/ethereum/go-ethereum/params/config.go:817.38,818.29 1 1 -github.com/ethereum/go-ethereum/params/config.go:821.2,821.25 1 1 -github.com/ethereum/go-ethereum/params/config.go:818.29,820.3 1 1 -github.com/ethereum/go-ethereum/params/config.go:824.41,825.14 1 1 -github.com/ethereum/go-ethereum/params/config.go:828.2,828.14 1 1 -github.com/ethereum/go-ethereum/params/config.go:831.2,831.22 1 1 -github.com/ethereum/go-ethereum/params/config.go:825.14,827.3 1 1 -github.com/ethereum/go-ethereum/params/config.go:828.14,830.3 1 1 -github.com/ethereum/go-ethereum/params/config.go:844.85,846.9 2 1 -github.com/ethereum/go-ethereum/params/config.go:854.2,855.34 2 1 -github.com/ethereum/go-ethereum/params/config.go:858.2,858.12 1 1 -github.com/ethereum/go-ethereum/params/config.go:847.26,848.17 1 1 -github.com/ethereum/go-ethereum/params/config.go:849.56,850.20 1 1 -github.com/ethereum/go-ethereum/params/config.go:851.10,852.17 1 1 -github.com/ethereum/go-ethereum/params/config.go:855.34,857.3 1 1 -github.com/ethereum/go-ethereum/params/config.go:861.46,863.2 1 0 -github.com/ethereum/go-ethereum/params/config.go:879.63,881.20 2 1 -github.com/ethereum/go-ethereum/params/config.go:884.2,897.3 1 1 -github.com/ethereum/go-ethereum/params/config.go:881.20,883.3 1 0 -github.com/ethereum/go-ethereum/params/dao.go:39.38,158.2 1 0 -github.com/ethereum/go-ethereum/params/version.go:31.29,33.2 1 1 -github.com/ethereum/go-ethereum/params/version.go:36.37,38.23 2 1 -github.com/ethereum/go-ethereum/params/version.go:41.2,41.10 1 1 -github.com/ethereum/go-ethereum/params/version.go:38.23,40.3 1 1 -github.com/ethereum/go-ethereum/params/version.go:47.46,49.29 2 0 -github.com/ethereum/go-ethereum/params/version.go:52.2,52.25 1 0 -github.com/ethereum/go-ethereum/params/version.go:55.2,55.12 1 0 -github.com/ethereum/go-ethereum/params/version.go:49.29,51.3 1 0 -github.com/ethereum/go-ethereum/params/version.go:52.25,54.3 1 0 -github.com/ethereum/go-ethereum/params/version.go:58.58,60.25 2 0 -github.com/ethereum/go-ethereum/params/version.go:63.2,63.50 1 0 -github.com/ethereum/go-ethereum/params/version.go:66.2,66.12 1 0 -github.com/ethereum/go-ethereum/params/version.go:60.25,62.3 1 0 -github.com/ethereum/go-ethereum/params/version.go:63.50,65.3 1 0 -github.com/ethereum/go-ethereum/params/bootnodes.go:123.67,125.17 2 0 -github.com/ethereum/go-ethereum/params/bootnodes.go:141.2,141.59 1 0 -github.com/ethereum/go-ethereum/params/bootnodes.go:126.26,127.18 1 0 -github.com/ethereum/go-ethereum/params/bootnodes.go:128.26,129.18 1 0 -github.com/ethereum/go-ethereum/params/bootnodes.go:130.26,131.18 1 0 -github.com/ethereum/go-ethereum/params/bootnodes.go:132.25,133.17 1 0 -github.com/ethereum/go-ethereum/params/bootnodes.go:134.25,135.17 1 0 -github.com/ethereum/go-ethereum/params/bootnodes.go:136.29,137.22 1 0 -github.com/ethereum/go-ethereum/params/bootnodes.go:138.10,139.12 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:50.64,56.2 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:59.36,61.2 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:64.64,70.30 4 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:75.2,75.38 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:80.2,80.33 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:83.2,83.44 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:89.2,90.16 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:94.2,105.16 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:109.2,117.21 3 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:70.30,72.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:75.38,77.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:80.33,82.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:83.44,84.50 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:84.50,86.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:90.16,92.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:105.16,107.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:122.93,124.9 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:127.2,128.16 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:132.2,133.16 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:139.2,140.19 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:124.9,126.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:128.16,130.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:133.16,135.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:145.64,147.9 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:150.2,150.27 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:147.9,149.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:154.60,159.2 4 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:177.34,179.2 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:182.34,184.2 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:187.39,189.2 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:193.50,196.22 3 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:199.2,199.23 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:196.22,198.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:204.57,206.16 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:209.2,211.12 3 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:206.16,208.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:216.59,219.40 3 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:222.2,223.24 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:226.2,227.38 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:238.2,238.23 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:219.40,221.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:223.24,225.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:227.38,230.10 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:230.10,232.18 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:235.4,235.26 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:232.18,234.5 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:242.61,246.28 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:268.2,268.19 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:272.2,272.40 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:277.2,278.16 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:281.2,285.12 4 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:246.28,247.45 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:247.45,252.24 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:255.4,257.18 3 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:262.4,262.37 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:265.4,265.30 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:252.24,254.5 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:257.18,259.10 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:262.37,263.13 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:268.19,270.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:272.40,274.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:278.16,280.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:289.33,291.22 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:295.2,296.24 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:291.22,294.3 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:300.56,304.2 3 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:307.48,311.37 4 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:314.2,314.17 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:311.37,313.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:318.59,322.40 4 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:325.2,325.17 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:322.40,324.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:329.41,331.2 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:335.79,337.16 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:340.2,340.32 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:337.16,338.28 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:344.45,346.19 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:352.2,352.26 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/inproc.go:346.19,351.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:152.52,163.25 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:166.2,166.31 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:163.25,165.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:171.55,173.56 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:177.2,177.23 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:183.2,183.31 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:195.2,203.12 8 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:173.56,175.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:177.23,178.65 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:178.65,180.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:183.31,185.17 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:188.3,189.17 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:192.3,192.25 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:185.17,187.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:189.17,191.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:207.41,209.2 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:213.37,215.16 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:219.2,220.16 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:224.2,232.3 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:215.16,216.34 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:220.16,221.37 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:235.38,237.16 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:240.2,242.16 3 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:245.2,246.16 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:249.2,249.23 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:237.16,239.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:242.16,244.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:246.16,248.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:285.59,286.34 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:296.2,296.19 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:286.34,287.59 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:290.3,290.38 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:287.59,288.63 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:296.19,298.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:303.75,312.16 8 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:315.2,316.16 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:319.2,321.12 3 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:312.16,314.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:316.16,318.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/types.go:324.45,326.2 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:46.13,50.2 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:64.50,69.2 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:72.37,74.2 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:77.65,78.33 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:81.2,81.44 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:89.2,90.44 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:94.2,95.16 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:100.2,104.26 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:111.2,131.18 12 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:78.33,80.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:81.44,82.63 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:82.63,84.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:90.44,92.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:95.16,97.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:104.26,106.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:106.8,108.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:150.34,151.19 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:154.2,154.29 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:151.19,153.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:159.50,161.2 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:165.67,166.18 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:169.2,169.15 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:176.2,179.40 4 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:182.2,183.16 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:187.2,188.14 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:196.2,196.14 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:200.2,212.36 8 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:215.2,219.22 3 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:222.2,223.16 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:228.2,231.12 4 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:166.18,168.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:169.15,170.17 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:170.17,172.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:179.40,181.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:183.16,185.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:188.14,189.48 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:189.48,190.22 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:190.22,192.10 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:196.14,198.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:212.36,214.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:219.22,221.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:223.16,225.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:235.91,242.16 3 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:246.2,246.39 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:252.2,252.78 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:261.2,262.12 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:267.2,268.16 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:242.16,245.3 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:246.39,247.22 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:247.22,250.4 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:252.78,254.65 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:257.3,257.15 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:254.65,256.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:262.12,265.3 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:274.44,279.2 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:283.33,284.18 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:287.2,287.15 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:291.2,291.21 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:298.2,298.62 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:301.2,302.12 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:305.2,305.9 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:284.18,286.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:287.15,289.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:291.21,296.3 4 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:298.62,300.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:302.12,304.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:306.24,307.13 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:308.37,309.30 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:314.45,318.21 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:321.2,321.13 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:318.21,320.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:326.63,328.16 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:331.2,337.12 7 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:328.16,330.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:340.59,342.6 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:342.6,344.17 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:347.3,348.17 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:351.3,351.41 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:344.17,346.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:348.17,350.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:351.41,353.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:359.59,360.21 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:363.2,364.68 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:360.21,362.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:376.20,383.19 5 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:386.2,387.63 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:390.2,391.29 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:398.2,399.85 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:403.2,405.32 3 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:383.19,385.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:387.63,389.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:391.29,393.17 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:396.3,396.21 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:393.17,395.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:399.85,401.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:411.20,415.21 3 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:420.2,422.21 3 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:430.2,431.97 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:434.2,434.21 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:439.2,439.12 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:447.2,447.14 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:415.21,417.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:422.21,424.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:424.8,427.3 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:431.97,433.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:434.21,436.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:439.12,446.3 6 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:450.47,456.19 3 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:459.2,460.63 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:465.2,466.27 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:469.2,475.16 5 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:481.2,482.36 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:502.2,508.37 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:511.2,511.19 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:456.19,458.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:460.63,462.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:466.27,468.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:475.16,477.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:482.36,484.14 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:487.3,491.28 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:494.3,495.17 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:498.3,498.27 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:484.14,486.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:491.28,493.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:495.17,497.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:508.37,510.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:531.62,533.42 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:544.2,544.23 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:533.42,536.10 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:536.10,538.18 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:541.4,541.26 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:538.18,540.5 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:553.65,555.9 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:558.2,558.74 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/adapters/exec.go:555.9,557.3 1 0 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:19.26,19.51 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:22.32,26.2 3 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:28.31,32.2 3 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:35.34,37.2 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:40.40,44.2 3 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:46.40,49.32 3 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:59.2,59.33 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:49.32,57.3 5 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:63.56,65.34 2 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:80.2,80.27 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:84.2,84.12 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:65.34,67.29 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:75.3,76.40 2 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:67.29,70.18 3 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:70.18,72.5 1 0 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:76.40,78.4 1 0 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:80.27,83.3 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:88.52,91.2 2 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:94.41,95.7 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:95.7,97.3 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:97.8,99.3 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:102.45,103.12 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:103.12,105.3 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:105.8,105.20 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:105.20,108.3 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:108.8,112.3 3 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:115.44,116.33 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:116.33,119.3 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:119.8,122.3 2 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:125.45,127.2 1 0 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:133.45,135.18 2 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:142.2,147.29 6 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:135.18,138.3 2 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:147.29,148.47 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:148.47,152.4 3 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:158.34,161.2 2 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:163.42,166.18 3 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:166.18,168.3 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:168.8,170.3 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:173.53,176.16 3 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:179.2,179.26 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:176.16,178.3 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:182.52,183.15 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:183.15,185.3 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:185.8,189.3 3 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:201.55,202.6 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:202.6,203.41 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:213.3,215.24 3 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:220.3,220.16 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:203.41,207.20 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:211.4,211.20 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:207.20,210.5 2 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:215.24,219.4 2 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:226.35,227.9 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:228.20,229.13 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:231.22,233.17 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:235.35,239.21 3 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:245.3,246.39 2 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:248.33,252.11 3 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:254.10,255.13 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:239.21,244.4 3 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:259.50,260.23 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:261.21,262.15 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:263.22,264.15 1 0 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:265.18,266.11 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:267.10,268.13 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:284.52,288.2 3 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:291.46,292.34 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:298.2,298.16 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:306.2,306.18 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:310.2,311.13 2 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:292.34,293.45 1 0 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:298.16,299.54 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:299.54,302.4 2 0 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:306.18,309.3 2 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:316.39,318.18 2 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:322.2,322.17 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:325.2,326.12 2 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:318.18,320.3 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:322.17,324.3 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:330.42,332.2 1 0 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:335.58,340.2 4 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:343.53,345.2 1 0 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:348.42,350.2 1 0 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:353.46,355.2 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:359.48,361.2 1 0 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:364.45,366.2 1 0 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:369.46,371.2 1 0 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:375.35,377.2 1 1 -github.com/ethereum/go-ethereum/rlp/encbuffer.go:380.43,382.2 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:57.49,59.47 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:63.2,65.40 3 1 -github.com/ethereum/go-ethereum/rlp/encode.go:68.2,68.23 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:59.47,61.3 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:65.40,67.3 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:73.53,77.40 3 1 -github.com/ethereum/go-ethereum/rlp/encode.go:80.2,80.29 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:77.40,79.3 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:88.73,90.40 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:97.2,97.46 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:90.40,93.3 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:107.49,109.2 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:113.32,114.15 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:117.2,117.26 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:114.15,116.3 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:122.68,123.15 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:127.2,129.21 3 1 -github.com/ethereum/go-ethereum/rlp/encode.go:123.15,126.3 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:135.70,137.9 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:138.27,139.28 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:140.47,141.29 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:142.32,143.31 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:144.27,145.32 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:146.55,147.37 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:148.20,149.24 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:150.28,151.24 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:152.30,153.26 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:154.51,155.25 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:156.51,157.39 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:158.54,159.34 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:160.30,161.31 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:162.33,163.29 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:164.10,165.70 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:169.59,172.2 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:174.55,177.2 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:179.55,182.2 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:184.60,186.16 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:190.2,190.22 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:193.2,194.12 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:186.16,189.3 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:190.22,192.3 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:197.62,199.20 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:202.2,203.12 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:199.20,201.3 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:206.56,209.2 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:211.51,212.19 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:213.9,214.34 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:215.9,216.33 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:217.10,219.54 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:219.54,220.22 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:227.4,230.14 4 1 -github.com/ethereum/go-ethereum/rlp/encode.go:220.22,226.5 3 1 -github.com/ethereum/go-ethereum/rlp/encode.go:235.70,238.2 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:240.69,242.15 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:247.2,247.12 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:242.15,244.3 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:244.8,246.3 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:250.57,252.33 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:259.2,259.12 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:252.33,255.3 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:255.8,258.3 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:262.60,263.17 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:270.2,272.16 3 1 -github.com/ethereum/go-ethereum/rlp/encode.go:275.2,275.24 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:263.17,269.3 2 0 -github.com/ethereum/go-ethereum/rlp/encode.go:272.16,274.3 1 0 -github.com/ethereum/go-ethereum/rlp/encode.go:278.75,280.32 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:284.2,285.13 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:315.2,315.17 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:280.32,282.3 1 0 -github.com/ethereum/go-ethereum/rlp/encode.go:285.13,288.53 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:288.53,290.30 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:295.4,295.14 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:290.30,291.61 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:291.61,293.6 1 0 -github.com/ethereum/go-ethereum/rlp/encode.go:297.8,299.53 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:299.53,301.17 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:305.4,306.30 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:311.4,312.14 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:301.17,304.5 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:306.30,307.61 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:307.61,309.6 1 0 -github.com/ethereum/go-ethereum/rlp/encode.go:318.57,320.16 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:323.2,323.27 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:329.2,331.39 3 1 -github.com/ethereum/go-ethereum/rlp/encode.go:363.2,363.20 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:320.16,322.3 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:323.27,324.30 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:324.30,326.4 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:331.39,333.56 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:333.56,335.29 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:340.4,341.14 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:335.29,336.64 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:336.64,338.6 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:343.8,346.56 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:346.56,348.55 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:353.4,354.36 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:359.4,360.14 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:348.55,349.53 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:349.53,350.11 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:354.36,355.80 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:355.80,357.6 1 0 -github.com/ethereum/go-ethereum/rlp/encode.go:366.73,368.43 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:372.2,373.32 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:377.2,377.56 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:384.2,384.20 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:368.43,370.3 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:373.32,375.3 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:377.56,378.37 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:381.3,382.13 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:378.37,380.4 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:387.49,388.38 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:393.2,393.51 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:402.2,402.10 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:388.38,389.54 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:389.54,391.4 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:393.51,394.21 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:400.3,400.55 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:394.21,399.4 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:407.44,408.9 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:409.20,411.11 2 1 -github.com/ethereum/go-ethereum/rlp/encode.go:412.21,415.11 3 1 -github.com/ethereum/go-ethereum/rlp/encode.go:416.21,420.11 4 1 -github.com/ethereum/go-ethereum/rlp/encode.go:421.21,426.11 5 1 -github.com/ethereum/go-ethereum/rlp/encode.go:427.21,433.11 6 1 -github.com/ethereum/go-ethereum/rlp/encode.go:434.21,441.11 7 1 -github.com/ethereum/go-ethereum/rlp/encode.go:442.21,450.11 8 1 -github.com/ethereum/go-ethereum/rlp/encode.go:451.10,460.11 9 1 -github.com/ethereum/go-ethereum/rlp/encode.go:465.35,466.25 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:466.25,467.22 1 1 -github.com/ethereum/go-ethereum/rlp/encode.go:467.22,469.4 1 1 -github.com/ethereum/go-ethereum/rlp/iterator.go:27.60,29.16 2 1 -github.com/ethereum/go-ethereum/rlp/iterator.go:32.2,32.15 1 1 -github.com/ethereum/go-ethereum/rlp/iterator.go:35.2,38.16 2 1 -github.com/ethereum/go-ethereum/rlp/iterator.go:29.16,31.3 1 0 -github.com/ethereum/go-ethereum/rlp/iterator.go:32.15,34.3 1 0 -github.com/ethereum/go-ethereum/rlp/iterator.go:43.37,44.23 1 1 -github.com/ethereum/go-ethereum/rlp/iterator.go:47.2,51.13 5 1 -github.com/ethereum/go-ethereum/rlp/iterator.go:44.23,46.3 1 1 -github.com/ethereum/go-ethereum/rlp/iterator.go:55.40,57.2 1 1 -github.com/ethereum/go-ethereum/rlp/iterator.go:59.37,61.2 1 0 -github.com/ethereum/go-ethereum/rlp/raw.go:33.42,35.2 1 0 -github.com/ethereum/go-ethereum/rlp/raw.go:38.28,39.14 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:42.2,42.23 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:39.14,41.3 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:47.64,49.16 2 1 -github.com/ethereum/go-ethereum/rlp/raw.go:52.2,52.41 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:49.16,51.3 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:57.62,59.16 2 1 -github.com/ethereum/go-ethereum/rlp/raw.go:62.2,62.15 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:65.2,65.27 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:59.16,61.3 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:62.15,64.3 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:70.63,72.16 2 1 -github.com/ethereum/go-ethereum/rlp/raw.go:75.2,75.9 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:72.16,74.3 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:76.25,77.22 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:78.25,79.22 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:82.3,82.39 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:83.24,84.31 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:85.10,87.17 2 1 -github.com/ethereum/go-ethereum/rlp/raw.go:90.3,90.22 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:79.22,81.4 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:87.17,89.4 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:96.60,98.16 2 1 -github.com/ethereum/go-ethereum/rlp/raw.go:101.2,101.15 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:104.2,104.27 1 0 -github.com/ethereum/go-ethereum/rlp/raw.go:98.16,100.3 1 0 -github.com/ethereum/go-ethereum/rlp/raw.go:101.15,103.3 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:108.41,110.24 2 1 -github.com/ethereum/go-ethereum/rlp/raw.go:117.2,117.15 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:110.24,112.17 2 1 -github.com/ethereum/go-ethereum/rlp/raw.go:115.3,115.23 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:112.17,114.4 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:120.76,121.19 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:124.2,125.9 2 1 -github.com/ethereum/go-ethereum/rlp/raw.go:151.2,151.16 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:155.2,155.44 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:158.2,158.37 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:121.19,123.3 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:126.16,129.18 3 1 -github.com/ethereum/go-ethereum/rlp/raw.go:130.16,135.55 4 1 -github.com/ethereum/go-ethereum/rlp/raw.go:138.16,141.47 3 1 -github.com/ethereum/go-ethereum/rlp/raw.go:142.16,145.33 3 1 -github.com/ethereum/go-ethereum/rlp/raw.go:146.10,149.47 3 1 -github.com/ethereum/go-ethereum/rlp/raw.go:135.55,137.4 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:151.16,153.3 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:155.44,157.3 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:161.52,162.24 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:165.2,166.14 2 1 -github.com/ethereum/go-ethereum/rlp/raw.go:186.2,186.25 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:189.2,189.15 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:162.24,164.3 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:167.9,168.19 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:169.9,170.37 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:171.9,172.56 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:173.9,174.75 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:175.9,176.94 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:177.9,178.113 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:179.9,180.132 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:181.9,182.151 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:186.25,188.3 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:193.46,194.12 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:199.2,199.9 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:194.12,196.3 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:196.8,196.20 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:196.20,198.3 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:200.20,201.34 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:202.21,206.4 1 0 -github.com/ethereum/go-ethereum/rlp/raw.go:207.21,212.4 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:213.21,219.4 1 0 -github.com/ethereum/go-ethereum/rlp/raw.go:220.21,227.4 1 0 -github.com/ethereum/go-ethereum/rlp/raw.go:229.21,237.4 1 0 -github.com/ethereum/go-ethereum/rlp/raw.go:238.21,247.4 1 1 -github.com/ethereum/go-ethereum/rlp/raw.go:249.10,259.4 1 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:57.32,61.2 3 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:63.55,66.2 2 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:68.53,71.2 2 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:73.54,75.68 2 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:80.2,80.42 1 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:75.68,77.3 1 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:83.79,88.50 4 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:93.2,94.24 2 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:99.2,104.13 4 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:88.50,90.3 1 0 -github.com/ethereum/go-ethereum/rlp/typecache.go:94.24,96.3 1 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:107.90,109.38 2 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:115.2,118.13 4 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:109.38,111.3 1 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:128.65,131.38 2 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:143.2,144.16 2 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:153.2,153.34 1 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:159.2,159.20 1 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:131.38,140.3 2 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:144.16,145.49 1 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:149.3,149.18 1 0 -github.com/ethereum/go-ethereum/rlp/typecache.go:145.49,148.4 2 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:153.34,158.3 4 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:163.45,164.27 1 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:169.2,169.20 1 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:164.27,165.17 1 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:165.17,167.4 1 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:178.42,180.2 1 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:182.68,185.2 2 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:188.96,190.26 2 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:194.2,194.35 1 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:197.2,197.16 1 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:201.2,208.66 3 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:211.2,211.10 1 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:190.26,191.24 1 0 -github.com/ethereum/go-ethereum/rlp/typecache.go:194.35,196.3 1 0 -github.com/ethereum/go-ethereum/rlp/typecache.go:197.16,199.3 1 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:208.66,210.3 1 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:215.62,219.16 3 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:224.2,224.12 1 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:219.16,221.3 1 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:221.8,223.3 1 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:225.31,226.16 1 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:227.29,228.14 1 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:229.10,230.34 1 0 -github.com/ethereum/go-ethereum/rlp/typecache.go:234.34,236.2 1 1 -github.com/ethereum/go-ethereum/rlp/typecache.go:238.36,240.2 1 1 -github.com/ethereum/go-ethereum/rlp/unsafe.go:28.57,35.2 6 1 -github.com/ethereum/go-ethereum/rlp/decode.go:57.27,57.49 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:80.49,86.2 4 1 -github.com/ethereum/go-ethereum/rlp/decode.go:90.51,97.43 5 1 -github.com/ethereum/go-ethereum/rlp/decode.go:100.2,100.17 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:103.2,103.12 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:97.43,99.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:100.17,102.3 1 0 -github.com/ethereum/go-ethereum/rlp/decode.go:112.40,114.22 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:120.2,120.63 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:114.22,116.42 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:116.42,118.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:123.57,124.13 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:138.2,138.12 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:125.19,126.83 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:127.20,128.71 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:129.23,130.60 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:131.25,132.70 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:133.23,134.62 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:135.19,136.73 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:141.51,142.42 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:145.2,145.12 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:142.42,144.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:153.82,155.9 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:156.27,157.29 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:158.47,159.27 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:160.32,161.32 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:162.27,163.35 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:164.55,165.28 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:166.20,167.25 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:168.28,169.25 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:170.30,171.27 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:172.54,173.36 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:174.30,175.32 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:176.33,177.30 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:178.10,179.70 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:183.57,185.16 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:188.2,189.12 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:185.16,187.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:192.53,195.16 3 1 -github.com/ethereum/go-ethereum/rlp/decode.go:198.2,199.12 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:195.16,197.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:202.53,204.16 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:207.2,208.12 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:204.16,206.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:211.55,213.16 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:216.2,217.12 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:213.16,215.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:220.60,222.2 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:224.55,226.14 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:231.2,232.16 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:235.2,235.12 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:226.14,229.3 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:232.16,234.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:238.77,240.89 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:246.2,247.33 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:250.2,251.9 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:269.2,269.17 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:240.89,241.34 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:244.3,244.30 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:241.34,243.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:247.33,249.3 1 0 -github.com/ethereum/go-ethereum/rlp/decode.go:252.35,253.50 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:256.16,261.50 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:264.10,265.50 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:253.50,255.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:261.50,263.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:265.50,267.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:272.75,274.16 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:277.2,277.15 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:281.2,281.58 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:284.2,284.20 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:274.16,276.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:277.15,280.3 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:281.58,283.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:287.76,289.14 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:310.2,310.19 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:313.2,313.12 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:289.14,291.21 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:300.3,300.21 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:304.3,304.50 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:291.21,293.18 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:296.4,298.17 3 1 -github.com/ethereum/go-ethereum/rlp/decode.go:293.18,295.5 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:300.21,302.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:304.50,305.9 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:306.9,306.24 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:306.24,308.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:310.19,312.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:316.75,317.36 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:320.2,322.22 3 1 -github.com/ethereum/go-ethereum/rlp/decode.go:329.2,329.14 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:332.2,332.49 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:317.36,319.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:322.22,323.50 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:323.50,324.9 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:325.9,325.24 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:325.24,327.4 1 0 -github.com/ethereum/go-ethereum/rlp/decode.go:329.14,331.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:335.58,337.16 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:340.2,341.12 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:337.16,339.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:344.58,346.16 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:349.2,350.14 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:376.2,376.12 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:346.16,348.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:351.12,352.22 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:357.3,358.14 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:359.14,360.32 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:363.3,363.32 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:366.3,366.43 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:370.3,370.34 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:373.12,374.56 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:352.22,354.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:354.9,354.28 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:354.28,356.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:360.32,362.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:363.32,365.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:366.43,368.4 1 0 -github.com/ethereum/go-ethereum/rlp/decode.go:370.34,372.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:379.59,381.16 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:384.2,384.27 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:389.2,389.56 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:410.2,410.17 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:381.16,383.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:384.27,385.31 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:385.31,387.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:389.56,390.37 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:393.3,393.28 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:408.3,408.43 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:390.37,392.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:393.28,395.18 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:395.18,396.19 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:403.5,403.59 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:396.19,401.11 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:404.10,404.25 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:404.25,406.5 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:413.58,414.27 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:414.27,417.3 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:421.76,424.9 3 1 -github.com/ethereum/go-ethereum/rlp/decode.go:425.35,426.35 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:427.18,428.53 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:429.10,430.55 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:434.76,435.56 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:435.56,437.18 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:440.3,440.60 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:443.3,443.13 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:437.18,439.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:440.60,442.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:451.92,458.56 4 1 -github.com/ethereum/go-ethereum/rlp/decode.go:458.56,460.17 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:465.3,465.32 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:479.3,480.18 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:483.3,483.60 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:486.3,486.13 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:460.17,463.4 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:465.32,466.23 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:475.4,477.14 3 1 -github.com/ethereum/go-ethereum/rlp/decode.go:466.23,471.5 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:480.18,482.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:483.60,485.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:492.58,493.33 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:496.2,497.16 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:500.2,500.18 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:513.2,513.12 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:493.33,495.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:497.16,499.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:500.18,502.68 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:505.3,505.17 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:502.68,504.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:506.8,508.17 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:511.3,511.30 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:508.17,510.4 1 0 -github.com/ethereum/go-ethereum/rlp/decode.go:516.56,518.2 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:529.31,530.11 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:531.12,532.16 1 0 -github.com/ethereum/go-ethereum/rlp/decode.go:533.14,534.18 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:535.12,536.16 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:537.10,538.39 1 0 -github.com/ethereum/go-ethereum/rlp/decode.go:591.56,595.2 3 1 -github.com/ethereum/go-ethereum/rlp/decode.go:599.53,605.2 5 1 -github.com/ethereum/go-ethereum/rlp/decode.go:610.42,612.16 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:615.2,615.14 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:612.16,614.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:616.12,618.32 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:619.14,621.38 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:624.3,624.30 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:627.3,627.16 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:628.10,629.32 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:621.38,623.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:624.30,626.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:635.44,637.16 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:640.2,640.14 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:637.16,639.3 1 0 -github.com/ethereum/go-ethereum/rlp/decode.go:641.12,642.18 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:645.3,647.13 3 1 -github.com/ethereum/go-ethereum/rlp/decode.go:648.14,649.29 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:652.3,652.38 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:655.3,655.30 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:658.3,658.13 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:659.10,660.27 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:642.18,644.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:649.29,651.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:652.38,654.4 1 0 -github.com/ethereum/go-ethereum/rlp/decode.go:655.30,657.4 1 0 -github.com/ethereum/go-ethereum/rlp/decode.go:665.40,667.16 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:670.2,670.18 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:676.2,678.48 3 1 -github.com/ethereum/go-ethereum/rlp/decode.go:681.2,681.20 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:686.2,686.17 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:667.16,669.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:670.18,673.3 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:678.48,680.3 1 0 -github.com/ethereum/go-ethereum/rlp/decode.go:681.20,683.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:683.8,685.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:694.41,696.2 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:698.43,700.2 1 0 -github.com/ethereum/go-ethereum/rlp/decode.go:702.43,705.2 2 0 -github.com/ethereum/go-ethereum/rlp/decode.go:707.43,710.2 2 0 -github.com/ethereum/go-ethereum/rlp/decode.go:712.41,715.2 2 0 -github.com/ethereum/go-ethereum/rlp/decode.go:717.52,719.16 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:722.2,722.14 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:719.16,721.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:723.12,724.21 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:727.3,728.32 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:729.14,730.31 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:733.3,734.10 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:745.10,746.30 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:724.21,726.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:730.31,732.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:735.28,737.25 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:738.19,739.17 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:740.28,741.26 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:742.11,743.17 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:753.39,755.16 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:758.2,758.13 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:755.16,757.3 1 0 -github.com/ethereum/go-ethereum/rlp/decode.go:759.9,760.20 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:761.9,762.19 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:763.10,764.66 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:771.50,773.16 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:776.2,776.18 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:783.2,783.44 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:786.2,789.18 4 1 -github.com/ethereum/go-ethereum/rlp/decode.go:773.16,775.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:776.18,778.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:783.44,785.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:794.34,796.49 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:801.2,804.12 4 1 -github.com/ethereum/go-ethereum/rlp/decode.go:796.49,798.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:798.8,798.26 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:798.26,800.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:809.40,812.2 2 0 -github.com/ethereum/go-ethereum/rlp/decode.go:815.45,817.42 2 0 -github.com/ethereum/go-ethereum/rlp/decode.go:820.2,820.15 1 0 -github.com/ethereum/go-ethereum/rlp/decode.go:817.42,819.3 1 0 -github.com/ethereum/go-ethereum/rlp/decode.go:823.51,826.9 3 1 -github.com/ethereum/go-ethereum/rlp/decode.go:858.2,858.39 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:862.2,863.12 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:827.18,828.13 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:829.20,830.27 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:831.20,834.14 3 1 -github.com/ethereum/go-ethereum/rlp/decode.go:835.17,837.14 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:838.38,842.44 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:846.3,846.35 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:849.10,852.44 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:842.44,844.4 1 0 -github.com/ethereum/go-ethereum/rlp/decode.go:846.35,848.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:852.44,854.4 1 0 -github.com/ethereum/go-ethereum/rlp/decode.go:858.39,860.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:869.48,870.16 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:873.2,875.32 3 1 -github.com/ethereum/go-ethereum/rlp/decode.go:878.2,878.18 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:881.2,882.16 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:886.2,887.65 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:891.2,891.12 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:870.16,872.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:875.32,877.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:878.18,880.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:882.16,884.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:887.65,890.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:900.56,901.20 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:922.2,923.9 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:926.2,933.24 7 1 -github.com/ethereum/go-ethereum/rlp/decode.go:901.20,904.3 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:904.8,907.25 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:908.22,910.20 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:911.22,913.20 2 0 -github.com/ethereum/go-ethereum/rlp/decode.go:914.24,916.20 2 0 -github.com/ethereum/go-ethereum/rlp/decode.go:917.11,918.21 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:923.9,925.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:947.61,948.17 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:954.2,955.30 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:959.2,960.22 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:971.2,971.34 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:948.17,950.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:955.30,957.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:960.22,965.35 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:965.35,967.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:967.9,967.47 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:967.47,969.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:974.65,976.16 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:989.2,990.9 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:976.16,977.24 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:987.3,987.19 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:977.24,980.15 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:981.29,982.17 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:983.26,984.17 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:991.16,995.22 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:996.16,1000.39 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1001.16,1009.30 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1012.3,1012.27 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1013.16,1019.37 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1020.10,1027.30 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1030.3,1030.25 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1009.30,1011.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1027.30,1029.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1034.54,1035.14 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1036.9,1038.16 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1039.9,1041.24 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1042.10,1044.25 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1047.3,1048.52 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1051.3,1051.25 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1056.3,1056.49 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1044.25,1046.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1048.52,1050.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1051.25,1055.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1061.51,1062.53 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1065.2,1066.33 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1070.2,1070.19 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1079.2,1079.12 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1062.53,1064.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1066.33,1069.3 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1070.19,1071.19 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1071.19,1073.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1073.9,1077.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1083.43,1084.38 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1087.2,1088.19 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1091.2,1091.15 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1084.38,1086.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1088.19,1090.3 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1096.43,1099.44 2 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1105.2,1105.15 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1111.2,1111.12 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1099.44,1100.16 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1103.3,1103.38 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1100.16,1102.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1105.15,1106.22 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1109.3,1109.19 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1106.22,1108.4 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1115.58,1116.23 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1119.2,1119.38 1 1 -github.com/ethereum/go-ethereum/rlp/decode.go:1116.23,1118.3 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:10.51,11.27 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:12.20,14.47 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:18.3,18.24 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:21.3,21.31 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:24.3,24.49 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:25.20,26.23 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:27.19,28.22 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:29.24,30.27 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:31.18,32.21 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:33.22,34.21 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:35.24,36.22 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:37.20,38.23 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:39.21,40.24 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:41.10,42.46 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:14.47,17.4 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:18.24,20.4 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:21.31,23.4 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:47.78,50.27 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:51.20,53.10 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:63.35,64.73 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:65.58,66.37 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:67.32,68.39 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:69.10,70.46 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:54.24,55.12 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:56.49,57.36 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:58.26,59.37 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:60.11,61.50 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:75.36,77.9 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:80.2,81.64 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:77.9,79.3 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:85.34,88.2 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:90.51,91.6 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:91.6,93.15 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:96.3,96.10 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/types.go:93.15,95.4 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:24.63,34.2 4 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:36.58,38.2 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:40.58,42.2 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:45.76,46.54 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:51.2,52.6 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:61.2,70.20 3 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:75.2,75.10 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:46.54,48.3 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:52.6,54.19 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:57.3,57.14 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:54.19,55.9 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:71.50,73.40 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:87.58,92.2 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:94.38,98.2 3 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:100.36,102.2 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:104.47,105.34 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:109.2,109.32 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:105.34,107.3 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:113.47,115.29 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:118.2,119.12 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:115.29,117.3 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:123.59,124.40 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:127.2,129.19 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:124.40,126.3 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:152.64,155.9 3 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:175.2,175.16 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:156.26,160.43 4 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:161.51,166.26 5 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:167.28,171.45 4 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:172.10,173.58 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:178.59,179.25 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:182.2,189.3 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:179.25,180.50 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:192.47,201.2 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:203.47,205.2 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:207.48,209.2 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:211.62,212.31 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:215.2,215.53 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:212.31,214.3 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:218.63,224.22 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:232.2,235.32 4 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:240.2,240.27 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:224.22,229.3 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:235.32,239.3 3 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:249.92,251.17 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:254.2,254.29 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:251.17,253.3 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:257.66,259.2 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:261.67,268.2 5 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:277.63,284.17 6 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:287.2,290.16 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:300.2,300.19 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:284.17,286.3 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:290.16,298.3 7 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:303.64,311.17 6 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:314.2,314.27 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:311.17,313.3 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:325.71,327.2 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:329.72,338.2 6 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:348.90,350.16 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:353.2,356.16 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:363.2,363.16 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:350.16,352.3 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:356.16,359.3 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:359.8,362.3 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:366.60,376.29 4 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:382.2,388.19 7 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:376.29,378.3 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:378.8,380.3 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:391.61,393.15 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:401.2,407.42 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:412.2,420.28 9 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:393.15,396.3 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:407.42,409.3 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:409.8,411.3 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:437.91,440.39 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:452.2,453.16 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:458.2,459.31 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:477.2,477.16 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:440.39,449.3 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:453.16,455.3 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:459.31,462.63 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:465.3,467.17 3 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:470.3,471.19 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:462.63,464.4 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:467.17,469.4 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:471.19,473.4 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:473.9,475.4 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:480.67,481.14 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:484.2,484.12 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:481.14,483.3 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:487.63,491.34 4 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:495.2,497.19 3 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:491.34,494.3 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:500.84,501.33 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:505.2,506.42 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:512.2,512.42 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:501.33,503.3 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:506.42,510.3 3 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:512.42,515.47 3 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:521.3,523.24 3 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:515.47,516.13 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:519.4,519.20 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:516.13,518.5 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:527.64,532.21 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:539.2,546.34 6 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:552.2,555.28 4 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:532.21,534.3 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:534.8,536.3 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:546.34,551.3 4 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:558.91,560.42 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:568.2,568.19 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:560.42,567.3 6 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:577.69,579.16 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:582.2,582.47 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:579.16,581.3 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:585.62,599.2 8 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:601.63,614.2 11 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:616.102,617.27 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:618.20,619.20 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:622.3,622.31 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:625.3,625.26 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:629.3,629.50 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:630.22,631.27 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:635.3,635.26 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:641.3,641.26 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:645.3,645.42 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:646.20,647.31 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:648.21,649.38 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:650.20,652.44 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:655.3,655.31 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:656.20,658.44 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:661.3,661.58 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:662.10,663.52 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:619.20,621.4 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:622.31,624.4 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:625.26,627.4 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:631.27,633.4 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:635.26,636.27 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:639.4,639.85 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:636.27,638.5 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:641.26,643.4 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:652.44,654.4 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:658.44,660.4 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:668.65,680.2 10 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:683.65,695.2 10 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:697.93,702.16 4 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:706.2,711.13 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:714.2,714.13 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:718.2,720.40 3 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:723.2,723.13 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:727.2,727.13 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:732.2,734.30 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:702.16,704.3 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:711.13,713.3 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:714.13,716.3 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:720.40,722.3 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:723.13,726.3 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/gen.go:727.13,730.3 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:33.13,50.16 5 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:53.2,53.20 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:50.16,52.3 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:53.20,55.3 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:55.8,55.69 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:55.69,57.3 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:60.33,63.2 2 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:74.55,82.16 3 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:85.2,85.18 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:88.2,95.23 3 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:105.2,109.16 3 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:112.2,113.16 2 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:119.2,123.45 5 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:82.16,84.3 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:85.18,87.3 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:95.23,96.24 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:99.3,99.36 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:96.24,98.4 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:99.36,101.4 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:101.9,103.4 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:109.16,111.3 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:113.16,115.3 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:126.78,128.16 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:131.2,132.9 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:135.2,135.17 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:128.16,130.3 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:132.9,134.3 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:138.72,140.16 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:143.2,144.9 2 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:147.2,147.39 1 1 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:140.16,142.3 1 0 -github.com/ethereum/go-ethereum/rlp/rlpgen/main.go:144.9,146.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:57.48,59.2 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:60.48,62.2 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:63.48,65.2 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:68.50,70.33 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:75.2,75.23 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:78.2,78.12 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:70.33,71.41 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:71.41,73.4 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:75.23,77.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:105.40,107.16 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:110.2,110.20 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:107.16,109.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:114.60,117.20 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:122.2,123.23 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:129.2,130.9 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:168.2,168.26 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:117.20,120.3 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:123.23,125.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:125.8,125.29 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:125.29,127.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:131.32,133.29 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:136.3,146.4 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:147.30,157.4 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:158.10,166.4 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:133.29,135.4 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:214.31,216.2 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:220.34,221.37 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:224.2,224.15 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:221.37,223.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:227.39,228.22 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:232.2,233.27 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:228.22,230.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:255.106,257.16 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:260.2,260.43 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:257.16,259.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:264.87,266.50 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:275.2,275.34 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:278.2,278.41 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:281.2,282.53 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:289.2,289.14 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:266.50,267.27 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:272.3,272.15 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:267.27,268.18 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:268.18,270.5 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:275.34,277.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:278.41,280.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:282.53,283.65 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:283.65,284.29 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:284.29,286.5 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:296.74,299.19 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:306.2,307.27 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:319.2,319.23 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:299.19,303.3 3 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:307.27,310.44 3 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:316.3,317.26 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:310.44,315.4 4 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:323.72,325.2 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:331.123,332.45 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:336.2,339.73 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:344.2,347.53 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:397.2,397.28 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:332.45,334.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:339.73,341.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:347.53,350.38 3 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:350.38,352.11 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:356.4,358.36 3 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:378.4,378.55 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:352.11,354.5 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:358.36,359.43 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:359.43,361.13 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:364.6,365.20 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:368.6,368.54 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:361.13,363.7 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:365.20,367.7 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:369.11,371.20 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:374.6,374.35 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:371.20,373.7 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:379.9,379.48 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:379.48,381.11 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:384.4,385.18 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:388.4,388.47 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:381.11,383.5 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:385.18,387.5 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:389.9,391.18 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:394.4,394.27 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:391.18,393.5 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:401.53,402.29 1 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:403.14,404.17 1 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:405.21,406.17 1 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:407.14,409.17 2 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:412.3,412.21 1 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:413.10,414.20 1 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:409.17,411.4 1 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:418.75,424.43 2 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:439.2,439.30 1 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:457.2,457.14 1 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:460.2,460.25 1 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:463.2,463.31 1 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:466.2,466.15 1 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:424.43,426.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:426.8,428.41 2 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:433.3,434.17 2 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:437.3,437.20 1 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:428.41,430.4 1 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:430.9,432.4 1 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:434.17,436.4 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:440.29,441.20 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:442.14,444.62 2 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:447.3,447.31 1 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:448.15,451.29 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:444.62,446.4 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:451.29,453.4 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:453.9,455.4 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:457.14,459.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:460.25,462.3 1 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:463.31,465.3 1 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:471.115,472.17 1 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:503.2,503.41 1 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:521.2,521.77 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:528.2,528.59 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:473.17,475.47 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:478.3,480.21 3 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:481.14,483.10 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:486.3,486.16 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:489.3,489.51 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:490.16,492.10 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:495.3,495.47 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:496.15,498.10 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:501.3,501.43 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:475.47,477.4 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:483.10,485.4 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:486.16,488.4 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:492.10,494.4 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:498.10,500.4 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:503.41,506.17 3 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:509.3,509.32 1 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:512.3,512.77 1 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:506.17,508.4 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:509.32,511.4 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:512.77,514.4 1 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:514.9,519.4 3 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:521.77,523.17 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:526.3,526.32 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:523.17,525.4 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:534.68,536.2 1 1 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:539.46,540.51 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:543.2,543.52 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:546.2,546.12 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:540.51,542.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:543.52,545.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:550.58,558.2 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:562.64,564.16 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:567.2,568.16 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:571.2,582.18 4 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:564.16,566.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:568.16,570.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:585.115,589.53 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:634.2,634.20 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:589.53,596.22 4 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:632.3,632.32 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:596.22,599.33 3 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:599.33,600.43 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:600.43,603.20 3 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:606.6,606.28 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:603.20,605.7 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:607.11,609.20 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:612.6,612.34 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:609.20,611.7 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:615.9,615.48 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:615.48,616.61 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:616.61,618.19 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:621.5,621.27 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:618.19,620.6 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:622.10,624.5 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:625.9,627.18 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:630.4,630.32 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:627.18,629.5 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:637.81,638.17 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:654.2,654.41 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:658.2,658.77 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:665.2,665.53 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:639.17,640.48 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:645.14,646.44 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:651.25,652.42 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:640.48,642.4 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:642.9,644.4 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:646.44,648.4 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:648.9,650.4 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:654.41,657.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:658.77,659.60 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:659.60,661.4 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:661.9,663.4 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:669.33,670.34 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:696.2,696.12 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:670.34,671.24 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:674.3,674.35 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:671.24,673.4 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:674.35,675.30 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:678.4,678.30 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:681.4,681.31 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:684.4,684.33 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:675.30,677.5 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:678.30,680.5 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:681.31,683.5 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:684.33,685.50 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:688.5,688.64 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:685.50,687.6 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:688.64,690.6 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:691.10,691.50 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:691.50,693.5 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:700.54,706.31 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:709.2,774.32 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:777.2,790.31 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:793.2,806.32 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:809.2,809.14 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:706.31,708.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:774.32,776.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:790.31,792.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:806.32,808.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:814.49,815.143 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:819.2,819.12 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:815.143,817.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:823.61,826.27 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:830.2,830.26 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:834.2,834.29 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:838.2,838.39 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:842.2,842.26 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:845.2,845.16 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:826.27,828.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:830.26,832.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:834.29,836.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:838.39,840.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:842.26,844.3 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:857.52,861.50 4 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:874.2,874.24 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:861.50,863.29 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:863.29,866.4 2 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:867.8,868.23 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:868.23,870.4 1 0 -github.com/ethereum/go-ethereum/signer/core/apitypes/types.go:870.9,872.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:34.64,40.11 5 1 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:43.2,44.16 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:47.2,47.42 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:40.11,42.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:44.16,46.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:52.66,57.21 4 1 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:60.2,60.51 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:57.21,59.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:66.66,70.16 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:73.2,73.26 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:80.2,80.12 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:70.16,72.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:73.26,74.33 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:74.33,75.59 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:75.59,77.5 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:85.67,90.2 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:92.67,93.16 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:96.2,97.27 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:102.2,102.12 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:93.16,95.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:97.27,98.67 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:98.67,100.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:107.66,111.16 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:114.2,115.11 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:118.2,118.51 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:121.2,121.50 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:111.16,113.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:115.11,117.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:118.51,120.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:126.83,130.16 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:133.2,133.25 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:141.2,141.12 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:130.16,132.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:133.25,134.19 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:137.3,137.61 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:134.19,135.12 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:137.61,139.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:144.72,146.2 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:148.49,149.70 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:152.2,152.12 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/connect.go:149.70,151.3 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/events.go:71.37,73.23 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/events.go:88.2,88.14 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/events.go:74.13,76.24 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/events.go:77.13,80.21 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/events.go:81.12,84.19 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/events.go:85.10,86.50 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/events.go:92.41,96.2 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/events.go:99.33,100.16 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/events.go:101.21,102.94 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/events.go:103.21,104.129 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/events.go:105.20,106.186 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/events.go:107.10,108.12 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:54.36,59.2 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:62.49,65.2 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:68.39,70.2 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:73.38,75.2 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:78.54,81.2 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:84.53,86.2 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:102.103,105.16 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:108.2,110.16 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:113.2,113.37 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:122.2,122.47 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:167.2,167.45 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:105.16,107.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:110.16,112.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:113.37,117.3 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:122.47,129.13 4 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:143.3,143.7 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:129.13,131.17 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:138.4,138.19 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:131.17,132.12 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:133.28,133.28 0 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:134.17,135.12 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:143.7,144.11 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:145.25,146.42 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:149.5,151.63 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:154.5,154.12 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:159.23,160.15 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:161.16,162.15 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:146.42,147.14 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:151.63,153.6 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:155.26,155.26 0 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:156.17,157.16 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:171.54,174.2 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:177.81,180.2 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:183.64,186.2 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:189.49,191.2 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:194.48,196.2 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:199.59,201.2 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:204.62,206.2 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:209.85,212.2 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:216.58,218.2 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:222.63,224.2 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:227.44,229.2 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:233.71,235.15 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:242.2,243.16 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:246.2,249.16 4 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:252.2,253.77 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:257.2,257.16 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:262.2,262.12 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:235.15,238.17 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:238.17,240.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:243.16,245.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:249.16,251.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:253.77,256.3 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:257.16,258.63 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:258.63,260.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:274.42,301.2 21 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:304.71,306.2 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:309.73,310.45 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:315.2,315.30 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:310.45,313.3 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:319.72,320.44 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:325.2,325.30 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:320.44,323.3 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:329.72,332.25 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:336.2,338.21 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:342.2,343.16 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:347.2,350.30 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:332.25,335.3 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:338.21,341.3 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:343.16,346.3 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:354.71,357.25 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:361.2,364.30 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:357.25,360.3 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:368.71,372.2 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:375.73,379.2 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:382.80,392.36 4 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:399.2,399.41 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:407.2,407.30 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:412.2,413.69 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:422.2,425.36 4 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:430.2,430.46 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:452.2,453.6 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:392.36,395.37 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:395.37,397.4 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:399.41,401.17 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:404.3,405.13 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:401.17,403.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:407.30,409.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:413.69,416.17 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:416.17,419.4 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:425.36,427.3 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:430.46,432.17 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:436.3,436.35 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:443.3,443.35 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:432.17,435.4 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:436.35,438.44 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:438.44,441.5 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:443.35,445.44 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:445.44,448.5 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:453.6,454.10 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:455.26,457.53 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:460.4,460.44 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:464.21,465.10 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:457.53,458.13 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:460.44,463.5 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:478.60,480.57 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:498.2,498.21 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:480.57,482.73 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:485.3,486.58 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:482.73,484.4 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:486.58,487.35 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:491.4,492.18 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:495.4,495.65 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:487.35,489.13 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:492.18,494.5 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:506.42,508.62 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:513.2,513.75 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:517.2,517.14 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:508.62,510.3 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:513.75,515.3 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:531.75,533.16 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:538.2,538.32 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:533.16,536.3 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:542.73,544.63 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:549.2,549.45 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:554.2,554.37 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:544.63,547.3 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:549.45,552.3 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:558.71,562.33 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:567.2,568.16 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:573.2,573.48 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:562.33,565.3 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:568.16,571.3 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:577.69,581.29 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:585.2,585.33 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:581.29,583.3 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:589.68,593.2 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:596.70,599.51 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:604.2,604.43 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:599.51,602.3 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:608.69,611.50 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:616.2,616.43 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:611.50,614.3 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:620.72,624.64 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:629.2,629.43 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:624.64,627.3 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:633.75,637.67 3 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:642.2,642.43 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:637.67,640.3 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:647.68,650.2 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:653.40,653.55 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:658.68,660.16 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:663.2,665.21 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:660.16,662.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:670.70,672.2 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:675.60,677.2 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:680.61,682.2 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:685.63,687.2 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:690.64,692.2 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:695.76,699.2 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:703.74,704.82 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:704.82,710.46 4 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:725.3,725.46 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:740.3,740.35 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:710.46,713.47 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:718.4,718.19 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:722.4,722.46 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:713.47,715.5 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:715.10,717.5 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:718.19,721.5 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:725.46,728.47 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:733.4,733.19 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:737.4,737.46 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:728.47,730.5 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:730.10,732.5 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/http.go:733.19,736.5 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:40.92,42.2 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:46.31,48.28 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:51.2,51.13 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:48.28,50.3 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:55.60,57.16 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:57.16,58.53 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:63.65,65.16 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:68.2,70.6 3 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:65.16,66.53 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:70.6,71.10 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:72.15,74.10 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:75.17,78.39 3 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:83.4,83.11 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:90.4,91.40 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:78.39,81.5 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:84.16,86.11 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:87.39,87.39 0 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:91.40,94.5 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:103.69,105.16 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:114.2,114.6 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:105.16,106.10 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:107.15,109.10 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:110.11,111.54 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:114.6,115.10 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:121.3,126.21 6 1 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:133.3,135.35 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:158.3,158.12 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:116.15,118.10 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:119.11,119.11 0 1 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:126.21,129.4 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:129.9,129.27 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:129.27,132.4 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:135.35,136.11 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:142.4,144.18 3 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:149.4,149.25 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:137.16,139.11 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:140.32,140.32 0 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:144.18,147.13 3 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:149.25,152.19 3 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:155.5,155.14 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:152.19,154.6 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:164.74,166.33 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:176.2,176.25 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:183.2,183.25 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:191.2,191.17 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:166.33,169.17 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:173.3,173.21 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:169.17,172.4 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:176.25,177.39 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:181.3,181.52 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:177.39,180.4 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:183.25,185.49 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/mocker.go:185.49,188.4 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:71.81,80.2 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:83.42,85.2 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:89.81,93.27 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:104.2,104.47 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:107.2,107.55 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:112.2,112.31 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:117.2,118.16 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:121.2,129.43 6 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:134.2,136.18 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:93.27,94.48 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:94.48,96.73 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:99.4,99.15 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:96.73,98.5 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:104.47,106.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:107.55,109.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:112.31,114.3 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:118.16,120.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:129.43,131.3 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:140.45,142.2 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:145.38,146.33 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:154.2,154.12 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:146.33,147.16 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:150.3,150.46 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:147.16,148.12 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:150.46,152.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:158.37,159.33 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:167.2,167.12 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:159.33,160.17 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:163.3,163.45 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:160.17,161.12 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:163.45,165.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:171.46,173.2 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:177.88,182.17 4 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:185.2,185.15 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:188.2,189.46 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:193.2,200.16 6 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:203.2,205.16 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:208.2,209.12 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:182.17,184.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:185.15,187.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:189.46,192.3 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:200.16,202.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:205.16,207.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:214.102,215.15 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:230.2,230.6 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:215.15,223.18 5 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:226.3,228.22 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:223.18,225.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:230.6,231.10 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:232.30,233.11 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:236.4,237.22 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:253.27,254.18 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:257.4,257.10 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:233.11,235.5 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:239.30,240.29 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:242.31,243.32 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:245.34,246.58 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:248.34,249.61 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:254.18,256.5 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:263.45,271.37 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:285.2,285.16 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:289.2,294.16 4 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:298.2,301.12 4 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:271.37,276.18 4 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:279.3,279.17 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:282.3,283.19 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:276.18,278.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:279.17,281.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:285.16,287.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:294.16,297.3 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:306.60,310.2 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:312.60,315.16 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:318.2,319.16 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:322.2,323.69 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:315.16,317.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:319.16,321.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:328.63,330.17 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:333.2,333.14 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:336.2,337.16 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:340.2,341.72 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:330.17,332.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:333.14,335.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:337.16,339.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:345.59,349.16 4 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:352.2,352.13 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:355.2,357.12 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:349.16,351.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:352.13,354.3 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:362.62,366.17 4 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:369.2,369.14 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:372.2,375.12 4 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:366.17,368.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:369.14,371.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:379.89,389.2 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:392.92,402.2 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:406.48,410.2 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:412.48,414.12 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:417.2,417.21 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:414.12,416.3 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:422.54,426.2 3 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:428.54,429.33 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:434.2,434.12 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:429.33,430.31 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:430.31,432.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:439.67,444.2 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:446.66,449.30 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:453.2,453.25 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:457.2,457.16 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:449.30,451.3 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:453.25,456.3 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:462.62,467.2 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:469.61,470.25 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:474.2,474.18 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:470.25,473.3 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:479.62,484.2 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:486.62,488.29 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:495.2,495.14 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:488.29,490.18 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:490.18,492.4 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:499.65,504.2 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:506.65,508.54 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:512.2,512.14 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:508.54,510.3 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:516.70,521.2 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:523.70,525.54 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:530.2,530.16 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:525.54,528.3 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:534.67,538.2 3 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:541.67,543.2 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:545.53,546.33 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:551.2,551.12 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:546.33,547.16 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:547.16,549.4 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:555.69,559.2 3 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:561.55,562.33 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:567.2,567.12 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:562.33,563.17 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:563.17,565.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:571.65,575.2 3 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:577.80,581.12 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:584.2,584.44 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:581.12,583.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:587.66,589.32 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:592.2,593.25 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:598.2,598.17 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:589.32,591.3 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:593.25,594.38 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:594.38,596.4 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:603.60,607.2 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:611.77,615.2 3 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:617.77,618.54 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:622.2,623.16 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:626.2,627.18 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:630.2,639.18 5 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:618.54,620.3 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:623.16,625.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:627.18,629.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:642.60,645.12 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:648.2,648.21 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:645.12,647.3 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:659.70,663.2 3 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:665.70,666.22 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:669.2,670.16 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:673.2,673.13 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:676.2,676.49 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:680.2,681.16 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:685.2,687.18 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:666.22,668.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:670.16,672.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:673.13,675.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:676.49,678.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:681.16,684.3 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:691.32,692.33 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:698.2,698.18 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:692.33,694.37 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:694.37,696.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:703.29,714.2 7 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:729.72,731.2 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:733.29,736.2 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:739.26,743.2 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:746.31,750.2 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:753.30,755.2 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:758.32,760.2 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:763.41,765.19 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:768.2,770.13 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:765.19,767.3 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:775.46,785.2 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:789.48,796.51 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:799.2,800.12 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:796.51,798.3 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:821.32,822.17 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:825.2,825.19 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:828.2,828.12 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:822.17,824.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:825.19,827.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:832.32,834.2 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:846.31,848.2 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:853.48,855.55 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:862.2,862.44 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:855.55,858.3 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:858.8,861.3 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:881.51,883.2 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:885.108,887.2 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:889.96,895.33 4 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:935.2,935.33 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:940.2,940.18 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:895.33,897.17 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:900.3,901.17 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:904.3,905.38 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:917.3,917.30 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:897.17,898.12 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:901.17,903.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:905.38,907.61 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:913.4,913.16 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:907.61,908.22 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:908.22,910.11 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:913.16,915.5 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:917.30,919.61 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:932.4,932.58 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:919.61,921.42 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:927.5,927.17 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:921.42,922.22 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:922.22,924.12 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:927.17,929.6 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:935.33,936.14 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:936.14,938.4 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:947.48,949.31 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:962.2,973.12 7 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1023.2,1023.34 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1035.2,1035.9 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1042.2,1042.12 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:949.31,950.65 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:953.3,953.19 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:956.3,956.79 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:950.65,952.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:953.19,954.12 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:956.79,958.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:973.12,980.7 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:980.7,981.11 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:982.23,985.18 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:989.5,989.32 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:992.5,994.19 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1002.5,1002.37 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1015.16,1017.11 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:985.18,986.14 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:989.32,990.14 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:994.19,999.14 3 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1002.37,1003.62 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1003.62,1006.36 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1012.7,1012.12 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1006.36,1010.8 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1023.34,1025.67 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1030.3,1030.59 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1025.67,1028.12 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1030.59,1032.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1037.22,1037.22 0 1 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1039.41,1040.60 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1046.51,1047.6 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1047.6,1048.10 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1049.30,1050.11 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1053.4,1053.21 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1056.20,1057.10 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1050.11,1052.5 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1053.21,1055.5 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1062.55,1064.20 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1065.21,1066.53 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1069.21,1070.53 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1073.20,1074.41 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1066.53,1068.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1070.53,1072.4 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1078.54,1079.18 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1083.2,1083.64 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1086.2,1086.31 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1079.18,1081.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1083.64,1085.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1089.54,1090.15 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1093.2,1093.49 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/network.go:1090.15,1092.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:33.50,37.2 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:41.80,45.15 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:48.2,52.41 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:58.2,59.39 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:62.2,62.38 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:90.2,90.8 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:45.15,45.49 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:52.41,55.3 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:59.39,61.3 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:62.38,63.10 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:64.29,66.31 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:71.4,71.38 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:76.4,77.18 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:81.4,81.12 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:84.21,86.10 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:66.31,67.13 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:71.38,72.13 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:77.18,80.5 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:81.12,83.5 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:93.62,98.12 5 1 -github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:110.2,110.16 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:98.12,101.7 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:101.7,102.11 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:103.27,104.63 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:105.16,106.11 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:110.16,113.3 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/simulation.go:136.34,140.2 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:34.67,38.2 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:40.50,46.58 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:46.58,47.19 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:51.5,52.15 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:47.19,50.6 2 0 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:54.33,56.5 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:57.44,59.5 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:65.40,67.2 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:69.37,71.2 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:73.36,75.2 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:77.61,80.25 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:80.25,81.30 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:81.30,83.40 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:83.40,84.17 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:84.17,86.6 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:87.10,88.17 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:88.17,90.6 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:96.62,99.25 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:99.25,100.30 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:100.30,102.16 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:102.16,103.17 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:103.17,105.6 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:106.10,107.17 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:107.17,109.6 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:115.61,119.26 4 1 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:127.2,128.25 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:119.26,120.33 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:120.33,121.36 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:121.36,123.5 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:128.25,130.3 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:133.78,136.25 3 1 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:136.25,137.30 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:137.30,139.44 2 1 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:139.44,140.17 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:140.17,142.6 1 0 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:143.10,144.17 1 1 -github.com/ethereum/go-ethereum/p2p/simulations/test.go:144.17,146.6 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:30.41,32.2 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:33.40,35.2 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:36.46,38.2 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:39.47,41.2 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:42.40,44.2 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:45.45,47.2 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146894.40,146896.2 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146898.35,146900.16 2 1 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146904.2,146906.15 3 1 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146900.16,146902.3 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146912.41,146914.42 2 1 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146921.2,146921.52 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146914.42,146916.17 2 1 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146919.3,146919.22 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146916.17,146918.4 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146925.47,146928.2 2 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146932.36,146934.16 2 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146938.2,146938.10 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146934.16,146935.54 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146943.42,146945.2 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146950.50,146952.42 2 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146959.2,146959.56 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146952.42,146954.17 2 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146957.3,146957.21 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146954.17,146956.4 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146964.58,146966.42 2 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146973.2,146973.74 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146966.42,146968.17 2 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146971.3,146971.23 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146968.17,146970.4 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146977.54,146979.29 2 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146986.2,146986.16 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146979.29,146981.17 2 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146984.3,146984.22 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146981.17,146983.4 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146990.28,146992.29 2 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146995.2,146995.14 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:146992.29,146994.3 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147016.46,147018.20 2 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147028.2,147028.22 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147031.2,147032.39 2 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147035.2,147035.16 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147018.20,147021.30 3 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147021.30,147023.19 2 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147023.19,147025.5 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147028.22,147030.3 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147032.39,147034.3 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147048.43,147050.16 2 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147053.2,147054.16 2 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147057.2,147058.16 2 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147061.2,147062.16 2 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147065.2,147065.73 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147050.16,147052.3 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147054.16,147056.3 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147058.16,147060.3 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147062.16,147064.3 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147069.44,147072.16 2 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147076.2,147076.33 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147082.2,147082.12 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147072.16,147074.3 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147076.33,147078.17 2 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147078.17,147080.4 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/4byte.go:147085.41,147088.2 2 0 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:45.44,47.33 2 0 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:53.2,53.64 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:48.20,49.23 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:50.10,51.33 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:57.43,59.32 2 0 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:62.2,62.64 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:59.32,61.3 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:67.81,70.16 2 1 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:74.2,74.49 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:70.16,72.3 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:79.62,81.16 2 1 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:85.2,85.57 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:81.16,83.3 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:90.88,92.23 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:95.2,98.26 3 1 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:102.2,103.16 2 1 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:106.2,107.16 2 1 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:110.2,111.16 2 1 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:115.2,116.42 2 1 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:126.2,127.16 2 1 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:130.2,130.36 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:135.2,135.22 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:92.23,94.3 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:98.26,100.3 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:103.16,105.3 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:107.16,109.3 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:111.16,113.3 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:116.42,121.3 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:127.16,129.3 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/abi.go:130.36,134.3 3 1 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:41.27,46.2 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:49.31,51.2 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:59.50,61.16 2 1 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:64.2,67.66 3 1 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:70.2,70.16 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:61.16,63.3 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:67.66,69.3 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:76.50,81.16 4 1 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:84.2,84.59 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:88.2,88.41 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:96.2,96.16 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:81.16,83.3 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:84.59,86.3 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:88.41,89.52 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:92.3,92.58 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:89.52,91.4 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:92.58,94.4 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:100.39,102.2 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:107.57,108.17 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:111.2,112.50 2 1 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:115.2,115.48 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:118.2,118.54 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:108.17,110.3 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:112.50,114.3 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:115.48,117.3 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:126.69,128.19 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:131.2,131.49 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:135.2,136.25 2 1 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:139.2,140.16 2 1 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:143.2,143.52 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:128.19,130.3 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:131.49,133.3 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:136.25,138.3 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/fourbyte.go:140.16,142.3 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:32.122,36.76 2 1 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:40.2,41.21 2 1 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:45.2,45.20 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:49.2,49.18 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:70.2,70.28 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:73.2,73.68 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:76.2,76.9 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:87.2,88.22 2 1 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:36.76,38.3 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:41.21,44.3 2 1 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:45.20,47.3 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:49.18,53.21 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:64.3,64.22 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:67.3,67.23 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:53.21,55.47 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:59.4,59.71 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:55.47,57.5 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:60.9,60.28 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:60.28,62.4 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:64.22,66.4 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:70.28,72.3 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:73.68,75.3 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:77.52,78.68 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:79.60,80.76 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:81.52,82.65 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:83.60,84.73 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:93.108,95.20 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:99.2,99.19 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:103.2,103.35 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:107.2,107.21 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:117.2,118.16 2 0 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:122.2,122.61 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:95.20,97.3 1 1 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:99.19,102.3 2 1 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:103.35,105.3 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:107.21,108.63 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:114.3,114.9 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:108.63,110.4 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:110.9,113.4 2 0 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:118.16,121.3 2 0 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:122.61,124.3 1 0 -github.com/ethereum/go-ethereum/signer/fourbyte/validation.go:124.8,126.3 1 0 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:48.79,53.2 1 0 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:56.54,57.19 1 1 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:60.2,61.16 2 1 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:65.2,66.16 2 1 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:70.2,72.53 3 1 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:57.19,59.3 1 0 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:61.16,64.3 2 0 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:66.16,69.3 2 0 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:72.53,74.3 1 0 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:79.63,80.19 1 1 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:83.2,84.16 2 1 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:88.2,89.12 2 1 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:93.2,94.16 2 1 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:98.2,98.27 1 1 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:80.19,82.3 1 0 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:84.16,87.3 2 0 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:89.12,92.3 2 0 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:94.16,97.3 2 1 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:102.47,104.16 2 0 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:108.2,109.53 2 0 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:104.16,107.3 2 0 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:109.53,111.3 1 0 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:115.91,119.16 3 1 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:126.2,126.51 1 1 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:130.2,130.19 1 1 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:119.16,120.25 1 1 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:124.3,124.79 1 0 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:120.25,123.4 1 1 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:126.51,129.3 2 0 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:134.94,136.16 2 1 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:139.2,139.63 1 1 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:142.2,142.12 1 1 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:136.16,138.3 1 0 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:139.63,141.3 1 0 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:148.91,150.16 2 1 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:153.2,154.16 2 1 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:157.2,158.59 2 1 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:161.2,162.31 2 1 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:150.16,152.3 1 0 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:154.16,156.3 1 0 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:158.59,160.3 1 0 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:165.98,167.16 2 1 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:170.2,171.16 2 1 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:174.2,175.16 2 1 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:178.2,178.23 1 1 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:167.16,169.3 1 0 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:171.16,173.3 1 0 -github.com/ethereum/go-ethereum/signer/storage/aes_gcm_storage.go:175.16,177.3 1 1 -github.com/ethereum/go-ethereum/signer/storage/storage.go:48.51,49.19 1 0 -github.com/ethereum/go-ethereum/signer/storage/storage.go:52.2,52.21 1 0 -github.com/ethereum/go-ethereum/signer/storage/storage.go:49.19,51.3 1 0 -github.com/ethereum/go-ethereum/signer/storage/storage.go:57.60,58.19 1 0 -github.com/ethereum/go-ethereum/signer/storage/storage.go:61.2,61.30 1 0 -github.com/ethereum/go-ethereum/signer/storage/storage.go:64.2,64.24 1 0 -github.com/ethereum/go-ethereum/signer/storage/storage.go:58.19,60.3 1 0 -github.com/ethereum/go-ethereum/signer/storage/storage.go:61.30,63.3 1 0 -github.com/ethereum/go-ethereum/signer/storage/storage.go:68.44,70.2 1 0 -github.com/ethereum/go-ethereum/signer/storage/storage.go:72.36,77.2 2 0 -github.com/ethereum/go-ethereum/signer/storage/storage.go:82.45,82.46 0 0 -github.com/ethereum/go-ethereum/signer/storage/storage.go:83.45,83.46 0 0 -github.com/ethereum/go-ethereum/signer/storage/storage.go:84.53,86.2 1 0 -github.com/ethereum/go-ethereum/signer/rules/rules.go:39.55,41.42 2 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:44.2,45.25 2 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:41.42,43.3 1 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:56.93,64.2 2 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:65.62,67.2 0 0 -github.com/ethereum/go-ethereum/signer/rules/rules.go:69.56,72.2 2 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:73.83,85.64 7 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:94.2,94.64 1 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:99.2,103.16 3 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:107.2,111.16 3 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:121.2,122.16 2 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:127.2,128.24 2 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:133.2,133.27 1 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:85.64,87.16 2 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:92.3,92.21 1 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:87.16,89.4 1 0 -github.com/ethereum/go-ethereum/signer/rules/rules.go:89.9,91.4 1 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:94.64,98.3 3 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:103.16,106.3 2 0 -github.com/ethereum/go-ethereum/signer/rules/rules.go:111.16,114.3 2 0 -github.com/ethereum/go-ethereum/signer/rules/rules.go:122.16,125.3 2 0 -github.com/ethereum/go-ethereum/signer/rules/rules.go:128.24,130.3 1 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:130.8,132.3 1 0 -github.com/ethereum/go-ethereum/signer/rules/rules.go:136.89,137.16 1 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:140.2,141.16 2 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:145.2,146.25 2 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:153.2,153.46 1 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:137.16,139.3 1 0 -github.com/ethereum/go-ethereum/signer/rules/rules.go:141.16,144.3 2 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:146.25,149.3 2 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:149.8,149.31 1 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:149.31,152.3 2 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:156.89,159.16 3 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:164.2,164.14 1 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:170.2,170.50 1 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:159.16,162.3 2 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:164.14,169.3 1 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:173.99,176.16 3 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:180.2,180.14 1 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:183.2,183.52 1 0 -github.com/ethereum/go-ethereum/signer/rules/rules.go:176.16,179.3 2 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:180.14,182.3 1 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:187.97,189.2 1 0 -github.com/ethereum/go-ethereum/signer/rules/rules.go:191.90,194.16 3 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:198.2,198.14 1 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:201.2,201.33 1 0 -github.com/ethereum/go-ethereum/signer/rules/rules.go:194.16,197.3 2 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:198.14,200.3 1 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:204.105,208.2 1 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:210.47,213.2 2 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:215.46,218.2 2 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:220.60,222.16 2 0 -github.com/ethereum/go-ethereum/signer/rules/rules.go:226.2,228.16 3 0 -github.com/ethereum/go-ethereum/signer/rules/rules.go:222.16,225.3 2 0 -github.com/ethereum/go-ethereum/signer/rules/rules.go:228.16,230.3 1 0 -github.com/ethereum/go-ethereum/signer/rules/rules.go:233.67,235.16 2 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:239.2,240.16 2 1 -github.com/ethereum/go-ethereum/signer/rules/rules.go:235.16,238.3 2 0 -github.com/ethereum/go-ethereum/signer/rules/rules.go:240.16,242.3 1 1 -github.com/ethereum/go-ethereum/signer/core/cliui.go:38.40,40.2 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:42.62,44.2 0 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:48.46,49.6 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:49.6,52.17 3 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:55.3,55.49 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:52.17,54.4 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:55.49,57.4 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:61.92,65.21 3 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:73.2,74.37 2 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:65.21,67.17 2 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:71.3,71.38 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:67.17,70.4 2 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:78.41,80.28 2 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:83.2,84.14 2 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:80.28,82.3 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:89.45,90.22 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:93.2,93.31 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:90.22,92.3 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:96.38,100.2 3 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:103.84,108.45 5 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:116.2,119.45 4 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:125.2,126.60 2 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:129.2,129.57 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:138.2,138.37 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:144.2,144.29 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:152.2,155.19 4 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:158.2,158.55 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:108.45,110.26 2 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:110.26,112.4 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:113.8,115.3 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:119.45,122.3 2 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:122.8,124.3 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:126.60,128.3 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:129.57,131.28 2 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:131.28,133.40 2 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:133.40,135.5 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:138.37,140.17 2 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:140.17,142.4 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:144.29,146.38 2 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:149.3,149.16 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:146.38,148.4 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:155.19,157.3 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:162.94,168.32 5 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:175.2,176.39 2 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:179.2,183.19 5 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:186.2,186.36 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:168.32,170.38 2 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:173.3,173.16 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:170.38,172.4 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:176.39,178.3 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:183.19,185.3 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:191.85,198.43 6 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:202.2,204.19 3 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:207.2,207.44 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:198.43,201.3 2 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:204.19,206.3 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:211.100,221.19 8 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:224.2,224.38 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:221.19,223.3 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:228.52,231.2 2 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:234.51,236.2 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:238.72,240.67 2 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:240.67,242.3 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:242.8,244.3 1 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:247.60,250.30 2 0 -github.com/ethereum/go-ethereum/signer/core/cliui.go:250.30,252.3 1 0 -github.com/ethereum/go-ethereum/signer/core/gnosis_safe.go:38.58,40.20 2 1 -github.com/ethereum/go-ethereum/signer/core/gnosis_safe.go:43.2,44.23 2 1 -github.com/ethereum/go-ethereum/signer/core/gnosis_safe.go:48.2,82.24 2 1 -github.com/ethereum/go-ethereum/signer/core/gnosis_safe.go:40.20,42.3 1 1 -github.com/ethereum/go-ethereum/signer/core/gnosis_safe.go:44.23,46.3 1 1 -github.com/ethereum/go-ethereum/signer/core/gnosis_safe.go:87.66,101.2 3 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:39.87,43.16 2 1 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:46.2,46.19 1 1 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:50.2,52.16 3 1 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:55.2,58.16 2 1 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:62.2,63.16 2 1 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:66.2,66.13 1 1 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:69.2,69.23 1 1 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:43.16,45.3 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:46.19,48.3 1 1 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:52.16,54.3 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:58.16,60.3 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:63.16,65.3 1 1 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:66.13,68.3 1 1 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:76.144,78.16 2 1 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:81.2,82.16 2 1 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:86.2,86.23 1 1 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:78.16,80.3 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:82.16,85.3 2 1 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:95.169,101.16 3 1 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:105.2,105.19 1 1 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:194.2,196.31 3 1 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:101.16,103.3 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:106.39,109.17 2 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:112.3,135.106 3 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:136.39,139.10 2 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:142.3,143.17 2 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:146.3,147.61 2 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:151.3,151.29 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:158.3,159.17 2 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:162.3,171.104 3 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:172.10,176.43 1 1 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:109.17,111.4 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:139.10,141.4 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:143.17,145.4 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:147.61,149.4 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:151.29,156.4 3 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:159.17,161.4 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:176.43,178.4 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:178.9,179.63 1 1 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:179.63,181.5 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:181.10,191.5 3 1 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:202.86,205.2 2 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:214.81,215.28 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:219.2,221.23 3 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:215.28,218.3 2 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:229.141,232.2 2 1 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:237.119,239.16 2 1 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:242.2,243.16 2 1 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:246.2,249.16 4 1 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:252.2,258.31 2 1 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:261.2,262.16 2 1 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:266.2,266.32 1 1 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:239.16,241.3 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:243.16,245.3 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:249.16,251.3 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:258.31,260.3 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:262.16,265.3 2 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:271.117,283.20 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:286.2,286.36 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:289.2,292.16 4 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:295.2,295.42 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:283.20,285.3 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:286.36,288.3 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:292.16,294.3 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:299.79,301.9 2 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:304.2,305.9 2 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:308.2,309.16 2 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:312.2,312.32 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:316.2,317.9 2 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:320.2,321.16 2 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:324.2,324.35 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:328.2,331.8 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:301.9,303.3 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:305.9,307.3 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:309.16,311.3 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:312.32,314.3 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:317.9,319.3 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:321.16,323.3 1 0 -github.com/ethereum/go-ethereum/signer/core/signed_data.go:324.35,326.3 1 0 -github.com/ethereum/go-ethereum/signer/core/stdioui.go:31.28,33.16 2 0 -github.com/ethereum/go-ethereum/signer/core/stdioui.go:36.2,37.11 2 0 -github.com/ethereum/go-ethereum/signer/core/stdioui.go:33.16,35.3 1 0 -github.com/ethereum/go-ethereum/signer/core/stdioui.go:40.55,42.2 1 0 -github.com/ethereum/go-ethereum/signer/core/stdioui.go:45.94,47.16 2 0 -github.com/ethereum/go-ethereum/signer/core/stdioui.go:50.2,50.12 1 0 -github.com/ethereum/go-ethereum/signer/core/stdioui.go:47.16,49.3 1 0 -github.com/ethereum/go-ethereum/signer/core/stdioui.go:54.73,57.16 3 0 -github.com/ethereum/go-ethereum/signer/core/stdioui.go:60.2,60.12 1 0 -github.com/ethereum/go-ethereum/signer/core/stdioui.go:57.16,59.3 1 0 -github.com/ethereum/go-ethereum/signer/core/stdioui.go:63.78,67.2 3 0 -github.com/ethereum/go-ethereum/signer/core/stdioui.go:69.88,73.2 3 0 -github.com/ethereum/go-ethereum/signer/core/stdioui.go:75.79,79.2 3 0 -github.com/ethereum/go-ethereum/signer/core/stdioui.go:81.94,85.2 3 0 -github.com/ethereum/go-ethereum/signer/core/stdioui.go:87.46,89.16 2 0 -github.com/ethereum/go-ethereum/signer/core/stdioui.go:89.16,91.3 1 0 -github.com/ethereum/go-ethereum/signer/core/stdioui.go:94.45,96.16 2 0 -github.com/ethereum/go-ethereum/signer/core/stdioui.go:96.16,98.3 1 0 -github.com/ethereum/go-ethereum/signer/core/stdioui.go:100.66,102.16 2 0 -github.com/ethereum/go-ethereum/signer/core/stdioui.go:102.16,104.3 1 0 -github.com/ethereum/go-ethereum/signer/core/stdioui.go:107.54,109.16 2 0 -github.com/ethereum/go-ethereum/signer/core/stdioui.go:109.16,111.3 1 0 -github.com/ethereum/go-ethereum/signer/core/stdioui.go:113.86,116.16 3 0 -github.com/ethereum/go-ethereum/signer/core/stdioui.go:119.2,119.20 1 0 -github.com/ethereum/go-ethereum/signer/core/stdioui.go:116.16,118.3 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:47.53,49.2 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:55.85,57.40 2 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:60.2,60.18 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:57.40,59.3 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:75.49,77.40 2 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:90.2,90.16 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:77.40,85.21 3 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:88.3,88.33 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:85.21,87.4 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:97.99,99.16 2 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:102.2,103.16 2 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:106.2,106.16 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:109.2,109.39 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:99.16,101.3 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:103.16,105.3 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:106.16,108.3 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:113.61,115.2 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:121.95,123.16 2 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:126.2,126.57 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:130.2,130.55 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:123.16,125.3 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:126.57,128.3 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:139.72,141.16 2 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:144.2,145.23 2 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:148.2,148.26 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:141.16,143.3 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:145.23,147.3 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:154.53,156.2 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:161.78,164.2 2 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:169.97,172.16 2 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:175.2,175.52 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:178.2,178.43 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:172.16,174.3 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:175.52,177.3 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:186.141,189.18 2 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:192.2,192.62 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:195.2,195.81 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:189.18,191.3 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:192.62,194.3 1 0 -github.com/ethereum/go-ethereum/signer/core/uiapi.go:204.74,206.2 1 0 -github.com/ethereum/go-ethereum/signer/core/validation.go:28.52,29.24 1 1 -github.com/ethereum/go-ethereum/signer/core/validation.go:32.2,32.47 1 1 -github.com/ethereum/go-ethereum/signer/core/validation.go:35.2,35.12 1 1 -github.com/ethereum/go-ethereum/signer/core/validation.go:29.24,31.3 1 1 -github.com/ethereum/go-ethereum/signer/core/validation.go:32.47,34.3 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:131.104,136.14 2 1 -github.com/ethereum/go-ethereum/signer/core/api.go:140.2,140.25 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:143.2,143.12 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:168.2,168.21 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:187.2,187.89 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:136.14,138.3 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:140.25,142.3 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:143.12,145.61 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:152.3,152.68 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:159.3,159.71 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:145.61,147.4 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:147.9,150.4 2 0 -github.com/ethereum/go-ethereum/signer/core/api.go:152.68,154.4 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:154.9,157.4 2 0 -github.com/ethereum/go-ethereum/signer/core/api.go:159.71,161.4 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:161.9,164.4 2 0 -github.com/ethereum/go-ethereum/signer/core/api.go:168.21,171.17 2 0 -github.com/ethereum/go-ethereum/signer/core/api.go:171.17,173.4 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:173.9,174.46 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:174.46,176.5 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:176.10,177.87 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:177.87,179.6 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:179.11,181.6 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:191.56,196.26 3 1 -github.com/ethereum/go-ethereum/signer/core/api.go:202.2,202.27 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:205.2,205.26 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:208.2,210.10 3 1 -github.com/ethereum/go-ethereum/signer/core/api.go:196.26,197.31 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:200.3,200.28 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:197.31,199.4 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:202.27,204.3 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:205.26,207.3 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:214.35,216.16 2 0 -github.com/ethereum/go-ethereum/signer/core/api.go:219.2,219.20 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:216.16,218.3 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:284.164,285.18 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:288.2,289.12 2 1 -github.com/ethereum/go-ethereum/signer/core/api.go:292.2,292.15 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:285.18,287.3 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:289.12,291.3 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:294.52,306.16 2 0 -github.com/ethereum/go-ethereum/signer/core/api.go:312.2,313.16 2 0 -github.com/ethereum/go-ethereum/signer/core/api.go:317.2,318.16 2 0 -github.com/ethereum/go-ethereum/signer/core/api.go:306.16,309.3 2 0 -github.com/ethereum/go-ethereum/signer/core/api.go:313.16,316.3 2 0 -github.com/ethereum/go-ethereum/signer/core/api.go:318.16,321.3 2 0 -github.com/ethereum/go-ethereum/signer/core/api.go:326.42,331.38 4 0 -github.com/ethereum/go-ethereum/signer/core/api.go:339.2,339.32 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:331.38,332.41 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:332.41,334.43 2 0 -github.com/ethereum/go-ethereum/signer/core/api.go:334.43,336.5 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:343.72,345.28 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:345.28,346.21 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:347.31,348.48 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:354.30,357.70 3 0 -github.com/ethereum/go-ethereum/signer/core/api.go:368.4,370.45 3 0 -github.com/ethereum/go-ethereum/signer/core/api.go:381.31,383.24 2 0 -github.com/ethereum/go-ethereum/signer/core/api.go:348.48,350.44 2 0 -github.com/ethereum/go-ethereum/signer/core/api.go:350.44,352.6 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:357.70,359.32 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:359.32,361.65 2 0 -github.com/ethereum/go-ethereum/signer/core/api.go:361.65,363.7 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:363.12,365.7 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:370.45,380.5 6 0 -github.com/ethereum/go-ethereum/signer/core/api.go:390.75,394.42 2 1 -github.com/ethereum/go-ethereum/signer/core/api.go:397.2,398.16 2 1 -github.com/ethereum/go-ethereum/signer/core/api.go:401.2,401.28 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:404.2,405.38 2 1 -github.com/ethereum/go-ethereum/signer/core/api.go:408.2,408.23 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:394.42,396.3 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:398.16,400.3 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:401.28,403.3 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:405.38,407.3 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:414.72,415.64 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:418.2,418.101 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:423.2,423.25 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:415.64,417.3 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:418.101,420.3 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:420.8,420.27 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:420.27,422.3 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:428.60,430.18 2 1 -github.com/ethereum/go-ethereum/signer/core/api.go:434.2,434.25 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:455.2,455.64 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:430.18,432.3 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:434.25,439.17 2 1 -github.com/ethereum/go-ethereum/signer/core/api.go:443.3,443.63 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:439.17,441.12 2 0 -github.com/ethereum/go-ethereum/signer/core/api.go:443.63,445.4 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:445.9,452.4 5 1 -github.com/ethereum/go-ethereum/signer/core/api.go:461.65,462.52 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:472.2,473.91 2 1 -github.com/ethereum/go-ethereum/signer/core/api.go:477.2,477.87 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:481.2,481.71 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:485.2,485.91 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:489.2,489.115 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:493.2,493.99 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:497.2,497.101 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:501.2,501.73 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:515.2,515.75 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:519.2,519.17 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:462.52,465.33 3 1 -github.com/ethereum/go-ethereum/signer/core/api.go:469.3,469.16 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:465.33,467.4 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:473.91,476.3 2 0 -github.com/ethereum/go-ethereum/signer/core/api.go:477.87,480.3 2 0 -github.com/ethereum/go-ethereum/signer/core/api.go:481.71,484.3 2 0 -github.com/ethereum/go-ethereum/signer/core/api.go:485.91,488.3 2 0 -github.com/ethereum/go-ethereum/signer/core/api.go:489.115,492.3 2 0 -github.com/ethereum/go-ethereum/signer/core/api.go:493.99,496.3 2 0 -github.com/ethereum/go-ethereum/signer/core/api.go:497.101,500.3 2 0 -github.com/ethereum/go-ethereum/signer/core/api.go:501.73,504.16 3 0 -github.com/ethereum/go-ethereum/signer/core/api.go:507.3,507.16 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:510.3,510.17 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:504.16,506.4 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:507.16,509.4 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:510.17,513.4 2 0 -github.com/ethereum/go-ethereum/signer/core/api.go:515.75,518.3 2 0 -github.com/ethereum/go-ethereum/signer/core/api.go:522.78,524.2 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:526.107,528.56 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:532.2,533.16 2 1 -github.com/ethereum/go-ethereum/signer/core/api.go:539.2,539.25 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:528.56,530.3 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:533.16,538.3 2 0 -github.com/ethereum/go-ethereum/signer/core/api.go:543.149,549.16 3 1 -github.com/ethereum/go-ethereum/signer/core/api.go:553.2,553.20 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:558.2,558.25 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:566.2,573.16 3 1 -github.com/ethereum/go-ethereum/signer/core/api.go:576.2,576.22 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:580.2,587.16 5 1 -github.com/ethereum/go-ethereum/signer/core/api.go:591.2,595.16 3 1 -github.com/ethereum/go-ethereum/signer/core/api.go:599.2,600.16 2 1 -github.com/ethereum/go-ethereum/signer/core/api.go:605.2,606.16 2 1 -github.com/ethereum/go-ethereum/signer/core/api.go:609.2,614.23 3 1 -github.com/ethereum/go-ethereum/signer/core/api.go:549.16,551.3 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:553.20,554.44 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:554.44,556.4 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:558.25,560.45 2 0 -github.com/ethereum/go-ethereum/signer/core/api.go:560.45,564.4 2 0 -github.com/ethereum/go-ethereum/signer/core/api.go:573.16,575.3 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:576.22,578.3 1 1 -github.com/ethereum/go-ethereum/signer/core/api.go:587.16,589.3 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:595.16,597.3 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:600.16,603.3 2 1 -github.com/ethereum/go-ethereum/signer/core/api.go:606.16,608.3 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:618.170,622.16 3 0 -github.com/ethereum/go-ethereum/signer/core/api.go:626.2,626.20 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:631.2,633.16 3 0 -github.com/ethereum/go-ethereum/signer/core/api.go:636.2,642.23 5 0 -github.com/ethereum/go-ethereum/signer/core/api.go:622.16,624.3 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:626.20,627.44 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:627.44,629.4 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:633.16,635.3 1 0 -github.com/ethereum/go-ethereum/signer/core/api.go:647.68,649.2 1 0 -github.com/ethereum/go-ethereum/signer/core/auditlog.go:35.75,41.2 4 0 -github.com/ethereum/go-ethereum/signer/core/auditlog.go:43.72,45.2 1 0 -github.com/ethereum/go-ethereum/signer/core/auditlog.go:47.149,49.27 2 0 -github.com/ethereum/go-ethereum/signer/core/auditlog.go:52.2,57.16 3 0 -github.com/ethereum/go-ethereum/signer/core/auditlog.go:62.2,62.15 1 0 -github.com/ethereum/go-ethereum/signer/core/auditlog.go:49.27,51.3 1 0 -github.com/ethereum/go-ethereum/signer/core/auditlog.go:57.16,59.3 1 0 -github.com/ethereum/go-ethereum/signer/core/auditlog.go:59.8,61.3 1 0 -github.com/ethereum/go-ethereum/signer/core/auditlog.go:65.144,72.2 5 0 -github.com/ethereum/go-ethereum/signer/core/auditlog.go:74.161,76.27 2 0 -github.com/ethereum/go-ethereum/signer/core/auditlog.go:79.2,83.16 4 0 -github.com/ethereum/go-ethereum/signer/core/auditlog.go:89.2,89.15 1 0 -github.com/ethereum/go-ethereum/signer/core/auditlog.go:76.27,78.3 1 0 -github.com/ethereum/go-ethereum/signer/core/auditlog.go:83.16,86.3 2 0 -github.com/ethereum/go-ethereum/signer/core/auditlog.go:86.8,88.3 1 0 -github.com/ethereum/go-ethereum/signer/core/auditlog.go:92.136,98.2 4 0 -github.com/ethereum/go-ethereum/signer/core/auditlog.go:100.117,106.2 4 0 -github.com/ethereum/go-ethereum/signer/core/auditlog.go:108.68,114.2 4 0 -github.com/ethereum/go-ethereum/signer/core/auditlog.go:116.73,119.16 3 0 -github.com/ethereum/go-ethereum/signer/core/auditlog.go:122.2,124.34 3 0 -github.com/ethereum/go-ethereum/signer/core/auditlog.go:119.16,121.3 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:48.40,49.54 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:52.2,52.19 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:55.2,55.28 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:49.54,51.3 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:52.19,54.3 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:59.31,61.16 2 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:66.2,66.42 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:71.2,73.16 3 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:76.2,76.27 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:80.2,81.35 2 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:61.16,63.3 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:66.42,68.3 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:73.16,75.3 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:76.27,78.3 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:84.57,86.9 2 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:92.2,92.12 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:87.29,88.48 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:89.30,90.59 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:96.47,97.23 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:98.15,99.19 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:100.14,101.32 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:108.3,108.19 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:109.21,111.20 2 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:114.3,114.13 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:115.10,116.42 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:101.32,103.11 2 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:106.4,106.14 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:103.11,104.54 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:111.20,113.4 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:124.64,125.27 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:165.2,165.12 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:126.14,128.17 2 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:131.3,131.15 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:134.16,136.40 2 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:139.3,139.24 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:142.14,144.17 2 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:147.3,147.27 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:150.21,151.37 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:154.3,154.25 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:159.3,159.37 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:162.10,163.47 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:128.17,130.4 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:131.15,133.4 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:136.40,138.4 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:139.24,141.4 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:144.17,146.4 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:147.27,149.4 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:151.37,153.4 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:154.25,155.52 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:155.52,157.5 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:159.37,161.4 1 0 -github.com/ethereum/go-ethereum/tests/rlp_test_util.go:168.60,172.2 3 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:55.52,57.2 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:129.96,135.43 2 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:138.2,138.34 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:148.2,148.30 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:135.43,137.3 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:138.34,139.51 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:139.51,141.4 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:141.9,142.28 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:145.4,145.31 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:142.28,144.5 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:152.47,154.37 2 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:159.2,159.12 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:154.37,155.22 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:155.22,157.4 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:163.125,165.16 2 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:168.2,171.36 2 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:174.2,174.69 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:177.2,177.28 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:165.16,167.3 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:171.36,173.3 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:174.69,176.3 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:181.146,183.16 2 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:186.2,191.35 5 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:199.2,201.16 3 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:206.2,206.28 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:219.2,223.30 5 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:228.2,233.64 5 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:238.2,247.34 4 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:183.16,185.3 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:191.35,193.21 2 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:193.21,197.4 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:201.16,203.3 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:206.28,209.17 3 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:213.3,213.75 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:209.17,211.4 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:213.75,215.4 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:223.30,227.3 3 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:233.64,235.3 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:250.59,252.2 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:254.117,257.32 3 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:266.2,269.17 3 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:272.2,273.23 2 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:257.32,261.31 4 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:261.31,263.4 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:269.17,271.3 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:276.71,286.30 2 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:291.2,291.16 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:286.30,290.3 2 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:294.92,297.28 2 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:305.2,306.17 2 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:314.2,314.36 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:317.2,317.38 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:320.2,320.39 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:323.2,328.22 5 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:335.2,336.16 2 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:339.2,340.69 2 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:344.2,345.20 2 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:358.2,358.21 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:362.2,364.17 2 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:297.28,299.17 2 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:302.3,302.47 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:299.17,301.4 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:306.17,308.57 2 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:308.57,310.4 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:314.36,316.3 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:317.38,319.3 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:320.39,322.3 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:328.22,330.10 2 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:333.3,333.12 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:330.10,332.4 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:336.16,338.3 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:340.69,342.3 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:345.20,346.29 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:349.3,349.29 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:352.3,352.37 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:355.3,356.20 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:346.29,348.4 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:349.29,351.4 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:352.37,354.4 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:358.21,360.3 1 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:367.45,372.2 4 0 -github.com/ethereum/go-ethereum/tests/state_test_util.go:374.44,376.2 1 0 -github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:16.55,33.2 9 0 -github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:36.60,46.52 3 0 -github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:49.2,49.32 1 0 -github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:52.2,52.33 1 0 -github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:55.2,55.26 1 0 -github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:58.2,58.33 1 0 -github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:61.2,61.35 1 0 -github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:64.2,64.34 1 0 -github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:67.2,67.12 1 0 -github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:46.52,48.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:49.32,51.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:52.33,54.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:55.26,57.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:58.33,60.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:61.35,63.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_difficultytest.go:64.34,66.3 1 0 -github.com/ethereum/go-ethereum/tests/init.go:203.32,205.23 2 0 -github.com/ethereum/go-ethereum/tests/init.go:208.2,209.23 2 0 -github.com/ethereum/go-ethereum/tests/init.go:205.23,207.3 1 0 -github.com/ethereum/go-ethereum/tests/init.go:217.46,219.2 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:18.49,57.2 20 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:60.54,81.52 3 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:84.2,84.22 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:87.2,87.25 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:90.2,90.24 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:93.2,93.22 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:96.2,96.23 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:99.2,99.21 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:102.2,102.27 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:105.2,105.28 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:108.2,108.26 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:111.2,111.33 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:114.2,114.26 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:117.2,117.26 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:120.2,120.27 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:123.2,123.25 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:126.2,126.24 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:129.2,129.26 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:132.2,132.30 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:135.2,135.12 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:81.52,83.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:84.22,86.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:87.25,89.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:90.24,92.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:93.22,95.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:96.23,98.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:99.21,101.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:102.27,104.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:105.28,107.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:108.26,110.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:111.33,113.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:114.26,116.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:117.26,119.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:120.27,122.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:123.25,125.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:126.24,128.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:129.26,131.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_btheader.go:132.30,134.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_stenv.go:17.46,36.2 10 0 -github.com/ethereum/go-ethereum/tests/gen_stenv.go:39.51,50.52 3 0 -github.com/ethereum/go-ethereum/tests/gen_stenv.go:53.2,53.25 1 0 -github.com/ethereum/go-ethereum/tests/gen_stenv.go:56.2,57.27 2 0 -github.com/ethereum/go-ethereum/tests/gen_stenv.go:60.2,60.23 1 0 -github.com/ethereum/go-ethereum/tests/gen_stenv.go:63.2,63.25 1 0 -github.com/ethereum/go-ethereum/tests/gen_stenv.go:66.2,67.23 2 0 -github.com/ethereum/go-ethereum/tests/gen_stenv.go:70.2,71.26 2 0 -github.com/ethereum/go-ethereum/tests/gen_stenv.go:74.2,75.24 2 0 -github.com/ethereum/go-ethereum/tests/gen_stenv.go:78.2,78.12 1 0 -github.com/ethereum/go-ethereum/tests/gen_stenv.go:50.52,52.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_stenv.go:53.25,55.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_stenv.go:57.27,59.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_stenv.go:60.23,62.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_stenv.go:63.25,65.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_stenv.go:67.23,69.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_stenv.go:71.26,73.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_stenv.go:75.24,77.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:17.54,38.23 10 0 -github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:44.2,46.27 3 0 -github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:38.23,40.32 2 0 -github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:40.32,42.4 1 0 -github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:50.59,64.52 3 0 -github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:67.2,67.25 1 0 -github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:70.2,70.29 1 0 -github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:73.2,73.37 1 0 -github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:76.2,76.22 1 0 -github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:79.2,79.19 1 0 -github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:82.2,82.21 1 0 -github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:85.2,85.28 1 0 -github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:88.2,88.25 1 0 -github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:94.2,94.22 1 0 -github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:97.2,97.27 1 0 -github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:100.2,100.12 1 0 -github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:64.52,66.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:67.25,69.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:70.29,72.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:73.37,75.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:76.22,78.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:79.19,81.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:82.21,84.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:85.28,87.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:88.25,90.34 2 0 -github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:90.34,92.4 1 0 -github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:94.22,96.3 1 0 -github.com/ethereum/go-ethereum/tests/gen_sttransaction.go:97.27,99.3 1 0 -github.com/ethereum/go-ethereum/tests/transaction_test_util.go:47.66,48.139 1 0 -github.com/ethereum/go-ethereum/tests/transaction_test_util.go:69.2,83.4 1 0 -github.com/ethereum/go-ethereum/tests/transaction_test_util.go:109.2,109.12 1 0 -github.com/ethereum/go-ethereum/tests/transaction_test_util.go:48.139,50.54 2 0 -github.com/ethereum/go-ethereum/tests/transaction_test_util.go:53.3,54.17 2 0 -github.com/ethereum/go-ethereum/tests/transaction_test_util.go:58.3,59.17 2 0 -github.com/ethereum/go-ethereum/tests/transaction_test_util.go:62.3,62.29 1 0 -github.com/ethereum/go-ethereum/tests/transaction_test_util.go:65.3,66.26 2 0 -github.com/ethereum/go-ethereum/tests/transaction_test_util.go:50.54,52.4 1 0 -github.com/ethereum/go-ethereum/tests/transaction_test_util.go:54.17,56.4 1 0 -github.com/ethereum/go-ethereum/tests/transaction_test_util.go:59.17,61.4 1 0 -github.com/ethereum/go-ethereum/tests/transaction_test_util.go:62.29,64.4 1 0 -github.com/ethereum/go-ethereum/tests/transaction_test_util.go:83.4,86.59 2 0 -github.com/ethereum/go-ethereum/tests/transaction_test_util.go:93.3,93.17 1 0 -github.com/ethereum/go-ethereum/tests/transaction_test_util.go:96.3,96.20 1 0 -github.com/ethereum/go-ethereum/tests/transaction_test_util.go:99.3,99.54 1 0 -github.com/ethereum/go-ethereum/tests/transaction_test_util.go:102.3,102.20 1 0 -github.com/ethereum/go-ethereum/tests/transaction_test_util.go:105.3,105.49 1 0 -github.com/ethereum/go-ethereum/tests/transaction_test_util.go:86.59,87.18 1 0 -github.com/ethereum/go-ethereum/tests/transaction_test_util.go:90.4,90.12 1 0 -github.com/ethereum/go-ethereum/tests/transaction_test_util.go:87.18,89.5 1 0 -github.com/ethereum/go-ethereum/tests/transaction_test_util.go:93.17,95.4 1 0 -github.com/ethereum/go-ethereum/tests/transaction_test_util.go:96.20,98.4 1 0 -github.com/ethereum/go-ethereum/tests/transaction_test_util.go:99.54,101.4 1 0 -github.com/ethereum/go-ethereum/tests/transaction_test_util.go:102.20,104.4 1 0 -github.com/ethereum/go-ethereum/tests/transaction_test_util.go:105.49,107.4 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:48.52,50.2 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:101.49,103.9 2 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:108.2,110.16 3 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:113.2,113.42 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:116.2,116.47 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:119.2,120.36 2 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:125.2,126.17 2 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:130.2,131.16 2 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:134.2,137.16 3 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:140.2,141.45 2 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:144.2,145.16 2 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:148.2,148.50 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:152.2,152.17 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:157.2,157.54 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:103.9,105.3 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:110.16,112.3 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:113.42,115.3 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:116.47,118.3 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:120.36,122.3 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:122.8,124.3 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:126.17,129.3 2 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:131.16,133.3 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:137.16,139.3 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:141.45,143.3 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:145.16,147.3 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:148.50,150.3 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:152.17,153.79 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:153.79,155.4 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:160.71,175.2 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:189.82,192.35 2 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:226.2,226.25 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:192.35,194.17 2 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:202.3,204.17 3 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:211.3,211.27 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:221.3,221.67 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:224.3,224.39 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:194.17,195.28 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:195.28,196.13 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:197.10,199.5 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:204.17,205.28 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:205.28,206.13 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:207.10,209.5 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:211.27,212.74 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:216.4,217.27 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:212.74,215.5 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:221.67,223.4 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:229.58,230.25 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:233.2,233.31 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:236.2,236.31 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:239.2,239.25 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:242.2,242.34 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:245.2,245.35 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:248.2,248.37 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:251.2,251.37 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:254.2,254.28 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:257.2,257.33 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:260.2,260.41 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:263.2,263.42 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:266.2,266.31 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:269.2,269.29 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:272.2,272.28 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:275.2,275.12 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:230.25,232.3 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:233.31,235.3 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:236.31,238.3 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:239.25,241.3 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:242.34,244.3 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:245.35,247.3 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:248.37,250.3 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:251.37,253.3 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:254.28,256.3 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:257.33,259.3 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:260.41,262.3 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:263.42,265.3 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:266.31,268.3 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:269.29,271.3 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:272.28,274.3 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:278.69,280.38 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:295.2,295.12 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:280.38,285.37 4 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:288.3,288.38 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:291.3,291.27 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:285.37,287.4 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:288.38,290.4 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:291.27,293.4 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:298.95,301.32 2 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:309.2,309.107 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:314.2,314.12 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:301.32,303.3 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:309.107,310.80 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:310.80,312.4 1 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:317.51,319.16 2 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:322.2,324.16 3 0 -github.com/ethereum/go-ethereum/tests/block_test_util.go:319.16,321.3 1 0 -github.com/ethereum/go-ethereum/tests/difficulty_test_util.go:50.67,62.26 5 0 -github.com/ethereum/go-ethereum/tests/difficulty_test_util.go:67.2,67.12 1 0 -github.com/ethereum/go-ethereum/tests/difficulty_test_util.go:62.26,66.3 1 0 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:50.81,51.55 1 0 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:63.2,63.19 1 0 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:51.55,53.17 2 0 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:61.3,61.19 1 0 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:53.17,56.69 1 0 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:59.4,59.14 1 0 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:56.69,58.5 1 0 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:66.72,67.56 1 0 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:79.2,79.14 1 0 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:67.56,70.17 3 0 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:73.3,74.37 2 0 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:77.3,77.14 1 0 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:70.17,71.14 1 0 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:74.37,75.87 1 0 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:87.95,89.28 2 1 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:92.2,92.20 1 1 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:95.2,95.21 1 1 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:113.2,115.41 2 1 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:89.28,91.3 1 1 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:92.20,94.3 1 1 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:95.21,97.30 2 1 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:103.3,105.30 3 1 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:111.3,111.15 1 1 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:97.30,99.25 2 1 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:99.25,101.5 1 1 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:105.30,107.25 2 1 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:107.25,109.5 1 1 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:118.34,126.30 7 1 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:150.2,150.10 1 1 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:153.2,153.10 1 1 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:126.30,128.26 2 1 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:142.3,143.17 2 1 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:146.3,148.24 3 0 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:128.26,131.31 3 1 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:137.4,140.6 1 1 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:131.31,133.5 1 1 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:133.10,133.38 1 1 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:133.38,136.5 2 1 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:143.17,144.12 1 1 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:150.10,152.3 1 0 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:156.29,158.2 1 0 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:160.39,163.11 3 1 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:169.2,169.10 1 1 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:163.11,165.12 2 1 -github.com/ethereum/go-ethereum/tests/fuzzers/abi/abifuzzer.go:165.12,167.4 1 1 -github.com/ethereum/go-ethereum/tests/fuzzers/secp256k1/secp_fuzzer.go:29.29,45.52 8 1 -github.com/ethereum/go-ethereum/tests/fuzzers/secp256k1/secp_fuzzer.go:49.2,49.10 1 1 -github.com/ethereum/go-ethereum/tests/fuzzers/secp256k1/secp_fuzzer.go:45.52,47.93 2 0 -github.com/ethereum/go-ethereum/les/client.go:86.78,88.16 2 0 -github.com/ethereum/go-ethereum/les/client.go:91.2,92.16 2 0 -github.com/ethereum/go-ethereum/les/client.go:95.2,96.91 2 0 -github.com/ethereum/go-ethereum/les/client.go:99.2,128.21 6 0 -github.com/ethereum/go-ethereum/les/client.go:131.2,143.23 10 0 -github.com/ethereum/go-ethereum/les/client.go:148.2,148.113 1 0 -github.com/ethereum/go-ethereum/les/client.go:151.2,166.62 8 0 -github.com/ethereum/go-ethereum/les/client.go:172.2,174.30 3 0 -github.com/ethereum/go-ethereum/les/client.go:177.2,180.29 3 0 -github.com/ethereum/go-ethereum/les/client.go:185.2,195.18 6 0 -github.com/ethereum/go-ethereum/les/client.go:88.16,90.3 1 0 -github.com/ethereum/go-ethereum/les/client.go:92.16,94.3 1 0 -github.com/ethereum/go-ethereum/les/client.go:96.91,98.3 1 0 -github.com/ethereum/go-ethereum/les/client.go:128.21,130.3 1 0 -github.com/ethereum/go-ethereum/les/client.go:143.23,145.3 1 0 -github.com/ethereum/go-ethereum/les/client.go:148.113,150.3 1 0 -github.com/ethereum/go-ethereum/les/client.go:166.62,170.3 3 0 -github.com/ethereum/go-ethereum/les/client.go:174.30,176.3 1 0 -github.com/ethereum/go-ethereum/les/client.go:180.29,183.3 2 0 -github.com/ethereum/go-ethereum/les/client.go:199.88,200.19 1 0 -github.com/ethereum/go-ethereum/les/client.go:203.2,206.74 4 0 -github.com/ethereum/go-ethereum/les/client.go:209.2,209.16 1 0 -github.com/ethereum/go-ethereum/les/client.go:200.19,202.3 1 0 -github.com/ethereum/go-ethereum/les/client.go:206.74,208.3 1 0 -github.com/ethereum/go-ethereum/les/client.go:214.56,215.18 1 0 -github.com/ethereum/go-ethereum/les/client.go:227.2,228.75 2 0 -github.com/ethereum/go-ethereum/les/client.go:231.2,233.16 3 0 -github.com/ethereum/go-ethereum/les/client.go:215.18,217.20 2 0 -github.com/ethereum/go-ethereum/les/client.go:220.3,220.88 1 0 -github.com/ethereum/go-ethereum/les/client.go:217.20,219.4 1 0 -github.com/ethereum/go-ethereum/les/client.go:220.88,222.4 1 0 -github.com/ethereum/go-ethereum/les/client.go:222.9,224.4 1 0 -github.com/ethereum/go-ethereum/les/client.go:228.75,230.3 1 0 -github.com/ethereum/go-ethereum/les/client.go:238.56,239.25 1 0 -github.com/ethereum/go-ethereum/les/client.go:244.2,251.50 5 0 -github.com/ethereum/go-ethereum/les/client.go:254.2,254.16 1 0 -github.com/ethereum/go-ethereum/les/client.go:257.2,257.10 1 0 -github.com/ethereum/go-ethereum/les/client.go:239.25,242.3 1 0 -github.com/ethereum/go-ethereum/les/client.go:251.50,253.3 1 0 -github.com/ethereum/go-ethereum/les/client.go:254.16,256.3 1 0 -github.com/ethereum/go-ethereum/les/client.go:263.61,265.2 1 0 -github.com/ethereum/go-ethereum/les/client.go:268.60,270.2 1 0 -github.com/ethereum/go-ethereum/les/client.go:273.49,275.2 1 0 -github.com/ethereum/go-ethereum/les/client.go:278.39,280.2 1 0 -github.com/ethereum/go-ethereum/les/client.go:284.42,320.2 3 0 -github.com/ethereum/go-ethereum/les/client.go:322.64,324.2 1 0 -github.com/ethereum/go-ethereum/les/client.go:326.61,326.84 1 0 -github.com/ethereum/go-ethereum/les/client.go:327.61,327.80 1 0 -github.com/ethereum/go-ethereum/les/client.go:328.61,328.80 1 0 -github.com/ethereum/go-ethereum/les/client.go:329.61,329.102 1 0 -github.com/ethereum/go-ethereum/les/client.go:330.61,330.92 1 0 -github.com/ethereum/go-ethereum/les/client.go:331.61,331.82 1 0 -github.com/ethereum/go-ethereum/les/client.go:332.61,332.80 1 0 -github.com/ethereum/go-ethereum/les/client.go:335.52,336.98 1 0 -github.com/ethereum/go-ethereum/les/client.go:336.98,337.47 1 0 -github.com/ethereum/go-ethereum/les/client.go:340.3,340.13 1 0 -github.com/ethereum/go-ethereum/les/client.go:337.47,339.4 1 0 -github.com/ethereum/go-ethereum/les/client.go:346.39,352.47 3 0 -github.com/ethereum/go-ethereum/les/client.go:356.2,357.16 2 0 -github.com/ethereum/go-ethereum/les/client.go:360.2,367.12 6 0 -github.com/ethereum/go-ethereum/les/client.go:352.47,355.3 2 0 -github.com/ethereum/go-ethereum/les/client.go:357.16,359.3 1 0 -github.com/ethereum/go-ethereum/les/client.go:372.38,395.2 20 0 -github.com/ethereum/go-ethereum/les/metrics.go:122.79,123.22 1 0 -github.com/ethereum/go-ethereum/les/metrics.go:126.2,126.67 1 0 -github.com/ethereum/go-ethereum/les/metrics.go:123.22,125.3 1 0 -github.com/ethereum/go-ethereum/les/metrics.go:129.60,132.16 2 0 -github.com/ethereum/go-ethereum/les/metrics.go:136.2,140.17 4 0 -github.com/ethereum/go-ethereum/les/metrics.go:132.16,134.3 1 0 -github.com/ethereum/go-ethereum/les/metrics.go:143.61,151.2 4 0 -github.com/ethereum/go-ethereum/les/test_helper.go:109.57,114.25 2 1 -github.com/ethereum/go-ethereum/les/test_helper.go:114.25,115.12 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:178.3,178.19 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:116.10,128.36 5 1 -github.com/ethereum/go-ethereum/les/test_helper.go:129.10,152.37 11 1 -github.com/ethereum/go-ethereum/les/test_helper.go:153.10,166.37 6 1 -github.com/ethereum/go-ethereum/les/test_helper.go:167.10,176.36 4 1 -github.com/ethereum/go-ethereum/les/test_helper.go:183.131,191.2 6 1 -github.com/ethereum/go-ethereum/les/test_helper.go:193.211,207.21 4 1 -github.com/ethereum/go-ethereum/les/test_helper.go:225.2,247.26 3 1 -github.com/ethereum/go-ethereum/les/test_helper.go:250.2,251.32 2 1 -github.com/ethereum/go-ethereum/les/test_helper.go:207.21,213.59 2 1 -github.com/ethereum/go-ethereum/les/test_helper.go:223.3,223.60 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:213.59,222.4 3 0 -github.com/ethereum/go-ethereum/les/test_helper.go:247.26,249.3 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:251.32,253.3 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:256.162,275.21 8 1 -github.com/ethereum/go-ethereum/les/test_helper.go:293.2,317.93 7 1 -github.com/ethereum/go-ethereum/les/test_helper.go:318.2,318.26 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:321.2,323.19 3 1 -github.com/ethereum/go-ethereum/les/test_helper.go:324.2,324.43 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:275.21,281.59 2 1 -github.com/ethereum/go-ethereum/les/test_helper.go:291.3,291.60 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:281.59,290.4 3 1 -github.com/ethereum/go-ethereum/les/test_helper.go:317.93,317.108 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:318.26,320.3 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:323.19,323.36 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:327.26,329.2 1 0 -github.com/ethereum/go-ethereum/les/test_helper.go:341.140,343.20 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:346.2,353.29 8 1 -github.com/ethereum/go-ethereum/les/test_helper.go:356.2,356.61 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:359.2,359.62 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:343.20,345.3 1 0 -github.com/ethereum/go-ethereum/les/test_helper.go:353.29,355.3 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:356.61,358.3 1 0 -github.com/ethereum/go-ethereum/les/test_helper.go:359.62,361.3 1 0 -github.com/ethereum/go-ethereum/les/test_helper.go:365.189,367.20 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:370.2,385.29 16 1 -github.com/ethereum/go-ethereum/les/test_helper.go:389.2,389.61 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:392.2,392.62 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:367.20,369.3 1 0 -github.com/ethereum/go-ethereum/les/test_helper.go:385.29,388.3 2 1 -github.com/ethereum/go-ethereum/les/test_helper.go:389.61,391.3 1 0 -github.com/ethereum/go-ethereum/les/test_helper.go:392.62,394.3 1 0 -github.com/ethereum/go-ethereum/les/test_helper.go:399.28,401.2 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:403.145,417.12 8 1 -github.com/ethereum/go-ethereum/les/test_helper.go:424.2,424.12 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:432.2,432.6 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:445.2,445.102 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:417.12,418.10 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:419.25,420.29 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:421.38,421.38 0 1 -github.com/ethereum/go-ethereum/les/test_helper.go:424.12,425.10 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:426.25,427.29 1 0 -github.com/ethereum/go-ethereum/les/test_helper.go:428.54,428.54 0 1 -github.com/ethereum/go-ethereum/les/test_helper.go:432.6,433.10 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:440.3,440.87 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:443.3,443.36 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:434.23,435.82 1 0 -github.com/ethereum/go-ethereum/les/test_helper.go:436.23,437.82 1 0 -github.com/ethereum/go-ethereum/les/test_helper.go:438.11,438.11 0 1 -github.com/ethereum/go-ethereum/les/test_helper.go:440.87,441.9 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:463.135,474.12 6 1 -github.com/ethereum/go-ethereum/les/test_helper.go:481.2,495.6 5 1 -github.com/ethereum/go-ethereum/les/test_helper.go:506.2,506.22 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:510.2,510.29 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:474.12,475.10 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:476.33,477.29 1 0 -github.com/ethereum/go-ethereum/les/test_helper.go:478.52,478.52 0 1 -github.com/ethereum/go-ethereum/les/test_helper.go:495.6,496.10 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:501.3,501.44 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:504.3,504.36 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:497.16,498.24 1 0 -github.com/ethereum/go-ethereum/les/test_helper.go:499.11,499.11 0 1 -github.com/ethereum/go-ethereum/les/test_helper.go:501.44,502.9 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:506.22,509.3 2 1 -github.com/ethereum/go-ethereum/les/test_helper.go:527.112,538.12 6 1 -github.com/ethereum/go-ethereum/les/test_helper.go:545.2,559.6 5 1 -github.com/ethereum/go-ethereum/les/test_helper.go:570.2,570.22 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:574.2,574.29 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:538.12,539.10 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:540.33,541.29 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:542.45,542.45 0 1 -github.com/ethereum/go-ethereum/les/test_helper.go:559.6,560.10 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:565.3,565.44 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:568.3,568.36 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:561.16,562.24 1 0 -github.com/ethereum/go-ethereum/les/test_helper.go:563.11,563.11 0 1 -github.com/ethereum/go-ethereum/les/test_helper.go:565.44,566.9 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:570.22,573.3 2 1 -github.com/ethereum/go-ethereum/les/test_helper.go:589.96,596.21 3 1 -github.com/ethereum/go-ethereum/les/test_helper.go:599.2,600.62 2 1 -github.com/ethereum/go-ethereum/les/test_helper.go:601.2,618.27 13 1 -github.com/ethereum/go-ethereum/les/test_helper.go:621.2,625.20 2 1 -github.com/ethereum/go-ethereum/les/test_helper.go:638.2,657.21 3 1 -github.com/ethereum/go-ethereum/les/test_helper.go:673.2,673.23 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:596.21,598.3 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:600.62,600.95 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:618.27,620.3 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:625.20,627.42 2 1 -github.com/ethereum/go-ethereum/les/test_helper.go:628.3,629.17 2 1 -github.com/ethereum/go-ethereum/les/test_helper.go:632.3,632.10 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:627.42,627.57 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:629.17,631.4 1 0 -github.com/ethereum/go-ethereum/les/test_helper.go:633.15,633.15 0 1 -github.com/ethereum/go-ethereum/les/test_helper.go:634.39,635.59 1 0 -github.com/ethereum/go-ethereum/les/test_helper.go:657.21,658.21 1 1 -github.com/ethereum/go-ethereum/les/test_helper.go:664.3,671.16 8 1 -github.com/ethereum/go-ethereum/les/test_helper.go:658.21,663.4 4 1 -github.com/ethereum/go-ethereum/les/test_helper.go:679.64,681.19 2 0 -github.com/ethereum/go-ethereum/les/test_helper.go:681.19,681.44 1 0 -github.com/ethereum/go-ethereum/les/state_accessor.go:32.121,34.2 1 0 -github.com/ethereum/go-ethereum/les/state_accessor.go:37.171,39.28 1 0 -github.com/ethereum/go-ethereum/les/state_accessor.go:43.2,44.16 2 0 -github.com/ethereum/go-ethereum/les/state_accessor.go:47.2,48.16 2 0 -github.com/ethereum/go-ethereum/les/state_accessor.go:51.2,51.52 1 0 -github.com/ethereum/go-ethereum/les/state_accessor.go:55.2,56.44 2 0 -github.com/ethereum/go-ethereum/les/state_accessor.go:74.2,74.122 1 0 -github.com/ethereum/go-ethereum/les/state_accessor.go:39.28,41.3 1 0 -github.com/ethereum/go-ethereum/les/state_accessor.go:44.16,46.3 1 0 -github.com/ethereum/go-ethereum/les/state_accessor.go:48.16,50.3 1 0 -github.com/ethereum/go-ethereum/les/state_accessor.go:51.52,53.3 1 0 -github.com/ethereum/go-ethereum/les/state_accessor.go:56.44,62.21 5 0 -github.com/ethereum/go-ethereum/les/state_accessor.go:66.3,67.94 2 0 -github.com/ethereum/go-ethereum/les/state_accessor.go:72.3,72.65 1 0 -github.com/ethereum/go-ethereum/les/state_accessor.go:62.21,64.4 1 0 -github.com/ethereum/go-ethereum/les/state_accessor.go:67.94,69.4 1 0 -github.com/ethereum/go-ethereum/les/bor_api_backend.go:12.113,14.2 1 0 -github.com/ethereum/go-ethereum/les/bor_api_backend.go:17.99,19.2 1 0 -github.com/ethereum/go-ethereum/les/bor_api_backend.go:22.101,24.2 1 0 -github.com/ethereum/go-ethereum/les/enr_entry.go:33.33,33.49 1 0 -github.com/ethereum/go-ethereum/les/enr_entry.go:41.33,41.49 1 0 -github.com/ethereum/go-ethereum/les/enr_entry.go:44.68,48.43 2 0 -github.com/ethereum/go-ethereum/les/enr_entry.go:58.2,58.20 1 0 -github.com/ethereum/go-ethereum/les/enr_entry.go:62.2,63.56 2 0 -github.com/ethereum/go-ethereum/les/enr_entry.go:64.2,64.22 1 0 -github.com/ethereum/go-ethereum/les/enr_entry.go:48.43,51.17 3 0 -github.com/ethereum/go-ethereum/les/enr_entry.go:54.3,54.20 1 0 -github.com/ethereum/go-ethereum/les/enr_entry.go:51.17,53.4 1 0 -github.com/ethereum/go-ethereum/les/enr_entry.go:58.20,60.3 1 0 -github.com/ethereum/go-ethereum/les/enr_entry.go:63.56,63.94 1 0 -github.com/ethereum/go-ethereum/les/enr_entry.go:68.65,72.2 3 0 -github.com/ethereum/go-ethereum/les/txrelay.go:40.79,49.2 3 0 -github.com/ethereum/go-ethereum/les/txrelay.go:51.32,53.2 1 0 -github.com/ethereum/go-ethereum/les/txrelay.go:55.53,60.20 3 0 -github.com/ethereum/go-ethereum/les/txrelay.go:63.2,63.42 1 0 -github.com/ethereum/go-ethereum/les/txrelay.go:60.20,62.3 1 0 -github.com/ethereum/go-ethereum/les/txrelay.go:66.55,70.37 3 0 -github.com/ethereum/go-ethereum/les/txrelay.go:70.37,71.16 1 0 -github.com/ethereum/go-ethereum/les/txrelay.go:71.16,75.4 2 0 -github.com/ethereum/go-ethereum/les/txrelay.go:80.65,84.45 3 0 -github.com/ethereum/go-ethereum/les/txrelay.go:88.2,88.25 1 0 -github.com/ethereum/go-ethereum/les/txrelay.go:116.2,116.30 1 0 -github.com/ethereum/go-ethereum/les/txrelay.go:84.45,86.3 1 0 -github.com/ethereum/go-ethereum/les/txrelay.go:88.25,91.10 3 0 -github.com/ethereum/go-ethereum/les/txrelay.go:95.3,95.29 1 0 -github.com/ethereum/go-ethereum/les/txrelay.go:91.10,94.4 2 0 -github.com/ethereum/go-ethereum/les/txrelay.go:95.29,98.8 3 0 -github.com/ethereum/go-ethereum/les/txrelay.go:98.8,102.17 4 0 -github.com/ethereum/go-ethereum/les/txrelay.go:105.5,106.34 2 0 -github.com/ethereum/go-ethereum/les/txrelay.go:109.5,109.33 1 0 -github.com/ethereum/go-ethereum/les/txrelay.go:102.17,103.11 1 0 -github.com/ethereum/go-ethereum/les/txrelay.go:106.34,108.6 1 0 -github.com/ethereum/go-ethereum/les/txrelay.go:109.33,110.11 1 0 -github.com/ethereum/go-ethereum/les/txrelay.go:116.30,123.38 5 0 -github.com/ethereum/go-ethereum/les/txrelay.go:137.3,137.96 1 0 -github.com/ethereum/go-ethereum/les/txrelay.go:123.38,126.5 2 0 -github.com/ethereum/go-ethereum/les/txrelay.go:127.36,129.5 1 0 -github.com/ethereum/go-ethereum/les/txrelay.go:130.38,134.19 4 0 -github.com/ethereum/go-ethereum/les/txrelay.go:134.19,134.56 1 0 -github.com/ethereum/go-ethereum/les/txrelay.go:137.96,137.110 1 0 -github.com/ethereum/go-ethereum/les/txrelay.go:141.54,146.2 3 0 -github.com/ethereum/go-ethereum/les/txrelay.go:148.96,152.29 3 0 -github.com/ethereum/go-ethereum/les/txrelay.go:156.2,156.32 1 0 -github.com/ethereum/go-ethereum/les/txrelay.go:160.2,160.29 1 0 -github.com/ethereum/go-ethereum/les/txrelay.go:152.29,154.3 1 0 -github.com/ethereum/go-ethereum/les/txrelay.go:156.32,158.3 1 0 -github.com/ethereum/go-ethereum/les/txrelay.go:160.29,163.36 3 0 -github.com/ethereum/go-ethereum/les/txrelay.go:167.3,167.20 1 0 -github.com/ethereum/go-ethereum/les/txrelay.go:163.36,166.4 2 0 -github.com/ethereum/go-ethereum/les/txrelay.go:171.55,175.30 3 0 -github.com/ethereum/go-ethereum/les/txrelay.go:175.30,178.3 2 0 -github.com/ethereum/go-ethereum/les/api_backend.go:50.59,52.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:54.53,56.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:58.48,61.2 2 0 -github.com/ethereum/go-ethereum/les/api_backend.go:63.108,67.38 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:70.2,70.37 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:73.2,73.67 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:67.38,69.3 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:70.37,72.3 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:76.127,77.47 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:80.2,80.42 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:93.2,93.79 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:77.47,79.3 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:80.42,82.17 2 0 -github.com/ethereum/go-ethereum/les/api_backend.go:85.3,85.20 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:88.3,88.106 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:91.3,91.21 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:82.17,84.4 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:85.20,87.4 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:88.106,90.4 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:96.100,98.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:100.106,102.33 2 0 -github.com/ethereum/go-ethereum/les/api_backend.go:105.2,105.42 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:102.33,104.3 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:108.98,110.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:112.125,113.47 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:116.2,116.42 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:129.2,129.79 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:113.47,115.3 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:116.42,118.17 2 0 -github.com/ethereum/go-ethereum/les/api_backend.go:121.3,121.19 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:124.3,124.101 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:127.3,127.20 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:118.17,120.4 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:121.19,123.4 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:124.101,126.4 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:132.82,134.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:136.132,138.16 2 0 -github.com/ethereum/go-ethereum/les/api_backend.go:141.2,141.19 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:144.2,144.60 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:138.16,140.3 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:141.19,143.3 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:147.151,148.47 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:151.2,151.42 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:161.2,161.84 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:148.47,150.3 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:151.42,153.20 2 0 -github.com/ethereum/go-ethereum/les/api_backend.go:156.3,156.106 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:159.3,159.61 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:153.20,155.4 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:156.106,158.4 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:164.100,165.74 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:168.2,168.17 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:165.74,167.3 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:171.96,172.74 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:175.2,175.17 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:172.74,174.3 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:178.79,179.74 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:182.2,182.12 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:179.74,181.3 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:185.167,186.21 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:189.2,191.93 3 0 -github.com/ethereum/go-ethereum/les/api_backend.go:186.21,188.3 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:194.88,196.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:198.54,200.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:202.75,204.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:206.83,208.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:210.138,212.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:214.96,216.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:218.59,220.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:222.120,224.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:226.105,228.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:230.93,232.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:234.91,236.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:238.99,240.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:242.99,244.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:246.87,248.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:250.94,251.64 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:251.64,254.3 2 0 -github.com/ethereum/go-ethereum/les/api_backend.go:257.103,259.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:261.62,263.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:265.47,267.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:269.81,271.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:273.227,275.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:277.50,279.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:281.60,283.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:285.46,287.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:289.51,291.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:293.44,295.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:297.55,299.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:301.47,303.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:305.56,306.31 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:309.2,310.47 2 0 -github.com/ethereum/go-ethereum/les/api_backend.go:306.31,308.3 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:313.95,314.42 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:314.42,316.3 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:319.51,321.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:323.55,325.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:327.172,329.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:331.168,333.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:339.107,341.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:343.102,345.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:347.146,349.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:351.182,353.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:355.73,357.2 1 0 -github.com/ethereum/go-ethereum/les/api_backend.go:359.53,360.2 0 0 -github.com/ethereum/go-ethereum/les/benchmark.go:56.73,60.19 4 0 -github.com/ethereum/go-ethereum/les/benchmark.go:63.2,63.15 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:66.2,66.14 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:72.2,72.12 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:60.19,62.3 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:63.15,65.3 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:66.14,68.27 2 0 -github.com/ethereum/go-ethereum/les/benchmark.go:68.27,70.4 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:75.76,76.14 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:79.2,79.109 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:76.14,78.3 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:88.77,91.26 3 0 -github.com/ethereum/go-ethereum/les/benchmark.go:94.2,94.12 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:91.26,93.3 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:97.80,98.16 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:101.2,101.62 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:98.16,100.3 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:110.73,113.2 2 0 -github.com/ethereum/go-ethereum/les/benchmark.go:115.76,118.12 3 0 -github.com/ethereum/go-ethereum/les/benchmark.go:121.2,121.73 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:118.12,120.3 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:131.71,132.13 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:138.2,138.25 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:141.2,141.12 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:132.13,134.3 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:134.8,137.3 2 0 -github.com/ethereum/go-ethereum/les/benchmark.go:138.25,140.3 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:144.74,147.13 2 0 -github.com/ethereum/go-ethereum/les/benchmark.go:163.2,163.46 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:147.13,149.23 2 0 -github.com/ethereum/go-ethereum/les/benchmark.go:149.23,154.4 4 0 -github.com/ethereum/go-ethereum/les/benchmark.go:155.8,156.23 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:156.23,160.4 3 0 -github.com/ethereum/go-ethereum/les/benchmark.go:171.67,177.23 5 0 -github.com/ethereum/go-ethereum/les/benchmark.go:186.2,186.12 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:177.23,181.17 4 0 -github.com/ethereum/go-ethereum/les/benchmark.go:184.3,184.16 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:181.17,182.14 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:189.70,192.2 2 0 -github.com/ethereum/go-ethereum/les/benchmark.go:197.69,199.2 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:201.72,205.2 3 0 -github.com/ethereum/go-ethereum/les/benchmark.go:218.128,220.31 2 0 -github.com/ethereum/go-ethereum/les/benchmark.go:223.2,223.33 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:246.2,248.26 2 0 -github.com/ethereum/go-ethereum/les/benchmark.go:253.2,253.14 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:220.31,222.3 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:223.33,227.21 4 0 -github.com/ethereum/go-ethereum/les/benchmark.go:227.21,234.23 5 0 -github.com/ethereum/go-ethereum/les/benchmark.go:234.23,237.27 2 0 -github.com/ethereum/go-ethereum/les/benchmark.go:240.5,240.50 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:237.27,239.6 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:240.50,242.6 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:248.26,249.19 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:249.19,251.4 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:263.50,265.2 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:267.51,268.26 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:271.2,271.27 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:268.26,270.3 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:276.73,288.29 11 0 -github.com/ethereum/go-ethereum/les/benchmark.go:291.2,295.49 4 0 -github.com/ethereum/go-ethereum/les/benchmark.go:299.2,302.12 3 0 -github.com/ethereum/go-ethereum/les/benchmark.go:310.2,310.12 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:318.2,318.12 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:332.2,332.9 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:343.2,349.12 7 0 -github.com/ethereum/go-ethereum/les/benchmark.go:288.29,290.3 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:295.49,297.3 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:302.12,303.30 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:303.30,304.54 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:304.54,307.5 2 0 -github.com/ethereum/go-ethereum/les/benchmark.go:310.12,311.30 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:311.30,312.64 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:312.64,315.5 2 0 -github.com/ethereum/go-ethereum/les/benchmark.go:318.12,319.30 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:330.3,330.15 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:319.30,321.18 2 0 -github.com/ethereum/go-ethereum/les/benchmark.go:325.4,326.18 2 0 -github.com/ethereum/go-ethereum/les/benchmark.go:321.18,324.5 2 0 -github.com/ethereum/go-ethereum/les/benchmark.go:333.22,334.17 1 0 -github.com/ethereum/go-ethereum/les/benchmark.go:337.19,340.43 3 0 -github.com/ethereum/go-ethereum/les/benchmark.go:334.17,336.4 1 0 -github.com/ethereum/go-ethereum/les/odr.go:41.122,49.2 1 1 -github.com/ethereum/go-ethereum/les/odr.go:52.27,54.2 1 0 -github.com/ethereum/go-ethereum/les/odr.go:57.46,59.2 1 1 -github.com/ethereum/go-ethereum/les/odr.go:62.95,66.2 3 1 -github.com/ethereum/go-ethereum/les/odr.go:69.52,71.2 1 1 -github.com/ethereum/go-ethereum/les/odr.go:74.58,76.2 1 1 -github.com/ethereum/go-ethereum/les/odr.go:79.54,81.2 1 1 -github.com/ethereum/go-ethereum/les/odr.go:84.57,86.2 1 1 -github.com/ethereum/go-ethereum/les/odr.go:109.36,109.53 1 1 -github.com/ethereum/go-ethereum/les/odr.go:110.46,111.40 1 1 -github.com/ethereum/go-ethereum/les/odr.go:114.2,114.40 1 1 -github.com/ethereum/go-ethereum/les/odr.go:117.2,117.40 1 1 -github.com/ethereum/go-ethereum/les/odr.go:111.40,113.3 1 1 -github.com/ethereum/go-ethereum/les/odr.go:114.40,116.3 1 0 -github.com/ethereum/go-ethereum/les/odr.go:119.41,119.68 1 1 -github.com/ethereum/go-ethereum/les/odr.go:132.92,142.44 2 1 -github.com/ethereum/go-ethereum/les/odr.go:148.2,149.63 2 1 -github.com/ethereum/go-ethereum/les/odr.go:153.2,153.6 1 1 -github.com/ethereum/go-ethereum/les/odr.go:193.2,194.12 2 1 -github.com/ethereum/go-ethereum/les/odr.go:142.44,143.40 1 1 -github.com/ethereum/go-ethereum/les/odr.go:146.3,146.30 1 1 -github.com/ethereum/go-ethereum/les/odr.go:143.40,144.12 1 0 -github.com/ethereum/go-ethereum/les/odr.go:149.63,151.3 1 1 -github.com/ethereum/go-ethereum/les/odr.go:153.6,154.55 1 1 -github.com/ethereum/go-ethereum/les/odr.go:157.3,162.39 1 1 -github.com/ethereum/go-ethereum/les/odr.go:172.3,172.87 1 1 -github.com/ethereum/go-ethereum/les/odr.go:178.3,178.41 1 1 -github.com/ethereum/go-ethereum/les/odr.go:188.3,188.19 1 1 -github.com/ethereum/go-ethereum/les/odr.go:191.3,191.15 1 1 -github.com/ethereum/go-ethereum/les/odr.go:154.55,155.9 1 1 -github.com/ethereum/go-ethereum/les/odr.go:162.39,162.79 1 1 -github.com/ethereum/go-ethereum/les/odr.go:163.37,163.76 1 1 -github.com/ethereum/go-ethereum/les/odr.go:164.39,168.20 4 1 -github.com/ethereum/go-ethereum/les/odr.go:168.20,168.42 1 1 -github.com/ethereum/go-ethereum/les/odr.go:172.87,172.123 1 1 -github.com/ethereum/go-ethereum/les/odr.go:172.147,174.4 1 0 -github.com/ethereum/go-ethereum/les/odr.go:178.41,179.52 1 1 -github.com/ethereum/go-ethereum/les/odr.go:182.4,182.45 1 1 -github.com/ethereum/go-ethereum/les/odr.go:185.4,185.46 1 1 -github.com/ethereum/go-ethereum/les/odr.go:179.52,180.13 1 1 -github.com/ethereum/go-ethereum/les/odr.go:182.45,183.13 1 1 -github.com/ethereum/go-ethereum/les/odr.go:188.19,189.9 1 1 -github.com/ethereum/go-ethereum/les/odr.go:201.84,206.37 3 1 -github.com/ethereum/go-ethereum/les/odr.go:224.2,224.34 1 1 -github.com/ethereum/go-ethereum/les/odr.go:231.2,231.84 1 1 -github.com/ethereum/go-ethereum/les/odr.go:234.2,235.12 2 1 -github.com/ethereum/go-ethereum/les/odr.go:206.37,208.4 1 1 -github.com/ethereum/go-ethereum/les/odr.go:209.35,211.23 2 1 -github.com/ethereum/go-ethereum/les/odr.go:214.4,214.16 1 0 -github.com/ethereum/go-ethereum/les/odr.go:211.23,213.5 1 1 -github.com/ethereum/go-ethereum/les/odr.go:216.37,220.18 4 1 -github.com/ethereum/go-ethereum/les/odr.go:220.18,220.44 1 1 -github.com/ethereum/go-ethereum/les/odr.go:224.34,225.17 1 1 -github.com/ethereum/go-ethereum/les/odr.go:228.3,228.56 1 1 -github.com/ethereum/go-ethereum/les/odr.go:225.17,227.4 1 1 -github.com/ethereum/go-ethereum/les/odr.go:231.84,231.121 1 1 -github.com/ethereum/go-ethereum/les/odr.go:231.145,233.3 1 1 -github.com/ethereum/go-ethereum/les/server.go:79.96,81.16 2 0 -github.com/ethereum/go-ethereum/les/server.go:86.2,87.17 2 0 -github.com/ethereum/go-ethereum/les/server.go:90.2,114.29 3 0 -github.com/ethereum/go-ethereum/les/server.go:117.2,136.37 8 0 -github.com/ethereum/go-ethereum/les/server.go:139.2,146.25 7 0 -github.com/ethereum/go-ethereum/les/server.go:150.2,155.17 5 0 -github.com/ethereum/go-ethereum/les/server.go:81.16,83.3 1 0 -github.com/ethereum/go-ethereum/les/server.go:87.17,89.3 1 0 -github.com/ethereum/go-ethereum/les/server.go:114.29,115.24 1 0 -github.com/ethereum/go-ethereum/les/server.go:115.24,115.39 1 0 -github.com/ethereum/go-ethereum/les/server.go:136.37,138.3 1 0 -github.com/ethereum/go-ethereum/les/server.go:146.25,149.3 1 0 -github.com/ethereum/go-ethereum/les/server.go:158.38,179.2 1 0 -github.com/ethereum/go-ethereum/les/server.go:181.48,182.97 1 0 -github.com/ethereum/go-ethereum/les/server.go:189.2,189.20 1 0 -github.com/ethereum/go-ethereum/les/server.go:194.2,194.11 1 0 -github.com/ethereum/go-ethereum/les/server.go:182.97,183.38 1 0 -github.com/ethereum/go-ethereum/les/server.go:186.3,186.13 1 0 -github.com/ethereum/go-ethereum/les/server.go:183.38,185.4 1 0 -github.com/ethereum/go-ethereum/les/server.go:189.20,193.3 1 0 -github.com/ethereum/go-ethereum/les/server.go:198.35,204.28 6 0 -github.com/ethereum/go-ethereum/les/server.go:207.2,207.12 1 0 -github.com/ethereum/go-ethereum/les/server.go:204.28,206.3 1 0 -github.com/ethereum/go-ethereum/les/server.go:211.34,215.24 3 1 -github.com/ethereum/go-ethereum/les/server.go:218.2,223.26 6 1 -github.com/ethereum/go-ethereum/les/server.go:228.2,228.25 1 1 -github.com/ethereum/go-ethereum/les/server.go:231.2,231.20 1 1 -github.com/ethereum/go-ethereum/les/server.go:234.2,237.12 3 1 -github.com/ethereum/go-ethereum/les/server.go:215.24,217.3 1 0 -github.com/ethereum/go-ethereum/les/server.go:223.26,225.3 1 0 -github.com/ethereum/go-ethereum/les/server.go:228.25,230.3 1 0 -github.com/ethereum/go-ethereum/les/server.go:231.20,233.3 1 0 -github.com/ethereum/go-ethereum/les/server.go:243.42,262.27 11 0 -github.com/ethereum/go-ethereum/les/server.go:271.2,273.6 2 0 -github.com/ethereum/go-ethereum/les/server.go:262.27,263.11 1 0 -github.com/ethereum/go-ethereum/les/server.go:263.11,266.4 2 0 -github.com/ethereum/go-ethereum/les/server.go:266.9,269.4 2 0 -github.com/ethereum/go-ethereum/les/server.go:273.6,274.10 1 0 -github.com/ethereum/go-ethereum/les/server.go:275.27,276.12 1 0 -github.com/ethereum/go-ethereum/les/server.go:281.4,281.20 1 0 -github.com/ethereum/go-ethereum/les/server.go:282.42,284.20 2 0 -github.com/ethereum/go-ethereum/les/server.go:285.42,288.78 3 0 -github.com/ethereum/go-ethereum/les/server.go:291.4,292.70 2 0 -github.com/ethereum/go-ethereum/les/server.go:293.20,294.10 1 0 -github.com/ethereum/go-ethereum/les/server.go:276.12,278.5 1 0 -github.com/ethereum/go-ethereum/les/server.go:278.10,280.5 1 0 -github.com/ethereum/go-ethereum/les/server.go:288.78,290.5 1 0 -github.com/ethereum/go-ethereum/les/costtracker.go:140.89,148.29 3 1 -github.com/ethereum/go-ethereum/les/costtracker.go:151.2,151.28 1 1 -github.com/ethereum/go-ethereum/les/costtracker.go:154.2,154.19 1 1 -github.com/ethereum/go-ethereum/les/costtracker.go:160.2,162.29 3 1 -github.com/ethereum/go-ethereum/les/costtracker.go:169.2,170.49 2 1 -github.com/ethereum/go-ethereum/les/costtracker.go:148.29,150.3 1 0 -github.com/ethereum/go-ethereum/les/costtracker.go:151.28,153.3 1 0 -github.com/ethereum/go-ethereum/les/costtracker.go:154.19,156.36 2 0 -github.com/ethereum/go-ethereum/les/costtracker.go:156.36,158.4 1 0 -github.com/ethereum/go-ethereum/les/costtracker.go:162.29,165.28 3 1 -github.com/ethereum/go-ethereum/les/costtracker.go:165.28,167.4 1 1 -github.com/ethereum/go-ethereum/les/costtracker.go:174.31,178.19 4 1 -github.com/ethereum/go-ethereum/les/costtracker.go:178.19,180.3 1 0 -github.com/ethereum/go-ethereum/les/costtracker.go:185.75,186.62 1 1 -github.com/ethereum/go-ethereum/les/costtracker.go:198.2,199.41 2 1 -github.com/ethereum/go-ethereum/les/costtracker.go:218.2,218.13 1 1 -github.com/ethereum/go-ethereum/les/costtracker.go:186.62,189.24 3 1 -github.com/ethereum/go-ethereum/les/costtracker.go:192.3,193.25 2 1 -github.com/ethereum/go-ethereum/les/costtracker.go:196.3,196.14 1 1 -github.com/ethereum/go-ethereum/les/costtracker.go:189.24,191.4 1 0 -github.com/ethereum/go-ethereum/les/costtracker.go:193.25,195.4 1 0 -github.com/ethereum/go-ethereum/les/costtracker.go:199.41,202.26 3 1 -github.com/ethereum/go-ethereum/les/costtracker.go:212.3,216.5 1 1 -github.com/ethereum/go-ethereum/les/costtracker.go:202.26,205.32 2 0 -github.com/ethereum/go-ethereum/les/costtracker.go:205.32,209.5 3 0 -github.com/ethereum/go-ethereum/les/costtracker.go:244.33,254.20 3 1 -github.com/ethereum/go-ethereum/les/costtracker.go:257.2,264.12 4 1 -github.com/ethereum/go-ethereum/les/costtracker.go:254.20,256.3 1 0 -github.com/ethereum/go-ethereum/les/costtracker.go:264.12,265.28 1 1 -github.com/ethereum/go-ethereum/les/costtracker.go:271.3,274.7 3 1 -github.com/ethereum/go-ethereum/les/costtracker.go:265.28,270.4 4 1 -github.com/ethereum/go-ethereum/les/costtracker.go:274.7,275.11 1 1 -github.com/ethereum/go-ethereum/les/costtracker.go:276.29,280.33 2 1 -github.com/ethereum/go-ethereum/les/costtracker.go:306.5,306.64 1 1 -github.com/ethereum/go-ethereum/les/costtracker.go:309.5,323.24 12 1 -github.com/ethereum/go-ethereum/les/costtracker.go:327.5,327.24 1 1 -github.com/ethereum/go-ethereum/les/costtracker.go:344.5,347.20 3 1 -github.com/ethereum/go-ethereum/les/costtracker.go:368.5,369.50 2 1 -github.com/ethereum/go-ethereum/les/costtracker.go:371.24,372.21 1 0 -github.com/ethereum/go-ethereum/les/costtracker.go:374.31,377.11 3 1 -github.com/ethereum/go-ethereum/les/costtracker.go:280.33,281.23 1 0 -github.com/ethereum/go-ethereum/les/costtracker.go:282.30,283.50 1 0 -github.com/ethereum/go-ethereum/les/costtracker.go:284.29,285.48 1 0 -github.com/ethereum/go-ethereum/les/costtracker.go:286.26,287.51 1 0 -github.com/ethereum/go-ethereum/les/costtracker.go:288.22,289.48 1 0 -github.com/ethereum/go-ethereum/les/costtracker.go:290.26,291.49 1 0 -github.com/ethereum/go-ethereum/les/costtracker.go:292.34,293.55 1 0 -github.com/ethereum/go-ethereum/les/costtracker.go:294.23,295.50 1 0 -github.com/ethereum/go-ethereum/les/costtracker.go:296.26,297.52 1 0 -github.com/ethereum/go-ethereum/les/costtracker.go:306.64,307.14 1 1 -github.com/ethereum/go-ethereum/les/costtracker.go:323.24,325.6 1 1 -github.com/ethereum/go-ethereum/les/costtracker.go:327.24,329.30 1 1 -github.com/ethereum/go-ethereum/les/costtracker.go:335.6,335.32 1 1 -github.com/ethereum/go-ethereum/les/costtracker.go:329.30,331.7 1 1 -github.com/ethereum/go-ethereum/les/costtracker.go:331.12,333.7 1 0 -github.com/ethereum/go-ethereum/les/costtracker.go:335.32,338.7 1 0 -github.com/ethereum/go-ethereum/les/costtracker.go:338.12,341.7 1 1 -github.com/ethereum/go-ethereum/les/costtracker.go:347.20,352.53 3 1 -github.com/ethereum/go-ethereum/les/costtracker.go:352.53,358.20 6 1 -github.com/ethereum/go-ethereum/les/costtracker.go:364.7,365.64 2 1 -github.com/ethereum/go-ethereum/les/costtracker.go:358.20,359.15 1 0 -github.com/ethereum/go-ethereum/les/costtracker.go:360.57,360.57 0 0 -github.com/ethereum/go-ethereum/les/costtracker.go:361.16,361.16 0 0 -github.com/ethereum/go-ethereum/les/costtracker.go:384.47,389.2 3 1 -github.com/ethereum/go-ethereum/les/costtracker.go:393.47,398.2 3 0 -github.com/ethereum/go-ethereum/les/costtracker.go:402.70,408.2 4 0 -github.com/ethereum/go-ethereum/les/costtracker.go:412.80,415.9 3 1 -github.com/ethereum/go-ethereum/les/costtracker.go:419.2,419.19 1 1 -github.com/ethereum/go-ethereum/les/costtracker.go:416.81,416.81 0 1 -github.com/ethereum/go-ethereum/les/costtracker.go:417.10,417.10 0 0 -github.com/ethereum/go-ethereum/les/costtracker.go:419.19,422.39 3 0 -github.com/ethereum/go-ethereum/les/costtracker.go:426.3,426.42 1 0 -github.com/ethereum/go-ethereum/les/costtracker.go:422.39,425.4 2 0 -github.com/ethereum/go-ethereum/les/costtracker.go:438.84,441.23 3 1 -github.com/ethereum/go-ethereum/les/costtracker.go:444.2,445.24 2 1 -github.com/ethereum/go-ethereum/les/costtracker.go:448.2,448.41 1 1 -github.com/ethereum/go-ethereum/les/costtracker.go:441.23,443.3 1 0 -github.com/ethereum/go-ethereum/les/costtracker.go:445.24,447.3 1 0 -github.com/ethereum/go-ethereum/les/costtracker.go:452.37,453.21 1 0 -github.com/ethereum/go-ethereum/les/costtracker.go:456.2,456.34 1 0 -github.com/ethereum/go-ethereum/les/costtracker.go:453.21,455.3 1 0 -github.com/ethereum/go-ethereum/les/costtracker.go:456.34,458.3 1 0 -github.com/ethereum/go-ethereum/les/costtracker.go:479.70,482.2 2 1 -github.com/ethereum/go-ethereum/les/costtracker.go:485.76,487.25 2 1 -github.com/ethereum/go-ethereum/les/costtracker.go:495.2,495.14 1 1 -github.com/ethereum/go-ethereum/les/costtracker.go:487.25,488.33 1 1 -github.com/ethereum/go-ethereum/les/costtracker.go:488.33,493.4 1 1 -github.com/ethereum/go-ethereum/les/costtracker.go:499.52,502.35 3 1 -github.com/ethereum/go-ethereum/les/costtracker.go:507.2,508.45 2 1 -github.com/ethereum/go-ethereum/les/costtracker.go:516.2,516.11 1 1 -github.com/ethereum/go-ethereum/les/costtracker.go:502.35,503.17 1 1 -github.com/ethereum/go-ethereum/les/costtracker.go:503.17,505.4 1 1 -github.com/ethereum/go-ethereum/les/costtracker.go:508.45,509.40 1 1 -github.com/ethereum/go-ethereum/les/costtracker.go:509.40,514.4 4 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:55.53,56.25 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:57.27,58.28 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:59.30,60.31 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:61.26,62.27 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:63.26,64.27 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:65.25,66.26 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:67.27,68.28 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:69.30,70.31 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:71.10,72.13 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:81.57,83.2 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:86.55,88.2 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:91.70,94.2 2 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:99.68,103.35 2 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:106.2,107.22 2 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:110.2,113.21 2 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:116.2,116.21 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:119.2,119.103 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:122.2,122.60 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:126.2,127.16 2 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:130.2,131.12 2 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:103.35,105.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:107.22,109.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:113.21,115.3 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:116.21,118.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:119.103,121.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:122.60,124.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:127.16,129.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:139.60,141.2 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:144.58,146.2 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:149.73,152.2 2 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:157.71,161.32 2 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:164.2,165.24 2 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:168.2,171.21 2 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:174.2,174.21 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:177.2,177.78 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:181.2,182.12 2 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:161.32,163.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:165.24,167.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:171.21,173.3 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:174.21,176.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:177.78,179.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:196.56,198.2 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:201.54,203.2 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:206.69,214.2 3 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:219.67,222.32 2 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:225.2,229.69 4 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:233.2,233.44 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:236.2,237.12 2 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:222.32,224.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:229.69,231.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:233.44,235.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:250.56,252.2 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:255.54,257.2 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:260.69,267.2 3 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:272.67,276.28 2 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:279.2,280.21 2 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:283.2,286.56 2 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:289.2,290.12 2 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:276.28,278.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:280.21,282.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:286.56,288.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:320.55,322.2 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:325.53,330.2 3 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:333.68,344.2 5 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:349.66,352.40 2 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:355.2,356.28 2 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:359.2,361.25 3 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:364.2,365.59 2 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:369.2,377.16 5 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:380.2,380.44 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:383.2,383.54 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:386.2,386.32 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:389.2,389.42 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:393.2,396.12 4 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:352.40,354.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:356.28,358.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:361.25,363.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:365.59,367.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:377.16,379.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:380.44,382.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:383.54,385.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:386.32,388.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:389.42,391.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:408.57,410.2 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:413.55,417.25 3 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:420.2,420.153 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:417.25,419.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:424.70,431.48 5 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:439.2,439.50 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:431.48,438.3 2 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:445.68,449.40 2 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:452.2,463.41 8 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:472.2,472.44 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:475.2,476.12 2 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:449.40,451.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:463.41,466.17 3 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:469.3,469.25 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:466.17,468.4 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:472.44,474.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:484.60,486.2 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:489.58,491.2 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:494.73,497.2 2 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:502.71,505.32 2 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:508.2,509.34 2 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:512.2,513.12 2 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:505.32,507.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:509.34,511.3 1 0 -github.com/ethereum/go-ethereum/les/odr_requests.go:524.54,525.21 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:528.2,529.21 2 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:525.21,527.3 1 1 -github.com/ethereum/go-ethereum/les/odr_requests.go:533.54,536.2 2 0 -github.com/ethereum/go-ethereum/les/retrieve.go:93.117,100.2 1 1 -github.com/ethereum/go-ethereum/les/retrieve.go:106.135,108.9 2 1 -github.com/ethereum/go-ethereum/les/retrieve.go:115.2,115.27 1 1 -github.com/ethereum/go-ethereum/les/retrieve.go:109.24,109.24 0 1 -github.com/ethereum/go-ethereum/les/retrieve.go:110.20,111.26 1 0 -github.com/ethereum/go-ethereum/les/retrieve.go:112.18,113.54 1 0 -github.com/ethereum/go-ethereum/les/retrieve.go:120.92,132.38 3 1 -github.com/ethereum/go-ethereum/les/retrieve.go:140.2,141.40 2 1 -github.com/ethereum/go-ethereum/les/retrieve.go:148.2,153.10 5 1 -github.com/ethereum/go-ethereum/les/retrieve.go:132.38,138.3 4 1 -github.com/ethereum/go-ethereum/les/retrieve.go:141.40,147.3 4 1 -github.com/ethereum/go-ethereum/les/retrieve.go:157.57,163.2 4 1 -github.com/ethereum/go-ethereum/les/retrieve.go:166.67,171.8 4 1 -github.com/ethereum/go-ethereum/les/retrieve.go:174.2,174.64 1 0 -github.com/ethereum/go-ethereum/les/retrieve.go:171.8,173.3 1 1 -github.com/ethereum/go-ethereum/les/retrieve.go:179.50,183.34 3 0 -github.com/ethereum/go-ethereum/les/retrieve.go:183.34,185.3 1 0 -github.com/ethereum/go-ethereum/les/retrieve.go:192.34,197.19 4 1 -github.com/ethereum/go-ethereum/les/retrieve.go:201.2,203.20 3 1 -github.com/ethereum/go-ethereum/les/retrieve.go:197.19,199.3 1 1 -github.com/ethereum/go-ethereum/les/retrieve.go:208.48,209.9 1 1 -github.com/ethereum/go-ethereum/les/retrieve.go:210.26,212.19 2 1 -github.com/ethereum/go-ethereum/les/retrieve.go:241.3,241.27 1 1 -github.com/ethereum/go-ethereum/les/retrieve.go:242.18,243.24 1 0 -github.com/ethereum/go-ethereum/les/retrieve.go:213.15,214.22 1 1 -github.com/ethereum/go-ethereum/les/retrieve.go:225.22,229.28 3 0 -github.com/ethereum/go-ethereum/les/retrieve.go:230.43,232.50 1 0 -github.com/ethereum/go-ethereum/les/retrieve.go:236.4,236.28 1 0 -github.com/ethereum/go-ethereum/les/retrieve.go:237.25,239.25 2 1 -github.com/ethereum/go-ethereum/les/retrieve.go:214.22,216.20 1 1 -github.com/ethereum/go-ethereum/les/retrieve.go:221.5,223.15 2 1 -github.com/ethereum/go-ethereum/les/retrieve.go:216.20,219.6 1 0 -github.com/ethereum/go-ethereum/les/retrieve.go:232.50,235.5 2 0 -github.com/ethereum/go-ethereum/les/retrieve.go:250.49,251.9 1 0 -github.com/ethereum/go-ethereum/les/retrieve.go:252.32,255.27 3 0 -github.com/ethereum/go-ethereum/les/retrieve.go:256.26,258.35 2 0 -github.com/ethereum/go-ethereum/les/retrieve.go:262.3,262.18 1 0 -github.com/ethereum/go-ethereum/les/retrieve.go:265.3,266.13 2 0 -github.com/ethereum/go-ethereum/les/retrieve.go:267.18,268.24 1 0 -github.com/ethereum/go-ethereum/les/retrieve.go:258.35,261.4 2 0 -github.com/ethereum/go-ethereum/les/retrieve.go:262.18,264.4 1 0 -github.com/ethereum/go-ethereum/les/retrieve.go:274.45,275.18 1 1 -github.com/ethereum/go-ethereum/les/retrieve.go:278.2,278.12 1 1 -github.com/ethereum/go-ethereum/les/retrieve.go:275.18,277.3 1 0 -github.com/ethereum/go-ethereum/les/retrieve.go:282.43,283.18 1 1 -github.com/ethereum/go-ethereum/les/retrieve.go:284.14,286.28 2 1 -github.com/ethereum/go-ethereum/les/retrieve.go:287.21,289.19 2 0 -github.com/ethereum/go-ethereum/les/retrieve.go:290.21,291.19 1 0 -github.com/ethereum/go-ethereum/les/retrieve.go:292.60,293.33 1 1 -github.com/ethereum/go-ethereum/les/retrieve.go:293.33,295.4 1 1 -github.com/ethereum/go-ethereum/les/retrieve.go:295.9,297.4 1 0 -github.com/ethereum/go-ethereum/les/retrieve.go:303.34,305.2 1 1 -github.com/ethereum/go-ethereum/les/retrieve.go:310.32,313.9 3 1 -github.com/ethereum/go-ethereum/les/retrieve.go:323.2,324.14 2 1 -github.com/ethereum/go-ethereum/les/retrieve.go:328.2,333.9 5 1 -github.com/ethereum/go-ethereum/les/retrieve.go:337.2,337.15 1 1 -github.com/ethereum/go-ethereum/les/retrieve.go:347.2,347.9 1 1 -github.com/ethereum/go-ethereum/les/retrieve.go:360.2,360.9 1 0 -github.com/ethereum/go-ethereum/les/retrieve.go:314.18,314.18 0 1 -github.com/ethereum/go-ethereum/les/retrieve.go:315.18,316.30 1 0 -github.com/ethereum/go-ethereum/les/retrieve.go:316.30,318.4 1 0 -github.com/ethereum/go-ethereum/les/retrieve.go:318.9,320.4 1 0 -github.com/ethereum/go-ethereum/les/retrieve.go:324.14,326.3 1 1 -github.com/ethereum/go-ethereum/les/retrieve.go:333.9,334.13 1 0 -github.com/ethereum/go-ethereum/les/retrieve.go:337.15,339.17 2 1 -github.com/ethereum/go-ethereum/les/retrieve.go:339.17,341.25 2 0 -github.com/ethereum/go-ethereum/les/retrieve.go:341.25,343.5 1 0 -github.com/ethereum/go-ethereum/les/retrieve.go:348.26,349.30 1 1 -github.com/ethereum/go-ethereum/les/retrieve.go:354.3,355.9 2 1 -github.com/ethereum/go-ethereum/les/retrieve.go:356.47,357.47 1 0 -github.com/ethereum/go-ethereum/les/retrieve.go:349.30,353.4 3 0 -github.com/ethereum/go-ethereum/les/retrieve.go:361.26,362.30 1 0 -github.com/ethereum/go-ethereum/les/retrieve.go:367.3,367.39 1 0 -github.com/ethereum/go-ethereum/les/retrieve.go:368.40,370.47 2 0 -github.com/ethereum/go-ethereum/les/retrieve.go:362.30,366.4 3 0 -github.com/ethereum/go-ethereum/les/retrieve.go:375.58,380.24 4 1 -github.com/ethereum/go-ethereum/les/retrieve.go:383.2,383.14 1 1 -github.com/ethereum/go-ethereum/les/retrieve.go:386.2,388.11 3 1 -github.com/ethereum/go-ethereum/les/retrieve.go:393.2,393.12 1 1 -github.com/ethereum/go-ethereum/les/retrieve.go:396.2,396.12 1 1 -github.com/ethereum/go-ethereum/les/retrieve.go:380.24,382.3 1 0 -github.com/ethereum/go-ethereum/les/retrieve.go:383.14,385.3 1 0 -github.com/ethereum/go-ethereum/les/retrieve.go:388.11,390.3 1 1 -github.com/ethereum/go-ethereum/les/retrieve.go:390.8,392.3 1 0 -github.com/ethereum/go-ethereum/les/retrieve.go:393.12,395.3 1 0 -github.com/ethereum/go-ethereum/les/retrieve.go:403.41,408.37 4 0 -github.com/ethereum/go-ethereum/les/retrieve.go:408.37,411.3 2 0 -github.com/ethereum/go-ethereum/les/retrieve.go:416.35,418.16 2 1 -github.com/ethereum/go-ethereum/les/retrieve.go:423.2,423.17 1 1 -github.com/ethereum/go-ethereum/les/retrieve.go:418.16,422.3 3 1 -github.com/ethereum/go-ethereum/les/retrieve.go:428.36,430.2 1 1 -github.com/ethereum/go-ethereum/les/protocol.go:176.13,178.34 2 1 -github.com/ethereum/go-ethereum/les/protocol.go:178.34,186.29 4 1 -github.com/ethereum/go-ethereum/les/protocol.go:194.3,194.36 1 1 -github.com/ethereum/go-ethereum/les/protocol.go:186.29,193.4 2 1 -github.com/ethereum/go-ethereum/les/protocol.go:219.34,221.2 1 1 -github.com/ethereum/go-ethereum/les/protocol.go:252.44,253.41 1 1 -github.com/ethereum/go-ethereum/les/protocol.go:256.2,256.12 1 1 -github.com/ethereum/go-ethereum/les/protocol.go:253.41,255.3 1 0 -github.com/ethereum/go-ethereum/les/protocol.go:260.56,264.2 3 1 -github.com/ethereum/go-ethereum/les/protocol.go:267.78,269.49 2 1 -github.com/ethereum/go-ethereum/les/protocol.go:272.2,274.16 3 1 -github.com/ethereum/go-ethereum/les/protocol.go:277.2,277.41 1 1 -github.com/ethereum/go-ethereum/les/protocol.go:280.2,280.38 1 0 -github.com/ethereum/go-ethereum/les/protocol.go:269.49,271.3 1 0 -github.com/ethereum/go-ethereum/les/protocol.go:274.16,276.3 1 0 -github.com/ethereum/go-ethereum/les/protocol.go:277.41,279.3 1 1 -github.com/ethereum/go-ethereum/les/protocol.go:297.54,298.32 1 1 -github.com/ethereum/go-ethereum/les/protocol.go:301.2,301.20 1 1 -github.com/ethereum/go-ethereum/les/protocol.go:304.2,304.31 1 1 -github.com/ethereum/go-ethereum/les/protocol.go:298.32,300.3 1 1 -github.com/ethereum/go-ethereum/les/protocol.go:301.20,303.3 1 0 -github.com/ethereum/go-ethereum/les/protocol.go:309.56,311.9 2 1 -github.com/ethereum/go-ethereum/les/protocol.go:312.18,313.13 1 0 -github.com/ethereum/go-ethereum/les/protocol.go:314.18,316.28 2 1 -github.com/ethereum/go-ethereum/les/protocol.go:317.17,319.30 2 1 -github.com/ethereum/go-ethereum/les/protocol.go:320.10,321.62 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:72.36,73.23 1 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:76.2,77.9 2 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:82.2,82.9 1 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:87.2,87.20 1 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:90.2,91.13 2 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:73.23,75.3 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:78.28,78.28 0 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:79.19,80.15 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:83.29,83.29 0 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:84.19,85.15 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:87.20,89.3 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:96.37,101.22 5 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:107.2,107.22 1 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:101.22,104.3 2 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:104.8,106.3 1 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:114.41,116.18 2 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:120.2,120.18 1 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:116.18,119.3 2 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:124.75,142.2 5 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:145.96,153.2 1 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:161.44,163.6 2 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:163.6,165.10 2 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:173.3,173.10 1 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:166.33,167.25 1 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:168.26,169.10 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:170.18,171.10 1 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:174.26,175.10 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:176.18,177.10 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:178.16,178.16 0 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:195.29,197.2 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:199.39,201.2 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:203.34,205.2 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:209.39,212.20 3 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:215.2,216.26 2 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:234.2,236.33 3 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:253.2,253.25 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:212.20,214.3 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:216.26,219.19 3 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:231.3,232.32 2 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:219.19,221.20 2 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:224.4,229.38 3 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:221.20,223.5 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:236.33,237.11 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:237.11,244.36 7 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:244.36,246.5 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:247.9,248.36 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:248.36,250.5 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:253.25,255.3 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:259.44,264.12 5 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:267.2,267.29 1 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:264.12,266.3 1 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:267.29,269.3 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:269.8,271.3 1 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:275.52,276.20 1 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:284.2,288.49 5 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:276.20,278.3 1 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:278.8,278.47 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:278.47,281.3 2 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:281.8,283.3 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:288.49,290.3 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:296.37,298.6 2 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:298.6,299.21 1 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:299.21,301.11 2 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:302.33,303.21 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:304.35,310.29 6 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:315.19,316.11 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:310.29,312.6 1 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:312.11,314.6 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:318.9,319.11 1 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:320.33,321.21 1 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:322.19,323.11 1 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:331.43,334.6 3 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:334.6,335.42 1 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:340.3,340.41 1 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:335.42,339.4 3 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:340.41,341.11 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:342.47,342.47 0 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:343.39,344.21 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:345.19,346.11 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:348.9,349.11 1 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:350.47,350.47 0 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:351.19,352.11 1 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:360.53,361.9 1 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:362.38,362.38 0 1 -github.com/ethereum/go-ethereum/les/servingqueue.go:363.17,364.9 1 0 -github.com/ethereum/go-ethereum/les/servingqueue.go:369.32,372.2 2 1 -github.com/ethereum/go-ethereum/les/sync.go:55.68,62.16 5 1 -github.com/ethereum/go-ethereum/les/sync.go:66.2,67.16 2 1 -github.com/ethereum/go-ethereum/les/sync.go:70.2,71.22 2 1 -github.com/ethereum/go-ethereum/les/sync.go:74.2,79.31 2 1 -github.com/ethereum/go-ethereum/les/sync.go:82.2,83.12 2 1 -github.com/ethereum/go-ethereum/les/sync.go:86.2,87.12 2 1 -github.com/ethereum/go-ethereum/les/sync.go:62.16,64.3 1 0 -github.com/ethereum/go-ethereum/les/sync.go:67.16,69.3 1 0 -github.com/ethereum/go-ethereum/les/sync.go:71.22,73.3 1 0 -github.com/ethereum/go-ethereum/les/sync.go:79.31,81.3 1 1 -github.com/ethereum/go-ethereum/les/sync.go:83.12,85.3 1 0 -github.com/ethereum/go-ethereum/les/sync.go:91.55,93.17 1 1 -github.com/ethereum/go-ethereum/les/sync.go:97.2,99.54 3 1 -github.com/ethereum/go-ethereum/les/sync.go:115.2,119.86 2 1 -github.com/ethereum/go-ethereum/les/sync.go:124.2,124.41 1 1 -github.com/ethereum/go-ethereum/les/sync.go:138.2,139.9 2 1 -github.com/ethereum/go-ethereum/les/sync.go:160.2,160.15 1 1 -github.com/ethereum/go-ethereum/les/sync.go:166.2,167.60 2 1 -github.com/ethereum/go-ethereum/les/sync.go:195.2,195.24 1 1 -github.com/ethereum/go-ethereum/les/sync.go:199.2,199.104 1 1 -github.com/ethereum/go-ethereum/les/sync.go:203.2,203.88 1 1 -github.com/ethereum/go-ethereum/les/sync.go:93.17,95.3 1 0 -github.com/ethereum/go-ethereum/les/sync.go:99.54,101.3 1 0 -github.com/ethereum/go-ethereum/les/sync.go:119.86,121.3 1 1 -github.com/ethereum/go-ethereum/les/sync.go:124.41,126.41 2 1 -github.com/ethereum/go-ethereum/les/sync.go:126.41,128.4 1 1 -github.com/ethereum/go-ethereum/les/sync.go:140.26,142.72 2 1 -github.com/ethereum/go-ethereum/les/sync.go:143.89,145.89 2 0 -github.com/ethereum/go-ethereum/les/sync.go:146.13,148.79 2 1 -github.com/ethereum/go-ethereum/les/sync.go:149.64,150.26 1 1 -github.com/ethereum/go-ethereum/les/sync.go:156.3,156.91 1 1 -github.com/ethereum/go-ethereum/les/sync.go:150.26,152.4 1 1 -github.com/ethereum/go-ethereum/les/sync.go:152.9,155.4 2 0 -github.com/ethereum/go-ethereum/les/sync.go:160.15,161.23 1 1 -github.com/ethereum/go-ethereum/les/sync.go:161.23,163.4 1 1 -github.com/ethereum/go-ethereum/les/sync.go:167.60,169.29 1 1 -github.com/ethereum/go-ethereum/les/sync.go:177.3,188.83 4 1 -github.com/ethereum/go-ethereum/les/sync.go:169.29,170.53 1 1 -github.com/ethereum/go-ethereum/les/sync.go:175.4,175.57 1 1 -github.com/ethereum/go-ethereum/les/sync.go:170.53,174.5 3 0 -github.com/ethereum/go-ethereum/les/sync.go:188.83,192.4 3 0 -github.com/ethereum/go-ethereum/les/sync.go:195.24,197.3 1 1 -github.com/ethereum/go-ethereum/les/sync.go:199.104,202.3 2 1 -github.com/ethereum/go-ethereum/les/api.go:43.73,49.2 1 0 -github.com/ethereum/go-ethereum/les/api.go:52.47,53.48 1 0 -github.com/ethereum/go-ethereum/les/api.go:56.2,56.68 1 0 -github.com/ethereum/go-ethereum/les/api.go:53.48,55.3 1 0 -github.com/ethereum/go-ethereum/les/api.go:56.68,58.3 1 0 -github.com/ethereum/go-ethereum/les/api.go:58.8,60.3 1 0 -github.com/ethereum/go-ethereum/les/api.go:64.71,72.2 7 0 -github.com/ethereum/go-ethereum/les/api.go:75.98,77.29 2 0 -github.com/ethereum/go-ethereum/les/api.go:83.2,84.19 2 0 -github.com/ethereum/go-ethereum/les/api.go:87.2,87.25 1 0 -github.com/ethereum/go-ethereum/les/api.go:96.2,96.12 1 0 -github.com/ethereum/go-ethereum/les/api.go:77.29,78.45 1 0 -github.com/ethereum/go-ethereum/les/api.go:78.45,80.4 1 0 -github.com/ethereum/go-ethereum/les/api.go:84.19,86.3 1 0 -github.com/ethereum/go-ethereum/les/api.go:87.25,88.53 1 0 -github.com/ethereum/go-ethereum/les/api.go:88.53,90.4 1 0 -github.com/ethereum/go-ethereum/les/api.go:90.9,91.91 1 0 -github.com/ethereum/go-ethereum/les/api.go:91.91,93.5 1 0 -github.com/ethereum/go-ethereum/les/api.go:105.126,108.25 3 0 -github.com/ethereum/go-ethereum/les/api.go:112.2,112.25 1 0 -github.com/ethereum/go-ethereum/les/api.go:121.2,121.12 1 0 -github.com/ethereum/go-ethereum/les/api.go:108.25,111.3 2 0 -github.com/ethereum/go-ethereum/les/api.go:112.25,113.53 1 0 -github.com/ethereum/go-ethereum/les/api.go:113.53,115.4 1 0 -github.com/ethereum/go-ethereum/les/api.go:115.9,116.91 1 0 -github.com/ethereum/go-ethereum/les/api.go:116.91,118.5 1 0 -github.com/ethereum/go-ethereum/les/api.go:125.116,133.17 6 0 -github.com/ethereum/go-ethereum/les/api.go:138.2,138.13 1 0 -github.com/ethereum/go-ethereum/les/api.go:133.17,137.3 3 0 -github.com/ethereum/go-ethereum/les/api.go:143.170,145.34 2 0 -github.com/ethereum/go-ethereum/les/api.go:189.2,189.8 1 0 -github.com/ethereum/go-ethereum/les/api.go:145.34,146.28 1 0 -github.com/ethereum/go-ethereum/les/api.go:149.3,149.33 1 0 -github.com/ethereum/go-ethereum/les/api.go:158.3,158.10 1 0 -github.com/ethereum/go-ethereum/les/api.go:185.3,185.17 1 0 -github.com/ethereum/go-ethereum/les/api.go:146.28,148.4 1 0 -github.com/ethereum/go-ethereum/les/api.go:149.33,150.50 1 0 -github.com/ethereum/go-ethereum/les/api.go:150.50,153.5 2 0 -github.com/ethereum/go-ethereum/les/api.go:153.10,155.5 1 0 -github.com/ethereum/go-ethereum/les/api.go:159.37,160.37 1 0 -github.com/ethereum/go-ethereum/les/api.go:161.41,162.41 1 0 -github.com/ethereum/go-ethereum/les/api.go:163.44,164.40 1 0 -github.com/ethereum/go-ethereum/les/api.go:165.46,166.37 1 0 -github.com/ethereum/go-ethereum/les/api.go:167.50,168.41 1 0 -github.com/ethereum/go-ethereum/les/api.go:169.53,170.40 1 0 -github.com/ethereum/go-ethereum/les/api.go:171.41,172.89 1 0 -github.com/ethereum/go-ethereum/les/api.go:178.11,179.17 1 0 -github.com/ethereum/go-ethereum/les/api.go:172.89,175.5 1 0 -github.com/ethereum/go-ethereum/les/api.go:175.10,177.5 1 0 -github.com/ethereum/go-ethereum/les/api.go:179.17,181.5 1 0 -github.com/ethereum/go-ethereum/les/api.go:181.10,183.5 1 0 -github.com/ethereum/go-ethereum/les/api.go:185.17,187.4 1 0 -github.com/ethereum/go-ethereum/les/api.go:194.104,196.29 2 0 -github.com/ethereum/go-ethereum/les/api.go:214.2,214.12 1 0 -github.com/ethereum/go-ethereum/les/api.go:196.29,198.44 2 0 -github.com/ethereum/go-ethereum/les/api.go:201.3,201.53 1 0 -github.com/ethereum/go-ethereum/les/api.go:198.44,200.4 1 0 -github.com/ethereum/go-ethereum/les/api.go:201.53,204.14 3 0 -github.com/ethereum/go-ethereum/les/api.go:207.4,207.16 1 0 -github.com/ethereum/go-ethereum/les/api.go:204.14,206.5 1 0 -github.com/ethereum/go-ethereum/les/api.go:207.16,209.5 1 0 -github.com/ethereum/go-ethereum/les/api.go:210.9,212.4 1 0 -github.com/ethereum/go-ethereum/les/api.go:218.89,220.12 2 0 -github.com/ethereum/go-ethereum/les/api.go:223.2,223.12 1 0 -github.com/ethereum/go-ethereum/les/api.go:220.12,222.3 1 0 -github.com/ethereum/go-ethereum/les/api.go:230.78,231.29 1 0 -github.com/ethereum/go-ethereum/les/api.go:234.2,235.12 2 0 -github.com/ethereum/go-ethereum/les/api.go:231.29,233.3 1 0 -github.com/ethereum/go-ethereum/les/api.go:240.104,242.43 2 0 -github.com/ethereum/go-ethereum/les/api.go:245.2,245.84 1 0 -github.com/ethereum/go-ethereum/les/api.go:248.2,248.8 1 0 -github.com/ethereum/go-ethereum/les/api.go:242.43,244.3 1 0 -github.com/ethereum/go-ethereum/les/api.go:245.84,247.3 1 0 -github.com/ethereum/go-ethereum/les/api.go:257.135,259.31 2 0 -github.com/ethereum/go-ethereum/les/api.go:310.2,312.23 3 0 -github.com/ethereum/go-ethereum/les/api.go:324.2,324.20 1 0 -github.com/ethereum/go-ethereum/les/api.go:259.31,260.42 1 0 -github.com/ethereum/go-ethereum/les/api.go:260.42,261.46 1 0 -github.com/ethereum/go-ethereum/les/api.go:267.4,267.49 1 0 -github.com/ethereum/go-ethereum/les/api.go:273.4,273.13 1 0 -github.com/ethereum/go-ethereum/les/api.go:261.46,262.48 1 0 -github.com/ethereum/go-ethereum/les/api.go:265.5,265.15 1 0 -github.com/ethereum/go-ethereum/les/api.go:262.48,264.6 1 0 -github.com/ethereum/go-ethereum/les/api.go:267.49,268.45 1 0 -github.com/ethereum/go-ethereum/les/api.go:271.5,271.15 1 0 -github.com/ethereum/go-ethereum/les/api.go:268.45,270.6 1 0 -github.com/ethereum/go-ethereum/les/api.go:274.18,280.6 1 0 -github.com/ethereum/go-ethereum/les/api.go:281.16,282.64 1 0 -github.com/ethereum/go-ethereum/les/api.go:283.20,284.63 1 0 -github.com/ethereum/go-ethereum/les/api.go:285.17,286.56 1 0 -github.com/ethereum/go-ethereum/les/api.go:287.16,288.55 1 0 -github.com/ethereum/go-ethereum/les/api.go:289.15,293.6 1 0 -github.com/ethereum/go-ethereum/les/api.go:294.17,298.6 1 0 -github.com/ethereum/go-ethereum/les/api.go:299.18,300.39 1 0 -github.com/ethereum/go-ethereum/les/api.go:301.20,302.41 1 0 -github.com/ethereum/go-ethereum/les/api.go:303.12,304.40 1 0 -github.com/ethereum/go-ethereum/les/api.go:306.9,308.4 1 0 -github.com/ethereum/go-ethereum/les/api.go:312.23,314.19 2 0 -github.com/ethereum/go-ethereum/les/api.go:322.3,322.18 1 0 -github.com/ethereum/go-ethereum/les/api.go:314.19,319.4 4 0 -github.com/ethereum/go-ethereum/les/api.go:319.9,321.4 1 0 -github.com/ethereum/go-ethereum/les/api.go:333.61,337.2 1 0 -github.com/ethereum/go-ethereum/les/api.go:340.61,345.43 2 0 -github.com/ethereum/go-ethereum/les/api.go:348.2,348.52 1 0 -github.com/ethereum/go-ethereum/les/api.go:345.43,347.3 1 0 -github.com/ethereum/go-ethereum/les/api.go:348.52,351.3 2 0 -github.com/ethereum/go-ethereum/les/api.go:351.8,353.3 1 0 -github.com/ethereum/go-ethereum/les/api.go:362.63,364.2 1 0 -github.com/ethereum/go-ethereum/les/api.go:373.67,376.16 3 0 -github.com/ethereum/go-ethereum/les/api.go:379.2,381.17 3 0 -github.com/ethereum/go-ethereum/les/api.go:376.16,378.3 1 0 -github.com/ethereum/go-ethereum/les/api.go:390.76,393.16 3 0 -github.com/ethereum/go-ethereum/les/api.go:396.2,397.17 2 0 -github.com/ethereum/go-ethereum/les/api.go:393.16,395.3 1 0 -github.com/ethereum/go-ethereum/les/api.go:401.76,402.31 1 0 -github.com/ethereum/go-ethereum/les/api.go:405.2,405.64 1 0 -github.com/ethereum/go-ethereum/les/api.go:402.31,404.3 1 0 -github.com/ethereum/go-ethereum/les/client_handler.go:57.138,64.23 2 1 -github.com/ethereum/go-ethereum/les/client_handler.go:72.2,73.23 2 1 -github.com/ethereum/go-ethereum/les/client_handler.go:76.2,79.16 4 1 -github.com/ethereum/go-ethereum/les/client_handler.go:64.23,66.17 2 1 -github.com/ethereum/go-ethereum/les/client_handler.go:69.3,70.45 2 1 -github.com/ethereum/go-ethereum/les/client_handler.go:66.17,68.4 1 0 -github.com/ethereum/go-ethereum/les/client_handler.go:73.23,75.3 1 0 -github.com/ethereum/go-ethereum/les/client_handler.go:82.33,84.2 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:86.32,91.2 4 1 -github.com/ethereum/go-ethereum/les/client_handler.go:94.88,96.18 2 0 -github.com/ethereum/go-ethereum/les/client_handler.go:99.2,104.12 6 0 -github.com/ethereum/go-ethereum/les/client_handler.go:96.18,98.3 1 0 -github.com/ethereum/go-ethereum/les/client_handler.go:107.74,108.92 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:111.2,115.97 3 1 -github.com/ethereum/go-ethereum/les/client_handler.go:120.2,120.33 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:133.2,133.52 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:138.2,141.15 3 1 -github.com/ethereum/go-ethereum/les/client_handler.go:149.2,149.56 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:154.2,158.6 3 1 -github.com/ethereum/go-ethereum/les/client_handler.go:108.92,110.3 1 0 -github.com/ethereum/go-ethereum/les/client_handler.go:115.97,118.3 2 0 -github.com/ethereum/go-ethereum/les/client_handler.go:120.33,121.74 1 0 -github.com/ethereum/go-ethereum/les/client_handler.go:121.74,124.17 3 0 -github.com/ethereum/go-ethereum/les/client_handler.go:124.17,127.5 2 0 -github.com/ethereum/go-ethereum/les/client_handler.go:128.9,130.4 1 0 -github.com/ethereum/go-ethereum/les/client_handler.go:133.52,136.3 2 0 -github.com/ethereum/go-ethereum/les/client_handler.go:141.15,145.3 3 1 -github.com/ethereum/go-ethereum/les/client_handler.go:149.56,151.3 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:158.6,159.40 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:159.40,163.4 3 1 -github.com/ethereum/go-ethereum/les/client_handler.go:169.56,172.16 2 1 -github.com/ethereum/go-ethereum/les/client_handler.go:175.2,177.35 2 1 -github.com/ethereum/go-ethereum/les/client_handler.go:180.2,185.9 3 1 -github.com/ethereum/go-ethereum/les/client_handler.go:368.2,368.23 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:375.2,375.12 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:172.16,174.3 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:177.35,179.3 1 0 -github.com/ethereum/go-ethereum/les/client_handler.go:186.31,189.42 3 1 -github.com/ethereum/go-ethereum/les/client_handler.go:192.3,192.43 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:195.3,196.27 2 1 -github.com/ethereum/go-ethereum/les/client_handler.go:199.3,202.34 3 1 -github.com/ethereum/go-ethereum/les/client_handler.go:223.35,229.43 3 1 -github.com/ethereum/go-ethereum/les/client_handler.go:232.3,237.48 4 1 -github.com/ethereum/go-ethereum/les/client_handler.go:255.34,261.43 3 1 -github.com/ethereum/go-ethereum/les/client_handler.go:264.3,270.4 3 1 -github.com/ethereum/go-ethereum/les/client_handler.go:271.27,277.43 3 1 -github.com/ethereum/go-ethereum/les/client_handler.go:280.3,286.4 3 1 -github.com/ethereum/go-ethereum/les/client_handler.go:287.31,293.43 3 1 -github.com/ethereum/go-ethereum/les/client_handler.go:296.3,302.4 3 1 -github.com/ethereum/go-ethereum/les/client_handler.go:303.31,309.43 3 1 -github.com/ethereum/go-ethereum/les/client_handler.go:312.3,318.4 3 1 -github.com/ethereum/go-ethereum/les/client_handler.go:319.39,325.43 3 1 -github.com/ethereum/go-ethereum/les/client_handler.go:328.3,334.4 3 1 -github.com/ethereum/go-ethereum/les/client_handler.go:335.31,341.43 3 1 -github.com/ethereum/go-ethereum/les/client_handler.go:344.3,350.4 3 1 -github.com/ethereum/go-ethereum/les/client_handler.go:351.48,354.35 3 0 -github.com/ethereum/go-ethereum/les/client_handler.go:355.50,357.41 2 0 -github.com/ethereum/go-ethereum/les/client_handler.go:360.3,362.35 3 0 -github.com/ethereum/go-ethereum/les/client_handler.go:363.10,365.52 2 0 -github.com/ethereum/go-ethereum/les/client_handler.go:189.42,191.4 1 0 -github.com/ethereum/go-ethereum/les/client_handler.go:192.43,194.4 1 0 -github.com/ethereum/go-ethereum/les/client_handler.go:196.27,198.4 1 0 -github.com/ethereum/go-ethereum/les/client_handler.go:202.34,203.42 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:206.4,206.44 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:213.4,219.38 3 1 -github.com/ethereum/go-ethereum/les/client_handler.go:203.42,205.5 1 0 -github.com/ethereum/go-ethereum/les/client_handler.go:206.44,207.62 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:211.5,211.50 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:207.62,210.6 2 0 -github.com/ethereum/go-ethereum/les/client_handler.go:219.38,221.5 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:229.43,231.4 1 0 -github.com/ethereum/go-ethereum/les/client_handler.go:237.48,243.4 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:243.9,246.14 2 1 -github.com/ethereum/go-ethereum/les/client_handler.go:249.4,249.36 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:246.14,248.5 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:249.36,250.70 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:250.70,252.6 1 0 -github.com/ethereum/go-ethereum/les/client_handler.go:261.43,263.4 1 0 -github.com/ethereum/go-ethereum/les/client_handler.go:277.43,279.4 1 0 -github.com/ethereum/go-ethereum/les/client_handler.go:293.43,295.4 1 0 -github.com/ethereum/go-ethereum/les/client_handler.go:309.43,311.4 1 0 -github.com/ethereum/go-ethereum/les/client_handler.go:325.43,327.4 1 0 -github.com/ethereum/go-ethereum/les/client_handler.go:341.43,343.4 1 0 -github.com/ethereum/go-ethereum/les/client_handler.go:357.41,359.4 1 0 -github.com/ethereum/go-ethereum/les/client_handler.go:368.23,369.68 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:369.68,370.71 1 0 -github.com/ethereum/go-ethereum/les/client_handler.go:370.71,372.5 1 0 -github.com/ethereum/go-ethereum/les/client_handler.go:378.47,380.2 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:387.58,389.2 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:391.110,393.37 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:408.2,409.9 2 1 -github.com/ethereum/go-ethereum/les/client_handler.go:412.2,412.12 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:393.37,396.4 2 1 -github.com/ethereum/go-ethereum/les/client_handler.go:397.35,399.4 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:400.37,405.18 5 1 -github.com/ethereum/go-ethereum/les/client_handler.go:405.18,405.85 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:409.9,411.3 1 0 -github.com/ethereum/go-ethereum/les/client_handler.go:415.107,417.37 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:432.2,433.9 2 1 -github.com/ethereum/go-ethereum/les/client_handler.go:436.2,436.12 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:417.37,420.4 2 1 -github.com/ethereum/go-ethereum/les/client_handler.go:421.35,423.4 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:424.37,429.18 5 1 -github.com/ethereum/go-ethereum/les/client_handler.go:429.18,429.87 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:433.9,435.3 1 0 -github.com/ethereum/go-ethereum/les/client_handler.go:441.119,444.37 2 1 -github.com/ethereum/go-ethereum/les/client_handler.go:458.2,459.106 2 1 -github.com/ethereum/go-ethereum/les/client_handler.go:472.2,472.20 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:444.37,447.4 2 1 -github.com/ethereum/go-ethereum/les/client_handler.go:448.35,450.4 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:451.37,455.18 4 1 -github.com/ethereum/go-ethereum/les/client_handler.go:455.18,455.77 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:459.106,460.37 1 1 -github.com/ethereum/go-ethereum/les/client_handler.go:463.3,464.24 2 1 -github.com/ethereum/go-ethereum/les/client_handler.go:467.3,468.13 2 1 -github.com/ethereum/go-ethereum/les/client_handler.go:460.37,462.4 1 0 -github.com/ethereum/go-ethereum/les/client_handler.go:464.24,466.4 1 0 -github.com/ethereum/go-ethereum/les/client_handler.go:469.22,471.3 1 0 -github.com/ethereum/go-ethereum/les/client_handler.go:478.60,485.2 3 1 -github.com/ethereum/go-ethereum/les/client_handler.go:487.62,490.2 2 1 -github.com/ethereum/go-ethereum/les/distributor.go:77.90,85.18 2 1 -github.com/ethereum/go-ethereum/les/distributor.go:88.2,90.10 3 1 -github.com/ethereum/go-ethereum/les/distributor.go:85.18,87.3 1 1 -github.com/ethereum/go-ethereum/les/distributor.go:94.58,98.2 3 1 -github.com/ethereum/go-ethereum/les/distributor.go:101.60,105.2 3 1 -github.com/ethereum/go-ethereum/les/distributor.go:108.59,112.2 3 1 -github.com/ethereum/go-ethereum/les/distributor.go:125.37,127.6 2 1 -github.com/ethereum/go-ethereum/les/distributor.go:127.6,128.10 1 1 -github.com/ethereum/go-ethereum/les/distributor.go:129.20,132.20 3 1 -github.com/ethereum/go-ethereum/les/distributor.go:138.4,139.10 2 1 -github.com/ethereum/go-ethereum/les/distributor.go:140.20,144.8 3 1 -github.com/ethereum/go-ethereum/les/distributor.go:174.4,174.19 1 1 -github.com/ethereum/go-ethereum/les/distributor.go:132.20,137.5 4 0 -github.com/ethereum/go-ethereum/les/distributor.go:144.8,146.32 2 1 -github.com/ethereum/go-ethereum/les/distributor.go:146.32,150.21 4 1 -github.com/ethereum/go-ethereum/les/distributor.go:154.6,155.16 2 1 -github.com/ethereum/go-ethereum/les/distributor.go:150.21,153.7 2 1 -github.com/ethereum/go-ethereum/les/distributor.go:156.11,157.19 1 1 -github.com/ethereum/go-ethereum/les/distributor.go:162.6,163.28 2 0 -github.com/ethereum/go-ethereum/les/distributor.go:167.6,167.16 1 0 -github.com/ethereum/go-ethereum/les/distributor.go:171.6,171.16 1 0 -github.com/ethereum/go-ethereum/les/distributor.go:157.19,160.17 1 1 -github.com/ethereum/go-ethereum/les/distributor.go:163.28,166.7 1 0 -github.com/ethereum/go-ethereum/les/distributor.go:167.16,170.7 2 0 -github.com/ethereum/go-ethereum/les/distributor.go:186.45,188.2 1 1 -github.com/ethereum/go-ethereum/les/distributor.go:192.80,204.83 7 1 -github.com/ethereum/go-ethereum/les/distributor.go:241.2,241.16 1 1 -github.com/ethereum/go-ethereum/les/distributor.go:245.2,245.27 1 1 -github.com/ethereum/go-ethereum/les/distributor.go:204.83,208.29 4 1 -github.com/ethereum/go-ethereum/les/distributor.go:215.3,215.29 1 1 -github.com/ethereum/go-ethereum/les/distributor.go:233.3,234.45 2 1 -github.com/ethereum/go-ethereum/les/distributor.go:238.3,238.14 1 1 -github.com/ethereum/go-ethereum/les/distributor.go:208.29,211.40 3 0 -github.com/ethereum/go-ethereum/les/distributor.go:211.40,213.5 1 0 -github.com/ethereum/go-ethereum/les/distributor.go:215.29,216.80 1 1 -github.com/ethereum/go-ethereum/les/distributor.go:216.80,220.18 4 1 -github.com/ethereum/go-ethereum/les/distributor.go:230.5,230.36 1 1 -github.com/ethereum/go-ethereum/les/distributor.go:220.18,221.20 1 1 -github.com/ethereum/go-ethereum/les/distributor.go:224.6,224.93 1 1 -github.com/ethereum/go-ethereum/les/distributor.go:221.20,223.7 1 1 -github.com/ethereum/go-ethereum/les/distributor.go:225.11,226.42 1 0 -github.com/ethereum/go-ethereum/les/distributor.go:226.42,228.7 1 0 -github.com/ethereum/go-ethereum/les/distributor.go:234.45,237.4 2 1 -github.com/ethereum/go-ethereum/les/distributor.go:241.16,244.3 2 1 -github.com/ethereum/go-ethereum/les/distributor.go:252.62,256.21 3 1 -github.com/ethereum/go-ethereum/les/distributor.go:263.2,266.64 3 1 -github.com/ethereum/go-ethereum/les/distributor.go:276.2,276.21 1 1 -github.com/ethereum/go-ethereum/les/distributor.go:281.2,282.18 2 1 -github.com/ethereum/go-ethereum/les/distributor.go:256.21,260.3 3 1 -github.com/ethereum/go-ethereum/les/distributor.go:266.64,268.3 1 1 -github.com/ethereum/go-ethereum/les/distributor.go:268.8,270.53 2 1 -github.com/ethereum/go-ethereum/les/distributor.go:273.3,273.49 1 1 -github.com/ethereum/go-ethereum/les/distributor.go:270.53,272.4 1 1 -github.com/ethereum/go-ethereum/les/distributor.go:276.21,279.3 2 1 -github.com/ethereum/go-ethereum/les/distributor.go:288.54,292.22 3 0 -github.com/ethereum/go-ethereum/les/distributor.go:296.2,298.13 3 0 -github.com/ethereum/go-ethereum/les/distributor.go:292.22,294.3 1 0 -github.com/ethereum/go-ethereum/les/distributor.go:302.49,304.22 2 1 -github.com/ethereum/go-ethereum/les/distributor.go:304.22,307.3 2 1 -github.com/ethereum/go-ethereum/les/distributor.go:310.38,313.2 2 1 -github.com/ethereum/go-ethereum/les/pruner.go:38.75,47.2 4 1 -github.com/ethereum/go-ethereum/les/pruner.go:50.26,53.2 2 0 -github.com/ethereum/go-ethereum/les/pruner.go:60.25,71.20 4 1 -github.com/ethereum/go-ethereum/les/pruner.go:91.2,91.6 1 1 -github.com/ethereum/go-ethereum/les/pruner.go:71.20,73.38 2 1 -github.com/ethereum/go-ethereum/les/pruner.go:80.3,80.38 1 1 -github.com/ethereum/go-ethereum/les/pruner.go:83.3,83.38 1 1 -github.com/ethereum/go-ethereum/les/pruner.go:89.3,89.25 1 1 -github.com/ethereum/go-ethereum/les/pruner.go:73.38,75.22 2 1 -github.com/ethereum/go-ethereum/les/pruner.go:75.22,77.5 1 1 -github.com/ethereum/go-ethereum/les/pruner.go:80.38,82.4 1 0 -github.com/ethereum/go-ethereum/les/pruner.go:83.38,84.49 1 1 -github.com/ethereum/go-ethereum/les/pruner.go:84.49,87.5 2 0 -github.com/ethereum/go-ethereum/les/pruner.go:91.6,93.10 2 1 -github.com/ethereum/go-ethereum/les/pruner.go:94.24,94.24 0 0 -github.com/ethereum/go-ethereum/les/pruner.go:95.20,96.10 1 0 -github.com/ethereum/go-ethereum/les/ulc.go:32.59,34.29 2 1 -github.com/ethereum/go-ethereum/les/ulc.go:42.2,42.20 1 1 -github.com/ethereum/go-ethereum/les/ulc.go:45.2,48.8 1 1 -github.com/ethereum/go-ethereum/les/ulc.go:34.29,36.17 2 1 -github.com/ethereum/go-ethereum/les/ulc.go:40.3,40.34 1 1 -github.com/ethereum/go-ethereum/les/ulc.go:36.17,38.12 2 0 -github.com/ethereum/go-ethereum/les/ulc.go:42.20,44.3 1 0 -github.com/ethereum/go-ethereum/les/ulc.go:52.40,54.2 1 0 -github.com/ethereum/go-ethereum/les/server_handler.go:76.151,87.2 2 1 -github.com/ethereum/go-ethereum/les/server_handler.go:90.33,93.2 2 1 -github.com/ethereum/go-ethereum/les/server_handler.go:96.32,99.2 2 1 -github.com/ethereum/go-ethereum/les/server_handler.go:102.88,108.2 5 0 -github.com/ethereum/go-ethereum/les/server_handler.go:110.53,121.117 3 1 -github.com/ethereum/go-ethereum/les/server_handler.go:126.2,126.14 1 1 -github.com/ethereum/go-ethereum/les/server_handler.go:135.2,140.17 3 1 -github.com/ethereum/go-ethereum/les/server_handler.go:146.2,146.51 1 1 -github.com/ethereum/go-ethereum/les/server_handler.go:149.2,149.67 1 1 -github.com/ethereum/go-ethereum/les/server_handler.go:154.2,157.15 3 1 -github.com/ethereum/go-ethereum/les/server_handler.go:166.2,170.6 3 1 -github.com/ethereum/go-ethereum/les/server_handler.go:121.117,124.3 2 0 -github.com/ethereum/go-ethereum/les/server_handler.go:126.14,127.56 1 0 -github.com/ethereum/go-ethereum/les/server_handler.go:130.3,132.13 3 0 -github.com/ethereum/go-ethereum/les/server_handler.go:127.56,129.4 1 0 -github.com/ethereum/go-ethereum/les/server_handler.go:140.17,143.3 2 0 -github.com/ethereum/go-ethereum/les/server_handler.go:146.51,148.3 1 0 -github.com/ethereum/go-ethereum/les/server_handler.go:149.67,153.3 3 0 -github.com/ethereum/go-ethereum/les/server_handler.go:157.15,163.3 5 1 -github.com/ethereum/go-ethereum/les/server_handler.go:170.6,171.10 1 1 -github.com/ethereum/go-ethereum/les/server_handler.go:177.3,177.45 1 1 -github.com/ethereum/go-ethereum/les/server_handler.go:172.25,174.14 2 0 -github.com/ethereum/go-ethereum/les/server_handler.go:175.11,175.11 0 1 -github.com/ethereum/go-ethereum/les/server_handler.go:177.45,180.4 2 1 -github.com/ethereum/go-ethereum/les/server_handler.go:185.150,188.38 2 1 -github.com/ethereum/go-ethereum/les/server_handler.go:194.2,194.18 1 1 -github.com/ethereum/go-ethereum/les/server_handler.go:198.2,200.15 3 1 -github.com/ethereum/go-ethereum/les/server_handler.go:208.2,209.20 2 1 -github.com/ethereum/go-ethereum/les/server_handler.go:213.2,215.19 3 1 -github.com/ethereum/go-ethereum/les/server_handler.go:219.2,219.22 1 1 -github.com/ethereum/go-ethereum/les/server_handler.go:188.38,191.3 2 0 -github.com/ethereum/go-ethereum/les/server_handler.go:194.18,197.3 2 1 -github.com/ethereum/go-ethereum/les/server_handler.go:200.15,205.3 4 1 -github.com/ethereum/go-ethereum/les/server_handler.go:209.20,212.3 2 0 -github.com/ethereum/go-ethereum/les/server_handler.go:215.19,218.3 2 0 -github.com/ethereum/go-ethereum/les/server_handler.go:224.158,225.18 1 1 -github.com/ethereum/go-ethereum/les/server_handler.go:228.2,232.18 3 1 -github.com/ethereum/go-ethereum/les/server_handler.go:238.2,239.18 2 1 -github.com/ethereum/go-ethereum/les/server_handler.go:242.2,243.34 2 1 -github.com/ethereum/go-ethereum/les/server_handler.go:251.2,252.18 2 1 -github.com/ethereum/go-ethereum/les/server_handler.go:225.18,227.3 1 1 -github.com/ethereum/go-ethereum/les/server_handler.go:232.18,236.3 3 0 -github.com/ethereum/go-ethereum/les/server_handler.go:239.18,241.3 1 1 -github.com/ethereum/go-ethereum/les/server_handler.go:243.34,245.3 1 1 -github.com/ethereum/go-ethereum/les/server_handler.go:245.8,247.25 2 1 -github.com/ethereum/go-ethereum/les/server_handler.go:247.25,249.4 1 1 -github.com/ethereum/go-ethereum/les/server_handler.go:252.18,257.22 3 1 -github.com/ethereum/go-ethereum/les/server_handler.go:257.22,258.41 1 1 -github.com/ethereum/go-ethereum/les/server_handler.go:258.41,259.12 1 0 -github.com/ethereum/go-ethereum/les/server_handler.go:260.25,260.25 0 0 -github.com/ethereum/go-ethereum/les/server_handler.go:261.13,261.13 0 0 -github.com/ethereum/go-ethereum/les/server_handler.go:270.76,273.16 2 1 -github.com/ethereum/go-ethereum/les/server_handler.go:276.2,279.35 2 1 -github.com/ethereum/go-ethereum/les/server_handler.go:283.2,288.9 3 1 -github.com/ethereum/go-ethereum/les/server_handler.go:293.2,297.16 3 1 -github.com/ethereum/go-ethereum/les/server_handler.go:301.2,301.30 1 1 -github.com/ethereum/go-ethereum/les/server_handler.go:305.2,311.17 4 1 -github.com/ethereum/go-ethereum/les/server_handler.go:314.2,315.12 2 1 -github.com/ethereum/go-ethereum/les/server_handler.go:333.2,333.39 1 1 -github.com/ethereum/go-ethereum/les/server_handler.go:337.2,337.12 1 1 -github.com/ethereum/go-ethereum/les/server_handler.go:273.16,275.3 1 1 -github.com/ethereum/go-ethereum/les/server_handler.go:279.35,282.3 2 0 -github.com/ethereum/go-ethereum/les/server_handler.go:288.9,292.3 3 0 -github.com/ethereum/go-ethereum/les/server_handler.go:297.16,300.3 2 0 -github.com/ethereum/go-ethereum/les/server_handler.go:301.30,304.3 2 0 -github.com/ethereum/go-ethereum/les/server_handler.go:311.17,313.3 1 1 -github.com/ethereum/go-ethereum/les/server_handler.go:315.12,321.31 4 1 -github.com/ethereum/go-ethereum/les/server_handler.go:321.31,323.20 2 0 -github.com/ethereum/go-ethereum/les/server_handler.go:326.4,328.64 3 0 -github.com/ethereum/go-ethereum/les/server_handler.go:323.20,325.5 1 0 -github.com/ethereum/go-ethereum/les/server_handler.go:333.39,336.3 2 0 -github.com/ethereum/go-ethereum/les/server_handler.go:341.55,343.2 1 1 -github.com/ethereum/go-ethereum/les/server_handler.go:346.47,348.2 1 1 -github.com/ethereum/go-ethereum/les/server_handler.go:351.44,353.2 1 1 -github.com/ethereum/go-ethereum/les/server_handler.go:356.43,358.2 1 1 -github.com/ethereum/go-ethereum/les/server_handler.go:361.92,363.16 2 1 -github.com/ethereum/go-ethereum/les/server_handler.go:366.2,367.16 2 1 -github.com/ethereum/go-ethereum/les/server_handler.go:370.2,371.51 2 1 -github.com/ethereum/go-ethereum/les/server_handler.go:374.2,374.17 1 1 -github.com/ethereum/go-ethereum/les/server_handler.go:363.16,365.3 1 0 -github.com/ethereum/go-ethereum/les/server_handler.go:367.16,369.3 1 0 -github.com/ethereum/go-ethereum/les/server_handler.go:371.51,373.3 1 1 -github.com/ethereum/go-ethereum/les/server_handler.go:378.74,383.13 2 1 -github.com/ethereum/go-ethereum/les/server_handler.go:391.2,391.29 1 1 -github.com/ethereum/go-ethereum/les/server_handler.go:394.2,395.13 2 1 -github.com/ethereum/go-ethereum/les/server_handler.go:384.19,386.87 2 1 -github.com/ethereum/go-ethereum/les/server_handler.go:387.19,389.99 2 1 -github.com/ethereum/go-ethereum/les/server_handler.go:391.29,393.3 1 0 -github.com/ethereum/go-ethereum/les/server_handler.go:402.41,413.6 6 1 -github.com/ethereum/go-ethereum/les/server_handler.go:413.6,414.10 1 1 -github.com/ethereum/go-ethereum/les/server_handler.go:415.23,419.40 4 1 -github.com/ethereum/go-ethereum/les/server_handler.go:422.4,423.23 2 1 -github.com/ethereum/go-ethereum/les/server_handler.go:429.4,431.97 3 1 -github.com/ethereum/go-ethereum/les/server_handler.go:432.20,433.10 1 1 -github.com/ethereum/go-ethereum/les/server_handler.go:419.40,420.13 1 0 -github.com/ethereum/go-ethereum/les/server_handler.go:423.23,425.91 1 1 -github.com/ethereum/go-ethereum/les/server_handler.go:425.91,427.6 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:151.81,153.39 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:156.2,156.83 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:153.39,155.3 1 0 -github.com/ethereum/go-ethereum/les/server_requests.go:156.83,167.83 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:239.3,239.47 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:167.83,168.31 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:172.4,173.16 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:185.4,185.21 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:188.4,192.11 3 1 -github.com/ethereum/go-ethereum/les/server_requests.go:237.4,237.17 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:168.31,170.5 1 0 -github.com/ethereum/go-ethereum/les/server_requests.go:173.16,174.14 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:174.14,176.23 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:176.23,178.7 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:179.11,181.6 1 0 -github.com/ethereum/go-ethereum/les/server_requests.go:182.10,184.5 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:185.21,186.10 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:193.37,196.22 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:202.38,208.24 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:225.25,227.48 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:233.26,235.46 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:196.22,198.6 1 0 -github.com/ethereum/go-ethereum/les/server_requests.go:198.11,201.6 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:208.24,212.6 3 0 -github.com/ethereum/go-ethereum/les/server_requests.go:212.11,213.61 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:213.61,216.44 3 1 -github.com/ethereum/go-ethereum/les/server_requests.go:216.44,218.8 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:218.13,220.8 1 0 -github.com/ethereum/go-ethereum/les/server_requests.go:221.12,223.7 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:227.48,229.6 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:229.11,231.6 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:244.80,246.39 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:249.2,249.83 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:246.39,248.3 1 0 -github.com/ethereum/go-ethereum/les/server_requests.go:249.83,255.33 3 1 -github.com/ethereum/go-ethereum/les/server_requests.go:270.3,270.48 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:255.33,256.31 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:259.4,259.34 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:262.4,263.19 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:267.4,268.22 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:256.31,258.5 1 0 -github.com/ethereum/go-ethereum/les/server_requests.go:259.34,260.10 1 0 -github.com/ethereum/go-ethereum/les/server_requests.go:263.19,265.13 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:275.73,277.39 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:280.2,280.83 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:277.39,279.3 1 0 -github.com/ethereum/go-ethereum/les/server_requests.go:280.83,286.34 3 1 -github.com/ethereum/go-ethereum/les/server_requests.go:324.3,324.36 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:286.34,287.31 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:291.4,292.21 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:299.4,300.84 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:305.4,308.18 3 1 -github.com/ethereum/go-ethereum/les/server_requests.go:313.4,314.18 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:319.4,320.54 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:287.31,289.5 1 0 -github.com/ethereum/go-ethereum/les/server_requests.go:292.21,295.13 3 0 -github.com/ethereum/go-ethereum/les/server_requests.go:300.84,303.13 3 1 -github.com/ethereum/go-ethereum/les/server_requests.go:308.18,311.13 3 1 -github.com/ethereum/go-ethereum/les/server_requests.go:314.18,316.13 2 0 -github.com/ethereum/go-ethereum/les/server_requests.go:320.54,321.10 1 0 -github.com/ethereum/go-ethereum/les/server_requests.go:329.77,331.39 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:334.2,334.83 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:331.39,333.3 1 0 -github.com/ethereum/go-ethereum/les/server_requests.go:334.83,340.33 3 1 -github.com/ethereum/go-ethereum/les/server_requests.go:363.3,363.47 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:340.33,341.31 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:344.4,344.34 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:348.4,349.22 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:356.4,356.62 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:341.31,343.5 1 0 -github.com/ethereum/go-ethereum/les/server_requests.go:344.34,345.10 1 0 -github.com/ethereum/go-ethereum/les/server_requests.go:349.22,350.103 1 0 -github.com/ethereum/go-ethereum/les/server_requests.go:350.103,352.14 2 0 -github.com/ethereum/go-ethereum/les/server_requests.go:356.62,358.5 1 0 -github.com/ethereum/go-ethereum/les/server_requests.go:358.10,361.5 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:368.75,370.39 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:373.2,373.83 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:370.39,372.3 1 0 -github.com/ethereum/go-ethereum/les/server_requests.go:373.83,383.34 4 1 -github.com/ethereum/go-ethereum/les/server_requests.go:446.3,446.52 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:383.34,384.31 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:388.4,388.34 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:407.4,407.31 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:412.4,415.31 3 1 -github.com/ethereum/go-ethereum/les/server_requests.go:438.4,438.76 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:442.4,442.45 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:384.31,386.5 1 0 -github.com/ethereum/go-ethereum/les/server_requests.go:388.34,391.66 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:398.5,399.85 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:404.5,404.23 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:391.66,394.14 3 0 -github.com/ethereum/go-ethereum/les/server_requests.go:399.85,402.14 3 1 -github.com/ethereum/go-ethereum/les/server_requests.go:407.31,409.13 2 0 -github.com/ethereum/go-ethereum/les/server_requests.go:416.11,419.34 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:423.12,426.19 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:431.5,432.34 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:419.34,421.14 2 0 -github.com/ethereum/go-ethereum/les/server_requests.go:426.19,429.14 3 0 -github.com/ethereum/go-ethereum/les/server_requests.go:432.34,434.14 2 0 -github.com/ethereum/go-ethereum/les/server_requests.go:438.76,440.13 2 0 -github.com/ethereum/go-ethereum/les/server_requests.go:442.45,443.10 1 0 -github.com/ethereum/go-ethereum/les/server_requests.go:451.85,453.39 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:456.2,456.83 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:453.39,455.3 1 0 -github.com/ethereum/go-ethereum/les/server_requests.go:456.83,466.34 4 1 -github.com/ethereum/go-ethereum/les/server_requests.go:500.3,500.103 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:466.34,467.31 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:470.4,470.80 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:474.4,474.22 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:482.4,483.39 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:486.4,486.93 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:496.4,496.54 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:467.31,469.5 1 0 -github.com/ethereum/go-ethereum/les/server_requests.go:470.80,473.5 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:474.22,476.5 1 0 -github.com/ethereum/go-ethereum/les/server_requests.go:483.39,485.5 1 0 -github.com/ethereum/go-ethereum/les/server_requests.go:486.93,489.19 3 1 -github.com/ethereum/go-ethereum/les/server_requests.go:493.5,494.26 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:489.19,492.6 2 0 -github.com/ethereum/go-ethereum/les/server_requests.go:496.54,497.10 1 0 -github.com/ethereum/go-ethereum/les/server_requests.go:505.72,507.39 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:510.2,511.83 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:507.39,509.3 1 0 -github.com/ethereum/go-ethereum/les/server_requests.go:511.83,513.28 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:532.3,532.41 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:513.28,514.31 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:517.4,519.47 3 1 -github.com/ethereum/go-ethereum/les/server_requests.go:514.31,516.5 1 0 -github.com/ethereum/go-ethereum/les/server_requests.go:519.47,522.29 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:525.5,525.64 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:529.5,529.39 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:522.29,524.6 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:525.64,527.14 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:537.77,539.39 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:542.2,542.83 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:539.39,541.3 1 0 -github.com/ethereum/go-ethereum/les/server_requests.go:542.83,544.33 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:550.3,550.41 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:544.33,545.31 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:548.4,548.38 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:545.31,547.5 1 0 -github.com/ethereum/go-ethereum/les/server_requests.go:555.65,561.41 3 1 -github.com/ethereum/go-ethereum/les/server_requests.go:568.2,568.13 1 1 -github.com/ethereum/go-ethereum/les/server_requests.go:561.41,563.20 2 1 -github.com/ethereum/go-ethereum/les/server_requests.go:563.20,566.4 2 1 -github.com/ethereum/go-ethereum/les/bloombits.go:46.66,47.43 1 0 -github.com/ethereum/go-ethereum/les/bloombits.go:47.43,48.13 1 0 -github.com/ethereum/go-ethereum/les/bloombits.go:48.13,50.8 2 0 -github.com/ethereum/go-ethereum/les/bloombits.go:50.8,51.12 1 0 -github.com/ethereum/go-ethereum/les/bloombits.go:52.24,53.12 1 0 -github.com/ethereum/go-ethereum/les/bloombits.go:55.41,59.20 4 0 -github.com/ethereum/go-ethereum/les/bloombits.go:70.6,70.21 1 0 -github.com/ethereum/go-ethereum/les/bloombits.go:59.20,60.36 1 0 -github.com/ethereum/go-ethereum/les/bloombits.go:60.36,61.96 1 0 -github.com/ethereum/go-ethereum/les/bloombits.go:61.96,63.9 1 0 -github.com/ethereum/go-ethereum/les/bloombits.go:63.14,65.9 1 0 -github.com/ethereum/go-ethereum/les/bloombits.go:67.12,69.7 1 0 -github.com/ethereum/go-ethereum/les/commons.go:40.67,42.2 1 1 -github.com/ethereum/go-ethereum/les/commons.go:75.208,77.35 2 0 -github.com/ethereum/go-ethereum/les/commons.go:91.2,91.15 1 0 -github.com/ethereum/go-ethereum/les/commons.go:77.35,84.58 2 0 -github.com/ethereum/go-ethereum/les/commons.go:84.58,86.5 1 0 -github.com/ethereum/go-ethereum/les/commons.go:95.45,106.2 3 0 -github.com/ethereum/go-ethereum/les/commons.go:111.71,115.26 3 0 -github.com/ethereum/go-ethereum/les/commons.go:118.2,118.19 1 0 -github.com/ethereum/go-ethereum/les/commons.go:122.2,122.40 1 0 -github.com/ethereum/go-ethereum/les/commons.go:115.26,117.3 1 0 -github.com/ethereum/go-ethereum/les/commons.go:118.19,121.3 1 0 -github.com/ethereum/go-ethereum/les/commons.go:130.77,138.2 2 0 -github.com/ethereum/go-ethereum/les/commons.go:141.136,143.19 2 0 -github.com/ethereum/go-ethereum/les/commons.go:147.2,147.19 1 0 -github.com/ethereum/go-ethereum/les/commons.go:151.2,151.92 1 0 -github.com/ethereum/go-ethereum/les/commons.go:155.2,160.15 6 0 -github.com/ethereum/go-ethereum/les/commons.go:143.19,146.3 1 0 -github.com/ethereum/go-ethereum/les/commons.go:147.19,150.3 2 0 -github.com/ethereum/go-ethereum/les/commons.go:151.92,154.3 2 0 -github.com/ethereum/go-ethereum/les/fetcher.go:80.48,86.43 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:89.2,93.43 3 1 -github.com/ethereum/go-ethereum/les/fetcher.go:86.43,88.3 1 0 -github.com/ethereum/go-ethereum/les/fetcher.go:93.43,94.58 1 0 -github.com/ethereum/go-ethereum/les/fetcher.go:97.3,98.43 2 0 -github.com/ethereum/go-ethereum/les/fetcher.go:94.58,96.4 1 0 -github.com/ethereum/go-ethereum/les/fetcher.go:104.61,109.40 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:120.2,120.16 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:124.2,124.16 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:109.40,111.18 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:114.3,114.31 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:117.3,118.39 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:111.18,112.12 1 0 -github.com/ethereum/go-ethereum/les/fetcher.go:114.31,115.9 1 0 -github.com/ethereum/go-ethereum/les/fetcher.go:120.16,123.3 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:160.199,162.48 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:166.2,166.28 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:167.2,167.29 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:168.2,168.57 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:176.2,192.10 3 1 -github.com/ethereum/go-ethereum/les/fetcher.go:162.48,165.3 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:166.28,166.76 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:167.29,167.53 1 0 -github.com/ethereum/go-ethereum/les/fetcher.go:168.57,171.17 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:174.3,174.53 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:171.17,173.4 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:195.32,199.2 3 1 -github.com/ethereum/go-ethereum/les/fetcher.go:201.31,205.2 3 1 -github.com/ethereum/go-ethereum/les/fetcher.go:208.52,213.2 3 1 -github.com/ethereum/go-ethereum/les/fetcher.go:216.54,221.2 3 1 -github.com/ethereum/go-ethereum/les/fetcher.go:224.55,229.2 3 1 -github.com/ethereum/go-ethereum/les/fetcher.go:233.82,237.32 3 1 -github.com/ethereum/go-ethereum/les/fetcher.go:237.32,238.23 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:238.23,240.4 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:257.35,277.38 5 1 -github.com/ethereum/go-ethereum/les/fetcher.go:284.2,284.76 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:301.2,301.6 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:277.38,280.3 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:284.76,289.56 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:299.3,299.25 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:289.56,290.90 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:297.4,297.15 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:290.90,292.58 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:292.58,295.6 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:301.6,302.10 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:303.31,308.19 4 1 -github.com/ethereum/go-ethereum/les/fetcher.go:314.4,314.62 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:319.4,322.51 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:325.4,328.24 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:344.4,344.25 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:361.29,363.26 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:367.25,368.41 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:375.4,375.45 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:377.30,378.47 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:402.23,404.15 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:407.4,411.57 3 1 -github.com/ethereum/go-ethereum/les/fetcher.go:429.4,429.32 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:433.4,433.28 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:437.31,441.11 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:461.4,462.28 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:465.4,465.90 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:467.20,468.10 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:308.19,310.13 2 0 -github.com/ethereum/go-ethereum/les/fetcher.go:314.62,317.13 3 0 -github.com/ethereum/go-ethereum/les/fetcher.go:322.51,323.13 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:328.24,334.84 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:340.5,341.100 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:334.84,338.14 4 1 -github.com/ethereum/go-ethereum/les/fetcher.go:344.25,348.28 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:348.28,349.85 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:355.6,357.93 3 1 -github.com/ethereum/go-ethereum/les/fetcher.go:349.85,353.15 4 1 -github.com/ethereum/go-ethereum/les/fetcher.go:363.26,365.5 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:368.41,369.67 1 0 -github.com/ethereum/go-ethereum/les/fetcher.go:369.67,373.6 3 0 -github.com/ethereum/go-ethereum/les/fetcher.go:378.47,386.31 3 1 -github.com/ethereum/go-ethereum/les/fetcher.go:391.5,391.43 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:396.5,396.91 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:386.31,389.14 3 0 -github.com/ethereum/go-ethereum/les/fetcher.go:391.43,394.14 3 0 -github.com/ethereum/go-ethereum/les/fetcher.go:397.10,400.5 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:404.15,405.13 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:411.57,413.34 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:427.5,427.16 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:413.34,414.74 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:414.74,415.53 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:420.7,421.49 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:415.53,417.13 2 0 -github.com/ethereum/go-ethereum/les/fetcher.go:421.49,423.13 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:429.32,432.5 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:433.28,435.5 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:441.11,445.46 4 1 -github.com/ethereum/go-ethereum/les/fetcher.go:453.5,453.27 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:445.46,447.60 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:450.6,451.57 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:447.60,448.12 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:453.27,454.62 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:457.6,457.33 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:454.62,456.7 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:462.28,464.5 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:474.68,475.9 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:476.79,476.79 0 1 -github.com/ethereum/go-ethereum/les/fetcher.go:477.19,478.9 1 0 -github.com/ethereum/go-ethereum/les/fetcher.go:483.86,484.9 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:485.93,485.93 0 1 -github.com/ethereum/go-ethereum/les/fetcher.go:486.19,486.19 0 0 -github.com/ethereum/go-ethereum/les/fetcher.go:496.85,497.38 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:497.38,499.38 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:512.3,513.13 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:499.38,499.103 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:500.36,500.78 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:501.38,506.19 4 1 -github.com/ethereum/go-ethereum/les/fetcher.go:506.19,509.6 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:518.47,519.35 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:523.2,524.38 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:527.2,527.21 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:519.35,521.3 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:524.38,526.3 1 0 -github.com/ethereum/go-ethereum/les/fetcher.go:531.112,533.9 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:538.2,538.17 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:534.99,534.99 0 1 -github.com/ethereum/go-ethereum/les/fetcher.go:535.19,536.13 1 0 -github.com/ethereum/go-ethereum/les/fetcher.go:542.89,544.24 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:549.2,550.31 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:555.2,555.55 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:544.24,547.3 2 1 -github.com/ethereum/go-ethereum/les/fetcher.go:550.31,551.33 1 1 -github.com/ethereum/go-ethereum/les/fetcher.go:551.33,553.4 1 1 -github.com/ethereum/go-ethereum/les/peer.go:86.69,89.16 3 1 -github.com/ethereum/go-ethereum/les/peer.go:92.2,93.16 2 1 -github.com/ethereum/go-ethereum/les/peer.go:96.2,96.25 1 1 -github.com/ethereum/go-ethereum/les/peer.go:89.16,91.3 1 1 -github.com/ethereum/go-ethereum/les/peer.go:93.16,95.3 1 1 -github.com/ethereum/go-ethereum/les/peer.go:99.54,102.26 3 1 -github.com/ethereum/go-ethereum/les/peer.go:106.2,106.16 1 1 -github.com/ethereum/go-ethereum/les/peer.go:102.26,105.3 2 1 -github.com/ethereum/go-ethereum/les/peer.go:109.61,111.9 2 1 -github.com/ethereum/go-ethereum/les/peer.go:114.2,114.16 1 1 -github.com/ethereum/go-ethereum/les/peer.go:117.2,117.34 1 1 -github.com/ethereum/go-ethereum/les/peer.go:111.9,113.3 1 1 -github.com/ethereum/go-ethereum/les/peer.go:114.16,116.3 1 1 -github.com/ethereum/go-ethereum/les/peer.go:146.39,148.2 1 1 -github.com/ethereum/go-ethereum/les/peer.go:151.39,153.2 1 1 -github.com/ethereum/go-ethereum/les/peer.go:157.48,159.2 1 1 -github.com/ethereum/go-ethereum/les/peer.go:162.39,164.2 1 0 -github.com/ethereum/go-ethereum/les/peer.go:175.40,181.2 1 0 -github.com/ethereum/go-ethereum/les/peer.go:184.49,189.2 3 1 -github.com/ethereum/go-ethereum/les/peer.go:192.37,197.2 3 1 -github.com/ethereum/go-ethereum/les/peer.go:200.67,205.2 3 1 -github.com/ethereum/go-ethereum/les/peer.go:209.89,215.12 2 1 -github.com/ethereum/go-ethereum/les/peer.go:218.2,218.12 1 1 -github.com/ethereum/go-ethereum/les/peer.go:240.2,242.25 3 1 -github.com/ethereum/go-ethereum/les/peer.go:252.2,252.22 1 1 -github.com/ethereum/go-ethereum/les/peer.go:215.12,217.3 1 1 -github.com/ethereum/go-ethereum/les/peer.go:218.12,221.17 2 1 -github.com/ethereum/go-ethereum/les/peer.go:225.3,225.28 1 1 -github.com/ethereum/go-ethereum/les/peer.go:229.3,229.36 1 1 -github.com/ethereum/go-ethereum/les/peer.go:234.3,234.47 1 1 -github.com/ethereum/go-ethereum/les/peer.go:238.3,238.14 1 1 -github.com/ethereum/go-ethereum/les/peer.go:221.17,224.4 2 0 -github.com/ethereum/go-ethereum/les/peer.go:225.28,228.4 2 0 -github.com/ethereum/go-ethereum/les/peer.go:229.36,232.4 2 0 -github.com/ethereum/go-ethereum/les/peer.go:234.47,237.4 2 0 -github.com/ethereum/go-ethereum/les/peer.go:242.25,243.10 1 1 -github.com/ethereum/go-ethereum/les/peer.go:244.22,245.18 1 1 -github.com/ethereum/go-ethereum/les/peer.go:248.20,249.35 1 0 -github.com/ethereum/go-ethereum/les/peer.go:245.18,247.5 1 0 -github.com/ethereum/go-ethereum/les/peer.go:259.223,278.23 10 1 -github.com/ethereum/go-ethereum/les/peer.go:282.2,282.25 1 1 -github.com/ethereum/go-ethereum/les/peer.go:286.2,287.16 2 1 -github.com/ethereum/go-ethereum/les/peer.go:290.2,291.31 2 1 -github.com/ethereum/go-ethereum/les/peer.go:294.2,296.63 3 1 -github.com/ethereum/go-ethereum/les/peer.go:299.2,299.57 1 1 -github.com/ethereum/go-ethereum/les/peer.go:302.2,302.59 1 1 -github.com/ethereum/go-ethereum/les/peer.go:305.2,305.25 1 1 -github.com/ethereum/go-ethereum/les/peer.go:308.2,308.27 1 1 -github.com/ethereum/go-ethereum/les/peer.go:311.2,311.32 1 1 -github.com/ethereum/go-ethereum/les/peer.go:315.2,315.23 1 1 -github.com/ethereum/go-ethereum/les/peer.go:324.2,324.25 1 1 -github.com/ethereum/go-ethereum/les/peer.go:327.2,327.12 1 1 -github.com/ethereum/go-ethereum/les/peer.go:278.23,280.3 1 1 -github.com/ethereum/go-ethereum/les/peer.go:282.25,284.3 1 1 -github.com/ethereum/go-ethereum/les/peer.go:287.16,289.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:291.31,293.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:296.63,298.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:299.57,301.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:302.59,304.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:305.25,307.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:308.27,310.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:311.32,313.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:315.23,317.53 2 1 -github.com/ethereum/go-ethereum/les/peer.go:320.3,320.44 1 1 -github.com/ethereum/go-ethereum/les/peer.go:317.53,319.4 1 0 -github.com/ethereum/go-ethereum/les/peer.go:320.44,322.4 1 0 -github.com/ethereum/go-ethereum/les/peer.go:324.25,326.3 1 1 -github.com/ethereum/go-ethereum/les/peer.go:331.31,334.2 2 1 -github.com/ethereum/go-ethereum/les/peer.go:366.110,380.2 1 1 -github.com/ethereum/go-ethereum/les/peer.go:384.53,386.24 2 1 -github.com/ethereum/go-ethereum/les/peer.go:399.2,400.43 2 1 -github.com/ethereum/go-ethereum/les/peer.go:386.24,388.3 1 1 -github.com/ethereum/go-ethereum/les/peer.go:388.8,393.24 4 1 -github.com/ethereum/go-ethereum/les/peer.go:393.24,395.4 1 1 -github.com/ethereum/go-ethereum/les/peer.go:395.9,397.4 1 0 -github.com/ethereum/go-ethereum/les/peer.go:405.31,406.50 1 0 -github.com/ethereum/go-ethereum/les/peer.go:406.50,408.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:413.33,415.2 1 0 -github.com/ethereum/go-ethereum/les/peer.go:419.82,425.2 2 1 -github.com/ethereum/go-ethereum/les/peer.go:427.93,430.2 2 1 -github.com/ethereum/go-ethereum/les/peer.go:434.119,437.2 2 1 -github.com/ethereum/go-ethereum/les/peer.go:441.109,444.2 2 1 -github.com/ethereum/go-ethereum/les/peer.go:448.78,451.2 2 1 -github.com/ethereum/go-ethereum/les/peer.go:455.70,458.2 2 1 -github.com/ethereum/go-ethereum/les/peer.go:461.80,464.2 2 1 -github.com/ethereum/go-ethereum/les/peer.go:467.73,470.2 2 1 -github.com/ethereum/go-ethereum/les/peer.go:473.88,476.2 2 1 -github.com/ethereum/go-ethereum/les/peer.go:479.82,482.2 2 1 -github.com/ethereum/go-ethereum/les/peer.go:485.80,488.25 3 0 -github.com/ethereum/go-ethereum/les/peer.go:491.2,491.55 1 0 -github.com/ethereum/go-ethereum/les/peer.go:488.25,490.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:495.74,497.2 1 1 -github.com/ethereum/go-ethereum/les/peer.go:501.72,506.18 4 1 -github.com/ethereum/go-ethereum/les/peer.go:509.2,510.32 2 1 -github.com/ethereum/go-ethereum/les/peer.go:513.2,513.13 1 1 -github.com/ethereum/go-ethereum/les/peer.go:506.18,508.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:510.32,512.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:518.62,523.18 4 0 -github.com/ethereum/go-ethereum/les/peer.go:526.2,528.21 3 0 -github.com/ethereum/go-ethereum/les/peer.go:531.2,531.32 1 0 -github.com/ethereum/go-ethereum/les/peer.go:534.2,534.13 1 0 -github.com/ethereum/go-ethereum/les/peer.go:523.18,525.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:528.21,530.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:531.32,533.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:538.84,542.27 3 1 -github.com/ethereum/go-ethereum/les/peer.go:545.2,547.14 3 1 -github.com/ethereum/go-ethereum/les/peer.go:554.2,554.85 1 1 -github.com/ethereum/go-ethereum/les/peer.go:542.27,544.3 1 1 -github.com/ethereum/go-ethereum/les/peer.go:547.14,550.3 2 1 -github.com/ethereum/go-ethereum/les/peer.go:550.8,553.3 2 1 -github.com/ethereum/go-ethereum/les/peer.go:559.60,565.120 4 1 -github.com/ethereum/go-ethereum/les/peer.go:570.2,571.48 2 1 -github.com/ethereum/go-ethereum/les/peer.go:565.120,569.3 2 1 -github.com/ethereum/go-ethereum/les/peer.go:571.48,573.38 2 0 -github.com/ethereum/go-ethereum/les/peer.go:573.38,575.4 1 0 -github.com/ethereum/go-ethereum/les/peer.go:581.79,586.2 3 1 -github.com/ethereum/go-ethereum/les/peer.go:590.103,593.107 1 1 -github.com/ethereum/go-ethereum/les/peer.go:593.107,598.16 2 1 -github.com/ethereum/go-ethereum/les/peer.go:601.3,601.56 1 1 -github.com/ethereum/go-ethereum/les/peer.go:598.16,600.4 1 1 -github.com/ethereum/go-ethereum/les/peer.go:602.34,608.50 2 1 -github.com/ethereum/go-ethereum/les/peer.go:611.3,611.54 1 1 -github.com/ethereum/go-ethereum/les/peer.go:614.3,614.52 1 1 -github.com/ethereum/go-ethereum/les/peer.go:617.3,618.56 2 1 -github.com/ethereum/go-ethereum/les/peer.go:621.3,621.58 1 1 -github.com/ethereum/go-ethereum/les/peer.go:624.3,624.56 1 1 -github.com/ethereum/go-ethereum/les/peer.go:627.3,627.58 1 1 -github.com/ethereum/go-ethereum/les/peer.go:630.3,630.38 1 1 -github.com/ethereum/go-ethereum/les/peer.go:633.3,633.24 1 1 -github.com/ethereum/go-ethereum/les/peer.go:645.3,645.35 1 1 -github.com/ethereum/go-ethereum/les/peer.go:649.3,650.71 2 1 -github.com/ethereum/go-ethereum/les/peer.go:653.3,653.75 1 1 -github.com/ethereum/go-ethereum/les/peer.go:656.3,657.59 2 1 -github.com/ethereum/go-ethereum/les/peer.go:660.3,667.22 6 1 -github.com/ethereum/go-ethereum/les/peer.go:674.3,674.13 1 1 -github.com/ethereum/go-ethereum/les/peer.go:608.50,610.4 1 0 -github.com/ethereum/go-ethereum/les/peer.go:611.54,613.4 1 0 -github.com/ethereum/go-ethereum/les/peer.go:614.52,616.4 1 0 -github.com/ethereum/go-ethereum/les/peer.go:618.56,620.4 1 0 -github.com/ethereum/go-ethereum/les/peer.go:621.58,623.4 1 1 -github.com/ethereum/go-ethereum/les/peer.go:624.56,626.4 1 0 -github.com/ethereum/go-ethereum/les/peer.go:627.58,629.4 1 0 -github.com/ethereum/go-ethereum/les/peer.go:630.38,632.4 1 0 -github.com/ethereum/go-ethereum/les/peer.go:633.24,635.64 2 1 -github.com/ethereum/go-ethereum/les/peer.go:638.4,638.34 1 1 -github.com/ethereum/go-ethereum/les/peer.go:635.64,637.5 1 0 -github.com/ethereum/go-ethereum/les/peer.go:639.9,644.4 1 1 -github.com/ethereum/go-ethereum/les/peer.go:645.35,647.4 1 0 -github.com/ethereum/go-ethereum/les/peer.go:650.71,652.4 1 0 -github.com/ethereum/go-ethereum/les/peer.go:653.75,655.4 1 0 -github.com/ethereum/go-ethereum/les/peer.go:657.59,659.4 1 0 -github.com/ethereum/go-ethereum/les/peer.go:667.22,668.40 1 1 -github.com/ethereum/go-ethereum/les/peer.go:668.40,669.34 1 1 -github.com/ethereum/go-ethereum/les/peer.go:669.34,671.6 1 0 -github.com/ethereum/go-ethereum/les/peer.go:680.65,683.16 3 0 -github.com/ethereum/go-ethereum/les/peer.go:688.2,688.19 1 0 -github.com/ethereum/go-ethereum/les/peer.go:683.16,685.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:685.8,687.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:692.39,696.31 3 1 -github.com/ethereum/go-ethereum/les/peer.go:699.2,700.37 2 0 -github.com/ethereum/go-ethereum/les/peer.go:708.2,708.42 1 0 -github.com/ethereum/go-ethereum/les/peer.go:696.31,698.3 1 1 -github.com/ethereum/go-ethereum/les/peer.go:700.37,701.48 1 0 -github.com/ethereum/go-ethereum/les/peer.go:701.48,703.20 2 0 -github.com/ethereum/go-ethereum/les/peer.go:703.20,705.5 1 0 -github.com/ethereum/go-ethereum/les/peer.go:718.69,720.23 2 1 -github.com/ethereum/go-ethereum/les/peer.go:723.2,723.19 1 1 -github.com/ethereum/go-ethereum/les/peer.go:720.23,722.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:727.49,729.23 2 1 -github.com/ethereum/go-ethereum/les/peer.go:733.2,737.9 5 0 -github.com/ethereum/go-ethereum/les/peer.go:740.2,745.35 3 0 -github.com/ethereum/go-ethereum/les/peer.go:753.2,754.35 2 0 -github.com/ethereum/go-ethereum/les/peer.go:729.23,732.3 2 1 -github.com/ethereum/go-ethereum/les/peer.go:737.9,739.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:745.35,748.3 2 0 -github.com/ethereum/go-ethereum/les/peer.go:748.8,752.3 3 0 -github.com/ethereum/go-ethereum/les/peer.go:785.96,799.2 1 1 -github.com/ethereum/go-ethereum/les/peer.go:803.44,804.51 1 1 -github.com/ethereum/go-ethereum/les/peer.go:813.2,813.13 1 1 -github.com/ethereum/go-ethereum/les/peer.go:804.51,805.27 1 0 -github.com/ethereum/go-ethereum/les/peer.go:805.27,809.4 1 0 -github.com/ethereum/go-ethereum/les/peer.go:809.9,811.4 1 0 -github.com/ethereum/go-ethereum/les/peer.go:817.39,819.2 1 1 -github.com/ethereum/go-ethereum/les/peer.go:822.50,824.2 1 1 -github.com/ethereum/go-ethereum/les/peer.go:830.31,831.22 1 1 -github.com/ethereum/go-ethereum/les/peer.go:838.2,838.42 1 1 -github.com/ethereum/go-ethereum/les/peer.go:831.22,837.3 3 0 -github.com/ethereum/go-ethereum/les/peer.go:838.42,839.13 1 1 -github.com/ethereum/go-ethereum/les/peer.go:839.13,842.8 3 1 -github.com/ethereum/go-ethereum/les/peer.go:842.8,844.22 2 1 -github.com/ethereum/go-ethereum/les/peer.go:847.5,847.31 1 1 -github.com/ethereum/go-ethereum/les/peer.go:851.5,853.11 3 1 -github.com/ethereum/go-ethereum/les/peer.go:844.22,846.6 1 0 -github.com/ethereum/go-ethereum/les/peer.go:847.31,849.14 2 0 -github.com/ethereum/go-ethereum/les/peer.go:869.39,875.2 2 1 -github.com/ethereum/go-ethereum/les/peer.go:878.31,880.2 1 1 -github.com/ethereum/go-ethereum/les/peer.go:883.86,886.2 2 1 -github.com/ethereum/go-ethereum/les/peer.go:890.86,893.2 2 1 -github.com/ethereum/go-ethereum/les/peer.go:897.69,900.2 2 1 -github.com/ethereum/go-ethereum/les/peer.go:904.85,907.2 2 1 -github.com/ethereum/go-ethereum/les/peer.go:910.80,913.2 2 1 -github.com/ethereum/go-ethereum/les/peer.go:916.87,919.2 2 1 -github.com/ethereum/go-ethereum/les/peer.go:922.81,925.2 2 1 -github.com/ethereum/go-ethereum/les/peer.go:929.63,931.2 1 1 -github.com/ethereum/go-ethereum/les/peer.go:934.56,936.2 1 1 -github.com/ethereum/go-ethereum/les/peer.go:939.43,944.2 3 0 -github.com/ethereum/go-ethereum/les/peer.go:950.68,954.38 3 1 -github.com/ethereum/go-ethereum/les/peer.go:963.2,963.36 1 1 -github.com/ethereum/go-ethereum/les/peer.go:966.2,966.21 1 1 -github.com/ethereum/go-ethereum/les/peer.go:954.38,960.22 6 1 -github.com/ethereum/go-ethereum/les/peer.go:960.22,960.70 1 1 -github.com/ethereum/go-ethereum/les/peer.go:963.36,965.3 1 1 -github.com/ethereum/go-ethereum/les/peer.go:973.61,978.21 4 1 -github.com/ethereum/go-ethereum/les/peer.go:978.21,980.3 1 1 -github.com/ethereum/go-ethereum/les/peer.go:984.41,985.30 1 1 -github.com/ethereum/go-ethereum/les/peer.go:988.2,988.70 1 1 -github.com/ethereum/go-ethereum/les/peer.go:985.30,987.3 1 1 -github.com/ethereum/go-ethereum/les/peer.go:988.70,989.26 1 1 -github.com/ethereum/go-ethereum/les/peer.go:994.3,994.106 1 1 -github.com/ethereum/go-ethereum/les/peer.go:989.26,989.60 1 1 -github.com/ethereum/go-ethereum/les/peer.go:989.62,991.4 1 0 -github.com/ethereum/go-ethereum/les/peer.go:991.9,993.4 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1003.37,1004.22 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1011.2,1011.42 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1004.22,1010.3 3 0 -github.com/ethereum/go-ethereum/les/peer.go:1011.42,1012.13 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1012.13,1015.8 3 0 -github.com/ethereum/go-ethereum/les/peer.go:1015.8,1017.22 2 0 -github.com/ethereum/go-ethereum/les/peer.go:1020.5,1020.31 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1017.22,1019.6 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1020.31,1022.6 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1022.11,1025.11 3 0 -github.com/ethereum/go-ethereum/les/peer.go:1034.169,1036.34 2 1 -github.com/ethereum/go-ethereum/les/peer.go:1043.2,1043.42 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1046.2,1046.54 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1051.2,1052.95 2 1 -github.com/ethereum/go-ethereum/les/peer.go:1036.34,1037.35 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1037.35,1039.4 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1039.9,1041.4 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1043.42,1045.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1046.54,1048.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1052.95,1054.44 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1068.3,1068.24 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1071.3,1075.45 4 1 -github.com/ethereum/go-ethereum/les/peer.go:1080.3,1086.56 4 1 -github.com/ethereum/go-ethereum/les/peer.go:1054.44,1062.26 5 1 -github.com/ethereum/go-ethereum/les/peer.go:1065.4,1066.41 2 1 -github.com/ethereum/go-ethereum/les/peer.go:1062.26,1064.5 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1068.24,1070.4 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1075.45,1077.4 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1077.9,1079.4 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1086.56,1088.17 2 1 -github.com/ethereum/go-ethereum/les/peer.go:1088.17,1091.5 2 1 -github.com/ethereum/go-ethereum/les/peer.go:1093.34,1095.15 2 1 -github.com/ethereum/go-ethereum/les/peer.go:1103.3,1103.13 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1095.15,1097.4 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1097.9,1098.56 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1098.56,1101.5 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1107.36,1111.2 3 1 -github.com/ethereum/go-ethereum/les/peer.go:1113.42,1117.2 3 1 -github.com/ethereum/go-ethereum/les/peer.go:1120.35,1122.2 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1144.40,1146.2 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1150.62,1155.29 4 1 -github.com/ethereum/go-ethereum/les/peer.go:1155.29,1157.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1161.64,1165.35 3 0 -github.com/ethereum/go-ethereum/les/peer.go:1165.35,1166.15 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1166.15,1169.4 2 0 -github.com/ethereum/go-ethereum/les/peer.go:1175.59,1179.15 3 1 -github.com/ethereum/go-ethereum/les/peer.go:1182.2,1182.42 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1185.2,1186.37 2 1 -github.com/ethereum/go-ethereum/les/peer.go:1189.2,1189.12 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1179.15,1181.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1182.42,1184.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1186.37,1188.3 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1195.54,1200.9 4 1 -github.com/ethereum/go-ethereum/les/peer.go:1203.2,1204.37 2 1 -github.com/ethereum/go-ethereum/les/peer.go:1207.2,1208.12 2 1 -github.com/ethereum/go-ethereum/les/peer.go:1200.9,1202.3 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1204.37,1206.3 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1212.41,1217.27 4 1 -github.com/ethereum/go-ethereum/les/peer.go:1220.2,1220.12 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1217.27,1219.3 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1224.54,1229.2 3 1 -github.com/ethereum/go-ethereum/les/peer.go:1232.36,1237.2 3 1 -github.com/ethereum/go-ethereum/les/peer.go:1242.49,1250.29 4 0 -github.com/ethereum/go-ethereum/les/peer.go:1255.2,1255.17 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1250.29,1251.56 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1251.56,1253.4 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1259.51,1264.29 4 1 -github.com/ethereum/go-ethereum/les/peer.go:1267.2,1267.13 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1264.29,1266.3 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1272.34,1276.29 3 1 -github.com/ethereum/go-ethereum/les/peer.go:1279.2,1279.18 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1276.29,1278.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1294.40,1296.2 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1300.59,1304.15 3 1 -github.com/ethereum/go-ethereum/les/peer.go:1307.2,1307.44 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1310.2,1312.12 3 1 -github.com/ethereum/go-ethereum/les/peer.go:1304.15,1306.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1307.44,1309.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1318.56,1323.9 4 1 -github.com/ethereum/go-ethereum/les/peer.go:1326.2,1328.12 3 1 -github.com/ethereum/go-ethereum/les/peer.go:1323.9,1325.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1332.43,1337.27 4 0 -github.com/ethereum/go-ethereum/les/peer.go:1340.2,1340.12 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1337.27,1339.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1344.56,1349.2 3 0 -github.com/ethereum/go-ethereum/les/peer.go:1352.36,1357.2 3 0 -github.com/ethereum/go-ethereum/les/peer.go:1361.69,1363.2 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1366.59,1371.32 4 1 -github.com/ethereum/go-ethereum/les/peer.go:1371.32,1373.3 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1378.57,1379.31 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1382.2,1382.24 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1379.31,1381.3 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1383.26,1384.37 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1385.26,1386.53 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1390.3,1390.39 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1386.53,1389.4 2 0 -github.com/ethereum/go-ethereum/les/peer.go:1396.34,1400.29 3 1 -github.com/ethereum/go-ethereum/les/peer.go:1403.2,1403.18 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1400.29,1402.3 1 1 -github.com/ethereum/go-ethereum/les/peer.go:1417.32,1419.2 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1421.54,1425.14 3 0 -github.com/ethereum/go-ethereum/les/peer.go:1428.2,1428.39 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1431.2,1432.12 2 0 -github.com/ethereum/go-ethereum/les/peer.go:1425.14,1427.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1428.39,1430.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1435.56,1439.14 3 0 -github.com/ethereum/go-ethereum/les/peer.go:1442.2,1442.40 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1445.2,1447.12 3 0 -github.com/ethereum/go-ethereum/les/peer.go:1439.14,1441.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1442.40,1444.3 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1450.29,1454.26 3 0 -github.com/ethereum/go-ethereum/les/peer.go:1457.2,1457.17 1 0 -github.com/ethereum/go-ethereum/les/peer.go:1454.26,1456.3 1 0 -github.com/ethereum/go-ethereum/tests/bor/helper.go:48.77,50.16 2 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:53.2,54.57 2 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:57.2,63.16 4 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:67.2,71.3 2 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:50.16,52.3 1 0 -github.com/ethereum/go-ethereum/tests/bor/helper.go:54.57,56.3 1 0 -github.com/ethereum/go-ethereum/tests/bor/helper.go:63.16,65.3 1 0 -github.com/ethereum/go-ethereum/tests/bor/helper.go:74.79,75.68 1 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:75.68,77.3 1 0 -github.com/ethereum/go-ethereum/tests/bor/helper.go:80.151,85.19 4 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:89.2,98.15 8 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:105.2,105.17 1 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:115.2,115.44 1 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:123.2,124.16 2 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:127.2,128.16 2 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:131.2,132.41 2 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:85.19,87.3 1 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:98.15,102.3 2 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:102.8,102.24 1 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:102.24,104.3 1 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:105.17,109.41 4 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:112.3,112.42 1 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:109.41,111.4 1 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:115.44,117.47 2 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:117.47,120.4 2 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:124.16,126.3 1 0 -github.com/ethereum/go-ethereum/tests/bor/helper.go:128.16,130.3 1 0 -github.com/ethereum/go-ethereum/tests/bor/helper.go:135.83,137.16 2 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:140.2,140.55 1 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:137.16,139.3 1 0 -github.com/ethereum/go-ethereum/tests/bor/helper.go:143.67,145.16 2 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:148.2,149.55 2 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:152.2,152.12 1 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:145.16,147.3 1 0 -github.com/ethereum/go-ethereum/tests/bor/helper.go:149.55,151.3 1 0 -github.com/ethereum/go-ethereum/tests/bor/helper.go:155.82,157.16 2 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:160.2,161.54 2 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:165.2,166.65 2 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:169.2,169.26 1 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:157.16,159.3 1 0 -github.com/ethereum/go-ethereum/tests/bor/helper.go:161.54,163.3 1 0 -github.com/ethereum/go-ethereum/tests/bor/helper.go:166.65,168.3 1 0 -github.com/ethereum/go-ethereum/tests/bor/helper.go:172.41,175.17 3 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:179.2,180.13 2 1 -github.com/ethereum/go-ethereum/tests/bor/helper.go:175.17,178.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers.go:30.154,36.16 4 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers.go:39.2,47.9 5 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers.go:36.16,38.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers.go:48.20,49.31 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers.go:51.24,56.30 3 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers.go:58.22,68.75 4 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers.go:75.153,81.16 4 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers.go:84.2,92.9 5 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers.go:81.16,83.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers.go:93.20,94.31 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers.go:96.24,101.30 3 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers.go:103.22,113.75 4 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:72.71,76.25 2 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:79.2,79.41 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:82.2,82.13 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:76.25,78.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:79.41,81.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:86.37,87.67 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:87.67,89.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:93.38,95.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:98.41,99.70 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:99.70,101.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:105.44,108.2 2 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:148.69,161.2 4 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:164.70,184.2 14 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:188.25,193.2 4 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:196.38,201.2 3 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:204.37,209.2 3 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:212.39,217.2 3 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:221.39,226.2 3 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:230.41,235.2 3 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:238.29,246.2 5 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:250.73,255.28 3 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:259.2,268.34 9 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:255.28,256.49 1 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:268.34,273.3 3 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:278.73,286.2 5 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:290.102,296.33 4 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:329.2,329.16 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:296.33,299.61 2 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:303.3,303.75 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:310.3,310.41 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:317.3,317.52 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:325.3,327.9 3 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:299.61,301.9 2 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:303.75,305.9 2 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:310.41,312.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:312.9,315.4 2 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:317.52,318.44 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:318.44,320.5 1 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:320.10,323.5 2 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:336.52,338.50 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:341.2,342.52 2 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:361.2,362.33 2 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:379.2,383.65 3 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:390.2,390.48 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:396.2,396.16 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:338.50,340.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:342.52,351.52 2 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:356.3,358.18 3 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:351.52,353.9 2 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:362.33,365.39 2 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:368.3,368.43 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:371.3,371.42 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:374.3,375.61 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:365.39,367.4 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:368.43,370.4 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:371.42,373.4 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:383.65,384.10 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:385.19,385.19 0 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:386.11,386.11 0 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:390.48,395.3 4 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:399.39,404.2 3 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:406.39,412.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:416.76,422.41 3 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:426.2,427.46 2 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:438.2,438.28 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:442.2,442.15 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:445.2,451.16 3 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:422.41,424.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:427.46,429.36 2 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:435.3,435.23 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:429.36,430.58 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:430.58,432.13 2 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:438.28,440.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:442.15,444.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:457.89,462.2 3 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:467.91,472.2 3 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:487.76,490.23 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:493.2,493.33 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:497.2,501.65 5 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:552.2,552.30 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:555.2,555.39 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:560.2,560.20 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:563.2,569.37 3 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:490.23,492.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:493.33,495.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:501.65,510.12 4 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:520.3,520.15 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:528.3,528.17 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:534.3,534.22 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:543.3,545.29 2 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:510.12,518.12 6 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:520.15,526.9 2 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:528.17,532.9 2 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:534.22,540.12 5 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:545.29,547.4 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:547.9,549.4 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:552.30,554.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:555.39,558.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:560.20,562.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:575.39,579.49 3 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:583.2,583.48 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:589.2,589.50 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:579.49,582.3 2 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:583.48,584.42 1 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:587.3,587.34 1 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:584.42,586.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:589.50,590.42 1 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:593.3,593.36 1 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:590.42,592.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:599.48,605.2 4 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:609.47,615.2 4 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:619.49,625.2 4 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:633.100,637.16 2 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:641.2,644.18 2 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:647.2,647.37 1 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:650.2,650.25 1 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:637.16,640.3 2 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:644.18,646.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:647.37,649.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:660.134,665.18 4 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:672.2,673.20 2 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:677.2,686.14 6 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:695.2,695.14 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:714.2,714.15 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:729.2,735.98 5 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:738.2,738.15 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:757.2,757.32 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:760.2,760.26 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:665.18,668.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:668.8,670.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:673.20,676.3 2 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:686.14,687.49 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:687.49,690.4 2 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:690.9,690.46 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:690.46,693.4 2 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:695.14,697.38 2 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:697.38,699.76 2 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:704.4,704.39 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:710.4,710.21 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:699.76,702.10 3 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:704.39,707.10 3 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:714.15,719.18 4 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:723.3,726.48 3 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:719.18,722.4 2 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:735.98,737.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:738.15,746.10 5 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:750.5,752.41 2 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:753.11,753.11 0 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:757.32,759.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:766.176,770.58 3 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:780.2,780.54 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:785.2,786.81 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:770.58,771.43 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:774.3,774.49 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:777.3,777.13 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:771.43,773.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:774.49,776.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:780.54,784.3 3 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:792.122,796.58 3 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:802.2,802.54 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:806.2,807.94 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:796.58,797.53 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:800.3,800.13 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:797.53,799.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:802.54,805.3 2 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:819.65,823.20 2 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:827.2,833.18 4 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:839.2,845.41 2 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:859.2,859.45 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:873.2,876.52 2 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:880.2,880.18 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:883.2,883.20 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:887.2,887.18 1 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:890.2,890.66 1 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:823.20,826.3 2 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:833.18,834.42 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:834.42,836.4 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:845.41,847.19 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:851.3,851.45 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:855.3,856.6 2 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:847.19,848.9 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:851.45,853.9 2 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:859.45,860.91 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:870.3,871.13 2 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:860.91,862.4 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:862.9,868.4 2 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:876.52,878.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:880.18,882.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:883.20,885.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:887.18,889.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/queue.go:895.55,902.2 4 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:33.41,35.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:39.37,41.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:45.77,47.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:51.91,53.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:57.92,59.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:64.50,66.15 2 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:71.2,71.14 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:66.15,68.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:68.8,70.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:76.120,79.2 2 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:83.88,88.9 4 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:96.2,96.22 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:89.39,90.48 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:91.18,92.96 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_headers.go:93.10,94.68 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:33.42,35.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:39.38,41.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:45.78,47.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:51.92,53.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:57.93,59.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:64.51,66.15 2 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:71.2,71.14 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:66.15,68.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:68.8,70.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:76.121,78.31 2 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:81.2,82.37 2 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:85.2,85.49 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:78.31,80.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:82.37,84.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:90.89,95.9 4 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:103.2,103.22 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:96.40,97.49 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:98.18,99.98 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_receipts.go:100.10,101.69 1 0 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:77.59,77.83 1 0 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:78.147,80.2 1 0 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:81.144,83.2 1 0 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:84.99,85.64 1 0 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:87.101,88.66 1 0 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:92.95,100.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:103.34,108.2 3 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:112.81,114.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:118.79,120.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:124.82,126.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:130.70,132.26 2 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:135.2,135.12 1 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:132.26,134.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:140.68,142.25 2 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:145.2,145.12 1 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:142.25,144.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:150.71,152.27 2 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:155.2,155.12 1 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:152.27,154.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:161.56,165.41 3 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:171.2,171.30 1 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:165.41,166.31 1 0 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:166.31,168.9 2 0 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:176.55,182.2 4 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:202.28,207.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:210.80,212.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:216.28,220.32 3 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:220.32,222.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:231.54,234.33 2 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:238.2,239.54 2 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:242.2,246.12 4 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:234.33,237.3 2 0 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:239.54,241.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:251.48,254.9 3 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:258.2,263.12 5 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:254.9,257.3 2 0 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:267.52,272.2 3 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:275.30,280.2 3 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:283.49,288.29 4 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:291.2,291.13 1 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:288.29,290.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:301.39,303.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:305.49,307.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/peer.go:309.44,312.2 2 1 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:44.69,49.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:52.38,59.14 5 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:67.2,71.23 2 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:59.14,61.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:75.37,77.15 2 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:83.2,90.12 5 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:77.15,82.3 2 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:90.12,92.16 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:99.3,99.102 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:105.3,105.23 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:92.16,96.4 3 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:99.102,102.4 2 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:105.23,107.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:113.51,123.26 6 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:126.2,128.12 3 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:123.26,125.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:137.74,139.2 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:147.76,149.2 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:157.86,167.53 2 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:170.2,170.12 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:167.53,169.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:178.59,182.21 2 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:190.2,194.16 3 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:201.2,202.21 2 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:210.2,210.13 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:221.2,222.56 2 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:229.2,229.20 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:251.2,251.19 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:183.16,184.51 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:185.16,186.55 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:187.10,188.43 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:194.16,200.3 2 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:203.16,204.86 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:205.16,206.90 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:207.10,208.87 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:210.13,219.3 2 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:222.56,228.3 2 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:229.20,237.22 5 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:245.3,245.13 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:249.3,249.16 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:238.17,239.46 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:240.17,241.50 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:242.11,243.47 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:245.13,247.12 2 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:256.60,258.16 2 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:261.2,261.6 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:258.16,260.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:261.6,267.74 2 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:272.3,272.23 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:284.3,284.35 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:288.3,288.42 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:297.3,298.10 2 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:303.3,304.17 2 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:267.74,271.4 3 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:272.23,274.11 2 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:278.6,278.6 0 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:279.22,280.23 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:284.35,285.12 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:288.42,289.11 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:290.31,291.15 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:292.22,293.23 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:299.40,299.40 0 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:300.21,301.22 1 0 -github.com/ethereum/go-ethereum/eth/downloader/beaconsync.go:304.17,306.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:33.39,35.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:39.35,41.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:45.75,47.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:51.89,53.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:57.90,59.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:64.48,66.15 2 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:71.2,71.14 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:66.15,68.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:68.8,70.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:76.118,78.28 2 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:82.2,83.37 2 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:86.2,86.47 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:78.28,80.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:83.37,85.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:91.86,96.9 4 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:104.2,104.22 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:97.35,98.47 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:99.18,100.91 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent_bodies.go:101.10,102.67 1 0 -github.com/ethereum/go-ethereum/eth/downloader/modes.go:31.37,33.2 1 0 -github.com/ethereum/go-ethereum/eth/downloader/modes.go:36.38,37.14 1 0 -github.com/ethereum/go-ethereum/eth/downloader/modes.go:38.16,39.16 1 0 -github.com/ethereum/go-ethereum/eth/downloader/modes.go:40.16,41.16 1 0 -github.com/ethereum/go-ethereum/eth/downloader/modes.go:42.17,43.17 1 0 -github.com/ethereum/go-ethereum/eth/downloader/modes.go:44.10,45.19 1 0 -github.com/ethereum/go-ethereum/eth/downloader/modes.go:49.52,50.14 1 0 -github.com/ethereum/go-ethereum/eth/downloader/modes.go:51.16,52.29 1 0 -github.com/ethereum/go-ethereum/eth/downloader/modes.go:53.16,54.29 1 0 -github.com/ethereum/go-ethereum/eth/downloader/modes.go:55.17,56.30 1 0 -github.com/ethereum/go-ethereum/eth/downloader/modes.go:57.10,58.55 1 0 -github.com/ethereum/go-ethereum/eth/downloader/modes.go:62.56,63.22 1 0 -github.com/ethereum/go-ethereum/eth/downloader/modes.go:73.2,73.12 1 0 -github.com/ethereum/go-ethereum/eth/downloader/modes.go:64.14,65.19 1 0 -github.com/ethereum/go-ethereum/eth/downloader/modes.go:66.14,67.19 1 0 -github.com/ethereum/go-ethereum/eth/downloader/modes.go:68.15,69.20 1 0 -github.com/ethereum/go-ethereum/eth/downloader/modes.go:70.10,71.82 1 0 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:48.44,54.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:58.69,63.24 4 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:66.2,67.28 2 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:63.24,65.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:78.123,84.38 5 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:87.2,87.17 1 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:91.2,91.36 1 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:84.38,86.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:87.17,90.3 2 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:98.88,104.2 4 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:108.123,113.27 4 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:119.2,119.11 1 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:122.2,123.42 2 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:113.27,118.3 2 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:119.11,121.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:128.48,132.23 3 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:135.2,135.55 1 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:138.2,138.14 1 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:132.23,134.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:135.55,137.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:145.44,149.18 2 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:158.2,159.19 2 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:149.18,150.35 1 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:153.3,154.41 2 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:150.35,151.9 1 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:154.41,155.9 1 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:163.62,168.23 4 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:171.2,176.55 4 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:180.2,183.16 3 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:168.23,170.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:176.55,178.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:187.46,191.29 3 1 -github.com/ethereum/go-ethereum/eth/downloader/resultstore.go:191.29,193.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/api.go:41.83,52.2 3 0 -github.com/ethereum/go-ethereum/eth/downloader/api.go:56.45,62.6 2 0 -github.com/ethereum/go-ethereum/eth/downloader/api.go:62.6,63.10 1 0 -github.com/ethereum/go-ethereum/eth/downloader/api.go:64.43,65.37 1 0 -github.com/ethereum/go-ethereum/eth/downloader/api.go:66.45,68.24 2 0 -github.com/ethereum/go-ethereum/eth/downloader/api.go:69.30,70.20 1 0 -github.com/ethereum/go-ethereum/eth/downloader/api.go:74.4,75.29 2 0 -github.com/ethereum/go-ethereum/eth/downloader/api.go:85.4,85.37 1 0 -github.com/ethereum/go-ethereum/eth/downloader/api.go:70.20,72.5 1 0 -github.com/ethereum/go-ethereum/eth/downloader/api.go:76.20,80.6 1 0 -github.com/ethereum/go-ethereum/eth/downloader/api.go:81.32,82.25 1 0 -github.com/ethereum/go-ethereum/eth/downloader/api.go:85.37,87.5 1 0 -github.com/ethereum/go-ethereum/eth/downloader/api.go:93.89,95.16 2 0 -github.com/ethereum/go-ethereum/eth/downloader/api.go:99.2,101.12 2 0 -github.com/ethereum/go-ethereum/eth/downloader/api.go:119.2,119.20 1 0 -github.com/ethereum/go-ethereum/eth/downloader/api.go:95.16,97.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/api.go:101.12,105.7 3 0 -github.com/ethereum/go-ethereum/eth/downloader/api.go:105.7,106.11 1 0 -github.com/ethereum/go-ethereum/eth/downloader/api.go:107.30,108.39 1 0 -github.com/ethereum/go-ethereum/eth/downloader/api.go:109.24,111.11 2 0 -github.com/ethereum/go-ethereum/eth/downloader/api.go:112.29,114.11 2 0 -github.com/ethereum/go-ethereum/eth/downloader/api.go:144.48,145.24 1 0 -github.com/ethereum/go-ethereum/eth/downloader/api.go:145.24,149.7 3 0 -github.com/ethereum/go-ethereum/eth/downloader/api.go:149.7,150.11 1 0 -github.com/ethereum/go-ethereum/eth/downloader/api.go:151.15,153.13 1 0 -github.com/ethereum/go-ethereum/eth/downloader/api.go:154.27,155.11 1 0 -github.com/ethereum/go-ethereum/eth/downloader/api.go:163.102,166.2 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:218.196,219.23 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:222.2,240.11 4 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:219.23,221.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:250.55,257.9 5 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:267.2,285.3 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:258.47,259.52 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:260.47,261.56 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:262.27,263.57 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:264.10,265.124 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:289.43,291.2 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:295.77,297.18 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:303.2,304.87 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:308.2,308.12 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:297.18,300.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:300.8,302.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:304.87,307.3 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:312.87,314.2 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:319.54,322.18 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:328.2,329.47 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:333.2,335.12 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:322.18,325.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:325.8,327.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:329.47,332.3 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:340.101,343.13 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:348.2,351.51 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:363.2,363.40 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:367.2,367.52 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:371.2,373.12 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:344.33,345.13 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:351.51,353.24 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:360.3,360.13 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:353.24,357.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:357.9,359.4 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:363.40,365.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:367.52,369.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:379.145,385.23 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:395.2,395.30 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:399.2,399.57 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:402.2,405.51 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:408.2,408.22 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:417.2,420.77 3 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:426.2,426.30 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:434.2,446.17 8 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:452.2,452.23 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:455.2,455.53 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:385.23,386.16 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:386.16,387.11 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:388.22,388.22 0 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:389.12,390.22 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:395.30,397.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:399.57,401.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:405.51,407.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:408.22,412.62 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:412.62,414.4 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:420.77,421.10 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:422.13,422.13 0 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:423.11,423.11 0 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:426.30,427.10 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:428.25,428.25 0 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:429.11,430.16 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:446.17,448.15 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:448.15,450.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:452.23,454.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:458.41,460.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:464.119,466.15 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:475.2,477.17 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:482.2,482.30 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:487.2,488.17 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:508.2,508.38 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:511.2,514.17 3 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:527.2,528.73 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:531.2,535.22 3 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:548.2,549.52 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:552.2,552.22 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:592.2,593.27 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:596.2,597.17 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:604.2,606.16 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:610.2,610.22 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:619.2,619.30 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:466.15,468.17 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:468.17,470.4 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:470.9,473.4 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:477.17,479.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:479.8,481.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:482.30,484.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:488.17,491.17 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:491.17,493.4 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:494.8,497.17 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:500.3,500.55 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:497.17,499.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:500.55,502.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:508.38,510.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:514.17,517.17 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:517.17,519.4 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:520.8,523.17 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:523.17,525.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:528.73,530.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:535.22,536.40 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:536.40,538.4 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:538.9,540.29 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:545.4,545.54 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:540.29,542.5 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:549.52,551.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:552.22,567.64 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:574.3,578.38 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:585.3,585.24 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:567.64,569.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:569.9,569.44 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:569.44,571.4 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:571.9,573.4 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:578.38,581.4 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:581.9,581.32 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:581.32,583.4 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:585.24,586.55 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:586.55,588.5 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:593.27,595.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:597.17,599.32 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:599.32,599.94 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:600.8,602.32 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:602.32,602.75 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:606.16,606.62 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:607.16,607.64 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:608.16,608.74 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:610.22,615.44 4 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:615.44,615.81 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:616.8,616.29 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:616.29,617.44 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:617.44,617.96 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:624.63,627.30 3 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:632.2,633.37 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:644.2,646.12 3 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:627.30,629.13 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:629.13,629.54 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:633.37,634.27 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:640.3,640.53 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:634.27,639.4 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:640.53,641.9 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:652.31,657.23 3 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:657.23,658.10 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:659.21,659.21 0 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:661.11,662.21 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:669.31,672.2 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:676.34,679.9 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:687.2,690.12 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:680.18,680.18 0 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:681.10,685.25 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:695.104,702.22 5 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:705.2,706.16 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:710.2,710.47 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:716.2,717.84 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:720.2,720.23 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:729.2,730.75 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:733.2,733.25 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:702.22,704.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:706.16,708.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:710.47,712.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:717.84,719.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:720.23,721.73 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:724.3,725.24 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:721.73,723.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:730.75,732.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:744.87,755.21 3 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:760.2,761.23 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:764.2,766.14 3 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:769.2,769.15 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:773.2,774.22 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:777.2,777.15 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:780.2,781.14 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:784.2,785.50 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:755.21,757.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:761.23,763.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:766.14,768.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:769.15,771.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:774.22,776.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:777.15,779.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:781.14,783.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:789.161,790.105 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:790.105,792.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:800.98,802.86 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:807.2,813.14 3 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:821.2,825.30 3 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:828.2,828.36 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:834.2,834.23 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:852.2,853.16 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:860.2,860.41 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:864.2,865.16 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:868.2,868.22 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:802.86,804.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:814.16,815.56 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:816.16,817.60 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:818.10,819.61 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:825.30,827.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:828.36,831.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:834.23,836.21 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:847.3,847.33 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:836.21,838.22 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:838.22,840.36 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:843.5,843.61 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:840.36,841.11 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:847.33,849.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:853.16,855.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:860.41,862.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:865.16,867.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:871.142,876.16 4 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:880.2,883.23 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:888.2,888.33 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:896.2,896.41 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:920.2,920.29 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:928.2,928.30 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:876.16,878.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:883.23,886.3 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:888.33,890.62 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:890.62,893.4 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:896.41,898.75 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:902.3,906.15 4 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:914.3,914.12 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:898.75,899.12 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:907.17,908.39 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:909.17,910.43 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:911.11,912.40 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:914.12,916.9 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:920.29,921.29 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:925.3,926.21 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:921.29,924.4 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:931.131,936.15 3 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:939.2,941.20 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:980.2,980.27 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:984.2,985.19 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:936.15,938.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:941.20,946.17 3 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:950.3,950.24 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:955.3,959.15 4 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:967.3,967.13 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:971.3,972.38 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:976.3,977.11 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:946.17,948.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:950.24,953.4 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:960.17,961.39 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:962.17,963.43 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:964.11,965.40 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:967.13,969.12 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:972.38,975.4 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:980.27,983.3 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:996.86,1007.6 4 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1007.6,1017.10 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1034.3,1034.14 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1061.3,1064.27 3 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1067.3,1069.15 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1096.3,1096.36 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1107.3,1107.24 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1128.3,1129.15 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1180.3,1180.39 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1190.3,1190.23 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1204.3,1204.28 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1018.17,1024.112 5 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1026.17,1028.125 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1030.11,1032.84 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1035.12,1035.12 0 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1038.20,1040.14 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1042.11,1048.79 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1054.4,1054.11 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1058.4,1058.71 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1048.79,1049.12 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1050.22,1050.22 0 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1051.23,1051.23 0 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1055.31,1055.31 0 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1056.22,1056.22 0 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1064.27,1066.4 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1069.15,1070.25 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1092.4,1093.12 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1070.25,1071.94 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1075.5,1075.98 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1079.5,1089.49 6 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1071.94,1074.6 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1075.98,1078.6 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1096.36,1098.45 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1102.4,1104.12 3 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1098.45,1101.5 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1107.24,1109.60 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1119.4,1120.11 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1109.60,1111.12 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1112.42,1113.14 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1114.23,1115.24 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1121.31,1122.15 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1123.22,1124.23 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1129.15,1131.18 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1135.4,1139.26 4 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1131.18,1134.5 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1140.9,1142.84 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1149.4,1149.32 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1142.84,1145.5 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1149.32,1152.26 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1163.5,1163.24 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1167.5,1167.71 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1152.26,1154.6 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1154.11,1156.70 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1156.70,1158.7 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1163.24,1165.6 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1167.71,1169.19 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1172.6,1173.31 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1169.19,1171.7 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1180.39,1182.11 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1183.41,1184.13 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1185.22,1186.23 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1190.23,1192.11 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1200.4,1200.32 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1196.6,1196.6 0 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1197.22,1198.23 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1204.28,1206.4 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1219.125,1224.16 4 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1227.2,1228.16 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1231.2,1231.36 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1224.16,1226.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1228.16,1230.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1237.70,1243.2 4 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1248.72,1254.2 4 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1259.93,1266.15 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1289.2,1291.6 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1266.15,1267.19 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1267.19,1269.25 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1273.4,1273.61 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1277.4,1278.25 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1282.4,1285.80 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1269.25,1272.5 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1273.61,1276.5 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1278.25,1281.5 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1291.6,1292.10 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1293.21,1295.22 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1297.33,1299.45 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1348.4,1351.25 3 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1472.4,1473.39 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1476.4,1479.79 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1299.45,1301.80 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1310.5,1310.20 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1344.5,1345.15 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1301.80,1302.13 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1303.23,1303.23 0 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1304.24,1304.24 0 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1310.20,1323.27 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1336.6,1336.47 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1323.27,1325.87 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1325.87,1327.8 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1336.47,1338.76 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1338.76,1340.8 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1351.25,1353.12 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1360.5,1361.29 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1364.5,1368.46 3 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1450.5,1450.45 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1467.5,1469.28 3 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1354.23,1356.24 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1357.13,1357.13 0 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1361.29,1363.6 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1368.46,1373.30 3 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1376.6,1379.95 3 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1385.6,1389.35 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1413.6,1413.31 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1434.6,1434.28 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1441.6,1441.28 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1373.30,1375.7 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1379.95,1381.7 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1389.35,1391.20 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1396.7,1396.43 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1391.20,1395.8 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1396.43,1398.28 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1398.28,1400.65 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1409.9,1409.14 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1400.65,1402.31 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1402.31,1405.11 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1406.15,1408.10 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1413.31,1414.88 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1425.7,1425.27 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1414.88,1418.73 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1421.8,1422.57 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1418.73,1420.9 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1425.27,1427.53 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1427.53,1429.9 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1429.14,1431.9 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1434.28,1440.7 3 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1441.28,1447.7 3 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1450.45,1452.103 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1461.6,1462.43 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1452.103,1453.14 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1454.25,1456.26 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1457.38,1457.38 0 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1462.43,1465.7 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1473.39,1475.5 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1479.79,1480.12 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1481.21,1481.21 0 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1482.13,1482.13 0 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1490.82,1491.6 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1491.6,1493.24 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1496.3,1496.31 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1502.3,1506.32 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1530.3,1530.55 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1533.3,1533.25 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1493.24,1495.4 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1496.31,1498.4 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1506.32,1508.17 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1513.4,1513.35 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1508.17,1512.5 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1513.35,1515.25 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1515.25,1517.69 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1526.6,1526.11 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1517.69,1519.28 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1519.28,1522.8 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1523.12,1525.7 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1530.55,1532.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1533.25,1536.4 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1540.71,1542.23 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1545.2,1545.9 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1551.2,1557.33 4 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1563.2,1563.64 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1575.2,1575.12 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1542.23,1544.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1546.18,1547.36 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1548.10,1548.10 0 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1557.33,1559.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1563.64,1564.27 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1573.3,1573.52 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1564.27,1566.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1566.9,1572.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1580.53,1587.15 4 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1594.2,1594.35 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1599.2,1607.6 3 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1587.15,1592.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1594.35,1595.114 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1595.114,1597.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1607.6,1611.24 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1624.3,1624.31 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1629.3,1633.22 4 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1644.3,1644.42 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1666.3,1667.61 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1670.3,1670.15 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1696.3,1696.54 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1611.24,1613.23 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1617.4,1617.11 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1613.23,1615.5 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1618.22,1620.23 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1621.12,1621.12 0 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1624.31,1626.4 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1633.22,1634.31 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1634.31,1639.5 3 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1640.9,1642.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1644.42,1653.128 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1653.128,1664.5 6 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1667.61,1669.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1670.15,1672.21 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1680.4,1680.11 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1672.21,1678.5 4 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1681.21,1682.24 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1685.5,1685.49 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1688.5,1688.19 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1690.35,1692.13 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1682.24,1684.6 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1685.49,1687.6 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1696.54,1698.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1702.108,1703.23 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1706.2,1706.80 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1711.2,1711.33 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1722.2,1722.25 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1703.23,1705.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1706.80,1709.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1711.33,1713.10 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1714.20,1715.35 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1716.21,1717.14 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1718.11,1719.33 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1725.93,1727.23 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1730.2,1730.9 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1740.2,1747.33 5 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1751.2,1751.97 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1755.2,1755.12 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1727.23,1729.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1731.18,1732.36 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1733.24,1734.42 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1737.10,1737.10 0 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1734.42,1736.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1747.33,1750.3 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1751.97,1754.3 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1758.66,1763.133 3 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1766.2,1766.70 1 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1769.2,1770.12 2 1 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1763.133,1765.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1766.70,1768.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1775.83,1776.33 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1777.32,1779.17 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1782.3,1782.82 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1784.33,1786.81 2 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1788.29,1789.65 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1791.29,1792.65 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1794.10,1795.63 1 0 -github.com/ethereum/go-ethereum/eth/downloader/downloader.go:1779.17,1781.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:79.79,85.15 3 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:93.2,94.58 2 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:98.2,99.21 2 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:102.2,110.15 3 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:121.2,128.6 5 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:85.15,89.31 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:89.31,91.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:94.58,96.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:99.21,101.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:110.15,114.30 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:114.30,116.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:128.6,130.40 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:134.3,134.27 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:217.3,217.10 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:130.40,132.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:134.27,135.37 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:135.37,137.5 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:138.9,144.44 2 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:159.4,166.31 3 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:212.4,212.114 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:144.44,146.39 2 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:146.39,149.6 2 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:149.11,149.28 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:149.28,150.71 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:150.71,156.7 2 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:166.31,169.18 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:172.5,172.46 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:178.5,179.17 2 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:182.5,182.17 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:186.5,186.23 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:190.5,191.19 2 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:200.5,206.29 5 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:169.18,170.11 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:172.46,173.11 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:179.17,181.6 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:182.17,185.6 2 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:186.23,187.14 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:191.19,198.14 2 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:206.29,208.6 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:212.114,214.5 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:218.21,222.22 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:224.27,229.18 2 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:242.4,242.38 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:261.4,261.37 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:266.20,272.65 2 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:277.4,288.27 6 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:294.4,308.19 3 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:315.4,315.17 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:331.27,336.12 2 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:350.4,360.55 5 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:374.32,376.13 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:229.18,231.37 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:234.5,234.36 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:238.5,238.13 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:231.37,233.6 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:234.36,236.6 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:242.38,247.43 4 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:247.43,249.20 2 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:258.6,258.27 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:249.20,250.26 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:253.7,253.30 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:250.26,252.8 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:253.30,256.8 2 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:261.37,264.5 2 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:272.65,275.13 3 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:288.27,291.5 2 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:308.19,313.13 2 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:315.17,317.5 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:317.10,325.15 5 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:325.15,328.6 2 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:336.12,338.19 2 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:347.5,347.30 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:338.19,339.25 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:342.6,342.29 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:339.25,341.7 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:342.29,345.7 2 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:360.55,363.40 2 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:369.5,369.42 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:363.40,365.6 1 0 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:369.42,371.6 1 1 -github.com/ethereum/go-ethereum/eth/downloader/fetchers_concurrent.go:376.13,378.5 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:75.13,78.40 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:78.40,79.66 1 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:215.99,228.2 3 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:234.30,242.6 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:242.6,243.10 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:244.30,247.10 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:249.32,252.20 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:256.4,260.8 4 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:252.20,254.13 2 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:260.8,265.12 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:266.31,270.16 1 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:272.31,276.16 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:278.32,282.20 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:284.31,287.12 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:289.13,294.12 3 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:302.38,311.2 5 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:319.63,323.9 3 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:324.75,325.16 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:326.22,327.23 1 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:334.68,337.17 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:345.2,346.15 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:348.2,349.15 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:351.2,358.12 3 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:361.2,376.15 6 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:382.2,388.42 5 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:392.2,392.27 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:395.2,395.6 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:337.17,339.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:339.8,343.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:346.15,346.39 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:349.15,349.40 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:358.12,360.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:376.15,379.3 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:388.42,390.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:392.27,394.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:395.6,397.14 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:401.3,401.10 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:397.14,399.4 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:402.27,406.18 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:415.30,417.29 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:419.32,425.71 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:436.4,441.14 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:445.30,446.24 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:448.27,456.14 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:460.4,460.14 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:406.18,409.5 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:409.10,413.5 3 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:425.71,429.20 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:433.5,434.13 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:429.20,432.6 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:441.14,443.5 1 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:456.14,459.5 2 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:460.14,463.5 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:472.49,477.67 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:545.2,559.38 5 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:562.2,562.80 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:477.67,479.60 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:479.60,481.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:481.9,483.50 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:488.4,493.38 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:510.4,511.45 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:522.4,522.17 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:531.4,536.40 4 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:539.4,539.10 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:483.50,485.5 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:493.38,496.41 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:502.5,502.41 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:506.5,506.10 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:496.41,499.14 3 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:502.41,505.6 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:511.45,513.43 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:513.43,515.44 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:515.44,519.7 3 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:522.17,525.5 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:536.40,538.5 1 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:559.38,561.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:566.60,568.16 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:571.2,571.43 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:568.16,569.13 1 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:578.72,584.30 3 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:590.2,590.31 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:596.2,596.90 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:607.2,613.38 5 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:616.2,616.14 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:584.30,585.12 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:588.3,588.14 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:585.12,587.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:590.31,591.12 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:594.3,594.14 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:591.12,593.4 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:596.90,597.12 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:600.3,600.14 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:597.12,599.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:613.38,615.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:620.110,627.31 3 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:631.2,631.28 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:634.2,637.43 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:627.31,630.3 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:631.28,633.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:637.43,639.29 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:643.3,643.18 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:647.3,647.51 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:651.3,658.7 5 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:669.3,685.34 5 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:639.29,641.4 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:643.18,644.12 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:647.51,649.4 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:658.7,660.18 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:663.4,663.38 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:666.4,666.9 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:660.18,661.13 1 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:663.38,664.13 1 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:692.74,701.31 4 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:704.2,706.16 3 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:711.2,719.9 5 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:701.31,703.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:706.16,710.3 3 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:720.20,722.31 2 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:724.24,740.18 5 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:742.22,750.10 4 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:751.26,755.32 3 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:757.47,761.32 3 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:763.69,767.32 3 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:769.70,773.32 3 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:775.11,778.40 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:790.4,792.11 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:778.40,779.53 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:779.53,784.6 4 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:797.6,797.6 0 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:798.22,798.22 0 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:806.48,809.33 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:815.2,815.31 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:809.33,810.23 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:810.23,812.4 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:815.31,817.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:822.62,823.9 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:824.25,824.25 0 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:826.20,826.20 0 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:828.19,828.19 0 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:838.54,840.9 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:846.2,853.63 3 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:841.19,843.9 2 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:844.10,844.10 0 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:856.84,865.41 3 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:872.2,880.30 4 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:884.2,885.31 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1004.2,1005.38 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1009.2,1010.12 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1013.2,1013.55 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1023.2,1023.23 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:865.41,871.3 2 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:880.30,882.3 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:885.31,888.63 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:908.3,909.58 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:937.3,945.13 5 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:956.3,957.39 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:960.3,968.101 4 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1000.3,1000.13 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:888.63,899.40 5 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:902.4,904.9 3 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:899.40,901.5 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:909.58,910.21 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:910.21,931.30 7 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:931.30,933.11 2 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:945.13,949.37 1 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:953.4,953.9 1 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:949.37,952.5 2 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:957.39,959.4 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:968.101,976.68 4 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:988.4,988.107 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:976.68,980.13 3 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:981.10,985.5 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:988.107,995.5 5 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1000.13,1001.9 1 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1005.38,1007.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1010.12,1012.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1013.55,1016.20 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1016.20,1018.4 1 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1018.9,1021.4 2 1 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1036.81,1042.22 2 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1045.2,1046.57 2 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1049.2,1052.24 3 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1042.22,1044.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1046.57,1048.3 1 0 -github.com/ethereum/go-ethereum/eth/downloader/skeleton.go:1061.56,1063.2 1 0 -github.com/ethereum/go-ethereum/eth/downloader/statesync.go:27.61,30.9 2 1 -github.com/ethereum/go-ethereum/eth/downloader/statesync.go:40.2,40.10 1 1 -github.com/ethereum/go-ethereum/eth/downloader/statesync.go:31.29,35.14 1 1 -github.com/ethereum/go-ethereum/eth/downloader/statesync.go:36.18,38.16 2 0 -github.com/ethereum/go-ethereum/eth/downloader/statesync.go:45.37,46.6 1 1 -github.com/ethereum/go-ethereum/eth/downloader/statesync.go:46.6,47.10 1 1 -github.com/ethereum/go-ethereum/eth/downloader/statesync.go:48.32,49.32 1 1 -github.com/ethereum/go-ethereum/eth/downloader/statesync.go:52.19,53.10 1 1 -github.com/ethereum/go-ethereum/eth/downloader/statesync.go:49.32,51.5 1 1 -github.com/ethereum/go-ethereum/eth/downloader/statesync.go:60.60,66.6 4 1 -github.com/ethereum/go-ethereum/eth/downloader/statesync.go:66.6,67.10 1 1 -github.com/ethereum/go-ethereum/eth/downloader/statesync.go:68.35,69.15 1 0 -github.com/ethereum/go-ethereum/eth/downloader/statesync.go:71.17,72.14 1 1 -github.com/ethereum/go-ethereum/eth/downloader/statesync.go:92.63,100.2 1 1 -github.com/ethereum/go-ethereum/eth/downloader/statesync.go:105.27,109.2 3 1 -github.com/ethereum/go-ethereum/eth/downloader/statesync.go:112.34,115.2 2 1 -github.com/ethereum/go-ethereum/eth/downloader/statesync.go:118.36,119.25 1 1 -github.com/ethereum/go-ethereum/eth/downloader/statesync.go:122.2,122.17 1 1 -github.com/ethereum/go-ethereum/eth/downloader/statesync.go:119.25,121.3 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:72.35,74.2 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:82.57,83.15 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:86.2,89.50 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:96.2,96.18 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:83.15,84.46 1 0 -github.com/ethereum/go-ethereum/trie/trie.go:89.50,91.17 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:94.3,94.23 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:91.17,93.4 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:101.56,103.2 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:107.39,109.16 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:112.2,112.12 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:109.16,111.3 1 0 -github.com/ethereum/go-ethereum/trie/trie.go:118.51,120.30 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:123.2,123.19 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:120.30,122.3 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:126.116,127.32 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:128.11,129.30 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:130.17,131.26 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:132.18,133.80 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:137.3,138.31 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:142.3,142.35 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:143.17,145.31 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:149.3,149.35 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:150.16,152.17 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:155.3,156.35 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:157.10,158.65 1 0 -github.com/ethereum/go-ethereum/trie/trie.go:133.80,136.4 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:138.31,141.4 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:145.31,148.4 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:152.17,154.4 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:164.61,166.16 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:169.2,169.18 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:172.2,172.17 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:175.2,175.28 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:166.16,168.3 1 0 -github.com/ethereum/go-ethereum/trie/trie.go:169.18,171.3 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:172.17,174.3 1 0 -github.com/ethereum/go-ethereum/trie/trie.go:178.117,180.21 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:184.2,184.22 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:201.2,201.32 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:180.21,182.3 1 0 -github.com/ethereum/go-ethereum/trie/trie.go:184.22,189.42 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:194.3,194.18 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:197.3,198.32 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:189.42,191.4 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:191.9,193.4 1 0 -github.com/ethereum/go-ethereum/trie/trie.go:194.18,196.4 1 0 -github.com/ethereum/go-ethereum/trie/trie.go:202.17,204.26 1 0 -github.com/ethereum/go-ethereum/trie/trie.go:206.18,207.82 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:211.3,212.33 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:216.3,216.32 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:218.17,220.33 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:224.3,224.32 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:226.16,228.17 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:231.3,232.42 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:234.10,235.65 1 0 -github.com/ethereum/go-ethereum/trie/trie.go:207.82,210.4 1 0 -github.com/ethereum/go-ethereum/trie/trie.go:212.33,215.4 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:220.33,223.4 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:228.17,230.4 1 0 -github.com/ethereum/go-ethereum/trie/trie.go:245.42,246.48 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:246.48,248.3 1 0 -github.com/ethereum/go-ethereum/trie/trie.go:251.76,253.16 2 0 -github.com/ethereum/go-ethereum/trie/trie.go:256.2,256.31 1 0 -github.com/ethereum/go-ethereum/trie/trie.go:253.16,255.3 1 0 -github.com/ethereum/go-ethereum/trie/trie.go:267.51,270.21 3 1 -github.com/ethereum/go-ethereum/trie/trie.go:283.2,283.12 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:270.21,272.17 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:275.3,275.13 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:272.17,274.4 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:276.8,278.17 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:281.3,281.13 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:278.17,280.4 1 0 -github.com/ethereum/go-ethereum/trie/trie.go:286.83,287.19 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:293.2,293.23 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:287.19,288.33 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:291.3,291.26 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:288.33,290.4 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:294.18,298.29 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:306.3,309.17 4 1 -github.com/ethereum/go-ethereum/trie/trie.go:312.3,313.17 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:317.3,317.20 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:321.3,321.68 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:323.17,325.27 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:328.3,331.22 4 1 -github.com/ethereum/go-ethereum/trie/trie.go:333.11,334.56 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:336.16,341.17 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:344.3,345.27 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:348.3,348.23 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:350.10,351.51 1 0 -github.com/ethereum/go-ethereum/trie/trie.go:298.29,300.28 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:303.4,303.56 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:300.28,302.5 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:309.17,311.4 1 0 -github.com/ethereum/go-ethereum/trie/trie.go:313.17,315.4 1 0 -github.com/ethereum/go-ethereum/trie/trie.go:317.20,319.4 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:325.27,327.4 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:341.17,343.4 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:345.27,347.4 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:356.35,357.41 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:357.41,359.3 1 0 -github.com/ethereum/go-ethereum/trie/trie.go:364.44,368.16 4 1 -github.com/ethereum/go-ethereum/trie/trie.go:371.2,372.12 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:368.16,370.3 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:378.71,379.23 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:380.18,382.28 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:385.3,385.27 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:392.3,393.27 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:396.3,396.32 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:409.17,411.27 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:414.3,422.16 4 1 -github.com/ethereum/go-ethereum/trie/trie.go:435.3,436.35 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:446.3,446.15 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:468.3,468.22 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:470.17,471.24 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:473.11,474.25 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:476.16,481.17 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:484.3,485.27 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:488.3,488.23 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:490.10,491.61 1 0 -github.com/ethereum/go-ethereum/trie/trie.go:382.28,384.4 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:385.27,387.4 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:393.27,395.4 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:397.19,404.85 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:405.11,406.59 1 0 -github.com/ethereum/go-ethereum/trie/trie.go:411.27,413.4 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:422.16,424.4 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:436.35,437.18 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:437.18,438.18 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:438.18,440.6 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:440.11,442.11 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:446.15,447.17 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:465.4,465.81 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:447.17,455.19 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:458.5,458.44 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:455.19,457.6 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:458.44,461.6 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:481.17,483.4 1 0 -github.com/ethereum/go-ethereum/trie/trie.go:485.27,487.4 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:495.43,500.2 4 1 -github.com/ethereum/go-ethereum/trie/trie.go:502.61,503.31 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:506.2,506.15 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:503.31,505.3 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:509.69,511.42 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:514.2,514.61 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:511.42,513.3 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:517.71,520.20 3 1 -github.com/ethereum/go-ethereum/trie/trie.go:523.2,523.61 1 0 -github.com/ethereum/go-ethereum/trie/trie.go:520.20,522.3 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:528.35,532.2 3 1 -github.com/ethereum/go-ethereum/trie/trie.go:536.70,537.17 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:540.2,540.19 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:545.2,552.40 4 1 -github.com/ethereum/go-ethereum/trie/trie.go:555.2,556.19 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:565.2,566.19 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:574.2,574.16 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:577.2,578.33 2 1 -github.com/ethereum/go-ethereum/trie/trie.go:537.17,538.51 1 0 -github.com/ethereum/go-ethereum/trie/trie.go:540.19,542.3 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:552.40,554.3 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:556.19,560.13 4 0 -github.com/ethereum/go-ethereum/trie/trie.go:560.13,563.4 2 0 -github.com/ethereum/go-ethereum/trie/trie.go:566.19,573.3 2 0 -github.com/ethereum/go-ethereum/trie/trie.go:574.16,576.3 1 0 -github.com/ethereum/go-ethereum/trie/trie.go:582.47,583.19 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:587.2,591.28 5 1 -github.com/ethereum/go-ethereum/trie/trie.go:583.19,585.3 1 1 -github.com/ethereum/go-ethereum/trie/trie.go:595.24,598.2 2 0 -github.com/ethereum/go-ethereum/trie/committer.go:55.26,59.3 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:63.32,65.2 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:67.42,71.2 3 1 -github.com/ethereum/go-ethereum/trie/committer.go:74.73,75.15 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:78.2,79.16 2 1 -github.com/ethereum/go-ethereum/trie/committer.go:82.2,82.37 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:75.15,77.3 1 0 -github.com/ethereum/go-ethereum/trie/committer.go:79.16,81.3 1 0 -github.com/ethereum/go-ethereum/trie/committer.go:86.69,89.27 2 1 -github.com/ethereum/go-ethereum/trie/committer.go:93.2,93.24 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:89.27,91.3 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:94.18,101.38 3 1 -github.com/ethereum/go-ethereum/trie/committer.go:109.3,111.42 3 1 -github.com/ethereum/go-ethereum/trie/committer.go:114.3,114.40 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:115.17,117.17 2 1 -github.com/ethereum/go-ethereum/trie/committer.go:120.3,124.42 4 1 -github.com/ethereum/go-ethereum/trie/committer.go:127.3,127.40 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:128.16,129.20 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:130.10,132.51 1 0 -github.com/ethereum/go-ethereum/trie/committer.go:101.38,103.18 2 1 -github.com/ethereum/go-ethereum/trie/committer.go:106.4,106.53 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:103.18,105.5 1 0 -github.com/ethereum/go-ethereum/trie/committer.go:111.42,113.4 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:117.17,119.4 1 0 -github.com/ethereum/go-ethereum/trie/committer.go:124.42,126.4 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:137.86,142.26 2 1 -github.com/ethereum/go-ethereum/trie/committer.go:165.2,165.27 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:168.2,168.33 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:142.26,144.19 2 1 -github.com/ethereum/go-ethereum/trie/committer.go:150.3,150.37 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:157.3,158.17 2 1 -github.com/ethereum/go-ethereum/trie/committer.go:161.3,162.30 2 1 -github.com/ethereum/go-ethereum/trie/committer.go:144.19,145.12 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:150.37,152.12 2 1 -github.com/ethereum/go-ethereum/trie/committer.go:158.17,160.4 1 0 -github.com/ethereum/go-ethereum/trie/committer.go:165.27,167.3 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:174.54,180.17 2 1 -github.com/ethereum/go-ethereum/trie/committer.go:193.2,193.21 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:206.2,206.13 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:180.17,186.3 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:186.8,190.3 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:193.21,199.3 1 0 -github.com/ethereum/go-ethereum/trie/committer.go:199.8,199.22 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:199.22,205.3 3 1 -github.com/ethereum/go-ethereum/trie/committer.go:210.46,211.29 1 0 -github.com/ethereum/go-ethereum/trie/committer.go:211.29,222.22 5 0 -github.com/ethereum/go-ethereum/trie/committer.go:222.22,223.25 1 0 -github.com/ethereum/go-ethereum/trie/committer.go:224.20,225.43 1 0 -github.com/ethereum/go-ethereum/trie/committer.go:228.19,231.30 1 0 -github.com/ethereum/go-ethereum/trie/committer.go:225.43,227.6 1 0 -github.com/ethereum/go-ethereum/trie/committer.go:231.30,233.6 1 0 -github.com/ethereum/go-ethereum/trie/committer.go:239.56,245.2 5 0 -github.com/ethereum/go-ethereum/trie/committer.go:251.31,252.23 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:253.18,255.46 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:256.17,259.27 2 1 -github.com/ethereum/go-ethereum/trie/committer.go:266.3,266.11 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:267.17,268.20 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:269.16,270.20 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:271.10,272.40 1 0 -github.com/ethereum/go-ethereum/trie/committer.go:259.27,260.44 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:260.44,262.5 1 1 -github.com/ethereum/go-ethereum/trie/committer.go:262.10,264.5 1 1 -github.com/ethereum/go-ethereum/trie/errors.go:33.45,35.2 1 0 -github.com/ethereum/go-ethereum/trie/node_enc.go:23.33,29.2 5 1 -github.com/ethereum/go-ethereum/trie/node_enc.go:31.48,33.31 2 1 -github.com/ethereum/go-ethereum/trie/node_enc.go:40.2,40.19 1 1 -github.com/ethereum/go-ethereum/trie/node_enc.go:33.31,34.15 1 1 -github.com/ethereum/go-ethereum/trie/node_enc.go:34.15,36.4 1 1 -github.com/ethereum/go-ethereum/trie/node_enc.go:36.9,38.4 1 1 -github.com/ethereum/go-ethereum/trie/node_enc.go:43.49,46.18 3 1 -github.com/ethereum/go-ethereum/trie/node_enc.go:51.2,51.19 1 1 -github.com/ethereum/go-ethereum/trie/node_enc.go:46.18,48.3 1 1 -github.com/ethereum/go-ethereum/trie/node_enc.go:48.8,50.3 1 0 -github.com/ethereum/go-ethereum/trie/node_enc.go:54.47,56.2 1 1 -github.com/ethereum/go-ethereum/trie/node_enc.go:58.48,60.2 1 1 -github.com/ethereum/go-ethereum/trie/node_enc.go:62.50,64.22 2 1 -github.com/ethereum/go-ethereum/trie/node_enc.go:71.2,71.19 1 1 -github.com/ethereum/go-ethereum/trie/node_enc.go:64.22,65.15 1 1 -github.com/ethereum/go-ethereum/trie/node_enc.go:65.15,67.4 1 1 -github.com/ethereum/go-ethereum/trie/node_enc.go:67.9,69.4 1 1 -github.com/ethereum/go-ethereum/trie/node_enc.go:74.52,77.18 3 1 -github.com/ethereum/go-ethereum/trie/node_enc.go:82.2,82.19 1 1 -github.com/ethereum/go-ethereum/trie/node_enc.go:77.18,79.3 1 1 -github.com/ethereum/go-ethereum/trie/node_enc.go:79.8,81.3 1 0 -github.com/ethereum/go-ethereum/trie/node_enc.go:85.46,87.2 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:37.86,42.32 4 1 -github.com/ethereum/go-ethereum/trie/proof.go:68.2,71.26 3 1 -github.com/ethereum/go-ethereum/trie/proof.go:88.2,88.12 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:42.32,43.25 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:44.19,45.70 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:52.4,52.28 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:53.18,56.28 3 1 -github.com/ethereum/go-ethereum/trie/proof.go:57.17,60.18 3 0 -github.com/ethereum/go-ethereum/trie/proof.go:64.11,65.54 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:45.70,48.5 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:48.10,51.5 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:60.18,63.5 2 0 -github.com/ethereum/go-ethereum/trie/proof.go:71.26,72.20 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:76.3,78.46 3 1 -github.com/ethereum/go-ethereum/trie/proof.go:72.20,74.12 2 0 -github.com/ethereum/go-ethereum/trie/proof.go:78.46,82.11 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:85.4,85.26 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:82.11,84.5 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:98.92,100.2 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:105.108,108.20 3 1 -github.com/ethereum/go-ethereum/trie/proof.go:108.20,110.17 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:113.3,114.17 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:117.3,118.28 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:110.17,112.4 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:114.17,116.4 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:119.12,121.19 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:122.17,124.26 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:125.18,126.19 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:136.138,138.54 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:151.2,151.17 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:158.2,165.6 3 1 -github.com/ethereum/go-ethereum/trie/proof.go:138.54,140.17 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:143.3,144.17 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:147.3,147.16 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:140.17,142.4 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:144.17,146.4 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:151.17,153.17 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:156.3,156.11 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:153.17,155.4 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:165.6,167.30 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:192.3,192.33 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:200.3,200.23 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:203.3,203.31 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:168.12,173.24 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:176.4,176.68 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:177.19,179.12 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:180.18,182.12 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:183.17,185.18 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:188.18,189.17 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:173.24,175.5 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:185.18,187.5 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:193.19,194.21 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:195.18,196.34 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:197.11,198.60 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:200.23,202.4 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:218.69,234.6 3 1 -github.com/ethereum/go-ethereum/trie/proof.go:271.2,271.24 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:234.6,235.27 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:236.19,241.35 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:246.4,246.36 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:251.4,251.49 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:254.4,255.36 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:256.18,262.68 3 1 -github.com/ethereum/go-ethereum/trie/proof.go:265.4,266.42 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:267.11,268.52 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:241.35,243.5 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:243.10,245.5 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:246.36,248.5 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:248.10,250.5 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:251.49,252.19 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:262.68,263.19 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:272.18,279.50 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:282.3,282.48 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:285.3,285.48 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:294.3,294.26 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:305.3,305.25 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:316.3,316.20 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:317.17,319.47 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:322.3,322.81 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:325.3,325.82 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:328.3,328.20 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:329.10,330.51 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:279.50,281.4 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:282.48,284.4 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:285.48,287.21 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:290.4,291.21 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:287.21,289.5 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:294.26,295.39 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:303.4,303.67 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:295.39,297.22 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:300.5,301.22 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:297.22,299.6 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:305.25,306.39 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:314.4,314.67 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:306.39,308.22 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:311.5,312.22 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:308.22,310.6 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:319.47,321.4 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:322.81,324.4 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:325.82,327.4 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:346.81,347.29 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:348.17,349.17 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:360.3,360.68 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:361.18,362.88 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:391.3,391.39 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:396.3,397.64 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:398.11,401.13 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:402.10,403.31 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:349.17,350.39 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:353.4,353.37 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:350.39,352.5 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:354.9,355.39 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:358.4,358.37 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:355.39,357.5 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:362.88,364.18 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:389.4,389.14 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:364.18,365.46 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:365.46,371.6 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:371.12,375.6 0 0 -github.com/ethereum/go-ethereum/trie/proof.go:376.10,377.46 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:377.46,383.6 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:383.12,387.6 0 0 -github.com/ethereum/go-ethereum/trie/proof.go:391.39,395.4 3 1 -github.com/ethereum/go-ethereum/trie/proof.go:411.50,413.18 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:433.2,433.14 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:413.18,414.28 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:415.18,416.39 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:421.4,421.44 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:422.19,423.84 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:426.4,426.39 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:427.18,428.16 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:429.11,430.58 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:416.39,417.30 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:417.30,419.6 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:423.84,425.5 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:470.152,471.30 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:475.2,475.35 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:480.2,480.31 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:487.2,487.18 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:499.2,499.20 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:511.2,511.54 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:526.2,526.43 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:530.2,530.35 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:536.2,537.16 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:543.2,544.16 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:549.2,550.16 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:555.2,556.11 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:559.2,559.31 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:562.2,562.27 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:565.2,565.57 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:471.30,473.3 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:475.35,476.45 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:476.45,478.4 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:480.31,481.22 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:481.22,483.4 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:487.18,489.32 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:492.3,492.54 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:495.3,495.20 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:489.32,491.4 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:492.54,494.4 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:499.20,501.17 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:504.3,504.52 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:507.3,507.20 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:501.17,503.4 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:504.52,506.4 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:511.54,513.17 2 1 -github.com/ethereum/go-ethereum/trie/proof.go:516.3,516.38 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:519.3,519.35 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:522.3,522.46 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:513.17,515.4 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:516.38,518.4 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:519.35,521.4 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:526.43,528.3 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:530.35,532.3 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:537.16,539.3 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:544.16,546.3 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:550.16,552.3 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:556.11,558.3 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:559.31,561.3 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:562.27,564.3 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:573.65,574.6 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:574.6,575.25 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:576.19,577.70 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:580.4,582.21 3 1 -github.com/ethereum/go-ethereum/trie/proof.go:585.18,588.21 3 1 -github.com/ethereum/go-ethereum/trie/proof.go:591.17,592.17 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:593.12,594.19 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:595.18,596.17 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:597.11,598.54 1 0 -github.com/ethereum/go-ethereum/trie/proof.go:577.70,579.5 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:582.21,584.5 1 1 -github.com/ethereum/go-ethereum/trie/proof.go:588.21,590.5 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:36.26,38.3 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:41.60,45.2 3 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:47.34,50.2 2 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:64.55,69.2 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:72.78,74.49 2 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:78.2,78.15 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:81.2,81.17 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:74.49,76.3 1 0 -github.com/ethereum/go-ethereum/trie/stacktrie.go:78.15,80.3 1 0 -github.com/ethereum/go-ethereum/trie/stacktrie.go:85.63,98.17 2 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:101.2,101.36 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:113.2,114.23 2 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:98.17,100.3 1 0 -github.com/ethereum/go-ethereum/trie/stacktrie.go:101.36,102.19 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:106.3,107.58 2 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:102.19,104.12 2 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:107.58,109.4 1 0 -github.com/ethereum/go-ethereum/trie/stacktrie.go:109.9,111.4 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:118.57,121.2 2 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:123.57,135.29 7 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:145.2,145.12 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:135.29,136.45 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:141.3,143.26 3 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:136.45,138.4 1 0 -github.com/ethereum/go-ethereum/trie/stacktrie.go:138.9,138.30 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:138.30,139.12 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:148.53,150.36 2 0 -github.com/ethereum/go-ethereum/trie/stacktrie.go:150.36,151.19 1 0 -github.com/ethereum/go-ethereum/trie/stacktrie.go:151.19,153.4 1 0 -github.com/ethereum/go-ethereum/trie/stacktrie.go:157.67,163.2 5 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:165.79,171.2 5 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:183.57,185.21 2 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:188.2,189.12 2 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:185.21,186.34 1 0 -github.com/ethereum/go-ethereum/trie/stacktrie.go:192.48,193.49 1 0 -github.com/ethereum/go-ethereum/trie/stacktrie.go:193.49,195.3 1 0 -github.com/ethereum/go-ethereum/trie/stacktrie.go:198.30,202.29 4 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:205.2,205.25 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:202.29,204.3 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:211.51,212.34 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:217.2,217.20 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:212.34,213.25 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:213.25,215.4 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:222.48,223.21 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:224.18,227.33 2 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:237.3,237.30 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:242.15,251.29 2 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:261.3,262.30 2 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:270.3,272.19 3 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:288.3,295.28 6 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:297.16,307.29 2 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:314.3,315.19 2 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:332.3,342.15 7 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:344.17,347.17 3 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:349.18,350.38 1 0 -github.com/ethereum/go-ethereum/trie/stacktrie.go:352.10,353.24 1 0 -github.com/ethereum/go-ethereum/trie/stacktrie.go:227.33,228.29 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:228.29,229.46 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:232.5,232.10 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:229.46,231.6 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:237.30,239.4 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:239.9,241.4 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:251.29,256.4 2 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:262.30,264.4 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:264.9,268.4 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:272.19,279.4 3 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:279.9,286.4 3 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:307.29,308.47 1 0 -github.com/ethereum/go-ethereum/trie/stacktrie.go:315.19,320.4 3 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:320.9,327.4 4 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:367.29,372.2 3 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:374.46,378.21 2 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:441.2,443.27 3 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:450.2,451.18 2 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:379.18,380.9 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:382.17,386.9 4 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:388.18,390.37 2 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:408.3,409.38 2 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:411.15,416.35 4 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:422.3,427.23 4 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:429.16,435.38 5 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:437.10,438.29 1 0 -github.com/ethereum/go-ethereum/trie/stacktrie.go:390.37,391.20 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:396.4,397.27 2 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:404.4,405.23 2 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:391.20,393.13 2 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:397.27,399.5 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:399.10,401.5 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:416.35,418.4 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:418.9,420.4 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:443.27,446.3 2 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:451.18,455.3 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:459.45,464.23 4 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:472.2,475.10 4 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:464.23,467.3 2 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:485.58,486.18 1 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:490.2,494.23 4 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:502.2,506.15 5 1 -github.com/ethereum/go-ethereum/trie/stacktrie.go:486.18,488.3 1 0 -github.com/ethereum/go-ethereum/trie/stacktrie.go:494.23,497.3 2 1 -github.com/ethereum/go-ethereum/trie/sync.go:76.40,82.20 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:85.2,85.68 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:82.20,84.3 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:102.38,107.2 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:110.59,113.2 2 1 -github.com/ethereum/go-ethereum/trie/sync.go:116.59,119.2 2 0 -github.com/ethereum/go-ethereum/trie/sync.go:134.92,145.2 3 1 -github.com/ethereum/go-ethereum/trie/sync.go:148.101,150.23 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:153.2,153.30 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:158.2,158.41 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:162.2,168.31 2 1 -github.com/ethereum/go-ethereum/trie/sync.go:176.2,176.17 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:150.23,152.3 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:153.30,155.3 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:158.41,160.3 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:168.31,170.22 2 0 -github.com/ethereum/go-ethereum/trie/sync.go:173.3,174.46 2 0 -github.com/ethereum/go-ethereum/trie/sync.go:170.22,171.65 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:182.80,184.24 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:187.2,187.30 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:195.2,195.47 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:199.2,205.31 2 0 -github.com/ethereum/go-ethereum/trie/sync.go:213.2,213.17 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:184.24,186.3 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:187.30,189.3 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:195.47,197.3 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:205.31,207.22 2 0 -github.com/ethereum/go-ethereum/trie/sync.go:210.3,211.46 2 0 -github.com/ethereum/go-ethereum/trie/sync.go:207.22,208.66 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:219.94,225.78 2 1 -github.com/ethereum/go-ethereum/trie/sync.go:246.2,246.42 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:225.78,231.44 3 1 -github.com/ethereum/go-ethereum/trie/sync.go:235.3,239.38 4 1 -github.com/ethereum/go-ethereum/trie/sync.go:231.44,232.9 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:239.38,242.4 2 1 -github.com/ethereum/go-ethereum/trie/sync.go:242.9,244.4 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:255.49,257.70 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:261.2,262.67 2 1 -github.com/ethereum/go-ethereum/trie/sync.go:268.2,268.67 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:291.2,291.13 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:294.2,294.12 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:257.70,259.3 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:262.67,266.3 3 0 -github.com/ethereum/go-ethereum/trie/sync.go:268.67,272.17 3 1 -github.com/ethereum/go-ethereum/trie/sync.go:275.3,279.17 3 1 -github.com/ethereum/go-ethereum/trie/sync.go:282.3,282.42 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:272.17,274.4 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:279.17,281.4 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:282.42,284.4 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:284.9,286.35 2 1 -github.com/ethereum/go-ethereum/trie/sync.go:286.35,288.5 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:291.13,293.3 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:299.46,301.43 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:304.2,304.43 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:308.2,309.12 2 1 -github.com/ethereum/go-ethereum/trie/sync.go:301.43,303.3 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:304.43,306.3 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:313.30,315.2 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:320.39,322.14 2 1 -github.com/ethereum/go-ethereum/trie/sync.go:326.2,326.37 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:330.2,338.47 3 1 -github.com/ethereum/go-ethereum/trie/sync.go:341.2,341.30 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:322.14,324.3 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:326.37,329.3 2 0 -github.com/ethereum/go-ethereum/trie/sync.go:338.47,340.3 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:346.72,354.33 3 1 -github.com/ethereum/go-ethereum/trie/sync.go:377.2,378.33 2 1 -github.com/ethereum/go-ethereum/trie/sync.go:415.2,415.22 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:355.18,357.19 2 1 -github.com/ethereum/go-ethereum/trie/sync.go:360.3,363.5 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:364.17,365.27 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:373.10,374.48 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:357.19,359.4 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:365.27,366.31 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:366.31,371.5 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:378.33,380.26 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:395.3,395.46 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:380.26,381.48 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:381.48,383.47 2 0 -github.com/ethereum/go-ethereum/trie/sync.go:389.5,389.75 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:383.47,385.6 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:385.11,385.54 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:385.54,388.6 2 0 -github.com/ethereum/go-ethereum/trie/sync.go:389.75,391.6 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:395.46,398.32 2 1 -github.com/ethereum/go-ethereum/trie/sync.go:403.4,403.43 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:407.4,412.6 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:398.32,399.13 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:403.43,404.13 1 0 -github.com/ethereum/go-ethereum/trie/sync.go:421.49,423.14 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:433.2,433.37 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:441.2,441.12 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:423.14,427.3 3 0 -github.com/ethereum/go-ethereum/trie/sync.go:427.8,431.3 3 1 -github.com/ethereum/go-ethereum/trie/sync.go:433.37,435.23 2 1 -github.com/ethereum/go-ethereum/trie/sync.go:435.23,436.43 1 1 -github.com/ethereum/go-ethereum/trie/sync.go:436.43,438.5 1 0 -github.com/ethereum/go-ethereum/trie/database.go:99.45,99.95 1 0 -github.com/ethereum/go-ethereum/trie/database.go:100.45,100.95 1 0 -github.com/ethereum/go-ethereum/trie/database.go:102.47,105.2 2 0 -github.com/ethereum/go-ethereum/trie/database.go:112.49,112.99 1 0 -github.com/ethereum/go-ethereum/trie/database.go:113.49,113.99 1 0 -github.com/ethereum/go-ethereum/trie/database.go:115.51,119.2 3 0 -github.com/ethereum/go-ethereum/trie/database.go:129.50,129.100 1 0 -github.com/ethereum/go-ethereum/trie/database.go:130.50,130.100 1 0 -github.com/ethereum/go-ethereum/trie/database.go:156.35,157.38 1 1 -github.com/ethereum/go-ethereum/trie/database.go:160.2,160.28 1 1 -github.com/ethereum/go-ethereum/trie/database.go:157.38,159.3 1 0 -github.com/ethereum/go-ethereum/trie/database.go:165.49,166.38 1 1 -github.com/ethereum/go-ethereum/trie/database.go:169.2,169.36 1 1 -github.com/ethereum/go-ethereum/trie/database.go:166.38,168.3 1 0 -github.com/ethereum/go-ethereum/trie/database.go:175.64,176.32 1 1 -github.com/ethereum/go-ethereum/trie/database.go:179.2,179.36 1 1 -github.com/ethereum/go-ethereum/trie/database.go:176.32,178.3 1 0 -github.com/ethereum/go-ethereum/trie/database.go:179.36,181.3 1 1 -github.com/ethereum/go-ethereum/trie/database.go:186.64,187.23 1 1 -github.com/ethereum/go-ethereum/trie/database.go:188.21,189.36 1 1 -github.com/ethereum/go-ethereum/trie/database.go:190.19,191.27 1 1 -github.com/ethereum/go-ethereum/trie/database.go:194.16,195.33 1 1 -github.com/ethereum/go-ethereum/trie/database.go:196.31,196.31 0 1 -github.com/ethereum/go-ethereum/trie/database.go:197.10,198.49 1 0 -github.com/ethereum/go-ethereum/trie/database.go:191.27,193.4 1 1 -github.com/ethereum/go-ethereum/trie/database.go:204.32,205.23 1 1 -github.com/ethereum/go-ethereum/trie/database.go:206.18,208.61 1 1 -github.com/ethereum/go-ethereum/trie/database.go:210.17,213.34 2 1 -github.com/ethereum/go-ethereum/trie/database.go:218.3,218.14 1 1 -github.com/ethereum/go-ethereum/trie/database.go:220.36,221.11 1 1 -github.com/ethereum/go-ethereum/trie/database.go:223.10,224.49 1 0 -github.com/ethereum/go-ethereum/trie/database.go:213.34,214.22 1 1 -github.com/ethereum/go-ethereum/trie/database.go:214.22,216.5 1 1 -github.com/ethereum/go-ethereum/trie/database.go:230.45,231.23 1 1 -github.com/ethereum/go-ethereum/trie/database.go:232.21,240.4 1 1 -github.com/ethereum/go-ethereum/trie/database.go:242.19,249.43 2 1 -github.com/ethereum/go-ethereum/trie/database.go:254.3,254.14 1 1 -github.com/ethereum/go-ethereum/trie/database.go:256.27,257.11 1 1 -github.com/ethereum/go-ethereum/trie/database.go:259.10,260.49 1 0 -github.com/ethereum/go-ethereum/trie/database.go:249.43,250.19 1 1 -github.com/ethereum/go-ethereum/trie/database.go:250.19,252.5 1 1 -github.com/ethereum/go-ethereum/trie/database.go:274.56,276.2 1 1 -github.com/ethereum/go-ethereum/trie/database.go:281.82,283.39 2 1 -github.com/ethereum/go-ethereum/trie/database.go:290.2,297.39 2 1 -github.com/ethereum/go-ethereum/trie/database.go:300.2,300.11 1 1 -github.com/ethereum/go-ethereum/trie/database.go:283.39,284.27 1 0 -github.com/ethereum/go-ethereum/trie/database.go:284.27,286.4 1 0 -github.com/ethereum/go-ethereum/trie/database.go:286.9,288.4 1 0 -github.com/ethereum/go-ethereum/trie/database.go:297.39,299.3 1 1 -github.com/ethereum/go-ethereum/trie/database.go:304.50,306.2 1 0 -github.com/ethereum/go-ethereum/trie/database.go:312.67,314.35 1 1 -github.com/ethereum/go-ethereum/trie/database.go:317.2,325.42 3 1 -github.com/ethereum/go-ethereum/trie/database.go:330.2,333.34 2 1 -github.com/ethereum/go-ethereum/trie/database.go:338.2,338.70 1 1 -github.com/ethereum/go-ethereum/trie/database.go:314.35,316.3 1 1 -github.com/ethereum/go-ethereum/trie/database.go:325.42,326.39 1 1 -github.com/ethereum/go-ethereum/trie/database.go:326.39,328.4 1 1 -github.com/ethereum/go-ethereum/trie/database.go:333.34,335.3 1 1 -github.com/ethereum/go-ethereum/trie/database.go:335.8,337.3 1 1 -github.com/ethereum/go-ethereum/trie/database.go:346.71,348.25 1 1 -github.com/ethereum/go-ethereum/trie/database.go:352.2,352.37 1 1 -github.com/ethereum/go-ethereum/trie/database.go:355.2,356.75 2 1 -github.com/ethereum/go-ethereum/trie/database.go:348.25,350.3 1 0 -github.com/ethereum/go-ethereum/trie/database.go:352.37,354.3 1 1 -github.com/ethereum/go-ethereum/trie/database.go:361.49,363.22 1 1 -github.com/ethereum/go-ethereum/trie/database.go:371.2,375.18 4 1 -github.com/ethereum/go-ethereum/trie/database.go:380.2,384.30 3 1 -github.com/ethereum/go-ethereum/trie/database.go:387.2,387.22 1 1 -github.com/ethereum/go-ethereum/trie/database.go:392.2,392.37 1 1 -github.com/ethereum/go-ethereum/trie/database.go:363.22,364.53 1 0 -github.com/ethereum/go-ethereum/trie/database.go:364.53,368.4 3 0 -github.com/ethereum/go-ethereum/trie/database.go:375.18,379.3 3 1 -github.com/ethereum/go-ethereum/trie/database.go:384.30,386.3 1 1 -github.com/ethereum/go-ethereum/trie/database.go:387.22,391.3 3 0 -github.com/ethereum/go-ethereum/trie/database.go:397.60,399.29 1 1 -github.com/ethereum/go-ethereum/trie/database.go:403.2,403.22 1 1 -github.com/ethereum/go-ethereum/trie/database.go:411.2,415.18 4 1 -github.com/ethereum/go-ethereum/trie/database.go:420.2,424.19 3 1 -github.com/ethereum/go-ethereum/trie/database.go:432.2,432.37 1 0 -github.com/ethereum/go-ethereum/trie/database.go:399.29,401.3 1 1 -github.com/ethereum/go-ethereum/trie/database.go:403.22,404.53 1 0 -github.com/ethereum/go-ethereum/trie/database.go:404.53,408.4 3 0 -github.com/ethereum/go-ethereum/trie/database.go:415.18,419.3 3 1 -github.com/ethereum/go-ethereum/trie/database.go:424.19,425.23 1 1 -github.com/ethereum/go-ethereum/trie/database.go:430.3,430.18 1 1 -github.com/ethereum/go-ethereum/trie/database.go:425.23,429.4 3 0 -github.com/ethereum/go-ethereum/trie/database.go:437.55,439.25 1 0 -github.com/ethereum/go-ethereum/trie/database.go:443.2,447.21 4 0 -github.com/ethereum/go-ethereum/trie/database.go:450.2,450.44 1 0 -github.com/ethereum/go-ethereum/trie/database.go:439.25,441.3 1 0 -github.com/ethereum/go-ethereum/trie/database.go:447.21,449.3 1 0 -github.com/ethereum/go-ethereum/trie/database.go:456.43,461.31 4 1 -github.com/ethereum/go-ethereum/trie/database.go:466.2,466.15 1 1 -github.com/ethereum/go-ethereum/trie/database.go:461.31,462.30 1 1 -github.com/ethereum/go-ethereum/trie/database.go:462.30,464.4 1 1 -github.com/ethereum/go-ethereum/trie/database.go:473.70,478.2 3 0 -github.com/ethereum/go-ethereum/trie/database.go:481.70,484.9 2 0 -github.com/ethereum/go-ethereum/trie/database.go:488.2,488.40 1 0 -github.com/ethereum/go-ethereum/trie/database.go:494.2,496.45 3 0 -github.com/ethereum/go-ethereum/trie/database.go:484.9,486.3 1 0 -github.com/ethereum/go-ethereum/trie/database.go:488.40,491.3 2 0 -github.com/ethereum/go-ethereum/trie/database.go:491.8,491.88 1 0 -github.com/ethereum/go-ethereum/trie/database.go:491.88,493.3 1 0 -github.com/ethereum/go-ethereum/trie/database.go:496.45,498.3 1 0 -github.com/ethereum/go-ethereum/trie/database.go:502.51,504.29 1 0 -github.com/ethereum/go-ethereum/trie/database.go:508.2,523.125 11 0 -github.com/ethereum/go-ethereum/trie/database.go:504.29,507.3 2 0 -github.com/ethereum/go-ethereum/trie/database.go:527.72,531.54 2 0 -github.com/ethereum/go-ethereum/trie/database.go:539.2,540.9 2 0 -github.com/ethereum/go-ethereum/trie/database.go:544.2,544.22 1 0 -github.com/ethereum/go-ethereum/trie/database.go:551.2,551.23 1 0 -github.com/ethereum/go-ethereum/trie/database.go:531.54,533.32 2 0 -github.com/ethereum/go-ethereum/trie/database.go:533.32,536.4 2 0 -github.com/ethereum/go-ethereum/trie/database.go:540.9,542.3 1 0 -github.com/ethereum/go-ethereum/trie/database.go:544.22,550.3 1 0 -github.com/ethereum/go-ethereum/trie/database.go:551.23,553.16 1 0 -github.com/ethereum/go-ethereum/trie/database.go:565.3,565.41 1 0 -github.com/ethereum/go-ethereum/trie/database.go:568.3,570.27 3 0 -github.com/ethereum/go-ethereum/trie/database.go:554.18,556.56 2 0 -github.com/ethereum/go-ethereum/trie/database.go:557.18,559.56 2 0 -github.com/ethereum/go-ethereum/trie/database.go:560.11,562.57 2 0 -github.com/ethereum/go-ethereum/trie/database.go:565.41,567.4 1 0 -github.com/ethereum/go-ethereum/trie/database.go:570.27,572.4 1 0 -github.com/ethereum/go-ethereum/trie/database.go:581.57,598.20 6 1 -github.com/ethereum/go-ethereum/trie/database.go:612.2,613.48 2 1 -github.com/ethereum/go-ethereum/trie/database.go:636.2,636.38 1 1 -github.com/ethereum/go-ethereum/trie/database.go:641.2,644.20 3 1 -github.com/ethereum/go-ethereum/trie/database.go:651.2,651.26 1 1 -github.com/ethereum/go-ethereum/trie/database.go:661.2,661.34 1 1 -github.com/ethereum/go-ethereum/trie/database.go:664.2,675.12 8 1 -github.com/ethereum/go-ethereum/trie/database.go:598.20,599.26 1 0 -github.com/ethereum/go-ethereum/trie/database.go:599.26,601.4 1 0 -github.com/ethereum/go-ethereum/trie/database.go:601.9,603.48 2 0 -github.com/ethereum/go-ethereum/trie/database.go:603.48,604.41 1 0 -github.com/ethereum/go-ethereum/trie/database.go:607.5,607.18 1 0 -github.com/ethereum/go-ethereum/trie/database.go:604.41,606.6 1 0 -github.com/ethereum/go-ethereum/trie/database.go:613.48,619.48 3 1 -github.com/ethereum/go-ethereum/trie/database.go:629.3,630.27 2 1 -github.com/ethereum/go-ethereum/trie/database.go:633.3,633.26 1 1 -github.com/ethereum/go-ethereum/trie/database.go:619.48,620.40 1 1 -github.com/ethereum/go-ethereum/trie/database.go:624.4,624.17 1 1 -github.com/ethereum/go-ethereum/trie/database.go:620.40,623.5 2 0 -github.com/ethereum/go-ethereum/trie/database.go:630.27,632.4 1 0 -github.com/ethereum/go-ethereum/trie/database.go:636.38,639.3 2 0 -github.com/ethereum/go-ethereum/trie/database.go:644.20,645.26 1 0 -github.com/ethereum/go-ethereum/trie/database.go:645.26,647.4 1 0 -github.com/ethereum/go-ethereum/trie/database.go:647.9,649.4 1 0 -github.com/ethereum/go-ethereum/trie/database.go:651.26,657.27 5 1 -github.com/ethereum/go-ethereum/trie/database.go:657.27,659.4 1 0 -github.com/ethereum/go-ethereum/trie/database.go:661.34,663.3 1 0 -github.com/ethereum/go-ethereum/trie/database.go:684.93,693.25 3 1 -github.com/ethereum/go-ethereum/trie/database.go:703.2,706.67 3 1 -github.com/ethereum/go-ethereum/trie/database.go:711.2,711.38 1 1 -github.com/ethereum/go-ethereum/trie/database.go:716.2,723.25 5 1 -github.com/ethereum/go-ethereum/trie/database.go:726.2,731.13 5 1 -github.com/ethereum/go-ethereum/trie/database.go:734.2,741.12 4 1 -github.com/ethereum/go-ethereum/trie/database.go:693.25,697.39 2 1 -github.com/ethereum/go-ethereum/trie/database.go:700.3,700.16 1 1 -github.com/ethereum/go-ethereum/trie/database.go:697.39,699.4 1 0 -github.com/ethereum/go-ethereum/trie/database.go:706.67,709.3 2 0 -github.com/ethereum/go-ethereum/trie/database.go:711.38,714.3 2 0 -github.com/ethereum/go-ethereum/trie/database.go:723.25,725.3 1 1 -github.com/ethereum/go-ethereum/trie/database.go:731.13,733.3 1 1 -github.com/ethereum/go-ethereum/trie/database.go:745.118,748.9 2 1 -github.com/ethereum/go-ethereum/trie/database.go:751.2,752.41 2 1 -github.com/ethereum/go-ethereum/trie/database.go:757.2,757.16 1 1 -github.com/ethereum/go-ethereum/trie/database.go:761.2,762.21 2 1 -github.com/ethereum/go-ethereum/trie/database.go:765.2,765.47 1 1 -github.com/ethereum/go-ethereum/trie/database.go:774.2,774.12 1 1 -github.com/ethereum/go-ethereum/trie/database.go:748.9,750.3 1 1 -github.com/ethereum/go-ethereum/trie/database.go:752.41,753.17 1 1 -github.com/ethereum/go-ethereum/trie/database.go:753.17,755.4 1 1 -github.com/ethereum/go-ethereum/trie/database.go:757.16,759.3 1 0 -github.com/ethereum/go-ethereum/trie/database.go:762.21,764.3 1 1 -github.com/ethereum/go-ethereum/trie/database.go:765.47,766.39 1 0 -github.com/ethereum/go-ethereum/trie/database.go:769.3,772.19 4 0 -github.com/ethereum/go-ethereum/trie/database.go:766.39,768.4 1 0 -github.com/ethereum/go-ethereum/trie/database.go:788.53,793.9 3 1 -github.com/ethereum/go-ethereum/trie/database.go:797.2,797.14 1 1 -github.com/ethereum/go-ethereum/trie/database.go:809.2,811.26 3 1 -github.com/ethereum/go-ethereum/trie/database.go:815.2,815.24 1 1 -github.com/ethereum/go-ethereum/trie/database.go:819.2,819.12 1 1 -github.com/ethereum/go-ethereum/trie/database.go:793.9,795.3 1 0 -github.com/ethereum/go-ethereum/trie/database.go:798.19,800.57 2 1 -github.com/ethereum/go-ethereum/trie/database.go:801.19,803.57 2 0 -github.com/ethereum/go-ethereum/trie/database.go:804.10,806.58 2 0 -github.com/ethereum/go-ethereum/trie/database.go:811.26,813.3 1 0 -github.com/ethereum/go-ethereum/trie/database.go:815.24,818.3 2 0 -github.com/ethereum/go-ethereum/trie/database.go:822.44,823.26 1 0 -github.com/ethereum/go-ethereum/trie/database.go:828.69,838.2 5 0 -github.com/ethereum/go-ethereum/trie/database.go:842.62,843.22 1 0 -github.com/ethereum/go-ethereum/trie/database.go:846.2,850.16 4 0 -github.com/ethereum/go-ethereum/trie/database.go:854.2,855.12 2 0 -github.com/ethereum/go-ethereum/trie/database.go:843.22,845.3 1 0 -github.com/ethereum/go-ethereum/trie/database.go:850.16,853.3 2 0 -github.com/ethereum/go-ethereum/trie/database.go:860.49,862.2 1 0 -github.com/ethereum/go-ethereum/trie/database.go:866.103,870.6 3 0 -github.com/ethereum/go-ethereum/trie/database.go:870.6,871.10 1 0 -github.com/ethereum/go-ethereum/trie/database.go:872.19,873.24 1 0 -github.com/ethereum/go-ethereum/trie/database.go:874.17,875.10 1 0 -github.com/ethereum/go-ethereum/trie/encoding.go:37.38,39.18 2 1 -github.com/ethereum/go-ethereum/trie/encoding.go:43.2,45.21 3 1 -github.com/ethereum/go-ethereum/trie/encoding.go:50.2,51.12 2 1 -github.com/ethereum/go-ethereum/trie/encoding.go:39.18,42.3 2 1 -github.com/ethereum/go-ethereum/trie/encoding.go:45.21,49.3 3 1 -github.com/ethereum/go-ethereum/trie/encoding.go:56.42,62.39 2 1 -github.com/ethereum/go-ethereum/trie/encoding.go:66.2,71.19 2 1 -github.com/ethereum/go-ethereum/trie/encoding.go:76.2,76.41 1 1 -github.com/ethereum/go-ethereum/trie/encoding.go:79.2,80.15 2 1 -github.com/ethereum/go-ethereum/trie/encoding.go:62.39,65.3 2 1 -github.com/ethereum/go-ethereum/trie/encoding.go:71.19,75.3 3 1 -github.com/ethereum/go-ethereum/trie/encoding.go:76.41,78.3 1 1 -github.com/ethereum/go-ethereum/trie/encoding.go:83.42,84.23 1 1 -github.com/ethereum/go-ethereum/trie/encoding.go:87.2,89.17 2 1 -github.com/ethereum/go-ethereum/trie/encoding.go:93.2,94.20 2 1 -github.com/ethereum/go-ethereum/trie/encoding.go:84.23,86.3 1 1 -github.com/ethereum/go-ethereum/trie/encoding.go:89.17,91.3 1 1 -github.com/ethereum/go-ethereum/trie/encoding.go:97.39,100.24 3 1 -github.com/ethereum/go-ethereum/trie/encoding.go:104.2,105.16 2 1 -github.com/ethereum/go-ethereum/trie/encoding.go:100.24,103.3 2 1 -github.com/ethereum/go-ethereum/trie/encoding.go:110.39,111.18 1 1 -github.com/ethereum/go-ethereum/trie/encoding.go:114.2,114.21 1 1 -github.com/ethereum/go-ethereum/trie/encoding.go:117.2,119.12 3 1 -github.com/ethereum/go-ethereum/trie/encoding.go:111.18,113.3 1 1 -github.com/ethereum/go-ethereum/trie/encoding.go:114.21,115.47 1 0 -github.com/ethereum/go-ethereum/trie/encoding.go:122.50,123.61 1 1 -github.com/ethereum/go-ethereum/trie/encoding.go:123.61,125.3 1 1 -github.com/ethereum/go-ethereum/trie/encoding.go:129.33,131.21 2 1 -github.com/ethereum/go-ethereum/trie/encoding.go:134.2,134.24 1 1 -github.com/ethereum/go-ethereum/trie/encoding.go:139.2,139.10 1 1 -github.com/ethereum/go-ethereum/trie/encoding.go:131.21,133.3 1 1 -github.com/ethereum/go-ethereum/trie/encoding.go:134.24,135.19 1 1 -github.com/ethereum/go-ethereum/trie/encoding.go:135.19,136.9 1 1 -github.com/ethereum/go-ethereum/trie/encoding.go:143.29,145.2 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:38.26,44.3 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:47.39,51.2 3 1 -github.com/ethereum/go-ethereum/trie/hasher.go:53.36,55.2 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:59.70,61.39 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:65.2,65.23 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:61.39,63.3 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:66.18,71.38 3 1 -github.com/ethereum/go-ethereum/trie/hasher.go:76.3,76.24 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:77.17,80.38 3 1 -github.com/ethereum/go-ethereum/trie/hasher.go:85.3,85.24 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:86.10,88.14 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:71.38,73.4 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:73.9,75.4 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:80.38,82.4 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:82.9,84.4 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:95.85,103.22 3 1 -github.com/ethereum/go-ethereum/trie/hasher.go:107.2,107.26 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:104.29,105.51 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:110.92,114.16 3 1 -github.com/ethereum/go-ethereum/trie/hasher.go:139.2,139.26 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:114.16,117.27 3 1 -github.com/ethereum/go-ethereum/trie/hasher.go:129.3,129.12 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:117.27,118.19 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:118.19,120.45 2 1 -github.com/ethereum/go-ethereum/trie/hasher.go:125.5,126.14 2 1 -github.com/ethereum/go-ethereum/trie/hasher.go:120.45,122.6 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:122.11,124.6 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:130.8,131.27 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:131.27,132.44 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:132.44,134.5 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:134.10,136.5 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:146.65,150.29 3 1 -github.com/ethereum/go-ethereum/trie/hasher.go:153.2,153.24 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:150.29,152.3 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:158.63,162.29 3 1 -github.com/ethereum/go-ethereum/trie/hasher.go:165.2,165.24 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:162.29,164.3 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:178.40,182.2 3 1 -github.com/ethereum/go-ethereum/trie/hasher.go:185.49,191.2 5 1 -github.com/ethereum/go-ethereum/trie/hasher.go:197.68,198.30 1 1 -github.com/ethereum/go-ethereum/trie/hasher.go:199.18,201.42 2 1 -github.com/ethereum/go-ethereum/trie/hasher.go:202.17,204.41 2 1 -github.com/ethereum/go-ethereum/trie/hasher.go:205.10,207.14 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:40.45,44.2 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:47.33,48.27 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:55.2,58.14 4 1 -github.com/ethereum/go-ethereum/trie/iterator.go:48.27,49.23 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:49.23,53.4 3 1 -github.com/ethereum/go-ethereum/trie/iterator.go:63.38,65.2 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:152.35,154.2 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:156.61,157.30 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:163.2,165.11 3 1 -github.com/ethereum/go-ethereum/trie/iterator.go:157.30,162.3 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:168.68,170.2 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:172.44,173.24 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:176.2,176.39 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:173.24,175.3 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:179.46,180.24 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:183.2,183.41 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:180.24,182.3 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:186.37,188.2 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:190.42,191.23 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:196.2,196.22 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:191.23,192.62 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:192.62,194.4 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:199.43,200.23 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:205.2,205.22 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:200.23,201.65 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:201.65,203.4 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:208.46,209.23 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:225.2,225.22 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:209.23,210.62 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:210.62,215.52 4 1 -github.com/ethereum/go-ethereum/trie/iterator.go:222.4,222.17 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:215.52,218.49 2 1 -github.com/ethereum/go-ethereum/trie/iterator.go:218.49,220.6 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:228.39,230.2 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:232.43,233.34 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:236.2,237.16 2 1 -github.com/ethereum/go-ethereum/trie/iterator.go:241.2,241.13 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:233.34,235.3 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:237.16,240.3 2 0 -github.com/ethereum/go-ethereum/trie/iterator.go:244.39,245.30 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:248.2,248.40 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:251.2,251.15 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:245.30,247.3 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:248.40,250.3 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:258.49,259.30 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:262.2,262.40 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:268.2,270.19 3 1 -github.com/ethereum/go-ethereum/trie/iterator.go:273.2,274.13 2 1 -github.com/ethereum/go-ethereum/trie/iterator.go:259.30,261.3 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:262.40,263.48 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:263.48,265.4 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:270.19,272.3 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:277.51,282.6 3 1 -github.com/ethereum/go-ethereum/trie/iterator.go:282.6,284.28 2 1 -github.com/ethereum/go-ethereum/trie/iterator.go:291.3,291.36 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:284.28,286.4 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:286.9,286.24 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:286.24,288.4 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:288.9,288.43 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:288.43,290.4 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:296.60,299.23 3 1 -github.com/ethereum/go-ethereum/trie/iterator.go:302.2,302.38 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:299.23,301.3 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:306.86,308.24 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:312.2,312.14 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:318.2,318.24 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:334.2,334.38 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:308.24,311.3 2 1 -github.com/ethereum/go-ethereum/trie/iterator.go:312.14,315.3 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:318.24,321.34 3 1 -github.com/ethereum/go-ethereum/trie/iterator.go:324.3,325.9 2 1 -github.com/ethereum/go-ethereum/trie/iterator.go:332.3,332.11 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:321.34,323.4 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:325.9,326.50 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:329.4,329.42 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:326.50,328.5 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:339.92,341.24 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:345.2,345.40 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:351.2,351.24 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:367.2,367.38 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:341.24,344.3 2 1 -github.com/ethereum/go-ethereum/trie/iterator.go:345.40,348.3 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:351.24,354.34 3 1 -github.com/ethereum/go-ethereum/trie/iterator.go:357.3,358.9 2 1 -github.com/ethereum/go-ethereum/trie/iterator.go:365.3,365.11 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:354.34,356.4 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:358.9,359.50 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:362.4,362.42 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:359.50,361.5 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:370.79,371.24 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:378.2,379.22 2 1 -github.com/ethereum/go-ethereum/trie/iterator.go:371.24,372.70 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:372.70,373.59 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:373.59,375.5 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:382.81,383.24 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:388.2,388.40 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:383.24,384.70 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:384.70,386.4 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:391.75,392.40 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:400.2,400.12 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:392.40,394.17 2 1 -github.com/ethereum/go-ethereum/trie/iterator.go:397.3,398.37 2 1 -github.com/ethereum/go-ethereum/trie/iterator.go:394.17,396.4 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:403.115,409.41 2 1 -github.com/ethereum/go-ethereum/trie/iterator.go:425.2,425.25 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:409.41,410.31 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:410.31,423.4 6 1 -github.com/ethereum/go-ethereum/trie/iterator.go:428.119,429.36 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:451.2,451.31 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:430.17,432.100 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:436.18,438.23 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:432.100,435.4 2 1 -github.com/ethereum/go-ethereum/trie/iterator.go:438.23,449.4 4 1 -github.com/ethereum/go-ethereum/trie/iterator.go:456.133,457.33 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:497.2,497.31 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:458.17,461.19 2 1 -github.com/ethereum/go-ethereum/trie/iterator.go:466.3,466.36 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:471.3,471.7 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:482.18,484.23 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:461.19,464.4 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:466.36,469.4 2 1 -github.com/ethereum/go-ethereum/trie/iterator.go:471.7,475.61 2 1 -github.com/ethereum/go-ethereum/trie/iterator.go:480.4,480.55 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:475.61,478.5 2 1 -github.com/ethereum/go-ethereum/trie/iterator.go:484.23,495.4 4 1 -github.com/ethereum/go-ethereum/trie/iterator.go:500.87,503.24 3 1 -github.com/ethereum/go-ethereum/trie/iterator.go:503.24,505.3 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:508.31,513.2 4 1 -github.com/ethereum/go-ethereum/trie/iterator.go:515.42,516.56 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:519.2,519.27 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:524.2,524.72 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:527.2,527.26 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:530.2,530.10 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:516.56,518.3 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:519.27,521.3 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:521.8,521.34 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:521.34,523.3 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:524.72,526.3 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:527.26,529.3 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:542.68,549.2 3 1 -github.com/ethereum/go-ethereum/trie/iterator.go:551.50,553.2 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:555.52,557.2 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:559.43,561.2 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:563.48,565.2 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:567.49,569.2 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:571.52,573.2 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:575.45,577.2 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:579.49,581.2 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:583.74,584.26 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:587.47,591.22 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:594.2,596.12 2 1 -github.com/ethereum/go-ethereum/trie/iterator.go:601.2,601.6 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:591.22,593.3 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:596.12,599.3 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:601.6,602.35 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:603.11,605.24 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:609.4,609.14 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:610.10,612.15 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:613.10,616.27 2 1 -github.com/ethereum/go-ethereum/trie/iterator.go:619.4,620.27 2 1 -github.com/ethereum/go-ethereum/trie/iterator.go:624.4,624.14 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:605.24,608.5 2 0 -github.com/ethereum/go-ethereum/trie/iterator.go:616.27,618.5 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:620.27,623.5 2 1 -github.com/ethereum/go-ethereum/trie/iterator.go:629.45,630.37 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:633.2,633.21 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:630.37,632.3 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:638.48,638.65 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:639.48,639.87 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:640.48,640.75 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:641.48,641.85 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:642.46,647.2 4 1 -github.com/ethereum/go-ethereum/trie/iterator.go:657.66,664.2 5 1 -github.com/ethereum/go-ethereum/trie/iterator.go:666.45,668.2 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:670.47,672.2 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:674.38,676.2 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:678.43,680.2 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:682.44,684.2 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:686.47,688.2 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:690.40,692.2 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:694.44,696.2 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:698.69,699.26 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:716.50,717.25 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:722.2,726.141 2 1 -github.com/ethereum/go-ethereum/trie/iterator.go:735.2,735.25 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:739.2,739.27 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:717.25,719.3 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:726.141,729.52 2 1 -github.com/ethereum/go-ethereum/trie/iterator.go:729.52,733.4 2 1 -github.com/ethereum/go-ethereum/trie/iterator.go:735.25,738.3 2 1 -github.com/ethereum/go-ethereum/trie/iterator.go:742.40,743.38 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:748.2,748.12 1 1 -github.com/ethereum/go-ethereum/trie/iterator.go:743.38,744.48 1 0 -github.com/ethereum/go-ethereum/trie/iterator.go:744.48,746.4 1 0 -github.com/ethereum/go-ethereum/trie/node.go:55.49,59.2 3 0 -github.com/ethereum/go-ethereum/trie/node.go:61.39,61.67 2 1 -github.com/ethereum/go-ethereum/trie/node.go:62.39,62.67 2 1 -github.com/ethereum/go-ethereum/trie/node.go:70.46,70.84 1 1 -github.com/ethereum/go-ethereum/trie/node.go:71.46,71.84 1 1 -github.com/ethereum/go-ethereum/trie/node.go:72.46,72.66 1 1 -github.com/ethereum/go-ethereum/trie/node.go:73.46,73.66 1 1 -github.com/ethereum/go-ethereum/trie/node.go:76.37,76.61 1 0 -github.com/ethereum/go-ethereum/trie/node.go:77.37,77.61 1 0 -github.com/ethereum/go-ethereum/trie/node.go:78.37,78.61 1 0 -github.com/ethereum/go-ethereum/trie/node.go:79.37,79.61 1 0 -github.com/ethereum/go-ethereum/trie/node.go:81.47,83.35 2 0 -github.com/ethereum/go-ethereum/trie/node.go:90.2,90.42 1 0 -github.com/ethereum/go-ethereum/trie/node.go:83.35,84.18 1 0 -github.com/ethereum/go-ethereum/trie/node.go:84.18,86.4 1 0 -github.com/ethereum/go-ethereum/trie/node.go:86.9,88.4 1 0 -github.com/ethereum/go-ethereum/trie/node.go:92.48,94.2 1 0 -github.com/ethereum/go-ethereum/trie/node.go:95.46,97.2 1 0 -github.com/ethereum/go-ethereum/trie/node.go:98.47,100.2 1 0 -github.com/ethereum/go-ethereum/trie/node.go:102.44,104.16 2 1 -github.com/ethereum/go-ethereum/trie/node.go:107.2,107.10 1 1 -github.com/ethereum/go-ethereum/trie/node.go:104.16,105.47 1 0 -github.com/ethereum/go-ethereum/trie/node.go:111.49,112.19 1 1 -github.com/ethereum/go-ethereum/trie/node.go:115.2,116.16 2 1 -github.com/ethereum/go-ethereum/trie/node.go:119.2,119.43 1 1 -github.com/ethereum/go-ethereum/trie/node.go:112.19,114.3 1 0 -github.com/ethereum/go-ethereum/trie/node.go:116.16,118.3 1 1 -github.com/ethereum/go-ethereum/trie/node.go:120.9,122.36 2 1 -github.com/ethereum/go-ethereum/trie/node.go:123.10,125.35 2 1 -github.com/ethereum/go-ethereum/trie/node.go:126.10,127.67 1 1 -github.com/ethereum/go-ethereum/trie/node.go:131.52,133.16 2 1 -github.com/ethereum/go-ethereum/trie/node.go:136.2,138.18 3 1 -github.com/ethereum/go-ethereum/trie/node.go:146.2,147.16 2 1 -github.com/ethereum/go-ethereum/trie/node.go:150.2,150.38 1 1 -github.com/ethereum/go-ethereum/trie/node.go:133.16,135.3 1 1 -github.com/ethereum/go-ethereum/trie/node.go:138.18,141.17 2 1 -github.com/ethereum/go-ethereum/trie/node.go:144.3,144.65 1 1 -github.com/ethereum/go-ethereum/trie/node.go:141.17,143.4 1 1 -github.com/ethereum/go-ethereum/trie/node.go:147.16,149.3 1 1 -github.com/ethereum/go-ethereum/trie/node.go:153.56,155.26 2 1 -github.com/ethereum/go-ethereum/trie/node.go:162.2,163.16 2 1 -github.com/ethereum/go-ethereum/trie/node.go:166.2,166.18 1 1 -github.com/ethereum/go-ethereum/trie/node.go:169.2,169.15 1 1 -github.com/ethereum/go-ethereum/trie/node.go:155.26,157.17 2 1 -github.com/ethereum/go-ethereum/trie/node.go:160.3,160.35 1 1 -github.com/ethereum/go-ethereum/trie/node.go:157.17,159.4 1 1 -github.com/ethereum/go-ethereum/trie/node.go:163.16,165.3 1 0 -github.com/ethereum/go-ethereum/trie/node.go:166.18,168.3 1 1 -github.com/ethereum/go-ethereum/trie/node.go:174.50,176.16 2 1 -github.com/ethereum/go-ethereum/trie/node.go:179.2,179.9 1 1 -github.com/ethereum/go-ethereum/trie/node.go:176.16,178.3 1 0 -github.com/ethereum/go-ethereum/trie/node.go:180.24,183.51 1 1 -github.com/ethereum/go-ethereum/trie/node.go:187.3,188.22 2 1 -github.com/ethereum/go-ethereum/trie/node.go:189.43,191.24 1 1 -github.com/ethereum/go-ethereum/trie/node.go:192.44,193.47 1 1 -github.com/ethereum/go-ethereum/trie/node.go:194.10,195.85 1 1 -github.com/ethereum/go-ethereum/trie/node.go:183.51,186.4 2 1 -github.com/ethereum/go-ethereum/trie/node.go:206.45,207.16 1 1 -github.com/ethereum/go-ethereum/trie/node.go:210.2,210.42 1 1 -github.com/ethereum/go-ethereum/trie/node.go:214.2,214.41 1 1 -github.com/ethereum/go-ethereum/trie/node.go:207.16,209.3 1 1 -github.com/ethereum/go-ethereum/trie/node.go:210.42,213.3 2 1 -github.com/ethereum/go-ethereum/trie/node.go:217.40,219.2 1 0 -github.com/ethereum/go-ethereum/trie/secure_trie.go:56.69,57.15 1 1 -github.com/ethereum/go-ethereum/trie/secure_trie.go:60.2,61.16 2 1 -github.com/ethereum/go-ethereum/trie/secure_trie.go:64.2,64.38 1 1 -github.com/ethereum/go-ethereum/trie/secure_trie.go:57.15,58.52 1 0 -github.com/ethereum/go-ethereum/trie/secure_trie.go:61.16,63.3 1 1 -github.com/ethereum/go-ethereum/trie/secure_trie.go:69.45,71.16 2 1 -github.com/ethereum/go-ethereum/trie/secure_trie.go:74.2,74.12 1 1 -github.com/ethereum/go-ethereum/trie/secure_trie.go:71.16,73.3 1 0 -github.com/ethereum/go-ethereum/trie/secure_trie.go:80.57,82.2 1 1 -github.com/ethereum/go-ethereum/trie/secure_trie.go:86.67,88.2 1 1 -github.com/ethereum/go-ethereum/trie/secure_trie.go:92.82,95.16 3 0 -github.com/ethereum/go-ethereum/trie/secure_trie.go:98.2,98.51 1 0 -github.com/ethereum/go-ethereum/trie/secure_trie.go:101.2,102.12 2 0 -github.com/ethereum/go-ethereum/trie/secure_trie.go:95.16,97.3 1 0 -github.com/ethereum/go-ethereum/trie/secure_trie.go:98.51,100.3 1 0 -github.com/ethereum/go-ethereum/trie/secure_trie.go:111.48,112.48 1 1 -github.com/ethereum/go-ethereum/trie/secure_trie.go:112.48,114.3 1 0 -github.com/ethereum/go-ethereum/trie/secure_trie.go:125.57,128.16 3 1 -github.com/ethereum/go-ethereum/trie/secure_trie.go:131.2,132.12 2 1 -github.com/ethereum/go-ethereum/trie/secure_trie.go:128.16,130.3 1 0 -github.com/ethereum/go-ethereum/trie/secure_trie.go:136.41,137.41 1 1 -github.com/ethereum/go-ethereum/trie/secure_trie.go:137.41,139.3 1 0 -github.com/ethereum/go-ethereum/trie/secure_trie.go:144.50,148.2 3 1 -github.com/ethereum/go-ethereum/trie/secure_trie.go:152.51,153.55 1 1 -github.com/ethereum/go-ethereum/trie/secure_trie.go:156.2,156.55 1 0 -github.com/ethereum/go-ethereum/trie/secure_trie.go:153.55,155.3 1 1 -github.com/ethereum/go-ethereum/trie/secure_trie.go:164.76,166.33 1 1 -github.com/ethereum/go-ethereum/trie/secure_trie.go:177.2,177.30 1 1 -github.com/ethereum/go-ethereum/trie/secure_trie.go:166.33,167.33 1 1 -github.com/ethereum/go-ethereum/trie/secure_trie.go:174.3,174.42 1 1 -github.com/ethereum/go-ethereum/trie/secure_trie.go:167.33,169.39 2 1 -github.com/ethereum/go-ethereum/trie/secure_trie.go:172.4,172.27 1 1 -github.com/ethereum/go-ethereum/trie/secure_trie.go:169.39,171.5 1 1 -github.com/ethereum/go-ethereum/trie/secure_trie.go:182.41,184.2 1 1 -github.com/ethereum/go-ethereum/trie/secure_trie.go:187.41,190.2 2 0 -github.com/ethereum/go-ethereum/trie/secure_trie.go:194.62,196.2 1 1 -github.com/ethereum/go-ethereum/trie/secure_trie.go:201.49,208.2 6 1 -github.com/ethereum/go-ethereum/trie/secure_trie.go:213.57,214.29 1 1 -github.com/ethereum/go-ethereum/trie/secure_trie.go:218.2,218.22 1 1 -github.com/ethereum/go-ethereum/trie/secure_trie.go:214.29,217.3 2 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:42.87,57.2 3 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:60.39,61.19 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:63.2,63.39 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:61.20,62.3 0 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:68.34,69.24 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:88.2,88.14 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:69.24,70.10 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:71.30,73.28 2 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:80.4,81.31 2 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:84.22,85.17 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:73.28,74.37 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:74.37,78.6 3 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:81.31,83.5 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:91.30,92.21 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:96.2,97.22 2 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:92.21,95.3 2 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:100.39,101.25 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:106.2,106.22 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:120.2,120.68 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:129.2,129.23 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:101.25,103.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:106.22,111.32 2 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:114.3,116.14 3 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:111.32,113.4 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:120.68,122.24 2 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:122.24,126.4 3 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:132.30,135.9 3 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:136.17,136.17 0 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:137.25,137.25 0 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:141.56,144.22 3 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:166.2,166.22 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:169.2,169.12 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:144.22,148.3 2 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:148.8,148.24 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:148.24,154.79 4 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:158.3,158.104 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:154.79,157.4 2 0 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:159.8,159.22 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:159.22,162.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:166.22,168.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:184.78,187.2 2 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:190.46,191.25 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:194.2,194.33 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:191.25,193.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:198.39,200.24 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:204.2,204.26 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:220.2,220.13 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:200.24,202.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:204.26,205.26 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:210.3,210.23 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:214.3,214.27 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:218.3,218.36 1 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:205.26,209.4 3 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:210.23,212.12 2 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:214.27,216.12 2 1 -github.com/ethereum/go-ethereum/p2p/discover/lookup.go:224.35,226.2 1 1 -github.com/ethereum/go-ethereum/p2p/discover/node.go:42.51,47.2 4 1 -github.com/ethereum/go-ethereum/p2p/discover/node.go:49.77,50.32 1 1 -github.com/ethereum/go-ethereum/p2p/discover/node.go:53.2,57.34 5 1 -github.com/ethereum/go-ethereum/p2p/discover/node.go:60.2,60.15 1 1 -github.com/ethereum/go-ethereum/p2p/discover/node.go:50.32,52.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/node.go:57.34,59.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/node.go:63.34,65.2 1 1 -github.com/ethereum/go-ethereum/p2p/discover/node.go:67.36,69.2 1 1 -github.com/ethereum/go-ethereum/p2p/discover/node.go:71.42,73.23 2 1 -github.com/ethereum/go-ethereum/p2p/discover/node.go:76.2,76.15 1 1 -github.com/ethereum/go-ethereum/p2p/discover/node.go:73.23,75.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/node.go:79.38,81.2 1 1 -github.com/ethereum/go-ethereum/p2p/discover/node.go:83.44,85.23 2 1 -github.com/ethereum/go-ethereum/p2p/discover/node.go:88.2,88.15 1 1 -github.com/ethereum/go-ethereum/p2p/discover/node.go:85.23,87.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/node.go:91.36,93.2 1 1 -github.com/ethereum/go-ethereum/p2p/discover/node.go:95.32,97.2 1 0 -github.com/ethereum/go-ethereum/p2p/discover/ntp.go:40.44,40.61 1 0 -github.com/ethereum/go-ethereum/p2p/discover/ntp.go:41.44,41.66 1 0 -github.com/ethereum/go-ethereum/p2p/discover/ntp.go:42.44,42.71 1 0 -github.com/ethereum/go-ethereum/p2p/discover/ntp.go:46.24,48.16 2 0 -github.com/ethereum/go-ethereum/p2p/discover/ntp.go:51.2,51.55 1 0 -github.com/ethereum/go-ethereum/p2p/discover/ntp.go:48.16,50.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/ntp.go:51.55,54.3 2 0 -github.com/ethereum/go-ethereum/p2p/discover/ntp.go:54.8,56.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/ntp.go:65.57,68.16 2 0 -github.com/ethereum/go-ethereum/p2p/discover/ntp.go:74.2,79.38 4 0 -github.com/ethereum/go-ethereum/p2p/discover/ntp.go:112.2,115.37 3 0 -github.com/ethereum/go-ethereum/p2p/discover/ntp.go:118.2,118.49 1 0 -github.com/ethereum/go-ethereum/p2p/discover/ntp.go:68.16,70.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/ntp.go:79.38,82.17 2 0 -github.com/ethereum/go-ethereum/p2p/discover/ntp.go:85.3,88.47 3 0 -github.com/ethereum/go-ethereum/p2p/discover/ntp.go:92.3,95.44 3 0 -github.com/ethereum/go-ethereum/p2p/discover/ntp.go:98.3,109.49 6 0 -github.com/ethereum/go-ethereum/p2p/discover/ntp.go:82.17,84.4 1 0 -github.com/ethereum/go-ethereum/p2p/discover/ntp.go:88.47,90.4 1 0 -github.com/ethereum/go-ethereum/p2p/discover/ntp.go:95.44,97.4 1 0 -github.com/ethereum/go-ethereum/p2p/discover/ntp.go:115.37,117.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/table.go:102.99,114.56 2 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:117.2,117.29 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:122.2,125.17 3 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:114.56,116.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/table.go:117.29,121.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:128.38,130.2 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:132.30,139.2 5 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:143.62,144.23 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:147.2,151.33 4 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:157.2,157.34 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:161.2,161.25 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:144.23,146.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/table.go:151.33,152.31 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:152.31,154.4 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:157.34,160.3 2 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:165.52,170.30 4 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:175.2,175.12 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:170.30,171.19 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:171.19,173.4 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:179.27,182.2 2 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:187.63,188.26 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:193.2,194.12 2 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:188.26,189.46 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:189.46,191.4 1 0 -github.com/ethereum/go-ethereum/p2p/discover/table.go:198.37,199.9 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:200.22,201.14 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:202.10,203.15 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:207.45,209.9 2 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:214.2,214.13 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:210.30,210.30 0 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:211.22,212.14 1 0 -github.com/ethereum/go-ethereum/p2p/discover/table.go:218.26,235.6 6 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:267.2,267.24 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:270.2,270.29 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:273.2,273.27 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:276.2,276.19 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:235.6,236.10 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:237.20,239.26 2 0 -github.com/ethereum/go-ethereum/p2p/discover/table.go:243.32,245.26 2 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:249.22,250.31 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:253.4,253.35 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:254.23,256.39 2 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:257.25,259.24 2 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:260.22,261.26 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:262.23,263.14 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:239.26,242.5 2 0 -github.com/ethereum/go-ethereum/p2p/discover/table.go:245.26,248.5 2 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:250.31,252.5 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:267.24,269.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:270.29,272.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:273.27,275.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:281.49,298.25 4 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:298.25,300.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:303.35,306.23 3 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:306.23,308.42 2 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:309.3,310.24 2 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:308.42,308.110 1 0 -github.com/ethereum/go-ethereum/p2p/discover/table.go:316.54,317.15 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:319.2,320.17 2 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:326.2,329.28 2 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:338.2,341.16 4 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:350.2,350.41 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:317.15,317.37 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:320.17,323.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:329.28,331.17 2 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:331.17,333.4 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:333.9,335.4 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:341.16,347.3 4 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:350.41,352.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:352.8,354.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:358.56,362.52 3 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:369.2,369.15 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:362.52,364.25 2 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:364.25,367.4 2 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:372.54,377.2 3 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:381.35,386.33 4 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:386.33,387.31 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:387.31,388.70 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:388.70,390.5 1 0 -github.com/ethereum/go-ethereum/p2p/discover/table.go:402.97,411.33 5 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:420.2,420.46 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:423.2,423.14 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:411.33,412.31 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:412.31,414.42 2 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:414.42,416.5 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:420.46,422.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:427.33,431.33 3 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:434.2,434.10 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:431.33,433.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:438.46,443.2 3 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:446.47,449.2 2 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:451.51,452.28 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:455.2,455.43 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:452.28,454.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:463.40,464.31 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:468.2,471.33 4 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:475.2,475.34 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:480.2,480.27 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:485.2,488.30 4 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:464.31,466.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:471.33,474.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:475.34,479.3 2 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:480.27,483.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:488.30,490.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/table.go:502.44,503.23 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:506.2,506.31 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:510.2,513.28 4 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:517.2,517.34 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:522.2,522.27 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:527.2,530.30 4 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:503.23,505.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:506.31,508.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/table.go:513.28,516.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:517.34,521.3 2 0 -github.com/ethereum/go-ethereum/p2p/discover/table.go:522.27,525.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/table.go:530.30,532.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:536.38,541.2 3 0 -github.com/ethereum/go-ethereum/p2p/discover/table.go:543.52,544.18 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:547.2,547.23 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:550.2,550.22 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:554.2,554.20 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:559.2,559.13 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:544.18,546.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/table.go:547.23,549.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:550.22,553.3 2 0 -github.com/ethereum/go-ethereum/p2p/discover/table.go:554.20,558.3 3 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:562.50,563.23 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:566.2,567.18 2 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:563.23,565.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:570.54,571.35 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:576.2,576.27 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:579.2,581.20 3 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:571.35,572.23 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:572.23,574.4 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:576.27,578.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:581.20,583.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:589.56,590.74 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:595.2,595.30 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:599.2,603.10 5 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:590.74,593.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/table.go:595.30,598.3 2 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:608.57,609.27 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:626.2,626.14 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:609.27,610.34 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:610.34,611.40 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:621.4,623.15 3 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:611.40,614.30 2 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:614.30,618.6 2 0 -github.com/ethereum/go-ethereum/p2p/discover/table.go:629.54,632.2 2 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:634.45,635.23 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:640.2,640.14 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:635.23,636.19 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:636.19,638.4 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:644.64,645.21 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:648.2,651.22 4 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:645.21,647.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:655.48,656.22 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:661.2,661.13 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:656.22,657.29 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:657.29,659.4 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:671.55,672.53 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:675.2,675.31 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:678.2,678.26 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:672.53,674.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:675.31,677.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:678.27,681.3 0 1 -github.com/ethereum/go-ethereum/p2p/discover/table.go:681.8,686.3 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:129.75,146.16 5 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:149.2,155.15 6 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:146.16,148.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:159.36,161.2 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:164.25,165.24 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:165.24,170.3 4 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:175.52,177.44 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:181.2,181.81 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:188.2,189.25 2 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:192.2,193.28 2 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:200.2,200.10 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:177.44,179.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:181.81,183.45 2 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:183.45,185.4 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:189.25,191.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:193.28,194.24 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:194.24,195.47 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:195.47,197.5 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:203.47,207.2 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:210.43,213.2 2 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:216.61,218.33 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:221.2,221.17 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:218.33,220.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:226.93,229.16 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:236.2,236.109 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:244.2,246.11 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:229.16,233.3 3 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:236.109,238.33 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:241.3,241.26 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:238.33,240.4 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:249.60,257.2 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:260.66,261.22 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:266.2,266.57 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:261.22,265.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:270.46,272.2 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:275.46,277.2 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:280.44,282.2 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:284.62,288.2 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:290.77,293.69 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:296.2,296.11 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:293.69,295.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:301.101,308.114 4 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:321.2,331.42 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:334.2,334.19 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:308.114,310.34 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:319.3,319.39 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:310.34,313.18 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:317.4,317.28 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:313.18,315.13 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:331.42,333.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:338.64,346.16 5 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:352.2,352.116 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:357.2,358.34 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:362.2,363.16 2 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:366.2,366.26 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:369.2,369.27 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:372.2,372.66 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:375.2,375.19 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:346.16,348.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:352.116,355.3 2 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:358.34,360.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:363.16,365.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:366.26,368.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:369.27,371.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:372.66,374.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:380.100,383.9 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:389.2,389.10 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:384.30,384.30 0 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:386.27,387.18 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:394.83,396.9 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:397.55,399.19 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:400.27,401.15 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:407.24,420.25 5 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:442.2,442.6 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:420.25,421.65 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:425.3,426.54 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:438.3,439.17 2 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:421.65,423.4 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:426.54,428.67 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:435.4,436.20 2 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:428.67,431.5 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:442.6,445.10 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:446.28,447.55 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:450.4,450.10 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:452.33,454.21 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:456.26,458.55 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:473.4,473.24 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:475.27,479.55 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:488.4,488.42 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:447.55,449.5 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:458.55,460.73 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:460.73,465.21 4 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:470.6,470.22 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:465.21,468.7 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:479.55,481.55 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:481.55,485.6 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:488.42,489.54 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:493.5,493.21 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:489.54,492.6 2 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:499.93,501.16 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:504.2,504.56 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:501.16,503.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:507.93,511.2 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:514.55,516.22 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:520.2,521.6 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:516.22,518.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:521.6,523.36 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:534.3,534.68 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:523.36,526.12 2 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:527.9,527.24 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:527.24,529.21 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:532.4,532.10 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:529.21,531.5 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:534.68,535.11 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:536.53,536.53 0 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:537.12,537.12 0 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:543.67,545.16 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:549.2,551.43 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:554.2,555.40 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:558.2,558.12 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:545.16,548.3 2 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:551.43,553.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:555.40,557.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:562.56,564.2 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:568.64,570.69 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:570.69,575.3 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:578.81,579.20 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:582.2,582.63 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:585.2,585.60 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:588.2,589.16 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:592.2,594.15 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:579.20,581.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:582.63,584.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:585.60,587.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:589.16,591.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:597.37,600.57 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:603.2,603.86 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:600.57,602.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:607.62,610.18 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:627.2,627.11 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:611.20,613.26 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:614.20,615.29 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:616.24,618.30 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:619.25,620.34 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:621.26,623.32 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:624.27,625.36 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:643.113,647.16 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:650.2,650.36 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:653.2,654.12 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:647.16,649.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:650.36,652.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:657.96,670.73 4 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:679.2,680.92 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:670.73,671.35 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:671.35,673.4 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:674.8,676.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:685.113,688.36 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:691.2,691.42 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:694.2,696.12 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:688.36,690.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:691.42,693.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:701.117,704.36 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:707.2,707.35 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:716.2,716.12 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:704.36,706.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:707.35,715.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:719.100,730.28 6 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:740.2,740.31 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:730.28,731.51 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:734.3,734.42 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:731.51,733.4 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:734.42,738.4 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:740.31,742.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:747.118,750.36 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:753.2,753.47 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:756.2,756.12 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:750.36,752.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:753.47,755.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:761.119,764.36 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:767.2,767.35 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:770.2,770.12 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:764.36,766.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:767.35,769.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:773.102,778.2 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:782.120,783.47 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:786.2,786.12 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v4_udp.go:783.47,785.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:125.78,127.16 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:130.2,134.15 5 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:127.16,129.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:138.78,168.16 5 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:171.2,172.15 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:168.16,170.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:176.36,178.2 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:181.25,182.24 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:182.24,187.3 4 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:191.43,194.2 2 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:198.52,199.81 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:203.2,203.46 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:207.2,208.28 2 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:213.2,213.10 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:199.81,201.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:203.46,205.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:208.28,209.46 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:209.46,211.4 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:217.42,222.35 4 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:227.2,227.14 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:222.35,223.31 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:223.31,225.4 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:232.46,234.2 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:239.82,243.2 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:246.93,250.9 4 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:251.28,252.53 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:253.25,254.18 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:259.46,260.22 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:266.2,266.57 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:260.22,264.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:271.55,273.2 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:277.46,279.2 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:283.44,285.2 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:287.62,291.2 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:293.73,294.70 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:294.70,296.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:300.80,308.22 4 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:311.2,311.22 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:316.2,316.27 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:308.22,310.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:311.22,312.30 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:312.30,314.4 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:322.60,325.51 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:333.2,333.14 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:325.51,326.17 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:329.3,329.15 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:326.17,328.4 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:329.15,331.4 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:337.53,342.9 4 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:343.25,344.41 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:345.25,346.16 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:351.64,353.16 2 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:356.2,356.21 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:359.2,359.22 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:353.16,355.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:356.21,358.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:363.82,366.2 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:369.82,377.6 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:377.6,378.10 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:379.28,381.42 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:389.4,389.19 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:392.4,392.37 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:395.23,396.21 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:381.42,383.19 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:387.5,387.32 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:383.19,385.14 2 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:389.19,391.5 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:392.37,394.5 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:402.129,404.16 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:407.2,407.69 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:410.2,410.26 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:413.2,413.22 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:419.2,419.34 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:422.2,423.18 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:404.16,406.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:407.69,409.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:410.26,412.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:413.22,415.41 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:415.41,417.4 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:419.34,421.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:426.43,427.23 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:432.2,432.14 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:427.23,428.13 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:428.13,430.4 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:437.89,450.9 4 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:455.2,455.10 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:451.21,451.21 0 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:452.27,453.21 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:459.37,463.6 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:463.6,464.10 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:465.15,465.15 0 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:467.16,467.16 0 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:469.26,470.10 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:471.28,472.10 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:488.28,494.6 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:494.6,495.10 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:496.24,499.22 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:501.32,503.52 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:507.28,510.19 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:513.4,516.22 4 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:518.28,521.30 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:523.28,525.39 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:531.4,531.42 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:536.4,536.10 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:503.52,505.5 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:510.19,511.45 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:525.39,526.29 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:529.5,529.28 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:526.29,528.6 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:531.42,535.5 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:542.49,543.22 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:546.2,550.50 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:557.2,558.13 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:543.22,545.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:550.50,552.10 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:553.50,553.50 0 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:554.28,554.28 0 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:562.43,564.54 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:567.2,569.21 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:564.54,566.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:569.21,571.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:571.8,574.3 2 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:579.37,582.33 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:586.2,590.27 5 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:582.33,584.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:595.94,598.2 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:601.123,604.16 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:608.2,610.19 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:604.16,607.3 2 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:614.28,618.25 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:618.25,620.36 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:631.3,631.43 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:620.36,623.12 2 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:624.9,624.24 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:624.24,626.21 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:629.4,629.10 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:626.21,628.5 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:636.76,637.9 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:638.49,639.14 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:640.27,641.15 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:646.77,649.16 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:653.2,653.21 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:657.2,657.45 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:661.2,662.12 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:649.16,652.3 2 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:653.21,656.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:657.45,660.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:666.98,668.56 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:672.2,672.72 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:676.2,676.33 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:680.2,682.13 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:668.56,671.3 2 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:672.72,675.3 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:676.33,679.3 2 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:686.50,687.38 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:690.2,690.52 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:693.2,693.12 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:687.38,689.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:690.52,692.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:697.81,698.23 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:699.23,700.39 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:701.25,702.41 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:703.20,704.36 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:705.20,706.48 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:709.24,710.40 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:711.21,712.44 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:713.27,714.43 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:715.28,716.44 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:706.48,708.4 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:721.90,724.38 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:728.2,728.45 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:724.38,727.3 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:737.94,739.16 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:745.2,749.15 5 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:739.16,742.3 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:753.85,755.14 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:758.2,758.26 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:761.2,761.15 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:755.14,757.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:758.26,760.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:765.84,770.27 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:773.2,778.4 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:770.27,772.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:782.92,784.49 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:784.49,786.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:790.90,793.33 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:823.2,823.14 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:793.33,796.25 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:801.3,802.16 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:809.3,812.24 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:796.25,797.12 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:802.16,804.4 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:804.9,804.25 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:804.25,808.4 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:812.24,814.48 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:817.4,818.27 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:814.48,815.13 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:818.27,820.5 1 0 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:827.67,828.21 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:832.2,834.21 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:843.2,843.13 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:828.21,830.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:834.21,837.30 3 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:840.3,841.25 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:837.30,839.4 1 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:847.98,853.20 5 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:856.2,857.40 2 1 -github.com/ethereum/go-ethereum/p2p/discover/v5_udp.go:853.20,855.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/common.go:52.41,53.20 1 1 -github.com/ethereum/go-ethereum/p2p/discover/common.go:56.2,56.29 1 1 -github.com/ethereum/go-ethereum/p2p/discover/common.go:59.2,59.22 1 1 -github.com/ethereum/go-ethereum/p2p/discover/common.go:62.2,62.12 1 1 -github.com/ethereum/go-ethereum/p2p/discover/common.go:53.20,55.3 1 0 -github.com/ethereum/go-ethereum/p2p/discover/common.go:56.29,58.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/common.go:59.22,61.3 1 1 -github.com/ethereum/go-ethereum/p2p/discover/common.go:66.76,68.2 1 0 -github.com/ethereum/go-ethereum/p2p/discover/common.go:77.24,78.11 1 1 -github.com/ethereum/go-ethereum/p2p/discover/common.go:81.2,81.10 1 1 -github.com/ethereum/go-ethereum/p2p/discover/common.go:78.11,80.3 1 1 -github.com/ethereum/go-ethereum/rpc/ipc_unix.go:33.55,34.40 1 1 -github.com/ethereum/go-ethereum/rpc/ipc_unix.go:40.2,40.66 1 1 -github.com/ethereum/go-ethereum/rpc/ipc_unix.go:43.2,45.16 3 1 -github.com/ethereum/go-ethereum/rpc/ipc_unix.go:48.2,49.15 2 1 -github.com/ethereum/go-ethereum/rpc/ipc_unix.go:34.40,37.3 1 0 -github.com/ethereum/go-ethereum/rpc/ipc_unix.go:40.66,42.3 1 0 -github.com/ethereum/go-ethereum/rpc/ipc_unix.go:45.16,47.3 1 0 -github.com/ethereum/go-ethereum/rpc/ipc_unix.go:53.79,55.2 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:50.73,57.71 2 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:57.71,59.17 2 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:63.3,64.25 2 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:59.17,62.4 2 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:71.77,75.40 3 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:84.2,84.33 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:90.2,92.36 2 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:109.2,109.10 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:75.40,76.20 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:79.3,79.19 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:76.20,78.4 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:79.19,81.4 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:84.33,86.49 2 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:86.49,88.4 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:92.36,97.41 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:101.3,102.58 2 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:105.3,106.15 2 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:97.41,99.4 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:102.58,104.4 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:117.42,119.20 2 0 -github.com/ethereum/go-ethereum/rpc/websocket.go:122.2,122.10 1 0 -github.com/ethereum/go-ethereum/rpc/websocket.go:119.20,121.3 1 0 -github.com/ethereum/go-ethereum/rpc/websocket.go:125.76,127.27 2 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:132.2,132.14 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:127.27,128.55 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:128.55,130.4 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:135.72,142.16 3 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:146.2,147.16 2 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:151.2,151.59 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:154.2,154.65 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:157.2,157.53 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:160.2,160.13 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:142.16,145.3 2 0 -github.com/ethereum/go-ethereum/rpc/websocket.go:147.16,150.3 2 0 -github.com/ethereum/go-ethereum/rpc/websocket.go:151.59,153.3 1 0 -github.com/ethereum/go-ethereum/rpc/websocket.go:154.65,156.3 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:157.53,159.3 1 0 -github.com/ethereum/go-ethereum/rpc/websocket.go:163.68,165.16 2 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:168.2,169.37 2 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:181.2,181.36 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:165.16,167.3 1 0 -github.com/ethereum/go-ethereum/rpc/websocket.go:169.37,173.3 3 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:173.8,177.21 4 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:177.21,179.4 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:186.118,188.16 2 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:191.2,191.71 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:188.16,190.3 1 0 -github.com/ethereum/go-ethereum/rpc/websocket.go:191.71,193.17 2 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:200.3,200.56 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:193.17,195.19 2 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:198.4,198.20 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:195.19,197.5 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:209.83,216.2 2 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:218.76,220.16 2 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:223.2,224.18 2 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:227.2,227.29 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:232.2,232.42 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:220.16,222.3 1 0 -github.com/ethereum/go-ethereum/rpc/websocket.go:224.18,226.3 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:227.29,231.3 3 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:244.88,246.49 2 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:250.2,266.11 7 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:246.49,249.3 2 0 -github.com/ethereum/go-ethereum/rpc/websocket.go:269.35,272.2 2 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:274.47,276.2 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:278.79,280.16 2 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:287.2,287.12 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:280.16,282.10 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:283.35,283.35 0 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:284.11,284.11 0 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:291.38,296.6 4 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:296.6,297.10 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:298.22,299.10 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:300.23,301.21 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:304.4,304.31 1 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:305.18,311.31 6 1 -github.com/ethereum/go-ethereum/rpc/websocket.go:301.21,303.5 1 0 -github.com/ethereum/go-ethereum/rpc/client.go:111.62,117.2 5 1 -github.com/ethereum/go-ethereum/rpc/client.go:119.64,122.2 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:136.84,137.9 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:138.20,140.16 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:146.3,146.24 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:147.25,148.22 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:140.16,141.11 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:142.28,142.28 0 1 -github.com/ethereum/go-ethereum/rpc/client.go:143.21,143.21 0 0 -github.com/ethereum/go-ethereum/rpc/client.go:162.43,164.2 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:170.71,172.16 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:175.2,175.18 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:172.16,174.3 1 0 -github.com/ethereum/go-ethereum/rpc/client.go:176.23,177.26 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:178.19,179.40 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:180.15,181.24 1 0 -github.com/ethereum/go-ethereum/rpc/client.go:182.10,183.30 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:184.10,185.75 1 0 -github.com/ethereum/go-ethereum/rpc/client.go:191.61,194.2 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:196.81,198.16 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:201.2,203.15 3 1 -github.com/ethereum/go-ethereum/rpc/client.go:198.16,200.3 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:206.87,223.13 3 1 -github.com/ethereum/go-ethereum/rpc/client.go:226.2,226.10 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:223.13,225.3 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:233.72,235.2 1 0 -github.com/ethereum/go-ethereum/rpc/client.go:237.43,240.2 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:244.64,250.2 5 1 -github.com/ethereum/go-ethereum/rpc/client.go:253.26,254.14 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:257.2,257.9 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:254.14,256.3 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:258.29,259.15 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:260.20,260.20 0 1 -github.com/ethereum/go-ethereum/rpc/client.go:267.47,268.15 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:271.2,274.18 4 1 -github.com/ethereum/go-ethereum/rpc/client.go:268.15,270.3 1 0 -github.com/ethereum/go-ethereum/rpc/client.go:282.85,285.2 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:292.113,293.67 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:296.2,297.16 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:300.2,302.14 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:307.2,307.16 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:312.2,312.39 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:293.67,295.3 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:297.16,299.3 1 0 -github.com/ethereum/go-ethereum/rpc/client.go:302.14,304.3 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:304.8,306.3 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:307.16,309.3 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:313.18,314.13 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:315.25,316.20 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:317.29,318.21 1 0 -github.com/ethereum/go-ethereum/rpc/client.go:319.10,320.46 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:331.49,334.2 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:345.77,354.25 3 1 -github.com/ethereum/go-ethereum/rpc/client.go:364.2,365.14 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:372.2,372.44 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:392.2,392.12 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:354.25,356.17 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:359.3,361.27 3 1 -github.com/ethereum/go-ethereum/rpc/client.go:356.17,358.4 1 0 -github.com/ethereum/go-ethereum/rpc/client.go:365.14,367.3 1 0 -github.com/ethereum/go-ethereum/rpc/client.go:367.8,369.3 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:372.44,375.17 3 1 -github.com/ethereum/go-ethereum/rpc/client.go:381.3,382.24 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:386.3,386.28 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:390.3,390.56 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:375.17,376.9 1 0 -github.com/ethereum/go-ethereum/rpc/client.go:382.24,384.12 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:386.28,388.12 2 0 -github.com/ethereum/go-ethereum/rpc/client.go:396.88,399.16 3 1 -github.com/ethereum/go-ethereum/rpc/client.go:402.2,404.14 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:407.2,407.29 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:399.16,401.3 1 0 -github.com/ethereum/go-ethereum/rpc/client.go:404.14,406.3 1 0 -github.com/ethereum/go-ethereum/rpc/client.go:411.123,413.2 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:417.123,419.2 1 0 -github.com/ethereum/go-ethereum/rpc/client.go:433.138,436.85 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:439.2,439.21 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:442.2,442.14 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:446.2,447.16 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:450.2,458.45 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:461.2,461.43 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:464.2,464.20 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:436.85,437.98 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:439.21,440.54 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:442.14,444.3 1 0 -github.com/ethereum/go-ethereum/rpc/client.go:447.16,449.3 1 0 -github.com/ethereum/go-ethereum/rpc/client.go:458.45,460.3 1 0 -github.com/ethereum/go-ethereum/rpc/client.go:461.43,463.3 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:467.94,469.21 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:475.2,475.17 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:469.21,471.59 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:471.59,473.4 1 0 -github.com/ethereum/go-ethereum/rpc/client.go:480.82,481.9 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:482.23,485.13 3 1 -github.com/ethereum/go-ethereum/rpc/client.go:486.20,489.19 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:490.19,491.23 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:495.80,496.24 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:502.2,503.16 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:509.2,509.12 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:496.24,498.42 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:498.42,500.4 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:503.16,505.13 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:505.13,507.4 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:512.55,513.28 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:517.2,517.34 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:522.2,523.16 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:527.2,527.9 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:513.28,515.3 1 0 -github.com/ethereum/go-ethereum/rpc/client.go:517.34,521.3 3 1 -github.com/ethereum/go-ethereum/rpc/client.go:523.16,526.3 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:528.32,530.13 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:531.20,533.23 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:540.46,547.15 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:557.2,559.6 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:547.15,549.14 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:553.3,553.20 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:549.14,552.4 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:559.6,560.10 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:561.18,562.10 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:565.25,566.16 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:572.27,575.19 3 1 -github.com/ethereum/go-ethereum/rpc/client.go:578.36,580.15 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:589.4,594.37 4 1 -github.com/ethereum/go-ethereum/rpc/client.go:597.28,601.33 3 1 -github.com/ethereum/go-ethereum/rpc/client.go:603.27,604.18 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:610.4,611.16 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:613.29,614.36 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:566.16,568.5 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:568.10,570.5 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:580.15,588.5 2 0 -github.com/ethereum/go-ethereum/rpc/client.go:604.18,608.5 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:620.30,621.6 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:621.6,622.10 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:623.19,623.19 0 1 -github.com/ethereum/go-ethereum/rpc/client.go:624.20,625.10 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:631.42,632.6 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:632.6,634.43 2 1 -github.com/ethereum/go-ethereum/rpc/client.go:637.3,637.17 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:641.3,641.34 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:634.43,636.4 1 1 -github.com/ethereum/go-ethereum/rpc/client.go:637.17,640.4 2 1 -github.com/ethereum/go-ethereum/rpc/handler.go:74.107,88.29 3 1 -github.com/ethereum/go-ethereum/rpc/handler.go:91.2,92.10 2 1 -github.com/ethereum/go-ethereum/rpc/handler.go:88.29,90.3 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:96.55,98.20 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:106.2,107.27 2 1 -github.com/ethereum/go-ethereum/rpc/handler.go:112.2,112.21 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:116.2,116.37 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:98.20,99.38 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:102.3,102.9 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:99.38,101.4 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:107.27,108.50 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:108.50,110.4 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:112.21,114.3 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:116.37,118.29 2 1 -github.com/ethereum/go-ethereum/rpc/handler.go:123.3,124.23 2 1 -github.com/ethereum/go-ethereum/rpc/handler.go:127.3,127.34 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:118.29,119.57 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:119.57,121.5 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:124.23,126.4 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:127.34,129.4 1 0 -github.com/ethereum/go-ethereum/rpc/handler.go:134.50,135.38 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:138.2,138.37 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:135.38,137.3 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:138.37,141.20 3 1 -github.com/ethereum/go-ethereum/rpc/handler.go:144.3,144.34 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:141.20,143.4 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:144.34,146.4 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:152.60,157.2 4 1 -github.com/ethereum/go-ethereum/rpc/handler.go:160.47,161.28 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:161.28,163.3 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:167.50,168.28 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:168.28,170.3 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:174.72,176.24 2 1 -github.com/ethereum/go-ethereum/rpc/handler.go:180.2,180.33 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:190.2,190.36 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:176.24,178.3 1 0 -github.com/ethereum/go-ethereum/rpc/handler.go:180.33,184.20 2 1 -github.com/ethereum/go-ethereum/rpc/handler.go:184.20,188.4 3 1 -github.com/ethereum/go-ethereum/rpc/handler.go:190.36,193.3 2 1 -github.com/ethereum/go-ethereum/rpc/handler.go:196.52,200.23 3 1 -github.com/ethereum/go-ethereum/rpc/handler.go:200.23,201.46 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:201.46,203.4 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:208.56,212.34 3 1 -github.com/ethereum/go-ethereum/rpc/handler.go:212.34,216.3 3 1 -github.com/ethereum/go-ethereum/rpc/handler.go:220.53,222.12 2 1 -github.com/ethereum/go-ethereum/rpc/handler.go:222.12,227.3 4 1 -github.com/ethereum/go-ethereum/rpc/handler.go:232.61,234.9 2 1 -github.com/ethereum/go-ethereum/rpc/handler.go:235.28,236.62 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:240.3,240.15 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:241.24,244.14 3 1 -github.com/ethereum/go-ethereum/rpc/handler.go:245.10,246.15 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:236.62,239.4 2 1 -github.com/ethereum/go-ethereum/rpc/handler.go:251.65,253.60 2 1 -github.com/ethereum/go-ethereum/rpc/handler.go:257.2,257.36 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:253.60,256.3 2 0 -github.com/ethereum/go-ethereum/rpc/handler.go:257.36,259.3 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:263.55,265.15 2 1 -github.com/ethereum/go-ethereum/rpc/handler.go:269.2,271.19 2 1 -github.com/ethereum/go-ethereum/rpc/handler.go:278.2,279.22 2 1 -github.com/ethereum/go-ethereum/rpc/handler.go:283.2,283.71 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:265.15,268.3 2 0 -github.com/ethereum/go-ethereum/rpc/handler.go:271.19,274.3 2 1 -github.com/ethereum/go-ethereum/rpc/handler.go:279.22,282.3 2 1 -github.com/ethereum/go-ethereum/rpc/handler.go:283.71,286.3 2 1 -github.com/ethereum/go-ethereum/rpc/handler.go:290.85,292.9 2 1 -github.com/ethereum/go-ethereum/rpc/handler.go:293.28,296.13 3 1 -github.com/ethereum/go-ethereum/rpc/handler.go:297.20,301.24 4 1 -github.com/ethereum/go-ethereum/rpc/handler.go:310.3,310.14 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:311.24,312.68 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:313.10,314.63 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:301.24,303.30 2 1 -github.com/ethereum/go-ethereum/rpc/handler.go:306.4,306.44 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:303.30,305.5 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:307.9,309.4 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:319.81,320.23 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:323.2,324.25 2 1 -github.com/ethereum/go-ethereum/rpc/handler.go:329.2,329.18 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:332.2,333.16 2 1 -github.com/ethereum/go-ethereum/rpc/handler.go:336.2,341.30 3 1 -github.com/ethereum/go-ethereum/rpc/handler.go:351.2,351.15 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:320.23,322.3 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:324.25,326.3 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:326.8,328.3 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:329.18,331.3 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:333.16,335.3 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:341.30,343.26 2 1 -github.com/ethereum/go-ethereum/rpc/handler.go:348.3,349.73 2 1 -github.com/ethereum/go-ethereum/rpc/handler.go:343.26,345.4 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:345.9,347.4 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:355.86,356.23 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:361.2,362.16 2 1 -github.com/ethereum/go-ethereum/rpc/handler.go:365.2,367.18 3 1 -github.com/ethereum/go-ethereum/rpc/handler.go:372.2,374.16 3 1 -github.com/ethereum/go-ethereum/rpc/handler.go:377.2,384.43 5 1 -github.com/ethereum/go-ethereum/rpc/handler.go:356.23,358.3 1 0 -github.com/ethereum/go-ethereum/rpc/handler.go:362.16,364.3 1 0 -github.com/ethereum/go-ethereum/rpc/handler.go:367.18,369.3 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:374.16,376.3 1 0 -github.com/ethereum/go-ethereum/rpc/handler.go:388.126,390.16 2 1 -github.com/ethereum/go-ethereum/rpc/handler.go:393.2,393.29 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:390.16,392.3 1 1 -github.com/ethereum/go-ethereum/rpc/handler.go:397.73,402.14 4 1 -github.com/ethereum/go-ethereum/rpc/handler.go:405.2,407.18 3 1 -github.com/ethereum/go-ethereum/rpc/handler.go:402.14,404.3 1 0 -github.com/ethereum/go-ethereum/rpc/handler.go:412.36,413.66 1 0 -github.com/ethereum/go-ethereum/rpc/handler.go:416.2,416.30 1 0 -github.com/ethereum/go-ethereum/rpc/handler.go:413.66,415.3 1 0 -github.com/ethereum/go-ethereum/rpc/ipc.go:28.54,29.6 1 1 -github.com/ethereum/go-ethereum/rpc/ipc.go:29.6,31.36 2 1 -github.com/ethereum/go-ethereum/rpc/ipc.go:37.3,38.37 2 1 -github.com/ethereum/go-ethereum/rpc/ipc.go:31.36,33.12 2 0 -github.com/ethereum/go-ethereum/rpc/ipc.go:34.9,34.24 1 1 -github.com/ethereum/go-ethereum/rpc/ipc.go:34.24,36.4 1 1 -github.com/ethereum/go-ethereum/rpc/ipc.go:48.69,49.71 1 1 -github.com/ethereum/go-ethereum/rpc/ipc.go:49.71,51.17 2 1 -github.com/ethereum/go-ethereum/rpc/ipc.go:54.3,54.29 1 1 -github.com/ethereum/go-ethereum/rpc/ipc.go:51.17,53.4 1 0 -github.com/ethereum/go-ethereum/rpc/service.go:61.77,63.16 2 1 -github.com/ethereum/go-ethereum/rpc/service.go:66.2,67.25 2 1 -github.com/ethereum/go-ethereum/rpc/service.go:71.2,73.23 3 1 -github.com/ethereum/go-ethereum/rpc/service.go:76.2,77.9 2 1 -github.com/ethereum/go-ethereum/rpc/service.go:85.2,85.34 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:92.2,92.12 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:63.16,65.3 1 0 -github.com/ethereum/go-ethereum/rpc/service.go:67.25,69.3 1 0 -github.com/ethereum/go-ethereum/rpc/service.go:73.23,75.3 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:77.9,84.3 2 1 -github.com/ethereum/go-ethereum/rpc/service.go:85.34,86.21 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:86.21,88.4 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:88.9,90.4 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:96.61,98.20 2 1 -github.com/ethereum/go-ethereum/rpc/service.go:101.2,103.47 3 1 -github.com/ethereum/go-ethereum/rpc/service.go:98.20,100.3 1 0 -github.com/ethereum/go-ethereum/rpc/service.go:107.72,111.2 3 1 -github.com/ethereum/go-ethereum/rpc/service.go:116.69,119.39 3 1 -github.com/ethereum/go-ethereum/rpc/service.go:131.2,131.18 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:119.39,121.27 2 1 -github.com/ethereum/go-ethereum/rpc/service.go:124.3,125.16 2 1 -github.com/ethereum/go-ethereum/rpc/service.go:128.3,129.23 2 1 -github.com/ethereum/go-ethereum/rpc/service.go:121.27,122.12 1 0 -github.com/ethereum/go-ethereum/rpc/service.go:125.16,126.12 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:136.56,145.39 5 1 -github.com/ethereum/go-ethereum/rpc/service.go:148.2,148.19 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:152.2,152.9 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:161.2,161.10 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:145.39,147.3 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:148.19,150.3 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:153.46,154.15 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:155.22,156.52 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:159.3,159.15 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:156.52,158.4 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:165.35,169.22 3 1 -github.com/ethereum/go-ethereum/rpc/service.go:172.2,172.69 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:177.2,178.45 2 1 -github.com/ethereum/go-ethereum/rpc/service.go:169.22,171.3 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:172.69,175.3 2 1 -github.com/ethereum/go-ethereum/rpc/service.go:178.45,180.3 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:184.115,187.22 2 1 -github.com/ethereum/go-ethereum/rpc/service.go:190.2,190.14 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:193.2,196.15 2 1 -github.com/ethereum/go-ethereum/rpc/service.go:206.2,207.23 2 1 -github.com/ethereum/go-ethereum/rpc/service.go:210.2,210.49 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:215.2,215.36 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:187.22,189.3 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:190.14,192.3 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:196.15,197.35 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:197.35,203.4 5 0 -github.com/ethereum/go-ethereum/rpc/service.go:207.23,209.3 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:210.49,214.3 2 1 -github.com/ethereum/go-ethereum/rpc/service.go:219.41,220.30 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:223.2,223.25 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:220.30,222.3 1 0 -github.com/ethereum/go-ethereum/rpc/service.go:227.39,228.30 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:231.2,231.32 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:228.30,230.3 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:235.46,236.30 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:239.2,239.30 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:236.30,238.3 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:244.45,246.56 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:249.2,251.33 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:246.56,248.3 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:255.37,257.18 2 1 -github.com/ethereum/go-ethereum/rpc/service.go:260.2,260.20 1 1 -github.com/ethereum/go-ethereum/rpc/service.go:257.18,259.3 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:47.17,49.2 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:52.36,55.43 3 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:61.2,65.19 2 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:55.43,57.3 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:57.8,59.3 1 0 -github.com/ethereum/go-ethereum/rpc/subscription.go:65.19,71.3 5 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:74.28,77.14 3 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:80.2,80.22 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:77.14,79.3 1 0 -github.com/ethereum/go-ethereum/rpc/subscription.go:86.65,89.2 2 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:108.55,112.18 3 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:117.2,118.14 2 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:112.18,113.61 1 0 -github.com/ethereum/go-ethereum/rpc/subscription.go:114.8,114.27 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:114.27,115.71 1 0 -github.com/ethereum/go-ethereum/rpc/subscription.go:123.58,125.16 2 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:129.2,132.18 3 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:137.2,137.17 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:140.2,141.12 2 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:125.16,127.3 1 0 -github.com/ethereum/go-ethereum/rpc/subscription.go:132.18,133.55 1 0 -github.com/ethereum/go-ethereum/rpc/subscription.go:134.8,134.27 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:134.27,135.32 1 0 -github.com/ethereum/go-ethereum/rpc/subscription.go:137.17,139.3 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:146.48,148.2 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:152.53,157.2 4 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:162.37,166.32 3 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:171.2,172.12 2 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:166.32,167.45 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:167.45,169.4 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:175.72,183.2 3 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:194.43,196.2 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:199.54,201.2 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:231.100,244.2 2 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:254.51,256.2 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:260.46,261.24 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:261.24,262.10 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:267.3,267.17 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:263.36,264.19 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:265.24,265.24 0 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:272.74,273.9 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:274.24,275.14 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:276.25,277.15 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:282.49,283.9 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:284.23,284.23 0 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:285.25,285.25 0 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:291.38,301.17 4 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:306.2,306.16 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:301.17,303.3 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:306.16,307.27 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:312.3,312.17 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:307.27,311.4 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:318.78,326.6 3 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:326.6,329.24 3 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:338.3,338.17 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:329.24,332.4 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:332.9,336.4 2 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:339.10,340.21 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:343.4,343.30 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:347.4,347.21 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:349.10,351.18 2 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:354.4,354.51 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:357.4,357.24 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:359.10,361.33 2 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:340.21,342.5 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:343.30,346.5 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:351.18,353.5 1 0 -github.com/ethereum/go-ethereum/rpc/subscription.go:354.51,356.5 1 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:366.87,370.2 3 1 -github.com/ethereum/go-ethereum/rpc/subscription.go:372.59,375.2 2 1 -github.com/ethereum/go-ethereum/rpc/json.go:60.50,62.2 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:64.42,66.2 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:68.46,70.2 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:72.46,74.2 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:76.47,78.2 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:80.49,82.2 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:84.47,87.2 2 1 -github.com/ethereum/go-ethereum/rpc/json.go:89.44,92.2 2 0 -github.com/ethereum/go-ethereum/rpc/json.go:94.69,98.2 3 1 -github.com/ethereum/go-ethereum/rpc/json.go:100.73,102.16 2 1 -github.com/ethereum/go-ethereum/rpc/json.go:106.2,106.63 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:102.16,105.3 1 0 -github.com/ethereum/go-ethereum/rpc/json.go:109.46,115.8 3 1 -github.com/ethereum/go-ethereum/rpc/json.go:118.2,119.8 2 1 -github.com/ethereum/go-ethereum/rpc/json.go:122.2,122.12 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:115.8,117.3 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:119.8,121.3 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:131.38,132.23 1 0 -github.com/ethereum/go-ethereum/rpc/json.go:135.2,135.20 1 0 -github.com/ethereum/go-ethereum/rpc/json.go:132.23,134.3 1 0 -github.com/ethereum/go-ethereum/rpc/json.go:138.39,140.2 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:142.47,144.2 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:179.94,186.41 2 1 -github.com/ethereum/go-ethereum/rpc/json.go:189.2,189.14 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:186.41,188.3 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:194.38,199.2 4 1 -github.com/ethereum/go-ethereum/rpc/json.go:201.41,204.2 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:206.41,208.2 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:210.85,214.42 2 1 -github.com/ethereum/go-ethereum/rpc/json.go:217.2,218.31 2 1 -github.com/ethereum/go-ethereum/rpc/json.go:225.2,225.29 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:214.42,216.3 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:218.31,219.17 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:219.17,223.4 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:228.73,233.9 4 1 -github.com/ethereum/go-ethereum/rpc/json.go:236.2,237.20 2 1 -github.com/ethereum/go-ethereum/rpc/json.go:233.9,235.3 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:240.29,241.21 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:241.21,244.3 2 1 -github.com/ethereum/go-ethereum/rpc/json.go:248.49,250.2 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:256.66,257.19 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:262.2,265.17 4 1 -github.com/ethereum/go-ethereum/rpc/json.go:269.2,269.19 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:257.19,261.3 3 1 -github.com/ethereum/go-ethereum/rpc/json.go:265.17,268.3 2 1 -github.com/ethereum/go-ethereum/rpc/json.go:273.40,274.24 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:281.2,281.14 1 0 -github.com/ethereum/go-ethereum/rpc/json.go:274.24,276.55 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:279.3,279.18 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:276.55,277.12 1 0 -github.com/ethereum/go-ethereum/rpc/json.go:287.103,291.9 4 1 -github.com/ethereum/go-ethereum/rpc/json.go:306.2,306.42 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:312.2,312.18 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:292.49,292.49 0 1 -github.com/ethereum/go-ethereum/rpc/json.go:295.18,296.18 1 0 -github.com/ethereum/go-ethereum/rpc/json.go:297.30,299.61 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:302.10,303.43 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:299.61,301.4 1 0 -github.com/ethereum/go-ethereum/rpc/json.go:306.42,307.37 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:310.3,310.46 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:307.37,309.4 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:315.91,317.30 2 1 -github.com/ethereum/go-ethereum/rpc/json.go:331.2,332.18 2 1 -github.com/ethereum/go-ethereum/rpc/json.go:317.30,318.22 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:321.3,322.56 2 1 -github.com/ethereum/go-ethereum/rpc/json.go:325.3,325.55 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:328.3,328.37 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:318.22,320.4 1 0 -github.com/ethereum/go-ethereum/rpc/json.go:322.56,324.4 1 0 -github.com/ethereum/go-ethereum/rpc/json.go:325.55,327.4 1 0 -github.com/ethereum/go-ethereum/rpc/json.go:336.69,338.51 2 1 -github.com/ethereum/go-ethereum/rpc/json.go:341.2,343.9 3 1 -github.com/ethereum/go-ethereum/rpc/json.go:346.2,346.20 1 1 -github.com/ethereum/go-ethereum/rpc/json.go:338.51,340.3 1 0 -github.com/ethereum/go-ethereum/rpc/json.go:343.9,345.3 1 0 -github.com/ethereum/go-ethereum/rpc/errors.go:29.37,30.24 1 1 -github.com/ethereum/go-ethereum/rpc/errors.go:33.2,33.52 1 1 -github.com/ethereum/go-ethereum/rpc/errors.go:30.24,32.3 1 0 -github.com/ethereum/go-ethereum/rpc/errors.go:64.47,64.64 1 1 -github.com/ethereum/go-ethereum/rpc/errors.go:66.46,68.2 1 1 -github.com/ethereum/go-ethereum/rpc/errors.go:72.53,72.70 1 1 -github.com/ethereum/go-ethereum/rpc/errors.go:74.52,76.2 1 1 -github.com/ethereum/go-ethereum/rpc/errors.go:81.38,81.55 1 1 -github.com/ethereum/go-ethereum/rpc/errors.go:83.37,83.57 1 1 -github.com/ethereum/go-ethereum/rpc/errors.go:88.47,88.64 1 1 -github.com/ethereum/go-ethereum/rpc/errors.go:90.46,90.66 1 1 -github.com/ethereum/go-ethereum/rpc/errors.go:95.47,95.64 1 0 -github.com/ethereum/go-ethereum/rpc/errors.go:97.46,97.66 1 0 -github.com/ethereum/go-ethereum/rpc/errors.go:102.46,102.63 1 1 -github.com/ethereum/go-ethereum/rpc/errors.go:104.45,104.65 1 1 -github.com/ethereum/go-ethereum/rpc/errors.go:111.39,111.56 1 0 -github.com/ethereum/go-ethereum/rpc/errors.go:113.38,113.66 1 0 -github.com/ethereum/go-ethereum/rpc/http.go:55.67,56.39 1 0 -github.com/ethereum/go-ethereum/rpc/http.go:59.41,60.38 1 0 -github.com/ethereum/go-ethereum/rpc/http.go:63.41,65.2 1 0 -github.com/ethereum/go-ethereum/rpc/http.go:67.66,70.2 2 0 -github.com/ethereum/go-ethereum/rpc/http.go:72.29,73.25 1 0 -github.com/ethereum/go-ethereum/rpc/http.go:73.25,73.46 1 0 -github.com/ethereum/go-ethereum/rpc/http.go:76.49,78.2 1 0 -github.com/ethereum/go-ethereum/rpc/http.go:114.80,117.16 2 1 -github.com/ethereum/go-ethereum/rpc/http.go:121.2,125.71 5 1 -github.com/ethereum/go-ethereum/rpc/http.go:117.16,119.3 1 0 -github.com/ethereum/go-ethereum/rpc/http.go:125.71,133.3 2 1 -github.com/ethereum/go-ethereum/rpc/http.go:137.49,139.2 1 1 -github.com/ethereum/go-ethereum/rpc/http.go:141.86,144.16 3 1 -github.com/ethereum/go-ethereum/rpc/http.go:147.2,150.67 3 1 -github.com/ethereum/go-ethereum/rpc/http.go:153.2,154.12 2 1 -github.com/ethereum/go-ethereum/rpc/http.go:144.16,146.3 1 1 -github.com/ethereum/go-ethereum/rpc/http.go:150.67,152.3 1 0 -github.com/ethereum/go-ethereum/rpc/http.go:157.98,160.16 3 0 -github.com/ethereum/go-ethereum/rpc/http.go:163.2,165.68 3 0 -github.com/ethereum/go-ethereum/rpc/http.go:168.2,168.37 1 0 -github.com/ethereum/go-ethereum/rpc/http.go:171.2,171.12 1 0 -github.com/ethereum/go-ethereum/rpc/http.go:160.16,162.3 1 0 -github.com/ethereum/go-ethereum/rpc/http.go:165.68,167.3 1 0 -github.com/ethereum/go-ethereum/rpc/http.go:168.37,170.3 1 0 -github.com/ethereum/go-ethereum/rpc/http.go:174.92,176.16 2 1 -github.com/ethereum/go-ethereum/rpc/http.go:179.2,180.16 2 1 -github.com/ethereum/go-ethereum/rpc/http.go:183.2,184.46 2 1 -github.com/ethereum/go-ethereum/rpc/http.go:187.2,193.16 5 1 -github.com/ethereum/go-ethereum/rpc/http.go:196.2,196.53 1 1 -github.com/ethereum/go-ethereum/rpc/http.go:209.2,209.23 1 1 -github.com/ethereum/go-ethereum/rpc/http.go:176.16,178.3 1 0 -github.com/ethereum/go-ethereum/rpc/http.go:180.16,182.3 1 0 -github.com/ethereum/go-ethereum/rpc/http.go:184.46,184.101 1 0 -github.com/ethereum/go-ethereum/rpc/http.go:193.16,195.3 1 1 -github.com/ethereum/go-ethereum/rpc/http.go:196.53,199.52 3 1 -github.com/ethereum/go-ethereum/rpc/http.go:203.3,207.4 1 1 -github.com/ethereum/go-ethereum/rpc/http.go:199.52,201.4 1 1 -github.com/ethereum/go-ethereum/rpc/http.go:219.76,223.2 3 1 -github.com/ethereum/go-ethereum/rpc/http.go:226.40,226.54 1 1 -github.com/ethereum/go-ethereum/rpc/http.go:229.46,231.2 1 1 -github.com/ethereum/go-ethereum/rpc/http.go:234.60,234.74 1 1 -github.com/ethereum/go-ethereum/rpc/http.go:237.68,239.80 1 1 -github.com/ethereum/go-ethereum/rpc/http.go:243.2,243.49 1 1 -github.com/ethereum/go-ethereum/rpc/http.go:249.2,263.34 11 1 -github.com/ethereum/go-ethereum/rpc/http.go:239.80,242.3 2 1 -github.com/ethereum/go-ethereum/rpc/http.go:243.49,246.3 2 1 -github.com/ethereum/go-ethereum/rpc/http.go:268.52,269.65 1 1 -github.com/ethereum/go-ethereum/rpc/http.go:272.2,272.47 1 1 -github.com/ethereum/go-ethereum/rpc/http.go:277.2,277.36 1 1 -github.com/ethereum/go-ethereum/rpc/http.go:281.2,281.81 1 1 -github.com/ethereum/go-ethereum/rpc/http.go:289.2,290.45 2 1 -github.com/ethereum/go-ethereum/rpc/http.go:269.65,271.3 1 1 -github.com/ethereum/go-ethereum/rpc/http.go:272.47,275.3 2 1 -github.com/ethereum/go-ethereum/rpc/http.go:277.36,279.3 1 0 -github.com/ethereum/go-ethereum/rpc/http.go:281.81,282.49 1 1 -github.com/ethereum/go-ethereum/rpc/http.go:282.49,283.22 1 1 -github.com/ethereum/go-ethereum/rpc/http.go:283.22,285.5 1 1 -github.com/ethereum/go-ethereum/rpc/metrics.go:32.66,34.12 2 1 -github.com/ethereum/go-ethereum/rpc/metrics.go:37.2,38.43 2 1 -github.com/ethereum/go-ethereum/rpc/metrics.go:34.12,36.3 1 1 -github.com/ethereum/go-ethereum/rpc/stdio.go:29.54,31.2 1 0 -github.com/ethereum/go-ethereum/rpc/stdio.go:34.80,35.69 1 0 -github.com/ethereum/go-ethereum/rpc/stdio.go:35.69,40.3 1 0 -github.com/ethereum/go-ethereum/rpc/stdio.go:48.55,50.2 1 0 -github.com/ethereum/go-ethereum/rpc/stdio.go:52.56,54.2 1 0 -github.com/ethereum/go-ethereum/rpc/stdio.go:56.35,58.2 1 0 -github.com/ethereum/go-ethereum/rpc/stdio.go:60.41,62.2 1 0 -github.com/ethereum/go-ethereum/rpc/stdio.go:64.57,66.2 1 0 -github.com/ethereum/go-ethereum/rpc/types.go:75.57,77.70 2 1 -github.com/ethereum/go-ethereum/rpc/types.go:81.2,81.15 1 1 -github.com/ethereum/go-ethereum/rpc/types.go:93.2,94.16 2 1 -github.com/ethereum/go-ethereum/rpc/types.go:97.2,97.29 1 1 -github.com/ethereum/go-ethereum/rpc/types.go:100.2,101.12 2 1 -github.com/ethereum/go-ethereum/rpc/types.go:77.70,79.3 1 1 -github.com/ethereum/go-ethereum/rpc/types.go:82.18,84.13 2 1 -github.com/ethereum/go-ethereum/rpc/types.go:85.16,87.13 2 1 -github.com/ethereum/go-ethereum/rpc/types.go:88.17,90.13 2 1 -github.com/ethereum/go-ethereum/rpc/types.go:94.16,96.3 1 1 -github.com/ethereum/go-ethereum/rpc/types.go:97.29,99.3 1 1 -github.com/ethereum/go-ethereum/rpc/types.go:107.53,108.12 1 1 -github.com/ethereum/go-ethereum/rpc/types.go:109.27,110.33 1 1 -github.com/ethereum/go-ethereum/rpc/types.go:111.25,112.31 1 1 -github.com/ethereum/go-ethereum/rpc/types.go:113.26,114.32 1 1 -github.com/ethereum/go-ethereum/rpc/types.go:115.10,116.42 1 1 -github.com/ethereum/go-ethereum/rpc/types.go:120.37,122.2 1 0 -github.com/ethereum/go-ethereum/rpc/types.go:130.64,134.16 4 1 -github.com/ethereum/go-ethereum/rpc/types.go:143.2,145.16 3 1 -github.com/ethereum/go-ethereum/rpc/types.go:148.2,148.15 1 1 -github.com/ethereum/go-ethereum/rpc/types.go:134.16,135.49 1 1 -github.com/ethereum/go-ethereum/rpc/types.go:138.3,141.13 4 1 -github.com/ethereum/go-ethereum/rpc/types.go:135.49,137.4 1 1 -github.com/ethereum/go-ethereum/rpc/types.go:145.16,147.3 1 1 -github.com/ethereum/go-ethereum/rpc/types.go:149.18,152.13 3 1 -github.com/ethereum/go-ethereum/rpc/types.go:153.16,156.13 3 1 -github.com/ethereum/go-ethereum/rpc/types.go:157.17,160.13 3 1 -github.com/ethereum/go-ethereum/rpc/types.go:161.10,162.23 1 1 -github.com/ethereum/go-ethereum/rpc/types.go:162.23,165.18 3 1 -github.com/ethereum/go-ethereum/rpc/types.go:168.4,169.14 2 1 -github.com/ethereum/go-ethereum/rpc/types.go:165.18,167.5 1 0 -github.com/ethereum/go-ethereum/rpc/types.go:170.9,172.18 2 1 -github.com/ethereum/go-ethereum/rpc/types.go:175.4,175.31 1 1 -github.com/ethereum/go-ethereum/rpc/types.go:178.4,180.14 3 1 -github.com/ethereum/go-ethereum/rpc/types.go:172.18,174.5 1 1 -github.com/ethereum/go-ethereum/rpc/types.go:175.31,177.5 1 1 -github.com/ethereum/go-ethereum/rpc/types.go:185.60,186.28 1 1 -github.com/ethereum/go-ethereum/rpc/types.go:189.2,189.30 1 1 -github.com/ethereum/go-ethereum/rpc/types.go:186.28,188.3 1 1 -github.com/ethereum/go-ethereum/rpc/types.go:192.47,193.28 1 0 -github.com/ethereum/go-ethereum/rpc/types.go:196.2,196.26 1 0 -github.com/ethereum/go-ethereum/rpc/types.go:199.2,199.14 1 0 -github.com/ethereum/go-ethereum/rpc/types.go:193.28,195.3 1 0 -github.com/ethereum/go-ethereum/rpc/types.go:196.26,198.3 1 0 -github.com/ethereum/go-ethereum/rpc/types.go:202.58,203.26 1 1 -github.com/ethereum/go-ethereum/rpc/types.go:206.2,206.29 1 1 -github.com/ethereum/go-ethereum/rpc/types.go:203.26,205.3 1 1 -github.com/ethereum/go-ethereum/rpc/types.go:209.73,215.2 1 1 -github.com/ethereum/go-ethereum/rpc/types.go:217.84,223.2 1 1 -github.com/ethereum/go-ethereum/rpc/types.go:229.58,231.70 2 0 -github.com/ethereum/go-ethereum/rpc/types.go:235.2,236.16 2 0 -github.com/ethereum/go-ethereum/rpc/types.go:239.2,239.16 1 0 -github.com/ethereum/go-ethereum/rpc/types.go:242.2,243.12 2 0 -github.com/ethereum/go-ethereum/rpc/types.go:231.70,233.3 1 0 -github.com/ethereum/go-ethereum/rpc/types.go:236.16,238.3 1 0 -github.com/ethereum/go-ethereum/rpc/types.go:239.16,241.3 1 0 -github.com/ethereum/go-ethereum/rpc/endpoints.go:27.86,34.27 2 0 -github.com/ethereum/go-ethereum/rpc/endpoints.go:44.2,47.16 3 0 -github.com/ethereum/go-ethereum/rpc/endpoints.go:50.2,51.31 2 0 -github.com/ethereum/go-ethereum/rpc/endpoints.go:34.27,35.74 1 0 -github.com/ethereum/go-ethereum/rpc/endpoints.go:39.3,39.42 1 0 -github.com/ethereum/go-ethereum/rpc/endpoints.go:35.74,38.4 2 0 -github.com/ethereum/go-ethereum/rpc/endpoints.go:39.42,42.4 2 0 -github.com/ethereum/go-ethereum/rpc/endpoints.go:47.16,49.3 1 0 -github.com/ethereum/go-ethereum/rpc/inproc.go:25.42,27.72 2 1 -github.com/ethereum/go-ethereum/rpc/inproc.go:32.2,32.10 1 1 -github.com/ethereum/go-ethereum/rpc/inproc.go:27.72,31.3 3 1 -github.com/ethereum/go-ethereum/rpc/server.go:53.26,60.2 4 1 -github.com/ethereum/go-ethereum/rpc/server.go:66.72,68.2 1 1 -github.com/ethereum/go-ethereum/rpc/server.go:75.69,79.35 2 1 -github.com/ethereum/go-ethereum/rpc/server.go:84.2,89.11 5 1 -github.com/ethereum/go-ethereum/rpc/server.go:79.35,81.3 1 0 -github.com/ethereum/go-ethereum/rpc/server.go:95.77,97.35 1 1 -github.com/ethereum/go-ethereum/rpc/server.go:101.2,106.16 5 1 -github.com/ethereum/go-ethereum/rpc/server.go:112.2,112.11 1 1 -github.com/ethereum/go-ethereum/rpc/server.go:97.35,99.3 1 0 -github.com/ethereum/go-ethereum/rpc/server.go:106.16,107.20 1 0 -github.com/ethereum/go-ethereum/rpc/server.go:110.3,110.9 1 0 -github.com/ethereum/go-ethereum/rpc/server.go:107.20,109.4 1 0 -github.com/ethereum/go-ethereum/rpc/server.go:112.11,114.3 1 0 -github.com/ethereum/go-ethereum/rpc/server.go:114.8,116.3 1 1 -github.com/ethereum/go-ethereum/rpc/server.go:122.25,123.46 1 1 -github.com/ethereum/go-ethereum/rpc/server.go:123.46,125.42 2 1 -github.com/ethereum/go-ethereum/rpc/server.go:125.42,128.4 2 1 -github.com/ethereum/go-ethereum/rpc/server.go:139.50,144.47 4 1 -github.com/ethereum/go-ethereum/rpc/server.go:147.2,147.16 1 1 -github.com/ethereum/go-ethereum/rpc/server.go:144.47,146.3 1 1 -github.com/ethereum/go-ethereum/rpc/server.go:180.56,183.2 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:37.48,39.36 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:42.2,42.14 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:39.36,41.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:46.84,48.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:51.82,53.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:56.36,57.34 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:57.34,59.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:64.79,67.37 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:75.2,75.34 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:81.2,81.29 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:67.37,68.50 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:71.3,71.20 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:68.50,70.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:75.34,76.37 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:79.3,79.29 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:76.37,78.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:97.54,99.22 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:102.2,103.14 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:99.22,101.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:107.41,112.2 4 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:117.77,118.27 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:123.2,124.59 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:127.2,128.21 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:131.2,131.34 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:118.27,120.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:124.59,126.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:128.21,130.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:137.75,138.27 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:142.2,143.21 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:146.2,146.34 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:138.27,140.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:143.21,145.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:149.63,153.54 3 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:165.2,173.28 6 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:153.54,155.40 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:158.3,158.47 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:161.3,161.17 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:155.40,157.4 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:158.47,160.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:177.53,178.53 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:181.2,181.12 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:178.53,180.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:185.48,188.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:191.2,196.16 4 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:199.2,209.12 7 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:188.16,190.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:196.16,198.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:219.53,225.58 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:232.2,233.14 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:225.58,226.21 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:229.3,229.20 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:226.21,228.4 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:241.56,244.2 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_batch.go:246.32,248.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/table.go:31.64,36.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/table.go:39.31,41.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:44.47,46.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:49.49,51.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/table.go:55.70,57.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:61.69,63.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:67.92,69.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:73.44,75.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:79.40,81.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:85.58,87.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:90.84,92.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:94.85,96.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:100.50,102.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:106.50,108.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:112.30,114.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:118.74,120.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:124.53,126.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/table.go:129.42,131.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:136.73,143.2 3 1 -github.com/ethereum/go-ethereum/core/rawdb/table.go:146.55,148.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:157.59,159.18 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:166.2,166.18 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:183.2,183.35 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:159.18,161.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:161.8,163.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:166.18,168.40 2 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:168.40,171.20 2 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:175.4,175.14 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:171.20,172.10 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:175.14,177.5 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:179.8,181.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:189.40,191.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/table.go:194.56,196.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:201.55,203.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:213.51,215.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/table.go:218.47,220.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:223.38,225.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:228.36,230.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/table.go:233.30,235.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:245.61,248.2 2 1 -github.com/ethereum/go-ethereum/core/rawdb/table.go:251.50,254.2 2 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:257.59,259.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/table.go:270.40,272.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/table.go:276.42,278.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:283.41,285.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/table.go:288.2,288.31 1 1 -github.com/ethereum/go-ethereum/core/rawdb/table.go:285.16,287.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/table.go:294.43,296.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/table.go:300.38,302.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:33.67,35.20 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:39.2,39.35 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:44.2,44.36 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:48.2,49.54 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:53.2,53.26 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:35.20,37.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:39.35,42.3 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:44.36,46.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:49.54,52.3 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:58.88,59.63 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:59.63,61.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:66.89,68.30 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:68.30,70.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:75.79,77.42 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:77.42,79.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:83.69,84.53 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:84.53,86.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:90.75,91.30 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:91.30,93.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:98.107,100.24 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:103.2,104.34 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:107.2,108.17 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:112.2,112.45 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:117.2,118.33 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:100.24,102.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:104.34,106.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:108.17,111.3 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:112.45,113.24 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:113.24,115.4 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:123.127,126.24 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:129.2,130.34 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:134.2,135.46 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:140.2,141.33 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:126.24,128.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:130.34,132.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:135.46,136.29 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:136.29,138.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:146.105,148.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:152.103,153.71 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:153.71,155.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:160.75,165.16 4 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:174.2,174.23 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:165.16,166.40 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:169.3,169.51 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:172.3,172.22 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:166.40,167.9 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:169.51,170.12 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_indexes.go:174.23,176.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:28.46,30.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:34.75,35.101 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:39.2,39.73 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:43.2,43.13 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:35.101,37.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:39.73,41.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:47.87,52.19 2 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:59.2,60.19 2 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:67.2,68.19 2 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:74.2,74.12 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:52.19,54.36 2 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:54.36,56.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:60.19,62.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:68.19,70.36 2 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:70.36,72.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:80.89,83.35 2 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:88.2,89.63 2 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:94.2,94.42 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:83.35,85.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:89.63,92.3 2 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:100.86,103.23 2 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:108.2,109.21 2 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:113.2,114.17 2 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:119.2,119.92 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:123.2,123.19 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:103.23,105.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:109.21,111.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:114.17,117.3 2 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:119.92,122.3 2 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:127.117,130.16 2 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:135.2,135.67 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:130.16,132.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:135.67,137.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:141.81,144.39 2 1 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:144.39,146.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:151.148,153.24 2 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:157.2,158.17 2 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:164.2,164.91 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:153.24,155.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:158.17,161.3 2 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:169.110,171.24 2 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:175.2,176.34 2 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:180.2,181.17 2 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:187.2,187.91 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:171.24,173.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:176.34,178.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:181.17,184.3 2 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:196.72,198.20 2 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:202.2,203.16 2 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:198.20,200.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:207.86,209.96 2 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:209.96,211.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:215.87,218.2 2 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:221.82,222.58 1 0 -github.com/ethereum/go-ethereum/core/rawdb/bor_receipt.go:222.58,224.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:28.57,31.2 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:34.53,35.66 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:35.66,37.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:41.54,42.55 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:42.55,44.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:49.60,51.36 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:54.2,54.33 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:51.36,53.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:59.67,60.57 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:60.57,62.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:69.50,70.51 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:70.51,72.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:76.76,79.2 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:82.84,83.64 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:83.64,85.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:89.71,90.60 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:90.60,92.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:96.96,99.2 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:102.104,103.84 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:103.84,105.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:109.91,110.80 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:110.80,112.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:117.89,119.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:123.58,126.2 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:130.68,131.60 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:131.60,133.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:138.53,139.54 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:139.54,141.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:146.60,149.2 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:153.72,154.64 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:154.64,156.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:161.55,162.56 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:162.56,164.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:169.66,171.20 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:174.2,174.20 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:177.2,178.16 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:171.20,173.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:174.20,176.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:183.74,186.60 3 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:186.60,188.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:193.60,194.55 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:194.55,196.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:200.61,203.2 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:206.70,207.62 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_snapshot.go:207.62,209.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:106.129,114.57 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:122.2,123.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:127.2,137.42 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:157.2,157.57 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:162.2,162.22 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:170.2,170.16 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:179.2,182.21 3 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:114.57,115.38 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:115.38,118.4 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:123.16,125.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:137.42,139.17 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:146.3,146.31 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:139.17,140.41 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:143.4,144.19 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:140.41,142.5 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:157.57,158.111 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:158.111,160.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:162.22,166.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:166.8,169.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:170.16,171.40 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:174.3,175.18 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:171.40,173.4 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:186.33,191.24 4 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:204.2,204.17 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:207.2,207.12 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:191.24,195.34 3 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:200.3,200.50 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:195.34,196.40 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:196.40,198.5 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:200.50,202.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:204.17,206.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:212.72,213.43 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:216.2,216.19 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:213.43,215.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:220.71,221.43 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:224.2,224.29 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:221.43,223.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:232.94,233.43 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:236.2,236.29 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:233.43,235.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:240.46,242.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:245.42,247.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:250.60,256.43 3 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:259.2,259.27 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:256.43,258.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:264.80,268.2 3 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:271.100,272.16 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:275.2,280.15 4 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:292.2,293.41 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:296.2,297.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:300.2,301.23 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:272.16,274.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:280.15,281.17 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:281.17,283.38 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:283.38,285.19 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:285.19,287.6 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:293.41,295.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:297.16,299.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:305.52,306.16 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:309.2,312.43 3 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:315.2,315.33 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:320.2,321.12 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:306.16,308.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:312.43,314.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:315.33,316.51 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:316.51,318.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:325.51,326.16 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:329.2,332.40 3 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:335.2,335.33 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:340.2,341.12 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:326.16,328.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:332.40,334.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:335.33,336.50 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:336.50,338.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:345.32,347.33 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:352.2,352.17 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:355.2,355.12 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:347.33,348.38 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:348.38,350.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:352.17,354.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:360.36,361.24 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:364.2,369.36 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:375.2,375.36 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:381.2,382.12 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:361.24,363.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:369.36,372.8 3 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:375.36,377.22 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:377.22,379.4 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:386.34,391.33 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:401.2,401.33 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:409.2,411.12 3 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:391.33,393.19 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:396.3,397.20 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:393.19,395.4 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:397.20,399.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:401.33,402.50 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:405.3,405.50 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:402.50,404.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:405.50,407.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:419.50,426.6 3 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:426.6,427.10 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:433.3,433.14 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:449.3,450.30 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:455.3,458.10 3 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:474.3,475.18 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:482.3,487.38 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:490.3,491.17 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:498.3,498.34 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:503.3,504.38 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:511.3,511.39 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:514.3,518.52 3 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:528.3,528.39 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:531.3,534.19 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:568.3,571.32 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:574.3,577.41 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:428.17,430.10 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:431.11,431.11 0 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:433.14,435.24 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:439.4,439.11 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:435.24,438.5 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:440.51,441.20 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:442.33,443.20 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:444.18,445.11 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:450.30,453.12 3 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:459.22,462.12 3 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:464.28,467.12 3 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:469.38,472.12 3 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:475.18,478.12 3 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:487.38,489.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:491.17,494.12 3 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:498.34,500.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:504.38,506.28 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:506.28,509.5 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:511.39,513.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:518.52,520.19 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:520.19,522.35 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:522.35,525.6 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:528.39,530.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:534.19,536.26 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:562.4,562.40 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:536.26,538.35 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:542.5,543.40 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:559.5,560.10 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:538.35,541.6 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:543.40,546.22 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:550.6,550.46 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:556.6,557.42 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:546.22,548.15 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:550.46,553.15 3 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:562.40,564.5 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:571.32,573.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:577.41,579.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:583.105,586.64 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:638.2,638.20 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:586.64,587.35 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:635.3,635.13 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:587.35,590.31 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:593.4,594.24 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:597.4,598.22 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:601.4,602.26 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:605.4,606.20 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:611.4,611.74 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:614.4,614.75 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:617.4,617.73 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:620.4,620.78 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:623.4,623.75 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:628.4,629.88 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:633.4,633.33 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:590.31,592.5 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:594.24,596.5 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:598.22,600.5 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:602.26,604.5 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:606.20,608.5 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:611.74,613.5 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:614.75,616.5 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:617.73,619.5 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:620.78,622.5 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:623.75,625.5 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:629.88,631.5 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:647.76,648.16 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:651.2,655.9 4 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:661.2,661.87 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:686.2,686.50 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:689.2,694.16 4 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:697.2,704.16 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:708.2,708.69 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:724.2,724.39 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:727.2,732.41 3 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:735.2,736.16 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:740.2,740.26 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:747.2,747.49 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:751.2,751.12 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:648.16,650.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:655.9,657.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:661.87,667.31 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:682.3,682.13 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:667.31,668.27 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:671.4,672.18 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:675.4,675.30 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:680.4,680.26 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:668.27,670.5 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:672.18,674.5 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:675.30,676.49 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:676.49,678.6 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:686.50,688.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:694.16,696.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:704.16,706.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:708.69,709.58 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:713.3,714.17 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:717.3,717.49 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:720.3,720.13 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:709.58,712.4 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:714.17,716.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:717.49,719.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:721.17,723.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:724.39,726.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:732.41,734.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:736.16,738.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:740.26,742.114 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:742.114,744.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer.go:747.49,749.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:60.48,63.2 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:66.46,72.2 5 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:77.86,78.30 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:84.2,84.42 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:78.30,83.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:127.94,129.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:134.190,136.48 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:139.2,140.19 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:145.2,150.14 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:179.2,193.37 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:198.2,199.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:203.2,205.17 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:136.48,138.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:140.19,142.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:142.8,144.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:150.14,153.17 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:164.3,165.17 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:153.17,155.4 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:165.17,167.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:168.8,170.17 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:173.3,174.17 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:170.17,172.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:174.17,176.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:193.37,196.3 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:199.16,202.3 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:210.39,216.16 3 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:219.2,219.22 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:225.2,225.61 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:229.2,229.44 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:232.2,255.16 8 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:258.2,261.35 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:267.2,267.16 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:272.2,272.16 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:275.2,275.43 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:278.2,282.32 3 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:327.2,327.17 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:340.2,351.36 6 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:354.2,355.12 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:216.16,218.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:219.22,220.50 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:220.50,222.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:225.61,227.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:229.44,231.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:255.16,257.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:261.35,263.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:263.8,266.3 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:267.16,269.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:269.8,271.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:272.16,274.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:275.43,277.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:282.32,284.31 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:292.3,292.31 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:284.31,286.66 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:289.4,289.28 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:286.66,288.5 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:292.31,294.83 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:297.4,302.37 3 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:309.4,309.49 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:322.4,323.40 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:294.83,296.5 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:302.37,304.5 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:304.10,307.5 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:309.49,312.93 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:315.5,315.46 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:320.5,320.30 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:312.93,314.6 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:315.46,319.6 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:327.17,329.40 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:332.3,332.39 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:335.3,335.39 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:329.40,331.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:332.39,334.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:335.39,337.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:351.36,353.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:362.46,367.39 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:372.2,372.16 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:378.2,378.12 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:367.39,368.69 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:368.69,370.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:372.16,374.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:374.8,377.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:382.57,388.23 4 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:391.2,391.46 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:395.2,396.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:400.2,401.24 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:404.2,409.85 3 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:413.2,414.17 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:424.2,424.34 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:438.2,438.76 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:442.2,447.16 4 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:450.2,451.12 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:388.23,390.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:391.46,393.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:396.16,398.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:401.24,403.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:409.85,411.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:414.17,416.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:416.8,418.81 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:421.3,421.35 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:418.81,420.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:424.34,428.17 3 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:433.3,436.30 3 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:428.17,430.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:438.76,440.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:447.16,449.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:455.57,460.47 3 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:463.2,463.41 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:467.2,471.42 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:483.2,484.66 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:489.2,489.27 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:493.2,493.26 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:499.2,500.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:504.2,508.61 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:521.2,521.38 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:525.2,525.111 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:533.2,533.16 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:537.2,537.40 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:540.2,541.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:545.2,551.16 5 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:554.2,555.12 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:460.47,462.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:463.41,465.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:471.42,473.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:473.8,475.85 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:478.3,480.30 3 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:475.85,477.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:484.66,486.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:489.27,491.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:493.26,495.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:500.16,502.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:508.61,509.94 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:512.3,514.31 3 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:517.3,517.23 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:509.94,511.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:514.31,515.9 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:521.38,523.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:525.111,532.3 3 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:533.16,535.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:537.40,539.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:541.16,543.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:551.16,553.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:559.38,564.40 4 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:567.2,569.39 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:572.2,574.28 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:579.2,581.17 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:584.2,584.12 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:564.40,566.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:569.39,571.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:574.28,575.35 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:575.35,577.4 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:581.17,583.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:588.108,590.37 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:603.2,603.15 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:590.37,592.22 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:597.3,598.17 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:601.3,601.19 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:592.22,594.4 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:594.9,596.4 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:598.17,600.4 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:608.48,609.37 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:609.37,612.3 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:616.67,617.31 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:617.31,618.17 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:618.17,621.14 3 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:621.14,623.5 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:629.68,630.31 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:630.31,631.17 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:631.17,634.14 3 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:634.14,636.5 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:647.78,652.78 3 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:655.2,659.38 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:665.2,665.15 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:674.2,674.21 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:652.78,654.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:659.38,664.3 4 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:665.15,673.3 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:679.62,681.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:684.2,684.22 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:681.16,683.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:691.87,694.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:697.2,703.33 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:724.2,724.20 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:694.16,696.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:703.33,707.23 4 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:710.3,710.62 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:713.3,713.23 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:722.3,722.33 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:707.23,709.4 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:710.62,711.9 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:713.23,715.18 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:718.4,718.33 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:715.18,717.5 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:719.9,721.4 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:730.92,735.37 3 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:738.2,744.52 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:747.2,747.25 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:750.2,755.59 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:772.2,773.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:776.2,783.54 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:821.2,821.40 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:735.37,737.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:744.52,746.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:747.25,749.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:755.59,758.27 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:761.3,762.13 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:765.3,765.96 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:768.3,769.13 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:758.27,760.4 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:762.13,764.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:765.96,767.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:773.16,775.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:783.54,789.48 4 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:799.3,799.49 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:810.3,813.58 4 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:789.48,791.22 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:797.4,797.17 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:791.22,792.79 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:795.5,795.19 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:792.79,794.6 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:799.49,802.22 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:807.4,807.9 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:802.22,803.80 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:803.80,805.6 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:813.58,815.79 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:818.4,818.9 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:815.79,817.5 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:826.48,828.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:831.47,836.2 3 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:840.53,842.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:845.2,846.19 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:842.16,844.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:852.44,860.16 5 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:865.2,872.12 6 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:860.16,862.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:877.37,878.39 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:881.2,881.38 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:884.2,884.22 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:878.39,880.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:881.38,883.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:889.53,891.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:893.66,898.2 4 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:900.66,902.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:906.2,913.32 5 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:924.2,924.50 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:902.16,905.3 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:913.32,914.77 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:917.3,920.36 4 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:914.77,915.9 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:920.36,921.9 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:932.50,933.22 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:944.2,944.12 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:933.22,936.24 3 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:942.3,942.13 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:936.24,937.49 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_table.go:937.49,940.5 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:31.93,34.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:37.2,40.15 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:48.2,48.19 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:54.2,55.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:58.2,58.53 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:63.2,64.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:71.2,73.34 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:76.2,78.51 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:81.2,81.12 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:34.16,36.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:40.15,41.15 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:44.3,44.19 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:41.15,43.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:48.19,49.35 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:49.35,51.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:55.16,57.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:58.53,61.3 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:64.16,67.3 2 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:73.34,75.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:78.51,80.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:85.66,90.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:94.2,94.51 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:97.2,97.18 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:90.16,92.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:94.51,96.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:101.68,103.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:106.66,108.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:111.59,112.44 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:116.2,116.52 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:119.2,119.12 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:112.44,114.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_utils.go:116.52,118.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:37.68,39.57 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:47.2,47.33 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:39.57,41.21 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:45.3,45.13 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:41.21,44.4 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:51.83,52.68 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:52.68,54.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:58.66,59.57 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:59.57,61.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:66.68,73.16 5 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:78.2,78.15 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:73.16,74.50 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:74.50,76.4 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:89.80,97.16 3 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:109.2,109.15 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:97.16,99.28 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:102.3,103.17 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:106.3,107.50 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:99.28,100.12 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:103.17,104.9 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:115.109,117.16 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:120.2,129.16 5 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:142.2,142.24 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:117.16,119.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:129.16,130.40 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:133.3,133.108 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:130.40,131.9 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:133.108,137.29 3 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:137.29,138.10 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:146.74,148.20 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:151.2,152.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:148.20,150.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:156.82,159.41 3 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:159.41,161.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:165.68,166.57 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:166.57,168.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:172.62,174.20 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:177.2,177.33 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:174.20,176.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:181.69,182.60 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:182.60,184.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:188.61,190.20 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:193.2,193.33 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:190.20,192.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:197.68,198.59 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:198.59,200.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:204.65,206.20 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:209.2,209.33 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:206.20,208.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:213.72,214.63 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:214.63,216.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:221.59,223.20 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:226.2,227.54 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:231.2,231.15 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:223.20,225.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:227.54,230.3 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:235.66,237.16 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:240.2,240.50 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:237.16,239.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:240.50,242.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:248.55,250.20 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:253.2,254.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:250.20,252.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:259.63,260.74 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:260.74,262.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:266.61,268.20 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:271.2,272.16 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:268.20,270.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:276.69,277.80 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:277.80,279.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:291.83,293.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:296.2,297.22 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:301.2,303.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:317.2,317.16 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:321.2,323.46 3 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:329.2,329.19 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:293.16,295.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:297.22,300.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:303.16,306.38 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:306.38,307.60 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:314.4,314.11 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:307.60,311.5 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:311.10,312.10 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:317.16,319.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:323.46,325.23 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:325.23,327.4 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:333.83,335.57 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:347.2,347.13 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:335.57,340.58 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:344.3,345.13 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:340.58,342.4 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:351.71,352.31 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:355.2,355.69 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:358.2,358.13 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:352.31,354.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:355.69,357.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:362.81,364.20 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:367.2,368.66 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:372.2,372.15 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:364.20,366.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:368.66,371.3 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:377.65,387.16 4 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:390.2,391.42 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:387.16,389.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:391.42,393.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:397.77,399.57 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:399.57,401.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:406.90,407.59 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:407.59,409.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:414.80,416.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:419.2,419.32 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:416.16,418.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:423.81,428.57 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:438.2,438.13 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:428.57,430.36 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:435.3,436.13 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:430.36,433.4 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:443.72,445.57 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:457.2,457.13 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:445.57,447.20 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:453.3,455.13 3 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:447.20,449.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:461.95,462.64 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:462.64,464.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:468.69,469.31 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:472.2,472.72 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:475.2,475.13 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:469.31,471.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:472.72,474.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:479.77,481.20 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:484.2,485.64 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:489.2,489.13 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:481.20,483.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:485.64,488.3 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:493.92,495.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:498.2,498.38 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:495.16,497.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:502.75,503.62 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:503.62,505.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:509.79,511.57 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:521.2,521.13 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:511.57,513.36 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:518.3,519.13 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:513.36,516.4 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:525.72,527.20 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:530.2,531.62 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:535.2,535.11 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:527.20,529.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:531.62,534.3 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:539.85,541.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:544.2,544.64 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:541.16,543.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:544.64,546.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:550.73,551.61 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:551.61,553.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:558.73,559.31 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:562.2,562.76 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:565.2,565.13 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:559.31,561.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:562.76,564.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:569.85,571.57 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:581.2,581.13 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:571.57,573.36 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:578.3,579.13 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:573.36,576.4 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:587.87,590.20 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:594.2,595.64 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:599.2,600.49 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:603.2,603.17 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:590.20,592.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:595.64,598.3 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:600.49,602.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:613.112,616.21 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:619.2,620.17 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:624.2,624.87 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:628.2,628.17 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:616.21,618.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:620.17,623.3 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:624.87,627.3 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:632.103,635.35 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:638.2,639.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:643.2,643.70 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:635.35,637.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:639.16,641.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:643.70,645.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:649.79,650.66 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:650.66,652.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:671.54,673.42 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:676.2,677.34 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:680.2,680.12 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:673.42,675.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:677.34,679.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:684.110,686.31 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:689.2,689.37 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:701.2,701.12 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:686.31,688.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:689.37,692.46 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:692.46,699.4 6 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:707.108,710.20 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:713.2,714.57 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:724.2,725.17 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:729.2,729.83 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:733.2,734.35 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:737.2,737.13 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:710.20,712.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:714.57,717.68 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:720.3,721.13 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:717.68,719.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:725.17,728.3 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:729.83,732.3 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:734.35,736.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:743.114,745.21 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:748.2,749.35 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:752.2,752.13 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:745.21,747.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:749.35,751.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:761.79,763.19 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:766.2,767.17 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:770.2,770.82 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:763.19,765.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:767.17,769.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:774.62,777.2 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:780.157,786.63 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:786.63,787.32 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:808.3,808.13 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:787.32,790.40 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:795.4,796.46 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:800.4,801.13 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:804.4,804.97 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:790.40,792.5 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:796.46,798.5 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:801.13,803.5 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:804.97,806.5 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:812.187,814.82 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:817.2,817.67 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:820.2,820.73 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:823.2,823.70 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:826.2,826.67 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:829.2,829.76 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:832.2,832.12 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:814.82,816.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:817.67,819.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:820.73,822.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:823.70,825.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:826.67,828.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:829.76,831.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:836.76,844.2 5 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:848.89,856.2 5 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:869.33,869.50 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:870.43,872.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:873.38,873.65 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:876.67,878.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:881.2,882.58 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:885.2,885.32 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:890.2,890.12 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:878.16,880.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:882.58,884.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:885.32,886.32 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:886.32,888.4 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:895.55,897.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:900.2,901.58 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:904.2,905.32 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:908.2,908.15 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:897.16,899.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:901.58,903.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:905.32,907.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:913.64,915.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:918.2,919.19 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:924.2,924.30 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:930.2,935.37 3 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:938.2,939.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:942.2,942.50 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:915.16,917.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:919.19,920.59 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:920.59,922.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:924.30,925.87 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:925.87,928.4 2 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:935.37,937.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:939.16,941.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:942.50,944.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:948.47,949.47 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:949.47,951.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:955.76,956.55 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:962.2,962.55 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:968.2,968.27 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:978.2,978.10 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:956.55,958.15 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:958.15,960.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:962.55,964.15 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:964.15,966.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:968.27,970.15 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:973.3,974.15 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:970.15,972.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:974.15,976.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:982.52,984.39 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:987.2,988.29 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:991.2,991.58 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:984.39,986.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:988.29,990.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:995.50,997.38 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:1000.2,1001.28 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:1004.2,1004.55 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:997.38,999.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_chain.go:1001.28,1003.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:31.59,35.19 3 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:38.2,38.55 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:42.2,42.17 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:35.19,37.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:38.55,40.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:46.68,48.16 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:51.2,51.55 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:48.16,50.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:51.55,53.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:57.85,59.20 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:62.2,63.54 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:67.2,67.16 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:59.20,61.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:63.54,66.3 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:71.91,72.16 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:75.2,76.16 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:79.2,79.54 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:72.16,74.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:76.16,78.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:79.54,81.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:85.73,88.2 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:91.80,92.55 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:92.55,94.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:110.82,113.57 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:118.2,123.68 5 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:129.2,130.57 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:134.2,134.33 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:113.57,115.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:115.8,115.72 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:115.72,117.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:123.68,127.3 3 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:130.57,133.3 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:138.55,141.57 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:146.2,146.46 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:149.2,150.57 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:141.57,143.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:143.8,143.72 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:143.72,145.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:146.46,148.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:150.57,152.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:156.58,159.57 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:165.2,166.16 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:170.2,172.57 3 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:159.57,161.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:161.8,161.72 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:161.72,163.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:166.16,169.3 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:172.57,174.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:178.59,181.2 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:184.66,185.58 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_metadata.go:185.58,187.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:43.38,45.50 2 1 -github.com/ethereum/go-ethereum/core/rawdb/database.go:48.2,48.51 1 1 -github.com/ethereum/go-ethereum/core/rawdb/database.go:51.2,51.20 1 1 -github.com/ethereum/go-ethereum/core/rawdb/database.go:54.2,54.12 1 1 -github.com/ethereum/go-ethereum/core/rawdb/database.go:45.50,47.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:48.51,50.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:51.20,53.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:60.55,61.43 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:65.2,65.25 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:68.2,74.12 5 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:61.43,63.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:65.25,67.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:83.76,85.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:88.75,90.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/database.go:93.99,95.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:98.50,100.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:103.46,105.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:108.64,110.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:113.87,115.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:118.56,120.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:123.56,125.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:128.36,130.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:132.91,146.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/database.go:150.80,152.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:156.57,158.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/database.go:163.126,166.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/database.go:191.2,191.66 1 1 -github.com/ethereum/go-ethereum/core/rawdb/database.go:234.2,234.20 1 1 -github.com/ethereum/go-ethereum/core/rawdb/database.go:241.2,244.8 1 1 -github.com/ethereum/go-ethereum/core/rawdb/database.go:166.16,168.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:191.66,192.47 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:192.47,197.18 2 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:204.4,204.68 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:197.18,199.5 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:199.10,199.49 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:199.49,201.5 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:204.68,207.65 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:207.65,209.6 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:216.9,221.63 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:221.63,224.64 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:224.64,226.6 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:234.20,236.13 2 1 -github.com/ethereum/go-ethereum/core/rawdb/database.go:236.13,239.4 2 1 -github.com/ethereum/go-ethereum/core/rawdb/database.go:249.41,251.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/database.go:256.56,258.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:262.119,264.16 2 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:267.2,267.29 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:264.16,266.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:272.146,274.16 2 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:277.2,278.16 2 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:282.2,282.18 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:274.16,276.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:278.16,281.3 2 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:287.34,289.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:291.52,293.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:302.45,305.2 2 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:307.30,309.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:311.31,313.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:317.75,362.16 4 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:438.2,439.139 2 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:446.2,447.45 2 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:451.2,482.26 7 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:486.2,486.12 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:362.16,368.10 3 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:431.3,432.60 2 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:369.98,370.21 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:371.104,372.20 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:373.112,374.22 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:375.83,376.17 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:377.85,378.29 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:379.108,380.29 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:381.38,382.19 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:383.90,384.19 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:385.100,386.23 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:387.114,388.26 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:389.116,390.26 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:391.100,392.23 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:393.96,394.22 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:395.98,396.22 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:397.105,398.23 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:399.51,400.23 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:401.96,402.27 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:403.83,404.25 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:407.47,408.26 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:411.45,412.28 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:413.11,420.6 2 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:427.4,427.18 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:420.6,421.31 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:421.31,424.11 3 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:427.18,429.5 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:432.60,435.4 2 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:439.139,440.56 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:440.56,443.4 2 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:447.45,449.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/database.go:482.26,484.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/key_length_iterator.go:30.73,35.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/key_length_iterator.go:37.42,39.25 1 1 -github.com/ethereum/go-ethereum/core/rawdb/key_length_iterator.go:46.2,46.14 1 1 -github.com/ethereum/go-ethereum/core/rawdb/key_length_iterator.go:39.25,40.53 1 1 -github.com/ethereum/go-ethereum/core/rawdb/key_length_iterator.go:40.53,42.4 1 1 -github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:26.69,29.2 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:32.65,36.20 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:39.2,40.13 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:36.20,38.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:46.75,49.2 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:52.69,55.2 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:59.62,62.43 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:65.2,66.11 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:62.43,64.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:72.72,75.2 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:78.66,81.2 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:84.80,85.40 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:90.2,91.47 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:85.40,86.61 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:86.61,88.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:95.72,96.52 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:96.52,98.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:102.76,103.51 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:103.51,105.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:109.60,110.49 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:110.49,112.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:116.64,117.48 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_state.go:117.48,119.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:29.61,32.2 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:35.70,36.62 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:36.62,38.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:43.56,44.57 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:44.57,46.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:50.79,52.20 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:55.2,56.66 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:60.2,60.15 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:52.20,54.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:56.66,59.3 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:64.73,66.16 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:69.2,70.42 2 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:66.16,68.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:70.42,72.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:76.67,77.61 1 0 -github.com/ethereum/go-ethereum/core/rawdb/accessors_sync.go:77.61,79.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/schema.go:148.46,152.2 3 1 -github.com/ethereum/go-ethereum/core/rawdb/schema.go:155.44,157.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/schema.go:160.56,162.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/schema.go:165.58,167.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/schema.go:170.42,172.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/schema.go:175.47,177.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/schema.go:180.59,182.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/schema.go:185.63,187.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/schema.go:190.43,192.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/schema.go:195.50,197.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/schema.go:200.70,202.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/schema.go:205.58,207.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/schema.go:210.70,217.2 4 1 -github.com/ethereum/go-ethereum/core/rawdb/schema.go:220.46,222.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/schema.go:225.43,227.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/schema.go:230.39,232.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/schema.go:236.43,237.87 1 0 -github.com/ethereum/go-ethereum/core/rawdb/schema.go:240.2,240.19 1 0 -github.com/ethereum/go-ethereum/core/rawdb/schema.go:237.87,239.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/schema.go:244.41,246.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/schema.go:249.42,251.2 1 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:35.49,38.31 2 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:41.2,47.34 2 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:76.2,76.38 1 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:79.2,83.118 4 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:38.31,40.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:47.34,50.23 2 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:53.3,54.17 2 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:57.3,57.26 1 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:69.3,71.41 2 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:50.23,52.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:54.17,56.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:57.26,62.48 4 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:62.48,63.41 1 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:66.5,66.18 1 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:63.41,65.6 1 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:71.41,74.4 2 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:76.38,78.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:95.128,101.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:104.2,105.54 2 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:108.2,113.19 2 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:135.2,136.20 2 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:165.2,166.36 2 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:169.2,169.17 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:101.16,103.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:105.54,107.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:113.19,115.14 2 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:118.3,119.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:115.14,117.4 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:119.16,122.11 2 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:127.4,127.15 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:123.38,123.38 0 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:124.21,125.11 1 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:127.15,129.5 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:129.10,131.5 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:136.20,137.16 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:143.3,143.27 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:137.16,139.48 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:139.48,141.5 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:143.27,145.59 2 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:149.4,150.41 2 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:153.4,158.11 2 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:145.59,148.5 2 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:150.41,152.5 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:159.28,159.28 0 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:160.21,161.11 1 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:166.36,168.3 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:180.116,182.16 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:185.2,198.37 2 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:237.2,238.38 2 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:242.2,242.9 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:182.16,184.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:198.37,203.22 2 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:203.22,205.65 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:209.4,209.39 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:213.4,219.48 6 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:228.4,228.42 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:205.65,206.10 1 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:209.39,210.10 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:219.48,221.41 2 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:225.5,225.18 1 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:221.41,224.6 2 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:228.42,231.5 2 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:238.38,241.3 2 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:243.19,244.148 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:245.10,246.135 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:259.92,261.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:264.126,266.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:272.118,274.16 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:277.2,290.33 2 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:329.2,330.38 2 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:334.2,334.9 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:274.16,276.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:290.33,293.22 2 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:293.22,295.64 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:299.4,299.37 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:302.4,311.24 6 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:320.4,320.42 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:295.64,296.10 1 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:299.37,300.10 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:311.24,313.41 2 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:317.5,317.18 1 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:313.41,316.6 2 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:320.42,323.5 2 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:330.38,333.3 2 0 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:335.19,336.145 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:337.10,338.132 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:347.94,349.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/chain_iterator.go:352.128,354.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:42.49,47.2 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:51.61,53.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:56.2,57.48 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:60.2,60.19 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:53.16,55.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:57.48,59.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:65.65,67.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:70.2,70.31 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:67.16,69.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:76.74,78.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:87.2,87.22 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:94.2,95.16 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:101.2,101.26 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:108.2,108.15 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:78.16,80.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:87.22,89.48 2 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:92.3,92.16 1 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:89.48,91.4 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:95.16,97.3 1 0 -github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:101.26,104.48 3 1 -github.com/ethereum/go-ethereum/core/rawdb/freezer_meta.go:104.48,106.4 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:79.147,86.16 5 1 -github.com/ethereum/go-ethereum/core/headerchain.go:89.2,100.29 3 1 -github.com/ethereum/go-ethereum/core/headerchain.go:103.2,104.71 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:109.2,111.16 3 1 -github.com/ethereum/go-ethereum/core/headerchain.go:86.16,88.3 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:100.29,102.3 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:104.71,105.54 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:105.54,107.4 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:116.65,117.48 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:121.2,122.19 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:125.2,125.15 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:117.48,120.3 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:122.19,124.3 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:139.61,141.23 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:148.2,153.46 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:183.2,183.38 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:190.2,195.38 5 1 -github.com/ethereum/go-ethereum/core/headerchain.go:199.2,202.12 4 1 -github.com/ethereum/go-ethereum/core/headerchain.go:141.23,143.3 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:153.46,155.44 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:165.3,170.67 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:155.44,157.31 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:160.4,160.39 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:157.31,158.10 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:170.67,172.23 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:175.4,177.21 3 1 -github.com/ethereum/go-ethereum/core/headerchain.go:172.23,173.10 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:177.21,179.5 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:183.38,188.3 4 1 -github.com/ethereum/go-ethereum/core/headerchain.go:195.38,197.3 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:209.75,210.23 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:213.2,214.16 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:217.2,223.33 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:252.2,252.24 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:257.2,257.38 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:260.2,260.27 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:210.23,212.3 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:214.16,216.3 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:223.33,228.25 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:233.3,239.20 4 1 -github.com/ethereum/go-ethereum/core/headerchain.go:249.3,249.29 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:228.25,230.4 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:230.9,232.4 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:239.20,248.4 6 1 -github.com/ethereum/go-ethereum/core/headerchain.go:252.24,255.3 2 0 -github.com/ethereum/go-ethereum/core/headerchain.go:257.38,259.3 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:270.120,272.16 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:275.2,287.82 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:297.2,297.133 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:301.2,301.42 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:304.2,305.20 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:272.16,274.3 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:287.82,289.3 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:289.8,289.19 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:289.19,290.20 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:293.3,293.21 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:290.20,292.4 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:297.133,299.3 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:301.42,303.3 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:308.95,310.34 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:332.2,333.20 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:346.2,350.23 3 1 -github.com/ethereum/go-ethereum/core/headerchain.go:362.2,362.15 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:310.34,311.63 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:322.3,322.37 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:326.3,326.54 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:311.63,320.4 4 0 -github.com/ethereum/go-ethereum/core/headerchain.go:322.37,324.4 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:326.54,328.4 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:333.20,335.46 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:343.3,343.29 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:335.46,337.27 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:340.4,340.23 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:337.27,339.5 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:350.23,352.25 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:357.3,357.35 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:352.25,355.4 2 0 -github.com/ethereum/go-ethereum/core/headerchain.go:357.35,359.4 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:375.123,376.24 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:379.2,380.16 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:384.2,388.41 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:394.2,394.21 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:397.2,398.24 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:376.24,378.3 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:380.16,382.3 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:388.41,390.87 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:390.87,392.4 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:394.21,396.3 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:406.126,407.23 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:410.2,410.19 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:417.2,417.20 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:437.2,437.21 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:407.23,409.3 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:410.19,412.58 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:415.3,415.26 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:412.58,414.4 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:417.20,418.58 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:425.3,425.28 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:428.3,431.20 4 0 -github.com/ethereum/go-ethereum/core/headerchain.go:434.3,435.11 2 0 -github.com/ethereum/go-ethereum/core/headerchain.go:418.58,420.59 2 0 -github.com/ethereum/go-ethereum/core/headerchain.go:420.59,423.5 2 0 -github.com/ethereum/go-ethereum/core/headerchain.go:425.28,427.4 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:431.20,433.4 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:442.72,444.44 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:447.2,448.15 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:452.2,453.11 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:444.44,446.3 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:448.15,450.3 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:458.81,460.48 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:463.2,464.19 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:468.2,469.15 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:460.48,462.3 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:464.19,466.3 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:474.72,476.19 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:479.2,479.36 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:476.19,478.3 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:485.72,486.68 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:489.2,489.50 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:486.68,488.3 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:494.71,496.29 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:499.2,499.35 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:496.29,498.3 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:506.76,509.69 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:517.2,520.29 3 0 -github.com/ethereum/go-ethereum/core/headerchain.go:523.2,523.16 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:536.2,536.15 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:539.2,539.16 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:509.69,510.29 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:510.29,513.4 2 0 -github.com/ethereum/go-ethereum/core/headerchain.go:513.9,515.4 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:520.29,522.3 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:523.16,525.10 2 0 -github.com/ethereum/go-ethereum/core/headerchain.go:528.3,533.11 6 0 -github.com/ethereum/go-ethereum/core/headerchain.go:525.10,526.9 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:536.15,538.3 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:542.68,544.2 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:548.54,550.2 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:554.61,558.2 3 1 -github.com/ethereum/go-ethereum/core/headerchain.go:574.114,580.100 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:644.2,644.38 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:648.2,650.24 3 1 -github.com/ethereum/go-ethereum/core/headerchain.go:580.100,585.20 3 1 -github.com/ethereum/go-ethereum/core/headerchain.go:588.3,598.22 3 1 -github.com/ethereum/go-ethereum/core/headerchain.go:606.3,607.45 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:610.3,617.13 5 1 -github.com/ethereum/go-ethereum/core/headerchain.go:623.3,626.28 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:585.20,587.4 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:598.22,600.31 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:600.31,603.5 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:607.45,609.4 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:617.13,618.71 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:621.4,621.18 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:618.71,620.5 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:626.28,629.24 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:633.4,633.32 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:640.4,640.41 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:629.24,632.5 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:633.32,634.21 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:637.5,638.37 2 1 -github.com/ethereum/go-ethereum/core/headerchain.go:634.21,636.6 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:644.38,646.3 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:654.55,656.2 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:659.53,659.73 1 1 -github.com/ethereum/go-ethereum/core/headerchain.go:662.50,662.70 1 0 -github.com/ethereum/go-ethereum/core/headerchain.go:666.79,668.2 1 0 -github.com/ethereum/go-ethereum/core/gaspool.go:29.51,30.41 1 1 -github.com/ethereum/go-ethereum/core/gaspool.go:33.2,34.11 2 1 -github.com/ethereum/go-ethereum/core/gaspool.go:30.41,31.40 1 0 -github.com/ethereum/go-ethereum/core/gaspool.go:39.48,40.26 1 1 -github.com/ethereum/go-ethereum/core/gaspool.go:43.2,44.12 2 1 -github.com/ethereum/go-ethereum/core/gaspool.go:40.26,42.3 1 1 -github.com/ethereum/go-ethereum/core/gaspool.go:48.33,50.2 1 0 -github.com/ethereum/go-ethereum/core/gaspool.go:52.36,54.2 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:189.53,191.34 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:195.2,195.25 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:199.2,199.24 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:203.2,203.27 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:207.2,207.26 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:211.2,211.27 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:215.2,215.26 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:219.2,219.23 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:223.2,223.13 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:191.34,194.3 2 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:195.25,198.3 2 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:199.24,202.3 2 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:203.27,206.3 2 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:207.26,210.3 2 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:211.27,214.3 2 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:215.26,218.3 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:219.23,222.3 2 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:279.96,303.37 4 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:307.2,315.46 5 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:327.2,331.13 4 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:303.37,306.3 2 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:315.46,318.59 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:321.3,321.59 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:318.59,320.4 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:321.59,323.4 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:337.28,355.6 7 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:355.6,356.10 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:358.33,359.23 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:365.34,367.10 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:370.19,376.78 5 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:382.18,384.33 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:398.4,398.20 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:401.20,402.27 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:359.23,362.5 2 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:376.78,379.5 2 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:384.33,386.35 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:390.5,390.60 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:386.35,387.14 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:390.60,392.30 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:395.6,395.48 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:392.30,394.7 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:402.27,404.61 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:407.5,407.21 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:404.61,406.6 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:414.28,422.25 4 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:425.2,425.38 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:422.25,424.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:430.84,432.2 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:435.41,440.2 3 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:444.49,451.24 5 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:460.2,460.70 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:451.24,454.27 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:457.3,457.33 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:454.27,456.4 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:465.55,470.2 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:474.40,479.2 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:483.40,485.36 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:488.2,489.34 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:492.2,492.24 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:485.36,487.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:489.34,491.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:497.110,502.39 4 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:505.2,506.37 2 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:509.2,509.24 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:502.39,504.3 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:506.37,508.3 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:514.95,519.40 4 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:522.2,523.38 2 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:526.2,526.24 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:519.40,521.3 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:523.38,525.3 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:536.85,541.39 4 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:557.2,557.16 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:541.39,545.49 2 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:553.3,553.19 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:545.49,546.27 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:546.27,547.80 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:547.80,549.11 2 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:553.19,555.4 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:561.47,566.2 3 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:571.67,573.41 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:581.2,581.12 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:573.41,574.52 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:577.3,577.48 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:574.52,576.4 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:577.48,579.4 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:586.73,588.54 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:592.2,592.58 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:596.2,596.35 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:601.2,601.27 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:605.2,605.35 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:609.2,609.35 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:612.2,612.35 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:616.2,616.44 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:620.2,621.16 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:625.2,625.53 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:629.2,629.51 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:634.2,634.59 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:638.2,639.16 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:642.2,642.24 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:645.2,645.12 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:588.54,590.3 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:592.58,594.3 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:596.35,598.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:601.27,603.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:605.35,607.3 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:609.35,611.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:612.35,614.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:616.44,618.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:621.16,623.3 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:625.53,627.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:629.51,631.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:634.59,636.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:639.16,641.3 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:642.24,644.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:655.87,658.31 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:665.2,668.53 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:674.2,674.93 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:711.2,712.66 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:736.2,737.16 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:741.2,741.42 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:746.2,746.13 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:749.2,752.22 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:658.31,662.3 3 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:668.53,672.3 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:674.93,676.46 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:685.3,685.62 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:693.3,696.27 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:702.3,704.27 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:676.46,680.4 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:685.62,688.4 2 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:696.27,700.4 3 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:704.27,708.4 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:712.66,715.16 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:720.3,720.17 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:725.3,733.25 7 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:715.16,718.4 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:720.17,724.4 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:737.16,739.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:741.42,745.3 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:746.13,748.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:758.111,761.29 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:764.2,765.15 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:771.2,771.16 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:781.2,781.42 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:784.2,784.12 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:789.2,789.42 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:792.2,792.24 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:761.29,763.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:765.15,769.3 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:771.16,775.3 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:775.8,778.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:781.42,783.3 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:784.12,787.3 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:789.42,791.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:797.75,799.56 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:802.2,802.48 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:799.56,801.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:802.48,804.3 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:811.98,813.31 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:816.2,819.15 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:827.2,827.16 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:836.2,840.13 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:813.31,815.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:819.15,825.3 4 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:827.16,831.3 3 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:831.8,834.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:848.65,850.2 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:854.59,857.2 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:864.66,866.2 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:869.70,871.2 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:874.64,877.2 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:883.60,886.2 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:889.80,895.25 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:914.2,914.20 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:919.2,924.30 5 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:932.2,933.10 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:936.2,936.13 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:895.25,897.37 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:905.3,906.17 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:912.3,912.26 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:897.37,900.12 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:906.17,909.12 3 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:914.20,916.3 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:924.30,925.28 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:928.3,929.12 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:925.28,927.4 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:933.10,935.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:941.95,944.25 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:951.2,952.20 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:944.25,947.30 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:947.30,949.4 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:957.61,959.30 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:975.2,975.15 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:959.30,961.16 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:964.3,966.89 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:973.3,973.20 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:961.16,962.12 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:966.89,968.4 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:968.9,968.94 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:968.94,970.4 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:979.62,981.2 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:985.48,987.2 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:991.65,994.15 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:997.2,1001.16 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1004.2,1004.32 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1008.2,1008.51 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1027.2,1027.47 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:994.15,996.3 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1001.16,1003.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1004.32,1006.3 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1008.51,1009.55 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1009.55,1011.23 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1015.4,1015.32 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1020.4,1023.10 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1011.23,1013.5 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1015.32,1018.5 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1027.47,1028.47 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1032.3,1032.21 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1028.47,1031.4 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1032.21,1035.4 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1041.94,1042.9 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1043.64,1044.28 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1045.30,1046.30 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1052.78,1053.9 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1054.32,1055.28 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1056.30,1057.30 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1062.57,1063.9 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1064.33,1064.33 0 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1065.30,1065.30 0 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1072.41,1083.6 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1083.6,1085.38 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1097.3,1097.10 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1085.38,1095.4 5 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1098.33,1100.20 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1105.4,1106.32 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1108.35,1110.28 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1115.4,1116.32 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1118.36,1122.40 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1125.4,1125.30 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1127.18,1128.17 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1130.31,1132.22 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1135.4,1136.10 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1100.20,1102.5 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1102.10,1104.5 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1110.28,1112.5 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1112.10,1114.5 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1122.40,1124.5 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1132.22,1134.5 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1142.144,1143.27 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1146.2,1149.42 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1155.2,1156.18 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1174.2,1179.18 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1200.2,1208.30 6 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1215.2,1215.21 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1143.27,1145.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1149.42,1154.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1156.18,1161.28 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1168.3,1169.32 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1161.28,1163.31 2 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1163.31,1165.5 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1169.32,1171.4 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1179.18,1181.27 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1192.3,1193.40 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1197.3,1197.36 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1181.27,1182.88 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1182.88,1186.5 2 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1186.10,1189.5 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1193.40,1196.4 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1208.30,1210.33 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1213.3,1213.23 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1210.33,1212.4 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1215.21,1217.30 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1220.3,1220.37 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1217.30,1219.4 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1226.59,1230.60 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1291.2,1291.20 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1294.2,1295.16 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1299.2,1312.48 10 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1230.60,1235.79 3 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1235.79,1237.4 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1237.9,1244.18 3 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1244.18,1249.25 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1256.5,1257.87 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1249.25,1254.6 2 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1259.10,1260.43 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1267.5,1267.43 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1274.5,1274.34 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1286.5,1286.55 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1260.43,1262.84 2 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1262.84,1265.7 2 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1267.43,1269.84 2 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1269.84,1272.7 2 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1274.34,1276.84 2 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1280.6,1281.84 2 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1276.84,1279.7 2 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1281.84,1284.7 2 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1291.20,1293.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1295.16,1298.3 2 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1318.88,1323.32 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1378.2,1378.17 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1323.32,1325.18 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1329.3,1330.31 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1334.3,1337.28 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1341.3,1346.30 4 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1352.3,1357.34 4 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1367.3,1369.33 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1373.3,1373.19 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1325.18,1326.12 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1330.31,1333.4 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1337.28,1340.4 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1346.30,1348.38 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1348.38,1350.5 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1357.34,1359.28 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1364.4,1364.47 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1359.28,1363.5 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1369.33,1371.4 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1373.19,1376.4 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1384.39,1386.36 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1389.2,1389.40 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1393.2,1396.39 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1403.2,1404.61 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1441.2,1441.61 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1465.2,1465.63 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1386.36,1388.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1389.40,1391.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1396.39,1398.83 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1398.83,1400.4 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1404.61,1410.25 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1410.25,1415.105 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1415.105,1416.43 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1416.43,1420.30 3 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1429.6,1431.44 3 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1434.6,1434.15 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1420.30,1428.7 4 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1431.44,1433.7 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1441.61,1442.127 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1442.127,1443.35 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1443.35,1447.29 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1456.5,1458.35 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1461.5,1461.14 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1447.29,1455.6 4 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1458.35,1460.6 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1469.37,1471.34 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1474.2,1474.39 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1479.2,1480.31 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1485.2,1488.80 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1471.34,1473.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1474.39,1476.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1480.31,1481.34 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1481.34,1483.4 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1488.80,1495.47 4 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1504.3,1505.50 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1495.47,1496.38 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1499.4,1501.12 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1496.38,1498.5 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1505.50,1509.4 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1520.43,1522.39 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1522.39,1527.27 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1533.3,1534.28 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1539.3,1541.31 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1548.3,1549.33 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1553.3,1553.51 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1567.3,1567.19 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1527.27,1531.4 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1534.28,1538.4 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1541.31,1547.4 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1549.33,1551.4 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1553.51,1555.30 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1562.4,1564.52 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1555.30,1561.5 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1567.19,1569.4 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1581.51,1581.68 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1582.51,1582.99 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1583.51,1583.78 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1595.78,1600.29 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1603.2,1603.11 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1600.29,1602.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1607.58,1610.2 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1612.36,1614.2 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1618.62,1619.58 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1622.2,1622.14 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1619.58,1621.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1626.48,1629.2 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1632.52,1633.58 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1633.58,1635.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1640.50,1641.21 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1648.2,1648.18 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1641.21,1643.36 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1646.3,1646.23 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1643.36,1645.4 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1652.48,1653.35 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1656.2,1656.16 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1653.35,1655.3 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1679.30,1684.2 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1689.117,1693.11 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1700.2,1700.12 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1693.11,1694.36 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1694.36,1695.28 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1695.28,1697.5 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1700.12,1701.37 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1701.37,1702.29 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1702.29,1704.5 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1710.61,1714.37 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1717.2,1717.24 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1714.37,1716.3 1 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1721.66,1726.2 3 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1729.67,1734.2 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1737.32,1742.2 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1745.37,1750.2 3 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1753.38,1758.2 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1761.32,1766.2 3 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1769.59,1776.11 5 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1776.11,1778.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1778.8,1780.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1784.45,1789.9 4 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1792.2,1792.9 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1796.2,1800.25 4 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1789.9,1791.3 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1792.9,1795.3 2 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1805.59,1810.34 4 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1817.2,1817.17 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1810.34,1811.28 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1811.28,1815.4 3 0 -github.com/ethereum/go-ethereum/core/tx_pool.go:1821.75,1823.73 2 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1829.2,1829.14 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1823.73,1824.40 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1827.3,1827.14 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1824.40,1826.4 1 1 -github.com/ethereum/go-ethereum/core/tx_pool.go:1833.42,1835.2 1 1 -github.com/ethereum/go-ethereum/core/evm.go:39.107,47.19 2 1 -github.com/ethereum/go-ethereum/core/evm.go:52.2,52.27 1 1 -github.com/ethereum/go-ethereum/core/evm.go:55.2,55.45 1 1 -github.com/ethereum/go-ethereum/core/evm.go:58.2,69.3 1 1 -github.com/ethereum/go-ethereum/core/evm.go:47.19,49.3 1 1 -github.com/ethereum/go-ethereum/core/evm.go:49.8,51.3 1 1 -github.com/ethereum/go-ethereum/core/evm.go:52.27,54.3 1 1 -github.com/ethereum/go-ethereum/core/evm.go:55.45,57.3 1 1 -github.com/ethereum/go-ethereum/core/evm.go:73.48,78.2 1 1 -github.com/ethereum/go-ethereum/core/evm.go:81.82,86.36 2 1 -github.com/ethereum/go-ethereum/core/evm.go:86.36,88.22 1 0 -github.com/ethereum/go-ethereum/core/evm.go:91.3,91.67 1 0 -github.com/ethereum/go-ethereum/core/evm.go:95.3,98.7 3 0 -github.com/ethereum/go-ethereum/core/evm.go:110.3,110.23 1 0 -github.com/ethereum/go-ethereum/core/evm.go:88.22,90.4 1 0 -github.com/ethereum/go-ethereum/core/evm.go:91.67,93.4 1 0 -github.com/ethereum/go-ethereum/core/evm.go:98.7,100.21 2 0 -github.com/ethereum/go-ethereum/core/evm.go:103.4,106.28 4 0 -github.com/ethereum/go-ethereum/core/evm.go:100.21,101.10 1 0 -github.com/ethereum/go-ethereum/core/evm.go:106.28,108.5 1 0 -github.com/ethereum/go-ethereum/core/evm.go:116.76,118.2 1 1 -github.com/ethereum/go-ethereum/core/evm.go:121.81,135.2 7 1 -github.com/ethereum/go-ethereum/core/state_processor.go:44.109,50.2 1 1 -github.com/ethereum/go-ethereum/core/state_processor.go:59.139,70.111 2 1 -github.com/ethereum/go-ethereum/core/state_processor.go:73.2,76.42 3 1 -github.com/ethereum/go-ethereum/core/state_processor.go:90.2,92.41 2 1 -github.com/ethereum/go-ethereum/core/state_processor.go:70.111,72.3 1 1 -github.com/ethereum/go-ethereum/core/state_processor.go:76.42,78.17 2 1 -github.com/ethereum/go-ethereum/core/state_processor.go:81.3,83.17 3 1 -github.com/ethereum/go-ethereum/core/state_processor.go:86.3,87.45 2 1 -github.com/ethereum/go-ethereum/core/state_processor.go:78.17,80.4 1 1 -github.com/ethereum/go-ethereum/core/state_processor.go:83.17,85.4 1 1 -github.com/ethereum/go-ethereum/core/state_processor.go:95.270,102.16 4 1 -github.com/ethereum/go-ethereum/core/state_processor.go:107.2,108.37 2 1 -github.com/ethereum/go-ethereum/core/state_processor.go:113.2,118.21 3 1 -github.com/ethereum/go-ethereum/core/state_processor.go:123.2,127.21 3 1 -github.com/ethereum/go-ethereum/core/state_processor.go:132.2,137.21 6 1 -github.com/ethereum/go-ethereum/core/state_processor.go:102.16,104.3 1 1 -github.com/ethereum/go-ethereum/core/state_processor.go:108.37,110.3 1 1 -github.com/ethereum/go-ethereum/core/state_processor.go:110.8,112.3 1 1 -github.com/ethereum/go-ethereum/core/state_processor.go:118.21,120.3 1 1 -github.com/ethereum/go-ethereum/core/state_processor.go:120.8,122.3 1 1 -github.com/ethereum/go-ethereum/core/state_processor.go:127.21,129.3 1 1 -github.com/ethereum/go-ethereum/core/state_processor.go:144.230,146.16 2 1 -github.com/ethereum/go-ethereum/core/state_processor.go:150.2,152.113 3 1 -github.com/ethereum/go-ethereum/core/state_processor.go:146.16,148.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:42.104,49.58 2 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:49.58,52.55 2 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:55.3,63.88 3 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:66.3,68.20 2 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:71.3,71.21 1 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:74.3,74.14 1 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:80.3,80.58 1 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:52.55,54.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:63.88,65.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:68.20,70.4 1 0 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:71.21,73.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:74.14,76.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:76.9,78.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:97.103,105.2 1 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:109.56,111.33 1 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:116.2,117.32 2 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:120.2,120.32 1 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:124.2,124.74 1 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:111.33,114.3 2 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:117.32,119.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:120.32,122.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:132.56,134.33 1 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:138.2,138.34 1 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:141.2,141.34 1 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:145.2,145.34 1 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:134.33,136.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:138.34,140.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:141.34,143.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:149.52,150.18 1 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:153.2,153.38 1 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:150.18,152.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:157.51,158.49 1 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:161.2,161.36 1 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:158.49,160.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:165.48,167.2 1 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:170.43,172.2 1 1 -github.com/ethereum/go-ethereum/core/blockchain_insert.go:175.43,177.2 1 0 -github.com/ethereum/go-ethereum/core/bor_fee_log.go:28.3,42.2 1 1 -github.com/ethereum/go-ethereum/core/bor_fee_log.go:57.3,71.2 1 1 -github.com/ethereum/go-ethereum/core/bor_fee_log.go:86.3,88.30 1 1 -github.com/ethereum/go-ethereum/core/bor_fee_log.go:92.2,101.31 3 1 -github.com/ethereum/go-ethereum/core/bor_fee_log.go:106.2,115.4 1 1 -github.com/ethereum/go-ethereum/core/bor_fee_log.go:88.30,90.3 1 1 -github.com/ethereum/go-ethereum/core/bor_fee_log.go:101.31,103.3 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:36.40,36.57 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:37.40,37.62 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:38.40,38.67 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:40.41,42.2 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:44.39,50.2 5 1 -github.com/ethereum/go-ethereum/core/tx_list.go:61.36,66.2 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:69.60,71.2 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:75.50,77.27 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:80.2,80.35 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:77.27,79.3 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:86.68,90.53 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:96.2,96.20 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:99.2,99.16 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:90.53,94.3 3 1 -github.com/ethereum/go-ethereum/core/tx_list.go:96.20,98.3 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:107.87,110.22 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:113.2,113.16 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:110.22,112.3 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:116.32,118.29 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:121.2,122.15 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:118.29,120.3 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:127.87,131.33 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:137.2,137.22 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:140.2,140.16 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:131.33,132.17 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:132.17,135.4 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:137.22,139.3 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:145.61,147.31 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:151.2,154.53 3 1 -github.com/ethereum/go-ethereum/core/tx_list.go:158.2,162.20 3 1 -github.com/ethereum/go-ethereum/core/tx_list.go:165.2,165.14 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:147.31,149.3 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:154.53,157.3 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:162.20,164.3 1 0 -github.com/ethereum/go-ethereum/core/tx_list.go:170.49,173.9 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:177.2,177.37 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:183.2,186.13 3 1 -github.com/ethereum/go-ethereum/core/tx_list.go:173.9,175.3 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:177.37,178.29 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:178.29,180.9 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:196.62,198.49 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:202.2,203.80 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:208.2,210.14 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:198.49,200.3 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:203.80,207.3 3 1 -github.com/ethereum/go-ethereum/core/tx_list.go:214.33,216.2 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:218.52,220.20 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:227.2,227.16 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:220.20,222.30 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:225.3,225.38 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:222.30,224.4 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:233.52,239.2 4 1 -github.com/ethereum/go-ethereum/core/tx_list.go:243.56,246.2 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:262.37,268.2 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:272.55,274.2 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:281.90,284.16 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:306.2,307.48 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:310.2,310.37 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:313.2,313.18 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:284.16,285.61 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:289.3,301.86 7 1 -github.com/ethereum/go-ethereum/core/tx_list.go:285.61,287.4 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:301.86,303.4 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:307.48,309.3 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:310.37,312.3 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:319.63,321.2 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:332.103,334.59 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:337.2,341.59 3 1 -github.com/ethereum/go-ethereum/core/tx_list.go:345.2,345.23 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:348.2,350.14 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:359.2,360.26 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:334.59,336.3 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:341.59,343.3 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:345.23,347.3 1 0 -github.com/ethereum/go-ethereum/core/tx_list.go:350.14,352.30 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:357.3,357.60 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:352.30,353.43 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:353.43,355.5 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:357.60,357.90 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:365.56,367.2 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:372.75,375.46 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:379.2,379.14 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:382.2,382.18 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:375.46,377.3 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:379.14,380.62 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:380.62,380.91 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:392.57,394.2 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:397.28,399.2 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:402.31,404.2 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:409.47,411.2 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:415.51,417.2 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:428.36,428.58 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:429.36,429.83 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:431.41,432.37 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:433.10,434.14 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:435.9,436.15 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:437.10,438.47 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:442.54,443.22 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:450.2,450.36 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:454.2,454.26 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:443.22,445.54 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:445.54,447.4 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:450.36,452.3 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:457.41,460.2 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:462.39,469.2 6 1 -github.com/ethereum/go-ethereum/core/tx_list.go:501.51,505.2 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:508.63,509.11 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:513.2,513.26 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:509.11,511.3 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:519.43,522.64 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:526.2,526.12 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:522.64,524.3 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:531.64,537.2 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:541.81,543.22 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:553.2,553.22 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:558.2,558.34 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:543.22,545.42 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:550.3,550.8 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:545.42,548.12 3 0 -github.com/ethereum/go-ethereum/core/tx_list.go:553.22,555.3 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:565.82,567.16 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:594.2,594.25 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:600.2,600.19 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:567.16,568.96 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:568.96,571.41 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:576.4,576.30 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:571.41,573.13 2 0 -github.com/ethereum/go-ethereum/core/tx_list.go:577.9,578.33 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:583.4,584.41 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:589.4,590.25 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:578.33,580.10 1 0 -github.com/ethereum/go-ethereum/core/tx_list.go:584.41,586.13 2 0 -github.com/ethereum/go-ethereum/core/tx_list.go:594.25,595.27 1 0 -github.com/ethereum/go-ethereum/core/tx_list.go:598.3,598.20 1 0 -github.com/ethereum/go-ethereum/core/tx_list.go:595.27,597.4 1 0 -github.com/ethereum/go-ethereum/core/tx_list.go:604.33,610.77 6 1 -github.com/ethereum/go-ethereum/core/tx_list.go:614.2,623.37 4 1 -github.com/ethereum/go-ethereum/core/tx_list.go:626.2,627.39 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:610.77,613.3 2 1 -github.com/ethereum/go-ethereum/core/tx_list.go:623.37,625.3 1 1 -github.com/ethereum/go-ethereum/core/tx_list.go:632.53,635.2 2 1 -github.com/ethereum/go-ethereum/core/bor_blockchain.go:10.76,11.54 1 1 -github.com/ethereum/go-ethereum/core/bor_blockchain.go:16.2,17.19 2 1 -github.com/ethereum/go-ethereum/core/bor_blockchain.go:22.2,23.20 2 1 -github.com/ethereum/go-ethereum/core/bor_blockchain.go:28.2,29.16 2 0 -github.com/ethereum/go-ethereum/core/bor_blockchain.go:11.54,13.3 1 0 -github.com/ethereum/go-ethereum/core/bor_blockchain.go:17.19,19.3 1 0 -github.com/ethereum/go-ethereum/core/bor_blockchain.go:23.20,25.3 1 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:40.52,40.74 1 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:41.52,41.66 1 0 -github.com/ethereum/go-ethereum/core/tx_journal.go:51.43,55.2 1 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:59.78,61.57 1 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:65.2,66.16 2 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:69.2,73.15 3 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:76.2,82.44 3 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:90.2,94.6 2 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:114.2,116.16 2 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:61.57,63.3 1 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:66.16,68.3 1 0 -github.com/ethereum/go-ethereum/core/tx_journal.go:73.15,73.39 1 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:82.44,83.32 1 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:83.32,84.18 1 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:84.18,87.5 2 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:94.6,97.42 2 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:107.3,109.52 2 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:97.42,98.21 1 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:101.4,101.23 1 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:104.4,104.9 1 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:98.21,100.5 1 0 -github.com/ethereum/go-ethereum/core/tx_journal.go:101.23,103.5 1 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:109.52,112.4 2 0 -github.com/ethereum/go-ethereum/core/tx_journal.go:120.63,121.27 1 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:124.2,124.55 1 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:127.2,127.12 1 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:121.27,123.3 1 0 -github.com/ethereum/go-ethereum/core/tx_journal.go:124.55,126.3 1 0 -github.com/ethereum/go-ethereum/core/tx_journal.go:132.83,134.27 1 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:141.2,142.16 2 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:145.2,146.26 2 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:155.2,158.68 2 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:161.2,162.16 2 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:165.2,168.12 3 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:134.27,135.48 1 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:138.3,138.23 1 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:135.48,137.4 1 0 -github.com/ethereum/go-ethereum/core/tx_journal.go:142.16,144.3 1 0 -github.com/ethereum/go-ethereum/core/tx_journal.go:146.26,147.26 1 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:153.3,153.24 1 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:147.26,148.53 1 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:148.53,151.5 2 0 -github.com/ethereum/go-ethereum/core/tx_journal.go:158.68,160.3 1 0 -github.com/ethereum/go-ethereum/core/tx_journal.go:162.16,164.3 1 0 -github.com/ethereum/go-ethereum/core/tx_journal.go:172.41,175.27 2 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:179.2,179.12 1 1 -github.com/ethereum/go-ethereum/core/tx_journal.go:175.27,178.3 2 1 -github.com/ethereum/go-ethereum/core/tx_noncer.go:36.52,41.2 1 1 -github.com/ethereum/go-ethereum/core/tx_noncer.go:45.54,51.36 3 1 -github.com/ethereum/go-ethereum/core/tx_noncer.go:54.2,54.25 1 1 -github.com/ethereum/go-ethereum/core/tx_noncer.go:51.36,53.3 1 1 -github.com/ethereum/go-ethereum/core/tx_noncer.go:59.61,64.2 3 1 -github.com/ethereum/go-ethereum/core/tx_noncer.go:68.68,72.36 3 1 -github.com/ethereum/go-ethereum/core/tx_noncer.go:75.2,75.31 1 1 -github.com/ethereum/go-ethereum/core/tx_noncer.go:78.2,78.26 1 1 -github.com/ethereum/go-ethereum/core/tx_noncer.go:72.36,74.3 1 0 -github.com/ethereum/go-ethereum/core/tx_noncer.go:75.31,77.3 1 0 -github.com/ethereum/go-ethereum/core/tx_noncer.go:82.60,87.2 3 1 -github.com/ethereum/go-ethereum/core/bloom_indexer.go:49.78,57.2 3 0 -github.com/ethereum/go-ethereum/core/bloom_indexer.go:61.102,65.2 3 0 -github.com/ethereum/go-ethereum/core/bloom_indexer.go:69.81,73.2 3 0 -github.com/ethereum/go-ethereum/core/bloom_indexer.go:77.39,79.44 2 0 -github.com/ethereum/go-ethereum/core/bloom_indexer.go:86.2,86.22 1 0 -github.com/ethereum/go-ethereum/core/bloom_indexer.go:79.44,81.17 2 0 -github.com/ethereum/go-ethereum/core/bloom_indexer.go:84.3,84.87 1 0 -github.com/ethereum/go-ethereum/core/bloom_indexer.go:81.17,83.4 1 0 -github.com/ethereum/go-ethereum/core/bloom_indexer.go:90.54,92.2 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis_account.go:18.55,28.22 4 1 -github.com/ethereum/go-ethereum/core/gen_genesis_account.go:34.2,37.27 4 1 -github.com/ethereum/go-ethereum/core/gen_genesis_account.go:28.22,30.31 2 1 -github.com/ethereum/go-ethereum/core/gen_genesis_account.go:30.31,32.4 1 1 -github.com/ethereum/go-ethereum/core/gen_genesis_account.go:41.60,50.52 3 1 -github.com/ethereum/go-ethereum/core/gen_genesis_account.go:53.2,53.21 1 1 -github.com/ethereum/go-ethereum/core/gen_genesis_account.go:56.2,56.24 1 1 -github.com/ethereum/go-ethereum/core/gen_genesis_account.go:62.2,62.24 1 1 -github.com/ethereum/go-ethereum/core/gen_genesis_account.go:65.2,66.22 2 1 -github.com/ethereum/go-ethereum/core/gen_genesis_account.go:69.2,69.27 1 1 -github.com/ethereum/go-ethereum/core/gen_genesis_account.go:72.2,72.12 1 1 -github.com/ethereum/go-ethereum/core/gen_genesis_account.go:50.52,52.3 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis_account.go:53.21,55.3 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis_account.go:56.24,58.33 2 1 -github.com/ethereum/go-ethereum/core/gen_genesis_account.go:58.33,60.4 1 1 -github.com/ethereum/go-ethereum/core/gen_genesis_account.go:62.24,64.3 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis_account.go:66.22,68.3 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis_account.go:69.27,71.3 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:75.58,77.49 2 1 -github.com/ethereum/go-ethereum/core/genesis.go:80.2,81.25 2 1 -github.com/ethereum/go-ethereum/core/genesis.go:84.2,84.12 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:77.49,79.3 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:81.25,83.3 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:89.71,91.16 2 1 -github.com/ethereum/go-ethereum/core/genesis.go:94.2,94.33 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:102.2,103.16 2 1 -github.com/ethereum/go-ethereum/core/genesis.go:106.2,107.16 2 1 -github.com/ethereum/go-ethereum/core/genesis.go:110.2,110.18 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:91.16,93.3 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:94.33,98.43 4 1 -github.com/ethereum/go-ethereum/core/genesis.go:98.43,100.4 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:103.16,105.3 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:107.16,109.3 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:115.80,117.16 2 1 -github.com/ethereum/go-ethereum/core/genesis.go:120.2,121.12 2 1 -github.com/ethereum/go-ethereum/core/genesis.go:117.16,119.3 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:126.68,129.20 3 0 -github.com/ethereum/go-ethereum/core/genesis.go:158.2,159.12 2 0 -github.com/ethereum/go-ethereum/core/genesis.go:129.20,130.51 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:130.51,132.4 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:133.8,140.15 2 0 -github.com/ethereum/go-ethereum/core/genesis.go:152.3,152.21 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:141.34,142.35 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:143.34,144.42 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:145.34,146.42 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:147.33,148.41 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:149.34,150.42 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:152.21,154.4 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:154.9,156.4 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:196.56,198.20 2 1 -github.com/ethereum/go-ethereum/core/genesis.go:201.2,202.56 2 1 -github.com/ethereum/go-ethereum/core/genesis.go:206.2,206.12 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:198.20,200.3 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:202.56,205.3 2 0 -github.com/ethereum/go-ethereum/core/genesis.go:209.52,211.2 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:219.47,221.2 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:236.103,238.2 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:240.179,241.45 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:245.2,246.31 2 1 -github.com/ethereum/go-ethereum/core/genesis.go:261.2,262.93 2 1 -github.com/ethereum/go-ethereum/core/genesis.go:278.2,278.20 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:285.2,286.33 2 1 -github.com/ethereum/go-ethereum/core/genesis.go:289.2,289.44 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:292.2,292.54 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:296.2,297.22 2 1 -github.com/ethereum/go-ethereum/core/genesis.go:307.2,307.59 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:318.2,319.19 2 1 -github.com/ethereum/go-ethereum/core/genesis.go:322.2,323.65 2 1 -github.com/ethereum/go-ethereum/core/genesis.go:327.2,328.28 2 1 -github.com/ethereum/go-ethereum/core/genesis.go:241.45,243.3 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:246.31,247.21 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:253.3,254.17 2 1 -github.com/ethereum/go-ethereum/core/genesis.go:257.3,257.43 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:247.21,250.4 2 1 -github.com/ethereum/go-ethereum/core/genesis.go:250.9,252.4 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:254.17,256.4 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:262.93,263.21 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:267.3,268.21 2 0 -github.com/ethereum/go-ethereum/core/genesis.go:271.3,272.17 2 0 -github.com/ethereum/go-ethereum/core/genesis.go:275.3,275.43 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:263.21,265.4 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:268.21,270.4 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:272.17,274.4 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:278.20,280.21 2 1 -github.com/ethereum/go-ethereum/core/genesis.go:280.21,282.4 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:286.33,288.3 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:289.44,291.3 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:292.54,294.3 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:297.22,301.3 3 0 -github.com/ethereum/go-ethereum/core/genesis.go:307.59,309.34 2 1 -github.com/ethereum/go-ethereum/core/genesis.go:312.3,312.45 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:309.34,311.4 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:312.45,314.4 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:319.19,321.3 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:323.65,325.3 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:331.74,332.9 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:333.16,334.18 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:335.42,336.35 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:337.42,338.35 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:339.42,340.35 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:341.42,342.35 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:343.41,344.34 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:345.41,346.34 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:347.45,348.38 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:349.39,350.42 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:351.10,352.41 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:358.59,359.15 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:362.2,363.16 2 1 -github.com/ethereum/go-ethereum/core/genesis.go:366.2,380.21 2 1 -github.com/ethereum/go-ethereum/core/genesis.go:383.2,383.57 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:386.2,386.55 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:393.2,393.68 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:359.15,361.3 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:363.16,364.13 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:380.21,382.3 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:383.57,385.3 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:386.55,387.23 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:387.23,389.4 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:389.9,391.4 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:398.67,400.32 2 1 -github.com/ethereum/go-ethereum/core/genesis.go:403.2,404.19 2 1 -github.com/ethereum/go-ethereum/core/genesis.go:407.2,407.54 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:410.2,410.53 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:413.2,413.56 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:416.2,424.19 9 1 -github.com/ethereum/go-ethereum/core/genesis.go:400.32,402.3 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:404.19,406.3 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:407.54,409.3 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:410.53,412.3 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:413.56,415.3 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:429.62,431.16 2 1 -github.com/ethereum/go-ethereum/core/genesis.go:434.2,434.14 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:431.16,432.13 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:438.100,444.2 2 0 -github.com/ethereum/go-ethereum/core/genesis.go:447.37,456.2 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:459.44,468.2 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:471.44,480.2 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:483.43,492.2 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:495.43,506.2 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:509.47,520.2 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:523.44,533.2 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:535.41,538.58 3 0 -github.com/ethereum/go-ethereum/core/genesis.go:541.2,541.10 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:538.58,539.13 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:545.92,573.2 3 0 -github.com/ethereum/go-ethereum/core/genesis.go:575.47,577.77 2 1 -github.com/ethereum/go-ethereum/core/genesis.go:580.2,581.28 2 1 -github.com/ethereum/go-ethereum/core/genesis.go:584.2,584.11 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:577.77,578.13 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:581.28,583.3 1 1 -github.com/ethereum/go-ethereum/core/genesis.go:587.49,589.16 2 0 -github.com/ethereum/go-ethereum/core/genesis.go:592.2,596.16 5 0 -github.com/ethereum/go-ethereum/core/genesis.go:599.2,599.11 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:589.16,590.87 1 0 -github.com/ethereum/go-ethereum/core/genesis.go:596.16,597.88 1 0 -github.com/ethereum/go-ethereum/core/forkchoice.go:59.99,62.16 2 1 -github.com/ethereum/go-ethereum/core/forkchoice.go:65.2,69.3 1 1 -github.com/ethereum/go-ethereum/core/forkchoice.go:62.16,64.3 1 0 -github.com/ethereum/go-ethereum/core/forkchoice.go:77.93,82.39 2 1 -github.com/ethereum/go-ethereum/core/forkchoice.go:88.2,88.91 1 1 -github.com/ethereum/go-ethereum/core/forkchoice.go:94.2,95.42 2 1 -github.com/ethereum/go-ethereum/core/forkchoice.go:107.2,107.19 1 1 -github.com/ethereum/go-ethereum/core/forkchoice.go:82.39,84.3 1 0 -github.com/ethereum/go-ethereum/core/forkchoice.go:88.91,90.3 1 1 -github.com/ethereum/go-ethereum/core/forkchoice.go:95.42,97.26 2 1 -github.com/ethereum/go-ethereum/core/forkchoice.go:97.26,99.4 1 0 -github.com/ethereum/go-ethereum/core/forkchoice.go:99.9,99.34 1 1 -github.com/ethereum/go-ethereum/core/forkchoice.go:99.34,101.25 2 1 -github.com/ethereum/go-ethereum/core/forkchoice.go:104.4,104.74 1 1 -github.com/ethereum/go-ethereum/core/forkchoice.go:101.25,103.5 1 0 -github.com/ethereum/go-ethereum/core/state_prefetcher.go:39.111,45.2 1 1 -github.com/ethereum/go-ethereum/core/state_prefetcher.go:50.114,60.42 3 1 -github.com/ethereum/go-ethereum/core/state_prefetcher.go:80.2,80.15 1 1 -github.com/ethereum/go-ethereum/core/state_prefetcher.go:60.42,62.60 1 1 -github.com/ethereum/go-ethereum/core/state_prefetcher.go:66.3,67.17 2 1 -github.com/ethereum/go-ethereum/core/state_prefetcher.go:70.3,71.91 2 1 -github.com/ethereum/go-ethereum/core/state_prefetcher.go:75.3,75.17 1 1 -github.com/ethereum/go-ethereum/core/state_prefetcher.go:62.60,64.4 1 1 -github.com/ethereum/go-ethereum/core/state_prefetcher.go:67.17,69.4 1 0 -github.com/ethereum/go-ethereum/core/state_prefetcher.go:71.91,73.4 1 1 -github.com/ethereum/go-ethereum/core/state_prefetcher.go:75.17,77.4 1 1 -github.com/ethereum/go-ethereum/core/state_prefetcher.go:80.15,82.3 1 1 -github.com/ethereum/go-ethereum/core/state_prefetcher.go:88.156,94.2 3 1 -github.com/ethereum/go-ethereum/core/state_transition.go:92.47,94.2 1 0 -github.com/ethereum/go-ethereum/core/state_transition.go:97.46,97.74 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:101.48,102.23 1 0 -github.com/ethereum/go-ethereum/core/state_transition.go:105.2,105.44 1 0 -github.com/ethereum/go-ethereum/core/state_transition.go:102.23,104.3 1 0 -github.com/ethereum/go-ethereum/core/state_transition.go:110.48,111.43 1 0 -github.com/ethereum/go-ethereum/core/state_transition.go:114.2,114.44 1 0 -github.com/ethereum/go-ethereum/core/state_transition.go:111.43,113.3 1 0 -github.com/ethereum/go-ethereum/core/state_transition.go:118.131,121.39 2 1 -github.com/ethereum/go-ethereum/core/state_transition.go:127.2,127.19 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:151.2,151.23 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:155.2,155.17 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:121.39,123.3 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:123.8,125.3 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:127.19,130.28 2 1 -github.com/ethereum/go-ethereum/core/state_transition.go:136.3,137.16 2 1 -github.com/ethereum/go-ethereum/core/state_transition.go:140.3,140.43 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:143.3,146.52 3 1 -github.com/ethereum/go-ethereum/core/state_transition.go:149.3,149.34 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:130.28,131.16 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:131.16,133.5 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:137.16,139.4 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:140.43,142.4 1 0 -github.com/ethereum/go-ethereum/core/state_transition.go:146.52,148.4 1 0 -github.com/ethereum/go-ethereum/core/state_transition.go:151.23,154.3 2 1 -github.com/ethereum/go-ethereum/core/state_transition.go:159.81,171.2 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:180.84,182.2 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:185.48,186.65 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:189.2,189.21 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:186.65,188.3 1 0 -github.com/ethereum/go-ethereum/core/state_transition.go:192.43,196.25 4 1 -github.com/ethereum/go-ethereum/core/state_transition.go:201.2,201.88 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:204.2,204.51 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:207.2,211.12 4 1 -github.com/ethereum/go-ethereum/core/state_transition.go:196.25,200.3 3 1 -github.com/ethereum/go-ethereum/core/state_transition.go:201.88,203.3 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:204.51,206.3 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:214.45,216.22 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:236.2,236.63 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:259.2,259.20 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:216.22,219.53 2 1 -github.com/ethereum/go-ethereum/core/state_transition.go:230.3,230.112 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:219.53,222.4 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:222.9,222.32 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:222.32,225.4 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:225.9,225.33 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:225.33,228.4 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:230.112,233.4 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:236.63,238.89 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:238.89,239.43 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:243.4,243.43 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:247.4,247.42 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:253.4,253.52 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:239.43,242.5 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:243.43,246.5 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:247.42,250.5 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:253.52,256.5 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:275.69,290.38 3 1 -github.com/ethereum/go-ethereum/core/state_transition.go:293.2,302.16 8 1 -github.com/ethereum/go-ethereum/core/state_transition.go:305.2,305.18 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:308.2,311.94 2 1 -github.com/ethereum/go-ethereum/core/state_transition.go:316.2,316.115 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:319.2,323.22 2 1 -github.com/ethereum/go-ethereum/core/state_transition.go:331.2,331.13 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:338.2,339.12 2 1 -github.com/ethereum/go-ethereum/core/state_transition.go:342.2,343.12 2 1 -github.com/ethereum/go-ethereum/core/state_transition.go:348.2,371.8 5 1 -github.com/ethereum/go-ethereum/core/state_transition.go:290.38,292.3 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:302.16,304.3 1 0 -github.com/ethereum/go-ethereum/core/state_transition.go:305.18,307.3 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:311.94,313.3 1 0 -github.com/ethereum/go-ethereum/core/state_transition.go:316.115,318.3 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:323.22,325.3 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:325.8,329.3 2 1 -github.com/ethereum/go-ethereum/core/state_transition.go:331.13,334.3 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:334.8,337.3 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:339.12,341.3 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:343.12,347.3 3 1 -github.com/ethereum/go-ethereum/core/state_transition.go:374.61,377.35 2 1 -github.com/ethereum/go-ethereum/core/state_transition.go:380.2,388.22 4 1 -github.com/ethereum/go-ethereum/core/state_transition.go:377.35,379.3 1 1 -github.com/ethereum/go-ethereum/core/state_transition.go:392.45,394.2 1 1 -github.com/ethereum/go-ethereum/core/tx_cacher.go:49.53,54.31 2 1 -github.com/ethereum/go-ethereum/core/tx_cacher.go:57.2,57.15 1 1 -github.com/ethereum/go-ethereum/core/tx_cacher.go:54.31,56.3 1 1 -github.com/ethereum/go-ethereum/core/tx_cacher.go:62.39,63.33 1 1 -github.com/ethereum/go-ethereum/core/tx_cacher.go:63.33,64.48 1 1 -github.com/ethereum/go-ethereum/core/tx_cacher.go:64.48,66.4 1 1 -github.com/ethereum/go-ethereum/core/tx_cacher.go:73.86,75.19 1 1 -github.com/ethereum/go-ethereum/core/tx_cacher.go:79.2,80.24 2 1 -github.com/ethereum/go-ethereum/core/tx_cacher.go:83.2,83.29 1 1 -github.com/ethereum/go-ethereum/core/tx_cacher.go:75.19,77.3 1 1 -github.com/ethereum/go-ethereum/core/tx_cacher.go:80.24,82.3 1 1 -github.com/ethereum/go-ethereum/core/tx_cacher.go:83.29,89.3 1 1 -github.com/ethereum/go-ethereum/core/tx_cacher.go:95.93,97.31 2 1 -github.com/ethereum/go-ethereum/core/tx_cacher.go:100.2,101.31 2 1 -github.com/ethereum/go-ethereum/core/tx_cacher.go:104.2,104.29 1 1 -github.com/ethereum/go-ethereum/core/tx_cacher.go:97.31,99.3 1 1 -github.com/ethereum/go-ethereum/core/tx_cacher.go:101.31,103.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:223.235,224.24 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:227.2,266.16 15 1 -github.com/ethereum/go-ethereum/core/blockchain.go:269.2,270.28 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:274.2,281.16 5 1 -github.com/ethereum/go-ethereum/core/blockchain.go:290.2,290.43 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:295.2,296.75 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:324.2,324.63 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:360.2,360.30 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:376.2,376.38 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:392.2,396.26 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:404.2,404.43 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:416.2,416.16 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:224.24,226.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:266.16,268.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:270.28,272.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:281.16,286.17 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:286.17,288.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:290.43,292.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:296.75,301.39 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:304.3,304.34 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:301.39,303.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:304.34,308.18 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:312.4,312.21 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:308.18,310.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:312.21,314.5 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:315.9,317.89 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:317.89,319.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:324.63,333.105 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:340.3,341.59 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:347.3,347.17 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:333.105,336.4 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:341.59,343.47 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:343.47,345.5 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:347.17,349.42 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:349.42,351.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:360.30,361.56 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:361.56,365.71 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:365.71,367.66 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:370.5,370.72 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:367.66,369.6 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:376.38,384.98 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:388.3,388.148 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:384.98,387.4 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:396.26,401.3 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:404.43,405.54 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:409.3,411.13 3 0 -github.com/ethereum/go-ethereum/core/blockchain.go:405.54,408.4 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:411.13,414.4 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:423.36,425.138 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:430.2,430.13 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:425.138,426.22 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:426.22,428.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:435.45,438.29 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:444.2,445.25 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:451.2,456.70 4 1 -github.com/ethereum/go-ethereum/core/blockchain.go:461.2,467.73 4 1 -github.com/ethereum/go-ethereum/core/blockchain.go:474.2,483.61 8 1 -github.com/ethereum/go-ethereum/core/blockchain.go:486.2,486.12 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:438.29,442.3 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:445.25,449.3 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:456.70,457.56 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:457.56,459.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:467.73,468.53 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:468.53,471.4 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:483.61,485.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:492.50,495.2 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:505.101,506.27 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:509.2,519.81 5 1 -github.com/ethereum/go-ethereum/core/blockchain.go:612.2,612.71 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:636.2,636.12 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:647.2,655.39 8 1 -github.com/ethereum/go-ethereum/core/blockchain.go:506.27,508.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:519.81,523.115 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:585.3,585.130 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:600.3,606.22 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:609.3,609.20 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:523.115,525.27 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:575.4,582.58 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:525.27,528.5 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:528.10,534.9 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:534.9,536.79 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:539.6,539.87 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:554.6,554.53 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:571.6,572.87 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:536.79,538.7 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:539.87,541.60 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:541.60,543.25 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:547.8,548.38 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:543.25,545.17 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:549.13,552.8 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:554.53,555.40 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:568.7,569.12 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:555.40,561.48 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:561.48,562.81 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:565.9,565.55 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:562.81,564.10 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:585.130,588.31 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:591.4,598.66 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:588.31,590.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:606.22,608.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:612.71,615.22 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:615.22,618.50 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:622.4,622.38 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:618.50,620.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:623.9,631.4 4 1 -github.com/ethereum/go-ethereum/core/blockchain.go:636.12,637.74 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:637.74,639.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:640.8,645.3 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:660.66,663.18 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:666.2,666.80 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:671.2,671.27 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:674.2,680.21 4 0 -github.com/ethereum/go-ethereum/core/blockchain.go:683.2,684.12 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:663.18,665.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:666.80,668.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:671.27,673.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:680.21,682.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:688.37,690.2 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:694.73,696.38 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:699.2,699.27 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:702.2,708.38 5 0 -github.com/ethereum/go-ethereum/core/blockchain.go:711.2,721.12 9 0 -github.com/ethereum/go-ethereum/core/blockchain.go:696.38,698.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:699.27,701.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:708.38,710.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:725.49,727.2 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:730.77,731.27 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:734.2,736.18 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:739.2,742.36 3 0 -github.com/ethereum/go-ethereum/core/blockchain.go:755.2,755.12 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:731.27,733.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:736.18,738.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:742.36,744.19 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:747.3,747.44 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:750.3,750.47 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:744.19,746.4 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:747.44,749.4 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:750.47,753.4 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:764.58,774.38 7 1 -github.com/ethereum/go-ethereum/core/blockchain.go:778.2,784.49 5 1 -github.com/ethereum/go-ethereum/core/blockchain.go:774.38,776.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:789.30,790.52 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:795.2,812.21 7 1 -github.com/ethereum/go-ethereum/core/blockchain.go:824.2,824.39 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:852.2,852.43 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:856.2,856.32 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:790.52,792.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:812.21,814.77 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:814.77,816.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:824.39,827.60 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:837.3,837.34 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:843.3,843.26 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:846.3,846.42 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:827.60,828.64 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:828.64,832.67 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:832.67,834.6 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:837.34,839.61 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:839.61,841.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:843.26,845.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:846.42,848.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:852.43,855.3 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:862.36,864.2 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:867.44,869.2 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:871.42,873.46 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:878.2,878.21 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:873.46,874.56 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:874.56,876.4 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:878.21,879.42 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:883.3,883.25 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:879.42,881.4 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:883.25,885.4 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:900.132,911.39 4 1 -github.com/ethereum/go-ethereum/core/blockchain.go:927.2,935.45 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:962.2,962.92 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1074.2,1074.89 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1129.2,1129.28 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1138.2,1138.72 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1150.2,1150.25 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1159.2,1165.23 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1168.2,1170.15 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:911.39,912.13 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:920.3,920.48 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:912.13,913.122 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:913.122,918.5 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:920.48,922.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:922.9,924.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:935.45,936.28 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:939.3,942.56 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:955.3,955.15 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:936.28,938.4 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:942.56,944.18 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:950.4,953.15 4 1 -github.com/ethereum/go-ethereum/core/blockchain.go:944.18,947.5 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:947.10,947.21 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:947.21,949.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:962.92,967.29 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:983.3,983.51 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:988.3,989.36 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:994.3,997.17 4 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1013.3,1014.36 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1036.3,1036.38 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1040.3,1041.49 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1051.3,1053.36 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1062.3,1062.93 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1067.3,1067.39 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1070.3,1070.16 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:967.29,968.50 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:968.50,973.19 5 1 -github.com/ethereum/go-ethereum/core/blockchain.go:977.5,977.42 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:973.19,976.6 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:983.51,985.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:989.36,991.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:997.17,1000.4 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1014.36,1015.119 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1020.4,1022.74 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1015.119,1017.5 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1017.10,1017.50 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1017.50,1019.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1022.74,1024.40 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1031.5,1031.18 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1024.40,1026.62 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1029.6,1029.19 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1026.62,1028.7 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1036.38,1038.4 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1041.49,1044.68 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1047.4,1047.34 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1044.68,1046.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1053.36,1055.30 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1058.4,1059.74 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1055.30,1056.13 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1062.93,1063.48 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1063.48,1065.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1067.39,1069.4 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1074.89,1077.36 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1118.3,1118.28 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1124.3,1125.16 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1077.36,1079.26 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1083.4,1083.54 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1086.4,1086.26 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1099.4,1106.49 4 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1113.4,1113.21 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1079.26,1081.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1083.54,1085.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1086.26,1088.53 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1088.53,1090.14 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1091.11,1096.6 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1106.49,1107.41 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1110.5,1111.18 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1107.41,1109.6 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1118.28,1120.40 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1120.40,1122.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1129.28,1130.73 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1130.73,1131.38 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1134.4,1134.17 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1131.38,1133.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1138.72,1142.56 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1142.56,1143.65 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1143.65,1145.5 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1145.10,1147.5 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1150.25,1151.64 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1151.64,1152.38 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1155.4,1155.17 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1152.38,1154.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1165.23,1167.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1178.91,1179.24 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1183.2,1186.38 4 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1189.2,1189.12 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1179.24,1181.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1186.38,1188.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1194.65,1196.42 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1201.2,1202.12 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1196.42,1197.50 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1197.50,1199.4 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1207.153,1210.16 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1214.2,1235.24 8 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1258.2,1259.43 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1263.2,1264.16 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1267.2,1270.38 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1319.2,1319.27 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1210.16,1212.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1235.24,1236.51 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1240.3,1240.33 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1236.51,1238.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1240.33,1255.4 4 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1259.43,1261.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1264.16,1266.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1270.38,1272.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1272.8,1277.60 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1277.60,1283.43 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1287.4,1290.48 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1309.4,1309.27 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1283.43,1285.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1290.48,1294.22 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1294.22,1296.6 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1296.11,1299.89 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1303.6,1305.19 3 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1299.89,1301.7 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1309.27,1311.33 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1315.5,1315.43 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1311.33,1313.11 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1323.184,1324.27 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1327.2,1329.77 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1324.27,1326.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1335.184,1337.91 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1340.2,1342.16 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1345.2,1345.11 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1357.2,1357.27 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1360.2,1362.27 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1394.2,1394.20 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1337.91,1339.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1342.16,1344.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1345.11,1347.48 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1352.3,1352.23 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1347.48,1348.56 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1348.56,1350.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1353.8,1355.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1357.27,1359.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1362.27,1364.20 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1369.3,1369.29 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1378.3,1378.20 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1364.20,1366.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1369.29,1371.4 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1378.20,1381.42 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1381.42,1383.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1386.8,1393.3 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1403.64,1405.24 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1408.2,1408.46 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1412.2,1413.12 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1405.24,1407.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1408.46,1411.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1420.68,1422.21 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1425.2,1429.34 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1444.2,1444.27 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1447.2,1448.42 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1422.21,1424.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1429.34,1431.83 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1431.83,1441.4 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1444.27,1446.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1459.95,1461.24 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1466.2,1473.15 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1479.2,1482.30 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1486.2,1494.27 5 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1543.2,1543.9 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1580.2,1581.15 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1592.2,1594.22 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1607.2,1607.92 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1801.2,1805.62 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1818.2,1820.22 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1461.24,1463.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1473.15,1474.71 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1474.71,1476.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1482.30,1485.3 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1494.27,1504.45 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1532.3,1532.45 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1504.45,1506.18 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1509.4,1509.13 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1519.4,1522.26 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1506.18,1508.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1509.13,1515.106 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1515.106,1516.11 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1532.45,1534.52 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1537.4,1539.26 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1534.52,1536.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1545.51,1546.14 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1556.151,1557.87 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1564.3,1568.23 3 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1573.52,1577.23 4 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1546.14,1550.4 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1550.9,1554.4 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1557.87,1559.51 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1562.4,1562.26 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1559.51,1561.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1581.15,1586.25 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1586.25,1588.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1594.22,1596.28 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1600.3,1604.30 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1596.28,1599.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1607.92,1609.25 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1614.3,1614.30 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1624.3,1624.28 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1659.3,1661.20 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1664.3,1665.17 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1670.3,1676.42 4 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1692.3,1694.17 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1700.3,1700.41 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1706.3,1720.87 12 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1725.3,1735.15 7 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1741.3,1742.17 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1746.3,1760.15 10 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1765.3,1765.28 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1772.3,1772.17 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1609.25,1611.9 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1614.30,1617.4 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1624.28,1626.36 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1629.4,1641.38 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1647.4,1647.52 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1650.4,1655.12 3 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1626.36,1628.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1641.38,1643.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1643.10,1646.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1647.52,1649.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1661.20,1663.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1665.17,1667.4 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1676.42,1677.65 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1677.65,1680.98 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1680.98,1684.43 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1684.43,1686.7 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1694.17,1698.4 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1700.41,1702.4 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1720.87,1724.4 3 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1735.15,1738.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1738.9,1740.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1742.17,1744.4 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1760.15,1762.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1765.28,1767.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1767.9,1769.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1773.20,1782.25 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1784.19,1788.26 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1790.11,1796.26 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1805.62,1806.50 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1809.3,1811.94 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1806.50,1808.4 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1811.94,1812.51 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1815.4,1815.18 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1812.51,1814.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1830.92,1841.92 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1893.2,1894.16 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1897.2,1897.12 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1903.2,1908.49 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1914.2,1914.19 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1918.2,1922.40 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1946.2,1946.21 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1950.2,1950.15 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1841.92,1843.65 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1870.3,1870.22 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1873.3,1875.52 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1885.3,1885.20 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1843.65,1845.60 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1854.4,1854.60 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1845.60,1852.13 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1854.60,1868.5 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1870.22,1872.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1875.52,1877.69 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1880.4,1883.26 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1877.69,1879.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1894.16,1896.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1897.12,1901.3 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1908.49,1913.3 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1914.19,1916.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1922.40,1932.51 4 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1932.51,1934.65 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1937.4,1940.26 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1934.65,1936.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1940.26,1943.5 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1946.21,1949.3 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:1956.66,1963.51 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1974.2,1974.19 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1978.2,1978.40 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1994.2,1994.12 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1963.51,1969.25 4 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1969.25,1972.4 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1974.19,1976.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1978.40,1980.25 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1984.3,1985.13 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1990.3,1990.74 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1980.25,1983.4 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1985.13,1987.4 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1987.9,1989.4 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:1990.74,1992.4 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2000.80,2002.19 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2005.2,2009.23 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2013.2,2014.35 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2023.2,2023.13 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2002.19,2004.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2009.23,2011.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2014.35,2015.36 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2015.36,2017.15 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2020.4,2020.27 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2017.15,2019.5 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2027.64,2029.13 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2038.2,2038.12 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2029.13,2030.39 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2030.39,2032.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2033.8,2034.34 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2034.34,2036.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2046.68,2059.49 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2077.2,2077.21 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2080.2,2080.21 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2085.2,2085.6 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2113.2,2113.44 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2144.2,2144.42 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2158.2,2159.62 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2163.2,2164.29 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2171.2,2171.45 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2178.2,2178.26 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2181.2,2181.26 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2184.2,2184.23 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2189.2,2189.12 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2059.49,2061.144 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2061.144,2067.21 4 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2067.21,2069.5 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2071.8,2073.144 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2073.144,2075.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2077.21,2079.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2080.21,2082.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2085.6,2087.41 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2092.3,2097.20 4 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2100.3,2104.22 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2107.3,2108.22 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2087.41,2089.9 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2097.20,2099.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2104.22,2106.4 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2108.22,2110.4 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2113.44,2123.25 4 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2127.3,2131.26 4 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2123.25,2126.4 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2132.8,2132.30 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2132.30,2137.3 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2137.8,2141.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2144.42,2150.20 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2154.3,2154.61 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2150.20,2152.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2159.62,2161.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2164.29,2166.30 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2169.3,2169.45 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2166.30,2167.9 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2171.45,2173.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2178.26,2180.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2181.26,2183.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2184.23,2185.43 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2185.43,2187.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2197.75,2198.27 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2201.2,2204.12 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2198.27,2200.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2211.61,2212.27 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2215.2,2219.51 3 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2224.2,2229.19 4 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2232.2,2240.88 3 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2243.2,2244.12 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2212.27,2214.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2219.51,2220.59 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2220.59,2222.4 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2229.19,2231.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2240.88,2242.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2247.44,2251.6 4 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2251.6,2252.10 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2253.24,2254.25 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2255.18,2256.10 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2263.69,2267.36 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2272.2,2272.21 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2275.2,2280.43 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2287.2,2287.44 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2292.2,2292.35 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2296.2,2296.42 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2299.2,2299.14 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2267.36,2269.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2272.21,2274.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2280.43,2282.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2287.44,2289.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2289.8,2289.74 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2289.74,2291.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2292.35,2294.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2296.42,2298.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2312.56,2319.18 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2328.2,2328.69 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2368.2,2373.16 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2376.2,2378.6 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2319.18,2321.59 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2324.3,2324.58 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2321.59,2323.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2328.69,2329.16 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2333.3,2333.18 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2344.3,2344.55 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2358.3,2358.38 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2329.16,2329.38 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2333.18,2334.56 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2341.4,2341.10 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2334.56,2337.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2337.10,2340.5 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2344.55,2345.17 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2355.4,2355.10 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2345.17,2350.21 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2353.5,2353.52 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2350.21,2352.6 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2358.38,2361.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2361.9,2364.4 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2373.16,2375.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2378.6,2379.10 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2380.25,2381.19 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2385.15,2386.14 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2387.18,2388.19 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2392.4,2392.10 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2381.19,2384.5 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2388.19,2391.5 2 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2398.91,2402.35 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2407.2,2417.70 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2402.35,2406.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2428.92,2429.21 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2432.2,2433.71 2 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2437.2,2437.27 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2440.2,2442.15 3 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2429.21,2431.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain.go:2433.71,2435.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain.go:2437.27,2439.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:36.53,38.2 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:42.51,44.2 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:48.55,50.2 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:54.71,56.2 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:60.80,62.2 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:66.71,68.2 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:72.70,74.2 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:78.75,80.2 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:84.61,86.46 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:90.2,91.19 2 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:94.2,95.17 2 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:99.2,100.13 2 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:86.46,89.3 2 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:91.19,93.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:95.17,97.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:105.65,107.49 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:110.2,111.19 2 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:114.2,115.20 2 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:119.2,120.13 2 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:107.49,109.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:111.19,113.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:115.20,117.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:124.70,125.34 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:128.2,128.43 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:125.34,127.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:132.74,133.32 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:136.2,136.37 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:139.2,139.47 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:133.32,135.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:136.37,138.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:144.78,146.46 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:149.2,150.18 2 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:154.2,155.14 2 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:146.46,148.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:150.18,152.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:159.69,161.19 2 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:164.2,164.35 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:161.19,163.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:169.68,171.29 2 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:174.2,174.34 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:171.29,173.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:179.90,181.19 2 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:184.2,184.25 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:193.2,193.8 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:181.19,183.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:184.25,186.19 2 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:189.3,191.12 3 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:186.19,187.9 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:197.74,198.52 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:201.2,202.19 2 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:205.2,206.21 2 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:209.2,210.17 2 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:198.52,200.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:202.19,204.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:206.21,208.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:215.88,217.46 2 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:221.2,221.15 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:217.46,220.3 2 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:225.67,227.2 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:234.125,236.2 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:240.89,242.56 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:245.2,246.15 2 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:249.2,251.15 3 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:242.56,244.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:246.15,248.3 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:256.71,258.2 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:261.55,264.2 2 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:268.78,271.18 2 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:274.2,274.34 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:271.18,273.3 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:279.66,281.2 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:285.70,287.2 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:294.80,299.2 2 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:302.55,304.2 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:307.73,309.2 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:312.52,312.77 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:315.49,315.69 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:318.50,320.2 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:323.45,325.2 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:328.45,330.2 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:333.51,335.2 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:338.41,340.2 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:343.46,345.2 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:348.48,350.2 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:354.54,356.2 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:360.46,362.2 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:365.96,367.2 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:370.84,372.2 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:375.92,377.2 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:380.94,382.2 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:385.92,387.2 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:390.85,392.2 1 1 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:396.88,398.2 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:405.70,407.2 1 0 -github.com/ethereum/go-ethereum/core/blockchain_reader.go:410.92,412.2 1 0 -github.com/ethereum/go-ethereum/core/chain_makers.go:53.53,54.22 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:60.2,61.52 2 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:54.22,55.21 1 0 -github.com/ethereum/go-ethereum/core/chain_makers.go:58.3,58.41 1 0 -github.com/ethereum/go-ethereum/core/chain_makers.go:55.21,56.60 1 0 -github.com/ethereum/go-ethereum/core/chain_makers.go:65.42,67.2 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:70.53,72.2 1 0 -github.com/ethereum/go-ethereum/core/chain_makers.go:77.49,79.2 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:89.49,91.2 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:101.74,102.22 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:105.2,107.16 3 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:110.2,111.42 2 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:102.22,104.3 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:107.16,108.13 1 0 -github.com/ethereum/go-ethereum/core/chain_makers.go:115.61,117.2 1 0 -github.com/ethereum/go-ethereum/core/chain_makers.go:124.58,126.2 1 0 -github.com/ethereum/go-ethereum/core/chain_makers.go:129.38,131.2 1 0 -github.com/ethereum/go-ethereum/core/chain_makers.go:134.39,136.2 1 0 -github.com/ethereum/go-ethereum/core/chain_makers.go:143.64,145.2 1 0 -github.com/ethereum/go-ethereum/core/chain_makers.go:149.56,150.28 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:153.2,153.33 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:150.28,151.34 1 0 -github.com/ethereum/go-ethereum/core/chain_makers.go:157.46,162.32 3 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:168.2,173.33 4 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:180.2,180.32 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:162.32,163.40 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:163.40,165.9 2 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:173.33,175.40 2 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:175.40,178.4 2 0 -github.com/ethereum/go-ethereum/core/chain_makers.go:186.54,187.18 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:190.2,190.17 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:193.2,193.23 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:187.18,188.75 1 0 -github.com/ethereum/go-ethereum/core/chain_makers.go:190.17,192.3 1 0 -github.com/ethereum/go-ethereum/core/chain_makers.go:199.46,201.45 2 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:204.2,205.94 2 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:201.45,202.35 1 0 -github.com/ethereum/go-ethereum/core/chain_makers.go:220.181,221.19 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:224.2,226.102 3 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:274.2,274.25 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:284.2,284.25 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:221.19,223.3 1 0 -github.com/ethereum/go-ethereum/core/chain_makers.go:226.102,233.33 3 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:243.3,243.55 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:251.3,251.107 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:255.3,255.17 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:258.3,258.22 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:272.3,272.18 1 0 -github.com/ethereum/go-ethereum/core/chain_makers.go:233.33,234.45 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:234.45,237.5 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:237.10,240.5 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:243.55,245.76 2 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:245.76,246.30 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:246.30,248.6 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:251.107,253.4 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:255.17,257.4 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:258.22,264.18 3 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:267.4,267.79 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:270.4,270.28 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:264.18,265.53 1 0 -github.com/ethereum/go-ethereum/core/chain_makers.go:267.79,268.52 1 0 -github.com/ethereum/go-ethereum/core/chain_makers.go:274.25,276.17 2 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:279.3,282.17 4 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:276.17,277.14 1 0 -github.com/ethereum/go-ethereum/core/chain_makers.go:287.128,289.24 2 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:294.2,308.44 2 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:315.2,315.15 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:289.24,291.3 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:291.8,293.3 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:308.44,310.48 2 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:310.48,313.4 2 0 -github.com/ethereum/go-ethereum/core/chain_makers.go:319.121,322.31 3 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:325.2,325.16 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:322.31,324.3 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:329.118,330.101 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:333.2,333.15 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:330.101,332.3 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:341.57,343.2 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:345.85,345.99 1 0 -github.com/ethereum/go-ethereum/core/chain_makers.go:346.85,346.99 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:347.85,347.99 1 0 -github.com/ethereum/go-ethereum/core/chain_makers.go:348.85,348.99 1 1 -github.com/ethereum/go-ethereum/core/chain_makers.go:349.85,349.99 1 0 -github.com/ethereum/go-ethereum/core/chain_makers.go:350.85,350.99 1 1 -github.com/ethereum/go-ethereum/core/gen_genesis.go:19.48,44.20 11 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:50.2,54.27 5 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:44.20,46.29 2 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:46.29,48.4 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:58.53,75.52 3 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:78.2,78.23 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:81.2,81.22 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:84.2,84.26 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:87.2,87.26 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:90.2,90.25 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:93.2,94.27 2 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:97.2,98.24 2 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:101.2,101.25 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:104.2,104.22 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:107.2,108.30 2 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:111.2,111.23 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:114.2,114.24 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:117.2,117.27 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:120.2,120.24 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:123.2,123.12 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:75.52,77.3 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:78.23,80.3 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:81.22,83.3 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:84.26,86.3 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:87.26,89.3 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:90.25,92.3 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:94.27,96.3 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:98.24,100.3 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:101.25,103.3 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:104.22,106.3 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:108.30,110.3 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:111.23,113.3 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:114.24,116.3 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:117.27,119.3 1 0 -github.com/ethereum/go-ethereum/core/gen_genesis.go:120.24,122.3 1 0 -github.com/ethereum/go-ethereum/core/block_validator.go:40.117,47.2 2 1 -github.com/ethereum/go-ethereum/core/block_validator.go:52.65,54.60 1 1 -github.com/ethereum/go-ethereum/core/block_validator.go:58.2,59.59 2 1 -github.com/ethereum/go-ethereum/core/block_validator.go:62.2,62.75 1 1 -github.com/ethereum/go-ethereum/core/block_validator.go:65.2,65.98 1 1 -github.com/ethereum/go-ethereum/core/block_validator.go:68.2,68.69 1 1 -github.com/ethereum/go-ethereum/core/block_validator.go:74.2,74.12 1 1 -github.com/ethereum/go-ethereum/core/block_validator.go:54.60,56.3 1 1 -github.com/ethereum/go-ethereum/core/block_validator.go:59.59,61.3 1 0 -github.com/ethereum/go-ethereum/core/block_validator.go:62.75,64.3 1 0 -github.com/ethereum/go-ethereum/core/block_validator.go:65.98,67.3 1 0 -github.com/ethereum/go-ethereum/core/block_validator.go:68.69,69.62 1 1 -github.com/ethereum/go-ethereum/core/block_validator.go:72.3,72.37 1 1 -github.com/ethereum/go-ethereum/core/block_validator.go:69.62,71.4 1 0 -github.com/ethereum/go-ethereum/core/block_validator.go:81.131,83.32 2 1 -github.com/ethereum/go-ethereum/core/block_validator.go:88.2,89.28 2 1 -github.com/ethereum/go-ethereum/core/block_validator.go:93.2,94.38 2 1 -github.com/ethereum/go-ethereum/core/block_validator.go:99.2,99.93 1 1 -github.com/ethereum/go-ethereum/core/block_validator.go:102.2,102.12 1 1 -github.com/ethereum/go-ethereum/core/block_validator.go:83.32,85.3 1 0 -github.com/ethereum/go-ethereum/core/block_validator.go:89.28,91.3 1 0 -github.com/ethereum/go-ethereum/core/block_validator.go:94.38,96.3 1 0 -github.com/ethereum/go-ethereum/core/block_validator.go:99.93,101.3 1 0 -github.com/ethereum/go-ethereum/core/block_validator.go:108.63,111.39 3 1 -github.com/ethereum/go-ethereum/core/block_validator.go:115.2,115.26 1 1 -github.com/ethereum/go-ethereum/core/block_validator.go:122.2,122.26 1 1 -github.com/ethereum/go-ethereum/core/block_validator.go:128.2,128.14 1 1 -github.com/ethereum/go-ethereum/core/block_validator.go:111.39,113.3 1 1 -github.com/ethereum/go-ethereum/core/block_validator.go:115.26,117.27 2 1 -github.com/ethereum/go-ethereum/core/block_validator.go:120.3,120.15 1 1 -github.com/ethereum/go-ethereum/core/block_validator.go:117.27,119.4 1 1 -github.com/ethereum/go-ethereum/core/block_validator.go:122.26,124.27 2 1 -github.com/ethereum/go-ethereum/core/block_validator.go:124.27,126.4 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:103.177,122.2 5 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:130.73,135.69 3 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:138.2,142.33 4 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:135.69,137.3 1 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:148.55,153.2 3 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:157.38,165.31 5 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:169.2,169.39 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:176.2,176.35 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:182.2,182.9 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:165.31,167.3 1 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:169.39,171.32 2 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:171.32,173.4 1 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:176.35,177.39 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:177.39,179.4 1 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:183.22,184.13 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:186.22,187.17 1 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:189.10,190.32 1 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:197.115,210.6 5 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:210.6,211.10 1 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:212.25,215.10 2 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:217.27,219.11 1 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:224.4,225.37 2 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:235.4,237.48 2 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:219.11,223.5 3 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:225.37,229.83 1 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:229.83,230.80 1 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:230.80,232.7 1 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:243.57,248.11 3 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:277.2,278.27 2 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:248.11,252.35 3 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:255.3,255.36 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:258.3,258.30 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:262.3,262.32 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:266.3,268.28 2 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:274.3,274.9 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:252.35,254.4 1 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:255.36,257.4 1 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:258.30,260.4 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:262.32,264.4 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:268.28,270.37 2 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:270.37,272.5 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:278.27,280.38 2 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:283.3,283.33 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:280.38,282.4 1 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:283.33,284.46 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:292.4,294.11 2 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:284.46,287.39 2 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:287.39,290.6 2 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:295.32,295.32 0 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:296.12,296.12 0 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:304.37,310.6 2 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:310.6,311.10 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:312.25,315.10 2 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:317.19,320.42 2 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:371.4,371.42 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:379.4,379.19 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:320.42,322.44 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:330.5,333.20 4 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:337.5,339.19 3 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:348.5,351.76 2 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:322.44,323.46 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:327.6,327.26 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:323.46,326.7 2 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:333.20,335.6 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:339.19,340.13 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:346.6,346.60 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:341.26,343.13 2 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:344.14,344.14 0 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:351.76,354.57 3 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:358.6,359.39 2 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:354.57,357.7 2 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:359.39,362.7 2 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:363.11,368.6 3 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:371.42,372.41 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:372.41,373.13 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:374.34,374.34 0 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:375.14,375.14 0 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:388.98,392.66 2 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:397.2,397.86 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:413.2,413.43 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:416.2,416.22 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:392.66,395.3 2 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:397.86,399.30 2 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:402.3,403.20 2 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:408.3,408.58 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:411.3,411.27 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:399.30,401.4 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:403.20,405.4 1 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:405.9,405.43 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:405.43,407.4 1 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:408.58,410.4 1 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:413.43,415.3 1 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:422.41,423.70 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:423.70,424.112 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:427.3,427.43 1 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:424.112,426.4 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:434.65,440.2 4 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:443.63,444.18 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:447.2,454.32 5 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:459.2,459.18 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:444.18,445.50 1 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:454.32,458.3 1 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:459.18,461.3 1 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:465.54,467.2 1 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:471.44,473.20 2 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:473.20,475.3 1 0 -github.com/ethereum/go-ethereum/core/chain_indexer.go:479.58,486.34 4 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:490.2,490.29 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:486.34,489.3 2 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:495.64,500.37 4 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:503.2,503.22 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:500.37,502.3 1 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:508.73,513.2 3 1 -github.com/ethereum/go-ethereum/core/chain_indexer.go:517.58,522.2 3 1 From 208133b6dac1b406359cb2b265442cb3b20fceca Mon Sep 17 00:00:00 2001 From: Evgeny Danienko <6655321@bk.ru> Date: Fri, 3 Jun 2022 14:15:56 +0300 Subject: [PATCH 39/41] fix --- eth/backend.go | 7 +++++++ tests/bor/bor_test.go | 10 +++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/eth/backend.go b/eth/backend.go index bd941a6b11..fcba1c573b 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -598,6 +598,13 @@ func (s *Ethereum) Start() error { // StartCheckpointWhitelistService starts the goroutine to fetch checkpoints and update the // checkpoint whitelist map. func (s *Ethereum) startCheckpointWhitelistService() { + // a shortcut helps with tests and early exit + select { + case <-s.closeCh: + return + default: + } + // first run the checkpoint whitelist err := s.handleWhitelistCheckpoint() if err != nil { diff --git a/tests/bor/bor_test.go b/tests/bor/bor_test.go index 7768b0fc9c..2d05baa490 100644 --- a/tests/bor/bor_test.go +++ b/tests/bor/bor_test.go @@ -37,10 +37,18 @@ func TestInsertingSpanSizeBlocks(t *testing.T) { engine := init.ethereum.Engine() _bor := engine.(*bor.Bor) + defer engine.Close() + h, heimdallSpan, ctrl := getMockedHeimdallClient(t) defer ctrl.Finish() - h.EXPECT().FetchLatestCheckpoint().Return(&bor.Checkpoint{}, nil).AnyTimes() + _, span := loadSpanFromFile(t) + + h.EXPECT().FetchLatestCheckpoint().Return(&bor.Checkpoint{ + Proposer: span.SelectedProducers[0].Address, + StartBlock: big.NewInt(0), + EndBlock: big.NewInt(int64(spanSize)), + }, nil).Times(1) _bor.SetHeimdallClient(h) From f8a56b81883ca3211b4daf8ee536843ab7e30ef5 Mon Sep 17 00:00:00 2001 From: Evgeny Danienko <6655321@bk.ru> Date: Fri, 3 Jun 2022 14:30:58 +0300 Subject: [PATCH 40/41] fix close --- tests/bor/bor_test.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/bor/bor_test.go b/tests/bor/bor_test.go index 2d05baa490..fdfa2d29c8 100644 --- a/tests/bor/bor_test.go +++ b/tests/bor/bor_test.go @@ -44,6 +44,7 @@ func TestInsertingSpanSizeBlocks(t *testing.T) { _, span := loadSpanFromFile(t) + h.EXPECT().Close().AnyTimes() h.EXPECT().FetchLatestCheckpoint().Return(&bor.Checkpoint{ Proposer: span.SelectedProducers[0].Address, StartBlock: big.NewInt(0), @@ -80,6 +81,8 @@ func TestFetchStateSyncEvents(t *testing.T) { engine := init.ethereum.Engine() _bor := engine.(*bor.Bor) + defer engine.Close() + // A. Insert blocks for 0th sprint db := init.ethereum.ChainDb() block := init.genesis.ToBlock(db) @@ -97,6 +100,7 @@ func TestFetchStateSyncEvents(t *testing.T) { defer ctrl.Finish() h := mocks.NewMockIHeimdallClient(ctrl) + h.EXPECT().Close().AnyTimes() // B.2 Mock State Sync events fromID := uint64(1) @@ -123,6 +127,8 @@ func TestFetchStateSyncEvents_2(t *testing.T) { engine := init.ethereum.Engine() _bor := engine.(*bor.Bor) + defer _bor.Close() + // Mock /bor/span/1 res, _ := loadSpanFromFile(t) @@ -130,6 +136,7 @@ func TestFetchStateSyncEvents_2(t *testing.T) { defer ctrl.Finish() h := mocks.NewMockIHeimdallClient(ctrl) + h.EXPECT().Close().AnyTimes() h.EXPECT().FetchWithRetry(spanPath, "").Return(res, nil).AnyTimes() // Mock State Sync events @@ -190,9 +197,12 @@ func TestOutOfTurnSigning(t *testing.T) { engine := init.ethereum.Engine() _bor := engine.(*bor.Bor) + defer _bor.Close() + h, _, ctrl := getMockedHeimdallClient(t) defer ctrl.Finish() + h.EXPECT().Close().AnyTimes() _bor.SetHeimdallClient(h) db := init.ethereum.ChainDb() @@ -243,9 +253,13 @@ func TestSignerNotFound(t *testing.T) { engine := init.ethereum.Engine() _bor := engine.(*bor.Bor) + defer _bor.Close() + h, _, ctrl := getMockedHeimdallClient(t) defer ctrl.Finish() + h.EXPECT().Close().AnyTimes() + _bor.SetHeimdallClient(h) db := init.ethereum.ChainDb() From b4872cacc4ce3f6052255ac2c6d02258541a2684 Mon Sep 17 00:00:00 2001 From: Evgeny Danienko <6655321@bk.ru> Date: Fri, 3 Jun 2022 14:31:41 +0300 Subject: [PATCH 41/41] fix --- tests/bor/bor_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/bor/bor_test.go b/tests/bor/bor_test.go index fdfa2d29c8..a179616290 100644 --- a/tests/bor/bor_test.go +++ b/tests/bor/bor_test.go @@ -49,7 +49,7 @@ func TestInsertingSpanSizeBlocks(t *testing.T) { Proposer: span.SelectedProducers[0].Address, StartBlock: big.NewInt(0), EndBlock: big.NewInt(int64(spanSize)), - }, nil).Times(1) + }, nil).AnyTimes() _bor.SetHeimdallClient(h)